From 1097d7c1d710162bf4256706e8def0664d081719 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sat, 4 Jun 2022 21:26:58 -0400 Subject: [PATCH 001/125] rain consolidate --- package.json | 3 +- src/typechain/AllStandardOpsStateBuilder.ts | 256 ++ src/typechain/AllStandardOpsTest.ts | 268 ++ src/typechain/BConst.ts | 348 -- src/typechain/BFactory.ts | 214 -- src/typechain/BMath.ts | 805 ----- src/typechain/BNum.ts | 348 -- src/typechain/BPool.ts | 2185 ------------- src/typechain/BPoolFeeEscrow.ts | 288 -- src/typechain/BToken.ts | 697 ---- src/typechain/BTokenBase.ts | 390 --- src/typechain/BalancerConstants.ts | 329 -- src/typechain/BalancerOwnable.ts | 134 - src/typechain/CRPFactory.ts | 191 -- src/typechain/CalculatorTest.ts | 147 - src/typechain/CombineTier.ts | 108 +- src/typechain/CombineTierFactory.ts | 23 +- src/typechain/ConfigurableRightsPool.ts | 1932 ------------ .../{BColor.ts => ContextUpgradeable.ts} | 53 +- src/typechain/ERC165Upgradeable.ts | 17 +- src/typechain/ERC20BalanceTier.ts | 9 + src/typechain/ERC20BurnableUpgradeable.ts | 9 + src/typechain/ERC20Pull.ts | 115 - src/typechain/ERC20Redeem.ts | 9 + src/typechain/ERC20TransferTier.ts | 9 + src/typechain/ERC20Upgradeable.ts | 9 + src/typechain/ERC721BalanceTier.ts | 9 + src/typechain/ERC721Upgradeable.ts | 9 + src/typechain/EmissionsERC20.ts | 104 +- src/typechain/EmissionsERC20Factory.ts | 13 +- src/typechain/FixedPointMathOpsTest.ts | 147 - src/typechain/FnPtrsTest.ts | 155 + src/typechain/GatedNFT.ts | 9 + src/typechain/IBFactory.ts | 163 - src/typechain/IBPool.ts | 164 - src/typechain/IBalancerConstants.ts | 329 -- src/typechain/ICRPFactory.ts | 155 - src/typechain/IConfigurableRightsPool.ts | 238 -- .../{BBronze.ts => Initializable.ts} | 53 +- src/typechain/LogicOpsTest.ts | 147 - src/typechain/MockTrustISale.ts | 286 -- src/typechain/OrderBook.ts | 494 +++ src/typechain/OrderBookStateBuilder.ts | 256 ++ src/typechain/Ownable.ts | 158 - src/typechain/OwnableUpgradeable.ts | 9 + src/typechain/RainVM.ts | 112 + src/typechain/RedeemableERC20.ts | 58 +- ...eedERC20Reentrant.ts => ReserveToken18.ts} | 93 +- src/typechain/RightsManager.ts | 324 -- src/typechain/Sale.ts | 184 +- src/typechain/SaleFactory.ts | 26 +- src/typechain/SeedERC20.ts | 1021 ------ src/typechain/SeedERC20ForceSendEther.ts | 91 - src/typechain/SmartPoolManager.ts | 400 --- src/typechain/StackHeightTest.ts | 155 + src/typechain/{PCToken.ts => Stake.ts} | 275 +- .../{SeedERC20Factory.ts => StakeFactory.ts} | 54 +- src/typechain/TierOpsTest.ts | 178 -- src/typechain/TokenOpsTest.ts | 178 -- src/typechain/Trust.ts | 758 ----- src/typechain/TrustEscrowWrapper.ts | 251 -- src/typechain/TrustFactory.ts | 318 -- src/typechain/VMState.ts | 97 - src/typechain/VMStateBuilder.ts | 256 ++ src/typechain/Verify.ts | 9 + src/typechain/VerifyTier.ts | 9 + .../AllStandardOpsStateBuilder__factory.ts | 286 ++ .../factories/AllStandardOpsTest__factory.ts | 252 ++ src/typechain/factories/BBronze__factory.ts | 73 - src/typechain/factories/BColor__factory.ts | 35 - src/typechain/factories/BConst__factory.ts | 310 -- src/typechain/factories/BFactory__factory.ts | 198 -- src/typechain/factories/BMath__factory.ts | 627 ---- src/typechain/factories/BNum__factory.ts | 310 -- .../factories/BPoolFeeEscrow__factory.ts | 270 -- src/typechain/factories/BPool__factory.ts | 1683 ---------- .../factories/BTokenBase__factory.ts | 363 --- src/typechain/factories/BToken__factory.ts | 602 ---- .../factories/BalancerConstants__factory.ts | 269 -- .../factories/BalancerOwnable__factory.ts | 71 - src/typechain/factories/Bytecode__factory.ts | 2 +- .../factories/CRPFactory__factory.ts | 241 -- .../factories/CalculatorTest__factory.ts | 228 -- .../factories/CombineTierFactory__factory.ts | 31 +- .../factories/CombineTier__factory.ts | 116 +- .../ConfigurableRightsPool__factory.ts | 1384 -------- .../factories/ContextUpgradeable__factory.ts | 39 + src/typechain/factories/ERC1155__factory.ts | 2 +- .../factories/ERC165Upgradeable__factory.ts | 13 + .../ERC20BalanceTierFactory__factory.ts | 2 +- .../factories/ERC20BalanceTier__factory.ts | 15 +- .../ERC20BurnableUpgradeable__factory.ts | 13 + src/typechain/factories/ERC20Pull__factory.ts | 96 - .../factories/ERC20PulleeTest__factory.ts | 2 +- .../factories/ERC20Redeem__factory.ts | 15 +- .../ERC20TransferTierFactory__factory.ts | 2 +- .../factories/ERC20TransferTier__factory.ts | 15 +- .../factories/ERC20Upgradeable__factory.ts | 15 +- src/typechain/factories/ERC20__factory.ts | 2 +- .../ERC721BalanceTierFactory__factory.ts | 2 +- .../factories/ERC721BalanceTier__factory.ts | 15 +- .../factories/ERC721Upgradeable__factory.ts | 15 +- src/typechain/factories/ERC721__factory.ts | 2 +- .../EmissionsERC20Factory__factory.ts | 29 +- .../factories/EmissionsERC20__factory.ts | 114 +- .../FixedPointMathOpsTest__factory.ts | 235 -- .../factories/FnPtrsTest__factory.ts | 142 + .../factories/GatedNFTFactory__factory.ts | 2 +- src/typechain/factories/GatedNFT__factory.ts | 15 +- src/typechain/factories/IBFactory__factory.ts | 94 - src/typechain/factories/IBPool__factory.ts | 96 - .../factories/IBalancerConstants__factory.ts | 269 -- .../factories/ICRPFactory__factory.ts | 116 - .../IConfigurableRightsPool__factory.ts | 127 - .../factories/Initializable__factory.ts | 36 + .../factories/LogicOpsTest__factory.ts | 228 -- .../factories/MockTrustISale__factory.ts | 217 -- .../OrderBookStateBuilder__factory.ts | 286 ++ src/typechain/factories/OrderBook__factory.ts | 727 +++++ .../factories/OwnableUpgradeable__factory.ts | 13 + src/typechain/factories/Ownable__factory.ts | 75 - src/typechain/factories/PCToken__factory.ts | 378 --- src/typechain/factories/RainVM__factory.ts | 58 + ...eemableERC20ClaimEscrowWrapper__factory.ts | 2 +- .../RedeemableERC20ClaimEscrow__factory.ts | 2 +- .../RedeemableERC20Factory__factory.ts | 2 +- .../RedeemableERC20Reentrant__factory.ts | 2 +- .../factories/RedeemableERC20__factory.ts | 53 +- .../factories/ReserveNFT__factory.ts | 2 +- .../factories/ReserveToken18__factory.ts | 425 +++ .../factories/ReserveTokenERC1155__factory.ts | 2 +- .../factories/ReserveTokenERC721__factory.ts | 2 +- .../factories/ReserveTokenTest__factory.ts | 2 +- .../factories/ReserveToken__factory.ts | 2 +- .../factories/RightsManager__factory.ts | 294 -- src/typechain/factories/SSTORE2__factory.ts | 2 +- .../factories/SaleFactory__factory.ts | 75 +- .../factories/SaleReentrant__factory.ts | 2 +- src/typechain/factories/Sale__factory.ts | 269 +- .../factories/SeedERC20Factory__factory.ts | 223 -- .../SeedERC20ForceSendEther__factory.ts | 86 - .../factories/SeedERC20Reentrant__factory.ts | 459 --- src/typechain/factories/SeedERC20__factory.ts | 808 ----- .../factories/SmartPoolManager__factory.ts | 305 -- .../factories/StackHeightTest__factory.ts | 145 + .../factories/StakeFactory__factory.ts | 193 ++ src/typechain/factories/Stake__factory.ts | 464 +++ .../factories/TierOpsTest__factory.ts | 247 -- .../factories/TokenOpsTest__factory.ts | 247 -- .../factories/TrustEscrowWrapper__factory.ts | 189 -- .../factories/TrustFactory__factory.ts | 350 --- src/typechain/factories/Trust__factory.ts | 713 ----- .../factories/VMStateBuilder__factory.ts | 287 ++ src/typechain/factories/VMState__factory.ts | 110 - .../factories/ValueTierTest__factory.ts | 2 +- src/typechain/factories/ValueTier__factory.ts | 2 +- .../factories/VerifyCallbackTest__factory.ts | 2 +- .../factories/VerifyFactory__factory.ts | 2 +- .../factories/VerifyTierFactory__factory.ts | 2 +- .../factories/VerifyTier__factory.ts | 15 +- src/typechain/factories/Verify__factory.ts | 15 +- src/typechain/hardhat.d.ts | 438 +-- src/typechain/index.ts | 114 +- yarn.lock | 2793 +++++++++-------- 164 files changed, 7880 insertions(+), 28983 deletions(-) create mode 100644 src/typechain/AllStandardOpsStateBuilder.ts create mode 100644 src/typechain/AllStandardOpsTest.ts delete mode 100644 src/typechain/BConst.ts delete mode 100644 src/typechain/BFactory.ts delete mode 100644 src/typechain/BMath.ts delete mode 100644 src/typechain/BNum.ts delete mode 100644 src/typechain/BPool.ts delete mode 100644 src/typechain/BPoolFeeEscrow.ts delete mode 100644 src/typechain/BToken.ts delete mode 100644 src/typechain/BTokenBase.ts delete mode 100644 src/typechain/BalancerConstants.ts delete mode 100644 src/typechain/BalancerOwnable.ts delete mode 100644 src/typechain/CRPFactory.ts delete mode 100644 src/typechain/CalculatorTest.ts delete mode 100644 src/typechain/ConfigurableRightsPool.ts rename src/typechain/{BColor.ts => ContextUpgradeable.ts} (51%) delete mode 100644 src/typechain/ERC20Pull.ts delete mode 100644 src/typechain/FixedPointMathOpsTest.ts create mode 100644 src/typechain/FnPtrsTest.ts delete mode 100644 src/typechain/IBFactory.ts delete mode 100644 src/typechain/IBPool.ts delete mode 100644 src/typechain/IBalancerConstants.ts delete mode 100644 src/typechain/ICRPFactory.ts delete mode 100644 src/typechain/IConfigurableRightsPool.ts rename src/typechain/{BBronze.ts => Initializable.ts} (51%) delete mode 100644 src/typechain/LogicOpsTest.ts delete mode 100644 src/typechain/MockTrustISale.ts create mode 100644 src/typechain/OrderBook.ts create mode 100644 src/typechain/OrderBookStateBuilder.ts delete mode 100644 src/typechain/Ownable.ts create mode 100644 src/typechain/RainVM.ts rename src/typechain/{SeedERC20Reentrant.ts => ReserveToken18.ts} (85%) delete mode 100644 src/typechain/RightsManager.ts delete mode 100644 src/typechain/SeedERC20.ts delete mode 100644 src/typechain/SeedERC20ForceSendEther.ts delete mode 100644 src/typechain/SmartPoolManager.ts create mode 100644 src/typechain/StackHeightTest.ts rename src/typechain/{PCToken.ts => Stake.ts} (63%) rename src/typechain/{SeedERC20Factory.ts => StakeFactory.ts} (82%) delete mode 100644 src/typechain/TierOpsTest.ts delete mode 100644 src/typechain/TokenOpsTest.ts delete mode 100644 src/typechain/Trust.ts delete mode 100644 src/typechain/TrustEscrowWrapper.ts delete mode 100644 src/typechain/TrustFactory.ts delete mode 100644 src/typechain/VMState.ts create mode 100644 src/typechain/VMStateBuilder.ts create mode 100644 src/typechain/factories/AllStandardOpsStateBuilder__factory.ts create mode 100644 src/typechain/factories/AllStandardOpsTest__factory.ts delete mode 100644 src/typechain/factories/BBronze__factory.ts delete mode 100644 src/typechain/factories/BColor__factory.ts delete mode 100644 src/typechain/factories/BConst__factory.ts delete mode 100644 src/typechain/factories/BFactory__factory.ts delete mode 100644 src/typechain/factories/BMath__factory.ts delete mode 100644 src/typechain/factories/BNum__factory.ts delete mode 100644 src/typechain/factories/BPoolFeeEscrow__factory.ts delete mode 100644 src/typechain/factories/BPool__factory.ts delete mode 100644 src/typechain/factories/BTokenBase__factory.ts delete mode 100644 src/typechain/factories/BToken__factory.ts delete mode 100644 src/typechain/factories/BalancerConstants__factory.ts delete mode 100644 src/typechain/factories/BalancerOwnable__factory.ts delete mode 100644 src/typechain/factories/CRPFactory__factory.ts delete mode 100644 src/typechain/factories/CalculatorTest__factory.ts delete mode 100644 src/typechain/factories/ConfigurableRightsPool__factory.ts create mode 100644 src/typechain/factories/ContextUpgradeable__factory.ts delete mode 100644 src/typechain/factories/ERC20Pull__factory.ts delete mode 100644 src/typechain/factories/FixedPointMathOpsTest__factory.ts create mode 100644 src/typechain/factories/FnPtrsTest__factory.ts delete mode 100644 src/typechain/factories/IBFactory__factory.ts delete mode 100644 src/typechain/factories/IBPool__factory.ts delete mode 100644 src/typechain/factories/IBalancerConstants__factory.ts delete mode 100644 src/typechain/factories/ICRPFactory__factory.ts delete mode 100644 src/typechain/factories/IConfigurableRightsPool__factory.ts create mode 100644 src/typechain/factories/Initializable__factory.ts delete mode 100644 src/typechain/factories/LogicOpsTest__factory.ts delete mode 100644 src/typechain/factories/MockTrustISale__factory.ts create mode 100644 src/typechain/factories/OrderBookStateBuilder__factory.ts create mode 100644 src/typechain/factories/OrderBook__factory.ts delete mode 100644 src/typechain/factories/Ownable__factory.ts delete mode 100644 src/typechain/factories/PCToken__factory.ts create mode 100644 src/typechain/factories/RainVM__factory.ts create mode 100644 src/typechain/factories/ReserveToken18__factory.ts delete mode 100644 src/typechain/factories/RightsManager__factory.ts delete mode 100644 src/typechain/factories/SeedERC20Factory__factory.ts delete mode 100644 src/typechain/factories/SeedERC20ForceSendEther__factory.ts delete mode 100644 src/typechain/factories/SeedERC20Reentrant__factory.ts delete mode 100644 src/typechain/factories/SeedERC20__factory.ts delete mode 100644 src/typechain/factories/SmartPoolManager__factory.ts create mode 100644 src/typechain/factories/StackHeightTest__factory.ts create mode 100644 src/typechain/factories/StakeFactory__factory.ts create mode 100644 src/typechain/factories/Stake__factory.ts delete mode 100644 src/typechain/factories/TierOpsTest__factory.ts delete mode 100644 src/typechain/factories/TokenOpsTest__factory.ts delete mode 100644 src/typechain/factories/TrustEscrowWrapper__factory.ts delete mode 100644 src/typechain/factories/TrustFactory__factory.ts delete mode 100644 src/typechain/factories/Trust__factory.ts create mode 100644 src/typechain/factories/VMStateBuilder__factory.ts delete mode 100644 src/typechain/factories/VMState__factory.ts diff --git a/package.json b/package.json index e7b65a9..f105ec2 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,8 @@ } ], "devDependencies": { - "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#e590ce7ef673224afba04c43384a278a9500500d", + "@0xsequence/sstore2": "github:0xsequence/sstore2", + "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#af9a3f638d8084d96cbf6898c035920544647879", "@beehiveinnovation/rain-statusfi": "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", diff --git a/src/typechain/AllStandardOpsStateBuilder.ts b/src/typechain/AllStandardOpsStateBuilder.ts new file mode 100644 index 0000000..d0e53a3 --- /dev/null +++ b/src/typechain/AllStandardOpsStateBuilder.ts @@ -0,0 +1,256 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type BoundsStruct = { + entrypoint: BigNumberish; + minFinalStackIndex: BigNumberish; + stackIndex: BigNumberish; + stackLength: BigNumberish; + argumentsLength: BigNumberish; + storageLength: BigNumberish; + opcodesLength: BigNumberish; +}; + +export type BoundsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + entrypoint: BigNumber; + minFinalStackIndex: BigNumber; + stackIndex: BigNumber; + stackLength: BigNumber; + argumentsLength: BigNumber; + storageLength: BigNumber; + opcodesLength: BigNumber; +}; + +export interface AllStandardOpsStateBuilderInterface extends utils.Interface { + functions: { + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity((bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "ptrSource(bytes,bytes)": FunctionFragment; + "stackPopsFnPtrs()": FunctionFragment; + "stackPushesFnPtrs()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "buildState", + values: [string, StateConfigStruct, BoundsStruct[]] + ): string; + encodeFunctionData( + functionFragment: "ensureIntegrity", + values: [StateConfigStruct, BoundsStruct] + ): string; + encodeFunctionData( + functionFragment: "ptrSource", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "stackPopsFnPtrs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stackPushesFnPtrs", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "buildState", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ensureIntegrity", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ptrSource", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stackPopsFnPtrs", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stackPushesFnPtrs", + data: BytesLike + ): Result; + + events: {}; +} + +export interface AllStandardOpsStateBuilder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AllStandardOpsStateBuilderInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise<[string]>; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise<[string]>; + }; + + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + + callStatic: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: CallOverrides + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/AllStandardOpsTest.ts b/src/typechain/AllStandardOpsTest.ts new file mode 100644 index 0000000..a072586 --- /dev/null +++ b/src/typechain/AllStandardOpsTest.ts @@ -0,0 +1,268 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type StateStruct = { + stackIndex: BigNumberish; + stack: BigNumberish[]; + ptrSources: BytesLike[]; + constants: BigNumberish[]; + argumentsIndex: BigNumberish; +}; + +export type StateStructOutput = [ + BigNumber, + BigNumber[], + string[], + BigNumber[], + BigNumber +] & { + stackIndex: BigNumber; + stack: BigNumber[]; + ptrSources: string[]; + constants: BigNumber[]; + argumentsIndex: BigNumber; +}; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface AllStandardOpsTestInterface extends utils.Interface { + functions: { + "fnPtrs()": FunctionFragment; + "initialize((bytes[],uint256[]))": FunctionFragment; + "run()": FunctionFragment; + "runContext(uint256[])": FunctionFragment; + "stack()": FunctionFragment; + "stackTop()": FunctionFragment; + "state()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "initialize", + values: [StateConfigStruct] + ): string; + encodeFunctionData(functionFragment: "run", values?: undefined): string; + encodeFunctionData( + functionFragment: "runContext", + values: [BigNumberish[]] + ): string; + encodeFunctionData(functionFragment: "stack", values?: undefined): string; + encodeFunctionData(functionFragment: "stackTop", values?: undefined): string; + encodeFunctionData(functionFragment: "state", values?: undefined): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "runContext", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "stack", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "stackTop", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "state", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + + events: {}; +} + +export interface AllStandardOpsTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AllStandardOpsTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + values_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stack(overrides?: CallOverrides): Promise<[BigNumber[]]>; + + stackTop(overrides?: CallOverrides): Promise<[BigNumber]>; + + state(overrides?: CallOverrides): Promise<[StateStructOutput]>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + }; + + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + values_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + run(overrides?: CallOverrides): Promise; + + runContext( + values_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + values_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + run( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + runContext( + values_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + stack(overrides?: CallOverrides): Promise; + + stackTop(overrides?: CallOverrides): Promise; + + state(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/BConst.ts b/src/typechain/BConst.ts deleted file mode 100644 index 56441b3..0000000 --- a/src/typechain/BConst.ts +++ /dev/null @@ -1,348 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BConstInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "BPOW_PRECISION()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "INIT_POOL_SUPPLY()": FunctionFragment; - "MAX_BOUND_TOKENS()": FunctionFragment; - "MAX_BPOW_BASE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_BOUND_TOKENS()": FunctionFragment; - "MIN_BPOW_BASE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - "getColor()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData( - functionFragment: "BPOW_PRECISION", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "INIT_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "BPOW_PRECISION", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "INIT_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - - events: {}; -} - -export interface BConst extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BConstInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - BPOW_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - getColor(overrides?: CallOverrides): Promise<[string]>; - }; - - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/BFactory.ts b/src/typechain/BFactory.ts deleted file mode 100644 index c71be20..0000000 --- a/src/typechain/BFactory.ts +++ /dev/null @@ -1,214 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BFactoryInterface extends utils.Interface { - functions: { - "collect(address)": FunctionFragment; - "getBLabs()": FunctionFragment; - "getColor()": FunctionFragment; - "isBPool(address)": FunctionFragment; - "newBPool()": FunctionFragment; - "setBLabs(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "collect", values: [string]): string; - encodeFunctionData(functionFragment: "getBLabs", values?: undefined): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - encodeFunctionData(functionFragment: "isBPool", values: [string]): string; - encodeFunctionData(functionFragment: "newBPool", values?: undefined): string; - encodeFunctionData(functionFragment: "setBLabs", values: [string]): string; - - decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getBLabs", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isBPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "newBPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setBLabs", data: BytesLike): Result; - - events: { - "LOG_BLABS(address,address)": EventFragment; - "LOG_NEW_POOL(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "LOG_BLABS"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LOG_NEW_POOL"): EventFragment; -} - -export type LOG_BLABSEvent = TypedEvent< - [string, string], - { caller: string; blabs: string } ->; - -export type LOG_BLABSEventFilter = TypedEventFilter; - -export type LOG_NEW_POOLEvent = TypedEvent< - [string, string], - { caller: string; pool: string } ->; - -export type LOG_NEW_POOLEventFilter = TypedEventFilter; - -export interface BFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise<[string]>; - - getColor(overrides?: CallOverrides): Promise<[string]>; - - isBPool(b: string, overrides?: CallOverrides): Promise<[boolean]>; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - isBPool(b: string, overrides?: CallOverrides): Promise; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - collect(pool: string, overrides?: CallOverrides): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - isBPool(b: string, overrides?: CallOverrides): Promise; - - newBPool(overrides?: CallOverrides): Promise; - - setBLabs(b: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "LOG_BLABS(address,address)"( - caller?: string | null, - blabs?: string | null - ): LOG_BLABSEventFilter; - LOG_BLABS( - caller?: string | null, - blabs?: string | null - ): LOG_BLABSEventFilter; - - "LOG_NEW_POOL(address,address)"( - caller?: string | null, - pool?: string | null - ): LOG_NEW_POOLEventFilter; - LOG_NEW_POOL( - caller?: string | null, - pool?: string | null - ): LOG_NEW_POOLEventFilter; - }; - - estimateGas: { - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - isBPool(b: string, overrides?: CallOverrides): Promise; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - isBPool( - b: string, - overrides?: CallOverrides - ): Promise; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/BMath.ts b/src/typechain/BMath.ts deleted file mode 100644 index 601198d..0000000 --- a/src/typechain/BMath.ts +++ /dev/null @@ -1,805 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BMathInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "BPOW_PRECISION()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "INIT_POOL_SUPPLY()": FunctionFragment; - "MAX_BOUND_TOKENS()": FunctionFragment; - "MAX_BPOW_BASE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_BOUND_TOKENS()": FunctionFragment; - "MIN_BPOW_BASE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - "calcInGivenOut(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcOutGivenIn(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcPoolInGivenSingleOut(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcPoolOutGivenSingleIn(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcSingleInGivenPoolOut(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcSingleOutGivenPoolIn(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcSpotPrice(uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "getColor()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData( - functionFragment: "BPOW_PRECISION", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "INIT_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "calcInGivenOut", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcOutGivenIn", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcPoolInGivenSingleOut", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcPoolOutGivenSingleIn", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcSingleInGivenPoolOut", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcSingleOutGivenPoolIn", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcSpotPrice", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "BPOW_PRECISION", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "INIT_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "calcInGivenOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcOutGivenIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcPoolInGivenSingleOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcPoolOutGivenSingleIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcSingleInGivenPoolOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcSingleOutGivenPoolIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcSpotPrice", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - - events: {}; -} - -export interface BMath extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BMathInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - BPOW_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountIn: BigNumber }>; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountOut: BigNumber }>; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { poolAmountIn: BigNumber }>; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { poolAmountOut: BigNumber }>; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountIn: BigNumber }>; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountOut: BigNumber }>; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { spotPrice: BigNumber }>; - - getColor(overrides?: CallOverrides): Promise<[string]>; - }; - - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/BNum.ts b/src/typechain/BNum.ts deleted file mode 100644 index cce4d1b..0000000 --- a/src/typechain/BNum.ts +++ /dev/null @@ -1,348 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BNumInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "BPOW_PRECISION()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "INIT_POOL_SUPPLY()": FunctionFragment; - "MAX_BOUND_TOKENS()": FunctionFragment; - "MAX_BPOW_BASE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_BOUND_TOKENS()": FunctionFragment; - "MIN_BPOW_BASE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - "getColor()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData( - functionFragment: "BPOW_PRECISION", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "INIT_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "BPOW_PRECISION", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "INIT_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - - events: {}; -} - -export interface BNum extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BNumInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - BPOW_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - getColor(overrides?: CallOverrides): Promise<[string]>; - }; - - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/BPool.ts b/src/typechain/BPool.ts deleted file mode 100644 index 6855b5d..0000000 --- a/src/typechain/BPool.ts +++ /dev/null @@ -1,2185 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BPoolInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "BPOW_PRECISION()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "INIT_POOL_SUPPLY()": FunctionFragment; - "MAX_BOUND_TOKENS()": FunctionFragment; - "MAX_BPOW_BASE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_BOUND_TOKENS()": FunctionFragment; - "MIN_BPOW_BASE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "bind(address,uint256,uint256)": FunctionFragment; - "calcInGivenOut(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcOutGivenIn(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcPoolInGivenSingleOut(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcPoolOutGivenSingleIn(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcSingleInGivenPoolOut(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcSingleOutGivenPoolIn(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "calcSpotPrice(uint256,uint256,uint256,uint256,uint256)": FunctionFragment; - "decimals()": FunctionFragment; - "decreaseApproval(address,uint256)": FunctionFragment; - "exitPool(uint256,uint256[])": FunctionFragment; - "exitswapExternAmountOut(address,uint256,uint256)": FunctionFragment; - "exitswapPoolAmountIn(address,uint256,uint256)": FunctionFragment; - "finalize()": FunctionFragment; - "getBalance(address)": FunctionFragment; - "getColor()": FunctionFragment; - "getController()": FunctionFragment; - "getCurrentTokens()": FunctionFragment; - "getDenormalizedWeight(address)": FunctionFragment; - "getFinalTokens()": FunctionFragment; - "getNormalizedWeight(address)": FunctionFragment; - "getNumTokens()": FunctionFragment; - "getSpotPrice(address,address)": FunctionFragment; - "getSpotPriceSansFee(address,address)": FunctionFragment; - "getSwapFee()": FunctionFragment; - "getTotalDenormalizedWeight()": FunctionFragment; - "gulp(address)": FunctionFragment; - "increaseApproval(address,uint256)": FunctionFragment; - "isBound(address)": FunctionFragment; - "isFinalized()": FunctionFragment; - "isPublicSwap()": FunctionFragment; - "joinPool(uint256,uint256[])": FunctionFragment; - "joinswapExternAmountIn(address,uint256,uint256)": FunctionFragment; - "joinswapPoolAmountOut(address,uint256,uint256)": FunctionFragment; - "name()": FunctionFragment; - "rebind(address,uint256,uint256)": FunctionFragment; - "setController(address)": FunctionFragment; - "setPublicSwap(bool)": FunctionFragment; - "setSwapFee(uint256)": FunctionFragment; - "swapExactAmountIn(address,uint256,address,uint256,uint256)": FunctionFragment; - "swapExactAmountOut(address,uint256,address,uint256,uint256)": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "unbind(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData( - functionFragment: "BPOW_PRECISION", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "INIT_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "bind", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "calcInGivenOut", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcOutGivenIn", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcPoolInGivenSingleOut", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcPoolOutGivenSingleIn", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcSingleInGivenPoolOut", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcSingleOutGivenPoolIn", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "calcSpotPrice", - values: [ - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseApproval", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "exitPool", - values: [BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "exitswapExternAmountOut", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "exitswapPoolAmountIn", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "finalize", values?: undefined): string; - encodeFunctionData(functionFragment: "getBalance", values: [string]): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - encodeFunctionData( - functionFragment: "getController", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getCurrentTokens", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getDenormalizedWeight", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "getFinalTokens", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getNormalizedWeight", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "getNumTokens", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getSpotPrice", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "getSpotPriceSansFee", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "getSwapFee", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getTotalDenormalizedWeight", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "gulp", values: [string]): string; - encodeFunctionData( - functionFragment: "increaseApproval", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "isBound", values: [string]): string; - encodeFunctionData( - functionFragment: "isFinalized", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "isPublicSwap", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "joinPool", - values: [BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "joinswapExternAmountIn", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "joinswapPoolAmountOut", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "rebind", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setController", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "setPublicSwap", - values: [boolean] - ): string; - encodeFunctionData( - functionFragment: "setSwapFee", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "swapExactAmountIn", - values: [string, BigNumberish, string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "swapExactAmountOut", - values: [string, BigNumberish, string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "unbind", values: [string]): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "BPOW_PRECISION", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "INIT_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "bind", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "calcInGivenOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcOutGivenIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcPoolInGivenSingleOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcPoolOutGivenSingleIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcSingleInGivenPoolOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcSingleOutGivenPoolIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "calcSpotPrice", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseApproval", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "exitPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "exitswapExternAmountOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "exitswapPoolAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "finalize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getBalance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getController", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getCurrentTokens", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getDenormalizedWeight", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getFinalTokens", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getNormalizedWeight", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getNumTokens", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getSpotPrice", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getSpotPriceSansFee", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getSwapFee", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getTotalDenormalizedWeight", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "gulp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "increaseApproval", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "isBound", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isFinalized", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isPublicSwap", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "joinPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "joinswapExternAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "joinswapPoolAmountOut", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "rebind", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setController", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setPublicSwap", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setSwapFee", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "swapExactAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "swapExactAmountOut", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "unbind", data: BytesLike): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "LOG_CALL(bytes4,address,bytes)": EventFragment; - "LOG_EXIT(address,address,uint256)": EventFragment; - "LOG_JOIN(address,address,uint256)": EventFragment; - "LOG_SWAP(address,address,address,uint256,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LOG_CALL"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LOG_EXIT"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LOG_JOIN"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LOG_SWAP"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { src: string; dst: string; amt: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type LOG_CALLEvent = TypedEvent< - [string, string, string], - { sig: string; caller: string; data: string } ->; - -export type LOG_CALLEventFilter = TypedEventFilter; - -export type LOG_EXITEvent = TypedEvent< - [string, string, BigNumber], - { caller: string; tokenOut: string; tokenAmountOut: BigNumber } ->; - -export type LOG_EXITEventFilter = TypedEventFilter; - -export type LOG_JOINEvent = TypedEvent< - [string, string, BigNumber], - { caller: string; tokenIn: string; tokenAmountIn: BigNumber } ->; - -export type LOG_JOINEventFilter = TypedEventFilter; - -export type LOG_SWAPEvent = TypedEvent< - [string, string, string, BigNumber, BigNumber], - { - caller: string; - tokenIn: string; - tokenOut: string; - tokenAmountIn: BigNumber; - tokenAmountOut: BigNumber; - } ->; - -export type LOG_SWAPEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { src: string; dst: string; amt: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface BPool extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BPoolInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - BPOW_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - bind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountIn: BigNumber }>; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountOut: BigNumber }>; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { poolAmountIn: BigNumber }>; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { poolAmountOut: BigNumber }>; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountIn: BigNumber }>; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountOut: BigNumber }>; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { spotPrice: BigNumber }>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - finalize( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalance(token: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - getColor(overrides?: CallOverrides): Promise<[string]>; - - getController(overrides?: CallOverrides): Promise<[string]>; - - getCurrentTokens( - overrides?: CallOverrides - ): Promise<[string[]] & { tokens: string[] }>; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getFinalTokens( - overrides?: CallOverrides - ): Promise<[string[]] & { tokens: string[] }>; - - getNormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getNumTokens(overrides?: CallOverrides): Promise<[BigNumber]>; - - getSpotPrice( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { spotPrice: BigNumber }>; - - getSpotPriceSansFee( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { spotPrice: BigNumber }>; - - getSwapFee(overrides?: CallOverrides): Promise<[BigNumber]>; - - getTotalDenormalizedWeight(overrides?: CallOverrides): Promise<[BigNumber]>; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isBound(t: string, overrides?: CallOverrides): Promise<[boolean]>; - - isFinalized(overrides?: CallOverrides): Promise<[boolean]>; - - isPublicSwap(overrides?: CallOverrides): Promise<[boolean]>; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - rebind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - manager: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - public_: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountOut( - tokenIn: string, - maxAmountIn: BigNumberish, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unbind( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise; - - bind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - finalize( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalance(token: string, overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getCurrentTokens(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getFinalTokens(overrides?: CallOverrides): Promise; - - getNormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getNumTokens(overrides?: CallOverrides): Promise; - - getSpotPrice( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSpotPriceSansFee( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSwapFee(overrides?: CallOverrides): Promise; - - getTotalDenormalizedWeight(overrides?: CallOverrides): Promise; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isBound(t: string, overrides?: CallOverrides): Promise; - - isFinalized(overrides?: CallOverrides): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - rebind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - manager: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - public_: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountOut( - tokenIn: string, - maxAmountIn: BigNumberish, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unbind( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise; - - bind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - finalize(overrides?: CallOverrides): Promise; - - getBalance(token: string, overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getCurrentTokens(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getFinalTokens(overrides?: CallOverrides): Promise; - - getNormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getNumTokens(overrides?: CallOverrides): Promise; - - getSpotPrice( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSpotPriceSansFee( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSwapFee(overrides?: CallOverrides): Promise; - - getTotalDenormalizedWeight(overrides?: CallOverrides): Promise; - - gulp(token: string, overrides?: CallOverrides): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isBound(t: string, overrides?: CallOverrides): Promise; - - isFinalized(overrides?: CallOverrides): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - rebind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: CallOverrides - ): Promise; - - setController(manager: string, overrides?: CallOverrides): Promise; - - setPublicSwap(public_: boolean, overrides?: CallOverrides): Promise; - - setSwapFee(swapFee: BigNumberish, overrides?: CallOverrides): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { - tokenAmountOut: BigNumber; - spotPriceAfter: BigNumber; - } - >; - - swapExactAmountOut( - tokenIn: string, - maxAmountIn: BigNumberish, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { - tokenAmountIn: BigNumber; - spotPriceAfter: BigNumber; - } - >; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - unbind(token: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - src?: string | null, - dst?: string | null, - amt?: null - ): ApprovalEventFilter; - Approval( - src?: string | null, - dst?: string | null, - amt?: null - ): ApprovalEventFilter; - - "LOG_CALL(bytes4,address,bytes)"( - sig?: BytesLike | null, - caller?: string | null, - data?: null - ): LOG_CALLEventFilter; - LOG_CALL( - sig?: BytesLike | null, - caller?: string | null, - data?: null - ): LOG_CALLEventFilter; - - "LOG_EXIT(address,address,uint256)"( - caller?: string | null, - tokenOut?: string | null, - tokenAmountOut?: null - ): LOG_EXITEventFilter; - LOG_EXIT( - caller?: string | null, - tokenOut?: string | null, - tokenAmountOut?: null - ): LOG_EXITEventFilter; - - "LOG_JOIN(address,address,uint256)"( - caller?: string | null, - tokenIn?: string | null, - tokenAmountIn?: null - ): LOG_JOINEventFilter; - LOG_JOIN( - caller?: string | null, - tokenIn?: string | null, - tokenAmountIn?: null - ): LOG_JOINEventFilter; - - "LOG_SWAP(address,address,address,uint256,uint256)"( - caller?: string | null, - tokenIn?: string | null, - tokenOut?: string | null, - tokenAmountIn?: null, - tokenAmountOut?: null - ): LOG_SWAPEventFilter; - LOG_SWAP( - caller?: string | null, - tokenIn?: string | null, - tokenOut?: string | null, - tokenAmountIn?: null, - tokenAmountOut?: null - ): LOG_SWAPEventFilter; - - "Transfer(address,address,uint256)"( - src?: string | null, - dst?: string | null, - amt?: null - ): TransferEventFilter; - Transfer( - src?: string | null, - dst?: string | null, - amt?: null - ): TransferEventFilter; - }; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise; - - bind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - finalize( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalance(token: string, overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getCurrentTokens(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getFinalTokens(overrides?: CallOverrides): Promise; - - getNormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getNumTokens(overrides?: CallOverrides): Promise; - - getSpotPrice( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSpotPriceSansFee( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSwapFee(overrides?: CallOverrides): Promise; - - getTotalDenormalizedWeight(overrides?: CallOverrides): Promise; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isBound(t: string, overrides?: CallOverrides): Promise; - - isFinalized(overrides?: CallOverrides): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - rebind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - manager: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - public_: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountOut( - tokenIn: string, - maxAmountIn: BigNumberish, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unbind( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - whom: string, - overrides?: CallOverrides - ): Promise; - - bind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - calcInGivenOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcOutGivenIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolInGivenSingleOut( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcPoolOutGivenSingleIn( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - tokenAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleInGivenPoolOut( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSingleOutGivenPoolIn( - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - poolSupply: BigNumberish, - totalWeight: BigNumberish, - poolAmountIn: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - calcSpotPrice( - tokenBalanceIn: BigNumberish, - tokenWeightIn: BigNumberish, - tokenBalanceOut: BigNumberish, - tokenWeightOut: BigNumberish, - swapFee: BigNumberish, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - finalize( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalance( - token: string, - overrides?: CallOverrides - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getCurrentTokens(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getFinalTokens(overrides?: CallOverrides): Promise; - - getNormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getNumTokens(overrides?: CallOverrides): Promise; - - getSpotPrice( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSpotPriceSansFee( - tokenIn: string, - tokenOut: string, - overrides?: CallOverrides - ): Promise; - - getSwapFee(overrides?: CallOverrides): Promise; - - getTotalDenormalizedWeight( - overrides?: CallOverrides - ): Promise; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isBound( - t: string, - overrides?: CallOverrides - ): Promise; - - isFinalized(overrides?: CallOverrides): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - rebind( - token: string, - balance: BigNumberish, - denorm: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - manager: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - public_: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountOut( - tokenIn: string, - maxAmountIn: BigNumberish, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unbind( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/BPoolFeeEscrow.ts b/src/typechain/BPoolFeeEscrow.ts deleted file mode 100644 index 83b4a8d..0000000 --- a/src/typechain/BPoolFeeEscrow.ts +++ /dev/null @@ -1,288 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BPoolFeeEscrowInterface extends utils.Interface { - functions: { - "buyToken(address,address,uint256,uint256,uint256,uint256)": FunctionFragment; - "claimFees(address,address)": FunctionFragment; - "refundFees(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "buyToken", - values: [ - string, - string, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "claimFees", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "refundFees", values: [string]): string; - - decodeFunctionResult(functionFragment: "buyToken", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "claimFees", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "refundFees", data: BytesLike): Result; - - events: { - "ClaimFees(address,address,address,address,uint256)": EventFragment; - "Fee(address,address,address,address,address,uint256)": EventFragment; - "RefundFees(address,address,address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ClaimFees"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Fee"): EventFragment; - getEvent(nameOrSignatureOrTopic: "RefundFees"): EventFragment; -} - -export type ClaimFeesEvent = TypedEvent< - [string, string, string, string, BigNumber], - { - sender: string; - recipient: string; - trust: string; - reserve: string; - claimedFees: BigNumber; - } ->; - -export type ClaimFeesEventFilter = TypedEventFilter; - -export type FeeEvent = TypedEvent< - [string, string, string, string, string, BigNumber], - { - sender: string; - recipient: string; - trust: string; - reserve: string; - redeemable: string; - fee: BigNumber; - } ->; - -export type FeeEventFilter = TypedEventFilter; - -export type RefundFeesEvent = TypedEvent< - [string, string, string, string, BigNumber], - { - sender: string; - trust: string; - reserve: string; - redeemable: string; - refundedFees: BigNumber; - } ->; - -export type RefundFeesEventFilter = TypedEventFilter; - -export interface BPoolFeeEscrow extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BPoolFeeEscrowInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - buyToken( - feeRecipient_: string, - trust_: string, - fee_: BigNumberish, - reserveAmountIn_: BigNumberish, - minTokenAmountOut_: BigNumberish, - maxPrice_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - claimFees( - recipient_: string, - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - refundFees( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - buyToken( - feeRecipient_: string, - trust_: string, - fee_: BigNumberish, - reserveAmountIn_: BigNumberish, - minTokenAmountOut_: BigNumberish, - maxPrice_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - claimFees( - recipient_: string, - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - refundFees( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - buyToken( - feeRecipient_: string, - trust_: string, - fee_: BigNumberish, - reserveAmountIn_: BigNumberish, - minTokenAmountOut_: BigNumberish, - maxPrice_: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { - tokenAmountOut: BigNumber; - spotPriceAfter: BigNumber; - } - >; - - claimFees( - recipient_: string, - trust_: string, - overrides?: CallOverrides - ): Promise; - - refundFees(trust_: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "ClaimFees(address,address,address,address,uint256)"( - sender?: null, - recipient?: null, - trust?: null, - reserve?: null, - claimedFees?: null - ): ClaimFeesEventFilter; - ClaimFees( - sender?: null, - recipient?: null, - trust?: null, - reserve?: null, - claimedFees?: null - ): ClaimFeesEventFilter; - - "Fee(address,address,address,address,address,uint256)"( - sender?: null, - recipient?: null, - trust?: null, - reserve?: null, - redeemable?: null, - fee?: null - ): FeeEventFilter; - Fee( - sender?: null, - recipient?: null, - trust?: null, - reserve?: null, - redeemable?: null, - fee?: null - ): FeeEventFilter; - - "RefundFees(address,address,address,address,uint256)"( - sender?: null, - trust?: null, - reserve?: null, - redeemable?: null, - refundedFees?: null - ): RefundFeesEventFilter; - RefundFees( - sender?: null, - trust?: null, - reserve?: null, - redeemable?: null, - refundedFees?: null - ): RefundFeesEventFilter; - }; - - estimateGas: { - buyToken( - feeRecipient_: string, - trust_: string, - fee_: BigNumberish, - reserveAmountIn_: BigNumberish, - minTokenAmountOut_: BigNumberish, - maxPrice_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - claimFees( - recipient_: string, - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - refundFees( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - buyToken( - feeRecipient_: string, - trust_: string, - fee_: BigNumberish, - reserveAmountIn_: BigNumberish, - minTokenAmountOut_: BigNumberish, - maxPrice_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - claimFees( - recipient_: string, - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - refundFees( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/BToken.ts b/src/typechain/BToken.ts deleted file mode 100644 index 81b7432..0000000 --- a/src/typechain/BToken.ts +++ /dev/null @@ -1,697 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BTokenInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "BPOW_PRECISION()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "INIT_POOL_SUPPLY()": FunctionFragment; - "MAX_BOUND_TOKENS()": FunctionFragment; - "MAX_BPOW_BASE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_BOUND_TOKENS()": FunctionFragment; - "MIN_BPOW_BASE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "decimals()": FunctionFragment; - "decreaseApproval(address,uint256)": FunctionFragment; - "getColor()": FunctionFragment; - "increaseApproval(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData( - functionFragment: "BPOW_PRECISION", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "INIT_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseApproval", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - encodeFunctionData( - functionFragment: "increaseApproval", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "BPOW_PRECISION", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "INIT_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseApproval", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "increaseApproval", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { src: string; dst: string; amt: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { src: string; dst: string; amt: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface BToken extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BTokenInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - BPOW_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getColor(overrides?: CallOverrides): Promise<[string]>; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - src?: string | null, - dst?: string | null, - amt?: null - ): ApprovalEventFilter; - Approval( - src?: string | null, - dst?: string | null, - amt?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - src?: string | null, - dst?: string | null, - amt?: null - ): TransferEventFilter; - Transfer( - src?: string | null, - dst?: string | null, - amt?: null - ): TransferEventFilter; - }; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(whom: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - allowance( - src: string, - dst: string, - overrides?: CallOverrides - ): Promise; - - approve( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - whom: string, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getColor(overrides?: CallOverrides): Promise; - - increaseApproval( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - src: string, - dst: string, - amt: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/BTokenBase.ts b/src/typechain/BTokenBase.ts deleted file mode 100644 index f1914e0..0000000 --- a/src/typechain/BTokenBase.ts +++ /dev/null @@ -1,390 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BTokenBaseInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "BPOW_PRECISION()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "INIT_POOL_SUPPLY()": FunctionFragment; - "MAX_BOUND_TOKENS()": FunctionFragment; - "MAX_BPOW_BASE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_BOUND_TOKENS()": FunctionFragment; - "MIN_BPOW_BASE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - "getColor()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData( - functionFragment: "BPOW_PRECISION", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "INIT_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BOUND_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BPOW_BASE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "BPOW_PRECISION", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "INIT_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BOUND_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BPOW_BASE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { src: string; dst: string; amt: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { src: string; dst: string; amt: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface BTokenBase extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BTokenBaseInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - BPOW_PRECISION(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - getColor(overrides?: CallOverrides): Promise<[string]>; - }; - - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - src?: string | null, - dst?: string | null, - amt?: null - ): ApprovalEventFilter; - Approval( - src?: string | null, - dst?: string | null, - amt?: null - ): ApprovalEventFilter; - - "Transfer(address,address,uint256)"( - src?: string | null, - dst?: string | null, - amt?: null - ): TransferEventFilter; - Transfer( - src?: string | null, - dst?: string | null, - amt?: null - ): TransferEventFilter; - }; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - BPOW_PRECISION(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - INIT_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MAX_BPOW_BASE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_BOUND_TOKENS(overrides?: CallOverrides): Promise; - - MIN_BPOW_BASE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - getColor(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/BalancerConstants.ts b/src/typechain/BalancerConstants.ts deleted file mode 100644 index 50c5ed5..0000000 --- a/src/typechain/BalancerConstants.ts +++ /dev/null @@ -1,329 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BalancerConstantsInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "MAX_ASSET_LIMIT()": FunctionFragment; - "MAX_BALANCE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_POOL_SUPPLY()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_UINT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_ASSET_LIMIT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_POOL_SUPPLY()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_ASSET_LIMIT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BALANCE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_UINT", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_ASSET_LIMIT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_ASSET_LIMIT", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_UINT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_ASSET_LIMIT", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - - events: {}; -} - -export interface BalancerConstants extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BalancerConstantsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_UINT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - }; - - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/BalancerOwnable.ts b/src/typechain/BalancerOwnable.ts deleted file mode 100644 index b262e23..0000000 --- a/src/typechain/BalancerOwnable.ts +++ /dev/null @@ -1,134 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface BalancerOwnableInterface extends utils.Interface { - functions: { - "getController()": FunctionFragment; - "setController(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "getController", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "setController", - values: [string] - ): string; - - decodeFunctionResult( - functionFragment: "getController", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setController", - data: BytesLike - ): Result; - - events: { - "OwnershipTransferred(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; -} - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface BalancerOwnable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: BalancerOwnableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - getController(overrides?: CallOverrides): Promise<[string]>; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - getController(overrides?: CallOverrides): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - getController(overrides?: CallOverrides): Promise; - - setController(newOwner: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - }; - - estimateGas: { - getController(overrides?: CallOverrides): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - getController(overrides?: CallOverrides): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/CRPFactory.ts b/src/typechain/CRPFactory.ts deleted file mode 100644 index 5ad560b..0000000 --- a/src/typechain/CRPFactory.ts +++ /dev/null @@ -1,191 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type PoolParamsStruct = { - poolTokenSymbol: string; - poolTokenName: string; - constituentTokens: string[]; - tokenBalances: BigNumberish[]; - tokenWeights: BigNumberish[]; - swapFee: BigNumberish; -}; - -export type PoolParamsStructOutput = [ - string, - string, - string[], - BigNumber[], - BigNumber[], - BigNumber -] & { - poolTokenSymbol: string; - poolTokenName: string; - constituentTokens: string[]; - tokenBalances: BigNumber[]; - tokenWeights: BigNumber[]; - swapFee: BigNumber; -}; - -export type RightsStruct = { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export type RightsStructOutput = [ - boolean, - boolean, - boolean, - boolean, - boolean, - boolean -] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export interface CRPFactoryInterface extends utils.Interface { - functions: { - "isCrp(address)": FunctionFragment; - "newCrp(address,(string,string,address[],uint256[],uint256[],uint256),(bool,bool,bool,bool,bool,bool))": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "isCrp", values: [string]): string; - encodeFunctionData( - functionFragment: "newCrp", - values: [string, PoolParamsStruct, RightsStruct] - ): string; - - decodeFunctionResult(functionFragment: "isCrp", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "newCrp", data: BytesLike): Result; - - events: { - "LogNewCrp(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "LogNewCrp"): EventFragment; -} - -export type LogNewCrpEvent = TypedEvent< - [string, string], - { caller: string; pool: string } ->; - -export type LogNewCrpEventFilter = TypedEventFilter; - -export interface CRPFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: CRPFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - isCrp(addr: string, overrides?: CallOverrides): Promise<[boolean]>; - - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - isCrp(addr: string, overrides?: CallOverrides): Promise; - - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - isCrp(addr: string, overrides?: CallOverrides): Promise; - - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "LogNewCrp(address,address)"( - caller?: string | null, - pool?: string | null - ): LogNewCrpEventFilter; - LogNewCrp( - caller?: string | null, - pool?: string | null - ): LogNewCrpEventFilter; - }; - - estimateGas: { - isCrp(addr: string, overrides?: CallOverrides): Promise; - - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - isCrp( - addr: string, - overrides?: CallOverrides - ): Promise; - - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/CalculatorTest.ts b/src/typechain/CalculatorTest.ts deleted file mode 100644 index 56c55dc..0000000 --- a/src/typechain/CalculatorTest.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; -}; - -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; -}; - -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - -export interface CalculatorTestInterface extends utils.Interface { - functions: { - "run()": FunctionFragment; - "runState()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "run", values?: undefined): string; - encodeFunctionData(functionFragment: "runState", values?: undefined): string; - - decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runState", data: BytesLike): Result; - - events: { - "Snapshot(address,address,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; -} - -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - -export interface CalculatorTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: CalculatorTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - run(overrides?: CallOverrides): Promise<[BigNumber]>; - - runState(overrides?: CallOverrides): Promise<[StateStructOutput]>; - }; - - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - - callStatic: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - }; - - estimateGas: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/CombineTier.ts b/src/typechain/CombineTier.ts index 9446a87..cd11f59 100644 --- a/src/typechain/CombineTier.ts +++ b/src/typechain/CombineTier.ts @@ -17,54 +17,36 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; +export type StateConfigStruct = { sources: BytesLike[]; constants: BigNumberish[]; - arguments: BigNumberish[]; }; -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; +export type StateConfigStructOutput = [string[], BigNumber[]] & { sources: string[]; constants: BigNumber[]; - arguments: BigNumber[]; }; -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; }; export interface CombineTierInterface extends utils.Interface { functions: { - "initialize((bytes[],uint256[],uint256,uint256))": FunctionFragment; + "fnPtrs()": FunctionFragment; + "initialize((bytes[],uint256[]))": FunctionFragment; "report(address)": FunctionFragment; "setTier(address,uint256,bytes)": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; }; + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", values: [StateConfigStruct] @@ -74,26 +56,32 @@ export interface CombineTierInterface extends utils.Interface { functionFragment: "setTier", values: [string, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; events: { - "Snapshot(address,address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; +export type InitializedEvent = TypedEvent<[number], { version: number }>; -export type SnapshotEventFilter = TypedEventFilter; +export type InitializedEventFilter = TypedEventFilter; export type TierChangeEvent = TypedEvent< [string, string, BigNumber, BigNumber, string], @@ -135,8 +123,10 @@ export interface CombineTier extends BaseContract { removeListener: OnEvent; functions: { + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + initialize( - config_: StateConfigStruct, + sourceConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -148,10 +138,16 @@ export interface CombineTier extends BaseContract { arg2: BytesLike, overrides?: CallOverrides ): Promise<[void]>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; }; + fnPtrs(overrides?: CallOverrides): Promise; + initialize( - config_: StateConfigStruct, + sourceConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -164,9 +160,15 @@ export interface CombineTier extends BaseContract { overrides?: CallOverrides ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + callStatic: { + fnPtrs(overrides?: CallOverrides): Promise; + initialize( - config_: StateConfigStruct, + sourceConfig_: StateConfigStruct, overrides?: CallOverrides ): Promise; @@ -178,15 +180,15 @@ export interface CombineTier extends BaseContract { arg2: BytesLike, overrides?: CallOverrides ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; }; filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; "TierChange(address,address,uint256,uint256,bytes)"( sender?: null, @@ -205,8 +207,10 @@ export interface CombineTier extends BaseContract { }; estimateGas: { + fnPtrs(overrides?: CallOverrides): Promise; + initialize( - config_: StateConfigStruct, + sourceConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -218,11 +222,15 @@ export interface CombineTier extends BaseContract { arg2: BytesLike, overrides?: CallOverrides ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; }; populateTransaction: { + fnPtrs(overrides?: CallOverrides): Promise; + initialize( - config_: StateConfigStruct, + sourceConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -237,5 +245,9 @@ export interface CombineTier extends BaseContract { arg2: BytesLike, overrides?: CallOverrides ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; }; } diff --git a/src/typechain/CombineTierFactory.ts b/src/typechain/CombineTierFactory.ts index 8a46fde..a693b55 100644 --- a/src/typechain/CombineTierFactory.ts +++ b/src/typechain/CombineTierFactory.ts @@ -20,26 +20,17 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export type StateConfigStruct = { sources: BytesLike[]; constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { +export type StateConfigStructOutput = [string[], BigNumber[]] & { sources: string[]; constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; }; export interface CombineTierFactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((bytes[],uint256[],uint256,uint256))": FunctionFragment; + "createChildTyped((bytes[],uint256[]))": FunctionFragment; "implementation()": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -128,7 +119,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -143,7 +134,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -155,7 +146,7 @@ export interface CombineTierFactory extends BaseContract { createChild(data_: BytesLike, overrides?: CallOverrides): Promise; createChildTyped( - config_: StateConfigStruct, + stateConfig_: StateConfigStruct, overrides?: CallOverrides ): Promise; @@ -188,7 +179,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -204,7 +195,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - config_: StateConfigStruct, + stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/ConfigurableRightsPool.ts b/src/typechain/ConfigurableRightsPool.ts deleted file mode 100644 index c8a6ca6..0000000 --- a/src/typechain/ConfigurableRightsPool.ts +++ /dev/null @@ -1,1932 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type PoolParamsStruct = { - poolTokenSymbol: string; - poolTokenName: string; - constituentTokens: string[]; - tokenBalances: BigNumberish[]; - tokenWeights: BigNumberish[]; - swapFee: BigNumberish; -}; - -export type PoolParamsStructOutput = [ - string, - string, - string[], - BigNumber[], - BigNumber[], - BigNumber -] & { - poolTokenSymbol: string; - poolTokenName: string; - constituentTokens: string[]; - tokenBalances: BigNumber[]; - tokenWeights: BigNumber[]; - swapFee: BigNumber; -}; - -export type RightsStruct = { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export type RightsStructOutput = [ - boolean, - boolean, - boolean, - boolean, - boolean, - boolean -] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export interface ConfigurableRightsPoolInterface extends utils.Interface { - functions: { - "DECIMALS()": FunctionFragment; - "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS()": FunctionFragment; - "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD()": FunctionFragment; - "NAME()": FunctionFragment; - "addTokenTimeLockInBlocks()": FunctionFragment; - "allowance(address,address)": FunctionFragment; - "applyAddToken()": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "bFactory()": FunctionFragment; - "bPool()": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "bspCap()": FunctionFragment; - "burnPoolShareFromLib(uint256)": FunctionFragment; - "canProvideLiquidity(address)": FunctionFragment; - "commitAddToken(address,uint256,uint256)": FunctionFragment; - "createPool(uint256)": FunctionFragment; - "decimals()": FunctionFragment; - "decreaseApproval(address,uint256)": FunctionFragment; - "exitPool(uint256,uint256[])": FunctionFragment; - "exitswapExternAmountOut(address,uint256,uint256)": FunctionFragment; - "exitswapPoolAmountIn(address,uint256,uint256)": FunctionFragment; - "getBalancerSafeMathVersion()": FunctionFragment; - "getController()": FunctionFragment; - "getDenormalizedWeight(address)": FunctionFragment; - "getRightsManagerVersion()": FunctionFragment; - "getSmartPoolManagerVersion()": FunctionFragment; - "gradualUpdate()": FunctionFragment; - "hasPermission(uint8)": FunctionFragment; - "increaseApproval(address,uint256)": FunctionFragment; - "isPublicSwap()": FunctionFragment; - "joinPool(uint256,uint256[])": FunctionFragment; - "joinswapExternAmountIn(address,uint256,uint256)": FunctionFragment; - "joinswapPoolAmountOut(address,uint256,uint256)": FunctionFragment; - "minimumWeightChangeBlockPeriod()": FunctionFragment; - "mintPoolShareFromLib(uint256)": FunctionFragment; - "name()": FunctionFragment; - "newToken()": FunctionFragment; - "pokeWeights()": FunctionFragment; - "pullPoolShareFromLib(address,uint256)": FunctionFragment; - "pushPoolShareFromLib(address,uint256)": FunctionFragment; - "removeToken(address)": FunctionFragment; - "removeWhitelistedLiquidityProvider(address)": FunctionFragment; - "rights()": FunctionFragment; - "setCap(uint256)": FunctionFragment; - "setController(address)": FunctionFragment; - "setPublicSwap(bool)": FunctionFragment; - "setSwapFee(uint256)": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "updateWeight(address,uint256)": FunctionFragment; - "updateWeightsGradually(uint256[],uint256,uint256)": FunctionFragment; - "whitelistLiquidityProvider(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "DECIMALS", values?: undefined): string; - encodeFunctionData( - functionFragment: "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "NAME", values?: undefined): string; - encodeFunctionData( - functionFragment: "addTokenTimeLockInBlocks", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "allowance", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "applyAddToken", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "bFactory", values?: undefined): string; - encodeFunctionData(functionFragment: "bPool", values?: undefined): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData(functionFragment: "bspCap", values?: undefined): string; - encodeFunctionData( - functionFragment: "burnPoolShareFromLib", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "canProvideLiquidity", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "commitAddToken", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "createPool", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseApproval", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "exitPool", - values: [BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "exitswapExternAmountOut", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "exitswapPoolAmountIn", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "getBalancerSafeMathVersion", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getController", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getDenormalizedWeight", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "getRightsManagerVersion", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getSmartPoolManagerVersion", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "gradualUpdate", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "hasPermission", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "increaseApproval", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isPublicSwap", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "joinPool", - values: [BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "joinswapExternAmountIn", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "joinswapPoolAmountOut", - values: [string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "minimumWeightChangeBlockPeriod", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "mintPoolShareFromLib", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "newToken", values?: undefined): string; - encodeFunctionData( - functionFragment: "pokeWeights", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "pullPoolShareFromLib", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "pushPoolShareFromLib", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "removeToken", values: [string]): string; - encodeFunctionData( - functionFragment: "removeWhitelistedLiquidityProvider", - values: [string] - ): string; - encodeFunctionData(functionFragment: "rights", values?: undefined): string; - encodeFunctionData( - functionFragment: "setCap", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setController", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "setPublicSwap", - values: [boolean] - ): string; - encodeFunctionData( - functionFragment: "setSwapFee", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "updateWeight", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "updateWeightsGradually", - values: [BigNumberish[], BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "whitelistLiquidityProvider", - values: [string] - ): string; - - decodeFunctionResult(functionFragment: "DECIMALS", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "NAME", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "addTokenTimeLockInBlocks", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "applyAddToken", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "bFactory", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "bPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "bspCap", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "burnPoolShareFromLib", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "canProvideLiquidity", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "commitAddToken", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "createPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseApproval", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "exitPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "exitswapExternAmountOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "exitswapPoolAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getBalancerSafeMathVersion", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getController", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getDenormalizedWeight", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getRightsManagerVersion", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getSmartPoolManagerVersion", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "gradualUpdate", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "hasPermission", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "increaseApproval", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isPublicSwap", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "joinPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "joinswapExternAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "joinswapPoolAmountOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "minimumWeightChangeBlockPeriod", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "mintPoolShareFromLib", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "newToken", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "pokeWeights", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "pullPoolShareFromLib", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "pushPoolShareFromLib", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "removeToken", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "removeWhitelistedLiquidityProvider", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "rights", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setCap", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setController", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setPublicSwap", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setSwapFee", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateWeight", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateWeightsGradually", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "whitelistLiquidityProvider", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "CapChanged(address,uint256,uint256)": EventFragment; - "LogCall(bytes4,address,bytes)": EventFragment; - "LogExit(address,address,uint256)": EventFragment; - "LogJoin(address,address,uint256)": EventFragment; - "NewTokenCommitted(address,address,address)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "CapChanged"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogCall"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogExit"): EventFragment; - getEvent(nameOrSignatureOrTopic: "LogJoin"): EventFragment; - getEvent(nameOrSignatureOrTopic: "NewTokenCommitted"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; spender: string; value: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type CapChangedEvent = TypedEvent< - [string, BigNumber, BigNumber], - { caller: string; oldCap: BigNumber; newCap: BigNumber } ->; - -export type CapChangedEventFilter = TypedEventFilter; - -export type LogCallEvent = TypedEvent< - [string, string, string], - { sig: string; caller: string; data: string } ->; - -export type LogCallEventFilter = TypedEventFilter; - -export type LogExitEvent = TypedEvent< - [string, string, BigNumber], - { caller: string; tokenOut: string; tokenAmountOut: BigNumber } ->; - -export type LogExitEventFilter = TypedEventFilter; - -export type LogJoinEvent = TypedEvent< - [string, string, BigNumber], - { caller: string; tokenIn: string; tokenAmountIn: BigNumber } ->; - -export type LogJoinEventFilter = TypedEventFilter; - -export type NewTokenCommittedEvent = TypedEvent< - [string, string, string], - { token: string; pool: string; caller: string } ->; - -export type NewTokenCommittedEventFilter = - TypedEventFilter; - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; value: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ConfigurableRightsPool extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ConfigurableRightsPoolInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DECIMALS(overrides?: CallOverrides): Promise<[number]>; - - DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS( - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD( - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - NAME(overrides?: CallOverrides): Promise<[string]>; - - addTokenTimeLockInBlocks(overrides?: CallOverrides): Promise<[BigNumber]>; - - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - applyAddToken( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - bFactory(overrides?: CallOverrides): Promise<[string]>; - - bPool(overrides?: CallOverrides): Promise<[string]>; - - balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - bspCap(overrides?: CallOverrides): Promise<[BigNumber]>; - - burnPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - canProvideLiquidity( - provider: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - commitAddToken( - token: string, - balance: BigNumberish, - denormalizedWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256)"( - initialSupply: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256,uint256,uint256)"( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalancerSafeMathVersion(overrides?: CallOverrides): Promise<[string]>; - - getController(overrides?: CallOverrides): Promise<[string]>; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - getRightsManagerVersion(overrides?: CallOverrides): Promise<[string]>; - - getSmartPoolManagerVersion(overrides?: CallOverrides): Promise<[string]>; - - gradualUpdate( - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { startBlock: BigNumber; endBlock: BigNumber } - >; - - hasPermission( - permission: BigNumberish, - overrides?: CallOverrides - ): Promise<[boolean]>; - - increaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise<[boolean]>; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - minimumWeightChangeBlockPeriod( - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - mintPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - newToken( - overrides?: CallOverrides - ): Promise< - [string, boolean, BigNumber, BigNumber, BigNumber] & { - addr: string; - isCommitted: boolean; - commitBlock: BigNumber; - denorm: BigNumber; - balance: BigNumber; - } - >; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pullPoolShareFromLib( - from: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pushPoolShareFromLib( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeToken( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeWhitelistedLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - rights( - overrides?: CallOverrides - ): Promise< - [boolean, boolean, boolean, boolean, boolean, boolean] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; - } - >; - - setCap( - newCap: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - publicSwap: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeight( - token: string, - newWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - whitelistLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - DECIMALS(overrides?: CallOverrides): Promise; - - DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD( - overrides?: CallOverrides - ): Promise; - - NAME(overrides?: CallOverrides): Promise; - - addTokenTimeLockInBlocks(overrides?: CallOverrides): Promise; - - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - applyAddToken( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - bspCap(overrides?: CallOverrides): Promise; - - burnPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - canProvideLiquidity( - provider: string, - overrides?: CallOverrides - ): Promise; - - commitAddToken( - token: string, - balance: BigNumberish, - denormalizedWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256)"( - initialSupply: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256,uint256,uint256)"( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalancerSafeMathVersion(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getRightsManagerVersion(overrides?: CallOverrides): Promise; - - getSmartPoolManagerVersion(overrides?: CallOverrides): Promise; - - gradualUpdate( - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { startBlock: BigNumber; endBlock: BigNumber } - >; - - hasPermission( - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - - increaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - minimumWeightChangeBlockPeriod(overrides?: CallOverrides): Promise; - - mintPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newToken( - overrides?: CallOverrides - ): Promise< - [string, boolean, BigNumber, BigNumber, BigNumber] & { - addr: string; - isCommitted: boolean; - commitBlock: BigNumber; - denorm: BigNumber; - balance: BigNumber; - } - >; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pullPoolShareFromLib( - from: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pushPoolShareFromLib( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeToken( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeWhitelistedLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - rights( - overrides?: CallOverrides - ): Promise< - [boolean, boolean, boolean, boolean, boolean, boolean] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; - } - >; - - setCap( - newCap: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - publicSwap: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeight( - token: string, - newWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - whitelistLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - DECIMALS(overrides?: CallOverrides): Promise; - - DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD( - overrides?: CallOverrides - ): Promise; - - NAME(overrides?: CallOverrides): Promise; - - addTokenTimeLockInBlocks(overrides?: CallOverrides): Promise; - - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - applyAddToken(overrides?: CallOverrides): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - bspCap(overrides?: CallOverrides): Promise; - - burnPoolShareFromLib( - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - canProvideLiquidity( - provider: string, - overrides?: CallOverrides - ): Promise; - - commitAddToken( - token: string, - balance: BigNumberish, - denormalizedWeight: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "createPool(uint256)"( - initialSupply: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "createPool(uint256,uint256,uint256)"( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: CallOverrides - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - spender: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - getBalancerSafeMathVersion(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getRightsManagerVersion(overrides?: CallOverrides): Promise; - - getSmartPoolManagerVersion(overrides?: CallOverrides): Promise; - - gradualUpdate( - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { startBlock: BigNumber; endBlock: BigNumber } - >; - - hasPermission( - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - - increaseApproval( - spender: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - minimumWeightChangeBlockPeriod( - overrides?: CallOverrides - ): Promise; - - mintPoolShareFromLib( - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newToken( - overrides?: CallOverrides - ): Promise< - [string, boolean, BigNumber, BigNumber, BigNumber] & { - addr: string; - isCommitted: boolean; - commitBlock: BigNumber; - denorm: BigNumber; - balance: BigNumber; - } - >; - - pokeWeights(overrides?: CallOverrides): Promise; - - pullPoolShareFromLib( - from: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - pushPoolShareFromLib( - to: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - removeToken(token: string, overrides?: CallOverrides): Promise; - - removeWhitelistedLiquidityProvider( - provider: string, - overrides?: CallOverrides - ): Promise; - - rights( - overrides?: CallOverrides - ): Promise< - [boolean, boolean, boolean, boolean, boolean, boolean] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; - } - >; - - setCap(newCap: BigNumberish, overrides?: CallOverrides): Promise; - - setController(newOwner: string, overrides?: CallOverrides): Promise; - - setPublicSwap( - publicSwap: boolean, - overrides?: CallOverrides - ): Promise; - - setSwapFee(swapFee: BigNumberish, overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - updateWeight( - token: string, - newWeight: BigNumberish, - overrides?: CallOverrides - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: CallOverrides - ): Promise; - - whitelistLiquidityProvider( - provider: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - spender?: string | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - spender?: string | null, - value?: null - ): ApprovalEventFilter; - - "CapChanged(address,uint256,uint256)"( - caller?: string | null, - oldCap?: null, - newCap?: null - ): CapChangedEventFilter; - CapChanged( - caller?: string | null, - oldCap?: null, - newCap?: null - ): CapChangedEventFilter; - - "LogCall(bytes4,address,bytes)"( - sig?: BytesLike | null, - caller?: string | null, - data?: null - ): LogCallEventFilter; - LogCall( - sig?: BytesLike | null, - caller?: string | null, - data?: null - ): LogCallEventFilter; - - "LogExit(address,address,uint256)"( - caller?: string | null, - tokenOut?: string | null, - tokenAmountOut?: null - ): LogExitEventFilter; - LogExit( - caller?: string | null, - tokenOut?: string | null, - tokenAmountOut?: null - ): LogExitEventFilter; - - "LogJoin(address,address,uint256)"( - caller?: string | null, - tokenIn?: string | null, - tokenAmountIn?: null - ): LogJoinEventFilter; - LogJoin( - caller?: string | null, - tokenIn?: string | null, - tokenAmountIn?: null - ): LogJoinEventFilter; - - "NewTokenCommitted(address,address,address)"( - token?: string | null, - pool?: string | null, - caller?: string | null - ): NewTokenCommittedEventFilter; - NewTokenCommitted( - token?: string | null, - pool?: string | null, - caller?: string | null - ): NewTokenCommittedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - value?: null - ): TransferEventFilter; - }; - - estimateGas: { - DECIMALS(overrides?: CallOverrides): Promise; - - DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD( - overrides?: CallOverrides - ): Promise; - - NAME(overrides?: CallOverrides): Promise; - - addTokenTimeLockInBlocks(overrides?: CallOverrides): Promise; - - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - applyAddToken( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - bspCap(overrides?: CallOverrides): Promise; - - burnPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - canProvideLiquidity( - provider: string, - overrides?: CallOverrides - ): Promise; - - commitAddToken( - token: string, - balance: BigNumberish, - denormalizedWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256)"( - initialSupply: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256,uint256,uint256)"( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalancerSafeMathVersion(overrides?: CallOverrides): Promise; - - getController(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getRightsManagerVersion(overrides?: CallOverrides): Promise; - - getSmartPoolManagerVersion(overrides?: CallOverrides): Promise; - - gradualUpdate(overrides?: CallOverrides): Promise; - - hasPermission( - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - - increaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - minimumWeightChangeBlockPeriod( - overrides?: CallOverrides - ): Promise; - - mintPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newToken(overrides?: CallOverrides): Promise; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pullPoolShareFromLib( - from: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pushPoolShareFromLib( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeToken( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeWhitelistedLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - rights(overrides?: CallOverrides): Promise; - - setCap( - newCap: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - publicSwap: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeight( - token: string, - newWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - whitelistLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - DECIMALS(overrides?: CallOverrides): Promise; - - DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD( - overrides?: CallOverrides - ): Promise; - - NAME(overrides?: CallOverrides): Promise; - - addTokenTimeLockInBlocks( - overrides?: CallOverrides - ): Promise; - - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - applyAddToken( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - balanceOf( - account: string, - overrides?: CallOverrides - ): Promise; - - bspCap(overrides?: CallOverrides): Promise; - - burnPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - canProvideLiquidity( - provider: string, - overrides?: CallOverrides - ): Promise; - - commitAddToken( - token: string, - balance: BigNumberish, - denormalizedWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256)"( - initialSupply: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "createPool(uint256,uint256,uint256)"( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapExternAmountOut( - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitswapPoolAmountIn( - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBalancerSafeMathVersion( - overrides?: CallOverrides - ): Promise; - - getController(overrides?: CallOverrides): Promise; - - getDenormalizedWeight( - token: string, - overrides?: CallOverrides - ): Promise; - - getRightsManagerVersion( - overrides?: CallOverrides - ): Promise; - - getSmartPoolManagerVersion( - overrides?: CallOverrides - ): Promise; - - gradualUpdate(overrides?: CallOverrides): Promise; - - hasPermission( - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - - increaseApproval( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isPublicSwap(overrides?: CallOverrides): Promise; - - joinPool( - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapExternAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - joinswapPoolAmountOut( - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - minimumWeightChangeBlockPeriod( - overrides?: CallOverrides - ): Promise; - - mintPoolShareFromLib( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newToken(overrides?: CallOverrides): Promise; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pullPoolShareFromLib( - from: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pushPoolShareFromLib( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeToken( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - removeWhitelistedLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - rights(overrides?: CallOverrides): Promise; - - setCap( - newCap: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setController( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setPublicSwap( - publicSwap: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSwapFee( - swapFee: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeight( - token: string, - newWeight: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - whitelistLiquidityProvider( - provider: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/BColor.ts b/src/typechain/ContextUpgradeable.ts similarity index 51% rename from src/typechain/BColor.ts rename to src/typechain/ContextUpgradeable.ts index e2ade19..3cb79b3 100644 --- a/src/typechain/BColor.ts +++ b/src/typechain/ContextUpgradeable.ts @@ -1,37 +1,31 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; +import { BaseContract, Signer, utils } from "ethers"; +import { EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface BColorInterface extends utils.Interface { - functions: { - "getColor()": FunctionFragment; +export interface ContextUpgradeableInterface extends utils.Interface { + functions: {}; + + events: { + "Initialized(uint8)": EventFragment; }; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; +export type InitializedEvent = TypedEvent<[number], { version: number }>; - events: {}; -} +export type InitializedEventFilter = TypedEventFilter; -export interface BColor extends BaseContract { +export interface ContextUpgradeable extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: BColorInterface; + interface: ContextUpgradeableInterface; queryFilter( event: TypedEventFilter, @@ -52,23 +46,16 @@ export interface BColor extends BaseContract { once: OnEvent; removeListener: OnEvent; - functions: { - getColor(overrides?: CallOverrides): Promise<[string]>; - }; + functions: {}; - getColor(overrides?: CallOverrides): Promise; + callStatic: {}; - callStatic: { - getColor(overrides?: CallOverrides): Promise; + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; }; - filters: {}; + estimateGas: {}; - estimateGas: { - getColor(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - getColor(overrides?: CallOverrides): Promise; - }; + populateTransaction: {}; } diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/ERC165Upgradeable.ts index a9123ec..1846fc0 100644 --- a/src/typechain/ERC165Upgradeable.ts +++ b/src/typechain/ERC165Upgradeable.ts @@ -10,7 +10,7 @@ import { Signer, utils, } from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; @@ -29,9 +29,17 @@ export interface ERC165UpgradeableInterface extends utils.Interface { data: BytesLike ): Result; - events: {}; + events: { + "Initialized(uint8)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; } +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export interface ERC165Upgradeable extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; @@ -77,7 +85,10 @@ export interface ERC165Upgradeable extends BaseContract { ): Promise; }; - filters: {}; + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + }; estimateGas: { supportsInterface( diff --git a/src/typechain/ERC20BalanceTier.ts b/src/typechain/ERC20BalanceTier.ts index 2c79ef4..a709916 100644 --- a/src/typechain/ERC20BalanceTier.ts +++ b/src/typechain/ERC20BalanceTier.ts @@ -57,11 +57,13 @@ export interface ERC20BalanceTierInterface extends utils.Interface { events: { "Initialize(address,address)": EventFragment; "InitializeValueTier(address,address)": EventFragment; + "Initialized(uint8)": EventFragment; "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } @@ -80,6 +82,10 @@ export type InitializeValueTierEvent = TypedEvent< export type InitializeValueTierEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TierChangeEvent = TypedEvent< [string, string, BigNumber, BigNumber, string], { @@ -189,6 +195,9 @@ export interface ERC20BalanceTier extends BaseContract { pointer?: null ): InitializeValueTierEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "TierChange(address,address,uint256,uint256,bytes)"( sender?: null, account?: null, diff --git a/src/typechain/ERC20BurnableUpgradeable.ts b/src/typechain/ERC20BurnableUpgradeable.ts index c2804e2..4564259 100644 --- a/src/typechain/ERC20BurnableUpgradeable.ts +++ b/src/typechain/ERC20BurnableUpgradeable.ts @@ -100,10 +100,12 @@ export interface ERC20BurnableUpgradeableInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; + "Initialized(uint8)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -114,6 +116,10 @@ export type ApprovalEvent = TypedEvent< export type ApprovalEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TransferEvent = TypedEvent< [string, string, BigNumber], { from: string; to: string; value: BigNumber } @@ -334,6 +340,9 @@ export interface ERC20BurnableUpgradeable extends BaseContract { value?: null ): ApprovalEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, diff --git a/src/typechain/ERC20Pull.ts b/src/typechain/ERC20Pull.ts deleted file mode 100644 index de0d0e2..0000000 --- a/src/typechain/ERC20Pull.ts +++ /dev/null @@ -1,115 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ERC20PullInterface extends utils.Interface { - functions: { - "pullERC20(uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "pullERC20", - values: [BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "pullERC20", data: BytesLike): Result; - - events: { - "ERC20PullInitialize(address,address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "ERC20PullInitialize"): EventFragment; -} - -export type ERC20PullInitializeEvent = TypedEvent< - [string, string, string], - { sender: string; tokenSender: string; token: string } ->; - -export type ERC20PullInitializeEventFilter = - TypedEventFilter; - -export interface ERC20Pull extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20PullInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - pullERC20(amount_: BigNumberish, overrides?: CallOverrides): Promise; - }; - - filters: { - "ERC20PullInitialize(address,address,address)"( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - ERC20PullInitialize( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - }; - - estimateGas: { - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/ERC20Redeem.ts b/src/typechain/ERC20Redeem.ts index c9b254e..bf1f7ba 100644 --- a/src/typechain/ERC20Redeem.ts +++ b/src/typechain/ERC20Redeem.ts @@ -109,12 +109,14 @@ export interface ERC20RedeemInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; + "Initialized(uint8)": EventFragment; "Redeem(address,address,uint256,uint256)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "TreasuryAsset(address,address)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Redeem"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; getEvent(nameOrSignatureOrTopic: "TreasuryAsset"): EventFragment; @@ -127,6 +129,10 @@ export type ApprovalEvent = TypedEvent< export type ApprovalEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type RedeemEvent = TypedEvent< [string, string, BigNumber, BigNumber], { @@ -381,6 +387,9 @@ export interface ERC20Redeem extends BaseContract { value?: null ): ApprovalEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Redeem(address,address,uint256,uint256)"( sender?: null, treasuryAsset?: null, diff --git a/src/typechain/ERC20TransferTier.ts b/src/typechain/ERC20TransferTier.ts index 29ef0c9..3eabeec 100644 --- a/src/typechain/ERC20TransferTier.ts +++ b/src/typechain/ERC20TransferTier.ts @@ -57,11 +57,13 @@ export interface ERC20TransferTierInterface extends utils.Interface { events: { "Initialize(address,address)": EventFragment; "InitializeValueTier(address,address)": EventFragment; + "Initialized(uint8)": EventFragment; "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } @@ -80,6 +82,10 @@ export type InitializeValueTierEvent = TypedEvent< export type InitializeValueTierEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TierChangeEvent = TypedEvent< [string, string, BigNumber, BigNumber, string], { @@ -189,6 +195,9 @@ export interface ERC20TransferTier extends BaseContract { pointer?: null ): InitializeValueTierEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "TierChange(address,address,uint256,uint256,bytes)"( sender?: null, account?: null, diff --git a/src/typechain/ERC20Upgradeable.ts b/src/typechain/ERC20Upgradeable.ts index 86de2bc..f85f6ee 100644 --- a/src/typechain/ERC20Upgradeable.ts +++ b/src/typechain/ERC20Upgradeable.ts @@ -91,10 +91,12 @@ export interface ERC20UpgradeableInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; + "Initialized(uint8)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -105,6 +107,10 @@ export type ApprovalEvent = TypedEvent< export type ApprovalEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TransferEvent = TypedEvent< [string, string, BigNumber], { from: string; to: string; value: BigNumber } @@ -295,6 +301,9 @@ export interface ERC20Upgradeable extends BaseContract { value?: null ): ApprovalEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, diff --git a/src/typechain/ERC721BalanceTier.ts b/src/typechain/ERC721BalanceTier.ts index 11e2ce1..3f71077 100644 --- a/src/typechain/ERC721BalanceTier.ts +++ b/src/typechain/ERC721BalanceTier.ts @@ -60,11 +60,13 @@ export interface ERC721BalanceTierInterface extends utils.Interface { events: { "Initialize(address,address)": EventFragment; "InitializeValueTier(address,address)": EventFragment; + "Initialized(uint8)": EventFragment; "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } @@ -83,6 +85,10 @@ export type InitializeValueTierEvent = TypedEvent< export type InitializeValueTierEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TierChangeEvent = TypedEvent< [string, string, BigNumber, BigNumber, string], { @@ -198,6 +204,9 @@ export interface ERC721BalanceTier extends BaseContract { pointer?: null ): InitializeValueTierEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "TierChange(address,address,uint256,uint256,bytes)"( sender?: null, account?: null, diff --git a/src/typechain/ERC721Upgradeable.ts b/src/typechain/ERC721Upgradeable.ts index 2de721b..06721a3 100644 --- a/src/typechain/ERC721Upgradeable.ts +++ b/src/typechain/ERC721Upgradeable.ts @@ -107,11 +107,13 @@ export interface ERC721UpgradeableInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "ApprovalForAll(address,address,bool)": EventFragment; + "Initialized(uint8)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -129,6 +131,10 @@ export type ApprovalForAllEvent = TypedEvent< export type ApprovalForAllEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TransferEvent = TypedEvent< [string, string, BigNumber], { from: string; to: string; tokenId: BigNumber } @@ -375,6 +381,9 @@ export interface ERC721Upgradeable extends BaseContract { approved?: null ): ApprovalForAllEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, diff --git a/src/typechain/EmissionsERC20.ts b/src/typechain/EmissionsERC20.ts index e0a4dd7..5a7f199 100644 --- a/src/typechain/EmissionsERC20.ts +++ b/src/typechain/EmissionsERC20.ts @@ -17,28 +17,6 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - export type ERC20ConfigStruct = { name: string; symbol: string; @@ -56,20 +34,11 @@ export type ERC20ConfigStructOutput = [string, string, string, BigNumber] & { export type StateConfigStruct = { sources: BytesLike[]; constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { +export type StateConfigStructOutput = [string[], BigNumber[]] & { sources: string[]; constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; }; export type EmissionsERC20ConfigStruct = { @@ -88,6 +57,16 @@ export type EmissionsERC20ConfigStructOutput = [ vmStateConfig: StateConfigStructOutput; }; +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + export interface EmissionsERC20Interface extends utils.Interface { functions: { "allowDelegatedClaims()": FunctionFragment; @@ -98,11 +77,13 @@ export interface EmissionsERC20Interface extends utils.Interface { "claim(address,bytes)": FunctionFragment; "decimals()": FunctionFragment; "decreaseAllowance(address,uint256)": FunctionFragment; + "fnPtrs()": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; - "initialize((bool,(string,string,address,uint256),(bytes[],uint256[],uint256,uint256)))": FunctionFragment; + "initialize((bool,(string,string,address,uint256),(bytes[],uint256[])))": FunctionFragment; "name()": FunctionFragment; "report(address)": FunctionFragment; "setTier(address,uint256,bytes)": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -135,6 +116,7 @@ export interface EmissionsERC20Interface extends utils.Interface { functionFragment: "decreaseAllowance", values: [string, BigNumberish] ): string; + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "increaseAllowance", values: [string, BigNumberish] @@ -149,6 +131,10 @@ export interface EmissionsERC20Interface extends utils.Interface { functionFragment: "setTier", values: [string, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -180,6 +166,7 @@ export interface EmissionsERC20Interface extends utils.Interface { functionFragment: "decreaseAllowance", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult( functionFragment: "increaseAllowance", data: BytesLike @@ -188,6 +175,10 @@ export interface EmissionsERC20Interface extends utils.Interface { decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -203,7 +194,7 @@ export interface EmissionsERC20Interface extends utils.Interface { "Approval(address,address,uint256)": EventFragment; "Claim(address,address,bytes)": EventFragment; "Initialize(address,bool)": EventFragment; - "Snapshot(address,address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "TierChange(address,address,uint256,uint256,bytes)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; @@ -211,7 +202,7 @@ export interface EmissionsERC20Interface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; getEvent(nameOrSignatureOrTopic: "Claim"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -237,12 +228,9 @@ export type InitializeEvent = TypedEvent< export type InitializeEventFilter = TypedEventFilter; -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; +export type InitializedEvent = TypedEvent<[number], { version: number }>; -export type SnapshotEventFilter = TypedEventFilter; +export type InitializedEventFilter = TypedEventFilter; export type TierChangeEvent = TypedEvent< [string, string, BigNumber, BigNumber, string], @@ -326,6 +314,8 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -348,6 +338,10 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise<[void]>; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -401,6 +395,8 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -423,6 +419,10 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -476,6 +476,8 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -498,6 +500,10 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -544,12 +550,8 @@ export interface EmissionsERC20 extends BaseContract { allowDelegatedClaims?: null ): InitializeEventFilter; - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; "TierChange(address,address,uint256,uint256,bytes)"( sender?: null, @@ -614,6 +616,8 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -636,6 +640,8 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; + storageOpcodesRange(overrides?: CallOverrides): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -695,6 +701,8 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -720,6 +728,10 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; diff --git a/src/typechain/EmissionsERC20Factory.ts b/src/typechain/EmissionsERC20Factory.ts index 14515c2..e56828f 100644 --- a/src/typechain/EmissionsERC20Factory.ts +++ b/src/typechain/EmissionsERC20Factory.ts @@ -34,20 +34,11 @@ export type ERC20ConfigStructOutput = [string, string, string, BigNumber] & { export type StateConfigStruct = { sources: BytesLike[]; constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { +export type StateConfigStructOutput = [string[], BigNumber[]] & { sources: string[]; constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; }; export type EmissionsERC20ConfigStruct = { @@ -69,7 +60,7 @@ export type EmissionsERC20ConfigStructOutput = [ export interface EmissionsERC20FactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((bool,(string,string,address,uint256),(bytes[],uint256[],uint256,uint256)))": FunctionFragment; + "createChildTyped((bool,(string,string,address,uint256),(bytes[],uint256[])))": FunctionFragment; "implementation()": FunctionFragment; "isChild(address)": FunctionFragment; }; diff --git a/src/typechain/FixedPointMathOpsTest.ts b/src/typechain/FixedPointMathOpsTest.ts deleted file mode 100644 index a2a9dcd..0000000 --- a/src/typechain/FixedPointMathOpsTest.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; -}; - -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; -}; - -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - -export interface FixedPointMathOpsTestInterface extends utils.Interface { - functions: { - "run()": FunctionFragment; - "runState()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "run", values?: undefined): string; - encodeFunctionData(functionFragment: "runState", values?: undefined): string; - - decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runState", data: BytesLike): Result; - - events: { - "Snapshot(address,address,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; -} - -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - -export interface FixedPointMathOpsTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: FixedPointMathOpsTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - run(overrides?: CallOverrides): Promise<[BigNumber]>; - - runState(overrides?: CallOverrides): Promise<[StateStructOutput]>; - }; - - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - - callStatic: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - }; - - estimateGas: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/FnPtrsTest.ts b/src/typechain/FnPtrsTest.ts new file mode 100644 index 0000000..3a01258 --- /dev/null +++ b/src/typechain/FnPtrsTest.ts @@ -0,0 +1,155 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface FnPtrsTestInterface extends utils.Interface { + functions: { + "fnPtrs()": FunctionFragment; + "initialize((bytes[],uint256[]))": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "initialize", + values: [StateConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + + events: {}; +} + +export interface FnPtrsTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FnPtrsTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + }; + + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/GatedNFT.ts b/src/typechain/GatedNFT.ts index 279f9d2..d24ff61 100644 --- a/src/typechain/GatedNFT.ts +++ b/src/typechain/GatedNFT.ts @@ -206,6 +206,7 @@ export interface GatedNFTInterface extends utils.Interface { "Approval(address,address,uint256)": EventFragment; "ApprovalForAll(address,address,bool)": EventFragment; "CreatedGatedNFT(address,address,tuple,address,uint256,uint256,uint8,uint256,address,uint256)": EventFragment; + "Initialized(uint8)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; "Transfer(address,address,uint256)": EventFragment; "UpdatedRoyaltyRecipient(address)": EventFragment; @@ -214,6 +215,7 @@ export interface GatedNFTInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; getEvent(nameOrSignatureOrTopic: "CreatedGatedNFT"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; getEvent(nameOrSignatureOrTopic: "UpdatedRoyaltyRecipient"): EventFragment; @@ -262,6 +264,10 @@ export type CreatedGatedNFTEvent = TypedEvent< export type CreatedGatedNFTEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type OwnershipTransferredEvent = TypedEvent< [string, string], { previousOwner: string; newOwner: string } @@ -682,6 +688,9 @@ export interface GatedNFT extends BaseContract { royaltyBPS?: null ): CreatedGatedNFTEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "OwnershipTransferred(address,address)"( previousOwner?: string | null, newOwner?: string | null diff --git a/src/typechain/IBFactory.ts b/src/typechain/IBFactory.ts deleted file mode 100644 index 1cbcff6..0000000 --- a/src/typechain/IBFactory.ts +++ /dev/null @@ -1,163 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IBFactoryInterface extends utils.Interface { - functions: { - "collect(address)": FunctionFragment; - "getBLabs()": FunctionFragment; - "isBPool(address)": FunctionFragment; - "newBPool()": FunctionFragment; - "setBLabs(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "collect", values: [string]): string; - encodeFunctionData(functionFragment: "getBLabs", values?: undefined): string; - encodeFunctionData(functionFragment: "isBPool", values: [string]): string; - encodeFunctionData(functionFragment: "newBPool", values?: undefined): string; - encodeFunctionData(functionFragment: "setBLabs", values: [string]): string; - - decodeFunctionResult(functionFragment: "collect", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getBLabs", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "isBPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "newBPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setBLabs", data: BytesLike): Result; - - events: {}; -} - -export interface IBFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IBFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise<[string]>; - - isBPool(b: string, overrides?: CallOverrides): Promise<[boolean]>; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - isBPool(b: string, overrides?: CallOverrides): Promise; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - collect(pool: string, overrides?: CallOverrides): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - isBPool(b: string, overrides?: CallOverrides): Promise; - - newBPool(overrides?: CallOverrides): Promise; - - setBLabs(b: string, overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - isBPool(b: string, overrides?: CallOverrides): Promise; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - collect( - pool: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getBLabs(overrides?: CallOverrides): Promise; - - isBPool( - b: string, - overrides?: CallOverrides - ): Promise; - - newBPool( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setBLabs( - b: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IBPool.ts b/src/typechain/IBPool.ts deleted file mode 100644 index 3c94ea9..0000000 --- a/src/typechain/IBPool.ts +++ /dev/null @@ -1,164 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IBPoolInterface extends utils.Interface { - functions: { - "getBalance(address)": FunctionFragment; - "gulp(address)": FunctionFragment; - "swapExactAmountIn(address,uint256,address,uint256,uint256)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "getBalance", values: [string]): string; - encodeFunctionData(functionFragment: "gulp", values: [string]): string; - encodeFunctionData( - functionFragment: "swapExactAmountIn", - values: [string, BigNumberish, string, BigNumberish, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "getBalance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "gulp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "swapExactAmountIn", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IBPool extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IBPoolInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - getBalance(token: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - getBalance(token: string, overrides?: CallOverrides): Promise; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - getBalance(token: string, overrides?: CallOverrides): Promise; - - gulp(token: string, overrides?: CallOverrides): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { - tokenAmountOut: BigNumber; - spotPriceAfter: BigNumber; - } - >; - }; - - filters: {}; - - estimateGas: { - getBalance(token: string, overrides?: CallOverrides): Promise; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - getBalance( - token: string, - overrides?: CallOverrides - ): Promise; - - gulp( - token: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - swapExactAmountIn( - tokenIn: string, - tokenAmountIn: BigNumberish, - tokenOut: string, - minAmountOut: BigNumberish, - maxPrice: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IBalancerConstants.ts b/src/typechain/IBalancerConstants.ts deleted file mode 100644 index 7146808..0000000 --- a/src/typechain/IBalancerConstants.ts +++ /dev/null @@ -1,329 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IBalancerConstantsInterface extends utils.Interface { - functions: { - "BONE()": FunctionFragment; - "EXIT_FEE()": FunctionFragment; - "MAX_ASSET_LIMIT()": FunctionFragment; - "MAX_BALANCE()": FunctionFragment; - "MAX_FEE()": FunctionFragment; - "MAX_IN_RATIO()": FunctionFragment; - "MAX_OUT_RATIO()": FunctionFragment; - "MAX_POOL_SUPPLY()": FunctionFragment; - "MAX_TOTAL_WEIGHT()": FunctionFragment; - "MAX_UINT()": FunctionFragment; - "MAX_WEIGHT()": FunctionFragment; - "MIN_ASSET_LIMIT()": FunctionFragment; - "MIN_BALANCE()": FunctionFragment; - "MIN_FEE()": FunctionFragment; - "MIN_POOL_SUPPLY()": FunctionFragment; - "MIN_WEIGHT()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "BONE", values?: undefined): string; - encodeFunctionData(functionFragment: "EXIT_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_ASSET_LIMIT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_BALANCE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_IN_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_OUT_RATIO", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MAX_TOTAL_WEIGHT", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MAX_UINT", values?: undefined): string; - encodeFunctionData( - functionFragment: "MAX_WEIGHT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_ASSET_LIMIT", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_BALANCE", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "MIN_FEE", values?: undefined): string; - encodeFunctionData( - functionFragment: "MIN_POOL_SUPPLY", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "MIN_WEIGHT", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "BONE", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "EXIT_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_ASSET_LIMIT", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MAX_IN_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_OUT_RATIO", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MAX_TOTAL_WEIGHT", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MAX_UINT", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "MAX_WEIGHT", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_ASSET_LIMIT", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "MIN_BALANCE", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_FEE", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "MIN_POOL_SUPPLY", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "MIN_WEIGHT", data: BytesLike): Result; - - events: {}; -} - -export interface IBalancerConstants extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IBalancerConstantsInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - BONE(overrides?: CallOverrides): Promise<[BigNumber]>; - - EXIT_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_UINT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MAX_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_BALANCE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_FEE(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - - MIN_WEIGHT(overrides?: CallOverrides): Promise<[BigNumber]>; - }; - - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - - callStatic: { - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - BONE(overrides?: CallOverrides): Promise; - - EXIT_FEE(overrides?: CallOverrides): Promise; - - MAX_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MAX_BALANCE(overrides?: CallOverrides): Promise; - - MAX_FEE(overrides?: CallOverrides): Promise; - - MAX_IN_RATIO(overrides?: CallOverrides): Promise; - - MAX_OUT_RATIO(overrides?: CallOverrides): Promise; - - MAX_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MAX_TOTAL_WEIGHT(overrides?: CallOverrides): Promise; - - MAX_UINT(overrides?: CallOverrides): Promise; - - MAX_WEIGHT(overrides?: CallOverrides): Promise; - - MIN_ASSET_LIMIT(overrides?: CallOverrides): Promise; - - MIN_BALANCE(overrides?: CallOverrides): Promise; - - MIN_FEE(overrides?: CallOverrides): Promise; - - MIN_POOL_SUPPLY(overrides?: CallOverrides): Promise; - - MIN_WEIGHT(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/ICRPFactory.ts b/src/typechain/ICRPFactory.ts deleted file mode 100644 index c0a5b53..0000000 --- a/src/typechain/ICRPFactory.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type PoolParamsStruct = { - poolTokenSymbol: string; - poolTokenName: string; - constituentTokens: string[]; - tokenBalances: BigNumberish[]; - tokenWeights: BigNumberish[]; - swapFee: BigNumberish; -}; - -export type PoolParamsStructOutput = [ - string, - string, - string[], - BigNumber[], - BigNumber[], - BigNumber -] & { - poolTokenSymbol: string; - poolTokenName: string; - constituentTokens: string[]; - tokenBalances: BigNumber[]; - tokenWeights: BigNumber[]; - swapFee: BigNumber; -}; - -export type RightsStruct = { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export type RightsStructOutput = [ - boolean, - boolean, - boolean, - boolean, - boolean, - boolean -] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export interface ICRPFactoryInterface extends utils.Interface { - functions: { - "newCrp(address,(string,string,address[],uint256[],uint256[],uint256),(bool,bool,bool,bool,bool,bool))": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "newCrp", - values: [string, PoolParamsStruct, RightsStruct] - ): string; - - decodeFunctionResult(functionFragment: "newCrp", data: BytesLike): Result; - - events: {}; -} - -export interface ICRPFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ICRPFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - newCrp( - factoryAddress: string, - poolParams: PoolParamsStruct, - rights: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IConfigurableRightsPool.ts b/src/typechain/IConfigurableRightsPool.ts deleted file mode 100644 index c7f3cc5..0000000 --- a/src/typechain/IConfigurableRightsPool.ts +++ /dev/null @@ -1,238 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IConfigurableRightsPoolInterface extends utils.Interface { - functions: { - "bFactory()": FunctionFragment; - "bPool()": FunctionFragment; - "createPool(uint256,uint256,uint256)": FunctionFragment; - "exitPool(uint256,uint256[])": FunctionFragment; - "pokeWeights()": FunctionFragment; - "updateWeightsGradually(uint256[],uint256,uint256)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "bFactory", values?: undefined): string; - encodeFunctionData(functionFragment: "bPool", values?: undefined): string; - encodeFunctionData( - functionFragment: "createPool", - values: [BigNumberish, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "exitPool", - values: [BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "pokeWeights", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "updateWeightsGradually", - values: [BigNumberish[], BigNumberish, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "bFactory", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "bPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "createPool", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "exitPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "pokeWeights", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateWeightsGradually", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IConfigurableRightsPool extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IConfigurableRightsPoolInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - bFactory(overrides?: CallOverrides): Promise<[string]>; - - bPool(overrides?: CallOverrides): Promise<[string]>; - - createPool( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - createPool( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - createPool( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - pokeWeights(overrides?: CallOverrides): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - createPool( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - bFactory(overrides?: CallOverrides): Promise; - - bPool(overrides?: CallOverrides): Promise; - - createPool( - initialSupply: BigNumberish, - minimumWeightChangeBlockPeriodParam: BigNumberish, - addTokenTimeLockInBlocksParam: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - exitPool( - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - pokeWeights( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateWeightsGradually( - newWeights: BigNumberish[], - startBlock: BigNumberish, - endBlock: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/BBronze.ts b/src/typechain/Initializable.ts similarity index 51% rename from src/typechain/BBronze.ts rename to src/typechain/Initializable.ts index 8de1698..eed2569 100644 --- a/src/typechain/BBronze.ts +++ b/src/typechain/Initializable.ts @@ -1,37 +1,31 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; +import { BaseContract, Signer, utils } from "ethers"; +import { EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface BBronzeInterface extends utils.Interface { - functions: { - "getColor()": FunctionFragment; +export interface InitializableInterface extends utils.Interface { + functions: {}; + + events: { + "Initialized(uint8)": EventFragment; }; - encodeFunctionData(functionFragment: "getColor", values?: undefined): string; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} - decodeFunctionResult(functionFragment: "getColor", data: BytesLike): Result; +export type InitializedEvent = TypedEvent<[number], { version: number }>; - events: {}; -} +export type InitializedEventFilter = TypedEventFilter; -export interface BBronze extends BaseContract { +export interface Initializable extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: BBronzeInterface; + interface: InitializableInterface; queryFilter( event: TypedEventFilter, @@ -52,23 +46,16 @@ export interface BBronze extends BaseContract { once: OnEvent; removeListener: OnEvent; - functions: { - getColor(overrides?: CallOverrides): Promise<[string]>; - }; + functions: {}; - getColor(overrides?: CallOverrides): Promise; + callStatic: {}; - callStatic: { - getColor(overrides?: CallOverrides): Promise; + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; }; - filters: {}; + estimateGas: {}; - estimateGas: { - getColor(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - getColor(overrides?: CallOverrides): Promise; - }; + populateTransaction: {}; } diff --git a/src/typechain/LogicOpsTest.ts b/src/typechain/LogicOpsTest.ts deleted file mode 100644 index 574e2e6..0000000 --- a/src/typechain/LogicOpsTest.ts +++ /dev/null @@ -1,147 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; -}; - -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; -}; - -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - -export interface LogicOpsTestInterface extends utils.Interface { - functions: { - "run()": FunctionFragment; - "runState()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "run", values?: undefined): string; - encodeFunctionData(functionFragment: "runState", values?: undefined): string; - - decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runState", data: BytesLike): Result; - - events: { - "Snapshot(address,address,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; -} - -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - -export interface LogicOpsTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: LogicOpsTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - run(overrides?: CallOverrides): Promise<[BigNumber]>; - - runState(overrides?: CallOverrides): Promise<[StateStructOutput]>; - }; - - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - - callStatic: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - }; - - estimateGas: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - run(overrides?: CallOverrides): Promise; - - runState(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/MockTrustISale.ts b/src/typechain/MockTrustISale.ts deleted file mode 100644 index f13eee7..0000000 --- a/src/typechain/MockTrustISale.ts +++ /dev/null @@ -1,286 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface MockTrustISaleInterface extends utils.Interface { - functions: { - "_crp()": FunctionFragment; - "_reserve()": FunctionFragment; - "_saleStatus()": FunctionFragment; - "_token()": FunctionFragment; - "crp()": FunctionFragment; - "reserve()": FunctionFragment; - "saleStatus()": FunctionFragment; - "setCrp(address)": FunctionFragment; - "setReserve(address)": FunctionFragment; - "setSaleStatus(uint8)": FunctionFragment; - "setToken(address)": FunctionFragment; - "token()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "_crp", values?: undefined): string; - encodeFunctionData(functionFragment: "_reserve", values?: undefined): string; - encodeFunctionData( - functionFragment: "_saleStatus", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "_token", values?: undefined): string; - encodeFunctionData(functionFragment: "crp", values?: undefined): string; - encodeFunctionData(functionFragment: "reserve", values?: undefined): string; - encodeFunctionData( - functionFragment: "saleStatus", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "setCrp", values: [string]): string; - encodeFunctionData(functionFragment: "setReserve", values: [string]): string; - encodeFunctionData( - functionFragment: "setSaleStatus", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "setToken", values: [string]): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - - decodeFunctionResult(functionFragment: "_crp", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "_reserve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "_saleStatus", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "_token", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "crp", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "reserve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "saleStatus", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setCrp", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setReserve", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setSaleStatus", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "setToken", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - - events: {}; -} - -export interface MockTrustISale extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: MockTrustISaleInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - _crp(overrides?: CallOverrides): Promise<[string]>; - - _reserve(overrides?: CallOverrides): Promise<[string]>; - - _saleStatus(overrides?: CallOverrides): Promise<[number]>; - - _token(overrides?: CallOverrides): Promise<[string]>; - - crp(overrides?: CallOverrides): Promise<[string]>; - - reserve(overrides?: CallOverrides): Promise<[string]>; - - saleStatus(overrides?: CallOverrides): Promise<[number]>; - - setCrp( - crp_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setReserve( - reserve_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSaleStatus( - saleStatus_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setToken( - token_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise<[string]>; - }; - - _crp(overrides?: CallOverrides): Promise; - - _reserve(overrides?: CallOverrides): Promise; - - _saleStatus(overrides?: CallOverrides): Promise; - - _token(overrides?: CallOverrides): Promise; - - crp(overrides?: CallOverrides): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - setCrp( - crp_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setReserve( - reserve_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSaleStatus( - saleStatus_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setToken( - token_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise; - - callStatic: { - _crp(overrides?: CallOverrides): Promise; - - _reserve(overrides?: CallOverrides): Promise; - - _saleStatus(overrides?: CallOverrides): Promise; - - _token(overrides?: CallOverrides): Promise; - - crp(overrides?: CallOverrides): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - setCrp(crp_: string, overrides?: CallOverrides): Promise; - - setReserve(reserve_: string, overrides?: CallOverrides): Promise; - - setSaleStatus( - saleStatus_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - setToken(token_: string, overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - _crp(overrides?: CallOverrides): Promise; - - _reserve(overrides?: CallOverrides): Promise; - - _saleStatus(overrides?: CallOverrides): Promise; - - _token(overrides?: CallOverrides): Promise; - - crp(overrides?: CallOverrides): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - setCrp( - crp_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setReserve( - reserve_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSaleStatus( - saleStatus_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setToken( - token_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - _crp(overrides?: CallOverrides): Promise; - - _reserve(overrides?: CallOverrides): Promise; - - _saleStatus(overrides?: CallOverrides): Promise; - - _token(overrides?: CallOverrides): Promise; - - crp(overrides?: CallOverrides): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - setCrp( - crp_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setReserve( - reserve_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setSaleStatus( - saleStatus_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setToken( - token_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/OrderBook.ts b/src/typechain/OrderBook.ts new file mode 100644 index 0000000..f25003b --- /dev/null +++ b/src/typechain/OrderBook.ts @@ -0,0 +1,494 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type ClearStateChangeStruct = { + aOutput: BigNumberish; + bOutput: BigNumberish; + aInput: BigNumberish; + bInput: BigNumberish; +}; + +export type ClearStateChangeStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + aOutput: BigNumber; + bOutput: BigNumber; + aInput: BigNumber; + bInput: BigNumber; +}; + +export type OrderStruct = { + owner: string; + inputToken: string; + inputVaultId: BigNumberish; + outputToken: string; + outputVaultId: BigNumberish; + tracking: BigNumberish; + vmState: BytesLike; +}; + +export type OrderStructOutput = [ + string, + string, + BigNumber, + string, + BigNumber, + BigNumber, + string +] & { + owner: string; + inputToken: string; + inputVaultId: BigNumber; + outputToken: string; + outputVaultId: BigNumber; + tracking: BigNumber; + vmState: string; +}; + +export type BountyConfigStruct = { + aVaultId: BigNumberish; + bVaultId: BigNumberish; +}; + +export type BountyConfigStructOutput = [BigNumber, BigNumber] & { + aVaultId: BigNumber; + bVaultId: BigNumber; +}; + +export type DepositConfigStruct = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; + +export type DepositConfigStructOutput = [string, BigNumber, BigNumber] & { + token: string; + vaultId: BigNumber; + amount: BigNumber; +}; + +export type WithdrawConfigStruct = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; + +export type WithdrawConfigStructOutput = [string, BigNumber, BigNumber] & { + token: string; + vaultId: BigNumber; + amount: BigNumber; +}; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type OrderConfigStruct = { + inputToken: string; + inputVaultId: BigNumberish; + outputToken: string; + outputVaultId: BigNumberish; + tracking: BigNumberish; + vmStateConfig: StateConfigStruct; +}; + +export type OrderConfigStructOutput = [ + string, + BigNumber, + string, + BigNumber, + BigNumber, + StateConfigStructOutput +] & { + inputToken: string; + inputVaultId: BigNumber; + outputToken: string; + outputVaultId: BigNumber; + tracking: BigNumber; + vmStateConfig: StateConfigStructOutput; +}; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface OrderBookInterface extends utils.Interface { + functions: { + "addOrder((address,uint256,address,uint256,uint256,(bytes[],uint256[])))": FunctionFragment; + "clear((address,address,uint256,address,uint256,uint256,bytes),(address,address,uint256,address,uint256,uint256,bytes),(uint256,uint256))": FunctionFragment; + "deposit((address,uint256,uint256))": FunctionFragment; + "fnPtrs()": FunctionFragment; + "removeOrder((address,address,uint256,address,uint256,uint256,bytes))": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + "withdraw((address,uint256,uint256))": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "addOrder", + values: [OrderConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "clear", + values: [OrderStruct, OrderStruct, BountyConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [DepositConfigStruct] + ): string; + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "removeOrder", + values: [OrderStruct] + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [WithdrawConfigStruct] + ): string; + + decodeFunctionResult(functionFragment: "addOrder", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "clear", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "removeOrder", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + + events: { + "AfterClear(tuple)": EventFragment; + "Clear(address,tuple,tuple,tuple)": EventFragment; + "Deposit(address,tuple)": EventFragment; + "OrderDead(address,tuple)": EventFragment; + "OrderLive(address,tuple)": EventFragment; + "Withdraw(address,tuple,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "AfterClear"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Clear"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OrderDead"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OrderLive"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; +} + +export type AfterClearEvent = TypedEvent< + [ClearStateChangeStructOutput], + { stateChange: ClearStateChangeStructOutput } +>; + +export type AfterClearEventFilter = TypedEventFilter; + +export type ClearEvent = TypedEvent< + [string, OrderStructOutput, OrderStructOutput, BountyConfigStructOutput], + { + sender: string; + a_: OrderStructOutput; + b_: OrderStructOutput; + bountyConfig: BountyConfigStructOutput; + } +>; + +export type ClearEventFilter = TypedEventFilter; + +export type DepositEvent = TypedEvent< + [string, DepositConfigStructOutput], + { sender: string; config: DepositConfigStructOutput } +>; + +export type DepositEventFilter = TypedEventFilter; + +export type OrderDeadEvent = TypedEvent< + [string, OrderStructOutput], + { sender: string; config: OrderStructOutput } +>; + +export type OrderDeadEventFilter = TypedEventFilter; + +export type OrderLiveEvent = TypedEvent< + [string, OrderStructOutput], + { sender: string; config: OrderStructOutput } +>; + +export type OrderLiveEventFilter = TypedEventFilter; + +export type WithdrawEvent = TypedEvent< + [string, WithdrawConfigStructOutput, BigNumber], + { sender: string; config: WithdrawConfigStructOutput; amount: BigNumber } +>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface OrderBook extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OrderBookInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + addOrder( + orderConfig_: OrderConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + clear( + a_: OrderStruct, + b_: OrderStruct, + bountyConfig_: BountyConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + + removeOrder( + order_: OrderStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + + withdraw( + config_: WithdrawConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + addOrder( + orderConfig_: OrderConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + clear( + a_: OrderStruct, + b_: OrderStruct, + bountyConfig_: BountyConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + fnPtrs(overrides?: CallOverrides): Promise; + + removeOrder( + order_: OrderStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + withdraw( + config_: WithdrawConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + addOrder( + orderConfig_: OrderConfigStruct, + overrides?: CallOverrides + ): Promise; + + clear( + a_: OrderStruct, + b_: OrderStruct, + bountyConfig_: BountyConfigStruct, + overrides?: CallOverrides + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: CallOverrides + ): Promise; + + fnPtrs(overrides?: CallOverrides): Promise; + + removeOrder(order_: OrderStruct, overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + withdraw( + config_: WithdrawConfigStruct, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "AfterClear(tuple)"(stateChange?: null): AfterClearEventFilter; + AfterClear(stateChange?: null): AfterClearEventFilter; + + "Clear(address,tuple,tuple,tuple)"( + sender?: null, + a_?: null, + b_?: null, + bountyConfig?: null + ): ClearEventFilter; + Clear( + sender?: null, + a_?: null, + b_?: null, + bountyConfig?: null + ): ClearEventFilter; + + "Deposit(address,tuple)"(sender?: null, config?: null): DepositEventFilter; + Deposit(sender?: null, config?: null): DepositEventFilter; + + "OrderDead(address,tuple)"( + sender?: null, + config?: null + ): OrderDeadEventFilter; + OrderDead(sender?: null, config?: null): OrderDeadEventFilter; + + "OrderLive(address,tuple)"( + sender?: null, + config?: null + ): OrderLiveEventFilter; + OrderLive(sender?: null, config?: null): OrderLiveEventFilter; + + "Withdraw(address,tuple,uint256)"( + sender?: null, + config?: null, + amount?: null + ): WithdrawEventFilter; + Withdraw(sender?: null, config?: null, amount?: null): WithdrawEventFilter; + }; + + estimateGas: { + addOrder( + orderConfig_: OrderConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + clear( + a_: OrderStruct, + b_: OrderStruct, + bountyConfig_: BountyConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + fnPtrs(overrides?: CallOverrides): Promise; + + removeOrder( + order_: OrderStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + + withdraw( + config_: WithdrawConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + addOrder( + orderConfig_: OrderConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + clear( + a_: OrderStruct, + b_: OrderStruct, + bountyConfig_: BountyConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + config_: DepositConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + fnPtrs(overrides?: CallOverrides): Promise; + + removeOrder( + order_: OrderStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + withdraw( + config_: WithdrawConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/OrderBookStateBuilder.ts b/src/typechain/OrderBookStateBuilder.ts new file mode 100644 index 0000000..fd67549 --- /dev/null +++ b/src/typechain/OrderBookStateBuilder.ts @@ -0,0 +1,256 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type BoundsStruct = { + entrypoint: BigNumberish; + minFinalStackIndex: BigNumberish; + stackIndex: BigNumberish; + stackLength: BigNumberish; + argumentsLength: BigNumberish; + storageLength: BigNumberish; + opcodesLength: BigNumberish; +}; + +export type BoundsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + entrypoint: BigNumber; + minFinalStackIndex: BigNumber; + stackIndex: BigNumber; + stackLength: BigNumber; + argumentsLength: BigNumber; + storageLength: BigNumber; + opcodesLength: BigNumber; +}; + +export interface OrderBookStateBuilderInterface extends utils.Interface { + functions: { + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity((bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "ptrSource(bytes,bytes)": FunctionFragment; + "stackPopsFnPtrs()": FunctionFragment; + "stackPushesFnPtrs()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "buildState", + values: [string, StateConfigStruct, BoundsStruct[]] + ): string; + encodeFunctionData( + functionFragment: "ensureIntegrity", + values: [StateConfigStruct, BoundsStruct] + ): string; + encodeFunctionData( + functionFragment: "ptrSource", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "stackPopsFnPtrs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stackPushesFnPtrs", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "buildState", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ensureIntegrity", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ptrSource", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stackPopsFnPtrs", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stackPushesFnPtrs", + data: BytesLike + ): Result; + + events: {}; +} + +export interface OrderBookStateBuilder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OrderBookStateBuilderInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise<[string]>; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise<[string]>; + }; + + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + + callStatic: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: CallOverrides + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/Ownable.ts b/src/typechain/Ownable.ts deleted file mode 100644 index fa9fd6b..0000000 --- a/src/typechain/Ownable.ts +++ /dev/null @@ -1,158 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface OwnableInterface extends utils.Interface { - functions: { - "owner()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [string] - ): string; - - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - - events: { - "OwnershipTransferred(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; -} - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface Ownable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: OwnableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - owner(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( - newOwner: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - }; - - estimateGas: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/OwnableUpgradeable.ts b/src/typechain/OwnableUpgradeable.ts index 6017655..a703651 100644 --- a/src/typechain/OwnableUpgradeable.ts +++ b/src/typechain/OwnableUpgradeable.ts @@ -44,12 +44,18 @@ export interface OwnableUpgradeableInterface extends utils.Interface { ): Result; events: { + "Initialized(uint8)": EventFragment; "OwnershipTransferred(address,address)": EventFragment; }; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; } +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type OwnershipTransferredEvent = TypedEvent< [string, string], { previousOwner: string; newOwner: string } @@ -120,6 +126,9 @@ export interface OwnableUpgradeable extends BaseContract { }; filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "OwnershipTransferred(address,address)"( previousOwner?: string | null, newOwner?: string | null diff --git a/src/typechain/RainVM.ts b/src/typechain/RainVM.ts new file mode 100644 index 0000000..8cfc496 --- /dev/null +++ b/src/typechain/RainVM.ts @@ -0,0 +1,112 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface RainVMInterface extends utils.Interface { + functions: { + "fnPtrs()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + + events: {}; +} + +export interface RainVM extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: RainVMInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + }; + + fnPtrs(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + fnPtrs(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + fnPtrs(overrides?: CallOverrides): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + fnPtrs(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/RedeemableERC20.ts b/src/typechain/RedeemableERC20.ts index 48f4878..891431c 100644 --- a/src/typechain/RedeemableERC20.ts +++ b/src/typechain/RedeemableERC20.ts @@ -76,7 +76,6 @@ export interface RedeemableERC20Interface extends utils.Interface { "newTreasuryAsset(address)": FunctionFragment; "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; "phaseBlocks(uint256)": FunctionFragment; - "pullERC20(uint256)": FunctionFragment; "redeem(address[],uint256)": FunctionFragment; "symbol()": FunctionFragment; "tier()": FunctionFragment; @@ -148,10 +147,6 @@ export interface RedeemableERC20Interface extends utils.Interface { functionFragment: "phaseBlocks", values: [BigNumberish] ): string; - encodeFunctionData( - functionFragment: "pullERC20", - values: [BigNumberish] - ): string; encodeFunctionData( functionFragment: "redeem", values: [string[], BigNumberish] @@ -225,7 +220,6 @@ export interface RedeemableERC20Interface extends utils.Interface { functionFragment: "phaseBlocks", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "pullERC20", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tier", data: BytesLike): Result; @@ -241,8 +235,8 @@ export interface RedeemableERC20Interface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; - "ERC20PullInitialize(address,address,address)": EventFragment; "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "PhaseScheduled(address,uint256,uint256)": EventFragment; "Receiver(address,address)": EventFragment; "Redeem(address,address,uint256,uint256)": EventFragment; @@ -252,8 +246,8 @@ export interface RedeemableERC20Interface extends utils.Interface { }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ERC20PullInitialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "PhaseScheduled"): EventFragment; getEvent(nameOrSignatureOrTopic: "Receiver"): EventFragment; getEvent(nameOrSignatureOrTopic: "Redeem"): EventFragment; @@ -269,14 +263,6 @@ export type ApprovalEvent = TypedEvent< export type ApprovalEventFilter = TypedEventFilter; -export type ERC20PullInitializeEvent = TypedEvent< - [string, string, string], - { sender: string; tokenSender: string; token: string } ->; - -export type ERC20PullInitializeEventFilter = - TypedEventFilter; - export type InitializeEvent = TypedEvent< [string, RedeemableERC20ConfigStructOutput], { sender: string; config: RedeemableERC20ConfigStructOutput } @@ -284,6 +270,10 @@ export type InitializeEvent = TypedEvent< export type InitializeEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type PhaseScheduledEvent = TypedEvent< [string, BigNumber, BigNumber], { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } @@ -455,11 +445,6 @@ export interface RedeemableERC20 extends BaseContract { overrides?: CallOverrides ): Promise<[number]>; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -577,11 +562,6 @@ export interface RedeemableERC20 extends BaseContract { phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -693,8 +673,6 @@ export interface RedeemableERC20 extends BaseContract { phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - pullERC20(amount_: BigNumberish, overrides?: CallOverrides): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -733,23 +711,15 @@ export interface RedeemableERC20 extends BaseContract { value?: null ): ApprovalEventFilter; - "ERC20PullInitialize(address,address,address)"( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - ERC20PullInitialize( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - "Initialize(address,tuple)"( sender?: null, config?: null ): InitializeEventFilter; Initialize(sender?: null, config?: null): InitializeEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "PhaseScheduled(address,uint256,uint256)"( sender?: null, newPhase?: null, @@ -902,11 +872,6 @@ export interface RedeemableERC20 extends BaseContract { overrides?: CallOverrides ): Promise; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, @@ -1034,11 +999,6 @@ export interface RedeemableERC20 extends BaseContract { overrides?: CallOverrides ): Promise; - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - redeem( treasuryAssets_: string[], redeemAmount_: BigNumberish, diff --git a/src/typechain/SeedERC20Reentrant.ts b/src/typechain/ReserveToken18.ts similarity index 85% rename from src/typechain/SeedERC20Reentrant.ts rename to src/typechain/ReserveToken18.ts index c8e0347..9685630 100644 --- a/src/typechain/SeedERC20Reentrant.ts +++ b/src/typechain/ReserveToken18.ts @@ -17,12 +17,11 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface SeedERC20ReentrantInterface extends utils.Interface { +export interface ReserveToken18Interface extends utils.Interface { functions: { "DECIMALS()": FunctionFragment; "TOTAL_SUPPLY()": FunctionFragment; "addFreezable(address)": FunctionFragment; - "addReentrantTarget(address)": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; @@ -32,9 +31,7 @@ export interface SeedERC20ReentrantInterface extends utils.Interface { "decreaseAllowance(address,uint256)": FunctionFragment; "freezables(address)": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; - "methodTarget()": FunctionFragment; "name()": FunctionFragment; - "setMethodTarget(uint8)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -50,10 +47,6 @@ export interface SeedERC20ReentrantInterface extends utils.Interface { functionFragment: "addFreezable", values: [string] ): string; - encodeFunctionData( - functionFragment: "addReentrantTarget", - values: [string] - ): string; encodeFunctionData( functionFragment: "allowance", values: [string, string] @@ -78,15 +71,7 @@ export interface SeedERC20ReentrantInterface extends utils.Interface { functionFragment: "increaseAllowance", values: [string, BigNumberish] ): string; - encodeFunctionData( - functionFragment: "methodTarget", - values?: undefined - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "setMethodTarget", - values: [BigNumberish] - ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -110,10 +95,6 @@ export interface SeedERC20ReentrantInterface extends utils.Interface { functionFragment: "addFreezable", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "addReentrantTarget", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; @@ -129,15 +110,7 @@ export interface SeedERC20ReentrantInterface extends utils.Interface { functionFragment: "increaseAllowance", data: BytesLike ): Result; - decodeFunctionResult( - functionFragment: "methodTarget", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "setMethodTarget", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -172,12 +145,12 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; -export interface SeedERC20Reentrant extends BaseContract { +export interface ReserveToken18 extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: SeedERC20ReentrantInterface; + interface: ReserveToken18Interface; queryFilter( event: TypedEventFilter, @@ -208,11 +181,6 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - addReentrantTarget( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - allowance( owner: string, spender: string, @@ -254,15 +222,8 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - methodTarget(overrides?: CallOverrides): Promise<[number]>; - name(overrides?: CallOverrides): Promise<[string]>; - setMethodTarget( - methodTarget_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -290,11 +251,6 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - addReentrantTarget( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - allowance( owner: string, spender: string, @@ -336,15 +292,8 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - methodTarget(overrides?: CallOverrides): Promise; - name(overrides?: CallOverrides): Promise; - setMethodTarget( - methodTarget_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -369,11 +318,6 @@ export interface SeedERC20Reentrant extends BaseContract { addFreezable(account_: string, overrides?: CallOverrides): Promise; - addReentrantTarget( - seedERC20Contract_: string, - overrides?: CallOverrides - ): Promise; - allowance( owner: string, spender: string, @@ -412,15 +356,8 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: CallOverrides ): Promise; - methodTarget(overrides?: CallOverrides): Promise; - name(overrides?: CallOverrides): Promise; - setMethodTarget( - methodTarget_: BigNumberish, - overrides?: CallOverrides - ): Promise; - symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -473,11 +410,6 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - addReentrantTarget( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - allowance( owner: string, spender: string, @@ -519,15 +451,8 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - methodTarget(overrides?: CallOverrides): Promise; - name(overrides?: CallOverrides): Promise; - setMethodTarget( - methodTarget_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -556,11 +481,6 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - addReentrantTarget( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - allowance( owner: string, spender: string, @@ -608,15 +528,8 @@ export interface SeedERC20Reentrant extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - methodTarget(overrides?: CallOverrides): Promise; - name(overrides?: CallOverrides): Promise; - setMethodTarget( - methodTarget_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; diff --git a/src/typechain/RightsManager.ts b/src/typechain/RightsManager.ts deleted file mode 100644 index f0c6714..0000000 --- a/src/typechain/RightsManager.ts +++ /dev/null @@ -1,324 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type RightsStruct = { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export type RightsStructOutput = [ - boolean, - boolean, - boolean, - boolean, - boolean, - boolean -] & { - canPauseSwapping: boolean; - canChangeSwapFee: boolean; - canChangeWeights: boolean; - canAddRemoveTokens: boolean; - canWhitelistLPs: boolean; - canChangeCap: boolean; -}; - -export interface RightsManagerInterface extends utils.Interface { - functions: { - "DEFAULT_CAN_ADD_REMOVE_TOKENS()": FunctionFragment; - "DEFAULT_CAN_CHANGE_CAP()": FunctionFragment; - "DEFAULT_CAN_CHANGE_SWAP_FEE()": FunctionFragment; - "DEFAULT_CAN_CHANGE_WEIGHTS()": FunctionFragment; - "DEFAULT_CAN_PAUSE_SWAPPING()": FunctionFragment; - "DEFAULT_CAN_WHITELIST_LPS()": FunctionFragment; - "constructRights(bool[])": FunctionFragment; - "convertRights((bool,bool,bool,bool,bool,bool))": FunctionFragment; - "hasPermission((bool,bool,bool,bool,bool,bool),uint8)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "DEFAULT_CAN_ADD_REMOVE_TOKENS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "DEFAULT_CAN_CHANGE_CAP", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "DEFAULT_CAN_CHANGE_SWAP_FEE", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "DEFAULT_CAN_CHANGE_WEIGHTS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "DEFAULT_CAN_PAUSE_SWAPPING", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "DEFAULT_CAN_WHITELIST_LPS", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "constructRights", - values: [boolean[]] - ): string; - encodeFunctionData( - functionFragment: "convertRights", - values: [RightsStruct] - ): string; - encodeFunctionData( - functionFragment: "hasPermission", - values: [RightsStruct, BigNumberish] - ): string; - - decodeFunctionResult( - functionFragment: "DEFAULT_CAN_ADD_REMOVE_TOKENS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_CAN_CHANGE_CAP", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_CAN_CHANGE_SWAP_FEE", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_CAN_CHANGE_WEIGHTS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_CAN_PAUSE_SWAPPING", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "DEFAULT_CAN_WHITELIST_LPS", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "constructRights", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "convertRights", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "hasPermission", - data: BytesLike - ): Result; - - events: {}; -} - -export interface RightsManager extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: RightsManagerInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - DEFAULT_CAN_ADD_REMOVE_TOKENS( - overrides?: CallOverrides - ): Promise<[boolean]>; - - DEFAULT_CAN_CHANGE_CAP(overrides?: CallOverrides): Promise<[boolean]>; - - DEFAULT_CAN_CHANGE_SWAP_FEE(overrides?: CallOverrides): Promise<[boolean]>; - - DEFAULT_CAN_CHANGE_WEIGHTS(overrides?: CallOverrides): Promise<[boolean]>; - - DEFAULT_CAN_PAUSE_SWAPPING(overrides?: CallOverrides): Promise<[boolean]>; - - DEFAULT_CAN_WHITELIST_LPS(overrides?: CallOverrides): Promise<[boolean]>; - - constructRights( - a: boolean[], - overrides?: CallOverrides - ): Promise<[RightsStructOutput]>; - - convertRights( - rights: RightsStruct, - overrides?: CallOverrides - ): Promise<[boolean[]]>; - - hasPermission( - self: RightsStruct, - permission: BigNumberish, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - DEFAULT_CAN_ADD_REMOVE_TOKENS(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_CAP(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_SWAP_FEE(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_WEIGHTS(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_PAUSE_SWAPPING(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_WHITELIST_LPS(overrides?: CallOverrides): Promise; - - constructRights( - a: boolean[], - overrides?: CallOverrides - ): Promise; - - convertRights( - rights: RightsStruct, - overrides?: CallOverrides - ): Promise; - - hasPermission( - self: RightsStruct, - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - - callStatic: { - DEFAULT_CAN_ADD_REMOVE_TOKENS(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_CAP(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_SWAP_FEE(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_WEIGHTS(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_PAUSE_SWAPPING(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_WHITELIST_LPS(overrides?: CallOverrides): Promise; - - constructRights( - a: boolean[], - overrides?: CallOverrides - ): Promise; - - convertRights( - rights: RightsStruct, - overrides?: CallOverrides - ): Promise; - - hasPermission( - self: RightsStruct, - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - DEFAULT_CAN_ADD_REMOVE_TOKENS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_CAN_CHANGE_CAP(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_SWAP_FEE(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_CHANGE_WEIGHTS(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_PAUSE_SWAPPING(overrides?: CallOverrides): Promise; - - DEFAULT_CAN_WHITELIST_LPS(overrides?: CallOverrides): Promise; - - constructRights( - a: boolean[], - overrides?: CallOverrides - ): Promise; - - convertRights( - rights: RightsStruct, - overrides?: CallOverrides - ): Promise; - - hasPermission( - self: RightsStruct, - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - DEFAULT_CAN_ADD_REMOVE_TOKENS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_CAN_CHANGE_CAP( - overrides?: CallOverrides - ): Promise; - - DEFAULT_CAN_CHANGE_SWAP_FEE( - overrides?: CallOverrides - ): Promise; - - DEFAULT_CAN_CHANGE_WEIGHTS( - overrides?: CallOverrides - ): Promise; - - DEFAULT_CAN_PAUSE_SWAPPING( - overrides?: CallOverrides - ): Promise; - - DEFAULT_CAN_WHITELIST_LPS( - overrides?: CallOverrides - ): Promise; - - constructRights( - a: boolean[], - overrides?: CallOverrides - ): Promise; - - convertRights( - rights: RightsStruct, - overrides?: CallOverrides - ): Promise; - - hasPermission( - self: RightsStruct, - permission: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/Sale.ts b/src/typechain/Sale.ts index dc92159..6e80f6e 100644 --- a/src/typechain/Sale.ts +++ b/src/typechain/Sale.ts @@ -21,16 +21,19 @@ export type SaleConstructorConfigStruct = { maximumSaleTimeout: BigNumberish; maximumCooldownDuration: BigNumberish; redeemableERC20Factory: string; + vmStateBuilder: string; }; export type SaleConstructorConfigStructOutput = [ BigNumber, BigNumber, + string, string ] & { maximumSaleTimeout: BigNumber; maximumCooldownDuration: BigNumber; redeemableERC20Factory: string; + vmStateBuilder: string; }; export type BuyConfigStruct = { @@ -80,26 +83,15 @@ export type ReceiptStructOutput = [ export type StateConfigStruct = { sources: BytesLike[]; constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { +export type StateConfigStructOutput = [string[], BigNumber[]] & { sources: string[]; constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; }; export type SaleConfigStruct = { - canStartStateConfig: StateConfigStruct; - canEndStateConfig: StateConfigStruct; - calculatePriceStateConfig: StateConfigStruct; + vmStateConfig: StateConfigStruct; recipient: string; reserve: string; saleTimeout: BigNumberish; @@ -109,8 +101,6 @@ export type SaleConfigStruct = { }; export type SaleConfigStructOutput = [ - StateConfigStructOutput, - StateConfigStructOutput, StateConfigStructOutput, string, string, @@ -119,9 +109,7 @@ export type SaleConfigStructOutput = [ BigNumber, BigNumber ] & { - canStartStateConfig: StateConfigStructOutput; - canEndStateConfig: StateConfigStructOutput; - calculatePriceStateConfig: StateConfigStructOutput; + vmStateConfig: StateConfigStructOutput; recipient: string; reserve: string; saleTimeout: BigNumber; @@ -130,28 +118,6 @@ export type SaleConfigStructOutput = [ dustSize: BigNumber; }; -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - export type ERC20ConfigStruct = { name: string; symbol: string; @@ -185,19 +151,30 @@ export type SaleRedeemableERC20ConfigStructOutput = [ distributionEndForwardingAddress: string; }; +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + export interface SaleInterface extends utils.Interface { functions: { "buy((address,uint256,uint256,uint256,uint256))": FunctionFragment; - "calculatePrice(uint256)": FunctionFragment; - "canEnd()": FunctionFragment; - "canStart()": FunctionFragment; + "calculateBuy(uint256)": FunctionFragment; + "canLive()": FunctionFragment; "claimFees(address)": FunctionFragment; "end()": FunctionFragment; - "initialize(((bytes[],uint256[],uint256,uint256),(bytes[],uint256[],uint256,uint256),(bytes[],uint256[],uint256,uint256),address,address,uint256,uint256,uint256,uint256),((string,string,address,uint256),address,uint256,address))": FunctionFragment; + "fnPtrs()": FunctionFragment; + "initialize(((bytes[],uint256[]),address,address,uint256,uint256,uint256,uint256),((string,string,address,uint256),address,uint256,address))": FunctionFragment; "refund((uint256,address,uint256,uint256,uint256))": FunctionFragment; "reserve()": FunctionFragment; "saleStatus()": FunctionFragment; "start()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; "timeout()": FunctionFragment; "token()": FunctionFragment; }; @@ -207,13 +184,13 @@ export interface SaleInterface extends utils.Interface { values: [BuyConfigStruct] ): string; encodeFunctionData( - functionFragment: "calculatePrice", + functionFragment: "calculateBuy", values: [BigNumberish] ): string; - encodeFunctionData(functionFragment: "canEnd", values?: undefined): string; - encodeFunctionData(functionFragment: "canStart", values?: undefined): string; + encodeFunctionData(functionFragment: "canLive", values?: undefined): string; encodeFunctionData(functionFragment: "claimFees", values: [string]): string; encodeFunctionData(functionFragment: "end", values?: undefined): string; + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", values: [SaleConfigStruct, SaleRedeemableERC20ConfigStruct] @@ -228,23 +205,31 @@ export interface SaleInterface extends utils.Interface { values?: undefined ): string; encodeFunctionData(functionFragment: "start", values?: undefined): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; encodeFunctionData(functionFragment: "timeout", values?: undefined): string; encodeFunctionData(functionFragment: "token", values?: undefined): string; decodeFunctionResult(functionFragment: "buy", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "calculatePrice", + functionFragment: "calculateBuy", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "canEnd", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "canStart", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "canLive", data: BytesLike): Result; decodeFunctionResult(functionFragment: "claimFees", data: BytesLike): Result; decodeFunctionResult(functionFragment: "end", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "refund", data: BytesLike): Result; decodeFunctionResult(functionFragment: "reserve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "saleStatus", data: BytesLike): Result; decodeFunctionResult(functionFragment: "start", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "timeout", data: BytesLike): Result; decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; @@ -255,8 +240,8 @@ export interface SaleInterface extends utils.Interface { "CooldownTriggered(address,uint256)": EventFragment; "End(address,uint8)": EventFragment; "Initialize(address,tuple,address)": EventFragment; + "Initialized(uint8)": EventFragment; "Refund(address,tuple)": EventFragment; - "Snapshot(address,address,tuple)": EventFragment; "Start(address)": EventFragment; "Timeout(address)": EventFragment; }; @@ -267,8 +252,8 @@ export interface SaleInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "CooldownTriggered"): EventFragment; getEvent(nameOrSignatureOrTopic: "End"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Refund"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; getEvent(nameOrSignatureOrTopic: "Start"): EventFragment; getEvent(nameOrSignatureOrTopic: "Timeout"): EventFragment; } @@ -321,6 +306,10 @@ export type InitializeEvent = TypedEvent< export type InitializeEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type RefundEvent = TypedEvent< [string, ReceiptStructOutput], { sender: string; receipt: ReceiptStructOutput } @@ -328,13 +317,6 @@ export type RefundEvent = TypedEvent< export type RefundEventFilter = TypedEventFilter; -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - export type StartEvent = TypedEvent<[string], { sender: string }>; export type StartEventFilter = TypedEventFilter; @@ -375,14 +357,12 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - calculatePrice( - units_: BigNumberish, + calculateBuy( + targetUnits_: BigNumberish, overrides?: CallOverrides - ): Promise<[BigNumber]>; - - canEnd(overrides?: CallOverrides): Promise<[boolean]>; + ): Promise<[BigNumber, BigNumber]>; - canStart(overrides?: CallOverrides): Promise<[boolean]>; + canLive(overrides?: CallOverrides): Promise<[boolean]>; claimFees( recipient_: string, @@ -393,6 +373,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, @@ -412,6 +394,10 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + timeout( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -424,14 +410,12 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - calculatePrice( - units_: BigNumberish, + calculateBuy( + targetUnits_: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise<[BigNumber, BigNumber]>; - canEnd(overrides?: CallOverrides): Promise; - - canStart(overrides?: CallOverrides): Promise; + canLive(overrides?: CallOverrides): Promise; claimFees( recipient_: string, @@ -442,6 +426,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, @@ -461,6 +447,10 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + timeout( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -470,19 +460,19 @@ export interface Sale extends BaseContract { callStatic: { buy(config_: BuyConfigStruct, overrides?: CallOverrides): Promise; - calculatePrice( - units_: BigNumberish, + calculateBuy( + targetUnits_: BigNumberish, overrides?: CallOverrides - ): Promise; - - canEnd(overrides?: CallOverrides): Promise; + ): Promise<[BigNumber, BigNumber]>; - canStart(overrides?: CallOverrides): Promise; + canLive(overrides?: CallOverrides): Promise; claimFees(recipient_: string, overrides?: CallOverrides): Promise; end(overrides?: CallOverrides): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, @@ -497,6 +487,10 @@ export interface Sale extends BaseContract { start(overrides?: CallOverrides): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + timeout(overrides?: CallOverrides): Promise; token(overrides?: CallOverrides): Promise; @@ -548,16 +542,12 @@ export interface Sale extends BaseContract { token?: null ): InitializeEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Refund(address,tuple)"(sender?: null, receipt?: null): RefundEventFilter; Refund(sender?: null, receipt?: null): RefundEventFilter; - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - "Start(address)"(sender?: null): StartEventFilter; Start(sender?: null): StartEventFilter; @@ -571,14 +561,12 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - calculatePrice( - units_: BigNumberish, + calculateBuy( + targetUnits_: BigNumberish, overrides?: CallOverrides ): Promise; - canEnd(overrides?: CallOverrides): Promise; - - canStart(overrides?: CallOverrides): Promise; + canLive(overrides?: CallOverrides): Promise; claimFees( recipient_: string, @@ -589,6 +577,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, @@ -608,6 +598,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + storageOpcodesRange(overrides?: CallOverrides): Promise; + timeout( overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -621,14 +613,12 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - calculatePrice( - units_: BigNumberish, + calculateBuy( + targetUnits_: BigNumberish, overrides?: CallOverrides ): Promise; - canEnd(overrides?: CallOverrides): Promise; - - canStart(overrides?: CallOverrides): Promise; + canLive(overrides?: CallOverrides): Promise; claimFees( recipient_: string, @@ -639,6 +629,8 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + fnPtrs(overrides?: CallOverrides): Promise; + initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, @@ -658,6 +650,10 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + timeout( overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/SaleFactory.ts b/src/typechain/SaleFactory.ts index e456a7e..6c8b140 100644 --- a/src/typechain/SaleFactory.ts +++ b/src/typechain/SaleFactory.ts @@ -21,41 +21,33 @@ export type SaleConstructorConfigStruct = { maximumSaleTimeout: BigNumberish; maximumCooldownDuration: BigNumberish; redeemableERC20Factory: string; + vmStateBuilder: string; }; export type SaleConstructorConfigStructOutput = [ BigNumber, BigNumber, + string, string ] & { maximumSaleTimeout: BigNumber; maximumCooldownDuration: BigNumber; redeemableERC20Factory: string; + vmStateBuilder: string; }; export type StateConfigStruct = { sources: BytesLike[]; constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; }; -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { +export type StateConfigStructOutput = [string[], BigNumber[]] & { sources: string[]; constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; }; export type SaleConfigStruct = { - canStartStateConfig: StateConfigStruct; - canEndStateConfig: StateConfigStruct; - calculatePriceStateConfig: StateConfigStruct; + vmStateConfig: StateConfigStruct; recipient: string; reserve: string; saleTimeout: BigNumberish; @@ -65,8 +57,6 @@ export type SaleConfigStruct = { }; export type SaleConfigStructOutput = [ - StateConfigStructOutput, - StateConfigStructOutput, StateConfigStructOutput, string, string, @@ -75,9 +65,7 @@ export type SaleConfigStructOutput = [ BigNumber, BigNumber ] & { - canStartStateConfig: StateConfigStructOutput; - canEndStateConfig: StateConfigStructOutput; - calculatePriceStateConfig: StateConfigStructOutput; + vmStateConfig: StateConfigStructOutput; recipient: string; reserve: string; saleTimeout: BigNumber; @@ -122,7 +110,7 @@ export type SaleRedeemableERC20ConfigStructOutput = [ export interface SaleFactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped(((bytes[],uint256[],uint256,uint256),(bytes[],uint256[],uint256,uint256),(bytes[],uint256[],uint256,uint256),address,address,uint256,uint256,uint256,uint256),((string,string,address,uint256),address,uint256,address))": FunctionFragment; + "createChildTyped(((bytes[],uint256[]),address,address,uint256,uint256,uint256,uint256),((string,string,address,uint256),address,uint256,address))": FunctionFragment; "isChild(address)": FunctionFragment; }; diff --git a/src/typechain/SeedERC20.ts b/src/typechain/SeedERC20.ts deleted file mode 100644 index 3b3f8c2..0000000 --- a/src/typechain/SeedERC20.ts +++ /dev/null @@ -1,1021 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC20ConfigStruct = { - name: string; - symbol: string; - distributor: string; - initialSupply: BigNumberish; -}; - -export type ERC20ConfigStructOutput = [string, string, string, BigNumber] & { - name: string; - symbol: string; - distributor: string; - initialSupply: BigNumber; -}; - -export type SeedERC20ConfigStruct = { - reserve: string; - recipient: string; - seedPrice: BigNumberish; - cooldownDuration: BigNumberish; - erc20Config: ERC20ConfigStruct; -}; - -export type SeedERC20ConfigStructOutput = [ - string, - string, - BigNumber, - BigNumber, - ERC20ConfigStructOutput -] & { - reserve: string; - recipient: string; - seedPrice: BigNumber; - cooldownDuration: BigNumber; - erc20Config: ERC20ConfigStructOutput; -}; - -export interface SeedERC20Interface extends utils.Interface { - functions: { - "allowance(address,address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "blockNumberForPhase(uint32[8],uint256)": FunctionFragment; - "burn(uint256)": FunctionFragment; - "burnFrom(address,uint256)": FunctionFragment; - "currentPhase()": FunctionFragment; - "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; - "highwater()": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; - "initialize((address,address,uint256,uint256,(string,string,address,uint256)))": FunctionFragment; - "name()": FunctionFragment; - "newTreasuryAsset(address)": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; - "pullERC20(uint256)": FunctionFragment; - "redeem(uint256,uint256)": FunctionFragment; - "seed(uint256,uint256)": FunctionFragment; - "symbol()": FunctionFragment; - "totalSupply()": FunctionFragment; - "transfer(address,uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "unseed(uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "allowance", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "blockNumberForPhase", - values: [BigNumberish[], BigNumberish] - ): string; - encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; - encodeFunctionData( - functionFragment: "burnFrom", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "currentPhase", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "highwater", values?: undefined): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [SeedERC20ConfigStruct] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "newTreasuryAsset", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "phaseAtBlockNumber", - values: [BigNumberish[], BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "phaseBlocks", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "pullERC20", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "redeem", - values: [BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "seed", - values: [BigNumberish, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transfer", - values: [string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "unseed", - values: [BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "blockNumberForPhase", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "currentPhase", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "highwater", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "newTreasuryAsset", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "phaseBlocks", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "pullERC20", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "seed", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "unseed", data: BytesLike): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "CooldownInitialize(address,uint256)": EventFragment; - "CooldownTriggered(address,uint256)": EventFragment; - "ERC20PullInitialize(address,address,address)": EventFragment; - "Initialize(address,address,address,uint256)": EventFragment; - "PhaseScheduled(address,uint256,uint256)": EventFragment; - "Redeem(address,address,uint256,uint256)": EventFragment; - "Seed(address,uint256,uint256)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - "TreasuryAsset(address,address)": EventFragment; - "Unseed(address,uint256,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "CooldownInitialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "CooldownTriggered"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ERC20PullInitialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "PhaseScheduled"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Redeem"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Seed"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TreasuryAsset"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Unseed"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; spender: string; value: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type CooldownInitializeEvent = TypedEvent< - [string, BigNumber], - { sender: string; cooldownDuration: BigNumber } ->; - -export type CooldownInitializeEventFilter = - TypedEventFilter; - -export type CooldownTriggeredEvent = TypedEvent< - [string, BigNumber], - { caller: string; cooldown: BigNumber } ->; - -export type CooldownTriggeredEventFilter = - TypedEventFilter; - -export type ERC20PullInitializeEvent = TypedEvent< - [string, string, string], - { sender: string; tokenSender: string; token: string } ->; - -export type ERC20PullInitializeEventFilter = - TypedEventFilter; - -export type InitializeEvent = TypedEvent< - [string, string, string, BigNumber], - { sender: string; recipient: string; reserve: string; seedPrice: BigNumber } ->; - -export type InitializeEventFilter = TypedEventFilter; - -export type PhaseScheduledEvent = TypedEvent< - [string, BigNumber, BigNumber], - { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } ->; - -export type PhaseScheduledEventFilter = TypedEventFilter; - -export type RedeemEvent = TypedEvent< - [string, string, BigNumber, BigNumber], - { - sender: string; - treasuryAsset: string; - redeemAmount: BigNumber; - assetAmount: BigNumber; - } ->; - -export type RedeemEventFilter = TypedEventFilter; - -export type SeedEvent = TypedEvent< - [string, BigNumber, BigNumber], - { sender: string; tokensSeeded: BigNumber; reserveReceived: BigNumber } ->; - -export type SeedEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; value: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export type TreasuryAssetEvent = TypedEvent< - [string, string], - { sender: string; asset: string } ->; - -export type TreasuryAssetEventFilter = TypedEventFilter; - -export type UnseedEvent = TypedEvent< - [string, BigNumber, BigNumber], - { sender: string; tokensUnseeded: BigNumber; reserveReturned: BigNumber } ->; - -export type UnseedEventFilter = TypedEventFilter; - -export interface SeedERC20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SeedERC20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - burn( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - burnFrom( - account: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - currentPhase(overrides?: CallOverrides): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - highwater(overrides?: CallOverrides): Promise<[BigNumber]>; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - initialize( - config_: SeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - newTreasuryAsset( - newTreasuryAsset_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - phaseBlocks( - arg0: BigNumberish, - overrides?: CallOverrides - ): Promise<[number]>; - - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - redeem( - units_: BigNumberish, - safetyRelease_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - seed( - minimumUnits_: BigNumberish, - desiredUnits_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - from: string, - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unseed( - units_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - burn( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - burnFrom( - account: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - highwater(overrides?: CallOverrides): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - initialize( - config_: SeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newTreasuryAsset( - newTreasuryAsset_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - redeem( - units_: BigNumberish, - safetyRelease_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - seed( - minimumUnits_: BigNumberish, - desiredUnits_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - from: string, - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unseed( - units_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - burn(amount: BigNumberish, overrides?: CallOverrides): Promise; - - burnFrom( - account: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: CallOverrides - ): Promise; - - highwater(overrides?: CallOverrides): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: CallOverrides - ): Promise; - - initialize( - config_: SeedERC20ConfigStruct, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newTreasuryAsset( - newTreasuryAsset_: string, - overrides?: CallOverrides - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - - pullERC20(amount_: BigNumberish, overrides?: CallOverrides): Promise; - - redeem( - units_: BigNumberish, - safetyRelease_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - seed( - minimumUnits_: BigNumberish, - desiredUnits_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - unseed(units_: BigNumberish, overrides?: CallOverrides): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - spender?: string | null, - value?: null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - spender?: string | null, - value?: null - ): ApprovalEventFilter; - - "CooldownInitialize(address,uint256)"( - sender?: null, - cooldownDuration?: null - ): CooldownInitializeEventFilter; - CooldownInitialize( - sender?: null, - cooldownDuration?: null - ): CooldownInitializeEventFilter; - - "CooldownTriggered(address,uint256)"( - caller?: null, - cooldown?: null - ): CooldownTriggeredEventFilter; - CooldownTriggered( - caller?: null, - cooldown?: null - ): CooldownTriggeredEventFilter; - - "ERC20PullInitialize(address,address,address)"( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - ERC20PullInitialize( - sender?: null, - tokenSender?: null, - token?: null - ): ERC20PullInitializeEventFilter; - - "Initialize(address,address,address,uint256)"( - sender?: null, - recipient?: null, - reserve?: null, - seedPrice?: null - ): InitializeEventFilter; - Initialize( - sender?: null, - recipient?: null, - reserve?: null, - seedPrice?: null - ): InitializeEventFilter; - - "PhaseScheduled(address,uint256,uint256)"( - sender?: null, - newPhase?: null, - scheduledBlock?: null - ): PhaseScheduledEventFilter; - PhaseScheduled( - sender?: null, - newPhase?: null, - scheduledBlock?: null - ): PhaseScheduledEventFilter; - - "Redeem(address,address,uint256,uint256)"( - sender?: null, - treasuryAsset?: null, - redeemAmount?: null, - assetAmount?: null - ): RedeemEventFilter; - Redeem( - sender?: null, - treasuryAsset?: null, - redeemAmount?: null, - assetAmount?: null - ): RedeemEventFilter; - - "Seed(address,uint256,uint256)"( - sender?: null, - tokensSeeded?: null, - reserveReceived?: null - ): SeedEventFilter; - Seed( - sender?: null, - tokensSeeded?: null, - reserveReceived?: null - ): SeedEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - value?: null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - value?: null - ): TransferEventFilter; - - "TreasuryAsset(address,address)"( - sender?: null, - asset?: null - ): TreasuryAssetEventFilter; - TreasuryAsset(sender?: null, asset?: null): TreasuryAssetEventFilter; - - "Unseed(address,uint256,uint256)"( - sender?: null, - tokensUnseeded?: null, - reserveReturned?: null - ): UnseedEventFilter; - Unseed( - sender?: null, - tokensUnseeded?: null, - reserveReturned?: null - ): UnseedEventFilter; - }; - - estimateGas: { - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - burn( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - burnFrom( - account: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - highwater(overrides?: CallOverrides): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - initialize( - config_: SeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newTreasuryAsset( - newTreasuryAsset_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks( - arg0: BigNumberish, - overrides?: CallOverrides - ): Promise; - - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - redeem( - units_: BigNumberish, - safetyRelease_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - seed( - minimumUnits_: BigNumberish, - desiredUnits_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - from: string, - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unseed( - units_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - allowance( - owner: string, - spender: string, - overrides?: CallOverrides - ): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - account: string, - overrides?: CallOverrides - ): Promise; - - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - burn( - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - burnFrom( - account: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - highwater(overrides?: CallOverrides): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - initialize( - config_: SeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - newTreasuryAsset( - newTreasuryAsset_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks( - arg0: BigNumberish, - overrides?: CallOverrides - ): Promise; - - pullERC20( - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - redeem( - units_: BigNumberish, - safetyRelease_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - seed( - minimumUnits_: BigNumberish, - desiredUnits_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferFrom( - from: string, - to: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - unseed( - units_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/SeedERC20ForceSendEther.ts b/src/typechain/SeedERC20ForceSendEther.ts deleted file mode 100644 index 08fbef2..0000000 --- a/src/typechain/SeedERC20ForceSendEther.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface SeedERC20ForceSendEtherInterface extends utils.Interface { - functions: { - "destroy(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "destroy", values: [string]): string; - - decodeFunctionResult(functionFragment: "destroy", data: BytesLike): Result; - - events: {}; -} - -export interface SeedERC20ForceSendEther extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SeedERC20ForceSendEtherInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - destroy( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - destroy( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - destroy( - seedERC20Contract_: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - destroy( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - destroy( - seedERC20Contract_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/SmartPoolManager.ts b/src/typechain/SmartPoolManager.ts deleted file mode 100644 index 48bff9e..0000000 --- a/src/typechain/SmartPoolManager.ts +++ /dev/null @@ -1,400 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface SmartPoolManagerInterface extends utils.Interface { - functions: { - "exitPool(IConfigurableRightsPool,IBPool,uint256,uint256[])": FunctionFragment; - "exitswapExternAmountOut(IConfigurableRightsPool,IBPool,address,uint256,uint256)": FunctionFragment; - "exitswapPoolAmountIn(IConfigurableRightsPool,IBPool,address,uint256,uint256)": FunctionFragment; - "joinPool(IConfigurableRightsPool,IBPool,uint256,uint256[])": FunctionFragment; - "joinswapExternAmountIn(IConfigurableRightsPool,IBPool,address,uint256,uint256)": FunctionFragment; - "joinswapPoolAmountOut(IConfigurableRightsPool,IBPool,address,uint256,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "exitPool", - values: [string, string, BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "exitswapExternAmountOut", - values: [string, string, string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "exitswapPoolAmountIn", - values: [string, string, string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "joinPool", - values: [string, string, BigNumberish, BigNumberish[]] - ): string; - encodeFunctionData( - functionFragment: "joinswapExternAmountIn", - values: [string, string, string, BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "joinswapPoolAmountOut", - values: [string, string, string, BigNumberish, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "exitPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "exitswapExternAmountOut", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "exitswapPoolAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "joinPool", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "joinswapExternAmountIn", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "joinswapPoolAmountOut", - data: BytesLike - ): Result; - - events: {}; -} - -export interface SmartPoolManager extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: SmartPoolManagerInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - exitPool( - self: string, - bPool: string, - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber, BigNumber[]] & { - exitFee: BigNumber; - pAiAfterExitFee: BigNumber; - actualAmountsOut: BigNumber[]; - } - >; - - exitswapExternAmountOut( - self: string, - bPool: string, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { exitFee: BigNumber; poolAmountIn: BigNumber } - >; - - exitswapPoolAmountIn( - self: string, - bPool: string, - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { exitFee: BigNumber; tokenAmountOut: BigNumber } - >; - - joinPool( - self: string, - bPool: string, - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { actualAmountsIn: BigNumber[] }>; - - joinswapExternAmountIn( - self: string, - bPool: string, - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { poolAmountOut: BigNumber }>; - - joinswapPoolAmountOut( - self: string, - bPool: string, - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber] & { tokenAmountIn: BigNumber }>; - }; - - exitPool( - self: string, - bPool: string, - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber, BigNumber[]] & { - exitFee: BigNumber; - pAiAfterExitFee: BigNumber; - actualAmountsOut: BigNumber[]; - } - >; - - exitswapExternAmountOut( - self: string, - bPool: string, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { exitFee: BigNumber; poolAmountIn: BigNumber } - >; - - exitswapPoolAmountIn( - self: string, - bPool: string, - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { exitFee: BigNumber; tokenAmountOut: BigNumber } - >; - - joinPool( - self: string, - bPool: string, - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - joinswapExternAmountIn( - self: string, - bPool: string, - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinswapPoolAmountOut( - self: string, - bPool: string, - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - callStatic: { - exitPool( - self: string, - bPool: string, - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber, BigNumber[]] & { - exitFee: BigNumber; - pAiAfterExitFee: BigNumber; - actualAmountsOut: BigNumber[]; - } - >; - - exitswapExternAmountOut( - self: string, - bPool: string, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { exitFee: BigNumber; poolAmountIn: BigNumber } - >; - - exitswapPoolAmountIn( - self: string, - bPool: string, - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise< - [BigNumber, BigNumber] & { exitFee: BigNumber; tokenAmountOut: BigNumber } - >; - - joinPool( - self: string, - bPool: string, - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - joinswapExternAmountIn( - self: string, - bPool: string, - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinswapPoolAmountOut( - self: string, - bPool: string, - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - exitPool( - self: string, - bPool: string, - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - exitswapExternAmountOut( - self: string, - bPool: string, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitswapPoolAmountIn( - self: string, - bPool: string, - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinPool( - self: string, - bPool: string, - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - joinswapExternAmountIn( - self: string, - bPool: string, - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinswapPoolAmountOut( - self: string, - bPool: string, - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - exitPool( - self: string, - bPool: string, - poolAmountIn: BigNumberish, - minAmountsOut: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - exitswapExternAmountOut( - self: string, - bPool: string, - tokenOut: string, - tokenAmountOut: BigNumberish, - maxPoolAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - - exitswapPoolAmountIn( - self: string, - bPool: string, - tokenOut: string, - poolAmountIn: BigNumberish, - minAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinPool( - self: string, - bPool: string, - poolAmountOut: BigNumberish, - maxAmountsIn: BigNumberish[], - overrides?: CallOverrides - ): Promise; - - joinswapExternAmountIn( - self: string, - bPool: string, - tokenIn: string, - tokenAmountIn: BigNumberish, - minPoolAmountOut: BigNumberish, - overrides?: CallOverrides - ): Promise; - - joinswapPoolAmountOut( - self: string, - bPool: string, - tokenIn: string, - poolAmountOut: BigNumberish, - maxAmountIn: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/StackHeightTest.ts b/src/typechain/StackHeightTest.ts new file mode 100644 index 0000000..2c8a4b1 --- /dev/null +++ b/src/typechain/StackHeightTest.ts @@ -0,0 +1,155 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface StackHeightTestInterface extends utils.Interface { + functions: { + "fnPtrs()": FunctionFragment; + "initialize((bytes[],uint256[]))": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "initialize", + values: [StateConfigStruct] + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + + events: {}; +} + +export interface StackHeightTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StackHeightTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + fnPtrs(overrides?: CallOverrides): Promise<[string]>; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + }; + + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + callStatic: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + fnPtrs(overrides?: CallOverrides): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/PCToken.ts b/src/typechain/Stake.ts similarity index 63% rename from src/typechain/PCToken.ts rename to src/typechain/Stake.ts index 51c8c3f..386cbd7 100644 --- a/src/typechain/PCToken.ts +++ b/src/typechain/Stake.ts @@ -17,25 +17,39 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface PCTokenInterface extends utils.Interface { +export type StakeConfigStruct = { + token: string; + initialRatio: BigNumberish; + name: string; + symbol: string; +}; + +export type StakeConfigStructOutput = [string, BigNumber, string, string] & { + token: string; + initialRatio: BigNumber; + name: string; + symbol: string; +}; + +export interface StakeInterface extends utils.Interface { functions: { - "DECIMALS()": FunctionFragment; - "NAME()": FunctionFragment; "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseApproval(address,uint256)": FunctionFragment; - "increaseApproval(address,uint256)": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "deposit(uint256)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "initialize((address,uint256,string,string))": FunctionFragment; "name()": FunctionFragment; + "report(address,bytes)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; + "withdraw(uint256)": FunctionFragment; }; - encodeFunctionData(functionFragment: "DECIMALS", values?: undefined): string; - encodeFunctionData(functionFragment: "NAME", values?: undefined): string; encodeFunctionData( functionFragment: "allowance", values: [string, string] @@ -47,14 +61,26 @@ export interface PCTokenInterface extends utils.Interface { encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; encodeFunctionData( - functionFragment: "decreaseApproval", + functionFragment: "decreaseAllowance", values: [string, BigNumberish] ): string; encodeFunctionData( - functionFragment: "increaseApproval", + functionFragment: "deposit", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", values: [string, BigNumberish] ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [StakeConfigStruct] + ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "report", + values: [string, BytesLike] + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -68,22 +94,27 @@ export interface PCTokenInterface extends utils.Interface { functionFragment: "transferFrom", values: [string, string, BigNumberish] ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish] + ): string; - decodeFunctionResult(functionFragment: "DECIMALS", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "NAME", data: BytesLike): Result; decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "decreaseApproval", + functionFragment: "decreaseAllowance", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "increaseApproval", + functionFragment: "increaseAllowance", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -94,13 +125,18 @@ export interface PCTokenInterface extends utils.Interface { functionFragment: "transferFrom", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; events: { "Approval(address,address,uint256)": EventFragment; + "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -111,6 +147,17 @@ export type ApprovalEvent = TypedEvent< export type ApprovalEventFilter = TypedEventFilter; +export type InitializeEvent = TypedEvent< + [string, StakeConfigStructOutput], + { sender: string; config: StakeConfigStructOutput } +>; + +export type InitializeEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TransferEvent = TypedEvent< [string, string, BigNumber], { from: string; to: string; value: BigNumber } @@ -118,12 +165,12 @@ export type TransferEvent = TypedEvent< export type TransferEventFilter = TypedEventFilter; -export interface PCToken extends BaseContract { +export interface Stake extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: PCTokenInterface; + interface: StakeInterface; queryFilter( event: TypedEventFilter, @@ -145,10 +192,6 @@ export interface PCToken extends BaseContract { removeListener: OnEvent; functions: { - DECIMALS(overrides?: CallOverrides): Promise<[number]>; - - NAME(overrides?: CallOverrides): Promise<[string]>; - allowance( owner: string, spender: string, @@ -165,41 +208,58 @@ export interface PCToken extends BaseContract { decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + deposit( + amount_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; name(overrides?: CallOverrides): Promise<[string]>; + report( + account_: string, + data_: BytesLike, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; transfer( - recipient: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; transferFrom( - sender: string, - recipient: string, + from: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - }; - - DECIMALS(overrides?: CallOverrides): Promise; - NAME(overrides?: CallOverrides): Promise; + withdraw( + amount_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; allowance( owner: string, @@ -217,42 +277,59 @@ export interface PCToken extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + amount_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; name(overrides?: CallOverrides): Promise; + report( + account_: string, + data_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; transfer( - recipient: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; transferFrom( - sender: string, - recipient: string, + from: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - callStatic: { - DECIMALS(overrides?: CallOverrides): Promise; - - NAME(overrides?: CallOverrides): Promise; + withdraw( + amount_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + callStatic: { allowance( owner: string, spender: string, @@ -269,36 +346,51 @@ export interface PCToken extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: CallOverrides ): Promise; - increaseApproval( + deposit(amount_: BigNumberish, overrides?: CallOverrides): Promise; + + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, overrides?: CallOverrides ): Promise; + initialize( + config_: StakeConfigStruct, + overrides?: CallOverrides + ): Promise; + name(overrides?: CallOverrides): Promise; + report( + account_: string, + data_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; transfer( - recipient: string, + to: string, amount: BigNumberish, overrides?: CallOverrides ): Promise; transferFrom( - sender: string, - recipient: string, + from: string, + to: string, amount: BigNumberish, overrides?: CallOverrides ): Promise; + + withdraw(amount_: BigNumberish, overrides?: CallOverrides): Promise; }; filters: { @@ -313,6 +405,15 @@ export interface PCToken extends BaseContract { value?: null ): ApprovalEventFilter; + "Initialize(address,tuple)"( + sender?: null, + config?: null + ): InitializeEventFilter; + Initialize(sender?: null, config?: null): InitializeEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, @@ -326,10 +427,6 @@ export interface PCToken extends BaseContract { }; estimateGas: { - DECIMALS(overrides?: CallOverrides): Promise; - - NAME(overrides?: CallOverrides): Promise; - allowance( owner: string, spender: string, @@ -346,43 +443,60 @@ export interface PCToken extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + deposit( + amount_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; name(overrides?: CallOverrides): Promise; + report( + account_: string, + data_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; transfer( - recipient: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; transferFrom( - sender: string, - recipient: string, + from: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; + + withdraw( + amount_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; }; populateTransaction: { - DECIMALS(overrides?: CallOverrides): Promise; - - NAME(overrides?: CallOverrides): Promise; - allowance( owner: string, spender: string, @@ -402,35 +516,56 @@ export interface PCToken extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseApproval( + decreaseAllowance( spender: string, - amount: BigNumberish, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + deposit( + amount_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - increaseApproval( + increaseAllowance( spender: string, - amount: BigNumberish, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; name(overrides?: CallOverrides): Promise; + report( + account_: string, + data_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; transfer( - recipient: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; transferFrom( - sender: string, - recipient: string, + from: string, + to: string, amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; + + withdraw( + amount_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; }; } diff --git a/src/typechain/SeedERC20Factory.ts b/src/typechain/StakeFactory.ts similarity index 82% rename from src/typechain/SeedERC20Factory.ts rename to src/typechain/StakeFactory.ts index 225d006..6680522 100644 --- a/src/typechain/SeedERC20Factory.ts +++ b/src/typechain/StakeFactory.ts @@ -17,46 +17,24 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export type ERC20ConfigStruct = { +export type StakeConfigStruct = { + token: string; + initialRatio: BigNumberish; name: string; symbol: string; - distributor: string; - initialSupply: BigNumberish; }; -export type ERC20ConfigStructOutput = [string, string, string, BigNumber] & { +export type StakeConfigStructOutput = [string, BigNumber, string, string] & { + token: string; + initialRatio: BigNumber; name: string; symbol: string; - distributor: string; - initialSupply: BigNumber; }; -export type SeedERC20ConfigStruct = { - reserve: string; - recipient: string; - seedPrice: BigNumberish; - cooldownDuration: BigNumberish; - erc20Config: ERC20ConfigStruct; -}; - -export type SeedERC20ConfigStructOutput = [ - string, - string, - BigNumber, - BigNumber, - ERC20ConfigStructOutput -] & { - reserve: string; - recipient: string; - seedPrice: BigNumber; - cooldownDuration: BigNumber; - erc20Config: ERC20ConfigStructOutput; -}; - -export interface SeedERC20FactoryInterface extends utils.Interface { +export interface StakeFactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((address,address,uint256,uint256,(string,string,address,uint256)))": FunctionFragment; + "createChildTyped((address,uint256,string,string))": FunctionFragment; "implementation()": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -67,7 +45,7 @@ export interface SeedERC20FactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "createChildTyped", - values: [SeedERC20ConfigStruct] + values: [StakeConfigStruct] ): string; encodeFunctionData( functionFragment: "implementation", @@ -112,12 +90,12 @@ export type NewChildEvent = TypedEvent< export type NewChildEventFilter = TypedEventFilter; -export interface SeedERC20Factory extends BaseContract { +export interface StakeFactory extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: SeedERC20FactoryInterface; + interface: StakeFactoryInterface; queryFilter( event: TypedEventFilter, @@ -145,7 +123,7 @@ export interface SeedERC20Factory extends BaseContract { ): Promise; createChildTyped( - config_: SeedERC20ConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -160,7 +138,7 @@ export interface SeedERC20Factory extends BaseContract { ): Promise; createChildTyped( - config_: SeedERC20ConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -172,7 +150,7 @@ export interface SeedERC20Factory extends BaseContract { createChild(data_: BytesLike, overrides?: CallOverrides): Promise; createChildTyped( - config_: SeedERC20ConfigStruct, + config_: StakeConfigStruct, overrides?: CallOverrides ): Promise; @@ -205,7 +183,7 @@ export interface SeedERC20Factory extends BaseContract { ): Promise; createChildTyped( - config_: SeedERC20ConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -221,7 +199,7 @@ export interface SeedERC20Factory extends BaseContract { ): Promise; createChildTyped( - config_: SeedERC20ConfigStruct, + config_: StakeConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/TierOpsTest.ts b/src/typechain/TierOpsTest.ts deleted file mode 100644 index 6d879c7..0000000 --- a/src/typechain/TierOpsTest.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; -}; - -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; -}; - -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - -export interface TierOpsTestInterface extends utils.Interface { - functions: { - "run()": FunctionFragment; - "runLength(uint256)": FunctionFragment; - "runState()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "run", values?: undefined): string; - encodeFunctionData( - functionFragment: "runLength", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "runState", values?: undefined): string; - - decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runLength", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runState", data: BytesLike): Result; - - events: { - "Snapshot(address,address,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; -} - -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - -export interface TierOpsTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TierOpsTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - run(overrides?: CallOverrides): Promise<[BigNumber]>; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - runState(overrides?: CallOverrides): Promise<[StateStructOutput]>; - }; - - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - - callStatic: { - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - }; - - estimateGas: { - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/TokenOpsTest.ts b/src/typechain/TokenOpsTest.ts deleted file mode 100644 index 2ff24ce..0000000 --- a/src/typechain/TokenOpsTest.ts +++ /dev/null @@ -1,178 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; - stackLength: BigNumberish; - argumentsLength: BigNumberish; -}; - -export type StateConfigStructOutput = [ - string[], - BigNumber[], - BigNumber, - BigNumber -] & { - sources: string[]; - constants: BigNumber[]; - stackLength: BigNumber; - argumentsLength: BigNumber; -}; - -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - -export interface TokenOpsTestInterface extends utils.Interface { - functions: { - "run()": FunctionFragment; - "runLength(uint256)": FunctionFragment; - "runState()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "run", values?: undefined): string; - encodeFunctionData( - functionFragment: "runLength", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "runState", values?: undefined): string; - - decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runLength", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "runState", data: BytesLike): Result; - - events: { - "Snapshot(address,address,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; -} - -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - -export interface TokenOpsTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TokenOpsTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - run(overrides?: CallOverrides): Promise<[BigNumber]>; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber[]]>; - - runState(overrides?: CallOverrides): Promise<[StateStructOutput]>; - }; - - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - - callStatic: { - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - }; - - estimateGas: { - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - run(overrides?: CallOverrides): Promise; - - runLength( - length_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - runState(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/Trust.ts b/src/typechain/Trust.ts deleted file mode 100644 index 700793f..0000000 --- a/src/typechain/Trust.ts +++ /dev/null @@ -1,758 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type TrustConstructionConfigStruct = { - crpFactory: string; - balancerFactory: string; - redeemableERC20Factory: string; - seedERC20Factory: string; - creatorFundsReleaseTimeout: BigNumberish; - maxRaiseDuration: BigNumberish; -}; - -export type TrustConstructionConfigStructOutput = [ - string, - string, - string, - string, - BigNumber, - BigNumber -] & { - crpFactory: string; - balancerFactory: string; - redeemableERC20Factory: string; - seedERC20Factory: string; - creatorFundsReleaseTimeout: BigNumber; - maxRaiseDuration: BigNumber; -}; - -export type TrustConfigStruct = { - reserve: string; - reserveInit: BigNumberish; - initialValuation: BigNumberish; - finalValuation: BigNumberish; - minimumTradingDuration: BigNumberish; - creator: string; - minimumCreatorRaise: BigNumberish; - seederFee: BigNumberish; - redeemInit: BigNumberish; -}; - -export type TrustConfigStructOutput = [ - string, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - string, - BigNumber, - BigNumber, - BigNumber -] & { - reserve: string; - reserveInit: BigNumber; - initialValuation: BigNumber; - finalValuation: BigNumber; - minimumTradingDuration: BigNumber; - creator: string; - minimumCreatorRaise: BigNumber; - seederFee: BigNumber; - redeemInit: BigNumber; -}; - -export type ERC20ConfigStruct = { - name: string; - symbol: string; - distributor: string; - initialSupply: BigNumberish; -}; - -export type ERC20ConfigStructOutput = [string, string, string, BigNumber] & { - name: string; - symbol: string; - distributor: string; - initialSupply: BigNumber; -}; - -export type TrustRedeemableERC20ConfigStruct = { - erc20Config: ERC20ConfigStruct; - tier: string; - minimumTier: BigNumberish; -}; - -export type TrustRedeemableERC20ConfigStructOutput = [ - ERC20ConfigStructOutput, - string, - BigNumber -] & { - erc20Config: ERC20ConfigStructOutput; - tier: string; - minimumTier: BigNumber; -}; - -export type TrustSeedERC20ConfigStruct = { - seeder: string; - cooldownDuration: BigNumberish; - erc20Config: ERC20ConfigStruct; -}; - -export type TrustSeedERC20ConfigStructOutput = [ - string, - BigNumber, - ERC20ConfigStructOutput -] & { - seeder: string; - cooldownDuration: BigNumber; - erc20Config: ERC20ConfigStructOutput; -}; - -export interface TrustInterface extends utils.Interface { - functions: { - "blockNumberForPhase(uint32[8],uint256)": FunctionFragment; - "creatorFundsRelease(address,uint256)": FunctionFragment; - "crp()": FunctionFragment; - "currentPhase()": FunctionFragment; - "enableCreatorFundsRelease()": FunctionFragment; - "endDutchAuction()": FunctionFragment; - "endDutchAuctionAndTransfer()": FunctionFragment; - "getDistributionStatus()": FunctionFragment; - "initialize((address,uint256,uint256,uint256,uint256,address,uint256,uint256,uint256),((string,string,address,uint256),address,uint256),(address,uint256,(string,string,address,uint256)))": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; - "reserve()": FunctionFragment; - "saleStatus()": FunctionFragment; - "startDutchAuction()": FunctionFragment; - "token()": FunctionFragment; - "transferAuctionTokens()": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "blockNumberForPhase", - values: [BigNumberish[], BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "creatorFundsRelease", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "crp", values?: undefined): string; - encodeFunctionData( - functionFragment: "currentPhase", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "enableCreatorFundsRelease", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "endDutchAuction", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "endDutchAuctionAndTransfer", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "getDistributionStatus", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [ - TrustConfigStruct, - TrustRedeemableERC20ConfigStruct, - TrustSeedERC20ConfigStruct - ] - ): string; - encodeFunctionData( - functionFragment: "phaseAtBlockNumber", - values: [BigNumberish[], BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "phaseBlocks", - values: [BigNumberish] - ): string; - encodeFunctionData(functionFragment: "reserve", values?: undefined): string; - encodeFunctionData( - functionFragment: "saleStatus", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "startDutchAuction", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "token", values?: undefined): string; - encodeFunctionData( - functionFragment: "transferAuctionTokens", - values?: undefined - ): string; - - decodeFunctionResult( - functionFragment: "blockNumberForPhase", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "creatorFundsRelease", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "crp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "currentPhase", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "enableCreatorFundsRelease", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "endDutchAuction", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "endDutchAuctionAndTransfer", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "getDistributionStatus", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "phaseBlocks", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "reserve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "saleStatus", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "startDutchAuction", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "token", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferAuctionTokens", - data: BytesLike - ): Result; - - events: { - "Construction(address,address,address,address,address,address,uint256,uint256)": EventFragment; - "CreatorFundsRelease(address,address,uint256)": EventFragment; - "EndDutchAuction(address,uint256,uint256,uint256,uint256,uint256)": EventFragment; - "Initialize(address,tuple,address,address,address,uint256)": EventFragment; - "PhaseScheduled(address,uint256,uint256)": EventFragment; - "StartDutchAuction(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Construction"): EventFragment; - getEvent(nameOrSignatureOrTopic: "CreatorFundsRelease"): EventFragment; - getEvent(nameOrSignatureOrTopic: "EndDutchAuction"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "PhaseScheduled"): EventFragment; - getEvent(nameOrSignatureOrTopic: "StartDutchAuction"): EventFragment; -} - -export type ConstructionEvent = TypedEvent< - [string, string, string, string, string, string, BigNumber, BigNumber], - { - sender: string; - balancerFactory: string; - crpFactory: string; - redeemableERC20Factory: string; - seedERC20Factory: string; - bPoolFeeEscrow: string; - creatorFundsReleaseTimeout: BigNumber; - maxRaiseDuration: BigNumber; - } ->; - -export type ConstructionEventFilter = TypedEventFilter; - -export type CreatorFundsReleaseEvent = TypedEvent< - [string, string, BigNumber], - { sender: string; token: string; amount: BigNumber } ->; - -export type CreatorFundsReleaseEventFilter = - TypedEventFilter; - -export type EndDutchAuctionEvent = TypedEvent< - [string, BigNumber, BigNumber, BigNumber, BigNumber, BigNumber], - { - sender: string; - finalBalance: BigNumber; - seederPay: BigNumber; - creatorPay: BigNumber; - tokenPay: BigNumber; - poolDust: BigNumber; - } ->; - -export type EndDutchAuctionEventFilter = TypedEventFilter; - -export type InitializeEvent = TypedEvent< - [string, TrustConfigStructOutput, string, string, string, BigNumber], - { - sender: string; - config: TrustConfigStructOutput; - crp: string; - seeder: string; - redeemableERC20: string; - successBalance: BigNumber; - } ->; - -export type InitializeEventFilter = TypedEventFilter; - -export type PhaseScheduledEvent = TypedEvent< - [string, BigNumber, BigNumber], - { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } ->; - -export type PhaseScheduledEventFilter = TypedEventFilter; - -export type StartDutchAuctionEvent = TypedEvent< - [string, string, BigNumber], - { sender: string; pool: string; finalAuctionBlock: BigNumber } ->; - -export type StartDutchAuctionEventFilter = - TypedEventFilter; - -export interface Trust extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TrustInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - creatorFundsRelease( - token_: string, - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - crp(overrides?: CallOverrides): Promise<[string]>; - - currentPhase(overrides?: CallOverrides): Promise<[BigNumber]>; - - enableCreatorFundsRelease( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuctionAndTransfer( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getDistributionStatus(overrides?: CallOverrides): Promise<[number]>; - - initialize( - config_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - phaseBlocks( - arg0: BigNumberish, - overrides?: CallOverrides - ): Promise<[number]>; - - reserve(overrides?: CallOverrides): Promise<[string]>; - - saleStatus(overrides?: CallOverrides): Promise<[number]>; - - startDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise<[string]>; - - transferAuctionTokens( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - creatorFundsRelease( - token_: string, - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - crp(overrides?: CallOverrides): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - enableCreatorFundsRelease( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuctionAndTransfer( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getDistributionStatus(overrides?: CallOverrides): Promise; - - initialize( - config_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - startDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise; - - transferAuctionTokens( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - creatorFundsRelease( - token_: string, - amount_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - crp(overrides?: CallOverrides): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - enableCreatorFundsRelease(overrides?: CallOverrides): Promise; - - endDutchAuction(overrides?: CallOverrides): Promise; - - endDutchAuctionAndTransfer(overrides?: CallOverrides): Promise; - - getDistributionStatus(overrides?: CallOverrides): Promise; - - initialize( - config_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: CallOverrides - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - startDutchAuction(overrides?: CallOverrides): Promise; - - token(overrides?: CallOverrides): Promise; - - transferAuctionTokens(overrides?: CallOverrides): Promise; - }; - - filters: { - "Construction(address,address,address,address,address,address,uint256,uint256)"( - sender?: null, - balancerFactory?: null, - crpFactory?: null, - redeemableERC20Factory?: null, - seedERC20Factory?: null, - bPoolFeeEscrow?: null, - creatorFundsReleaseTimeout?: null, - maxRaiseDuration?: null - ): ConstructionEventFilter; - Construction( - sender?: null, - balancerFactory?: null, - crpFactory?: null, - redeemableERC20Factory?: null, - seedERC20Factory?: null, - bPoolFeeEscrow?: null, - creatorFundsReleaseTimeout?: null, - maxRaiseDuration?: null - ): ConstructionEventFilter; - - "CreatorFundsRelease(address,address,uint256)"( - sender?: null, - token?: null, - amount?: null - ): CreatorFundsReleaseEventFilter; - CreatorFundsRelease( - sender?: null, - token?: null, - amount?: null - ): CreatorFundsReleaseEventFilter; - - "EndDutchAuction(address,uint256,uint256,uint256,uint256,uint256)"( - sender?: null, - finalBalance?: null, - seederPay?: null, - creatorPay?: null, - tokenPay?: null, - poolDust?: null - ): EndDutchAuctionEventFilter; - EndDutchAuction( - sender?: null, - finalBalance?: null, - seederPay?: null, - creatorPay?: null, - tokenPay?: null, - poolDust?: null - ): EndDutchAuctionEventFilter; - - "Initialize(address,tuple,address,address,address,uint256)"( - sender?: null, - config?: null, - crp?: null, - seeder?: null, - redeemableERC20?: null, - successBalance?: null - ): InitializeEventFilter; - Initialize( - sender?: null, - config?: null, - crp?: null, - seeder?: null, - redeemableERC20?: null, - successBalance?: null - ): InitializeEventFilter; - - "PhaseScheduled(address,uint256,uint256)"( - sender?: null, - newPhase?: null, - scheduledBlock?: null - ): PhaseScheduledEventFilter; - PhaseScheduled( - sender?: null, - newPhase?: null, - scheduledBlock?: null - ): PhaseScheduledEventFilter; - - "StartDutchAuction(address,address,uint256)"( - sender?: null, - pool?: null, - finalAuctionBlock?: null - ): StartDutchAuctionEventFilter; - StartDutchAuction( - sender?: null, - pool?: null, - finalAuctionBlock?: null - ): StartDutchAuctionEventFilter; - }; - - estimateGas: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - creatorFundsRelease( - token_: string, - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - crp(overrides?: CallOverrides): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - enableCreatorFundsRelease( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuctionAndTransfer( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getDistributionStatus(overrides?: CallOverrides): Promise; - - initialize( - config_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks( - arg0: BigNumberish, - overrides?: CallOverrides - ): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - startDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise; - - transferAuctionTokens( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - creatorFundsRelease( - token_: string, - amount_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - crp(overrides?: CallOverrides): Promise; - - currentPhase(overrides?: CallOverrides): Promise; - - enableCreatorFundsRelease( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - endDutchAuctionAndTransfer( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getDistributionStatus( - overrides?: CallOverrides - ): Promise; - - initialize( - config_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - phaseBlocks( - arg0: BigNumberish, - overrides?: CallOverrides - ): Promise; - - reserve(overrides?: CallOverrides): Promise; - - saleStatus(overrides?: CallOverrides): Promise; - - startDutchAuction( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - token(overrides?: CallOverrides): Promise; - - transferAuctionTokens( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/TrustEscrowWrapper.ts b/src/typechain/TrustEscrowWrapper.ts deleted file mode 100644 index ccc3d9c..0000000 --- a/src/typechain/TrustEscrowWrapper.ts +++ /dev/null @@ -1,251 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface TrustEscrowWrapperInterface extends utils.Interface { - functions: { - "fetchCrp(address)": FunctionFragment; - "fetchEscrowStatus(address)": FunctionFragment; - "fetchReserve(address)": FunctionFragment; - "fetchToken(address)": FunctionFragment; - "getCrp(address)": FunctionFragment; - "getEscrowStatus(address)": FunctionFragment; - "getReserve(address)": FunctionFragment; - "getToken(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "fetchCrp", values: [string]): string; - encodeFunctionData( - functionFragment: "fetchEscrowStatus", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "fetchReserve", - values: [string] - ): string; - encodeFunctionData(functionFragment: "fetchToken", values: [string]): string; - encodeFunctionData(functionFragment: "getCrp", values: [string]): string; - encodeFunctionData( - functionFragment: "getEscrowStatus", - values: [string] - ): string; - encodeFunctionData(functionFragment: "getReserve", values: [string]): string; - encodeFunctionData(functionFragment: "getToken", values: [string]): string; - - decodeFunctionResult(functionFragment: "fetchCrp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "fetchEscrowStatus", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "fetchReserve", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "fetchToken", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getCrp", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getEscrowStatus", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "getReserve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "getToken", data: BytesLike): Result; - - events: {}; -} - -export interface TrustEscrowWrapper extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TrustEscrowWrapperInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - fetchCrp( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchEscrowStatus( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchReserve( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchToken( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getCrp(trust_: string, overrides?: CallOverrides): Promise<[string]>; - - getEscrowStatus( - trust_: string, - overrides?: CallOverrides - ): Promise<[number]>; - - getReserve(trust_: string, overrides?: CallOverrides): Promise<[string]>; - - getToken(trust_: string, overrides?: CallOverrides): Promise<[string]>; - }; - - fetchCrp( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchEscrowStatus( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchReserve( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchToken( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getCrp(trust_: string, overrides?: CallOverrides): Promise; - - getEscrowStatus(trust_: string, overrides?: CallOverrides): Promise; - - getReserve(trust_: string, overrides?: CallOverrides): Promise; - - getToken(trust_: string, overrides?: CallOverrides): Promise; - - callStatic: { - fetchCrp(trust_: string, overrides?: CallOverrides): Promise; - - fetchEscrowStatus(trust_: string, overrides?: CallOverrides): Promise; - - fetchReserve(trust_: string, overrides?: CallOverrides): Promise; - - fetchToken(trust_: string, overrides?: CallOverrides): Promise; - - getCrp(trust_: string, overrides?: CallOverrides): Promise; - - getEscrowStatus(trust_: string, overrides?: CallOverrides): Promise; - - getReserve(trust_: string, overrides?: CallOverrides): Promise; - - getToken(trust_: string, overrides?: CallOverrides): Promise; - }; - - filters: {}; - - estimateGas: { - fetchCrp( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchEscrowStatus( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchReserve( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchToken( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getCrp(trust_: string, overrides?: CallOverrides): Promise; - - getEscrowStatus( - trust_: string, - overrides?: CallOverrides - ): Promise; - - getReserve(trust_: string, overrides?: CallOverrides): Promise; - - getToken(trust_: string, overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - fetchCrp( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchEscrowStatus( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchReserve( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - fetchToken( - trust_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - getCrp( - trust_: string, - overrides?: CallOverrides - ): Promise; - - getEscrowStatus( - trust_: string, - overrides?: CallOverrides - ): Promise; - - getReserve( - trust_: string, - overrides?: CallOverrides - ): Promise; - - getToken( - trust_: string, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/TrustFactory.ts b/src/typechain/TrustFactory.ts deleted file mode 100644 index e20398a..0000000 --- a/src/typechain/TrustFactory.ts +++ /dev/null @@ -1,318 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type TrustConstructionConfigStruct = { - crpFactory: string; - balancerFactory: string; - redeemableERC20Factory: string; - seedERC20Factory: string; - creatorFundsReleaseTimeout: BigNumberish; - maxRaiseDuration: BigNumberish; -}; - -export type TrustConstructionConfigStructOutput = [ - string, - string, - string, - string, - BigNumber, - BigNumber -] & { - crpFactory: string; - balancerFactory: string; - redeemableERC20Factory: string; - seedERC20Factory: string; - creatorFundsReleaseTimeout: BigNumber; - maxRaiseDuration: BigNumber; -}; - -export type TrustConfigStruct = { - reserve: string; - reserveInit: BigNumberish; - initialValuation: BigNumberish; - finalValuation: BigNumberish; - minimumTradingDuration: BigNumberish; - creator: string; - minimumCreatorRaise: BigNumberish; - seederFee: BigNumberish; - redeemInit: BigNumberish; -}; - -export type TrustConfigStructOutput = [ - string, - BigNumber, - BigNumber, - BigNumber, - BigNumber, - string, - BigNumber, - BigNumber, - BigNumber -] & { - reserve: string; - reserveInit: BigNumber; - initialValuation: BigNumber; - finalValuation: BigNumber; - minimumTradingDuration: BigNumber; - creator: string; - minimumCreatorRaise: BigNumber; - seederFee: BigNumber; - redeemInit: BigNumber; -}; - -export type ERC20ConfigStruct = { - name: string; - symbol: string; - distributor: string; - initialSupply: BigNumberish; -}; - -export type ERC20ConfigStructOutput = [string, string, string, BigNumber] & { - name: string; - symbol: string; - distributor: string; - initialSupply: BigNumber; -}; - -export type TrustRedeemableERC20ConfigStruct = { - erc20Config: ERC20ConfigStruct; - tier: string; - minimumTier: BigNumberish; -}; - -export type TrustRedeemableERC20ConfigStructOutput = [ - ERC20ConfigStructOutput, - string, - BigNumber -] & { - erc20Config: ERC20ConfigStructOutput; - tier: string; - minimumTier: BigNumber; -}; - -export type TrustSeedERC20ConfigStruct = { - seeder: string; - cooldownDuration: BigNumberish; - erc20Config: ERC20ConfigStruct; -}; - -export type TrustSeedERC20ConfigStructOutput = [ - string, - BigNumber, - ERC20ConfigStructOutput -] & { - seeder: string; - cooldownDuration: BigNumber; - erc20Config: ERC20ConfigStructOutput; -}; - -export interface TrustFactoryInterface extends utils.Interface { - functions: { - "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256,uint256,uint256,uint256,address,uint256,uint256,uint256),((string,string,address,uint256),address,uint256),(address,uint256,(string,string,address,uint256)))": FunctionFragment; - "implementation()": FunctionFragment; - "isChild(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "createChild", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "createChildTyped", - values: [ - TrustConfigStruct, - TrustRedeemableERC20ConfigStruct, - TrustSeedERC20ConfigStruct - ] - ): string; - encodeFunctionData( - functionFragment: "implementation", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "isChild", values: [string]): string; - - decodeFunctionResult( - functionFragment: "createChild", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createChildTyped", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "implementation", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; - - events: { - "Implementation(address,address)": EventFragment; - "NewChild(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; - getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; -} - -export type ImplementationEvent = TypedEvent< - [string, string], - { sender: string; implementation: string } ->; - -export type ImplementationEventFilter = TypedEventFilter; - -export type NewChildEvent = TypedEvent< - [string, string], - { sender: string; child: string } ->; - -export type NewChildEventFilter = TypedEventFilter; - -export interface TrustFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: TrustFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - trustConfig_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise<[string]>; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; - }; - - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - trustConfig_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - - callStatic: { - createChild(data_: BytesLike, overrides?: CallOverrides): Promise; - - createChildTyped( - trustConfig_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: CallOverrides - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "Implementation(address,address)"( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - Implementation( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - - "NewChild(address,address)"( - sender?: null, - child?: null - ): NewChildEventFilter; - NewChild(sender?: null, child?: null): NewChildEventFilter; - }; - - estimateGas: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - trustConfig_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - trustConfig_: TrustConfigStruct, - trustRedeemableERC20Config_: TrustRedeemableERC20ConfigStruct, - trustSeedERC20Config_: TrustSeedERC20ConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild( - maybeChild_: string, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/VMState.ts b/src/typechain/VMState.ts deleted file mode 100644 index 13a978d..0000000 --- a/src/typechain/VMState.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - Signer, - utils, -} from "ethers"; -import { EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type StateStruct = { - stackIndex: BigNumberish; - stack: BigNumberish[]; - sources: BytesLike[]; - constants: BigNumberish[]; - arguments: BigNumberish[]; -}; - -export type StateStructOutput = [ - BigNumber, - BigNumber[], - string[], - BigNumber[], - BigNumber[] -] & { - stackIndex: BigNumber; - stack: BigNumber[]; - sources: string[]; - constants: BigNumber[]; - arguments: BigNumber[]; -}; - -export interface VMStateInterface extends utils.Interface { - functions: {}; - - events: { - "Snapshot(address,address,tuple)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; -} - -export type SnapshotEvent = TypedEvent< - [string, string, StateStructOutput], - { sender: string; pointer: string; state: StateStructOutput } ->; - -export type SnapshotEventFilter = TypedEventFilter; - -export interface VMState extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: VMStateInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: {}; - - callStatic: {}; - - filters: { - "Snapshot(address,address,tuple)"( - sender?: null, - pointer?: null, - state?: null - ): SnapshotEventFilter; - Snapshot(sender?: null, pointer?: null, state?: null): SnapshotEventFilter; - }; - - estimateGas: {}; - - populateTransaction: {}; -} diff --git a/src/typechain/VMStateBuilder.ts b/src/typechain/VMStateBuilder.ts new file mode 100644 index 0000000..55ab7d2 --- /dev/null +++ b/src/typechain/VMStateBuilder.ts @@ -0,0 +1,256 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type BoundsStruct = { + entrypoint: BigNumberish; + minFinalStackIndex: BigNumberish; + stackIndex: BigNumberish; + stackLength: BigNumberish; + argumentsLength: BigNumberish; + storageLength: BigNumberish; + opcodesLength: BigNumberish; +}; + +export type BoundsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + entrypoint: BigNumber; + minFinalStackIndex: BigNumber; + stackIndex: BigNumber; + stackLength: BigNumber; + argumentsLength: BigNumber; + storageLength: BigNumber; + opcodesLength: BigNumber; +}; + +export interface VMStateBuilderInterface extends utils.Interface { + functions: { + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity((bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "ptrSource(bytes,bytes)": FunctionFragment; + "stackPopsFnPtrs()": FunctionFragment; + "stackPushesFnPtrs()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "buildState", + values: [string, StateConfigStruct, BoundsStruct[]] + ): string; + encodeFunctionData( + functionFragment: "ensureIntegrity", + values: [StateConfigStruct, BoundsStruct] + ): string; + encodeFunctionData( + functionFragment: "ptrSource", + values: [BytesLike, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "stackPopsFnPtrs", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "stackPushesFnPtrs", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "buildState", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ensureIntegrity", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ptrSource", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stackPopsFnPtrs", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "stackPushesFnPtrs", + data: BytesLike + ): Result; + + events: {}; +} + +export interface VMStateBuilder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: VMStateBuilderInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise<[string]>; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise<[string]>; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise<[string]>; + }; + + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + + callStatic: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: CallOverrides + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + ptrSource( + packedFnPtrs_: BytesLike, + source_: BytesLike, + overrides?: CallOverrides + ): Promise; + + stackPopsFnPtrs(overrides?: CallOverrides): Promise; + + stackPushesFnPtrs(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/Verify.ts b/src/typechain/Verify.ts index 4255974..56b9d24 100644 --- a/src/typechain/Verify.ts +++ b/src/typechain/Verify.ts @@ -209,6 +209,7 @@ export interface VerifyInterface extends utils.Interface { "Approve(address,tuple)": EventFragment; "Ban(address,tuple)": EventFragment; "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; "Remove(address,tuple)": EventFragment; "RequestApprove(address,tuple)": EventFragment; "RequestBan(address,tuple)": EventFragment; @@ -221,6 +222,7 @@ export interface VerifyInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Approve"): EventFragment; getEvent(nameOrSignatureOrTopic: "Ban"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "Remove"): EventFragment; getEvent(nameOrSignatureOrTopic: "RequestApprove"): EventFragment; getEvent(nameOrSignatureOrTopic: "RequestBan"): EventFragment; @@ -251,6 +253,10 @@ export type InitializeEvent = TypedEvent< export type InitializeEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type RemoveEvent = TypedEvent< [string, EvidenceStructOutput], { sender: string; evidence: EvidenceStructOutput } @@ -635,6 +641,9 @@ export interface Verify extends BaseContract { ): InitializeEventFilter; Initialize(sender?: null, config?: null): InitializeEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "Remove(address,tuple)"(sender?: null, evidence?: null): RemoveEventFilter; Remove(sender?: null, evidence?: null): RemoveEventFilter; diff --git a/src/typechain/VerifyTier.ts b/src/typechain/VerifyTier.ts index 033eab3..d92bd02 100644 --- a/src/typechain/VerifyTier.ts +++ b/src/typechain/VerifyTier.ts @@ -37,10 +37,12 @@ export interface VerifyTierInterface extends utils.Interface { events: { "Initialize(address,address)": EventFragment; + "Initialized(uint8)": EventFragment; "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } @@ -51,6 +53,10 @@ export type InitializeEvent = TypedEvent< export type InitializeEventFilter = TypedEventFilter; +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + export type TierChangeEvent = TypedEvent< [string, string, BigNumber, BigNumber, string], { @@ -140,6 +146,9 @@ export interface VerifyTier extends BaseContract { ): InitializeEventFilter; Initialize(sender?: null, verify?: null): InitializeEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + "TierChange(address,address,uint256,uint256,bytes)"( sender?: null, account?: null, diff --git a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts new file mode 100644 index 0000000..045ff15 --- /dev/null +++ b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts @@ -0,0 +1,286 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + AllStandardOpsStateBuilder, + AllStandardOpsStateBuilderInterface, +} from "../AllStandardOpsStateBuilder"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "vm_", + type: "address", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "config_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "opcodesLength", + type: "uint256", + }, + ], + internalType: "struct Bounds[]", + name: "boundss_", + type: "tuple[]", + }, + ], + name: "buildState", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "opcodesLength", + type: "uint256", + }, + ], + internalType: "struct Bounds", + name: "bounds_", + type: "tuple", + }, + ], + name: "ensureIntegrity", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "packedFnPtrs_", + type: "bytes", + }, + { + internalType: "bytes", + name: "source_", + type: "bytes", + }, + ], + name: "ptrSource", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPopsFnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushesFnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b6200007960201b62000bf11760201c565b6001600160a01b03166080526200004b62000020620000ee565b6001600160a01b031660a0526200060e565b6060620000746200010560201b62000c7c1760201c565b905090565b600080620000b383604051602001620000939190620005ac565b604051602081830303815290604052620002ca60201b62000df31760201c565b90508051602082016000f091506001600160a01b038216620000e85760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000074620002f860201b62000e1f1760201c565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200047d831b62000f8817811660e083018190526101008301819052610120830181905261014083015262000483831b62000f8e1781166101608301819052610180830181905262000489841b62000f941782166101a084018190526101c084018190526101e084018190526200048f851b62000f9a178316610200850181905261022085018190526102408501819052610260850181905261028085018190526102a085018190526102c085018190526102e085018190526103008501819052610320850181905261034085018190526103608501829052620004d6861b6200100917841661038086018190526103a086018490526103c086018490526103e086018490526104008601829052610420860191909152610440850183905261046085018390526104808501839052620004dc861b6200100f1784166104a08601526104c085018390526104e085019190915261050084018290526105208401919091526105408301526200052590921b620010821790911661056080830191909152815290565b6060815182604051602001620002e2929190620005c8565b6040516020818303038152906040529050919050565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000489831b62000f9417811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526101c083018190526101e08301819052610200830181905261022083018190526102408301819052610260830181905261028083018190526102a083018190526102c083018190526102e08301819052610300830181905261032083018190526103408301819052610360830181905261038083018190526103a083018190526103c083018190526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083018190526105408301526200048f90921b62000f9a1790911661056080830191909152815290565b50600090565b50600290565b50600190565b6000808211620004d25760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5090565b50600390565b6000601f8216806200051f5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620004c9565b92915050565b6000808211620005645760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620004c9565b5060020260010190565b6000815160005b8181101562000591576020818501810151868301520162000575565b81811115620005a1576000828601525b509290920192915050565b600081526000620005c160018301846200056e565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b6005820152600062000606600e8301846200056e565b949350505050565b60805160a051611e7f62000634600039600061083d015260006108100152611e7f6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e9146102005780639b0bc34914610215578063a46c2a311461022857600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611983565b6103a1565b60405161008c9190611aa1565b60405180910390f35b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f9460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610f9a61056080830191909152815261007f565b61021361020e366004611af2565b61079c565b005b61007f610223366004611b42565b610aa0565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f8860e0820181905261010082018190526101208201819052610140820152610f8e61016082018190526101808201819052610f946101a083018190526101c083018190526101e08301819052610f9a610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840182905261100961038085018190526103a085018490526103c085018490526103e08501849052610400850182905261042085019190915261044084018390526104608401839052610480840183905261100f6104a08501526104c084018390526104e0840191909152610500830182905261052083019190915261054082015261108261056080830191909152815261007f565b606060006103ae856110f7565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa1580156103fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104209190611ba6565b60200151905060008060005b86518110156105c4578387828151811061044857610448611bf5565b602002602001015160a0018181525050600285518161046957610469611c24565b0487828151811061047c5761047c611bf5565b602002602001015160c00181815250506104af888883815181106104a2576104a2611bf5565b602002602001015161079c565b6104df8782815181106104c4576104c4611bf5565b6020026020010151608001518461123590919063ffffffff16565b92506105118782815181106104f6576104f6611bf5565b6020026020010151606001518361123590919063ffffffff16565b915086818151811061052557610525611bf5565b60200260200101516020015187828151811061054357610543611bf5565b60200260200101516040015110156105bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161042c565b506000828860200151510167ffffffffffffffff8111156105e7576105e7611652565b604051908082528060200260200182016040528015610610578160200160208202803683370190505b50905060005b886020015151811015610666578860200151818151811061063957610639611bf5565b602002602001015182828151811061065357610653611bf5565b6020908102919091010152600101610616565b5087515160009067ffffffffffffffff81111561068557610685611652565b6040519080825280602002602001820160405280156106b857816020015b60608152602001906001900390816106a35790505b50905060005b895151811015610714576106ef878b6000015183815181106106e2576106e2611bf5565b6020026020010151610aa0565b82828151811061070157610701611bf5565b60209081029190910101526001016106be565b5061078c6040518060a00160405280600081526020018567ffffffffffffffff81111561074357610743611652565b60405190808252806020026020018201604052801561076c578160200160208202803683370190505b5081526020018381526020018481526020018b602001515181525061124c565b96505050505050505b9392505050565b80518251518110610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016105b3565b60006108347f0000000000000000000000000000000000000000000000000000000000000000611389565b905060006108617f0000000000000000000000000000000000000000000000000000000000000000611389565b905060008080600080602088026020018a5101519050805193505b83851015610a25576002850194508481015180601e1a935080601f1a925050600683101561094057826108d05789602001515189608001510182106108c057600080fd5b6040890180516001019052610927565b60018314156108e957886040015182106108c057600080fd5b6002831415610902576040890180516001019052610927565b6003831415610927578860a00151821061091b57600080fd5b60408901805160010190525b600483141561093b5761093b8a8a846113b7565b610a08565b8860c0015183106109ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016105b3565b6020838102888101820151908801909101516109cc8463ffffffff8416565b60408c018051919091039081905260608c01516109e891611235565b60608c01526109fa8463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610a1b91611235565b60608a015261087c565b606089015160ff1015610a94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016105b3565b50505050505050505050565b80516060906002810615610b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016105b3565b60006002600383020467ffffffffffffffff811115610b3157610b31611652565b6040519080825280601f01601f191660200182016040528015610b5b576020820181803683370190505b509050600660018381018160005b82821015610be35781890151601f1a6002830615610bc55785811015610b9757600182019181908801602101535b858110610bc557600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610bd65780826020018801535b5060019182019101610b69565b509398975050505050505050565b600080610c1c83604051602001610c089190611c53565b604051602081830303815290604052610df3565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610c76576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f8860e0820181905261010082018190526101208201819052610140820152610f8e61016082018190526101808201819052610f946101a083018190526101c083018190526101e08301819052610f9a610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840182905261100961038085018190526103a085018490526103c085018490526103e08501849052610400850182905261042085019190915261044084018390526104608401839052610480840183905261100f6104a08501526104c084018390526104e0840191909152610500830182905261052083019190915261054082015261108261056082810191909152815290565b6060815182604051602001610e09929190611c79565b6040516020818303038152906040529050919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f9460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610f9a61056082810191909152815290565b50600090565b50600290565b50600190565b6000808211611005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105b3565b5090565b50600390565b6000601f82168061107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016105b3565b92915050565b60008082116110ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105b3565b5060020260010190565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261112b9116611389565b905080516000141561107c576111d86111d38473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015611188573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111ce9190810190611d10565b611456565b610bf1565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692909116919091179055610795836110f7565b6000818310156112455781610795565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112989190611d87565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112d49291602001611dbd565b604051602081830303815290604052905060005b85604001515181101561138057818660400151828151811061130c5761130c611bf5565b60200260200101515160001b8760400151838151811061132e5761132e611bf5565b602002602001015160405160200161134893929190611de3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016112e8565b50949350505050565b606061107c8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611560565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114019190611235565b606084015260808301516114159082611235565b60808401528251600783168085526001600385811c161b919060005b8381101561144b57611443888861079c565b600101611431565b505090935250505050565b6060602082518161146957611469611c24565b06156114d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016105b3565b600060108351816114e4576114e4611c24565b0467ffffffffffffffff8111156114fd576114fd611652565b6040519080825280601f01601f191660200182016040528015611527576020820181803683370190505b509050600060025b845182101561155757808301805160208488018101519091179091529091019060020161152f565b50909392505050565b6060833b8061157f575050604080516020810190915260008152610795565b8084111561159d575050604080516020810190915260008152610795565b838310156115e8576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016105b3565b83830384820360008282106115fd57826115ff565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611650611e1a565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156116a4576116a4611652565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116f1576116f1611652565b604052919050565b600067ffffffffffffffff82111561171357611713611652565b5060051b60200190565b600067ffffffffffffffff82111561173757611737611652565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261177457600080fd5b81356117876117828261171d565b6116aa565b81815284602083860101111561179c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126117ca57600080fd5b813560206117da611782836116f9565b82815260059290921b840181019181810190868411156117f957600080fd5b8286015b8481101561181457803583529183019183016117fd565b509695505050505050565b60006040828403121561183157600080fd5b611839611681565b9050813567ffffffffffffffff8082111561185357600080fd5b818401915084601f83011261186757600080fd5b81356020611877611782836116f9565b82815260059290921b8401810191818101908884111561189657600080fd5b8286015b848110156118ce578035868111156118b25760008081fd5b6118c08b86838b0101611763565b84525091830191830161189a565b50865250858101359350828411156118e557600080fd5b6118f1878588016117b9565b818601525050505092915050565b600060e0828403121561191157600080fd5b60405160e0810181811067ffffffffffffffff8211171561193457611934611652565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561199857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146119bc57600080fd5b925060208481013567ffffffffffffffff808211156119da57600080fd5b6119e68883890161181f565b945060408701359150808211156119fc57600080fd5b508501601f81018713611a0e57600080fd5b8035611a1c611782826116f9565b81815260e0918202830184019184820191908a841115611a3b57600080fd5b938501935b83851015611a6157611a528b866118ff565b83529384019391850191611a40565b5080955050505050509250925092565b60005b83811015611a8c578181015183820152602001611a74565b83811115611a9b576000848401525b50505050565b6020815260008251806020840152611ac0816040850160208701611a71565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b0657600080fd5b823567ffffffffffffffff811115611b1d57600080fd5b611b298582860161181f565b925050611b3984602085016118ff565b90509250929050565b60008060408385031215611b5557600080fd5b823567ffffffffffffffff80821115611b6d57600080fd5b611b7986838701611763565b93506020850135915080821115611b8f57600080fd5b50611b9c85828601611763565b9150509250929050565b600060408284031215611bb857600080fd5b6040516040810181811067ffffffffffffffff82111715611bdb57611bdb611652565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251611c6c816001850160208701611a71565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d0281600e850160208701611a71565b91909101600e019392505050565b600060208284031215611d2257600080fd5b815167ffffffffffffffff811115611d3957600080fd5b8201601f81018413611d4a57600080fd5b8051611d586117828261171d565b818152856020838501011115611d6d57600080fd5b611d7e826020830160208601611a71565b95945050505050565b815160009082906020808601845b83811015611db157815185529382019390820190600101611d95565b50929695505050505050565b82815260008251611dd5816020850160208701611a71565b919091016020019392505050565b60008451611df5818460208901611a71565b82018481528351611e0d816020808501908801611a71565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea26469706673582212200b846496cb432f503e4f2d2392004a6c60c8cb72c7fa88e23b4b40c8c989a31364736f6c634300080a0033"; + +type AllStandardOpsStateBuilderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AllStandardOpsStateBuilderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AllStandardOpsStateBuilder__factory extends ContractFactory { + constructor(...args: AllStandardOpsStateBuilderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): AllStandardOpsStateBuilder { + return super.attach(address) as AllStandardOpsStateBuilder; + } + connect(signer: Signer): AllStandardOpsStateBuilder__factory { + return super.connect(signer) as AllStandardOpsStateBuilder__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AllStandardOpsStateBuilderInterface { + return new utils.Interface(_abi) as AllStandardOpsStateBuilderInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AllStandardOpsStateBuilder { + return new Contract( + address, + _abi, + signerOrProvider + ) as AllStandardOpsStateBuilder; + } +} diff --git a/src/typechain/factories/AllStandardOpsTest__factory.ts b/src/typechain/factories/AllStandardOpsTest__factory.ts new file mode 100644 index 0000000..5086f4b --- /dev/null +++ b/src/typechain/factories/AllStandardOpsTest__factory.ts @@ -0,0 +1,252 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + AllStandardOpsTest, + AllStandardOpsTestInterface, +} from "../AllStandardOpsTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "run", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "values_", + type: "uint256[]", + }, + ], + name: "runContext", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "stack", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stackTop", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "state", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "stack", + type: "uint256[]", + }, + { + internalType: "bytes[]", + name: "ptrSources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + { + internalType: "uint256", + name: "argumentsIndex", + type: "uint256", + }, + ], + internalType: "struct State", + name: "", + type: "tuple", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b50604051620037f5380380620037f583398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a05161373f620000b6600039600061065701526000610693015261373f6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063f2cd6c081461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612b7f565b6102d3565b005b6100aa61051e565b6040516100b79190612c50565b60405180910390f35b6100a06100ce366004612c63565b610579565b6100db6107d9565b6040519081526020016100b7565b6100a061080e565b6100f96109b6565b6040516100b79190612d18565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526115a460e08201526115af6101008201526115ba6101208201526115c56101408201526115d06101608201526116436101808201526116a96101a08201526116e96101c082015261171d6101e08201526117516102008201526117986102208201526117f561024082015261182e61026082015261186c6102808201526118be6102a082015261191b6102c082015261194f6102e08201526119836103008201526119b56103208201526119e7610340820152611a19610360820152611a46610380820152611aa16103a0820152611af76103c0820152611b4e6103e0820152611ba5610400820152611bd9610420820152611c03610440820152611cea610460820152611d46610480820152611dc26104a0820152611e7c6104c08201819052611f266104e0830152610500820152611fa66105208201526120ae6105408201526121cc61056080830191909152815290516100b79190612dee565b6000815160206102e39190612e30565b67ffffffffffffffff8111156102fb576102fb612add565b6040519080825280601f01601f191660200182016040528015610325576020820181803683370190505b50905060005b825181101561037d57600083828151811061034857610348612e6d565b6020026020010151905060008260206103619190612e30565b840160200191909152508061037581612e9c565b91505061032b565b5060005a60008054919250906103a89073ffffffffffffffffffffffffffffffffffffffff16610b97565b905060005a905060005a905060006103bf84610bcb565b905060005a905060005a90506103d788846000610d37565b5060005a90506104276040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a6104229190612ed5565b611013565b60408051808201909152600b81527f6465636f6465206761733a0000000000000000000000000000000000000000006020820152610469906104228588612ed5565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526104ab906104228385612ed5565b8351600590815560208086015180518793926104cc9260069291019061295a565b50604082015180516104e89160028401916020909101906129a5565b506060820151805161050491600384019160209091019061295a565b506080820151816004015590505050505050505050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561056f57602002820191906000526020600020905b81548152602001906001019080831161055b575b5050505050905090565b60005a90506105be6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b61061f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105df579050509050818160008151811061064857610648612e6d565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016106d293929190613060565b6000604051808303816000875af11580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261073791908101906131c3565b905060005a90506107836040518060400160405280600d81526020017f6e6577207374617465206761730000000000000000000000000000000000000081525082876104229190612ed5565b61078c826110a8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050505050565b6005546000906006906107ee90600190612ed5565b815481106107fe576107fe612e6d565b9060005260206000200154905090565b60005a60008054919250906108389073ffffffffffffffffffffffffffffffffffffffff16610b97565b905060005a905060005a9050600061084f84610bcb565b905060005a905060005a905061087660405180602001604052806000815250846000610d37565b5060005a90506108c16040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a6104229190612ed5565b60408051808201909152600b81527f6465636f6465206761733a0000000000000000000000000000000000000000006020820152610903906104228588612ed5565b60408051808201909152600881527f72756e206761733a0000000000000000000000000000000000000000000000006020820152610945906104228385612ed5565b8351600590815560208086015180518793926109669260069291019061295a565b50604082015180516109829160028401916020909101906129a5565b506060820151805161099e91600384019160209091019061295a565b50608082015181600401559050505050505050505050565b6109e86040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815481526020019060010190808311610a3a575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b28578382906000526020600020018054610a9b9061326c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac79061326c565b8015610b145780601f10610ae957610100808354040283529160200191610b14565b820191906000526020600020905b815481529060010190602001808311610af757829003601f168201915b505050505081526020019060010190610a7c565b50505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610b7f57602002820191906000526020600020905b815481526020019060010190808311610b6b575b50505050508152602001600482015481525050905090565b6060610bc58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611133565b92915050565b610bfd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610c2f6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610c6357610c63612add565b604051908082528060200260200182016040528015610c8c578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610cc357610cc3612add565b604051908082528060200260200182016040528015610cec578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610d26578160208202602001840152815160200182019150600181019050610cff565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ff9576003890198508886015180601f1a975061ffff8160081c169850506006881015610f715787610dba57866020028401518252602082019150610f84565b6001881415610dd757602087028301518252602082019150610f84565b6002881415610e69578c518760200210610e52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d01518252602082019150610f84565b6003881415610eb2576000610ea0604080518082018252600080825260209182015281518083019092526001825260039082015290565b51880154835250602090910190610f84565b6004881415610ece57610ec78d8d848a61121b565b9150610f84565b606087610efc578c604051602001610ee69190612d18565b6040516020818303038152906040529050610f5b565b6001881415610f1557610f0e8d611388565b9050610f5b565b6002881415610f31576020808e0151604051610ee692016132ba565b6003881415610f5b578c516040805160208101929092520160405160208183030381529060405290505b805115610f6b57610f6b816114c5565b50610f84565b87610f80888463ffffffff8416565b9250505b60208c0151518c511115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610e49565b610d75565b6020838303048c52509750505050505050505b9392505050565b6110a4828260405160240161102992919061331f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052611557565b5050565b6000806110d3836040516020016110bf9190613341565b604051602081830303815290604052611578565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661112d576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061115257505060408051602081019091526000815261100c565b8084111561117057505060408051602081019091526000815261100c565b838310156111bb576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610e49565b83830384820360008282106111d057826111d2565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261125a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006112a5565b826001141561127e57506fffffffffffffffffffffffffffffffff905060806112a5565b826002141561129a575067ffffffffffffffff905060406112a5565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156112c8576112c8612add565b6040519080825280602002602001820160405280156112f1578160200160208202803683370190505b50905060208082019083028a03815b8b821015611318578151815260209182019101611300565b505060608b015160808c015160209081029091010160005b6101008110156113765760208502830182845b8281101561135f578051841c8a16825260209182019101611343565b50505061136d8e8e8b610d37565b9b508501611330565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113d491906132ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526114109291602001613367565b604051602081830303815290604052905060005b8560400151518110156114bc57818660400151828151811061144857611448612e6d565b60200260200101515160001b8760400151838151811061146a5761146a612e6d565b60200260200101516040516020016114849392919061338d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611424565b50949350505050565b611554816040516024016114d99190612dee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611557565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606081518260405160200161158e9291906133c4565b6040516020818303038152906040529050919050565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361163682611630858a6123c9565b9061244a565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611636826116a3858a6123c9565b90612469565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116dd82876123c9565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116dd828761247e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116dd82876124dc565b600060208302820380516000602083015b8581101561178a578051830191508282101561177d57600080fd5b9091508190602001611762565b505081526020019392505050565b6020828102820380516000928201835b85821080156117d657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561178a575080516020909101906117ee8382612527565b92506117a8565b600060208302820380516000602083015b8581101561178a578051830391508282111561182157600080fd5b9091508190602001611806565b6020828102820380516000928201835b858210801561184d5750826000105b1561178a575080516020909101906118658382612563565b925061183e565b60006020830282038051600080602084015b868110156118af5783156118a75780519250828402915082848304146118a357600080fd5b8193505b60200161187e565b50505081526020019392505050565b6020828102820380516000928201835b85821080156118fc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561178a575080516020909101906119148382612579565b92506118ce565b600060208302820380516000602083015b8581101561178a57805191508161194257600080fd5b918190049160200161192c565b600060208302820380516000602083015b8581101561178a57805191508161197657600080fd5b9181900691602001611960565b6020828102820380516000928201835b8582101561178a575080516020909101906119ae818461357b565b9250611993565b6020828102820380516000928201835b8582101561178a57508051828110156119dc578092505b6020820191506119c5565b6020828102820380516000928201835b8582101561178a5750805182811115611a0e578092505b6020820191506119f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015611bce578051611bc65760008252611bce565b602001611baf565b506020019392505050565b6000602083028203805b83811015611bce5780518015611bfa578252611bce565b50602001611be3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116369190613587565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361163683836125a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085611db385858585612607565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115611df057611df0612add565b604051908082528060200260200182016040528015611e19578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015611e5557815181602001860152602082019150602081019050611e33565b50505190506000611e68838389896126ad565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401611ca9565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190613587565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208b91906135a0565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be9190613587565b909452509395945050505050565b60008060008467ffffffffffffffff8111156121ea576121ea612add565b604051908082528060200260200182016040528015612213578160200160208202803683370190505b50905060008567ffffffffffffffff81111561223157612231612add565b60405190808252806020026020018201604052801561225a578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156122af578251815260209283019201612297565b5050602088028101602084015b818310156122d45782518152602092830192016122bc565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061232e90879087906004016135d6565b600060405180830381865afa15801561234b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123919190810190613639565b9050846020820160208a0281015b808210156123ba57815183526020928301929091019061239f565b50909998505050505050505050565b60008082601214156123de5783915050610bc5565b826012111561240a575060128290036123f881600a61357b565b6124029085612e30565b915050610bc5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161243981600a61357b565b61240290856136bf565b5092915050565b6000670de0b6b3a764000061245f8385612e30565b61100c91906136bf565b60008161245f670de0b6b3a764000085612e30565b60008060128314156124935783915050610bc5565b82601211156124ad5750601282900361243981600a61357b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016123f881600a61357b565b600081810b6124ec575081610bc5565b60008260000b13156125145761250382600a6136fa565b61250d9084612e30565b9050610bc5565b60ff60008390031661243981600a61357b565b6000828201838110612539578061255b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161257357600061100c565b50900390565b60008261258857506000610bc5565b8282028284828161259b5761259b6132f0565b041415612539578061255b565b60008060015b600881116125ff5760006125c286836127fd565b905060006125d086846127fd565b905060006125de8383612563565b90506125ee8560018603836128aa565b945050600190920191506125ae9050565b509392505050565b6000826008811115612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e49565b6000855b858110156126a15763ffffffff6020820290811b199890981685891b17979150600101612679565b50959695505050505050565b835160009081908190819060015b600881116127ef576000925082876126f457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6126f8565b5060005b60005b838110156127ad576127268c828151811061271857612718612e6d565b6020026020010151846127fd565b95508a861161277857886127455761273e8683612934565b915061276f565b60018914156127585761273e868361294a565b600289148015612766575084155b1561276f578591505b600194506127a5565b896127a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506127ad565b6001016126fb565b50836127d657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6127e48660018403836128aa565b9550506001016126bb565b509298975050505050505050565b600081600881111561286b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e49565b826128795760009150612443565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e49565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310612943578161100c565b5090919050565b600081831015612943578161100c565b828054828255906000526020600020908101928215612995579160200282015b8281111561299557825182559160200191906001019061297a565b506129a19291506129fe565b5090565b8280548282559060005260206000209081019282156129f2579160200282015b828111156129f257825180516129e2918491602090910190612a13565b50916020019190600101906129c5565b506129a1929150612a86565b5b808211156129a157600081556001016129ff565b828054612a1f9061326c565b90600052602060002090601f016020900481019282612a415760008555612995565b82601f10612a5a57805160ff1916838001178555612995565b82800160010185558215612995579182018281111561299557825182559160200191906001019061297a565b808211156129a1576000612a9a8282612aa3565b50600101612a86565b508054612aaf9061326c565b6000825580601f10612abf575050565b601f01602090049060005260206000209081019061155491906129fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b5357612b53612add565b604052919050565b600067ffffffffffffffff821115612b7557612b75612add565b5060051b60200190565b60006020808385031215612b9257600080fd5b823567ffffffffffffffff811115612ba957600080fd5b8301601f81018513612bba57600080fd5b8035612bcd612bc882612b5b565b612b0c565b81815260059190911b82018301908381019087831115612bec57600080fd5b928401925b82841015612c0a57833582529284019290840190612bf1565b979650505050505050565b600081518084526020808501945080840160005b83811015612c4557815187529582019590820190600101612c29565b509495945050505050565b60208152600061100c6020830184612c15565b600060208284031215612c7557600080fd5b813567ffffffffffffffff811115612c8c57600080fd5b82016040818503121561100c57600080fd5b60005b83811015612cb9578181015183820152602001612ca1565b83811115612cc8576000848401525b50505050565b60008151808452612ce6816020860160208601612c9e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a06040850152612d3d60c0850182612c15565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015612db65784878303018452612da4828751612cce565b95880195938801939150600101612d8a565b5060608a01519650838982030160808a0152612dd28188612c15565b9650505050505050608084015160a08401528091505092915050565b60208152600061100c6020830184612cce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6857612e68612e01565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ece57612ece612e01565b5060010190565b600082821015612ee757612ee7612e01565b500390565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f2157600080fd5b830160208101925035905067ffffffffffffffff811115612f4157600080fd5b8060051b3603831315612f5357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612fd557600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015612c4557815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101613006565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a083016130918687612eec565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561315b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261311257600080fd5b8501803567ffffffffffffffff81111561312b57600080fd5b80360387131561313a57600080fd5b61314788828b8501612f5a565b9750505091860191908601906001016130b1565b505050505061316c82870187612eec565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526131a3828483612fa3565b9250505082810360408401526131b98185612ff2565b9695505050505050565b6000602082840312156131d557600080fd5b815167ffffffffffffffff808211156131ed57600080fd5b818401915084601f83011261320157600080fd5b81518181111561321357613213612add565b61324460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612b0c565b915080825285602082850101111561325b57600080fd5b6114bc816020840160208601612c9e565b600181811c9082168061328057607f821691505b6020821081141561112d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b838110156132e4578151855293820193908201906001016132c8565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6040815260006133326040830185612cce565b90508260208301529392505050565b600081526000825161335a816001850160208701612c9e565b9190910160010192915050565b8281526000825161337f816020850160208701612c9e565b919091016020019392505050565b6000845161339f818460208901612c9e565b820184815283516133b7816020808501908801612c9e565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161344d81600e850160208701612c9e565b91909101600e019392505050565b600181815b808511156134b457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561349a5761349a612e01565b808516156134a757918102915b93841c9390800290613460565b509250929050565b6000826134cb57506001610bc5565b816134d857506000610bc5565b81600181146134ee57600281146134f857613514565b6001915050610bc5565b60ff84111561350957613509612e01565b50506001821b610bc5565b5060208310610133831016604e8410600b8410161715613537575081810a610bc5565b613541838361345b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561357357613573612e01565b029392505050565b600061100c83836134bc565b60006020828403121561359957600080fd5b5051919050565b6000602082840312156135b257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461100c57600080fd5b604080825283519082018190526000906020906060840190828701845b8281101561362557815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016135f3565b505050838103828501526131b98186612c15565b6000602080838503121561364c57600080fd5b825167ffffffffffffffff81111561366357600080fd5b8301601f8101851361367457600080fd5b8051613682612bc882612b5b565b81815260059190911b820183019083810190878311156136a157600080fd5b928401925b82841015612c0a578351825292840192908401906136a6565b6000826136f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061100c60ff8416836134bc56fea2646970667358221220fb95a974c7a7384dbafd4480676193952fb4a2ba95d42f187f5ce47e91f2c04664736f6c634300080a0033"; + +type AllStandardOpsTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AllStandardOpsTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AllStandardOpsTest__factory extends ContractFactory { + constructor(...args: AllStandardOpsTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): AllStandardOpsTest { + return super.attach(address) as AllStandardOpsTest; + } + connect(signer: Signer): AllStandardOpsTest__factory { + return super.connect(signer) as AllStandardOpsTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AllStandardOpsTestInterface { + return new utils.Interface(_abi) as AllStandardOpsTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AllStandardOpsTest { + return new Contract(address, _abi, signerOrProvider) as AllStandardOpsTest; + } +} diff --git a/src/typechain/factories/BBronze__factory.ts b/src/typechain/factories/BBronze__factory.ts deleted file mode 100644 index 8976d28..0000000 --- a/src/typechain/factories/BBronze__factory.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BBronze, BBronzeInterface } from "../BBronze"; - -const _abi = [ - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x6080604052348015600f57600080fd5b5060ba8061001e6000396000f3fe6080604052348015600f57600080fd5b50600436106044577c010000000000000000000000000000000000000000000000000000000060003504639a86139b81146049575b600080fd5b604f6061565b60408051918252519081900360200190f35b7f42524f4e5a4500000000000000000000000000000000000000000000000000009056fea265627a7a72315820a47962b22ce482c2db3e0aed6f3627c024ff802710e09eee127c54c24e62168764736f6c634300050c0032"; - -type BBronzeConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BBronzeConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BBronze__factory extends ContractFactory { - constructor(...args: BBronzeConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BBronze { - return super.attach(address) as BBronze; - } - connect(signer: Signer): BBronze__factory { - return super.connect(signer) as BBronze__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BBronzeInterface { - return new utils.Interface(_abi) as BBronzeInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BBronze { - return new Contract(address, _abi, signerOrProvider) as BBronze; - } -} diff --git a/src/typechain/factories/BColor__factory.ts b/src/typechain/factories/BColor__factory.ts deleted file mode 100644 index 31fa686..0000000 --- a/src/typechain/factories/BColor__factory.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { BColor, BColorInterface } from "../BColor"; - -const _abi = [ - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, -]; - -export class BColor__factory { - static readonly abi = _abi; - static createInterface(): BColorInterface { - return new utils.Interface(_abi) as BColorInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): BColor { - return new Contract(address, _abi, signerOrProvider) as BColor; - } -} diff --git a/src/typechain/factories/BConst__factory.ts b/src/typechain/factories/BConst__factory.ts deleted file mode 100644 index 6e067f4..0000000 --- a/src/typechain/factories/BConst__factory.ts +++ /dev/null @@ -1,310 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BConst, BConstInterface } from "../BConst"; - -const _abi = [ - { - constant: true, - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "BPOW_PRECISION", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "INIT_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061029c806100206000396000f3fe608060405234801561001057600080fd5b5060043610610108576000357c010000000000000000000000000000000000000000000000000000000090048063b0e0d136116100af578063b0e0d1361461015f578063b7b800a414610167578063ba019dab1461016f578063bc063e1a14610177578063bc694ea21461017f578063c36596a61461012f578063c6580d1214610187578063e4a28a521461010d578063ec0930211461018f57610108565b806309a3bbe41461010d578063189d00ca14610127578063218b53821461012f57806376c7a3c714610137578063867378c51461013f5780639381cd2b14610147578063992e2a921461014f5780639a86139b14610157575b600080fd5b610115610197565b60408051918252519081900360200190f35b6101156101a4565b6101156101b8565b6101156101c4565b6101156101d6565b6101156101ea565b6101156101f7565b610115610203565b610115610227565b61011561022c565b610115610231565b610115610236565b610115610246565b610115610252565b610115610257565b6802b5e3af16b188000081565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b620f4240670de0b6b3a76400006101b4565b64e8d4a51000670de0b6b3a76400006101b4565b68056bc75e2d6310000081565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600881565b600281565b600181565b600a670de0b6b3a76400006101b4565b671bc16d674ec7ffff81565b600081565b6002670de0b6b3a76400006101b456fea265627a7a723158208e1edb1fd771245f6634566b411e4c5031e01c7660ea056767654579a082a4f064736f6c634300050c0032"; - -type BConstConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BConstConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BConst__factory extends ContractFactory { - constructor(...args: BConstConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BConst { - return super.attach(address) as BConst; - } - connect(signer: Signer): BConst__factory { - return super.connect(signer) as BConst__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BConstInterface { - return new utils.Interface(_abi) as BConstInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): BConst { - return new Contract(address, _abi, signerOrProvider) as BConst; - } -} diff --git a/src/typechain/factories/BFactory__factory.ts b/src/typechain/factories/BFactory__factory.ts deleted file mode 100644 index f49c6b3..0000000 --- a/src/typechain/factories/BFactory__factory.ts +++ /dev/null @@ -1,198 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BFactory, BFactoryInterface } from "../BFactory"; - -const _abi = [ - { - inputs: [], - payable: false, - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "blabs", - type: "address", - }, - ], - name: "LOG_BLABS", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "pool", - type: "address", - }, - ], - name: "LOG_NEW_POOL", - type: "event", - }, - { - constant: false, - inputs: [ - { - internalType: "contract BPool", - name: "pool", - type: "address", - }, - ], - name: "collect", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getBLabs", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "b", - type: "address", - }, - ], - name: "isBPool", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [], - name: "newBPool", - outputs: [ - { - internalType: "contract BPool", - name: "", - type: "address", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "b", - type: "address", - }, - ], - name: "setBLabs", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060018054600160a060020a03191633179055615fb1806100326000396000f3fe608060405234801561001057600080fd5b506004361061007e577c0100000000000000000000000000000000000000000000000000000000600035046306ec16f8811461008357806336ffb167146100ab5780639a86139b146100cf578063c2bb6dc2146100e9578063c6ce34fb14610123578063d556c5dc14610149575b600080fd5b6100a96004803603602081101561009957600080fd5b5035600160a060020a0316610151565b005b6100b361033e565b60408051600160a060020a039092168252519081900360200190f35b6100d761034d565b60408051918252519081900360200190f35b61010f600480360360208110156100ff57600080fd5b5035600160a060020a0316610371565b604080519115158252519081900360200190f35b6100a96004803603602081101561013957600080fd5b5035600160a060020a031661038f565b6100b3610456565b600154600160a060020a031633146101b3576040805160e560020a62461bcd02815260206004820152600d60248201527f4552525f4e4f545f424c41425300000000000000000000000000000000000000604482015290519081900360640190fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600091600160a060020a038416916370a0823191602480820192602092909190829003018186803b15801561021657600080fd5b505afa15801561022a573d6000803e3d6000fd5b505050506040513d602081101561024057600080fd5b5051600154604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0392831660048201526024810184905290519293506000929185169163a9059cbb9160448082019260209290919082900301818787803b1580156102b657600080fd5b505af11580156102ca573d6000803e3d6000fd5b505050506040513d60208110156102e057600080fd5b5051905080610339576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f45524332305f4641494c454400000000000000000000000000000000604482015290519081900360640190fd5b505050565b600154600160a060020a031690565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600160a060020a031660009081526020819052604090205460ff1690565b600154600160a060020a031633146103f1576040805160e560020a62461bcd02815260206004820152600d60248201527f4552525f4e4f545f424c41425300000000000000000000000000000000000000604482015290519081900360640190fd5b604051600160a060020a0382169033907ff586fa6ee1fc42f5b727f3b214ccbd0b6d7e698c45d49ba32f224fbb8670155d90600090a36001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000806040516104659061054f565b604051809103906000f080158015610481573d6000803e3d6000fd5b50600160a060020a038116600081815260208190526040808220805460ff1916600117905551929350909133917f8ccec77b0cb63ac2cafd0f5de8cdfadab91ce656d262240ba8a6343bccc5f94591a3604080517f92eefe9b0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a038316916392eefe9b91602480830192600092919082900301818387803b15801561053157600080fd5b505af1158015610545573d6000803e3d6000fd5b5092935050505090565b615a208061055d8339019056fe60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a0908152620000409160039190620000f7565b506040805180820190915260038082527f425054000000000000000000000000000000000000000000000000000000000060209092019182526200008791600491620000f7565b506005805460ff19166012179055348015620000a257600080fd5b5060068054600580546201000060b060020a031916336201000081029190911790915564e8d4a51000600755600160a060020a03199091161760a060020a60ff02191690556008805460ff191690556200019c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b6200019991905b8082111562000178576000815560010162000183565b90565b61587480620001ac6000396000f3fe608060405234801561001057600080fd5b5060043610610378576000357c0100000000000000000000000000000000000000000000000000000000900480638d4e4083116101e7578063bc694ea211610122578063d73dd623116100c5578063d73dd62314610b7f578063dd62ed3e14610bab578063e4a28a521461047e578063e4e1e53814610bd9578063ec09302114610c0b578063f1b8a9b714610c13578063f8b2cb4f14610c39578063f8d6aed414610c5f578063fde924f714610c9a57610378565b8063bc694ea214610ad9578063be3bbd2e14610ae1578063c36596a6146104f2578063c6580d1214610b39578063cc77828d14610b41578063cd2ed8fb14610b49578063cf5e7bd314610b51578063d4cadf6814610b7757610378565b8063a221ee491161018a578063a221ee49146109a6578063a9059cbb146109db578063b02f0b7314610a07578063b0e0d13614610a7e578063b7b800a414610a86578063ba019dab14610a8e578063ba9530a614610a96578063bc063e1a14610ad157610378565b80638d4e40831461092a57806392eefe9b14610932578063936c3477146109585780639381cd2b14610960578063948d8ce61461096857806395d89b411461098e578063992e2a92146109965780639a86139b1461099e57610378565b806349b59552116102b757806376c7a3c71161025a57806376c7a3c7146107aa5780637c5e9ea4146107b25780638201aa3f1461080b57806382f652ad1461084b5780638656b65314610886578063867378c5146108c157806389298012146108c95780638c28cbe81461090457610378565b806349b595521461061b5780634bb278f31461063a5780634f69c0d4146106425780635c1bbaf7146106b95780635db34277146106f457806366188463146107265780636d06dfa01461075257806370a082311461078457610378565b8063218b53821161031f578063218b5382146104f257806323b872dd146104fa5780632f37b624146105305780633018205f14610556578063313ce5671461057a57806334e19907146105985780633fdddaa2146105b757806346ab38f1146105e957610378565b806302c967481461037d57806306fdde03146103c1578063095ea7b31461043e57806309a3bbe41461047e5780631446a7ff1461048657806315e84af9146104b457806318160ddd146104e2578063189d00ca146104ea575b600080fd5b6103af6004803603606081101561039357600080fd5b50600160a060020a038135169060208101359060400135610ca2565b60408051918252519081900360200190f35b6103c9610fef565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104035781810151838201526020016103eb565b50505050905090810190601f1680156104305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046a6004803603604081101561045457600080fd5b50600160a060020a038135169060200135611085565b604080519115158252519081900360200190f35b6103af6110da565b6103af6004803603604081101561049c57600080fd5b50600160a060020a03813581169160200135166110e7565b6103af600480360360408110156104ca57600080fd5b50600160a060020a0381358116916020013516611241565b6103af611392565b6103af611398565b6103af6113ac565b61046a6004803603606081101561051057600080fd5b50600160a060020a038135811691602081013590911690604001356113b8565b61046a6004803603602081101561054657600080fd5b5035600160a060020a031661151d565b61055e61153b565b60408051600160a060020a039092168252519081900360200190f35b61058261159c565b6040805160ff9092168252519081900360200190f35b6105b5600480360360208110156105ae57600080fd5b50356115a5565b005b6105b5600480360360608110156105cd57600080fd5b50600160a060020a0381351690602081013590604001356117c9565b6103af600480360360608110156105ff57600080fd5b50600160a060020a038135169060208101359060400135611c15565b6105b56004803603602081101561063157600080fd5b50351515611f01565b6105b5612092565b6105b56004803603604081101561065857600080fd5b8135919081019060408101602082013564010000000081111561067a57600080fd5b82018360208201111561068c57600080fd5b803590602001918460208302840111640100000000831117156106ae57600080fd5b5090925090506122a9565b6103af600480360360c08110156106cf57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135612590565b6103af6004803603606081101561070a57600080fd5b50600160a060020a038135169060208101359060400135612648565b61046a6004803603604081101561073c57600080fd5b50600160a060020a038135169060200135612919565b6103af6004803603606081101561076857600080fd5b50600160a060020a0381351690602081013590604001356129f1565b6103af6004803603602081101561079a57600080fd5b5035600160a060020a0316612cf0565b6103af612d0b565b6107f2600480360360a08110156107c857600080fd5b50600160a060020a0381358116916020810135916040820135169060608101359060800135612d1d565b6040805192835260208301919091528051918290030190f35b6107f2600480360360a081101561082157600080fd5b50600160a060020a038135811691602081013591604082013516906060810135906080013561320d565b6103af600480360360c081101561086157600080fd5b5080359060208101359060408101359060608101359060808101359060a001356136e4565b6103af600480360360c081101561089c57600080fd5b5080359060208101359060408101359060608101359060808101359060a001356137a3565b6103af613844565b6103af600480360360c08110156108df57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135613858565b6105b56004803603602081101561091a57600080fd5b5035600160a060020a0316613908565b61046a613ad9565b6105b56004803603602081101561094857600080fd5b5035600160a060020a0316613ae2565b6103af613c2c565b6103af613c84565b6103af6004803603602081101561097e57600080fd5b5035600160a060020a0316613c91565b6103c9613d5f565b6103af613dc0565b6103af613dcc565b6103af600480360360a08110156109bc57600080fd5b5080359060208101359060408101359060608101359060800135613df0565b61046a600480360360408110156109f157600080fd5b50600160a060020a038135169060200135613e55565b6105b560048036036040811015610a1d57600080fd5b81359190810190604081016020820135640100000000811115610a3f57600080fd5b820183602082011115610a5157600080fd5b80359060200191846020830284011164010000000083111715610a7357600080fd5b509092509050613e6b565b6103af61419f565b6103af6141a4565b6103af6141a9565b6103af600480360360c0811015610aac57600080fd5b5080359060208101359060408101359060608101359060808101359060a001356141ae565b6103af61422f565b6103af61423f565b610ae961424b565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610b25578181015183820152602001610b0d565b505050509050019250505060405180910390f35b6103af614343565b610ae9614348565b6103af614399565b6105b560048036036020811015610b6757600080fd5b5035600160a060020a031661439f565b6103af61472c565b61046a60048036036040811015610b9557600080fd5b50600160a060020a038135169060200135614784565b6103af60048036036040811015610bc157600080fd5b50600160a060020a0381358116916020013516614805565b6105b560048036036060811015610bef57600080fd5b50600160a060020a038135169060208101359060400135614830565b6103af614ab4565b6103af60048036036020811015610c2957600080fd5b5035600160a060020a0316614ac4565b6103af60048036036020811015610c4f57600080fd5b5035600160a060020a0316614ba4565b6103af600480360360c0811015610c7557600080fd5b5080359060208101359060408101359060608101359060808101359060a00135614c72565b61046a614cf5565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615610d53576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16610daa576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff16610e08576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a60205260409020600390810154610e3d91670de0b6b3a76400005b04600101614d05565b831115610e82576040805160e560020a62461bcd02815260206004820152601160248201526000805160206156e0833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b54600754610ebc949392919089906136e4565b915081610f01576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b82821115610f47576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b610f55816003015485614dee565b60038201556000610f668382614d05565b604080518781529051919250600160a060020a0388169133916000805160206157a0833981519152919081900360200190a3610fa23384614e5f565b610fb4610faf8483614dee565b614e6d565b600554610fd090620100009004600160a060020a031682614e79565b610fdb863387614e83565b50506005805461ff00191690559392505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561107b5780601f106110505761010080835404028352916020019161107b565b820191906000526020600020905b81548152906001019060200180831161105e57829003601f168201915b5050505050905090565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390926000805160206157c0833981519152928290030190a35060015b92915050565b6802b5e3af16b188000081565b600554600090610100900460ff1615611138576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff16611196576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff166111f4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a038084166000908152600a602052604080822092851682528120600380840154600280860154928401549084015493946112389492939290613df0565b95945050505050565b600554600090610100900460ff1615611292576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff166112f0576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff1661134e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a038084166000908152600a602052604080822092851682529020600380830154600280850154928401549084015460075461123894929190613df0565b60025490565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b600033600160a060020a03851614806113f45750600160a060020a03841660009081526001602090815260408083203384529091529020548211155b611448576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f42544f4b454e5f4241445f43414c4c45520000000000000000000000604482015290519081900360640190fd5b611453848484614f78565b33600160a060020a038516148015906114915750600160a060020a038416600090815260016020908152604080832033845290915290205460001914155b1561151357600160a060020a03841660009081526001602090815260408083203384529091529020546114c49083614dee565b600160a060020a03858116600090815260016020908152604080832033808552908352928190208590558051948552519287169391926000805160206157c08339815191529281900390910190a35b5060019392505050565b600160a060020a03166000908152600a602052604090205460ff1690565b600554600090610100900460ff161561158c576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b50600654600160a060020a031690565b60055460ff1690565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611654576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16156116ac576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b600654600160a060020a031633146116fc576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b64e8d4a51000811015611759576040805160e560020a62461bcd02815260206004820152600b60248201527f4552525f4d494e5f464545000000000000000000000000000000000000000000604482015290519081900360640190fd5b67016345785d8a00008111156117b9576040805160e560020a62461bcd02815260206004820152600b60248201527f4552525f4d41585f464545000000000000000000000000000000000000000000604482015290519081900360640190fd5b6007556005805461ff0019169055565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611878576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a03909116146118d9576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff16611937576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60085460ff1615611980576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b670de0b6b3a76400008110156119e0576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d494e5f574549474854000000000000000000000000000000000000604482015290519081900360640190fd5b6802b5e3af16b1880000811115611a41576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d41585f574549474854000000000000000000000000000000000000604482015290519081900360640190fd5b620f4240821015611a9c576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f4d494e5f42414c414e43450000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090206002015480821115611b3f57611ad5600b54611ad08484614dee565b615082565b600b8190556802b5e3af16b18800001015611b3a576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f4d41585f544f54414c5f574549474854000000000000000000000000604482015290519081900360640190fd5b611b60565b80821015611b6057611b5c600b54611b578385614dee565b614dee565b600b555b600160a060020a0384166000908152600a602052604090206002810183905560030180549084905580841115611ba957611ba48533611b9f8785614dee565b6150df565b611c03565b80841015611c03576000611bbd8286614dee565b90506000611bcc826000614d05565b9050611be28733611bdd8585614dee565b614e83565b600554611c00908890620100009004600160a060020a031683614e83565b50505b50506005805461ff0019169055505050565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611cc6576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16611d1d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff16611d7b576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b54600754611db594939291908990613858565b915082821015611dfd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a60205260409020600390810154611e2d91670de0b6b3a7640000610e34565b821115611e72576040805160e560020a62461bcd02815260206004820152601160248201526000805160206156e0833981519152604482015290519081900360640190fd5b611e80816003015483614dee565b60038201556000611e918582614d05565b604080518581529051919250600160a060020a0388169133916000805160206157a0833981519152919081900360200190a3611ecd3386614e5f565b611eda610faf8683614dee565b600554611ef690620100009004600160a060020a031682614e79565b610fdb863385614e83565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611fb0576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff1615612008576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b600654600160a060020a03163314612058576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b6006805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556005805461ff0019169055565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612141576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a03909116146121a2576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b60085460ff16156121eb576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b60095460021115612246576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d494e5f544f4b454e53000000000000000000000000000000000000604482015290519081900360640190fd5b6008805460ff191660011790556006805474ff0000000000000000000000000000000000000000191660a060020a17905561228968056bc75e2d63100000615151565b61229c3368056bc75e2d63100000614e79565b6005805461ff0019169055565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612358576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff166123af576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b60006123b9611392565b905060006123c7858361515a565b90508061240c576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b60005b60095481101561257c5760006009828154811061242857fe5b6000918252602080832090910154600160a060020a0316808352600a90915260408220600301549092509061245d8583614d05565b9050806124a2576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b8787858181106124ae57fe5b905060200201358111156124fa576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a60205260409020600301546125209082615082565b600160a060020a0384166000818152600a60209081526040918290206003019390935580518481529051919233926000805160206157008339815191529281900390910190a36125718333836150df565b50505060010161240f565b5061258685615151565b611c033386614e79565b60008061259d878661515a565b905060006125ab8786615082565b905060006125b9828961515a565b905060006125cf670de0b6b3a76400008561515a565b905060006125dd8383615296565b905060006125eb828e614d05565b905060006125f9828f614dee565b90506000612618612612670de0b6b3a76400008a614dee565b8b614d05565b905061263582612630670de0b6b3a764000084614dee565b61515a565b9f9e505050505050505050505050505050565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff16156126f9576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16612750576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff166127ae576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a60205260409020600301546127e0906002670de0b6b3a76400005b04614d05565b831115612825576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615740833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b5460075461285f949392919089906137a3565b9150828210156128a7576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b6128b5816003015485615082565b6003820155604080518581529051600160a060020a0387169133916000805160206157008339815191529181900360200190a36128f182615151565b6128fb3383614e79565b6129068533866150df565b506005805461ff00191690559392505050565b336000908152600160209081526040808320600160a060020a03861684529091528120548083111561296e57336000908152600160209081526040808320600160a060020a038816845290915281205561299d565b6129788184614dee565b336000908152600160209081526040808320600160a060020a03891684529091529020555b336000818152600160209081526040808320600160a060020a0389168085529083529281902054815190815290519293926000805160206157c0833981519152929181900390910190a35060019392505050565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612aa2576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16612af9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff16612b57576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b54600754612b9194939291908990612590565b915081612bd6576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b82821115612c1c576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a6020526040902060030154612c4c906002670de0b6b3a76400006127da565b821115612c91576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615740833981519152604482015290519081900360640190fd5b612c9f816003015483615082565b6003820155604080518381529051600160a060020a0387169133916000805160206157008339815191529181900360200190a3612cdb84615151565b612ce53385614e79565b6129068533846150df565b600160a060020a031660009081526020819052604090205490565b620f4240670de0b6b3a76400006113a8565b6040805160208082523690820181905260009283923392600160e060020a03198535169285929081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612dbd576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff001916610100179055600160a060020a0387166000908152600a602052604090205460ff16612e2a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a602052604090205460ff16612e88576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60065460a060020a900460ff16612ee9576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f535741505f4e4f545f5055424c494300000000000000000000000000604482015290519081900360640190fd5b600160a060020a038088166000908152600a602052604080822092881682529020600380820154612f2291670de0b6b3a7640000610e34565b861115612f67576040805160e560020a62461bcd02815260206004820152601160248201526000805160206156e0833981519152604482015290519081900360640190fd5b6000612f888360030154846002015484600301548560020154600754613df0565b905085811115612fe2576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f4241445f4c494d49545f505249434500000000000000000000000000604482015290519081900360640190fd5b61300283600301548460020154846003015485600201548b600754614c72565b94508885111561304a576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b613058836003015486615082565b836003018190555061306e826003015488614dee565b600380840182905584015460028086015490850154600754613091949190613df0565b9350808410156130d9576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b85841115613131576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f4c494d49545f50524943450000000000000000000000000000000000604482015290519081900360640190fd5b61313b858861515a565b811115613180576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b87600160a060020a03168a600160a060020a031633600160a060020a03167f908fb5ee8f16c6bc9bc3690973819f32a4d4b10188134543c88706e0e1d43378888b604051808381526020018281526020019250505060405180910390a46131e88a33876150df565b6131f3883389614e83565b5050506005805461ff001916905590969095509350505050565b6040805160208082523690820181905260009283923392600160e060020a03198535169285929081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff16156132ad576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff001916610100179055600160a060020a0387166000908152600a602052604090205460ff1661331a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a602052604090205460ff16613378576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60065460a060020a900460ff166133d9576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f535741505f4e4f545f5055424c494300000000000000000000000000604482015290519081900360640190fd5b600160a060020a038088166000908152600a6020526040808220928816825290206003820154613413906002670de0b6b3a76400006127da565b881115613458576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615740833981519152604482015290519081900360640190fd5b60006134798360030154846002015484600301548560020154600754613df0565b9050858111156134d3576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f4241445f4c494d49545f505249434500000000000000000000000000604482015290519081900360640190fd5b6134f383600301548460020154846003015485600201548d6007546141ae565b94508685101561353b576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b61354983600301548a615082565b836003018190555061355f826003015486614dee565b600380840182905584015460028086015490850154600754613582949190613df0565b9350808410156135ca576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b85841115613622576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f4c494d49545f50524943450000000000000000000000000000000000604482015290519081900360640190fd5b61362c898661515a565b811115613671576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b87600160a060020a03168a600160a060020a031633600160a060020a03167f908fb5ee8f16c6bc9bc3690973819f32a4d4b10188134543c88706e0e1d433788c89604051808381526020018281526020019250505060405180910390a46136d98a338b6150df565b6131f3883387614e83565b6000806136f1878661515a565b90506000613707670de0b6b3a764000083614dee565b905060006137158286614d05565b9050600061372f87612630670de0b6b3a764000085614dee565b9050600061373d8c83614dee565b9050600061374b828e61515a565b905060006137598288615296565b90506000613767828e614d05565b905060006137758e83614dee565b905061378e81612630670de0b6b3a76400006000614dee565b99505050505050505050509695505050505050565b6000806137b0878661515a565b905060006137cf6137c9670de0b6b3a764000084614dee565b85614d05565b905060006137ee866137e9670de0b6b3a764000085614dee565b614d05565b905060006137fc8b83615082565b9050600061380a828d61515a565b905060006138188287615296565b90506000613826828d614d05565b9050613832818d614dee565b9e9d5050505050505050505050505050565b64e8d4a51000670de0b6b3a76400006113a8565b600080613865878661515a565b90506000613880856137e9670de0b6b3a76400006000614dee565b9050600061388e8883614dee565b9050600061389c828a61515a565b905060006138bb826138b6670de0b6b3a76400008861515a565b615296565b905060006138c9828e614d05565b905060006138d78e83614dee565b905060006138f0612612670de0b6b3a76400008a614dee565b9050612635826137e9670de0b6b3a764000084614dee565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff16156139b7576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff001916610100179055600160a060020a0381166000908152600a602052604090205460ff16613a24576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038316916370a08231916024808301926020929190829003018186803b158015613a8357600080fd5b505afa158015613a97573d6000803e3d6000fd5b505050506040513d6020811015613aad57600080fd5b5051600160a060020a039091166000908152600a60205260409020600301556005805461ff0019169055565b60085460ff1690565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615613b91576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a0390911614613bf2576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556005805461ff0019169055565b600554600090610100900460ff1615613c7d576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b50600b5490565b68056bc75e2d6310000081565b600554600090610100900460ff1615613ce2576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff16613d40576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b50600160a060020a03166000908152600a602052604090206002015490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561107b5780601f106110505761010080835404028352916020019161107b565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600080613dfd878761515a565b90506000613e0b868661515a565b90506000613e19838361515a565b90506000613e3b670de0b6b3a7640000612630670de0b6b3a764000089614dee565b9050613e478282614d05565b9a9950505050505050505050565b6000613e62338484614f78565b50600192915050565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615613f1a576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16613f71576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b6000613f7b611392565b90506000613f8a856000614d05565b90506000613f988683614dee565b90506000613fa6828561515a565b905080613feb576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b613ff53388614e5f565b60055461401190620100009004600160a060020a031684614e79565b61401a82614e6d565b60005b60095481101561418a5760006009828154811061403657fe5b6000918252602080832090910154600160a060020a0316808352600a90915260408220600301549092509061406b8583614d05565b9050806140b0576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b8989858181106140bc57fe5b90506020020135811015614108576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090206003015461412e9082614dee565b600160a060020a0384166000818152600a60209081526040918290206003019390935580518481529051919233926000805160206157a08339815191529281900390910190a361417f833383614e83565b50505060010161401d565b50506005805461ff0019169055505050505050565b600881565b600281565b600181565b6000806141bb878661515a565b905060006141d1670de0b6b3a764000085614dee565b90506141dd8582614d05565b905060006141ef8a6126308c85615082565b905060006141fd8285615296565b90506000614213670de0b6b3a764000083614dee565b905061421f8a82614d05565b9c9b505050505050505050505050565b600a670de0b6b3a76400006113a8565b671bc16d674ec7ffff81565b600554606090610100900460ff161561429c576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b60085460ff166142e4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600980548060200260200160405190810160405280929190818152602001828054801561107b57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161431c575050505050905090565b600081565b600554606090610100900460ff16156142e4576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b60095490565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff161561444e576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a03909116146144af576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b600160a060020a0381166000908152600a602052604090205460ff1661450d576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60085460ff1615614556576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b600160a060020a0381166000908152600a60205260408120600301549061457d8282614d05565b600b54600160a060020a0385166000908152600a60205260409020600201549192506145a891614dee565b600b55600160a060020a0383166000908152600a60205260409020600101546009805460001981019190829081106145dc57fe5b60009182526020909120015460098054600160a060020a03909216918490811061460257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555081600a60006009858154811061464257fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902060010155600980548061467557fe5b600082815260208082206000199084018101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556040805160808101825283815280830184815281830185815260608301868152600160a060020a038c168752600a909552929094209051815460ff1916901515178155925160018401555160028301555160039091015561470e8533611bdd8787614dee565b600554611c03908690620100009004600160a060020a031685614e83565b600554600090610100900460ff161561477d576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b5060075490565b336000908152600160209081526040808320600160a060020a03861684529091528120546147b29083615082565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191936000805160206157c0833981519152929081900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600654600160a060020a031633146148e1576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff1615614952576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f49535f424f554e440000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff161561499b576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b6009546008116149f5576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d41585f544f4b454e53000000000000000000000000000000000000604482015290519081900360640190fd5b604080516080810182526001808252600980546020808501918252600085870181815260608701828152600160a060020a038c16808452600a9094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805473ffffffffffffffffffffffffffffffffffffffff19169091179055614aaf8383836117c9565b505050565b6002670de0b6b3a76400006113a8565b600554600090610100900460ff1615614b15576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff16614b73576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a6020526040902060020154600b54614b9d90829061515a565b9392505050565b600554600090610100900460ff1615614bf5576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff16614c53576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b50600160a060020a03166000908152600a602052604090206003015490565b600080614c7f858861515a565b90506000614c8d8786614dee565b90506000614c9b888361515a565b90506000614ca98285615296565b9050614cbd81670de0b6b3a7640000614dee565b9050614cd1670de0b6b3a764000087614dee565b9450614ce6614ce08c83614d05565b8661515a565b9b9a5050505050505050505050565b60065460a060020a900460ff1690565b6000828202831580614d1f575082848281614d1c57fe5b04145b614d73576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b20000810181811015614dd6576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b6000670de0b6b3a7640000825b049695505050505050565b6000806000614dfd85856153b9565b915091508015614e57576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604482015290519081900360640190fd5b509392505050565b614e6982826153de565b5050565b614e76816153e9565b50565b614e6982826154b3565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163a9059cbb91604480830192602092919082900301818787803b158015614eef57600080fd5b505af1158015614f03573d6000803e3d6000fd5b505050506040513d6020811015614f1957600080fd5b5051905080614f72576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f45524332305f46414c53450000000000000000000000000000000000604482015290519081900360640190fd5b50505050565b600160a060020a038316600090815260208190526040902054811115614fe8576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e53554646494349454e545f42414c000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205461500b9082614dee565b600160a060020a03808516600090815260208190526040808220939093559084168152205461503a9082615082565b600160a060020a0380841660008181526020818152604091829020949094558051858152905191939287169260008051602061576083398151915292918290030190a3505050565b600082820183811015614b9d576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301523060248301526044820184905291516000928616916323b872dd91606480830192602092919082900301818787803b158015614eef57600080fd5b614e76816154be565b6000816151b1576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f4449565f5a45524f0000000000000000000000000000000000000000604482015290519081900360640190fd5b670de0b6b3a764000083028315806151d95750670de0b6b3a76400008482816151d657fe5b04145b61522d576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604482015290519081900360640190fd5b6002830481018181101561528b576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604482015290519081900360640190fd5b6000848281614de357fe5b600060018310156152f1576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f42504f575f424153455f544f4f5f4c4f570000000000000000000000604482015290519081900360640190fd5b671bc16d674ec7ffff831115615351576040805160e560020a62461bcd02815260206004820152601660248201527f4552525f42504f575f424153455f544f4f5f4849474800000000000000000000604482015290519081900360640190fd5b600061535c83615521565b9050600061536a8483614dee565b905060006153808661537b8561553c565b61554a565b9050816153915792506110d4915050565b60006153a287846305f5e1006155a1565b90506153ae8282614d05565b979650505050505050565b6000808284106153cf57505080820360006153d7565b505081810360015b9250929050565b614e69823083614f78565b30600090815260208190526040902054811115615450576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e53554646494349454e545f42414c000000000000000000000000604482015290519081900360640190fd5b3060009081526020819052604090205461546a9082614dee565b306000908152602081905260409020556002546154879082614dee565b60025560408051828152905160009130916000805160206157608339815191529181900360200190a350565b614e69308383614f78565b306000908152602081905260409020546154d89082615082565b306000908152602081905260409020556002546154f59082615082565b60025560408051828152905130916000916000805160206157608339815191529181900360200190a350565b6000670de0b6b3a76400006155358361553c565b0292915050565b670de0b6b3a7640000900490565b6000806002830661556357670de0b6b3a7640000615565565b835b90506002830492505b8215614b9d5761557e8485614d05565b93506002830615615596576155938185614d05565b90505b60028304925061556e565b60008281806155b887670de0b6b3a76400006153b9565b9092509050670de0b6b3a764000080600060015b888410615670576000670de0b6b3a7640000820290506000806156008a6155fb85670de0b6b3a7640000614dee565b6153b9565b91509150615612876137e9848c614d05565b965061561e878461515a565b96508661562d57505050615670565b8715615637579315935b8015615641579315935b8415615658576156518688614dee565b9550615665565b6156628688615082565b95505b5050506001016155cc565b5090999850505050505050505056fe4552525f4e4f545f46494e414c495a45440000000000000000000000000000004552525f5245454e5452590000000000000000000000000000000000000000004552525f4c494d49545f494e00000000000000000000000000000000000000004552525f4d41585f4f55545f524154494f00000000000000000000000000000063982df10efd8dfaaaa0fcc7f50b2d93b7cba26ccc48adee2873220d485dc39a4552525f4e4f545f434f4e54524f4c4c455200000000000000000000000000004552525f4d41585f494e5f524154494f00000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552525f4e4f545f424f554e4400000000000000000000000000000000000000e74c91552b64c2e2e7bd255639e004e693bd3e1d01cc33e65610b86afcc1ffed8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9254552525f49535f46494e414c495a4544000000000000000000000000000000004552525f4c494d49545f4f5554000000000000000000000000000000000000004552525f4d4154485f415050524f580000000000000000000000000000000000a265627a7a72315820c10c9da1514e0bed4d45df3018c523ad6eeb6425355cc805706141a6cfaebd2d64736f6c634300050c0032a265627a7a72315820fe13a16ef94976f0aaa126e9e52480e2c7f42960701f0fae4fdcdf8b2f20be3c64736f6c634300050c0032"; - -type BFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BFactory__factory extends ContractFactory { - constructor(...args: BFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BFactory { - return super.attach(address) as BFactory; - } - connect(signer: Signer): BFactory__factory { - return super.connect(signer) as BFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BFactoryInterface { - return new utils.Interface(_abi) as BFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BFactory { - return new Contract(address, _abi, signerOrProvider) as BFactory; - } -} diff --git a/src/typechain/factories/BMath__factory.ts b/src/typechain/factories/BMath__factory.ts deleted file mode 100644 index 1a65725..0000000 --- a/src/typechain/factories/BMath__factory.ts +++ /dev/null @@ -1,627 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BMath, BMathInterface } from "../BMath"; - -const _abi = [ - { - constant: true, - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "BPOW_PRECISION", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "INIT_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcInGivenOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcOutGivenIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcPoolInGivenSingleOut", - outputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcPoolOutGivenSingleIn", - outputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcSingleInGivenPoolOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcSingleOutGivenPoolIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcSpotPrice", - outputs: [ - { - internalType: "uint256", - name: "spotPrice", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610e77806100206000396000f3fe608060405234801561001057600080fd5b5060043610610175576000357c010000000000000000000000000000000000000000000000000000000090048063a221ee49116100e0578063bc694ea211610099578063bc694ea214610348578063c36596a61461019c578063c6580d1214610350578063e4a28a521461017a578063ec09302114610358578063f8d6aed41461036057610175565b8063a221ee49146102b8578063b0e0d136146102ed578063b7b800a4146102f5578063ba019dab146102fd578063ba9530a614610305578063bc063e1a1461034057610175565b80638656b653116101325780638656b65314610222578063867378c51461025d57806389298012146102655780639381cd2b146102a0578063992e2a92146102a85780639a86139b146102b057610175565b806309a3bbe41461017a578063189d00ca14610194578063218b53821461019c5780635c1bbaf7146101a457806376c7a3c7146101df57806382f652ad146101e7575b600080fd5b61018261039b565b60408051918252519081900360200190f35b6101826103a8565b6101826103bc565b610182600480360360c08110156101ba57600080fd5b5080359060208101359060408101359060608101359060808101359060a001356103c8565b610182610480565b610182600480360360c08110156101fd57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135610492565b610182600480360360c081101561023857600080fd5b5080359060208101359060408101359060608101359060808101359060a00135610551565b6101826105f2565b610182600480360360c081101561027b57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135610606565b6101826106b6565b6101826106c3565b6101826106cf565b610182600480360360a08110156102ce57600080fd5b50803590602081013590604081013590606081013590608001356106f3565b610182610758565b61018261075d565b610182610762565b610182600480360360c081101561031b57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135610767565b6101826107e8565b6101826107f8565b610182610804565b610182610809565b610182600480360360c081101561037657600080fd5b5080359060208101359060408101359060608101359060808101359060a00135610819565b6802b5e3af16b188000081565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b6000806103d5878661089c565b905060006103e387866109e5565b905060006103f1828961089c565b90506000610407670de0b6b3a76400008561089c565b905060006104158383610a49565b90506000610423828e610b6c565b90506000610431828f610c4e565b9050600061045061044a670de0b6b3a76400008a610c4e565b8b610b6c565b905061046d82610468670de0b6b3a764000084610c4e565b61089c565b9f9e505050505050505050505050505050565b620f4240670de0b6b3a76400006103b8565b60008061049f878661089c565b905060006104b5670de0b6b3a764000083610c4e565b905060006104c38286610b6c565b905060006104dd87610468670de0b6b3a764000085610c4e565b905060006104eb8c83610c4e565b905060006104f9828e61089c565b905060006105078288610a49565b90506000610515828e610b6c565b905060006105238e83610c4e565b905061053c81610468670de0b6b3a76400006000610c4e565b99505050505050505050509695505050505050565b60008061055e878661089c565b9050600061057d610577670de0b6b3a764000084610c4e565b85610b6c565b9050600061059c86610597670de0b6b3a764000085610c4e565b610b6c565b905060006105aa8b836109e5565b905060006105b8828d61089c565b905060006105c68287610a49565b905060006105d4828d610b6c565b90506105e0818d610c4e565b9e9d5050505050505050505050505050565b64e8d4a51000670de0b6b3a76400006103b8565b600080610613878661089c565b9050600061062e85610597670de0b6b3a76400006000610c4e565b9050600061063c8883610c4e565b9050600061064a828a61089c565b9050600061066982610664670de0b6b3a76400008861089c565b610a49565b90506000610677828e610b6c565b905060006106858e83610c4e565b9050600061069e61044a670de0b6b3a76400008a610c4e565b905061046d82610597670de0b6b3a764000084610c4e565b68056bc75e2d6310000081565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600080610700878761089c565b9050600061070e868661089c565b9050600061071c838361089c565b9050600061073e670de0b6b3a7640000610468670de0b6b3a764000089610c4e565b905061074a8282610b6c565b9a9950505050505050505050565b600881565b600281565b600181565b600080610774878661089c565b9050600061078a670de0b6b3a764000085610c4e565b90506107968582610b6c565b905060006107a88a6104688c856109e5565b905060006107b68285610a49565b905060006107cc670de0b6b3a764000083610c4e565b90506107d88a82610b6c565b9c9b505050505050505050505050565b600a670de0b6b3a76400006103b8565b671bc16d674ec7ffff81565b600081565b6002670de0b6b3a76400006103b8565b600080610826858861089c565b905060006108348786610c4e565b90506000610842888361089c565b905060006108508285610a49565b905061086481670de0b6b3a7640000610c4e565b9050610878670de0b6b3a764000087610c4e565b945061088d6108878c83610b6c565b8661089c565b9b9a5050505050505050505050565b6000816108f3576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f4449565f5a45524f0000000000000000000000000000000000000000604482015290519081900360640190fd5b670de0b6b3a7640000830283158061091b5750670de0b6b3a764000084828161091857fe5b04145b61096f576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604482015290519081900360640190fd5b600283048101818110156109cd576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604482015290519081900360640190fd5b60008482816109d857fe5b0493505050505b92915050565b600082820183811015610a42576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b60006001831015610aa4576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f42504f575f424153455f544f4f5f4c4f570000000000000000000000604482015290519081900360640190fd5b671bc16d674ec7ffff831115610b04576040805160e560020a62461bcd02815260206004820152601660248201527f4552525f42504f575f424153455f544f4f5f4849474800000000000000000000604482015290519081900360640190fd5b6000610b0f83610cbf565b90506000610b1d8483610c4e565b90506000610b3386610b2e85610cda565b610ce8565b905081610b445792506109df915050565b6000610b5587846305f5e100610d3f565b9050610b618282610b6c565b979650505050505050565b6000828202831580610b86575082848281610b8357fe5b04145b610bda576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b20000810181811015610c3d576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b6000670de0b6b3a7640000826109d8565b6000806000610c5d8585610e1d565b915091508015610cb7576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604482015290519081900360640190fd5b509392505050565b6000670de0b6b3a7640000610cd383610cda565b0292915050565b670de0b6b3a7640000900490565b60008060028306610d0157670de0b6b3a7640000610d03565b835b90506002830492505b8215610a4257610d1c8485610b6c565b93506002830615610d3457610d318185610b6c565b90505b600283049250610d0c565b6000828180610d5687670de0b6b3a7640000610e1d565b9092509050670de0b6b3a764000080600060015b888410610e0e576000670de0b6b3a764000082029050600080610d9e8a610d9985670de0b6b3a7640000610c4e565b610e1d565b91509150610db087610597848c610b6c565b9650610dbc878461089c565b965086610dcb57505050610e0e565b8715610dd5579315935b8015610ddf579315935b8415610df657610def8688610c4e565b9550610e03565b610e0086886109e5565b95505b505050600101610d6a565b50909998505050505050505050565b600080828410610e335750508082036000610e3b565b505081810360015b925092905056fea265627a7a72315820b84be0e1b2328c384a2421b9926a285c61c3bde270ed7b0d5998eef0bfd3588564736f6c634300050c0032"; - -type BMathConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BMathConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BMath__factory extends ContractFactory { - constructor(...args: BMathConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BMath { - return super.attach(address) as BMath; - } - connect(signer: Signer): BMath__factory { - return super.connect(signer) as BMath__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BMathInterface { - return new utils.Interface(_abi) as BMathInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): BMath { - return new Contract(address, _abi, signerOrProvider) as BMath; - } -} diff --git a/src/typechain/factories/BNum__factory.ts b/src/typechain/factories/BNum__factory.ts deleted file mode 100644 index 85dd35f..0000000 --- a/src/typechain/factories/BNum__factory.ts +++ /dev/null @@ -1,310 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BNum, BNumInterface } from "../BNum"; - -const _abi = [ - { - constant: true, - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "BPOW_PRECISION", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "INIT_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061029c806100206000396000f3fe608060405234801561001057600080fd5b5060043610610108576000357c010000000000000000000000000000000000000000000000000000000090048063b0e0d136116100af578063b0e0d1361461015f578063b7b800a414610167578063ba019dab1461016f578063bc063e1a14610177578063bc694ea21461017f578063c36596a61461012f578063c6580d1214610187578063e4a28a521461010d578063ec0930211461018f57610108565b806309a3bbe41461010d578063189d00ca14610127578063218b53821461012f57806376c7a3c714610137578063867378c51461013f5780639381cd2b14610147578063992e2a921461014f5780639a86139b14610157575b600080fd5b610115610197565b60408051918252519081900360200190f35b6101156101a4565b6101156101b8565b6101156101c4565b6101156101d6565b6101156101ea565b6101156101f7565b610115610203565b610115610227565b61011561022c565b610115610231565b610115610236565b610115610246565b610115610252565b610115610257565b6802b5e3af16b188000081565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b620f4240670de0b6b3a76400006101b4565b64e8d4a51000670de0b6b3a76400006101b4565b68056bc75e2d6310000081565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600881565b600281565b600181565b600a670de0b6b3a76400006101b4565b671bc16d674ec7ffff81565b600081565b6002670de0b6b3a76400006101b456fea265627a7a7231582036af5e1c07ed442ba96b15f750d042ad247cde804044f3f99d380a001c31e93464736f6c634300050c0032"; - -type BNumConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BNumConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BNum__factory extends ContractFactory { - constructor(...args: BNumConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BNum { - return super.attach(address) as BNum; - } - connect(signer: Signer): BNum__factory { - return super.connect(signer) as BNum__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BNumInterface { - return new utils.Interface(_abi) as BNumInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): BNum { - return new Contract(address, _abi, signerOrProvider) as BNum; - } -} diff --git a/src/typechain/factories/BPoolFeeEscrow__factory.ts b/src/typechain/factories/BPoolFeeEscrow__factory.ts deleted file mode 100644 index 73c0b76..0000000 --- a/src/typechain/factories/BPoolFeeEscrow__factory.ts +++ /dev/null @@ -1,270 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - BPoolFeeEscrow, - BPoolFeeEscrowInterface, -} from "../BPoolFeeEscrow"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "recipient", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "trust", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "reserve", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "claimedFees", - type: "uint256", - }, - ], - name: "ClaimFees", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "recipient", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "trust", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "reserve", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "redeemable", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "fee", - type: "uint256", - }, - ], - name: "Fee", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "trust", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "reserve", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "redeemable", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "refundedFees", - type: "uint256", - }, - ], - name: "RefundFees", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "feeRecipient_", - type: "address", - }, - { - internalType: "address", - name: "trust_", - type: "address", - }, - { - internalType: "uint256", - name: "fee_", - type: "uint256", - }, - { - internalType: "uint256", - name: "reserveAmountIn_", - type: "uint256", - }, - { - internalType: "uint256", - name: "minTokenAmountOut_", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPrice_", - type: "uint256", - }, - ], - name: "buyToken", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "spotPriceAfter", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "recipient_", - type: "address", - }, - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "claimFees", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "refundFees", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061163f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632dbfa73514610046578063db2b292c1461006c578063dc9a7ffb1461007f575b600080fd5b610059610054366004611397565b6100a7565b6040519081526020015b60405180910390f35b61005961007a3660046113d0565b61027c565b61009261008d3660046113ed565b610403565b60408051928352602083019190915201610063565b6000806100b383610832565b905060028160028111156100c9576100c9611446565b14610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209388168352929052205480156102745773ffffffffffffffffffffffffffffffffffffffff8416600090815260056020526040812080548392906101a39084906114a4565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260046020908152604080832093891683529290529081208190556101e8856109d6565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015288811682840152831660608201526080810185905290519192507f4f55a769590f1c0e20a638dce7a4e135e95f8a5ecb2a05e7eef582cce5b5031c919081900360a00190a161027273ffffffffffffffffffffffffffffffffffffffff82168784610b51565b505b949350505050565b60008061028883610832565b9050600181600281111561029e5761029e611446565b14610305576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205480156103fc5773ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260408120819055610362856109d6565b9050600061036f86610c2a565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015285811682840152831660608201526080810186905290519192507f2faadd4ce8b8be8c10cd95882652e780929619ab27641da75536750ef256ca5d919081900360a00190a16103f973ffffffffffffffffffffffffffffffffffffffff83168285610b51565b50505b9392505050565b60008060008611610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f464545000000000000000000000000000000000000000000000000604482015260640161012c565b600061047b88610832565b600281111561048c5761048c611446565b146104f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f454e444544000000000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600460209081526040808320938c16835292905290812080548892906105379084906114bb565b909155505073ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080548892906105719084906114bb565b9091555060009050610582886109d6565b9050600061058f89610c2a565b9050600061059c8a610da4565b905060008173ffffffffffffffffffffffffffffffffffffffff1663b64ef17b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f91906114d3565b90507f6a7dcbbe66188485e365a408a20221fd766c1bb6989b1f5d6f817c258bc67a29338d8d87878f60405161068d9695949392919073ffffffffffffffffffffffffffffffffffffffff9687168152948616602086015292851660408501529084166060840152909216608082015260a081019190915260c00190565b60405180910390a18173ffffffffffffffffffffffffffffffffffffffff1663e211b8756040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106dd57600080fd5b505af11580156106f1573d6000803e3d6000fd5b5050505061072533308b8d61070691906114bb565b73ffffffffffffffffffffffffffffffffffffffff8816929190610f1e565b61074673ffffffffffffffffffffffffffffffffffffffff8516828b610f82565b6040517f8201aa3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018b90528481166044830152606482018a9052608482018990526000918291841690638201aa3f9060a40160408051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906114f0565b909250905061081f73ffffffffffffffffffffffffffffffffffffffff86163384610b51565b909d909c509a5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff168181600281111561086e5761086e611446565b111561087a5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190611514565b9050600281600381111561090157610901611446565b141561095c5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b600381600381111561097057610970611446565b14156109cc5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7691906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f524553455256450000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c259084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611104565b505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cca91906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526003602052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff16633fd8108e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4491906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f305f435250000000000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260036020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f7c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610ba3565b50505050565b80158061102257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190611535565b155b6110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161012c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c259084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610ba3565b6000611166826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112109092919063ffffffff16565b805190915015610c255780806020019051810190611184919061154e565b610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161012c565b606061027484846000858573ffffffffffffffffffffffffffffffffffffffff85163b611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516112c2919061159c565b60006040518083038185875af1925050503d80600081146112ff576040519150601f19603f3d011682016040523d82523d6000602084013e611304565b606091505b509150915061131482828661131f565b979650505050505050565b6060831561132e5750816103fc565b82511561133e5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012c91906115b8565b73ffffffffffffffffffffffffffffffffffffffff8116811461139457600080fd5b50565b600080604083850312156113aa57600080fd5b82356113b581611372565b915060208301356113c581611372565b809150509250929050565b6000602082840312156113e257600080fd5b81356103fc81611372565b60008060008060008060c0878903121561140657600080fd5b863561141181611372565b9550602087013561142181611372565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114b6576114b6611475565b500390565b600082198211156114ce576114ce611475565b500190565b6000602082840312156114e557600080fd5b81516103fc81611372565b6000806040838503121561150357600080fd5b505080516020909101519092909150565b60006020828403121561152657600080fd5b8151600481106103fc57600080fd5b60006020828403121561154757600080fd5b5051919050565b60006020828403121561156057600080fd5b815180151581146103fc57600080fd5b60005b8381101561158b578181015183820152602001611573565b83811115610f7c5750506000910152565b600082516115ae818460208701611570565b9190910192915050565b60208152600082518060208401526115d7816040850160208701611570565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122067cdf1f51edf6901bcfd7e3445b26a4b58fdc5c1160c1dea3bd8228e440692d664736f6c634300080a0033"; - -type BPoolFeeEscrowConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BPoolFeeEscrowConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BPoolFeeEscrow__factory extends ContractFactory { - constructor(...args: BPoolFeeEscrowConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BPoolFeeEscrow { - return super.attach(address) as BPoolFeeEscrow; - } - connect(signer: Signer): BPoolFeeEscrow__factory { - return super.connect(signer) as BPoolFeeEscrow__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BPoolFeeEscrowInterface { - return new utils.Interface(_abi) as BPoolFeeEscrowInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BPoolFeeEscrow { - return new Contract(address, _abi, signerOrProvider) as BPoolFeeEscrow; - } -} diff --git a/src/typechain/factories/BPool__factory.ts b/src/typechain/factories/BPool__factory.ts deleted file mode 100644 index 2d775ff..0000000 --- a/src/typechain/factories/BPool__factory.ts +++ /dev/null @@ -1,1683 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BPool, BPoolInterface } from "../BPool"; - -const _abi = [ - { - inputs: [], - payable: false, - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: true, - inputs: [ - { - indexed: true, - internalType: "bytes4", - name: "sig", - type: "bytes4", - }, - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "LOG_CALL", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - name: "LOG_EXIT", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - name: "LOG_JOIN", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - name: "LOG_SWAP", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - constant: true, - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "BPOW_PRECISION", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "INIT_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "src", - type: "address", - }, - { - internalType: "address", - name: "dst", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "whom", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - { - internalType: "uint256", - name: "denorm", - type: "uint256", - }, - ], - name: "bind", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcInGivenOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcOutGivenIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcPoolInGivenSingleOut", - outputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcPoolOutGivenSingleIn", - outputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcSingleInGivenPoolOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "totalWeight", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcSingleOutGivenPoolIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "uint256", - name: "tokenBalanceIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenBalanceOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenWeightOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "calcSpotPrice", - outputs: [ - { - internalType: "uint256", - name: "spotPrice", - type: "uint256", - }, - ], - payable: false, - stateMutability: "pure", - type: "function", - }, - { - constant: true, - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "decreaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "minAmountsOut", - type: "uint256[]", - }, - ], - name: "exitPool", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPoolAmountIn", - type: "uint256", - }, - ], - name: "exitswapExternAmountOut", - outputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - ], - name: "exitswapPoolAmountIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [], - name: "finalize", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "getBalance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getController", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getCurrentTokens", - outputs: [ - { - internalType: "address[]", - name: "tokens", - type: "address[]", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "getDenormalizedWeight", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getFinalTokens", - outputs: [ - { - internalType: "address[]", - name: "tokens", - type: "address[]", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "getNormalizedWeight", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getNumTokens", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - ], - name: "getSpotPrice", - outputs: [ - { - internalType: "uint256", - name: "spotPrice", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - ], - name: "getSpotPriceSansFee", - outputs: [ - { - internalType: "uint256", - name: "spotPrice", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getSwapFee", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getTotalDenormalizedWeight", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "gulp", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "increaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "t", - type: "address", - }, - ], - name: "isBound", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "isFinalized", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "isPublicSwap", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "maxAmountsIn", - type: "uint256[]", - }, - ], - name: "joinPool", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "minPoolAmountOut", - type: "uint256", - }, - ], - name: "joinswapExternAmountIn", - outputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxAmountIn", - type: "uint256", - }, - ], - name: "joinswapPoolAmountOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - { - internalType: "uint256", - name: "denorm", - type: "uint256", - }, - ], - name: "rebind", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "manager", - type: "address", - }, - ], - name: "setController", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "bool", - name: "public_", - type: "bool", - }, - ], - name: "setPublicSwap", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "setSwapFee", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPrice", - type: "uint256", - }, - ], - name: "swapExactAmountIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "spotPriceAfter", - type: "uint256", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "maxAmountIn", - type: "uint256", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPrice", - type: "uint256", - }, - ], - name: "swapExactAmountOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "spotPriceAfter", - type: "uint256", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "src", - type: "address", - }, - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "unbind", - outputs: [], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a0908152620000409160039190620000f7565b506040805180820190915260038082527f425054000000000000000000000000000000000000000000000000000000000060209092019182526200008791600491620000f7565b506005805460ff19166012179055348015620000a257600080fd5b5060068054600580546201000060b060020a031916336201000081029190911790915564e8d4a51000600755600160a060020a03199091161760a060020a60ff02191690556008805460ff191690556200019c565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013a57805160ff19168380011785556200016a565b828001600101855582156200016a579182015b828111156200016a5782518255916020019190600101906200014d565b50620001789291506200017c565b5090565b6200019991905b8082111562000178576000815560010162000183565b90565b61587480620001ac6000396000f3fe608060405234801561001057600080fd5b5060043610610378576000357c0100000000000000000000000000000000000000000000000000000000900480638d4e4083116101e7578063bc694ea211610122578063d73dd623116100c5578063d73dd62314610b7f578063dd62ed3e14610bab578063e4a28a521461047e578063e4e1e53814610bd9578063ec09302114610c0b578063f1b8a9b714610c13578063f8b2cb4f14610c39578063f8d6aed414610c5f578063fde924f714610c9a57610378565b8063bc694ea214610ad9578063be3bbd2e14610ae1578063c36596a6146104f2578063c6580d1214610b39578063cc77828d14610b41578063cd2ed8fb14610b49578063cf5e7bd314610b51578063d4cadf6814610b7757610378565b8063a221ee491161018a578063a221ee49146109a6578063a9059cbb146109db578063b02f0b7314610a07578063b0e0d13614610a7e578063b7b800a414610a86578063ba019dab14610a8e578063ba9530a614610a96578063bc063e1a14610ad157610378565b80638d4e40831461092a57806392eefe9b14610932578063936c3477146109585780639381cd2b14610960578063948d8ce61461096857806395d89b411461098e578063992e2a92146109965780639a86139b1461099e57610378565b806349b59552116102b757806376c7a3c71161025a57806376c7a3c7146107aa5780637c5e9ea4146107b25780638201aa3f1461080b57806382f652ad1461084b5780638656b65314610886578063867378c5146108c157806389298012146108c95780638c28cbe81461090457610378565b806349b595521461061b5780634bb278f31461063a5780634f69c0d4146106425780635c1bbaf7146106b95780635db34277146106f457806366188463146107265780636d06dfa01461075257806370a082311461078457610378565b8063218b53821161031f578063218b5382146104f257806323b872dd146104fa5780632f37b624146105305780633018205f14610556578063313ce5671461057a57806334e19907146105985780633fdddaa2146105b757806346ab38f1146105e957610378565b806302c967481461037d57806306fdde03146103c1578063095ea7b31461043e57806309a3bbe41461047e5780631446a7ff1461048657806315e84af9146104b457806318160ddd146104e2578063189d00ca146104ea575b600080fd5b6103af6004803603606081101561039357600080fd5b50600160a060020a038135169060208101359060400135610ca2565b60408051918252519081900360200190f35b6103c9610fef565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104035781810151838201526020016103eb565b50505050905090810190601f1680156104305780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61046a6004803603604081101561045457600080fd5b50600160a060020a038135169060200135611085565b604080519115158252519081900360200190f35b6103af6110da565b6103af6004803603604081101561049c57600080fd5b50600160a060020a03813581169160200135166110e7565b6103af600480360360408110156104ca57600080fd5b50600160a060020a0381358116916020013516611241565b6103af611392565b6103af611398565b6103af6113ac565b61046a6004803603606081101561051057600080fd5b50600160a060020a038135811691602081013590911690604001356113b8565b61046a6004803603602081101561054657600080fd5b5035600160a060020a031661151d565b61055e61153b565b60408051600160a060020a039092168252519081900360200190f35b61058261159c565b6040805160ff9092168252519081900360200190f35b6105b5600480360360208110156105ae57600080fd5b50356115a5565b005b6105b5600480360360608110156105cd57600080fd5b50600160a060020a0381351690602081013590604001356117c9565b6103af600480360360608110156105ff57600080fd5b50600160a060020a038135169060208101359060400135611c15565b6105b56004803603602081101561063157600080fd5b50351515611f01565b6105b5612092565b6105b56004803603604081101561065857600080fd5b8135919081019060408101602082013564010000000081111561067a57600080fd5b82018360208201111561068c57600080fd5b803590602001918460208302840111640100000000831117156106ae57600080fd5b5090925090506122a9565b6103af600480360360c08110156106cf57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135612590565b6103af6004803603606081101561070a57600080fd5b50600160a060020a038135169060208101359060400135612648565b61046a6004803603604081101561073c57600080fd5b50600160a060020a038135169060200135612919565b6103af6004803603606081101561076857600080fd5b50600160a060020a0381351690602081013590604001356129f1565b6103af6004803603602081101561079a57600080fd5b5035600160a060020a0316612cf0565b6103af612d0b565b6107f2600480360360a08110156107c857600080fd5b50600160a060020a0381358116916020810135916040820135169060608101359060800135612d1d565b6040805192835260208301919091528051918290030190f35b6107f2600480360360a081101561082157600080fd5b50600160a060020a038135811691602081013591604082013516906060810135906080013561320d565b6103af600480360360c081101561086157600080fd5b5080359060208101359060408101359060608101359060808101359060a001356136e4565b6103af600480360360c081101561089c57600080fd5b5080359060208101359060408101359060608101359060808101359060a001356137a3565b6103af613844565b6103af600480360360c08110156108df57600080fd5b5080359060208101359060408101359060608101359060808101359060a00135613858565b6105b56004803603602081101561091a57600080fd5b5035600160a060020a0316613908565b61046a613ad9565b6105b56004803603602081101561094857600080fd5b5035600160a060020a0316613ae2565b6103af613c2c565b6103af613c84565b6103af6004803603602081101561097e57600080fd5b5035600160a060020a0316613c91565b6103c9613d5f565b6103af613dc0565b6103af613dcc565b6103af600480360360a08110156109bc57600080fd5b5080359060208101359060408101359060608101359060800135613df0565b61046a600480360360408110156109f157600080fd5b50600160a060020a038135169060200135613e55565b6105b560048036036040811015610a1d57600080fd5b81359190810190604081016020820135640100000000811115610a3f57600080fd5b820183602082011115610a5157600080fd5b80359060200191846020830284011164010000000083111715610a7357600080fd5b509092509050613e6b565b6103af61419f565b6103af6141a4565b6103af6141a9565b6103af600480360360c0811015610aac57600080fd5b5080359060208101359060408101359060608101359060808101359060a001356141ae565b6103af61422f565b6103af61423f565b610ae961424b565b60408051602080825283518183015283519192839290830191858101910280838360005b83811015610b25578181015183820152602001610b0d565b505050509050019250505060405180910390f35b6103af614343565b610ae9614348565b6103af614399565b6105b560048036036020811015610b6757600080fd5b5035600160a060020a031661439f565b6103af61472c565b61046a60048036036040811015610b9557600080fd5b50600160a060020a038135169060200135614784565b6103af60048036036040811015610bc157600080fd5b50600160a060020a0381358116916020013516614805565b6105b560048036036060811015610bef57600080fd5b50600160a060020a038135169060208101359060400135614830565b6103af614ab4565b6103af60048036036020811015610c2957600080fd5b5035600160a060020a0316614ac4565b6103af60048036036020811015610c4f57600080fd5b5035600160a060020a0316614ba4565b6103af600480360360c0811015610c7557600080fd5b5080359060208101359060408101359060608101359060808101359060a00135614c72565b61046a614cf5565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615610d53576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16610daa576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff16610e08576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a60205260409020600390810154610e3d91670de0b6b3a76400005b04600101614d05565b831115610e82576040805160e560020a62461bcd02815260206004820152601160248201526000805160206156e0833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b54600754610ebc949392919089906136e4565b915081610f01576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b82821115610f47576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b610f55816003015485614dee565b60038201556000610f668382614d05565b604080518781529051919250600160a060020a0388169133916000805160206157a0833981519152919081900360200190a3610fa23384614e5f565b610fb4610faf8483614dee565b614e6d565b600554610fd090620100009004600160a060020a031682614e79565b610fdb863387614e83565b50506005805461ff00191690559392505050565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561107b5780601f106110505761010080835404028352916020019161107b565b820191906000526020600020905b81548152906001019060200180831161105e57829003601f168201915b5050505050905090565b336000818152600160209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390926000805160206157c0833981519152928290030190a35060015b92915050565b6802b5e3af16b188000081565b600554600090610100900460ff1615611138576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff16611196576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff166111f4576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a038084166000908152600a602052604080822092851682528120600380840154600280860154928401549084015493946112389492939290613df0565b95945050505050565b600554600090610100900460ff1615611292576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff166112f0576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff1661134e576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a038084166000908152600a602052604080822092851682529020600380830154600280850154928401549084015460075461123894929190613df0565b60025490565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b600033600160a060020a03851614806113f45750600160a060020a03841660009081526001602090815260408083203384529091529020548211155b611448576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f42544f4b454e5f4241445f43414c4c45520000000000000000000000604482015290519081900360640190fd5b611453848484614f78565b33600160a060020a038516148015906114915750600160a060020a038416600090815260016020908152604080832033845290915290205460001914155b1561151357600160a060020a03841660009081526001602090815260408083203384529091529020546114c49083614dee565b600160a060020a03858116600090815260016020908152604080832033808552908352928190208590558051948552519287169391926000805160206157c08339815191529281900390910190a35b5060019392505050565b600160a060020a03166000908152600a602052604090205460ff1690565b600554600090610100900460ff161561158c576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b50600654600160a060020a031690565b60055460ff1690565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611654576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16156116ac576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b600654600160a060020a031633146116fc576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b64e8d4a51000811015611759576040805160e560020a62461bcd02815260206004820152600b60248201527f4552525f4d494e5f464545000000000000000000000000000000000000000000604482015290519081900360640190fd5b67016345785d8a00008111156117b9576040805160e560020a62461bcd02815260206004820152600b60248201527f4552525f4d41585f464545000000000000000000000000000000000000000000604482015290519081900360640190fd5b6007556005805461ff0019169055565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611878576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a03909116146118d9576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff16611937576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60085460ff1615611980576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b670de0b6b3a76400008110156119e0576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d494e5f574549474854000000000000000000000000000000000000604482015290519081900360640190fd5b6802b5e3af16b1880000811115611a41576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d41585f574549474854000000000000000000000000000000000000604482015290519081900360640190fd5b620f4240821015611a9c576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f4d494e5f42414c414e43450000000000000000000000000000000000604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090206002015480821115611b3f57611ad5600b54611ad08484614dee565b615082565b600b8190556802b5e3af16b18800001015611b3a576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f4d41585f544f54414c5f574549474854000000000000000000000000604482015290519081900360640190fd5b611b60565b80821015611b6057611b5c600b54611b578385614dee565b614dee565b600b555b600160a060020a0384166000908152600a602052604090206002810183905560030180549084905580841115611ba957611ba48533611b9f8785614dee565b6150df565b611c03565b80841015611c03576000611bbd8286614dee565b90506000611bcc826000614d05565b9050611be28733611bdd8585614dee565b614e83565b600554611c00908890620100009004600160a060020a031683614e83565b50505b50506005805461ff0019169055505050565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611cc6576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16611d1d576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff16611d7b576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b54600754611db594939291908990613858565b915082821015611dfd576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a60205260409020600390810154611e2d91670de0b6b3a7640000610e34565b821115611e72576040805160e560020a62461bcd02815260206004820152601160248201526000805160206156e0833981519152604482015290519081900360640190fd5b611e80816003015483614dee565b60038201556000611e918582614d05565b604080518581529051919250600160a060020a0388169133916000805160206157a0833981519152919081900360200190a3611ecd3386614e5f565b611eda610faf8683614dee565b600554611ef690620100009004600160a060020a031682614e79565b610fdb863385614e83565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615611fb0576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff1615612008576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b600654600160a060020a03163314612058576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b6006805491151560a060020a0274ff0000000000000000000000000000000000000000199092169190911790556005805461ff0019169055565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612141576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a03909116146121a2576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b60085460ff16156121eb576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b60095460021115612246576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d494e5f544f4b454e53000000000000000000000000000000000000604482015290519081900360640190fd5b6008805460ff191660011790556006805474ff0000000000000000000000000000000000000000191660a060020a17905561228968056bc75e2d63100000615151565b61229c3368056bc75e2d63100000614e79565b6005805461ff0019169055565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612358576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff166123af576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b60006123b9611392565b905060006123c7858361515a565b90508061240c576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b60005b60095481101561257c5760006009828154811061242857fe5b6000918252602080832090910154600160a060020a0316808352600a90915260408220600301549092509061245d8583614d05565b9050806124a2576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b8787858181106124ae57fe5b905060200201358111156124fa576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a60205260409020600301546125209082615082565b600160a060020a0384166000818152600a60209081526040918290206003019390935580518481529051919233926000805160206157008339815191529281900390910190a36125718333836150df565b50505060010161240f565b5061258685615151565b611c033386614e79565b60008061259d878661515a565b905060006125ab8786615082565b905060006125b9828961515a565b905060006125cf670de0b6b3a76400008561515a565b905060006125dd8383615296565b905060006125eb828e614d05565b905060006125f9828f614dee565b90506000612618612612670de0b6b3a76400008a614dee565b8b614d05565b905061263582612630670de0b6b3a764000084614dee565b61515a565b9f9e505050505050505050505050505050565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff16156126f9576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16612750576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff166127ae576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a60205260409020600301546127e0906002670de0b6b3a76400005b04614d05565b831115612825576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615740833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b5460075461285f949392919089906137a3565b9150828210156128a7576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b6128b5816003015485615082565b6003820155604080518581529051600160a060020a0387169133916000805160206157008339815191529181900360200190a36128f182615151565b6128fb3383614e79565b6129068533866150df565b506005805461ff00191690559392505050565b336000908152600160209081526040808320600160a060020a03861684529091528120548083111561296e57336000908152600160209081526040808320600160a060020a038816845290915281205561299d565b6129788184614dee565b336000908152600160209081526040808320600160a060020a03891684529091529020555b336000818152600160209081526040808320600160a060020a0389168085529083529281902054815190815290519293926000805160206157c0833981519152929181900390910190a35060019392505050565b600033600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612aa2576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16612af9576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a602052604090205460ff16612b57576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0384166000908152600a6020526040902060038101546002808301549054600b54600754612b9194939291908990612590565b915081612bd6576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b82821115612c1c576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a6020526040902060030154612c4c906002670de0b6b3a76400006127da565b821115612c91576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615740833981519152604482015290519081900360640190fd5b612c9f816003015483615082565b6003820155604080518381529051600160a060020a0387169133916000805160206157008339815191529181900360200190a3612cdb84615151565b612ce53385614e79565b6129068533846150df565b600160a060020a031660009081526020819052604090205490565b620f4240670de0b6b3a76400006113a8565b6040805160208082523690820181905260009283923392600160e060020a03198535169285929081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615612dbd576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff001916610100179055600160a060020a0387166000908152600a602052604090205460ff16612e2a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a602052604090205460ff16612e88576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60065460a060020a900460ff16612ee9576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f535741505f4e4f545f5055424c494300000000000000000000000000604482015290519081900360640190fd5b600160a060020a038088166000908152600a602052604080822092881682529020600380820154612f2291670de0b6b3a7640000610e34565b861115612f67576040805160e560020a62461bcd02815260206004820152601160248201526000805160206156e0833981519152604482015290519081900360640190fd5b6000612f888360030154846002015484600301548560020154600754613df0565b905085811115612fe2576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f4241445f4c494d49545f505249434500000000000000000000000000604482015290519081900360640190fd5b61300283600301548460020154846003015485600201548b600754614c72565b94508885111561304a576040805160e560020a62461bcd02815260206004820152600c60248201526000805160206156c0833981519152604482015290519081900360640190fd5b613058836003015486615082565b836003018190555061306e826003015488614dee565b600380840182905584015460028086015490850154600754613091949190613df0565b9350808410156130d9576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b85841115613131576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f4c494d49545f50524943450000000000000000000000000000000000604482015290519081900360640190fd5b61313b858861515a565b811115613180576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b87600160a060020a03168a600160a060020a031633600160a060020a03167f908fb5ee8f16c6bc9bc3690973819f32a4d4b10188134543c88706e0e1d43378888b604051808381526020018281526020019250505060405180910390a46131e88a33876150df565b6131f3883389614e83565b5050506005805461ff001916905590969095509350505050565b6040805160208082523690820181905260009283923392600160e060020a03198535169285929081908101848480828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff16156132ad576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff001916610100179055600160a060020a0387166000908152600a602052604090205460ff1661331a576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0385166000908152600a602052604090205460ff16613378576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60065460a060020a900460ff166133d9576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f535741505f4e4f545f5055424c494300000000000000000000000000604482015290519081900360640190fd5b600160a060020a038088166000908152600a6020526040808220928816825290206003820154613413906002670de0b6b3a76400006127da565b881115613458576040805160e560020a62461bcd0281526020600482015260106024820152600080516020615740833981519152604482015290519081900360640190fd5b60006134798360030154846002015484600301548560020154600754613df0565b9050858111156134d3576040805160e560020a62461bcd02815260206004820152601360248201527f4552525f4241445f4c494d49545f505249434500000000000000000000000000604482015290519081900360640190fd5b6134f383600301548460020154846003015485600201548d6007546141ae565b94508685101561353b576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b61354983600301548a615082565b836003018190555061355f826003015486614dee565b600380840182905584015460028086015490850154600754613582949190613df0565b9350808410156135ca576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b85841115613622576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f4c494d49545f50524943450000000000000000000000000000000000604482015290519081900360640190fd5b61362c898661515a565b811115613671576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b87600160a060020a03168a600160a060020a031633600160a060020a03167f908fb5ee8f16c6bc9bc3690973819f32a4d4b10188134543c88706e0e1d433788c89604051808381526020018281526020019250505060405180910390a46136d98a338b6150df565b6131f3883387614e83565b6000806136f1878661515a565b90506000613707670de0b6b3a764000083614dee565b905060006137158286614d05565b9050600061372f87612630670de0b6b3a764000085614dee565b9050600061373d8c83614dee565b9050600061374b828e61515a565b905060006137598288615296565b90506000613767828e614d05565b905060006137758e83614dee565b905061378e81612630670de0b6b3a76400006000614dee565b99505050505050505050509695505050505050565b6000806137b0878661515a565b905060006137cf6137c9670de0b6b3a764000084614dee565b85614d05565b905060006137ee866137e9670de0b6b3a764000085614dee565b614d05565b905060006137fc8b83615082565b9050600061380a828d61515a565b905060006138188287615296565b90506000613826828d614d05565b9050613832818d614dee565b9e9d5050505050505050505050505050565b64e8d4a51000670de0b6b3a76400006113a8565b600080613865878661515a565b90506000613880856137e9670de0b6b3a76400006000614dee565b9050600061388e8883614dee565b9050600061389c828a61515a565b905060006138bb826138b6670de0b6b3a76400008861515a565b615296565b905060006138c9828e614d05565b905060006138d78e83614dee565b905060006138f0612612670de0b6b3a76400008a614dee565b9050612635826137e9670de0b6b3a764000084614dee565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff16156139b7576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff001916610100179055600160a060020a0381166000908152600a602052604090205460ff16613a24576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038316916370a08231916024808301926020929190829003018186803b158015613a8357600080fd5b505afa158015613a97573d6000803e3d6000fd5b505050506040513d6020811015613aad57600080fd5b5051600160a060020a039091166000908152600a60205260409020600301556005805461ff0019169055565b60085460ff1690565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615613b91576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a0390911614613bf2576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b6006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790556005805461ff0019169055565b600554600090610100900460ff1615613c7d576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b50600b5490565b68056bc75e2d6310000081565b600554600090610100900460ff1615613ce2576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff16613d40576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b50600160a060020a03166000908152600a602052604090206002015490565b60048054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561107b5780601f106110505761010080835404028352916020019161107b565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600080613dfd878761515a565b90506000613e0b868661515a565b90506000613e19838361515a565b90506000613e3b670de0b6b3a7640000612630670de0b6b3a764000089614dee565b9050613e478282614d05565b9a9950505050505050505050565b6000613e62338484614f78565b50600192915050565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff1615613f1a576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560085460ff16613f71576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b6000613f7b611392565b90506000613f8a856000614d05565b90506000613f988683614dee565b90506000613fa6828561515a565b905080613feb576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b613ff53388614e5f565b60055461401190620100009004600160a060020a031684614e79565b61401a82614e6d565b60005b60095481101561418a5760006009828154811061403657fe5b6000918252602080832090910154600160a060020a0316808352600a90915260408220600301549092509061406b8583614d05565b9050806140b0576040805160e560020a62461bcd02815260206004820152600f6024820152600080516020615820833981519152604482015290519081900360640190fd5b8989858181106140bc57fe5b90506020020135811015614108576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615800833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090206003015461412e9082614dee565b600160a060020a0384166000818152600a60209081526040918290206003019390935580518481529051919233926000805160206157a08339815191529281900390910190a361417f833383614e83565b50505060010161401d565b50506005805461ff0019169055505050505050565b600881565b600281565b600181565b6000806141bb878661515a565b905060006141d1670de0b6b3a764000085614dee565b90506141dd8582614d05565b905060006141ef8a6126308c85615082565b905060006141fd8285615296565b90506000614213670de0b6b3a764000083614dee565b905061421f8a82614d05565b9c9b505050505050505050505050565b600a670de0b6b3a76400006113a8565b671bc16d674ec7ffff81565b600554606090610100900460ff161561429c576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b60085460ff166142e4576040805160e560020a62461bcd0281526020600482015260116024820152600080516020615680833981519152604482015290519081900360640190fd5b600980548060200260200160405190810160405280929190818152602001828054801561107b57602002820191906000526020600020905b8154600160a060020a0316815260019091019060200180831161431c575050505050905090565b600081565b600554606090610100900460ff16156142e4576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b60095490565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600554610100900460ff161561444e576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b6005805461ff00191661010017905560065433600160a060020a03909116146144af576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b600160a060020a0381166000908152600a602052604090205460ff1661450d576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b60085460ff1615614556576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b600160a060020a0381166000908152600a60205260408120600301549061457d8282614d05565b600b54600160a060020a0385166000908152600a60205260409020600201549192506145a891614dee565b600b55600160a060020a0383166000908152600a60205260409020600101546009805460001981019190829081106145dc57fe5b60009182526020909120015460098054600160a060020a03909216918490811061460257fe5b9060005260206000200160006101000a815481600160a060020a030219169083600160a060020a0316021790555081600a60006009858154811061464257fe5b6000918252602080832090910154600160a060020a03168352820192909252604001902060010155600980548061467557fe5b600082815260208082206000199084018101805473ffffffffffffffffffffffffffffffffffffffff191690559092019092556040805160808101825283815280830184815281830185815260608301868152600160a060020a038c168752600a909552929094209051815460ff1916901515178155925160018401555160028301555160039091015561470e8533611bdd8787614dee565b600554611c03908690620100009004600160a060020a031685614e83565b600554600090610100900460ff161561477d576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b5060075490565b336000908152600160209081526040808320600160a060020a03861684529091528120546147b29083615082565b336000818152600160209081526040808320600160a060020a0389168085529083529281902085905580519485525191936000805160206157c0833981519152929081900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b33600160a060020a0316600035600160e060020a031916600160e060020a03191660003660405180806020018281038252848482818152602001925080828437600083820152604051601f909101601f19169092018290039550909350505050a2600654600160a060020a031633146148e1576040805160e560020a62461bcd0281526020600482015260126024820152600080516020615720833981519152604482015290519081900360640190fd5b600160a060020a0383166000908152600a602052604090205460ff1615614952576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f49535f424f554e440000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff161561499b576040805160e560020a62461bcd02815260206004820152601060248201526000805160206157e0833981519152604482015290519081900360640190fd5b6009546008116149f5576040805160e560020a62461bcd02815260206004820152600e60248201527f4552525f4d41585f544f4b454e53000000000000000000000000000000000000604482015290519081900360640190fd5b604080516080810182526001808252600980546020808501918252600085870181815260608701828152600160a060020a038c16808452600a9094529782209651875460ff1916901515178755925186860155915160028601559451600390940193909355805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af01805473ffffffffffffffffffffffffffffffffffffffff19169091179055614aaf8383836117c9565b505050565b6002670de0b6b3a76400006113a8565b600554600090610100900460ff1615614b15576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff16614b73576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a6020526040902060020154600b54614b9d90829061515a565b9392505050565b600554600090610100900460ff1615614bf5576040805160e560020a62461bcd02815260206004820152600b60248201526000805160206156a0833981519152604482015290519081900360640190fd5b600160a060020a0382166000908152600a602052604090205460ff16614c53576040805160e560020a62461bcd02815260206004820152600d6024820152600080516020615780833981519152604482015290519081900360640190fd5b50600160a060020a03166000908152600a602052604090206003015490565b600080614c7f858861515a565b90506000614c8d8786614dee565b90506000614c9b888361515a565b90506000614ca98285615296565b9050614cbd81670de0b6b3a7640000614dee565b9050614cd1670de0b6b3a764000087614dee565b9450614ce6614ce08c83614d05565b8661515a565b9b9a5050505050505050505050565b60065460a060020a900460ff1690565b6000828202831580614d1f575082848281614d1c57fe5b04145b614d73576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b6706f05b59d3b20000810181811015614dd6576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b6000670de0b6b3a7640000825b049695505050505050565b6000806000614dfd85856153b9565b915091508015614e57576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604482015290519081900360640190fd5b509392505050565b614e6982826153de565b5050565b614e76816153e9565b50565b614e6982826154b3565b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03848116600483015260248201849052915160009286169163a9059cbb91604480830192602092919082900301818787803b158015614eef57600080fd5b505af1158015614f03573d6000803e3d6000fd5b505050506040513d6020811015614f1957600080fd5b5051905080614f72576040805160e560020a62461bcd02815260206004820152600f60248201527f4552525f45524332305f46414c53450000000000000000000000000000000000604482015290519081900360640190fd5b50505050565b600160a060020a038316600090815260208190526040902054811115614fe8576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e53554646494349454e545f42414c000000000000000000000000604482015290519081900360640190fd5b600160a060020a03831660009081526020819052604090205461500b9082614dee565b600160a060020a03808516600090815260208190526040808220939093559084168152205461503a9082615082565b600160a060020a0380841660008181526020818152604091829020949094558051858152905191939287169260008051602061576083398151915292918290030190a3505050565b600082820183811015614b9d576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b604080517f23b872dd000000000000000000000000000000000000000000000000000000008152600160a060020a0384811660048301523060248301526044820184905291516000928616916323b872dd91606480830192602092919082900301818787803b158015614eef57600080fd5b614e76816154be565b6000816151b1576040805160e560020a62461bcd02815260206004820152600c60248201527f4552525f4449565f5a45524f0000000000000000000000000000000000000000604482015290519081900360640190fd5b670de0b6b3a764000083028315806151d95750670de0b6b3a76400008482816151d657fe5b04145b61522d576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604482015290519081900360640190fd5b6002830481018181101561528b576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604482015290519081900360640190fd5b6000848281614de357fe5b600060018310156152f1576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f42504f575f424153455f544f4f5f4c4f570000000000000000000000604482015290519081900360640190fd5b671bc16d674ec7ffff831115615351576040805160e560020a62461bcd02815260206004820152601660248201527f4552525f42504f575f424153455f544f4f5f4849474800000000000000000000604482015290519081900360640190fd5b600061535c83615521565b9050600061536a8483614dee565b905060006153808661537b8561553c565b61554a565b9050816153915792506110d4915050565b60006153a287846305f5e1006155a1565b90506153ae8282614d05565b979650505050505050565b6000808284106153cf57505080820360006153d7565b505081810360015b9250929050565b614e69823083614f78565b30600090815260208190526040902054811115615450576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e53554646494349454e545f42414c000000000000000000000000604482015290519081900360640190fd5b3060009081526020819052604090205461546a9082614dee565b306000908152602081905260409020556002546154879082614dee565b60025560408051828152905160009130916000805160206157608339815191529181900360200190a350565b614e69308383614f78565b306000908152602081905260409020546154d89082615082565b306000908152602081905260409020556002546154f59082615082565b60025560408051828152905130916000916000805160206157608339815191529181900360200190a350565b6000670de0b6b3a76400006155358361553c565b0292915050565b670de0b6b3a7640000900490565b6000806002830661556357670de0b6b3a7640000615565565b835b90506002830492505b8215614b9d5761557e8485614d05565b93506002830615615596576155938185614d05565b90505b60028304925061556e565b60008281806155b887670de0b6b3a76400006153b9565b9092509050670de0b6b3a764000080600060015b888410615670576000670de0b6b3a7640000820290506000806156008a6155fb85670de0b6b3a7640000614dee565b6153b9565b91509150615612876137e9848c614d05565b965061561e878461515a565b96508661562d57505050615670565b8715615637579315935b8015615641579315935b8415615658576156518688614dee565b9550615665565b6156628688615082565b95505b5050506001016155cc565b5090999850505050505050505056fe4552525f4e4f545f46494e414c495a45440000000000000000000000000000004552525f5245454e5452590000000000000000000000000000000000000000004552525f4c494d49545f494e00000000000000000000000000000000000000004552525f4d41585f4f55545f524154494f00000000000000000000000000000063982df10efd8dfaaaa0fcc7f50b2d93b7cba26ccc48adee2873220d485dc39a4552525f4e4f545f434f4e54524f4c4c455200000000000000000000000000004552525f4d41585f494e5f524154494f00000000000000000000000000000000ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4552525f4e4f545f424f554e4400000000000000000000000000000000000000e74c91552b64c2e2e7bd255639e004e693bd3e1d01cc33e65610b86afcc1ffed8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9254552525f49535f46494e414c495a4544000000000000000000000000000000004552525f4c494d49545f4f5554000000000000000000000000000000000000004552525f4d4154485f415050524f580000000000000000000000000000000000a265627a7a72315820c10c9da1514e0bed4d45df3018c523ad6eeb6425355cc805706141a6cfaebd2d64736f6c634300050c0032"; - -type BPoolConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BPoolConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BPool__factory extends ContractFactory { - constructor(...args: BPoolConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BPool { - return super.attach(address) as BPool; - } - connect(signer: Signer): BPool__factory { - return super.connect(signer) as BPool__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BPoolInterface { - return new utils.Interface(_abi) as BPoolInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): BPool { - return new Contract(address, _abi, signerOrProvider) as BPool; - } -} diff --git a/src/typechain/factories/BTokenBase__factory.ts b/src/typechain/factories/BTokenBase__factory.ts deleted file mode 100644 index 1653f79..0000000 --- a/src/typechain/factories/BTokenBase__factory.ts +++ /dev/null @@ -1,363 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BTokenBase, BTokenBaseInterface } from "../BTokenBase"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - constant: true, - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "BPOW_PRECISION", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "INIT_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061029c806100206000396000f3fe608060405234801561001057600080fd5b5060043610610108576000357c010000000000000000000000000000000000000000000000000000000090048063b0e0d136116100af578063b0e0d1361461015f578063b7b800a414610167578063ba019dab1461016f578063bc063e1a14610177578063bc694ea21461017f578063c36596a61461012f578063c6580d1214610187578063e4a28a521461010d578063ec0930211461018f57610108565b806309a3bbe41461010d578063189d00ca14610127578063218b53821461012f57806376c7a3c714610137578063867378c51461013f5780639381cd2b14610147578063992e2a921461014f5780639a86139b14610157575b600080fd5b610115610197565b60408051918252519081900360200190f35b6101156101a4565b6101156101b8565b6101156101c4565b6101156101d6565b6101156101ea565b6101156101f7565b610115610203565b610115610227565b61011561022c565b610115610231565b610115610236565b610115610246565b610115610252565b610115610257565b6802b5e3af16b188000081565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b620f4240670de0b6b3a76400006101b4565b64e8d4a51000670de0b6b3a76400006101b4565b68056bc75e2d6310000081565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600881565b600281565b600181565b600a670de0b6b3a76400006101b4565b671bc16d674ec7ffff81565b600081565b6002670de0b6b3a76400006101b456fea265627a7a72315820aa3bf1d53d7a5558de06c198ac1cd3b148cab8644c339f0dc56d4f562670632364736f6c634300050c0032"; - -type BTokenBaseConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BTokenBaseConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BTokenBase__factory extends ContractFactory { - constructor(...args: BTokenBaseConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BTokenBase { - return super.attach(address) as BTokenBase; - } - connect(signer: Signer): BTokenBase__factory { - return super.connect(signer) as BTokenBase__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BTokenBaseInterface { - return new utils.Interface(_abi) as BTokenBaseInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BTokenBase { - return new Contract(address, _abi, signerOrProvider) as BTokenBase; - } -} diff --git a/src/typechain/factories/BToken__factory.ts b/src/typechain/factories/BToken__factory.ts deleted file mode 100644 index 440ff39..0000000 --- a/src/typechain/factories/BToken__factory.ts +++ /dev/null @@ -1,602 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { BToken, BTokenInterface } from "../BToken"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "src", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "dst", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - constant: true, - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "BPOW_PRECISION", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "INIT_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BOUND_TOKENS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_BPOW_BASE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "src", - type: "address", - }, - { - internalType: "address", - name: "dst", - type: "address", - }, - ], - name: "allowance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "approve", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [ - { - internalType: "address", - name: "whom", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "decreaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "getColor", - outputs: [ - { - internalType: "bytes32", - name: "", - type: "bytes32", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "increaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: true, - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: true, - inputs: [], - name: "totalSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - payable: false, - stateMutability: "view", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, - { - constant: false, - inputs: [ - { - internalType: "address", - name: "src", - type: "address", - }, - { - internalType: "address", - name: "dst", - type: "address", - }, - { - internalType: "uint256", - name: "amt", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - payable: false, - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60c0604052601360808190527f42616c616e63657220506f6f6c20546f6b656e0000000000000000000000000060a090815261003e91600391906100a3565b506040805180820190915260038082527f42505400000000000000000000000000000000000000000000000000000000006020909201918252610083916004916100a3565b506005805460ff1916601217905534801561009d57600080fd5b5061013e565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100e457805160ff1916838001178555610111565b82800160010185558215610111579182015b828111156101115782518255916020019190600101906100f6565b5061011d929150610121565b5090565b61013b91905b8082111561011d5760008155600101610127565b90565b610bd88061014d6000396000f3fe608060405234801561001057600080fd5b50600436106101a1576000357c010000000000000000000000000000000000000000000000000000000090048063992e2a92116100f6578063bc694ea2116100a4578063bc694ea2146103b7578063c36596a61461028d578063c6580d12146103bf578063d73dd623146103c7578063dd62ed3e146103f3578063e4a28a5214610263578063ec09302114610421576101a1565b8063992e2a921461035b5780639a86139b14610363578063a9059cbb1461036b578063b0e0d13614610397578063b7b800a41461039f578063ba019dab146103a7578063bc063e1a146103af576101a1565b8063313ce56711610153578063313ce567146102cb57806366188463146102e957806370a082311461031557806376c7a3c71461033b578063867378c5146103435780639381cd2b1461034b57806395d89b4114610353576101a1565b806306fdde03146101a6578063095ea7b31461022357806309a3bbe41461026357806318160ddd1461027d578063189d00ca14610285578063218b53821461028d57806323b872dd14610295575b600080fd5b6101ae610429565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101e85781810151838201526020016101d0565b50505050905090810190601f1680156102155780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61024f6004803603604081101561023957600080fd5b50600160a060020a0381351690602001356104bf565b604080519115158252519081900360200190f35b61026b610513565b60408051918252519081900360200190f35b61026b610520565b61026b610526565b61026b61053a565b61024f600480360360608110156102ab57600080fd5b50600160a060020a03813581169160208101359091169060400135610546565b6102d36106ab565b6040805160ff9092168252519081900360200190f35b61024f600480360360408110156102ff57600080fd5b50600160a060020a0381351690602001356106b4565b61026b6004803603602081101561032b57600080fd5b5035600160a060020a031661078c565b61026b6107a7565b61026b6107b9565b61026b6107cd565b6101ae6107da565b61026b61083b565b61026b610847565b61024f6004803603604081101561038157600080fd5b50600160a060020a03813516906020013561086b565b61026b610881565b61026b610886565b61026b61088b565b61026b610890565b61026b6108a0565b61026b6108ac565b61024f600480360360408110156103dd57600080fd5b50600160a060020a0381351690602001356108b1565b61026b6004803603604081101561040957600080fd5b50600160a060020a0381358116916020013516610932565b61026b61095d565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b820191906000526020600020905b81548152906001019060200180831161049857829003601f168201915b5050505050905090565b336000818152600160209081526040808320600160a060020a03871680855290835281842086905581518681529151939490939092600080516020610b84833981519152928290030190a350600192915050565b6802b5e3af16b188000081565b60025490565b6402540be400670de0b6b3a76400005b0481565b670de0b6b3a764000081565b600033600160a060020a03851614806105825750600160a060020a03841660009081526001602090815260408083203384529091529020548211155b6105d6576040805160e560020a62461bcd02815260206004820152601560248201527f4552525f42544f4b454e5f4241445f43414c4c45520000000000000000000000604482015290519081900360640190fd5b6105e184848461096d565b33600160a060020a0385161480159061061f5750600160a060020a038416600090815260016020908152604080832033845290915290205460001914155b156106a157600160a060020a03841660009081526001602090815260408083203384529091529020546106529083610a89565b600160a060020a0385811660009081526001602090815260408083203380855290835292819020859055805194855251928716939192600080516020610b848339815191529281900390910190a35b5060019392505050565b60055460ff1690565b336000908152600160209081526040808320600160a060020a03861684529091528120548083111561070957336000908152600160209081526040808320600160a060020a0388168452909152812055610738565b6107138184610a89565b336000908152600160209081526040808320600160a060020a03891684529091529020555b336000818152600160209081526040808320600160a060020a038916808552908352928190205481519081529051929392600080516020610b84833981519152929181900390910190a35060019392505050565b600160a060020a031660009081526020819052604090205490565b620f4240670de0b6b3a7640000610536565b64e8d4a51000670de0b6b3a7640000610536565b68056bc75e2d6310000081565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104b55780601f1061048a576101008083540402835291602001916104b5565b6704a03ce68d21555681565b7f42524f4e5a45000000000000000000000000000000000000000000000000000090565b600061087833848461096d565b50600192915050565b600881565b600281565b600181565b600a670de0b6b3a7640000610536565b671bc16d674ec7ffff81565b600081565b336000908152600160209081526040808320600160a060020a03861684529091528120546108df9083610afa565b336000818152600160209081526040808320600160a060020a038916808552908352928190208590558051948552519193600080516020610b84833981519152929081900390910190a350600192915050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b6002670de0b6b3a7640000610536565b600160a060020a0383166000908152602081905260409020548111156109dd576040805160e560020a62461bcd02815260206004820152601460248201527f4552525f494e53554646494349454e545f42414c000000000000000000000000604482015290519081900360640190fd5b600160a060020a038316600090815260208190526040902054610a009082610a89565b600160a060020a038085166000908152602081905260408082209390935590841681522054610a2f9082610afa565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000806000610a988585610b5e565b915091508015610af2576040805160e560020a62461bcd02815260206004820152601160248201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604482015290519081900360640190fd5b509392505050565b600082820183811015610b57576040805160e560020a62461bcd02815260206004820152601060248201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b600080828410610b745750508082036000610b7c565b505081810360015b925092905056fe8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a265627a7a72315820d4c6a11d6ba2941e2ff591f5246b031919054af5240ddb7f12542fd293677ff764736f6c634300050c0032"; - -type BTokenConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BTokenConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BToken__factory extends ContractFactory { - constructor(...args: BTokenConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BToken { - return super.attach(address) as BToken; - } - connect(signer: Signer): BToken__factory { - return super.connect(signer) as BToken__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BTokenInterface { - return new utils.Interface(_abi) as BTokenInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): BToken { - return new Contract(address, _abi, signerOrProvider) as BToken; - } -} diff --git a/src/typechain/factories/BalancerConstants__factory.ts b/src/typechain/factories/BalancerConstants__factory.ts deleted file mode 100644 index 89185b7..0000000 --- a/src/typechain/factories/BalancerConstants__factory.ts +++ /dev/null @@ -1,269 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - BalancerConstants, - BalancerConstantsInterface, -} from "../BalancerConstants"; - -const _abi = [ - { - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_ASSET_LIMIT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_UINT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_ASSET_LIMIT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x610277610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061010a5760003560e01c8063bc063e1a116100a1578063def92c6911610070578063def92c6914610171578063e4a28a521461010f578063e5b5019a14610179578063ec093021146101815761010a565b8063bc063e1a14610159578063c36596a614610129578063c6580d1214610161578063cc12f267146101695761010a565b806376c7a3c7116100dd57806376c7a3c7146101415780637e88781c14610149578063867378c514610141578063992e2a92146101515761010a565b806309a3bbe41461010f578063218b5382146101295780634d1acbab146101315780636fd34b9f14610139575b600080fd5b610117610189565b60408051918252519081900360200190f35b610117610196565b6101176101a2565b6101176101a7565b6101176101ac565b6101176101be565b6101176101cb565b6101176101d7565b6101176101e7565b6101176101ec565b6101176101fc565b61011761020d565b610117610231565b6802b5e3af16b188000081565b670de0b6b3a764000081565b600281565b600881565b620f4240670de0b6b3a76400005b0481565b68056bc75e2d6310000081565b6704a03ce68d21555681565b600a670de0b6b3a76400006101ba565b600081565b6b033b2e3c9fd0803ce800000081565b6c0c9f2c9cd04674edea4000000081565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b6002670de0b6b3a76400006101ba56fea26469706673582212202727d6006b4d8cdcb5f4a79d969181f732ca1203d0a6dd902d9b381bc33839fd64736f6c634300060c0033"; - -type BalancerConstantsConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: BalancerConstantsConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class BalancerConstants__factory extends ContractFactory { - constructor(...args: BalancerConstantsConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): BalancerConstants { - return super.attach(address) as BalancerConstants; - } - connect(signer: Signer): BalancerConstants__factory { - return super.connect(signer) as BalancerConstants__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): BalancerConstantsInterface { - return new utils.Interface(_abi) as BalancerConstantsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BalancerConstants { - return new Contract(address, _abi, signerOrProvider) as BalancerConstants; - } -} diff --git a/src/typechain/factories/BalancerOwnable__factory.ts b/src/typechain/factories/BalancerOwnable__factory.ts deleted file mode 100644 index eb32f8b..0000000 --- a/src/typechain/factories/BalancerOwnable__factory.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - BalancerOwnable, - BalancerOwnableInterface, -} from "../BalancerOwnable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - inputs: [], - name: "getController", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "setController", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class BalancerOwnable__factory { - static readonly abi = _abi; - static createInterface(): BalancerOwnableInterface { - return new utils.Interface(_abi) as BalancerOwnableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): BalancerOwnable { - return new Contract(address, _abi, signerOrProvider) as BalancerOwnable; - } -} diff --git a/src/typechain/factories/Bytecode__factory.ts b/src/typechain/factories/Bytecode__factory.ts index 63f653c..4a4d417 100644 --- a/src/typechain/factories/Bytecode__factory.ts +++ b/src/typechain/factories/Bytecode__factory.ts @@ -30,7 +30,7 @@ const _abi = [ ]; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204736a7f37e98c81c256a2d8699ddfed82d2a5ad247e6e18b74f03f080daa87cc64736f6c634300080a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fe4d91aea5f0bdf1697c40ea47b8540670e8d729e48a81806f77b0cfdd235ce464736f6c634300080a0033"; type BytecodeConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/CRPFactory__factory.ts b/src/typechain/factories/CRPFactory__factory.ts deleted file mode 100644 index afe7048..0000000 --- a/src/typechain/factories/CRPFactory__factory.ts +++ /dev/null @@ -1,241 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { CRPFactory, CRPFactoryInterface } from "../CRPFactory"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "pool", - type: "address", - }, - ], - name: "LogNewCrp", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - ], - name: "isCrp", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "factoryAddress", - type: "address", - }, - { - components: [ - { - internalType: "string", - name: "poolTokenSymbol", - type: "string", - }, - { - internalType: "string", - name: "poolTokenName", - type: "string", - }, - { - internalType: "address[]", - name: "constituentTokens", - type: "address[]", - }, - { - internalType: "uint256[]", - name: "tokenBalances", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "tokenWeights", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - internalType: "struct ConfigurableRightsPool.PoolParams", - name: "poolParams", - type: "tuple", - }, - { - components: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - internalType: "struct RightsManager.Rights", - name: "rights", - type: "tuple", - }, - ], - name: "newCrp", - outputs: [ - { - internalType: "contract ConfigurableRightsPool", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50617817806100206000396000f3fe60806040523480156200001157600080fd5b50600436106200003a5760003560e01c80634420002b146200003f578063dc19e842146200006e575b600080fd5b620000566200005036600462000392565b62000094565b60405162000065919062000582565b60405180910390f35b620000856200007f3660046200036d565b620002f1565b604051620000659190620006e7565b60006002620000a7604085018562000797565b90501015620000ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000e49062000760565b60405180910390fd5b620000fc604084018462000797565b90506200010d606085018562000797565b90501462000149576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000e49062000729565b62000158604084018462000797565b905062000169608085018562000797565b905014620001a5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000e490620006f2565b6000848484604051620001b8906200031c565b620001c693929190620005a3565b604051809103906000f080158015620001e3573d6000803e3d6000fd5b5060405190915073ffffffffffffffffffffffffffffffffffffffff82169033907f8aaa45dbe91f274e1c80489691f3d62dbf595d587fcc6a989fa27696e7c2a23290600090a373ffffffffffffffffffffffffffffffffffffffff81166000818152602081905260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f92eefe9b0000000000000000000000000000000000000000000000000000000081526392eefe9b90620002b490339060040162000582565b600060405180830381600087803b158015620002cf57600080fd5b505af1158015620002e4573d6000803e3d6000fd5b5092979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205460ff1690565b616eeb80620008f783390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146200034f57600080fd5b92915050565b600060c0828403121562000367578081fd5b50919050565b6000602082840312156200037f578081fd5b6200038b83836200032a565b9392505050565b60008060006101008486031215620003a8578182fd5b620003b485856200032a565b9250602084013567ffffffffffffffff811115620003d0578283fd5b620003de8682870162000355565b925050620003f0856040860162000355565b90509250925092565b60008284526020808501945082825b85811015620004475782820173ffffffffffffffffffffffffffffffffffffffff6200043582856200032a565b16885296830196915060010162000408565b509495945050505050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111562000484578081fd5b6020830280836020870137939093016020019283525090919050565b15159052565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b80358015158082146200050057600080fd5b83525060208101356200051381620008e4565b1515602083015260408101356200052a81620008e4565b1515604083015260608101356200054181620008e4565b1515606083015260808101356200055881620008e4565b151560808301526200056e60a08201826200086f565b6200057d60a0840182620004a0565b505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600061010073ffffffffffffffffffffffffffffffffffffffff86168352806020840152620005d385866200087e565b60c083860152620005ea6101c086018284620004a6565b92505050620005fd60208601866200087e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00808685030161012087015262000636848385620004a6565b935062000647604089018962000806565b93509150808685030161014087015262000663848484620003f9565b935062000674606089018962000806565b9350915080868503016101608701526200069084848462000452565b9350620006a1608089018962000806565b93509150808685030161018087015250620006be83838362000452565b60a08801356101a08701529350620006df92505060408401905084620004ee565b949350505050565b901515815260200190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b60208082526012908201527f4552525f544f4f5f4645575f544f4b454e530000000000000000000000000000604082015260600190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112620007cc578283fd5b83018035915067ffffffffffffffff821115620007e7578283fd5b6020908101925081023603821315620007ff57600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126200083b578283fd5b830160208101925035905067ffffffffffffffff8111156200085c57600080fd5b602081023603831315620007ff57600080fd5b600082356200038b81620008e4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112620008b3578283fd5b830160208101925035905067ffffffffffffffff811115620008d457600080fd5b803603831315620007ff57600080fd5b8015158114620008f357600080fd5b5056fe60806040523480156200001157600080fd5b5060405162006eeb38038062006eeb8339810160408190526200003491620006c7565b815160208084015182519091620000519160039185019062000337565b5080516200006790600490602084019062000337565b5050600580546001600160a01b03191633179055506001600655620f4240670de0b6b3a7640000048260a001511015620000be5760405162461bcd60e51b8152600401620000b590620008ef565b60405180910390fd5b60a082015167016345785d8a00001015620000ed5760405162461bcd60e51b8152600401620000b590620008ef565b81604001515182606001515114620001195760405162461bcd60e51b8152600401620000b5906200088c565b81604001515182608001515114620001455760405162461bcd60e51b8152600401620000b59062000855565b600282604001515110156200016e5760405162461bcd60e51b8152600401620000b590620008c3565b60088260400151511115620001975760405162461bcd60e51b8152600401620000b59062000926565b60408083015190516377d4434960e01b815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__916377d4434991620001d4919060040162000806565b60006040518083038186803b158015620001ed57600080fd5b505af415801562000202573d6000803e3d6000fd5b5050600780546001600160a01b0319166001600160a01b03871617905550508051600980546020808501516040808701516060880151608089015160a08a015160ff199097169815159890981761ff001916610100941515949094029390931762ff0000191662010000911515919091021763ff00000019166301000000921515929092029190911760ff60201b1916640100000000951515959095029490941760ff60281b1916650100000000009215159290920291909117909155908301518051620002d5926013920190620003bc565b5060608201518051620002f19160149160209091019062000422565b5060a082015160125562015f906015556101f4601655608082015180516200032291600c9160209091019062000422565b50506000600a555050600019601855620009b6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200037a57805160ff1916838001178555620003aa565b82800160010185558215620003aa579182015b82811115620003aa5782518255916020019190600101906200038d565b50620003b89291506200045f565b5090565b82805482825590600052602060002090810192821562000414579160200282015b828111156200041457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620003dd565b50620003b892915062000476565b828054828255906000526020600020908101928215620003aa5791602002820182811115620003aa5782518255916020019190600101906200038d565b5b80821115620003b8576000815560010162000460565b5b80821115620003b85780546001600160a01b031916815560010162000477565b80516001600160a01b0381168114620004af57600080fd5b92915050565b600082601f830112620004c6578081fd5b8151620004dd620004d78262000984565b6200095d565b818152915060208083019084810181840286018201871015620004ff57600080fd5b60005b848110156200052a5762000517888362000497565b8452928201929082019060010162000502565b505050505092915050565b600082601f83011262000546578081fd5b815162000557620004d78262000984565b8181529150602080830190848101818402860182018710156200057957600080fd5b60005b848110156200052a578151845292820192908201906001016200057c565b600082601f830112620005ab578081fd5b81516001600160401b03811115620005c1578182fd5b6020620005d7601f8301601f191682016200095d565b92508183528481838601011115620005ee57600080fd5b60005b828110156200060e578481018201518482018301528101620005f1565b82811115620006205760008284860101525b50505092915050565b600060c082840312156200063b578081fd5b6200064760c06200095d565b905081516200065681620009a4565b815260208201516200066881620009a4565b602082015260408201516200067d81620009a4565b604082015260608201516200069281620009a4565b60608201526080820151620006a781620009a4565b608082015260a0820151620006bc81620009a4565b60a082015292915050565b60008060006101008486031215620006dd578283fd5b620006e9858562000497565b60208501519093506001600160401b038082111562000706578384fd5b9085019060c082880312156200071a578384fd5b6200072660c06200095d565b82518281111562000735578586fd5b62000743898286016200059a565b82525060208301518281111562000758578586fd5b62000766898286016200059a565b6020830152506040830151828111156200077e578586fd5b6200078c89828601620004b5565b604083015250606083015182811115620007a4578586fd5b620007b28982860162000535565b606083015250608083015182811115620007ca578586fd5b620007d88982860162000535565b60808301525060a083015160a0820152809450505050620007fd856040860162000629565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015620008495783516001600160a01b03168352928401929184019160010162000822565b50909695505050505050565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b6020808252601290820152714552525f544f4f5f4645575f544f4b454e5360701b604082015260600190565b60208082526014908201527f4552525f494e56414c49445f535741505f464545000000000000000000000000604082015260600190565b60208082526013908201527f4552525f544f4f5f4d414e595f544f4b454e5300000000000000000000000000604082015260600190565b6040518181016001600160401b03811182821017156200097c57600080fd5b604052919050565b60006001600160401b038211156200099a578081fd5b5060209081020190565b8015158114620009b357600080fd5b50565b61652580620009c66000396000f3fe608060405234801561001057600080fd5b506004361061036d5760003560e01c806370a08231116101d3578063b02f0b7311610104578063dd62ed3e116100a2578063e7f1a5541161007c578063e7f1a554146106e7578063e854f53d146106ef578063f226b528146106f7578063fde924f7146106ff5761036d565b8063dd62ed3e146106b9578063e211b875146106cc578063e2762d4b146106d45761036d565b8063c3391d27116100de578063c3391d2714610667578063c42bd05a1461067a578063c83a1c2d14610693578063d73dd623146106a65761036d565b8063b02f0b7314610644578063b64ef17b14610657578063c275d81b1461065f5761036d565b80639776e94b116101715780639d829c2b1161014b5780639d829c2b14610619578063a3f4df7e14610621578063a835a0de14610629578063a9059cbb146106315761036d565b80639776e94b146105e4578063980e8db6146105f75780639a82417e146106115761036d565b80638259e6a0116101ad5780638259e6a0146105a357806392eefe9b146105b6578063948d8ce6146105c957806395d89b41146105dc5761036d565b806370a082311461057557806374983a0d14610588578063806c6f87146105905761036d565b806334e19907116102ad5780634f69c0d41161024b5780635db34277116102255780635db34277146105295780635fa7b5841461053c578063661884631461054f5780636d06dfa0146105625761036d565b80634f69c0d4146104ed57806355c32a23146105005780635a8342d8146105135761036d565b806347786d371161028757806347786d37146104a157806349b59552146104b45780634ba57882146104c75780634c20d209146104da5761036d565b806334e199071461046857806337c6f4d91461047b57806346ab38f11461048e5761036d565b806318160ddd1161031a578063246bc19b116102f4578063246bc19b146104305780632e0f2625146104435780633018205f14610458578063313ce567146104605761036d565b806318160ddd14610402578063220eb7601461040a57806323b872dd1461041d5761036d565b8063095ea7b31161034b578063095ea7b3146103c55780630a165940146103e55780630ce27925146103fa5761036d565b806302c967481461037257806306fdde031461039b578063095dcccc146103b0575b600080fd5b610385610380366004615712565b610707565b6040516103929190616453565b60405180910390f35b6103a3610974565b6040516103929190615d91565b6103c36103be3660046156e7565b610a28565b005b6103d86103d33660046156e7565b610a6f565b6040516103929190615b4d565b6103ed610ae6565b6040516103929190615a45565b610385610b02565b610385610b08565b6103c36104183660046158dc565b610b0e565b6103d861042b3660046156a7565b610b53565b6103c361043e3660046157df565b610d26565b61044b610fc7565b604051610392919061646a565b6103ed610fcc565b61044b610fe8565b6103c36104763660046158dc565b610fed565b6103d86104893660046158bd565b611214565b61038561049c366004615712565b6112c2565b6103c36104af3660046158dc565b611516565b6103c36104c2366004615869565b61170d565b6103c36104d53660046158dc565b6118f5565b6103c36104e8366004615712565b611937565b6103c36104fb36600461590c565b611c7a565b6103c361050e3660046156e7565b61220a565b61051b61224d565b60405161039292919061645c565b610385610537366004615712565b612256565b6103c361054a366004615653565b6124cf565b6103d861055d3660046156e7565b612791565b610385610570366004615712565b6128b1565b610385610583366004615653565b612b2a565b6103ed612b52565b6103d861059e366004615653565b612b6a565b6103c36105b13660046158dc565b612bce565b6103c36105c4366004615653565b612ce6565b6103856105d7366004615653565b612e12565b6103a3612f46565b6103c36105f23660046156e7565b612fc5565b6105ff613240565b60405161039296959493929190615b58565b6103ed61327c565b6103ed613294565b6103a36132ac565b6103856132e5565b6103d861063f3660046156e7565b6132eb565b6103c361065236600461590c565b61334e565b6103ed61387e565b6103c361389a565b6103c36106753660046159c7565b613adb565b610682613c39565b604051610392959493929190615abe565b6103c36106a1366004615653565b613c7e565b6103d86106b43660046156e7565b613e37565b6103856106c736600461566f565b613ed7565b6103c3613f0f565b6103c36106e2366004615653565b6140c1565b6103856142d5565b6103856142db565b6103856142e1565b6103d86142e8565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906107419084903690615b88565b60405180910390a26002600654141561078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b60405180910390fd5b600260065560085473ffffffffffffffffffffffffffffffffffffffff166107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517f724a2d53000000000000000000000000000000000000000000000000000000008152600091829173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163724a2d539161085a91309173ffffffffffffffffffffffffffffffffffffffff909116908b908b908b90600401615ccf565b604080518083038186803b15801561087157600080fd5b505af4158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190615956565b9150915080925060006108bc848461441b565b90508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e98860405161091b9190616453565b60405180910390a361092d3385612243565b61093681610b47565b6007546109599073ffffffffffffffffffffffffffffffffffffffff1684610a61565b61096487338861446e565b5050505b60016006559392505050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b5050505050905090565b333014610a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610a6b8282614777565b5050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ad5908690616453565b60405180910390a350600192915050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60005490565b333014610b47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610b5081614782565b50565b600073ffffffffffffffffffffffffffffffffffffffff8316610ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f13565b3373ffffffffffffffffffffffffffffffffffffffff85161480610bf6575073ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091529020548211155b610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906161de565b610c378484846147fc565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600260209081526040808320338085529252909120549114801590610c9857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15610d1957610ca7818461441b565b73ffffffffffffffffffffffffffffffffffffffff86811660009081526002602090815260408083203380855292529182902084905590519187169290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591610d1091616453565b60405180910390a35b60019150505b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051610d92929190615b88565b60405180910390a260026006541415610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff163314610e2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16610e7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095462010000900460ff16610ebe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f81565b600e5474010000000000000000000000000000000000000000900460ff1615610f13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616215565b6008546015546040517f13b8bf2400000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__926313b8bf2492610f8c9273ffffffffffffffffffffffffffffffffffffffff90921691600a918a918a918a918a9190600401615c13565b60006040518083038186803b158015610fa457600080fd5b505af4158015610fb8573d6000803e3d6000fd5b50506001600655505050505050565b601281565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b601290565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611059929190615b88565b60405180910390a26002600654141561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146110f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600954610100900460ff16611184576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107869061635f565b6008546040517f34e1990700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906334e19907906111da908490600401616453565b600060405180830381600087803b1580156111f457600080fd5b505af1158015611208573d6000803e3d6000fd5b50506001600655505050565b6040517f4583544a00000000000000000000000000000000000000000000000000000000815260009073__$c7f394f0430b200d573091ca9a0309069c$__90634583544a9061126a9060099086906004016163cd565b60206040518083038186803b15801561128257600080fd5b505af4158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190615885565b90505b919050565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906112fc9084903690615b88565b60405180910390a260026006541415611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517fd505a94e000000000000000000000000000000000000000000000000000000008152600091829173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163d505a94e9161140c91309173ffffffffffffffffffffffffffffffffffffffff909116908b908b908b90600401615ccf565b604080518083038186803b15801561142357600080fd5b505af4158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b9190615956565b91509150809250600061146e868461441b565b90508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9866040516114cd9190616453565b60405180910390a36114df3387612243565b6114e881610b47565b60075461150b9073ffffffffffffffffffffffffffffffffffffffff1684610a61565b61096487338661446e565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611582929190615b88565b60405180910390a2600260065414156115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff1661161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60095465010000000000900460ff166116b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616139565b3373ffffffffffffffffffffffffffffffffffffffff167f6bc200110c7794738d401810b22ef824a2044a8ccb022d4ad8769840370331f5601854836040516116fb92919061645c565b60405180910390a26018556001600655565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611779929190615b88565b60405180910390a2600260065414156117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095460ff1661189f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906162ba565b6008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906349b59552906111da908490600401615b4d565b33301461192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610b50816148d4565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000366040516119a3929190615b88565b60405180910390a2600260065414156119e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff163314611a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16611a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6009546301000000900460ff16611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e39565b600a5415611b0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616396565b6040517f1c1af13600000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__90631c1af13690611b5a908690600401615a45565b60006040518083038186803b158015611b7257600080fd5b505af4158015611b86573d6000803e3d6000fd5b505060405133925030915073ffffffffffffffffffffffffffffffffffffffff8616907f33b043686b9408a355896fe90b2f8ecc86a41d87d1554ef65a739948b4f23e2790600090a46008546040517fb489ec1900000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163b489ec1991611c409173ffffffffffffffffffffffffffffffffffffffff1690879087908790600e90600401615bd5565b60006040518083038186803b158015611c5857600080fd5b505af4158015611c6c573d6000803e3d6000fd5b505060016006555050505050565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611ce6929190615b88565b60405180910390a260026006541415611d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16611d7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600854604080517ffde924f7000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163fde924f7916004808301926020929190829003018186803b158015611dea57600080fd5b505afa158015611dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e229190615885565b6008546040517f49b5955200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906349b5955290611e7a90600090600401615b4d565b600060405180830381600087803b158015611e9457600080fd5b505af1158015611ea8573d6000803e3d6000fd5b5050600954640100000000900460ff16159150819050611ed757503360009081526017602052604090205460ff165b611f0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615ea5565b6008546040517fa1925f1d00000000000000000000000000000000000000000000000000000000815260609173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163a1925f1d91611f8091309173ffffffffffffffffffffffffffffffffffffffff16908a908a908a90600401615d10565b60006040518083038186803b158015611f9857600080fd5b505af4158015611fac573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611ff2919081019061582e565b90506060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc77828d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561205e57600080fd5b505afa158015612072573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120b89190810190615746565b905060005b81518110156121705760008282815181106120d457fe5b6020026020010151905060008483815181106120ec57fe5b602002602001015190508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72836040516121539190616453565b60405180910390a361216682338361491b565b50506001016120bd565b5061217a8661192e565b6121843387610a61565b50506008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906349b59552906121dc908490600401615b4d565b600060405180830381600087803b1580156121f657600080fd5b505af1158015610fb8573d6000803e3d6000fd5b333014612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610a6b8282614c0b565b600a54600b5482565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906122909084903690615b88565b60405180910390a2600260065414156122d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600954640100000000900460ff16158061235257503360009081526017602052604090205460ff165b612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615ea5565b6008546040517fdf90de0b00000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163df90de0b916123fa91309173ffffffffffffffffffffffffffffffffffffffff90911690899089908990600401615ccf565b60206040518083038186803b15801561241257600080fd5b505af4158015612426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244a91906158f4565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72856040516124a99190616453565b60405180910390a36124ba8161192e565b6124c43382610a61565b61096884338561491b565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405161253b929190615b88565b60405180910390a260026006541415612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146125d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6009546301000000900460ff16612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e39565b600e5474010000000000000000000000000000000000000000900460ff16156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107869061624c565b600a54156126f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616396565b6008546040517f0970e47f00000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__91630970e47f9161276591309173ffffffffffffffffffffffffffffffffffffffff909116908690600401615c68565b60006040518083038186803b15801561277d57600080fd5b505af4158015611208573d6000803e3d6000fd5b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548083106127ff5733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915281205561283b565b612809818461441b565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020555b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168085529252918290205491519092917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161289f9190616453565b60405180910390a35060019392505050565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906128eb9084903690615b88565b60405180910390a260026006541415612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600954640100000000900460ff1615806129ad57503360009081526017602052604090205460ff165b6129e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615ea5565b6008546040517f6a6dc6e700000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__91636a6dc6e791612a5591309173ffffffffffffffffffffffffffffffffffffffff90911690899089908990600401615ccf565b60206040518083038186803b158015612a6d57600080fd5b505af4158015612a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa591906158f4565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa7283604051612b049190616453565b60405180910390a3612b158361192e565b612b1f3384610a61565b61096884338361491b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b73__$c7f394f0430b200d573091ca9a0309069c$__90565b600954600090640100000000900460ff1615612baf575073ffffffffffffffffffffffffffffffffffffffff811660009081526017602052604090205460ff166112bd565b5073ffffffffffffffffffffffffffffffffffffffff811615156112bd565b60055473ffffffffffffffffffffffffffffffffffffffff163314612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051612c8b929190615b88565b60405180910390a260026006541415612cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b6002600655612cde81614c16565b506001600655565b60055473ffffffffffffffffffffffffffffffffffffffff163314612d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b73ffffffffffffffffffffffffffffffffffffffff8116612d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f13565b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600060026006541415612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906160cb565b60085473ffffffffffffffffffffffffffffffffffffffff16612ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517f948d8ce600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063948d8ce690612ef6908590600401615a45565b60206040518083038186803b158015612f0e57600080fd5b505afa158015612f22573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba91906158f4565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a1e5780601f106109f357610100808354040283529160200191610a1e565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613031929190615b88565b60405180910390a260026006541415613076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146130cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff1661311b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095462010000900460ff1661315d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f81565b600a5415613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616396565b6008546040517ff544aa1c00000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163f544aa1c9161320791309173ffffffffffffffffffffffffffffffffffffffff9091169087908790600401615c98565b60006040518083038186803b15801561321f57600080fd5b505af4158015613233573d6000803e3d6000fd5b5050600160065550505050565b60095460ff8082169161010081048216916201000082048116916301000000810482169164010000000082048116916501000000000090041686565b73__$03602ee833d1498456e485c89c7d5cf6a3$__90565b73__$e2443ddb34206265ddf9ba9c66d7b47e8d$__90565b6040518060400160405280601381526020017f42616c616e63657220536d61727420506f6f6c0000000000000000000000000081525081565b6101f481565b600073ffffffffffffffffffffffffffffffffffffffff831661333a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f13565b6133453384846147fc565b50600192915050565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000366040516133ba929190615b88565b60405180910390a2600260065414156133ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16613453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600854604080517ffde924f7000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163fde924f7916004808301926020929190829003018186803b1580156134be57600080fd5b505afa1580156134d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f69190615885565b6008546040517f49b5955200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906349b595529061354e90600090600401615b4d565b600060405180830381600087803b15801561356857600080fd5b505af115801561357c573d6000803e3d6000fd5b50506008546040517f5471c3e40000000000000000000000000000000000000000000000000000000081526000935083925060609173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__91635471c3e4916135f891309173ffffffffffffffffffffffffffffffffffffffff16908c908c908c90600401615d10565b60006040518083038186803b15801561361057600080fd5b505af4158015613624573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261366a9190810190615979565b92509250925061367a3388612243565b60075461369d9073ffffffffffffffffffffffffffffffffffffffff1684610a61565b6136a682610b47565b600854604080517fcc77828d000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163cc77828d916004808301926000929190829003018186803b15801561371157600080fd5b505afa158015613725573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261376b9190810190615746565b905060005b815181101561382357600082828151811061378757fe5b60200260200101519050600084838151811061379f57fe5b602002602001015190508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9836040516138069190616453565b60405180910390a361381982338361446e565b5050600101613770565b50506008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911693506349b5955292506121dc91508490600401615b4d565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613906929190615b88565b60405180910390a26002600654141561394b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146139a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff166139f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6009546301000000900460ff16613a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e39565b6008546016546040517fefa5877400000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9263efa5877492613aa492309273ffffffffffffffffffffffffffffffffffffffff169190600e90600401615d5b565b60006040518083038186803b158015613abc57600080fd5b505af4158015613ad0573d6000803e3d6000fd5b505060016006555050565b60055473ffffffffffffffffffffffffffffffffffffffff163314613b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613b98929190615b88565b60405180910390a260026006541415613bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065580821015613c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e70565b60158290556016819055613c2f83614c16565b5050600160065550565b600e54600f5460105460115473ffffffffffffffffffffffffffffffffffffffff84169374010000000000000000000000000000000000000000900460ff1692919085565b60055473ffffffffffffffffffffffffffffffffffffffff163314613ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60026006541415613d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b60026006556040513390600080357fffffffff000000000000000000000000000000000000000000000000000000001691613d4991903690615b88565b60405180910390a2600954640100000000900460ff16613d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f4a565b73ffffffffffffffffffffffffffffffffffffffff8116613de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616102565b73ffffffffffffffffffffffffffffffffffffffff16600090815260176020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600655565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054613e7290836152c9565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916808552925291829020849055905190927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591610ad59190616453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613f7b929190615b88565b60405180910390a260026006541415613fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16614014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095462010000900460ff16614056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f81565b6008546040517f82495b4500000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__916382495b4591613aa49173ffffffffffffffffffffffffffffffffffffffff1690600a90600401615af9565b60055473ffffffffffffffffffffffffffffffffffffffff163314614112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b6002600654141561414f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b60026006556040513390600080357fffffffff00000000000000000000000000000000000000000000000000000000169161418c91903690615b88565b60405180910390a2600954640100000000900460ff166141d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f4a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526017602052604090205460ff16614237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fb8565b73ffffffffffffffffffffffffffffffffffffffff8116614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616102565b73ffffffffffffffffffffffffffffffffffffffff16600090815260176020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556001600655565b60165481565b60155481565b62015f9081565b600060026006541415614327576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906160cb565b60085473ffffffffffffffffffffffffffffffffffffffff16614376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fde924f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144169190615885565b905090565b600080600061442a8585615308565b915091508015614466576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906162f1565b509392505050565b60085473ffffffffffffffffffffffffffffffffffffffff166144bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063f8b2cb4f90614514908790600401615a45565b60206040518083038186803b15801561452c57600080fd5b505afa158015614540573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061456491906158f4565b6008546040517f948d8ce600000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063948d8ce6906145c0908890600401615a45565b60206040518083038186803b1580156145d857600080fd5b505afa1580156145ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461091906158f4565b60085490915073ffffffffffffffffffffffffffffffffffffffff16633fdddaa28661463c858761441b565b846040518463ffffffff1660e01b815260040161465b93929190615b1f565b600060405180830381600087803b15801561467557600080fd5b505af1158015614689573d6000803e3d6000fd5b50506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526000925073ffffffffffffffffffffffffffffffffffffffff8816915063a9059cbb906146e49088908890600401615af9565b602060405180830381600087803b1580156146fe57600080fd5b505af1158015614712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147369190615885565b90508061476f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b505050505050565b610a6b3083836147fc565b3060009081526001602052604090205461479c908261441b565b30600090815260016020526040812091909155546147ba908261441b565b600090815560405130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906147f1908590616453565b60405180910390a350565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461482c908261441b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461486890826152c9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906148c7908590616453565b60405180910390a3505050565b6148dd8161532d565b6018546000541115610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906161a7565b60085473ffffffffffffffffffffffffffffffffffffffff1661496a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063f8b2cb4f906149c1908790600401615a45565b60206040518083038186803b1580156149d957600080fd5b505afa1580156149ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a1191906158f4565b6008546040517f948d8ce600000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063948d8ce690614a6d908890600401615a45565b60206040518083038186803b158015614a8557600080fd5b505afa158015614a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614abd91906158f4565b905060008573ffffffffffffffffffffffffffffffffffffffff166323b872dd8630876040518463ffffffff1660e01b8152600401614afe93929190615a66565b602060405180830381600087803b158015614b1857600080fd5b505af1158015614b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b509190615885565b905080614b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b60085473ffffffffffffffffffffffffffffffffffffffff16633fdddaa287614bb286886152c9565b856040518463ffffffff1660e01b8152600401614bd193929190615b1f565b600060405180830381600087803b158015614beb57600080fd5b505af1158015614bff573d6000803e3d6000fd5b50505050505050505050565b610a6b8230836147fc565b60085473ffffffffffffffffffffffffffffffffffffffff1615614c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616026565b68056bc75e2d63100000811015614ca9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107869061605d565b6b033b2e3c9fd0803ce8000000811115614cef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615edc565b60095465010000000000900460ff1615614d095760188190555b614d128161192e565b614d1c3382610a61565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d556c5dc6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015614d8657600080fd5b505af1158015614d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dbe91906158a1565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790819055604080517fc6580d120000000000000000000000000000000000000000000000000000000081529051919092169163c6580d12916004808301926020929190829003018186803b158015614e5457600080fd5b505afa158015614e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e8c91906158f4565b15614ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616170565b60005b60135481101561513d57600060138281548110614edf57fe5b60009182526020822001546014805473ffffffffffffffffffffffffffffffffffffffff90921693509084908110614f1357fe5b906000526020600020015490506000600a6002018481548110614f3257fe5b60009182526020822001546040517f23b872dd00000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90614f9690339030908890600401615a66565b602060405180830381600087803b158015614fb057600080fd5b505af1158015614fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fe89190615885565b905080615021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b6008546150689073ffffffffffffffffffffffffffffffffffffffff86811691167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61539d565b9050806150a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b6008546040517fe4e1e53800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e4e1e538906150fb90879087908790600401615b1f565b600060405180830381600087803b15801561511557600080fd5b505af1158015615129573d6000803e3d6000fd5b505060019096019550614ec6945050505050565b505b601354156151af57601380548061515257fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905561513f565b6008546012546040517f34e1990700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916334e199079161520691600401616453565b600060405180830381600087803b15801561522057600080fd5b505af1158015615234573d6000803e3d6000fd5b50506008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911692506349b59552915061528f90600190600401615b4d565b600060405180830381600087803b1580156152a957600080fd5b505af11580156152bd573d6000803e3d6000fd5b50506000601255505050565b600082820183811015610d1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616328565b60008083831161531e5750508082036000615326565b505081810360015b9250929050565b3060009081526001602052604090205461534790826152c9565b306000908152600160205260408120919091555461536590826152c9565b60009081556040513091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906147f1908590616453565b6000808473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b81526004016153db929190615a97565b60206040518083038186803b1580156153f357600080fd5b505afa158015615407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061542b91906158f4565b90508281141561543f576001915050610d1f565b80156154f4576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b39061549a908790600090600401615af9565b602060405180830381600087803b1580156154b457600080fd5b505af11580156154c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154ec9190615885565b915050610d1f565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b3906155489087908790600401615af9565b602060405180830381600087803b15801561556257600080fd5b505af1158015615576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061559a9190615885565b95945050505050565b60008083601f8401126155b4578081fd5b50813567ffffffffffffffff8111156155cb578182fd5b602083019150836020808302850101111561532657600080fd5b600082601f8301126155f5578081fd5b81516156086156038261649f565b616478565b81815291506020808301908481018184028601820187101561562957600080fd5b60005b848110156156485781518452928201929082019060010161562c565b505050505092915050565b600060208284031215615664578081fd5b8135610d1f816164bf565b60008060408385031215615681578081fd5b823561568c816164bf565b9150602083013561569c816164bf565b809150509250929050565b6000806000606084860312156156bb578081fd5b83356156c6816164bf565b925060208401356156d6816164bf565b929592945050506040919091013590565b600080604083850312156156f9578182fd5b8235615704816164bf565b946020939093013593505050565b600080600060608486031215615726578283fd5b8335615731816164bf565b95602085013595506040909401359392505050565b60006020808385031215615758578182fd5b825167ffffffffffffffff81111561576e578283fd5b8301601f8101851361577e578283fd5b805161578c6156038261649f565b81815283810190838501858402850186018910156157a8578687fd5b8694505b838510156157d35780516157bf816164bf565b8352600194909401939185019185016157ac565b50979650505050505050565b600080600080606085870312156157f4578081fd5b843567ffffffffffffffff81111561580a578182fd5b615816878288016155a3565b90989097506020870135966040013595509350505050565b60006020828403121561583f578081fd5b815167ffffffffffffffff811115615855578182fd5b615861848285016155e5565b949350505050565b60006020828403121561587a578081fd5b8135610d1f816164e1565b600060208284031215615896578081fd5b8151610d1f816164e1565b6000602082840312156158b2578081fd5b8151610d1f816164bf565b6000602082840312156158ce578081fd5b813560068110610d1f578182fd5b6000602082840312156158ed578081fd5b5035919050565b600060208284031215615905578081fd5b5051919050565b600080600060408486031215615920578081fd5b83359250602084013567ffffffffffffffff81111561593d578182fd5b615949868287016155a3565b9497909650939450505050565b60008060408385031215615968578182fd5b505080516020909101519092909150565b60008060006060848603121561598d578081fd5b8351925060208401519150604084015167ffffffffffffffff8111156159b1578182fd5b6159bd868287016155e5565b9150509250925092565b6000806000606084860312156159db578081fd5b505081359360208301359350604090920135919050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615a23578081fd5b6020830280836020870137939093016020019283525090919050565b15159052565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff959095168552921515602085015260408401919091526060830152608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b901515815260200190565b9515158652931515602086015291151560408501521515606084015215156080830152151560a082015260c00190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152608081019190915260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8916825287602083015260c06040830152615c4960c0830187896159f2565b606083019590955250608081019290925260a090910152949350505050565b73ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152615d506080830184866159f2565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b6000602080835283518082850152825b81811015615dbd57858101830151858201604001528201615da1565b81811115615dce5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526012908201527f4552525f4e4f545f434f4e54524f4c4c45520000000000000000000000000000604082015260600190565b6020808252601c908201527f4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e5300000000604082015260600190565b6020808252818101527f4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b604082015260600190565b60208082526014908201527f4552525f4e4f545f4f4e5f57484954454c495354000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e49545f535550504c595f4d415800000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604082015260600190565b60208082526018908201527f4552525f43414e4e4f545f57484954454c4953545f4c50530000000000000000604082015260600190565b6020808252601c908201527f4552525f4e4f545f434f4e464947555241424c455f5745494748545300000000604082015260600190565b60208082526016908201527f4552525f4c505f4e4f545f57484954454c495354454400000000000000000000604082015260600190565b6020808252600f908201527f4552525f4e4f545f435245415445440000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f49535f43524541544544000000000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e49545f535550504c595f4d494e00000000000000000000000000604082015260600190565b6020808252600b908201527f4552525f5245454e545259000000000000000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5245454e5452595f5649455700000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604082015260600190565b60208082526015908201527f4552525f43414e4e4f545f4348414e47455f4341500000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f4e5a45524f5f455849545f464545000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4341505f4c494d49545f524541434845440000000000000000000000604082015260600190565b60208082526016908201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604082015260600190565b60208082526015908201527f4552525f50454e44494e475f544f4b454e5f4144440000000000000000000000604082015260600190565b6020808252601b908201527f4552525f52454d4f56455f574954485f4144445f50454e44494e470000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4e4f545f5041555341424c455f535741500000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b6020808252601d908201527f4552525f4e4f545f434f4e464947555241424c455f535741505f464545000000604082015260600190565b6020808252601c908201527f4552525f4e4f5f5550444154455f445552494e475f4752414455414c00000000604082015260600190565b600060e082019050835460ff808216151584526163f260208501828460081c16615a3f565b61640460408501828460101c16615a3f565b61641660608501828460181c16615a3f565b61642860808501828460201c16615a3f565b61643a60a08501828460281c16615a3f565b50506006831061644657fe5b8260c08301529392505050565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561649757600080fd5b604052919050565b600067ffffffffffffffff8211156164b5578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff81168114610b5057600080fd5b8015158114610b5057600080fdfea264697066735822122091c952f4aae70aa3dbd1dfe38be24bf0fdb15cdf6a4d8653392695dbc98102a064736f6c634300060c0033a26469706673582212204b727db0b1465f672aecad42ef9566b5a97a30981cec97bd4e87ca3718ed658464736f6c634300060c0033"; - -type CRPFactoryConstructorParams = - | [linkLibraryAddresses: CRPFactoryLibraryAddresses, signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: CRPFactoryConstructorParams -): xs is ConstructorParameters => { - return ( - typeof xs[0] === "string" || - (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || - "_isInterface" in xs[0] - ); -}; - -export class CRPFactory__factory extends ContractFactory { - constructor(...args: CRPFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - const [linkLibraryAddresses, signer] = args; - super( - _abi, - CRPFactory__factory.linkBytecode(linkLibraryAddresses), - signer - ); - } - } - - static linkBytecode( - linkLibraryAddresses: CRPFactoryLibraryAddresses - ): string { - let linkedBytecode = _bytecode; - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$e2443ddb34206265ddf9ba9c66d7b47e8d\\$__", "g"), - linkLibraryAddresses[ - "@beehiveinnovation/configurable-rights-pool/libraries/SmartPoolManager.sol:SmartPoolManager" - ] - .replace(/^0x/, "") - .toLowerCase() - ); - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$c7f394f0430b200d573091ca9a0309069c\\$__", "g"), - linkLibraryAddresses[ - "@beehiveinnovation/configurable-rights-pool/libraries/RightsManager.sol:RightsManager" - ] - .replace(/^0x/, "") - .toLowerCase() - ); - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$03602ee833d1498456e485c89c7d5cf6a3\\$__", "g"), - linkLibraryAddresses[ - "@beehiveinnovation/configurable-rights-pool/libraries/BalancerSafeMath.sol:BalancerSafeMath" - ] - .replace(/^0x/, "") - .toLowerCase() - ); - - return linkedBytecode; - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): CRPFactory { - return super.attach(address) as CRPFactory; - } - connect(signer: Signer): CRPFactory__factory { - return super.connect(signer) as CRPFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): CRPFactoryInterface { - return new utils.Interface(_abi) as CRPFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): CRPFactory { - return new Contract(address, _abi, signerOrProvider) as CRPFactory; - } -} - -export interface CRPFactoryLibraryAddresses { - ["@beehiveinnovation/configurable-rights-pool/libraries/SmartPoolManager.sol:SmartPoolManager"]: string; - ["@beehiveinnovation/configurable-rights-pool/libraries/RightsManager.sol:RightsManager"]: string; - ["@beehiveinnovation/configurable-rights-pool/libraries/BalancerSafeMath.sol:BalancerSafeMath"]: string; -} diff --git a/src/typechain/factories/CalculatorTest__factory.ts b/src/typechain/factories/CalculatorTest__factory.ts deleted file mode 100644 index b4d87e5..0000000 --- a/src/typechain/factories/CalculatorTest__factory.ts +++ /dev/null @@ -1,228 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - CalculatorTest, - CalculatorTestInterface, - StateConfigStruct, -} from "../CalculatorTest"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, - { - inputs: [], - name: "run", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "runState", - outputs: [ - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - internalType: "struct State", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60e06040523480156200001157600080fd5b5060405162001e7d38038062001e7d833981016040819052620000349162000410565b60056080819052620000499060049062000590565b60a052620000616200005b8262000074565b620001ae565b6001600160a01b031660c0525062000793565b620000a76040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151620000e75760405162461bcd60e51b8152602060048201526009602482015268305f534f555243455360b81b604482015260640160405180910390fd5b6040518060a001604052806000815260200183604001516001600160401b03811115620001185762000118620002d0565b60405190808252806020026020018201604052801562000142578160200160208202803683370190505b508152602001836000015181526020018360200151815260200183606001516001600160401b038111156200017b576200017b620002d0565b604051908082528060200260200182016040528015620001a5578160200160208202803683370190505b50905292915050565b600080620001e883604051602001620001c89190620006ce565b6040516020818303038152906040526200022d60201b6200012f1760201c565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516200021f93929190620006ea565b60405180910390a192915050565b600080620002678360405160200162000247919062000718565b604051602081830303815290604052620002a260201b620001ba1760201c565b90508051602082016000f091506001600160a01b0382166200029c5760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620002ba92919062000740565b6040516020818303038152906040529050919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200030b576200030b620002d0565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200033c576200033c620002d0565b604052919050565b60006001600160401b03821115620003605762000360620002d0565b5060051b60200190565b60005b83811015620003875781810151838201526020016200036d565b8381111562000397576000848401525b50505050565b600082601f830112620003af57600080fd5b81516020620003c8620003c28362000344565b62000311565b82815260059290921b84018101918181019086841115620003e857600080fd5b8286015b84811015620004055780518352918301918301620003ec565b509695505050505050565b600060208083850312156200042457600080fd5b82516001600160401b03808211156200043c57600080fd5b90840190608082870312156200045157600080fd5b6200045b620002e6565b8251828111156200046b57600080fd5b8301601f810188136200047d57600080fd5b80516200048e620003c28262000344565b81815260059190911b8201860190868101908a831115620004ae57600080fd5b8784015b838110156200054457805187811115620004cc5760008081fd5b8501603f81018d13620004df5760008081fd5b89810151604089821115620004f857620004f8620002d0565b6200050c601f8301601f19168d0162000311565b8281528f82848601011115620005225760008081fd5b62000533838e83018487016200036a565b8652505050918801918801620004b2565b50845250505082840151828111156200055c57600080fd5b6200056a888286016200039d565b858301525060408301516040820152606083015160608201528094505050505092915050565b60008219821115620005b257634e487b7160e01b600052601160045260246000fd5b500190565b600081518084526020808501945080840160005b83811015620005e957815187529582019590820190600101620005cb565b509495945050505050565b80518252600060208083015160a0828601526200061560a0860182620005b7565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156200068957601f1980878403018552855180518085526200066a818b87018c85016200036a565b9689019695890195601f0190911692909201870191506001016200063f565b506060880151955088810360608a0152620006a58187620005b7565b9550505050505060808301518482036080860152620006c58282620005b7565b95945050505050565b602081526000620006e36020830184620005f4565b9392505050565b6001600160a01b03848116825283166020820152606060408201819052600090620006c590830184620005f4565b6000815260008251620007338160018501602087016200036a565b9190910160010192915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015281516000906200078581600e8501602087016200036a565b91909101600e019392505050565b60805160a05160c0516116b4620007c9600039600060a80152600081816106eb01526107490152600061071701526116b46000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806345c6a7a61461003b578063c040622614610059575b600080fd5b61004361006f565b6040516100509190610f61565b60405180910390f35b6100616100ee565b604051908152602001610050565b6100a16040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b60006100cc7f00000000000000000000000000000000000000000000000000000000000000006101e6565b90506100e96040518060200160405280600081525082600061023a565b919050565b6000806100f961006f565b90508060200151600182600001516101119190611075565b815181106101215761012161108c565b602002602001015191505090565b60008061015a8360405160200161014691906110bb565b6040516020818303038152906040526101ba565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166101b4576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101d09291906110e1565b6040516020818303038152906040529050919050565b6102186040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610221826104c3565b80602001905181019061023491906113b0565b92915050565b602082015151825111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064015b60405180910390fd5b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156104b6576002880197508784015180601e1a975080601f1a965050600587101561043557600187141561034d5781608087166103185750825b607f87168151811061032957600080fd5b8b516020820260200183015160208202602001850152600181018d52505050610441565b600287141561038457895180871061036457600080fd5b6020870260200182015160208202602001830152600181018b5250610441565b600387141561039d576103988b8b886104f1565b610441565b60048714156103ce576103988a6040516020016103ba9190610f61565b604051602081830303815290604052610657565b86610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016102a6565b6104418b8b89896106e9565b60208a0151518a5111156104b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102a6565b6102db565b5050505050505050505050565b60606102348260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610776565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561055557610555611178565b60405190808252806020026020018201604052801561057e578160200160208202803683370190505b50905060005b828110156105d557876020015181896000015101815181106105a8576105a861108c565b60200260200101518282815181106105c2576105c261108c565b6020908102919091010152600101610584565b5060005b61010081101561064c5760005b8381101561063957848286038483815181106106045761060461108c565b6020026020010151901b901c896080015182815181106106265761062661108c565b60209081029190910101526001016105e6565b5061064589898861023a565b84016105d9565b505050505050505050565b6106e68160405160240161066b9190611493565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261085f565b50565b7f00000000000000000000000000000000000000000000000000000000000000008210156107435761073e837f0000000000000000000000000000000000000000000000000000000000000000840383610880565b610770565b610770837f0000000000000000000000000000000000000000000000000000000000000000840383610996565b50505050565b6060833b80610795575050604080516020810190915260008152610858565b808411156107b3575050604080516020810190915260008152610858565b838310156107fe576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102a6565b83830384820360008282106108135782610815565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600482106108ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102a6565b8161091b5743836020015184600001518151811061090a5761090a61108c565b60200260200101818152505061098b565b600182141561093f5742836020015184600001518151811061090a5761090a61108c565b60028214156109635760208301518351815133929190811061090a5761090a61108c565b60208301518351815130929190811061097e5761097e61108c565b6020026020010181815250505b505080516001019052565b600b8210610a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102a6565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019183916000919083908110610a4657610a4661108c565b602002602001015190506000861415610a9e575b82821015610a99576020870151805160019093019283908110610a7f57610a7f61108c565b602002602001015181610a9291906114a6565b9050610a5a565b610e00565b6001861415610b1a575b8282108015610ad657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b15610a99578180600101925050610b1387602001518381518110610afc57610afc61108c565b602002602001015182610e2f90919063ffffffff16565b9050610aa8565b6002861415610b63575b82821015610a99576020870151805160019093019283908110610b4957610b4961108c565b602002602001015181610b5c9190611075565b9050610b24565b6003861415610bc0575b8282108015610b7c5750806000105b15610a99578180600101925050610bb987602001518381518110610ba257610ba261108c565b602002602001015182610e6b90919063ffffffff16565b9050610b6d565b6004861415610c09575b82821015610a99576020870151805160019093019283908110610bef57610bef61108c565b602002602001015181610c0291906114be565b9050610bca565b6005861415610c85575b8282108015610c4157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b15610a99578180600101925050610c7e87602001518381518110610c6757610c6761108c565b602002602001015182610e8190919063ffffffff16565b9050610c13565b6006861415610cce575b82821015610a99576020870151805160019093019283908110610cb457610cb461108c565b602002602001015181610cc7919061152a565b9050610c8f565b6007861415610d17575b82821015610a99576020870151805160019093019283908110610cfd57610cfd61108c565b602002602001015181610d10919061153e565b9050610cd8565b6008861415610d60575b82821015610a99576020870151805160019093019283908110610d4657610d4661108c565b602002602001015181610d599190611672565b9050610d21565b6009861415610db25760005b83831015610dac576020880151805160019094019384908110610d9157610d9161108c565b6020026020010151905081811015610da7578091505b610d6c565b50610e00565b600a861415610e005760005b83831015610dfe576020880151805160019094019384908110610de357610de361108c565b6020026020010151905081811115610df9578091505b610dbe565b505b8087602001518581518110610e1757610e1761108c565b60209081029190910101525050506001019092525050565b6000828201838110610e415780610e63565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000818311610e7b576000610858565b50900390565b600082610e9057506000610234565b82820282848281610ea357610ea36114fb565b041415610e415780610e63565b600081518084526020808501945080840160005b83811015610ee057815187529582019590820190600101610ec4565b509495945050505050565b60005b83811015610f06578181015183820152602001610eee565b838111156107705750506000910152565b60008151808452610f2f816020860160208601610eeb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a06040850152610f8660c0850182610eb0565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015610fff5784878303018452610fed828751610f17565b95880195938801939150600101610fd3565b5060608a01519650838982030160808a015261101b8188610eb0565b965050505060808701519250808685030160a0870152505061103d8282610eb0565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561108757611087611046565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008152600082516110d4816001850160208701610eeb565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161116a81600e850160208701610eeb565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156111ca576111ca611178565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561121757611217611178565b604052919050565b600067ffffffffffffffff82111561123957611239611178565b5060051b60200190565b600082601f83011261125457600080fd5b815160206112696112648361121f565b6111d0565b82815260059290921b8401810191818101908684111561128857600080fd5b8286015b848110156112a3578051835291830191830161128c565b509695505050505050565b6000601f83818401126112c057600080fd5b825160206112d06112648361121f565b82815260059290921b850181019181810190878411156112ef57600080fd5b8287015b848110156113a457805167ffffffffffffffff808211156113145760008081fd5b818a0191508a603f8301126113295760008081fd5b8582015160408282111561133f5761133f611178565b61136e887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016111d0565b92508183528c818386010111156113855760008081fd5b61139482898501838701610eeb565b50508452509183019183016112f3565b50979650505050505050565b6000602082840312156113c257600080fd5b815167ffffffffffffffff808211156113da57600080fd5b9083019060a082860312156113ee57600080fd5b6113f66111a7565b8251815260208301518281111561140c57600080fd5b61141887828601611243565b60208301525060408301518281111561143057600080fd5b61143c878286016112ae565b60408301525060608301518281111561145457600080fd5b61146087828601611243565b60608301525060808301518281111561147857600080fd5b61148487828601611243565b60808301525095945050505050565b6020815260006108586020830184610f17565b600082198211156114b9576114b9611046565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156114f6576114f6611046565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611539576115396114fb565b500490565b60008261154d5761154d6114fb565b500690565b600181815b808511156115ab57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561159157611591611046565b8085161561159e57918102915b93841c9390800290611557565b509250929050565b6000826115c257506001610234565b816115cf57506000610234565b81600181146115e557600281146115ef5761160b565b6001915050610234565b60ff84111561160057611600611046565b50506001821b610234565b5060208310610133831016604e8410600b841016171561162e575081810a610234565b6116388383611552565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561166a5761166a611046565b029392505050565b600061085883836115b356fea26469706673582212202c8b9d87e567ea655d2c9b807e12894ad6724c6e384c97e1a7698475abc1cb5464736f6c634300080a0033"; - -type CalculatorTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: CalculatorTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class CalculatorTest__factory extends ContractFactory { - constructor(...args: CalculatorTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(config_, overrides || {}) as Promise; - } - getDeployTransaction( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): CalculatorTest { - return super.attach(address) as CalculatorTest; - } - connect(signer: Signer): CalculatorTest__factory { - return super.connect(signer) as CalculatorTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): CalculatorTestInterface { - return new utils.Interface(_abi) as CalculatorTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): CalculatorTest { - return new Contract(address, _abi, signerOrProvider) as CalculatorTest; - } -} diff --git a/src/typechain/factories/CombineTierFactory__factory.ts b/src/typechain/factories/CombineTierFactory__factory.ts index 8281aed..cfc0188 100644 --- a/src/typechain/factories/CombineTierFactory__factory.ts +++ b/src/typechain/factories/CombineTierFactory__factory.ts @@ -10,7 +10,13 @@ import type { const _abi = [ { - inputs: [], + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], stateMutability: "nonpayable", type: "constructor", }, @@ -85,19 +91,9 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", - name: "config_", + name: "stateConfig_", type: "tuple", }, ], @@ -147,7 +143,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61388680610dbe83390190565b608051610cfa6100c4600039600081816093015261037a0152610cfa6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e57806384e0ecdb146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee919061070c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906108bf565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108d2565b92915050565b60008061037183850185610a25565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fe684b6d600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063e684b6d6906103f3908590600401610be8565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b8060051b360383131561066d57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ef57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000602080835260a083016107218586610606565b6080848701528281845260c08701905060c08260051b88010193508260005b838110156107ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107a157600080fd5b8501803567ffffffffffffffff8111156107ba57600080fd5b8036038713156107c957600080fd5b6107d688828b8501610674565b975050509186019190860190600101610740565b50505050506107fb82860186610606565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08583030160408601526108328284836106bd565b9250505060408401356060840152606084013560808401528091505092915050565b6000815180845260005b8181101561087a5760208185018101518683018201520161085e565b8181111561088c576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610854565b6000602082840312156108e457600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610941576109416108ef565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561098e5761098e6108ef565b604052919050565b600067ffffffffffffffff8211156109b0576109b06108ef565b5060051b60200190565b600082601f8301126109cb57600080fd5b813560206109e06109db83610996565b610947565b82815260059290921b840181019181810190868411156109ff57600080fd5b8286015b84811015610a1a5780358352918301918301610a03565b509695505050505050565b60006020808385031215610a3857600080fd5b823567ffffffffffffffff80821115610a5057600080fd5b9084019060808287031215610a6457600080fd5b610a6c61091e565b823582811115610a7b57600080fd5b8301601f81018813610a8c57600080fd5b8035610a9a6109db82610996565b81815260059190911b8201860190868101908a831115610ab957600080fd5b8784015b83811015610b6457803587811115610ad55760008081fd5b8501603f81018d13610ae75760008081fd5b89810135604089821115610afd57610afd6108ef565b610b2d8c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601610947565b8281528f82848601011115610b425760008081fd5b828285018e83013760009281018d019290925250845250918801918801610abd565b5084525050508284013582811115610b7b57600080fd5b610b87888286016109ba565b858301525060408301356040820152606083013560608201528094505050505092915050565b600081518084526020808501945080840160005b83811015610bdd57815187529582019590820190600101610bc1565b509495945050505050565b6000602080835260a08301845160808386015281815180845260c08701915060c08160051b8801019350848301925060005b81811015610c66577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40888603018352610c54858551610854565b94509285019291850191600101610c1a565b50505050908401518382037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001604085015290610ca38183610bad565b9150506040840151606084015260608401516080840152809150509291505056fea26469706673582212209f1edcfebafeb5d3d1638b31964f54d0ff073806f5075b2f4d53f884da2453de64736f6c634300080a003360a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516137b5620000d1600039600081816109cf0152610a0a01526137b56000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063e053ea311461005b578063e684b6d614610080575b600080fd5b610059610054366004612c15565b610093565b005b61006e610069366004612c9e565b6100fa565b60405190815260200160405180910390f35b61005961008e366004612e5a565b610197565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000805481906101259062010000900473ffffffffffffffffffffffffffffffffffffffff16610305565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506101649101604051602081830303815290604052826000610359565b6020810151815161017790600190612fdd565b8151811061018757610187612ff4565b6020026020010151915050919050565b600054610100900460ff166101b25760005460ff16156101b6565b303b155b610242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff1615801561028157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b61029261028d836105dd565b610739565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561030157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6103376040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610340826107a7565b8060200190518101906103539190613166565b92915050565b602082015151825111156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156105d0576002880197508784015180601e1a975080601f1a965050600587101561054f5760018714156104675781608087166104325750825b607f87168151811061044357600080fd5b8b516020820260200183015160208202602001850152600181018d5250505061055b565b600287141561049e57895180871061047e57600080fd5b6020870260200182015160208202602001830152600181018b525061055b565b60038714156104b7576104b28b8b886107d5565b61055b565b60048714156104e8576104b28a6040516020016104d491906133a4565b60405160208183030381529060405261093b565b866104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016100f1565b61055b8b8b89896109cd565b60208a0151518a5111156105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b6103f5565b5050505050505050505050565b61060f6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016100f1565b6040518060a0016040528060008152602001836040015167ffffffffffffffff8111156106a7576106a7612cbb565b6040519080825280602002602001820160405280156106d0578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff81111561070757610707612cbb565b604051908082528060200260200182016040528015610730578160200160208202803683370190505b50905292915050565b6000806107648360405160200161075091906133a4565b604051602081830303815290604052610afa565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd338285604051610799939291906133b7565b60405180910390a192915050565b60606103538260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b85565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561083957610839612cbb565b604051908082528060200260200182016040528015610862578160200160208202803683370190505b50905060005b828110156108b9578760200151818960000151018151811061088c5761088c612ff4565b60200260200101518282815181106108a6576108a6612ff4565b6020908102919091010152600101610868565b5060005b6101008110156109305760005b8381101561091d57848286038483815181106108e8576108e8612ff4565b6020026020010151901b901c8960800151828151811061090a5761090a612ff4565b60209081029190910101526001016108ca565b50610929898988610359565b84016108bd565b505050505050505050565b6109ca8160405160240161094f91906133f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052610c6e565b50565b7f0000000000000000000000000000000000000000000000000000000000000000821015610a0857610a03836005840383610c8f565b610af4565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600084806020019051810190610aad9190613403565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110610ae057610ae0612ff4565b602090810291909101015250825160010183525b50505050565b600080610b2583604051602001610b119190613420565b604051602081830303815290604052610dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610b7f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80610ba4575050604080516020810190915260008152610c67565b80841115610bc2575050604080516020810190915260008152610c67565b83831015610c0d576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016100f1565b8383038482036000828210610c225782610c24565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015610ca857610ca3838383610e26565b505050565b601d821015610d2b57600b821015610cc857610ca3836004840383610f3c565b6016821015610cfe57610ca3837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff584018361126a565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea840183611703565b6023821015610d6157610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3840183611973565b6025821015610d9757610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183611e47565b6027821015610dcd57610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612070565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd984018361226a565b6060815182604051602001610e10929190613446565b6040516020818303038152906040529050919050565b60048210610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81610ec157438360200151846000015181518110610eb057610eb0612ff4565b602002602001018181525050610f31565b6001821415610ee557428360200151846000015181518110610eb057610eb0612ff4565b6002821415610f0957602083015183518151339291908110610eb057610eb0612ff4565b602083015183518151309291908110610f2457610f24612ff4565b6020026020010181815250505b505080516001019052565b60078210610fa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b60028210156110f25782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826110515783602001518160010181518110610ff157610ff1612ff4565b6020026020010151611029838660200151848151811061101357611013612ff4565b602002602001015161269690919063ffffffff16565b028460200151828151811061104057611040612ff4565b6020026020010181815250506110c6565b60018314156110c6578360200151816001018151811061107357611073612ff4565b6020026020010151611095838660200151848151811061101357611013612ff4565b816110a2576110a26134dd565b04846020015182815181106110b9576110b9612ff4565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b60058210156112035782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600283141561116957611142828560200151838151811061101357611013612ff4565b8460200151828151811061115857611158612ff4565b602002602001018181525050610af4565b60038314156111a257611142828560200151838151811061118c5761118c612ff4565b602002602001015161271790919063ffffffff16565b6004831415610af4576111db82856020015183815181106111c5576111c5612ff4565b602002602001015161277590919063ffffffff16565b846020015182815181106111f1576111f1612ff4565b60200260200101818152505050505050565b600582141561124557670de0b6b3a7640000836020015184600001518151811061122f5761122f612ff4565b6020908102919091010152505080516001019052565b6006821415610ca35760128360200151846000015181518110610f2457610f24612ff4565b600b82106112d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01918391600091908390811061131a5761131a612ff4565b602002602001015190506000861415611372575b8282101561136d57602087015180516001909301928390811061135357611353612ff4565b602002602001015181611366919061350c565b905061132e565b6116d4565b60018614156113ee575b82821080156113aa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506113e7876020015183815181106113d0576113d0612ff4565b6020026020010151826127c090919063ffffffff16565b905061137c565b6002861415611437575b8282101561136d57602087015180516001909301928390811061141d5761141d612ff4565b6020026020010151816114309190612fdd565b90506113f8565b6003861415611494575b82821080156114505750806000105b1561136d57818060010192505061148d8760200151838151811061147657611476612ff4565b6020026020010151826127fc90919063ffffffff16565b9050611441565b60048614156114dd575b8282101561136d5760208701518051600190930192839081106114c3576114c3612ff4565b6020026020010151816114d69190613524565b905061149e565b6005861415611559575b828210801561151557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506115528760200151838151811061153b5761153b612ff4565b60200260200101518261281290919063ffffffff16565b90506114e7565b60068614156115a2575b8282101561136d57602087015180516001909301928390811061158857611588612ff4565b60200260200101518161159b9190613561565b9050611563565b60078614156115eb575b8282101561136d5760208701518051600190930192839081106115d1576115d1612ff4565b6020026020010151816115e49190613575565b90506115ac565b6008861415611634575b8282101561136d57602087015180516001909301928390811061161a5761161a612ff4565b60200260200101518161162d91906136a9565b90506115f5565b60098614156116865760005b8383101561168057602088015180516001909401938490811061166557611665612ff4565b602002602001015190508181101561167b578091505b611640565b506116d4565b600a8614156116d45760005b838310156116d25760208801518051600190940193849081106116b7576116b7612ff4565b60200260200101519050818111156116cd578091505b611692565b505b80876020015185815181106116eb576116eb612ff4565b60209081029190910101525050506001019092525050565b6007821061176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208085015181830201018380156117b657600181146117ed5760028114611866576003811461188e57600481146118b657600581146118de57600681146119255761196b565b826117c057600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201805115905261196b565b60038310156117fb57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015611857576020820151825261185f565b604082015182525b505061196b565b600283101561187457600080fd5b60018303865260408203602081015181511481525061196b565b600283101561189c57600080fd5b60018303865260408203602081015181511081525061196b565b60028310156118c457600080fd5b60018303865260408203602081015181511181525061196b565b838310156118eb57600080fd5b8315611920576001840383038652602084028203805b8381101561185f578051611918576000825261185f565b602001611901565b61196b565b8383101561193257600080fd5b831561196b576001840383038652602084028203805b83811015611968578051801561195f578252611968565b50602001611948565b50505b505050505050565b600682106119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600082611b05575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611a4857611a48612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea3185602001518360010181518110611a8457611a84612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611ac4919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114291906136b5565b6001831415611b60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110611b4957611b49612ff4565b602090810291909101015283516001018452610af4565b6002831415611b855760008460200151856000015181518110611b4957611b49612ff4565b6003831415611c39575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110611bd157611bd1612ff4565b60200260200101519050600085602001518360010181518110611bf657611bf6612ff4565b60200260200101519050611c0a8282612841565b86602001518481518110611c2057611c20612ff4565b6020908102919091010152505083516001018452610af4565b6004831415611d01575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110611c9457611c94612ff4565b60200260200101519050600087602001518560010181518110611cb957611cb9612ff4565b60200260200101519050611ccf828585846128a0565b88602001518681518110611ce557611ce5612ff4565b602090810291909101015250508551600101865250610af49050565b6005831415610af4575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115611d6657611d66612cbb565b604051908082528060200260200182016040528015611d8f578160200160208202803683370190505b50905060005b83811015611de45789602001518381518110611db357611db3612ff4565b6020026020010151828281518110611dcd57611dcd612ff4565b602090810291909101015260019283019201611d95565b50600089602001518381518110611dfd57611dfd612ff4565b60200260200101519050611e1382828888612946565b8a602001518881518110611e2957611e29612ff4565b60209081029190910101525050875160010188525050505050505050565b60028210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81611fd75782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611f1957611f19612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611f5657611f56612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611f96919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db91906136b5565b6001821415610ca3578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201918290811061201e5761201e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b600282106120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018261217b578360200151818151811061213e5761213e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611a8457611a84612ff4565b6001831415610af4578360200151818151811061219a5761219a612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106121d7576121d7612ff4565b60200260200101516040518263ffffffff1660e01b81526004016121fd91815260200190565b602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190613403565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106111f1576111f1612ff4565b600282106122d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b816123de5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd909201918290811061233c5761233c612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e8560200151836001018151811061237757612377612ff4565b60200260200101518660200151846002018151811061239857612398612ff4565b60200260200101516040518363ffffffff1660e01b8152600401611f9692919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610ca3576001810160008167ffffffffffffffff81111561240657612406612cbb565b60405190808252806020026020018201604052801561242f578160200160208202803683370190505b50905060008267ffffffffffffffff81111561244d5761244d612cbb565b604051908082528060200260200182016040528015612476578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106124c6576124c6612ff4565b6020026020010151905060005b8581101561257d578860200151818401600101815181106124f6576124f6612ff4565b602002602001015185828151811061251057612510612ff4565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061255057612550612ff4565b602002602001015184828151811061256a5761256a612ff4565b60209081029190910101526001016124d3565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125d590889088906004016136ce565b600060405180830381865afa1580156125f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612638919081019061373b565b905060005b8681101561268a5781818151811061265757612657612ff4565b60200260200101518a602001518286018151811061267757612677612ff4565b602090810291909101015260010161263d565b50505050505050505050565b60008082601214156126ab5783915050610353565b82601211156126d7575060128290036126c581600a6136a9565b6126cf9085613524565b915050610353565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270681600a6136a9565b6126cf9085613561565b5092915050565b600080601283141561272c5783915050610353565b82601211156127465750601282900361270681600a6136a9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c581600a6136a9565b600081810b612785575081610353565b60008260000b13156127ad5761279c82600a613770565b6127a69084613524565b9050610353565b60ff60008390031661270681600a6136a9565b60008282018381106127d257806127f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161280c576000610c67565b50900390565b60008261282157506000610353565b82820282848281612834576128346134dd565b0414156127d257806127f4565b60008060015b6008811161289857600061285b8683612a96565b905060006128698684612a96565b9050600061287783836127fc565b9050612887856001860383612b43565b945050600190920191506128479050565b509392505050565b600082600881111561290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b8581101561293a5763ffffffff6020820290811b199890981685891b17979150600101612912565b50959695505050505050565b835160009081908190819060015b60088111612a885760009250828761298d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612991565b5060005b60005b83811015612a46576129bf8c82815181106129b1576129b1612ff4565b602002602001015184612a96565b95508a8611612a1157886129de576129d78683612bcd565b9150612a08565b60018914156129f1576129d78683612be3565b6002891480156129ff575084155b15612a08578591505b60019450612a3e565b89612a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a46565b600101612994565b5083612a6f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a7d866001840383612b43565b955050600101612954565b509298975050505050505050565b6000816008811115612b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b82612b125760009150612710565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310612bdc5781610c67565b5090919050565b600081831015612bdc5781610c67565b73ffffffffffffffffffffffffffffffffffffffff811681146109ca57600080fd5b60008060008060608587031215612c2b57600080fd5b8435612c3681612bf3565b935060208501359250604085013567ffffffffffffffff80821115612c5a57600080fd5b818701915087601f830112612c6e57600080fd5b813581811115612c7d57600080fd5b886020828501011115612c8f57600080fd5b95989497505060200194505050565b600060208284031215612cb057600080fd5b8135610c6781612bf3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b60405290565b60405160a0810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d7d57612d7d612cbb565b604052919050565b600067ffffffffffffffff821115612d9f57612d9f612cbb565b5060051b60200190565b600067ffffffffffffffff821115612dc357612dc3612cbb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112612e0057600080fd5b81356020612e15612e1083612d85565b612d36565b82815260059290921b84018101918181019086841115612e3457600080fd5b8286015b84811015612e4f5780358352918301918301612e38565b509695505050505050565b60006020808385031215612e6d57600080fd5b823567ffffffffffffffff80821115612e8557600080fd5b9084019060808287031215612e9957600080fd5b612ea1612cea565b823582811115612eb057600080fd5b8301601f81018813612ec157600080fd5b8035612ecf612e1082612d85565b81815260059190911b8201860190868101908a831115612eee57600080fd5b8784015b83811015612f6557803587811115612f0a5760008081fd5b8501603f81018d13612f1c5760008081fd5b898101356040612f2e612e1083612da9565b8281528f82848601011115612f435760008081fd5b828285018e83013760009281018d019290925250845250918801918801612ef2565b5084525050508284013582811115612f7c57600080fd5b612f8888828601612def565b858301525060408301356040820152606083013560608201528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fef57612fef612fae565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f83011261303457600080fd5b81516020613044612e1083612d85565b82815260059290921b8401810191818101908684111561306357600080fd5b8286015b84811015612e4f5780518352918301918301613067565b60005b83811015613099578181015183820152602001613081565b83811115610af45750506000910152565b600082601f8301126130bb57600080fd5b815160206130cb612e1083612d85565b82815260059290921b840181019181810190868411156130ea57600080fd5b8286015b84811015612e4f57805167ffffffffffffffff81111561310e5760008081fd5b8701603f810189136131205760008081fd5b848101516040613132612e1083612da9565b8281528b828486010111156131475760008081fd5b6131568389830184870161307e565b86525050509183019183016130ee565b60006020828403121561317857600080fd5b815167ffffffffffffffff8082111561319057600080fd5b9083019060a082860312156131a457600080fd5b6131ac612d13565b825181526020830151828111156131c257600080fd5b6131ce87828601613023565b6020830152506040830151828111156131e657600080fd5b6131f2878286016130aa565b60408301525060608301518281111561320a57600080fd5b61321687828601613023565b60608301525060808301518281111561322e57600080fd5b61323a87828601613023565b60808301525095945050505050565b600081518084526020808501945080840160005b838110156132795781518752958201959082019060010161325d565b509495945050505050565b6000815180845261329c81602086016020860161307e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252600060208083015160a0828601526132ed60a0860182613249565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b82811015613363577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452613351828651613284565b94870194938701939150600101613317565b506060880151955088810360608a015261337d8187613249565b955050505050506080830151848203608086015261339b8282613249565b95945050505050565b602081526000610c6760208301846132ce565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261339b60608301846132ce565b602081526000610c676020830184613284565b60006020828403121561341557600080fd5b8151610c6781612bf3565b600081526000825161343981600185016020870161307e565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516134cf81600e85016020870161307e565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000821982111561351f5761351f612fae565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561355c5761355c612fae565b500290565b600082613570576135706134dd565b500490565b600082613584576135846134dd565b500690565b600181815b808511156135e257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156135c8576135c8612fae565b808516156135d557918102915b93841c939080029061358e565b509250929050565b6000826135f957506001610353565b8161360657506000610353565b816001811461361c576002811461362657613642565b6001915050610353565b60ff84111561363757613637612fae565b50506001821b610353565b5060208310610133831016604e8410600b8410161715613665575081810a610353565b61366f8383613589565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136a1576136a1612fae565b029392505050565b6000610c6783836135ea565b6000602082840312156136c757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561371d57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016136eb565b505050838103828501526137318186613249565b9695505050505050565b60006020828403121561374d57600080fd5b815167ffffffffffffffff81111561376457600080fd5b6127f484828501613023565b6000610c6760ff8416836135ea56fea2646970667358221220b093111fbd37db4e752472d7a9ecb54289ae2466b71641674440c1ecc8ae93fe64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b50604051613f1d380380613f1d83398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b61315f80610dbe83390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610c99610125600039600081816093015261037a0152610c996000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063f462237c146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee919061070c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906108a7565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108ba565b92915050565b60008061037183850185610a0d565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f4e75d77e00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690634e75d77e906103f3908590600401610b82565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201604081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b8060051b360383131561066d57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ef57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006020808352606083016107218586610606565b6040848701528281845260808701905060808260051b88010193508260005b838110156107ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107a157600080fd5b8501803567ffffffffffffffff8111156107ba57600080fd5b8036038713156107c957600080fd5b6107d688828b8501610674565b975050509186019190860190600101610740565b50505050506107fb82860186610606565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08583030160408601526108328284836106bd565b9695505050505050565b6000815180845260005b8181101561086257602081850181015186830182015201610846565b81811115610874576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd602083018461083c565b6000602082840312156108cc57600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610929576109296108d7565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610976576109766108d7565b604052919050565b600067ffffffffffffffff821115610998576109986108d7565b5060051b60200190565b600082601f8301126109b357600080fd5b813560206109c86109c38361097e565b61092f565b82815260059290921b840181019181810190868411156109e757600080fd5b8286015b84811015610a0257803583529183019183016109eb565b509695505050505050565b60006020808385031215610a2057600080fd5b823567ffffffffffffffff80821115610a3857600080fd5b81850191506040808388031215610a4e57600080fd5b610a56610906565b833583811115610a6557600080fd5b8401601f81018913610a7657600080fd5b8035610a846109c38261097e565b81815260059190911b8201870190878101908b831115610aa357600080fd5b8884015b83811015610b4b57803588811115610abf5760008081fd5b8501603f81018e13610ad15760008081fd5b8a81013589811115610ae557610ae56108d7565b610b158c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161092f565b8181528f8a838501011115610b2a5760008081fd5b818a84018e83013760009181018d0191909152845250918901918901610aa7565b50845250505083850135915082821115610b6457600080fd5b610b70888386016109a2565b85820152809550505050505092915050565b6000602080835260608301845160408386015281815180845260808701915060808160051b8801019350848301925060005b81811015610c00577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888603018352610bee85855161083c565b94509285019291850191600101610bb4565b50505050848201518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016040860152805180835290830191600091908401905b80831015610a025783518252928401926001929092019190840190610c4356fea26469706673582212200e2af05464fed9c522e31ae4eb7d58fa547dad4a98d53f46cc5cd0c38da80bc364736f6c634300080a003360c06040523480156200001157600080fd5b506040516200315f3803806200315f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516130bd620000a2600039600061039d015260006103d901526130bd6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e0419ae311610050578063e0419ae314610094578063e053ea31146100d1578063f2cd6c08146100f257600080fd5b80634e75d77e1461006c5780638a200fff14610081575b600080fd5b61007f61007a366004612502565b610283565b005b61007f61008f36600461255f565b610532565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100e46100df3660046125e8565b610599565b6040519081526020016100c8565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261112b60e082015261113661010082015261114161012082015261114c6101408201526111576101608201526111ca6101808201526112306101a08201526112706101c08201526112a46101e08201526112d861020082015261131f61022082015261137c6102408201526113b56102608201526113f36102808201526114456102a08201526114a26102c08201526114d66102e082015261150a61030082015261153c61032082015261156e6103408201526115a06103608201526115cd6103808201526116286103a082015261167e6103c08201526116d56103e082015261172c61040082015261176061042082015261178a6104408201526118716104608201526118cd6104808201526119496104a0820152611a036104c08201819052611aad6104e0830152610500820152611b2d610520820152611c35610540820152611d5361056080830191909152815290516100c8919061267f565b600061028f6001610654565b905080156102c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103046040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6103656040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610325579050509050818160008151811061038e5761038e6126c1565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016104189392919061286f565b6000604051808303816000875af1158015610437573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261047d9190810190612a21565b9050610488816107da565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050801561052e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000806105cf6105ca600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610865565b610899565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff85166020820181905290915061061e82846000610a05565b506020830151835161063290600190612af9565b81518110610642576106426126c1565b60200260200101519350505050919050565b60008054610100900460ff161561070b578160ff1660011480156106775750303b155b610703576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b506000919050565b60005460ff8084169116106107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610805836040516020016107f19190612b10565b604051602081830303815290604052610cdb565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661085f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606108938260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d07565b92915050565b6108cb6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6108fd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561093157610931612692565b60405190808252806020026020018201604052801561095a578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561099157610991612692565b6040519080825280602002602001820160405280156109ba578160200160208202803683370190505b5090506020870151602002604001870160005b848110156109f45781602082026020018401528151602001820191506001810190506109cd565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610cc1576003890198508886015180601f1a975061ffff8160081c169850506006881015610c395787610a8857866020028401518252602082019150610c4c565b6001881415610aa557602087028301518252602082019150610c4c565b6002881415610b32578c518760200210610b1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610590565b866020026020018d01518252602082019150610c4c565b6003881415610b7a576000610b686040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610c4c565b6004881415610b9657610b8f8d8d848a610def565b9150610c4c565b606087610bc4578c604051602001610bae9190612b66565b6040516020818303038152906040529050610c23565b6001881415610bdd57610bd68d610f5c565b9050610c23565b6002881415610bf9576020808e0151604051610bae9201612c3c565b6003881415610c23578c516040805160208101929092520160405160208183030381529060405290505b805115610c3357610c3381611099565b50610c4c565b87610c48888463ffffffff8416565b9250505b60208c0151518c511115610cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610590565b610a43565b6020838303048c52509750505050505050505b9392505050565b6060815182604051602001610cf1929190612ca1565b6040516020818303038152906040529050919050565b6060833b80610d26575050604080516020810190915260008152610cd4565b80841115610d44575050604080516020810190915260008152610cd4565b83831015610d8f576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610590565b8383038482036000828210610da45782610da6565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082610e2e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100610e79565b8260011415610e5257506fffffffffffffffffffffffffffffffff90506080610e79565b8260021415610e6e575067ffffffffffffffff90506040610e79565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115610e9c57610e9c612692565b604051908082528060200260200182016040528015610ec5578160200160208202803683370190505b50905060208082019083028a03815b8b821015610eec578151815260209182019101610ed4565b505060608b015160808c015160209081029091010160005b610100811015610f4a5760208502830182845b82811015610f33578051841c8a16825260209182019101610f17565b505050610f418e8e8b610a05565b9b508501610f04565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610fa89190612c3c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fe49291602001612d38565b604051602081830303815290604052905060005b85604001515181101561109057818660400151828151811061101c5761101c6126c1565b60200260200101515160001b8760400151838151811061103e5761103e6126c1565b602002602001015160405160200161105893929190612d5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610ff8565b50949350505050565b611128816040516024016110ad919061267f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611f50565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd826111b7858a611f71565b90611ff2565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8261122a858a611f71565b90612011565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287611f71565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612026565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612084565b600060208302820380516000602083015b85811015611311578051830191508282101561130457600080fd5b90915081906020016112e9565b505081526020019392505050565b6020828102820380516000928201835b858210801561135d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061137583826120cf565b925061132f565b600060208302820380516000602083015b8581101561131157805183039150828211156113a857600080fd5b909150819060200161138d565b6020828102820380516000928201835b85821080156113d45750826000105b15611311575080516020909101906113ec838261210b565b92506113c5565b60006020830282038051600080602084015b8681101561143657831561142e57805192508284029150828483041461142a57600080fd5b8193505b602001611405565b50505081526020019392505050565b6020828102820380516000928201835b858210801561148357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061149b8382612121565b9250611455565b600060208302820380516000602083015b858110156113115780519150816114c957600080fd5b91819004916020016114b3565b600060208302820380516000602083015b858110156113115780519150816114fd57600080fd5b91819006916020016114e7565b6020828102820380516000928201835b85821015611311575080516020909101906115358184612eb5565b925061151a565b6020828102820380516000928201835b858210156113115750805182811015611563578092505b60208201915061154c565b6020828102820380516000928201835b858210156113115750805182811115611595578092505b60208201915061157e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561175557805161174d5760008252611755565b602001611736565b506020019392505050565b6000602083028203805b838110156117555780518015611781578252611755565b5060200161176a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8383612150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561193a858585856121af565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561197757611977612692565b6040519080825280602002602001820160405280156119a0578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156119dc578151816020018601526020820191506020810190506119ba565b505051905060006119ef83838989612255565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401611830565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112649190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190612eda565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612ec1565b909452509395945050505050565b60008060008467ffffffffffffffff811115611d7157611d71612692565b604051908082528060200260200182016040528015611d9a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611db857611db8612692565b604051908082528060200260200182016040528015611de1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611e36578251815260209283019201611e1e565b5050602088028101602084015b81831015611e5b578251815260209283019201611e43565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611eb59087908790600401612ef7565b600060405180830381865afa158015611ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f189190810190612f5a565b9050846020820160208a0281015b80821015611f41578151835260209283019290910190611f26565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415611f865783915050610893565b8260121115611fb257506012829003611fa081600a612eb5565b611faa9085613000565b915050610893565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fe181600a612eb5565b611faa908561303d565b5092915050565b6000670de0b6b3a76400006120078385613000565b610cd4919061303d565b600081612007670de0b6b3a764000085613000565b600080601283141561203b5783915050610893565b826012111561205557506012829003611fe181600a612eb5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fa081600a612eb5565b600081810b612094575081610893565b60008260000b13156120bc576120ab82600a613078565b6120b59084613000565b9050610893565b60ff600083900316611fe181600a612eb5565b60008282018381106120e15780612103565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161211b576000610cd4565b50900390565b60008261213057506000610893565b8282028284828161214357612143612c72565b0414156120e15780612103565b60008060015b600881116121a757600061216a86836123a5565b9050600061217886846123a5565b90506000612186838361210b565b9050612196856001860383612452565b945050600190920191506121569050565b509392505050565b600082600881111561221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b6000855b858110156122495763ffffffff6020820290811b199890981685891b17979150600101612221565b50959695505050505050565b835160009081908190819060015b600881116123975760009250828761229c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6122a0565b5060005b60005b83811015612355576122ce8c82815181106122c0576122c06126c1565b6020026020010151846123a5565b95508a861161232057886122ed576122e686836124dc565b9150612317565b6001891415612300576122e686836124f2565b60028914801561230e575084155b15612317578591505b6001945061234d565b8961234d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612355565b6001016122a3565b508361237e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61238c866001840383612452565b955050600101612263565b509298975050505050505050565b6000816008811115612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b826124215760009150611feb565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156124c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b505060209190910290811b63ffffffff90911b19919091161790565b60008183106124eb5781610cd4565b5090919050565b6000818310156124eb5781610cd4565b60006020828403121561251457600080fd5b813567ffffffffffffffff81111561252b57600080fd5b820160408185031215610cd457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461112857600080fd5b6000806000806060858703121561257557600080fd5b84356125808161253d565b935060208501359250604085013567ffffffffffffffff808211156125a457600080fd5b818701915087601f8301126125b857600080fd5b8135818111156125c757600080fd5b8860208285010111156125d957600080fd5b95989497505060200194505050565b6000602082840312156125fa57600080fd5b8135610cd48161253d565b60005b83811015612620578181015183820152602001612608565b8381111561262f576000848401525b50505050565b6000815180845261264d816020860160208601612605565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cd46020830184612635565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261272557600080fd5b830160208101925035905067ffffffffffffffff81111561274557600080fd5b8060051b360383131561275757600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156127d957600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561286457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e0909601959082019060010161280a565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a083016128a086876126f0565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561296a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261292157600080fd5b8501803567ffffffffffffffff81111561293a57600080fd5b80360387131561294957600080fd5b61295688828b850161275e565b9750505091860191908601906001016128c0565b505050505061297b828701876126f0565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526129b28284836127a7565b9250505082810360408401526129c881856127f6565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a1957612a19612692565b604052919050565b600060208284031215612a3357600080fd5b815167ffffffffffffffff80821115612a4b57600080fd5b818401915084601f830112612a5f57600080fd5b815181811115612a7157612a71612692565b612aa260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016129d2565b9150808252856020828501011115612ab957600080fd5b611090816020840160208601612605565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b0b57612b0b612aca565b500390565b6000815260008251612b29816001850160208701612605565b9190910160010192915050565b600081518084526020808501945080840160005b8381101561286457815187529582019590820190600101612b4a565b600060208083528351818401528084015160a06040850152612b8b60c0850182612b36565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015612c045784878303018452612bf2828751612635565b95880195938801939150600101612bd8565b5060608a01519650838982030160808a0152612c208188612b36565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015612c6657815185529382019390820190600101612c4a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251612d2a81600e850160208701612605565b91909101600e019392505050565b82815260008251612d50816020850160208701612605565b919091016020019392505050565b60008451612d70818460208901612605565b82018481528351612d88816020808501908801612605565b0160200195945050505050565b600181815b80851115612dee57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612dd457612dd4612aca565b80851615612de157918102915b93841c9390800290612d9a565b509250929050565b600082612e0557506001610893565b81612e1257506000610893565b8160018114612e285760028114612e3257612e4e565b6001915050610893565b60ff841115612e4357612e43612aca565b50506001821b610893565b5060208310610133831016604e8410600b8410161715612e71575081810a610893565b612e7b8383612d95565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612ead57612ead612aca565b029392505050565b6000610cd48383612df6565b600060208284031215612ed357600080fd5b5051919050565b600060208284031215612eec57600080fd5b8151610cd48161253d565b604080825283519082018190526000906020906060840190828701845b82811015612f4657815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612f14565b505050838103828501526129c88186612b36565b60006020808385031215612f6d57600080fd5b825167ffffffffffffffff80821115612f8557600080fd5b818501915085601f830112612f9957600080fd5b815181811115612fab57612fab612692565b8060051b9150612fbc8483016129d2565b8181529183018401918481019088841115612fd657600080fd5b938501935b83851015612ff457845182529385019390850190612fdb565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303857613038612aca565b500290565b600082613073577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610cd460ff841683612df656fea264697066735822122041537cb6c3dbf36bee56a657067d6d66b6fc2100d1fb411b7c7343b5f2eda25364736f6c634300080a0033"; type CombineTierFactoryConstructorParams = | [signer?: Signer] @@ -167,14 +163,19 @@ export class CombineTierFactory__factory extends ContractFactory { } deploy( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): Promise { - return super.deploy(overrides || {}) as Promise; + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; } getDeployTransaction( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); } attach(address: string): CombineTierFactory { return super.attach(address) as CombineTierFactory; diff --git a/src/typechain/factories/CombineTier__factory.ts b/src/typechain/factories/CombineTier__factory.ts index f891e65..4e1e3d0 100644 --- a/src/typechain/factories/CombineTier__factory.ts +++ b/src/typechain/factories/CombineTier__factory.ts @@ -7,7 +7,13 @@ import type { CombineTier, CombineTierInterface } from "../CombineTier"; const _abi = [ { - inputs: [], + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], stateMutability: "nonpayable", type: "constructor", }, @@ -42,51 +48,12 @@ const _abi = [ inputs: [ { indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", + internalType: "uint8", + name: "version", + type: "uint8", }, ], - name: "Snapshot", + name: "Initialized", type: "event", }, { @@ -126,6 +93,19 @@ const _abi = [ name: "TierChange", type: "event", }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -140,19 +120,9 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", - name: "config_", + name: "sourceConfig_", type: "tuple", }, ], @@ -203,10 +173,35 @@ const _abi = [ stateMutability: "pure", type: "function", }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516137b5620000d1600039600081816109cf0152610a0a01526137b56000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063e053ea311461005b578063e684b6d614610080575b600080fd5b610059610054366004612c15565b610093565b005b61006e610069366004612c9e565b6100fa565b60405190815260200160405180910390f35b61005961008e366004612e5a565b610197565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000805481906101259062010000900473ffffffffffffffffffffffffffffffffffffffff16610305565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506101649101604051602081830303815290604052826000610359565b6020810151815161017790600190612fdd565b8151811061018757610187612ff4565b6020026020010151915050919050565b600054610100900460ff166101b25760005460ff16156101b6565b303b155b610242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff1615801561028157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b61029261028d836105dd565b610739565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550801561030157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6103376040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610340826107a7565b8060200190518101906103539190613166565b92915050565b602082015151825111156103c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156105d0576002880197508784015180601e1a975080601f1a965050600587101561054f5760018714156104675781608087166104325750825b607f87168151811061044357600080fd5b8b516020820260200183015160208202602001850152600181018d5250505061055b565b600287141561049e57895180871061047e57600080fd5b6020870260200182015160208202602001830152600181018b525061055b565b60038714156104b7576104b28b8b886107d5565b61055b565b60048714156104e8576104b28a6040516020016104d491906133a4565b60405160208183030381529060405261093b565b866104b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016100f1565b61055b8b8b89896109cd565b60208a0151518a5111156105cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016100f1565b6103f5565b5050505050505050505050565b61060f6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151610678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016100f1565b6040518060a0016040528060008152602001836040015167ffffffffffffffff8111156106a7576106a7612cbb565b6040519080825280602002602001820160405280156106d0578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff81111561070757610707612cbb565b604051908082528060200260200182016040528015610730578160200160208202803683370190505b50905292915050565b6000806107648360405160200161075091906133a4565b604051602081830303815290604052610afa565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd338285604051610799939291906133b7565b60405180910390a192915050565b60606103538260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b85565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561083957610839612cbb565b604051908082528060200260200182016040528015610862578160200160208202803683370190505b50905060005b828110156108b9578760200151818960000151018151811061088c5761088c612ff4565b60200260200101518282815181106108a6576108a6612ff4565b6020908102919091010152600101610868565b5060005b6101008110156109305760005b8381101561091d57848286038483815181106108e8576108e8612ff4565b6020026020010151901b901c8960800151828151811061090a5761090a612ff4565b60209081029190910101526001016108ca565b50610929898988610359565b84016108bd565b505050505050505050565b6109ca8160405160240161094f91906133f0565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052610c6e565b50565b7f0000000000000000000000000000000000000000000000000000000000000000821015610a0857610a03836005840383610c8f565b610af4565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210610a97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600084806020019051810190610aad9190613403565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110610ae057610ae0612ff4565b602090810291909101015250825160010183525b50505050565b600080610b2583604051602001610b119190613420565b604051602081830303815290604052610dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610b7f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80610ba4575050604080516020810190915260008152610c67565b80841115610bc2575050604080516020810190915260008152610c67565b83831015610c0d576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016100f1565b8383038482036000828210610c225782610c24565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015610ca857610ca3838383610e26565b505050565b601d821015610d2b57600b821015610cc857610ca3836004840383610f3c565b6016821015610cfe57610ca3837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff584018361126a565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea840183611703565b6023821015610d6157610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe3840183611973565b6025821015610d9757610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183611e47565b6027821015610dcd57610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612070565b610ca3837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd984018361226a565b6060815182604051602001610e10929190613446565b6040516020818303038152906040529050919050565b60048210610e90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81610ec157438360200151846000015181518110610eb057610eb0612ff4565b602002602001018181525050610f31565b6001821415610ee557428360200151846000015181518110610eb057610eb0612ff4565b6002821415610f0957602083015183518151339291908110610eb057610eb0612ff4565b602083015183518151309291908110610f2457610f24612ff4565b6020026020010181815250505b505080516001019052565b60078210610fa6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b60028210156110f25782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826110515783602001518160010181518110610ff157610ff1612ff4565b6020026020010151611029838660200151848151811061101357611013612ff4565b602002602001015161269690919063ffffffff16565b028460200151828151811061104057611040612ff4565b6020026020010181815250506110c6565b60018314156110c6578360200151816001018151811061107357611073612ff4565b6020026020010151611095838660200151848151811061101357611013612ff4565b816110a2576110a26134dd565b04846020015182815181106110b9576110b9612ff4565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b60058210156112035782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600283141561116957611142828560200151838151811061101357611013612ff4565b8460200151828151811061115857611158612ff4565b602002602001018181525050610af4565b60038314156111a257611142828560200151838151811061118c5761118c612ff4565b602002602001015161271790919063ffffffff16565b6004831415610af4576111db82856020015183815181106111c5576111c5612ff4565b602002602001015161277590919063ffffffff16565b846020015182815181106111f1576111f1612ff4565b60200260200101818152505050505050565b600582141561124557670de0b6b3a7640000836020015184600001518151811061122f5761122f612ff4565b6020908102919091010152505080516001019052565b6006821415610ca35760128360200151846000015181518110610f2457610f24612ff4565b600b82106112d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01918391600091908390811061131a5761131a612ff4565b602002602001015190506000861415611372575b8282101561136d57602087015180516001909301928390811061135357611353612ff4565b602002602001015181611366919061350c565b905061132e565b6116d4565b60018614156113ee575b82821080156113aa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506113e7876020015183815181106113d0576113d0612ff4565b6020026020010151826127c090919063ffffffff16565b905061137c565b6002861415611437575b8282101561136d57602087015180516001909301928390811061141d5761141d612ff4565b6020026020010151816114309190612fdd565b90506113f8565b6003861415611494575b82821080156114505750806000105b1561136d57818060010192505061148d8760200151838151811061147657611476612ff4565b6020026020010151826127fc90919063ffffffff16565b9050611441565b60048614156114dd575b8282101561136d5760208701518051600190930192839081106114c3576114c3612ff4565b6020026020010151816114d69190613524565b905061149e565b6005861415611559575b828210801561151557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561136d5781806001019250506115528760200151838151811061153b5761153b612ff4565b60200260200101518261281290919063ffffffff16565b90506114e7565b60068614156115a2575b8282101561136d57602087015180516001909301928390811061158857611588612ff4565b60200260200101518161159b9190613561565b9050611563565b60078614156115eb575b8282101561136d5760208701518051600190930192839081106115d1576115d1612ff4565b6020026020010151816115e49190613575565b90506115ac565b6008861415611634575b8282101561136d57602087015180516001909301928390811061161a5761161a612ff4565b60200260200101518161162d91906136a9565b90506115f5565b60098614156116865760005b8383101561168057602088015180516001909401938490811061166557611665612ff4565b602002602001015190508181101561167b578091505b611640565b506116d4565b600a8614156116d45760005b838310156116d25760208801518051600190940193849081106116b7576116b7612ff4565b60200260200101519050818111156116cd578091505b611692565b505b80876020015185815181106116eb576116eb612ff4565b60209081029190910101525050506001019092525050565b6007821061176d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b825160208085015181830201018380156117b657600181146117ed5760028114611866576003811461188e57600481146118b657600581146118de57600681146119255761196b565b826117c057600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08201805115905261196b565b60038310156117fb57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015611857576020820151825261185f565b604082015182525b505061196b565b600283101561187457600080fd5b60018303865260408203602081015181511481525061196b565b600283101561189c57600080fd5b60018303865260408203602081015181511081525061196b565b60028310156118c457600080fd5b60018303865260408203602081015181511181525061196b565b838310156118eb57600080fd5b8315611920576001840383038652602084028203805b8381101561185f578051611918576000825261185f565b602001611901565b61196b565b8383101561193257600080fd5b831561196b576001840383038652602084028203805b83811015611968578051801561195f578252611968565b50602001611948565b50505b505050505050565b600682106119dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b600082611b05575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611a4857611a48612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea3185602001518360010181518110611a8457611a84612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611ac4919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611ae1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114291906136b5565b6001831415611b60577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110611b4957611b49612ff4565b602090810291909101015283516001018452610af4565b6002831415611b855760008460200151856000015181518110611b4957611b49612ff4565b6003831415611c39575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110611bd157611bd1612ff4565b60200260200101519050600085602001518360010181518110611bf657611bf6612ff4565b60200260200101519050611c0a8282612841565b86602001518481518110611c2057611c20612ff4565b6020908102919091010152505083516001018452610af4565b6004831415611d01575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110611c9457611c94612ff4565b60200260200101519050600087602001518560010181518110611cb957611cb9612ff4565b60200260200101519050611ccf828585846128a0565b88602001518681518110611ce557611ce5612ff4565b602090810291909101015250508551600101865250610af49050565b6005831415610af4575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115611d6657611d66612cbb565b604051908082528060200260200182016040528015611d8f578160200160208202803683370190505b50905060005b83811015611de45789602001518381518110611db357611db3612ff4565b6020026020010151828281518110611dcd57611dcd612ff4565b602090810291909101015260019283019201611d95565b50600089602001518381518110611dfd57611dfd612ff4565b60200260200101519050611e1382828888612946565b8a602001518881518110611e2957611e29612ff4565b60209081029190910101525050875160010188525050505050505050565b60028210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b81611fd75782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110611f1957611f19612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611f5657611f56612ff4565b60200260200101516040518263ffffffff1660e01b8152600401611f96919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015611fb3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111db91906136b5565b6001821415610ca3578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201918290811061201e5761201e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb3573d6000803e3d6000fd5b600282106120da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018261217b578360200151818151811061213e5761213e612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110611a8457611a84612ff4565b6001831415610af4578360200151818151811061219a5761219a612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106121d7576121d7612ff4565b60200260200101516040518263ffffffff1660e01b81526004016121fd91815260200190565b602060405180830381865afa15801561221a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061223e9190613403565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106111f1576111f1612ff4565b600282106122d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016100f1565b816123de5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd909201918290811061233c5761233c612ff4565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e8560200151836001018151811061237757612377612ff4565b60200260200101518660200151846002018151811061239857612398612ff4565b60200260200101516040518363ffffffff1660e01b8152600401611f9692919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610ca3576001810160008167ffffffffffffffff81111561240657612406612cbb565b60405190808252806020026020018201604052801561242f578160200160208202803683370190505b50905060008267ffffffffffffffff81111561244d5761244d612cbb565b604051908082528060200260200182016040528015612476578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106124c6576124c6612ff4565b6020026020010151905060005b8581101561257d578860200151818401600101815181106124f6576124f6612ff4565b602002602001015185828151811061251057612510612ff4565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061255057612550612ff4565b602002602001015184828151811061256a5761256a612ff4565b60209081029190910101526001016124d3565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125d590889088906004016136ce565b600060405180830381865afa1580156125f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612638919081019061373b565b905060005b8681101561268a5781818151811061265757612657612ff4565b60200260200101518a602001518286018151811061267757612677612ff4565b602090810291909101015260010161263d565b50505050505050505050565b60008082601214156126ab5783915050610353565b82601211156126d7575060128290036126c581600a6136a9565b6126cf9085613524565b915050610353565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270681600a6136a9565b6126cf9085613561565b5092915050565b600080601283141561272c5783915050610353565b82601211156127465750601282900361270681600a6136a9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c581600a6136a9565b600081810b612785575081610353565b60008260000b13156127ad5761279c82600a613770565b6127a69084613524565b9050610353565b60ff60008390031661270681600a6136a9565b60008282018381106127d257806127f4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161280c576000610c67565b50900390565b60008261282157506000610353565b82820282848281612834576128346134dd565b0414156127d257806127f4565b60008060015b6008811161289857600061285b8683612a96565b905060006128698684612a96565b9050600061287783836127fc565b9050612887856001860383612b43565b945050600190920191506128479050565b509392505050565b600082600881111561290e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b8581101561293a5763ffffffff6020820290811b199890981685891b17979150600101612912565b50959695505050505050565b835160009081908190819060015b60088111612a885760009250828761298d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612991565b5060005b60005b83811015612a46576129bf8c82815181106129b1576129b1612ff4565b602002602001015184612a96565b95508a8611612a1157886129de576129d78683612bcd565b9150612a08565b60018914156129f1576129d78683612be3565b6002891480156129ff575084155b15612a08578591505b60019450612a3e565b89612a3e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a46565b600101612994565b5083612a6f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a7d866001840383612b43565b955050600101612954565b509298975050505050505050565b6000816008811115612b04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b82612b125760009150612710565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310612bdc5781610c67565b5090919050565b600081831015612bdc5781610c67565b73ffffffffffffffffffffffffffffffffffffffff811681146109ca57600080fd5b60008060008060608587031215612c2b57600080fd5b8435612c3681612bf3565b935060208501359250604085013567ffffffffffffffff80821115612c5a57600080fd5b818701915087601f830112612c6e57600080fd5b813581811115612c7d57600080fd5b886020828501011115612c8f57600080fd5b95989497505060200194505050565b600060208284031215612cb057600080fd5b8135610c6781612bf3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b60405290565b60405160a0810167ffffffffffffffff81118282101715612d0d57612d0d612cbb565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d7d57612d7d612cbb565b604052919050565b600067ffffffffffffffff821115612d9f57612d9f612cbb565b5060051b60200190565b600067ffffffffffffffff821115612dc357612dc3612cbb565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112612e0057600080fd5b81356020612e15612e1083612d85565b612d36565b82815260059290921b84018101918181019086841115612e3457600080fd5b8286015b84811015612e4f5780358352918301918301612e38565b509695505050505050565b60006020808385031215612e6d57600080fd5b823567ffffffffffffffff80821115612e8557600080fd5b9084019060808287031215612e9957600080fd5b612ea1612cea565b823582811115612eb057600080fd5b8301601f81018813612ec157600080fd5b8035612ecf612e1082612d85565b81815260059190911b8201860190868101908a831115612eee57600080fd5b8784015b83811015612f6557803587811115612f0a5760008081fd5b8501603f81018d13612f1c5760008081fd5b898101356040612f2e612e1083612da9565b8281528f82848601011115612f435760008081fd5b828285018e83013760009281018d019290925250845250918801918801612ef2565b5084525050508284013582811115612f7c57600080fd5b612f8888828601612def565b858301525060408301356040820152606083013560608201528094505050505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fef57612fef612fae565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082601f83011261303457600080fd5b81516020613044612e1083612d85565b82815260059290921b8401810191818101908684111561306357600080fd5b8286015b84811015612e4f5780518352918301918301613067565b60005b83811015613099578181015183820152602001613081565b83811115610af45750506000910152565b600082601f8301126130bb57600080fd5b815160206130cb612e1083612d85565b82815260059290921b840181019181810190868411156130ea57600080fd5b8286015b84811015612e4f57805167ffffffffffffffff81111561310e5760008081fd5b8701603f810189136131205760008081fd5b848101516040613132612e1083612da9565b8281528b828486010111156131475760008081fd5b6131568389830184870161307e565b86525050509183019183016130ee565b60006020828403121561317857600080fd5b815167ffffffffffffffff8082111561319057600080fd5b9083019060a082860312156131a457600080fd5b6131ac612d13565b825181526020830151828111156131c257600080fd5b6131ce87828601613023565b6020830152506040830151828111156131e657600080fd5b6131f2878286016130aa565b60408301525060608301518281111561320a57600080fd5b61321687828601613023565b60608301525060808301518281111561322e57600080fd5b61323a87828601613023565b60808301525095945050505050565b600081518084526020808501945080840160005b838110156132795781518752958201959082019060010161325d565b509495945050505050565b6000815180845261329c81602086016020860161307e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b80518252600060208083015160a0828601526132ed60a0860182613249565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b82811015613363577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868303018452613351828651613284565b94870194938701939150600101613317565b506060880151955088810360608a015261337d8187613249565b955050505050506080830151848203608086015261339b8282613249565b95945050505050565b602081526000610c6760208301846132ce565b600073ffffffffffffffffffffffffffffffffffffffff80861683528085166020840152506060604083015261339b60608301846132ce565b602081526000610c676020830184613284565b60006020828403121561341557600080fd5b8151610c6781612bf3565b600081526000825161343981600185016020870161307e565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516134cf81600e85016020870161307e565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000821982111561351f5761351f612fae565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561355c5761355c612fae565b500290565b600082613570576135706134dd565b500490565b600082613584576135846134dd565b500690565b600181815b808511156135e257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156135c8576135c8612fae565b808516156135d557918102915b93841c939080029061358e565b509250929050565b6000826135f957506001610353565b8161360657506000610353565b816001811461361c576002811461362657613642565b6001915050610353565b60ff84111561363757613637612fae565b50506001821b610353565b5060208310610133831016604e8410600b8410161715613665575081810a610353565b61366f8383613589565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156136a1576136a1612fae565b029392505050565b6000610c6783836135ea565b6000602082840312156136c757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561371d57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016136eb565b505050838103828501526137318186613249565b9695505050505050565b60006020828403121561374d57600080fd5b815167ffffffffffffffff81111561376457600080fd5b6127f484828501613023565b6000610c6760ff8416836135ea56fea2646970667358221220b093111fbd37db4e752472d7a9ecb54289ae2466b71641674440c1ecc8ae93fe64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506040516200315f3803806200315f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516130bd620000a2600039600061039d015260006103d901526130bd6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e0419ae311610050578063e0419ae314610094578063e053ea31146100d1578063f2cd6c08146100f257600080fd5b80634e75d77e1461006c5780638a200fff14610081575b600080fd5b61007f61007a366004612502565b610283565b005b61007f61008f36600461255f565b610532565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100e46100df3660046125e8565b610599565b6040519081526020016100c8565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261112b60e082015261113661010082015261114161012082015261114c6101408201526111576101608201526111ca6101808201526112306101a08201526112706101c08201526112a46101e08201526112d861020082015261131f61022082015261137c6102408201526113b56102608201526113f36102808201526114456102a08201526114a26102c08201526114d66102e082015261150a61030082015261153c61032082015261156e6103408201526115a06103608201526115cd6103808201526116286103a082015261167e6103c08201526116d56103e082015261172c61040082015261176061042082015261178a6104408201526118716104608201526118cd6104808201526119496104a0820152611a036104c08201819052611aad6104e0830152610500820152611b2d610520820152611c35610540820152611d5361056080830191909152815290516100c8919061267f565b600061028f6001610654565b905080156102c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103046040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6103656040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610325579050509050818160008151811061038e5761038e6126c1565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016104189392919061286f565b6000604051808303816000875af1158015610437573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261047d9190810190612a21565b9050610488816107da565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050801561052e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000806105cf6105ca600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610865565b610899565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff85166020820181905290915061061e82846000610a05565b506020830151835161063290600190612af9565b81518110610642576106426126c1565b60200260200101519350505050919050565b60008054610100900460ff161561070b578160ff1660011480156106775750303b155b610703576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b506000919050565b60005460ff8084169116106107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610805836040516020016107f19190612b10565b604051602081830303815290604052610cdb565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661085f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606108938260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d07565b92915050565b6108cb6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6108fd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561093157610931612692565b60405190808252806020026020018201604052801561095a578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561099157610991612692565b6040519080825280602002602001820160405280156109ba578160200160208202803683370190505b5090506020870151602002604001870160005b848110156109f45781602082026020018401528151602001820191506001810190506109cd565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610cc1576003890198508886015180601f1a975061ffff8160081c169850506006881015610c395787610a8857866020028401518252602082019150610c4c565b6001881415610aa557602087028301518252602082019150610c4c565b6002881415610b32578c518760200210610b1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610590565b866020026020018d01518252602082019150610c4c565b6003881415610b7a576000610b686040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610c4c565b6004881415610b9657610b8f8d8d848a610def565b9150610c4c565b606087610bc4578c604051602001610bae9190612b66565b6040516020818303038152906040529050610c23565b6001881415610bdd57610bd68d610f5c565b9050610c23565b6002881415610bf9576020808e0151604051610bae9201612c3c565b6003881415610c23578c516040805160208101929092520160405160208183030381529060405290505b805115610c3357610c3381611099565b50610c4c565b87610c48888463ffffffff8416565b9250505b60208c0151518c511115610cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610590565b610a43565b6020838303048c52509750505050505050505b9392505050565b6060815182604051602001610cf1929190612ca1565b6040516020818303038152906040529050919050565b6060833b80610d26575050604080516020810190915260008152610cd4565b80841115610d44575050604080516020810190915260008152610cd4565b83831015610d8f576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610590565b8383038482036000828210610da45782610da6565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082610e2e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100610e79565b8260011415610e5257506fffffffffffffffffffffffffffffffff90506080610e79565b8260021415610e6e575067ffffffffffffffff90506040610e79565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115610e9c57610e9c612692565b604051908082528060200260200182016040528015610ec5578160200160208202803683370190505b50905060208082019083028a03815b8b821015610eec578151815260209182019101610ed4565b505060608b015160808c015160209081029091010160005b610100811015610f4a5760208502830182845b82811015610f33578051841c8a16825260209182019101610f17565b505050610f418e8e8b610a05565b9b508501610f04565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610fa89190612c3c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fe49291602001612d38565b604051602081830303815290604052905060005b85604001515181101561109057818660400151828151811061101c5761101c6126c1565b60200260200101515160001b8760400151838151811061103e5761103e6126c1565b602002602001015160405160200161105893929190612d5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610ff8565b50949350505050565b611128816040516024016110ad919061267f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611f50565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd826111b7858a611f71565b90611ff2565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8261122a858a611f71565b90612011565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287611f71565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612026565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612084565b600060208302820380516000602083015b85811015611311578051830191508282101561130457600080fd5b90915081906020016112e9565b505081526020019392505050565b6020828102820380516000928201835b858210801561135d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061137583826120cf565b925061132f565b600060208302820380516000602083015b8581101561131157805183039150828211156113a857600080fd5b909150819060200161138d565b6020828102820380516000928201835b85821080156113d45750826000105b15611311575080516020909101906113ec838261210b565b92506113c5565b60006020830282038051600080602084015b8681101561143657831561142e57805192508284029150828483041461142a57600080fd5b8193505b602001611405565b50505081526020019392505050565b6020828102820380516000928201835b858210801561148357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061149b8382612121565b9250611455565b600060208302820380516000602083015b858110156113115780519150816114c957600080fd5b91819004916020016114b3565b600060208302820380516000602083015b858110156113115780519150816114fd57600080fd5b91819006916020016114e7565b6020828102820380516000928201835b85821015611311575080516020909101906115358184612eb5565b925061151a565b6020828102820380516000928201835b858210156113115750805182811015611563578092505b60208201915061154c565b6020828102820380516000928201835b858210156113115750805182811115611595578092505b60208201915061157e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561175557805161174d5760008252611755565b602001611736565b506020019392505050565b6000602083028203805b838110156117555780518015611781578252611755565b5060200161176a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8383612150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561193a858585856121af565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561197757611977612692565b6040519080825280602002602001820160405280156119a0578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156119dc578151816020018601526020820191506020810190506119ba565b505051905060006119ef83838989612255565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401611830565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112649190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190612eda565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612ec1565b909452509395945050505050565b60008060008467ffffffffffffffff811115611d7157611d71612692565b604051908082528060200260200182016040528015611d9a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611db857611db8612692565b604051908082528060200260200182016040528015611de1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611e36578251815260209283019201611e1e565b5050602088028101602084015b81831015611e5b578251815260209283019201611e43565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611eb59087908790600401612ef7565b600060405180830381865afa158015611ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f189190810190612f5a565b9050846020820160208a0281015b80821015611f41578151835260209283019290910190611f26565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415611f865783915050610893565b8260121115611fb257506012829003611fa081600a612eb5565b611faa9085613000565b915050610893565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fe181600a612eb5565b611faa908561303d565b5092915050565b6000670de0b6b3a76400006120078385613000565b610cd4919061303d565b600081612007670de0b6b3a764000085613000565b600080601283141561203b5783915050610893565b826012111561205557506012829003611fe181600a612eb5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fa081600a612eb5565b600081810b612094575081610893565b60008260000b13156120bc576120ab82600a613078565b6120b59084613000565b9050610893565b60ff600083900316611fe181600a612eb5565b60008282018381106120e15780612103565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161211b576000610cd4565b50900390565b60008261213057506000610893565b8282028284828161214357612143612c72565b0414156120e15780612103565b60008060015b600881116121a757600061216a86836123a5565b9050600061217886846123a5565b90506000612186838361210b565b9050612196856001860383612452565b945050600190920191506121569050565b509392505050565b600082600881111561221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b6000855b858110156122495763ffffffff6020820290811b199890981685891b17979150600101612221565b50959695505050505050565b835160009081908190819060015b600881116123975760009250828761229c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6122a0565b5060005b60005b83811015612355576122ce8c82815181106122c0576122c06126c1565b6020026020010151846123a5565b95508a861161232057886122ed576122e686836124dc565b9150612317565b6001891415612300576122e686836124f2565b60028914801561230e575084155b15612317578591505b6001945061234d565b8961234d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612355565b6001016122a3565b508361237e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61238c866001840383612452565b955050600101612263565b509298975050505050505050565b6000816008811115612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b826124215760009150611feb565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156124c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b505060209190910290811b63ffffffff90911b19919091161790565b60008183106124eb5781610cd4565b5090919050565b6000818310156124eb5781610cd4565b60006020828403121561251457600080fd5b813567ffffffffffffffff81111561252b57600080fd5b820160408185031215610cd457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461112857600080fd5b6000806000806060858703121561257557600080fd5b84356125808161253d565b935060208501359250604085013567ffffffffffffffff808211156125a457600080fd5b818701915087601f8301126125b857600080fd5b8135818111156125c757600080fd5b8860208285010111156125d957600080fd5b95989497505060200194505050565b6000602082840312156125fa57600080fd5b8135610cd48161253d565b60005b83811015612620578181015183820152602001612608565b8381111561262f576000848401525b50505050565b6000815180845261264d816020860160208601612605565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cd46020830184612635565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261272557600080fd5b830160208101925035905067ffffffffffffffff81111561274557600080fd5b8060051b360383131561275757600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156127d957600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561286457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e0909601959082019060010161280a565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a083016128a086876126f0565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561296a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261292157600080fd5b8501803567ffffffffffffffff81111561293a57600080fd5b80360387131561294957600080fd5b61295688828b850161275e565b9750505091860191908601906001016128c0565b505050505061297b828701876126f0565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526129b28284836127a7565b9250505082810360408401526129c881856127f6565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a1957612a19612692565b604052919050565b600060208284031215612a3357600080fd5b815167ffffffffffffffff80821115612a4b57600080fd5b818401915084601f830112612a5f57600080fd5b815181811115612a7157612a71612692565b612aa260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016129d2565b9150808252856020828501011115612ab957600080fd5b611090816020840160208601612605565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b0b57612b0b612aca565b500390565b6000815260008251612b29816001850160208701612605565b9190910160010192915050565b600081518084526020808501945080840160005b8381101561286457815187529582019590820190600101612b4a565b600060208083528351818401528084015160a06040850152612b8b60c0850182612b36565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015612c045784878303018452612bf2828751612635565b95880195938801939150600101612bd8565b5060608a01519650838982030160808a0152612c208188612b36565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015612c6657815185529382019390820190600101612c4a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251612d2a81600e850160208701612605565b91909101600e019392505050565b82815260008251612d50816020850160208701612605565b919091016020019392505050565b60008451612d70818460208901612605565b82018481528351612d88816020808501908801612605565b0160200195945050505050565b600181815b80851115612dee57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612dd457612dd4612aca565b80851615612de157918102915b93841c9390800290612d9a565b509250929050565b600082612e0557506001610893565b81612e1257506000610893565b8160018114612e285760028114612e3257612e4e565b6001915050610893565b60ff841115612e4357612e43612aca565b50506001821b610893565b5060208310610133831016604e8410600b8410161715612e71575081810a610893565b612e7b8383612d95565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612ead57612ead612aca565b029392505050565b6000610cd48383612df6565b600060208284031215612ed357600080fd5b5051919050565b600060208284031215612eec57600080fd5b8151610cd48161253d565b604080825283519082018190526000906020906060840190828701845b82811015612f4657815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612f14565b505050838103828501526129c88186612b36565b60006020808385031215612f6d57600080fd5b825167ffffffffffffffff80821115612f8557600080fd5b818501915085601f830112612f9957600080fd5b815181811115612fab57612fab612692565b8060051b9150612fbc8483016129d2565b8181529183018401918481019088841115612fd657600080fd5b938501935b83851015612ff457845182529385019390850190612fdb565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303857613038612aca565b500290565b600082613073577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610cd460ff841683612df656fea264697066735822122041537cb6c3dbf36bee56a657067d6d66b6fc2100d1fb411b7c7343b5f2eda25364736f6c634300080a0033"; type CombineTierConstructorParams = | [signer?: Signer] @@ -226,14 +221,19 @@ export class CombineTier__factory extends ContractFactory { } deploy( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): Promise { - return super.deploy(overrides || {}) as Promise; + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; } getDeployTransaction( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); } attach(address: string): CombineTier { return super.attach(address) as CombineTier; diff --git a/src/typechain/factories/ConfigurableRightsPool__factory.ts b/src/typechain/factories/ConfigurableRightsPool__factory.ts deleted file mode 100644 index e83d0d4..0000000 --- a/src/typechain/factories/ConfigurableRightsPool__factory.ts +++ /dev/null @@ -1,1384 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ConfigurableRightsPool, - ConfigurableRightsPoolInterface, - PoolParamsStruct, - RightsStruct, -} from "../ConfigurableRightsPool"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "factoryAddress", - type: "address", - }, - { - components: [ - { - internalType: "string", - name: "poolTokenSymbol", - type: "string", - }, - { - internalType: "string", - name: "poolTokenName", - type: "string", - }, - { - internalType: "address[]", - name: "constituentTokens", - type: "address[]", - }, - { - internalType: "uint256[]", - name: "tokenBalances", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "tokenWeights", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - internalType: "struct ConfigurableRightsPool.PoolParams", - name: "poolParams", - type: "tuple", - }, - { - components: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - internalType: "struct RightsManager.Rights", - name: "rightsStruct", - type: "tuple", - }, - ], - 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: "caller", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "oldCap", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "newCap", - type: "uint256", - }, - ], - name: "CapChanged", - type: "event", - }, - { - anonymous: true, - inputs: [ - { - indexed: true, - internalType: "bytes4", - name: "sig", - type: "bytes4", - }, - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "LogCall", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - name: "LogExit", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - name: "LogJoin", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "pool", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "caller", - type: "address", - }, - ], - name: "NewTokenCommitted", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: 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: [], - name: "DECIMALS", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_ADD_TOKEN_TIME_LOCK_IN_BLOCKS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_MIN_WEIGHT_CHANGE_BLOCK_PERIOD", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "NAME", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "addTokenTimeLockInBlocks", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - 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: [], - name: "applyAddToken", - outputs: [], - stateMutability: "nonpayable", - 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: "bFactory", - outputs: [ - { - internalType: "contract IBFactory", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "bPool", - outputs: [ - { - internalType: "contract IBPool", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "bspCap", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burnPoolShareFromLib", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "provider", - type: "address", - }, - ], - name: "canProvideLiquidity", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - { - internalType: "uint256", - name: "denormalizedWeight", - type: "uint256", - }, - ], - name: "commitAddToken", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - name: "createPool", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "minimumWeightChangeBlockPeriodParam", - type: "uint256", - }, - { - internalType: "uint256", - name: "addTokenTimeLockInBlocksParam", - type: "uint256", - }, - ], - name: "createPool", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "decreaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "minAmountsOut", - type: "uint256[]", - }, - ], - name: "exitPool", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPoolAmountIn", - type: "uint256", - }, - ], - name: "exitswapExternAmountOut", - outputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - ], - name: "exitswapPoolAmountIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "getBalancerSafeMathVersion", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "getController", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "getDenormalizedWeight", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "getRightsManagerVersion", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "getSmartPoolManagerVersion", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "gradualUpdate", - outputs: [ - { - internalType: "uint256", - name: "startBlock", - type: "uint256", - }, - { - internalType: "uint256", - name: "endBlock", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "enum RightsManager.Permissions", - name: "permission", - type: "uint8", - }, - ], - name: "hasPermission", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "increaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "isPublicSwap", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "maxAmountsIn", - type: "uint256[]", - }, - ], - name: "joinPool", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "minPoolAmountOut", - type: "uint256", - }, - ], - name: "joinswapExternAmountIn", - outputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxAmountIn", - type: "uint256", - }, - ], - name: "joinswapPoolAmountOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "minimumWeightChangeBlockPeriod", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "mintPoolShareFromLib", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "newToken", - outputs: [ - { - internalType: "address", - name: "addr", - type: "address", - }, - { - internalType: "bool", - name: "isCommitted", - type: "bool", - }, - { - internalType: "uint256", - name: "commitBlock", - type: "uint256", - }, - { - internalType: "uint256", - name: "denorm", - type: "uint256", - }, - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "pokeWeights", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "pullPoolShareFromLib", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "pushPoolShareFromLib", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "removeToken", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "provider", - type: "address", - }, - ], - name: "removeWhitelistedLiquidityProvider", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "rights", - outputs: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "newCap", - type: "uint256", - }, - ], - name: "setCap", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "setController", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "bool", - name: "publicSwap", - type: "bool", - }, - ], - name: "setPublicSwap", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - name: "setSwapFee", - outputs: [], - stateMutability: "nonpayable", - 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: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - { - internalType: "uint256", - name: "newWeight", - type: "uint256", - }, - ], - name: "updateWeight", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "newWeights", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "startBlock", - type: "uint256", - }, - { - internalType: "uint256", - name: "endBlock", - type: "uint256", - }, - ], - name: "updateWeightsGradually", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "provider", - type: "address", - }, - ], - name: "whitelistLiquidityProvider", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162006eeb38038062006eeb8339810160408190526200003491620006c7565b815160208084015182519091620000519160039185019062000337565b5080516200006790600490602084019062000337565b5050600580546001600160a01b03191633179055506001600655620f4240670de0b6b3a7640000048260a001511015620000be5760405162461bcd60e51b8152600401620000b590620008ef565b60405180910390fd5b60a082015167016345785d8a00001015620000ed5760405162461bcd60e51b8152600401620000b590620008ef565b81604001515182606001515114620001195760405162461bcd60e51b8152600401620000b5906200088c565b81604001515182608001515114620001455760405162461bcd60e51b8152600401620000b59062000855565b600282604001515110156200016e5760405162461bcd60e51b8152600401620000b590620008c3565b60088260400151511115620001975760405162461bcd60e51b8152600401620000b59062000926565b60408083015190516377d4434960e01b815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__916377d4434991620001d4919060040162000806565b60006040518083038186803b158015620001ed57600080fd5b505af415801562000202573d6000803e3d6000fd5b5050600780546001600160a01b0319166001600160a01b03871617905550508051600980546020808501516040808701516060880151608089015160a08a015160ff199097169815159890981761ff001916610100941515949094029390931762ff0000191662010000911515919091021763ff00000019166301000000921515929092029190911760ff60201b1916640100000000951515959095029490941760ff60281b1916650100000000009215159290920291909117909155908301518051620002d5926013920190620003bc565b5060608201518051620002f19160149160209091019062000422565b5060a082015160125562015f906015556101f4601655608082015180516200032291600c9160209091019062000422565b50506000600a555050600019601855620009b6565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200037a57805160ff1916838001178555620003aa565b82800160010185558215620003aa579182015b82811115620003aa5782518255916020019190600101906200038d565b50620003b89291506200045f565b5090565b82805482825590600052602060002090810192821562000414579160200282015b828111156200041457825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620003dd565b50620003b892915062000476565b828054828255906000526020600020908101928215620003aa5791602002820182811115620003aa5782518255916020019190600101906200038d565b5b80821115620003b8576000815560010162000460565b5b80821115620003b85780546001600160a01b031916815560010162000477565b80516001600160a01b0381168114620004af57600080fd5b92915050565b600082601f830112620004c6578081fd5b8151620004dd620004d78262000984565b6200095d565b818152915060208083019084810181840286018201871015620004ff57600080fd5b60005b848110156200052a5762000517888362000497565b8452928201929082019060010162000502565b505050505092915050565b600082601f83011262000546578081fd5b815162000557620004d78262000984565b8181529150602080830190848101818402860182018710156200057957600080fd5b60005b848110156200052a578151845292820192908201906001016200057c565b600082601f830112620005ab578081fd5b81516001600160401b03811115620005c1578182fd5b6020620005d7601f8301601f191682016200095d565b92508183528481838601011115620005ee57600080fd5b60005b828110156200060e578481018201518482018301528101620005f1565b82811115620006205760008284860101525b50505092915050565b600060c082840312156200063b578081fd5b6200064760c06200095d565b905081516200065681620009a4565b815260208201516200066881620009a4565b602082015260408201516200067d81620009a4565b604082015260608201516200069281620009a4565b60608201526080820151620006a781620009a4565b608082015260a0820151620006bc81620009a4565b60a082015292915050565b60008060006101008486031215620006dd578283fd5b620006e9858562000497565b60208501519093506001600160401b038082111562000706578384fd5b9085019060c082880312156200071a578384fd5b6200072660c06200095d565b82518281111562000735578586fd5b62000743898286016200059a565b82525060208301518281111562000758578586fd5b62000766898286016200059a565b6020830152506040830151828111156200077e578586fd5b6200078c89828601620004b5565b604083015250606083015182811115620007a4578586fd5b620007b28982860162000535565b606083015250608083015182811115620007ca578586fd5b620007d88982860162000535565b60808301525060a083015160a0820152809450505050620007fd856040860162000629565b90509250925092565b6020808252825182820181905260009190848201906040850190845b81811015620008495783516001600160a01b03168352928401929184019160010162000822565b50909695505050505050565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252601b908201527f4552525f53544152545f42414c414e4345535f4d49534d415443480000000000604082015260600190565b6020808252601290820152714552525f544f4f5f4645575f544f4b454e5360701b604082015260600190565b60208082526014908201527f4552525f494e56414c49445f535741505f464545000000000000000000000000604082015260600190565b60208082526013908201527f4552525f544f4f5f4d414e595f544f4b454e5300000000000000000000000000604082015260600190565b6040518181016001600160401b03811182821017156200097c57600080fd5b604052919050565b60006001600160401b038211156200099a578081fd5b5060209081020190565b8015158114620009b357600080fd5b50565b61652580620009c66000396000f3fe608060405234801561001057600080fd5b506004361061036d5760003560e01c806370a08231116101d3578063b02f0b7311610104578063dd62ed3e116100a2578063e7f1a5541161007c578063e7f1a554146106e7578063e854f53d146106ef578063f226b528146106f7578063fde924f7146106ff5761036d565b8063dd62ed3e146106b9578063e211b875146106cc578063e2762d4b146106d45761036d565b8063c3391d27116100de578063c3391d2714610667578063c42bd05a1461067a578063c83a1c2d14610693578063d73dd623146106a65761036d565b8063b02f0b7314610644578063b64ef17b14610657578063c275d81b1461065f5761036d565b80639776e94b116101715780639d829c2b1161014b5780639d829c2b14610619578063a3f4df7e14610621578063a835a0de14610629578063a9059cbb146106315761036d565b80639776e94b146105e4578063980e8db6146105f75780639a82417e146106115761036d565b80638259e6a0116101ad5780638259e6a0146105a357806392eefe9b146105b6578063948d8ce6146105c957806395d89b41146105dc5761036d565b806370a082311461057557806374983a0d14610588578063806c6f87146105905761036d565b806334e19907116102ad5780634f69c0d41161024b5780635db34277116102255780635db34277146105295780635fa7b5841461053c578063661884631461054f5780636d06dfa0146105625761036d565b80634f69c0d4146104ed57806355c32a23146105005780635a8342d8146105135761036d565b806347786d371161028757806347786d37146104a157806349b59552146104b45780634ba57882146104c75780634c20d209146104da5761036d565b806334e199071461046857806337c6f4d91461047b57806346ab38f11461048e5761036d565b806318160ddd1161031a578063246bc19b116102f4578063246bc19b146104305780632e0f2625146104435780633018205f14610458578063313ce567146104605761036d565b806318160ddd14610402578063220eb7601461040a57806323b872dd1461041d5761036d565b8063095ea7b31161034b578063095ea7b3146103c55780630a165940146103e55780630ce27925146103fa5761036d565b806302c967481461037257806306fdde031461039b578063095dcccc146103b0575b600080fd5b610385610380366004615712565b610707565b6040516103929190616453565b60405180910390f35b6103a3610974565b6040516103929190615d91565b6103c36103be3660046156e7565b610a28565b005b6103d86103d33660046156e7565b610a6f565b6040516103929190615b4d565b6103ed610ae6565b6040516103929190615a45565b610385610b02565b610385610b08565b6103c36104183660046158dc565b610b0e565b6103d861042b3660046156a7565b610b53565b6103c361043e3660046157df565b610d26565b61044b610fc7565b604051610392919061646a565b6103ed610fcc565b61044b610fe8565b6103c36104763660046158dc565b610fed565b6103d86104893660046158bd565b611214565b61038561049c366004615712565b6112c2565b6103c36104af3660046158dc565b611516565b6103c36104c2366004615869565b61170d565b6103c36104d53660046158dc565b6118f5565b6103c36104e8366004615712565b611937565b6103c36104fb36600461590c565b611c7a565b6103c361050e3660046156e7565b61220a565b61051b61224d565b60405161039292919061645c565b610385610537366004615712565b612256565b6103c361054a366004615653565b6124cf565b6103d861055d3660046156e7565b612791565b610385610570366004615712565b6128b1565b610385610583366004615653565b612b2a565b6103ed612b52565b6103d861059e366004615653565b612b6a565b6103c36105b13660046158dc565b612bce565b6103c36105c4366004615653565b612ce6565b6103856105d7366004615653565b612e12565b6103a3612f46565b6103c36105f23660046156e7565b612fc5565b6105ff613240565b60405161039296959493929190615b58565b6103ed61327c565b6103ed613294565b6103a36132ac565b6103856132e5565b6103d861063f3660046156e7565b6132eb565b6103c361065236600461590c565b61334e565b6103ed61387e565b6103c361389a565b6103c36106753660046159c7565b613adb565b610682613c39565b604051610392959493929190615abe565b6103c36106a1366004615653565b613c7e565b6103d86106b43660046156e7565b613e37565b6103856106c736600461566f565b613ed7565b6103c3613f0f565b6103c36106e2366004615653565b6140c1565b6103856142d5565b6103856142db565b6103856142e1565b6103d86142e8565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906107419084903690615b88565b60405180910390a26002600654141561078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b60405180910390fd5b600260065560085473ffffffffffffffffffffffffffffffffffffffff166107e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517f724a2d53000000000000000000000000000000000000000000000000000000008152600091829173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163724a2d539161085a91309173ffffffffffffffffffffffffffffffffffffffff909116908b908b908b90600401615ccf565b604080518083038186803b15801561087157600080fd5b505af4158015610885573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a99190615956565b9150915080925060006108bc848461441b565b90508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e98860405161091b9190616453565b60405180910390a361092d3385612243565b61093681610b47565b6007546109599073ffffffffffffffffffffffffffffffffffffffff1684610a61565b61096487338861446e565b5050505b60016006559392505050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a1e5780601f106109f357610100808354040283529160200191610a1e565b820191906000526020600020905b815481529060010190602001808311610a0157829003601f168201915b5050505050905090565b333014610a61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610a6b8282614777565b5050565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610ad5908690616453565b60405180910390a350600192915050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60185481565b60005490565b333014610b47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610b5081614782565b50565b600073ffffffffffffffffffffffffffffffffffffffff8316610ba2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f13565b3373ffffffffffffffffffffffffffffffffffffffff85161480610bf6575073ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091529020548211155b610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906161de565b610c378484846147fc565b73ffffffffffffffffffffffffffffffffffffffff84166000818152600260209081526040808320338085529252909120549114801590610c9857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b15610d1957610ca7818461441b565b73ffffffffffffffffffffffffffffffffffffffff86811660009081526002602090815260408083203380855292529182902084905590519187169290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591610d1091616453565b60405180910390a35b60019150505b9392505050565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051610d92929190615b88565b60405180910390a260026006541415610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff163314610e2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16610e7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095462010000900460ff16610ebe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f81565b600e5474010000000000000000000000000000000000000000900460ff1615610f13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616215565b6008546015546040517f13b8bf2400000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__926313b8bf2492610f8c9273ffffffffffffffffffffffffffffffffffffffff90921691600a918a918a918a918a9190600401615c13565b60006040518083038186803b158015610fa457600080fd5b505af4158015610fb8573d6000803e3d6000fd5b50506001600655505050505050565b601281565b60055473ffffffffffffffffffffffffffffffffffffffff1690565b601290565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611059929190615b88565b60405180910390a26002600654141561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146110f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16611143576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600954610100900460ff16611184576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107869061635f565b6008546040517f34e1990700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906334e19907906111da908490600401616453565b600060405180830381600087803b1580156111f457600080fd5b505af1158015611208573d6000803e3d6000fd5b50506001600655505050565b6040517f4583544a00000000000000000000000000000000000000000000000000000000815260009073__$c7f394f0430b200d573091ca9a0309069c$__90634583544a9061126a9060099086906004016163cd565b60206040518083038186803b15801561128257600080fd5b505af4158015611296573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba9190615885565b90505b919050565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906112fc9084903690615b88565b60405180910390a260026006541415611341576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517fd505a94e000000000000000000000000000000000000000000000000000000008152600091829173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163d505a94e9161140c91309173ffffffffffffffffffffffffffffffffffffffff909116908b908b908b90600401615ccf565b604080518083038186803b15801561142357600080fd5b505af4158015611437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145b9190615956565b91509150809250600061146e868461441b565b90508673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9866040516114cd9190616453565b60405180910390a36114df3387612243565b6114e881610b47565b60075461150b9073ffffffffffffffffffffffffffffffffffffffff1684610a61565b61096487338661446e565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611582929190615b88565b60405180910390a2600260065414156115c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff1661161b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60055473ffffffffffffffffffffffffffffffffffffffff16331461166c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60095465010000000000900460ff166116b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616139565b3373ffffffffffffffffffffffffffffffffffffffff167f6bc200110c7794738d401810b22ef824a2044a8ccb022d4ad8769840370331f5601854836040516116fb92919061645c565b60405180910390a26018556001600655565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611779929190615b88565b60405180910390a2600260065414156117be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff163314611814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095460ff1661189f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906162ba565b6008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906349b59552906111da908490600401615b4d565b33301461192e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610b50816148d4565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000366040516119a3929190615b88565b60405180910390a2600260065414156119e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff163314611a3e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16611a8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6009546301000000900460ff16611ad0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e39565b600a5415611b0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616396565b6040517f1c1af13600000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__90631c1af13690611b5a908690600401615a45565b60006040518083038186803b158015611b7257600080fd5b505af4158015611b86573d6000803e3d6000fd5b505060405133925030915073ffffffffffffffffffffffffffffffffffffffff8616907f33b043686b9408a355896fe90b2f8ecc86a41d87d1554ef65a739948b4f23e2790600090a46008546040517fb489ec1900000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163b489ec1991611c409173ffffffffffffffffffffffffffffffffffffffff1690879087908790600e90600401615bd5565b60006040518083038186803b158015611c5857600080fd5b505af4158015611c6c573d6000803e3d6000fd5b505060016006555050505050565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051611ce6929190615b88565b60405180910390a260026006541415611d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16611d7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600854604080517ffde924f7000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163fde924f7916004808301926020929190829003018186803b158015611dea57600080fd5b505afa158015611dfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e229190615885565b6008546040517f49b5955200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906349b5955290611e7a90600090600401615b4d565b600060405180830381600087803b158015611e9457600080fd5b505af1158015611ea8573d6000803e3d6000fd5b5050600954640100000000900460ff16159150819050611ed757503360009081526017602052604090205460ff165b611f0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615ea5565b6008546040517fa1925f1d00000000000000000000000000000000000000000000000000000000815260609173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163a1925f1d91611f8091309173ffffffffffffffffffffffffffffffffffffffff16908a908a908a90600401615d10565b60006040518083038186803b158015611f9857600080fd5b505af4158015611fac573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611ff2919081019061582e565b90506060600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc77828d6040518163ffffffff1660e01b815260040160006040518083038186803b15801561205e57600080fd5b505afa158015612072573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526120b89190810190615746565b905060005b81518110156121705760008282815181106120d457fe5b6020026020010151905060008483815181106120ec57fe5b602002602001015190508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72836040516121539190616453565b60405180910390a361216682338361491b565b50506001016120bd565b5061217a8661192e565b6121843387610a61565b50506008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906349b59552906121dc908490600401615b4d565b600060405180830381600087803b1580156121f657600080fd5b505af1158015610fb8573d6000803e3d6000fd5b333014612243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b610a6b8282614c0b565b600a54600b5482565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906122909084903690615b88565b60405180910390a2600260065414156122d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16612329576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600954640100000000900460ff16158061235257503360009081526017602052604090205460ff165b612388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615ea5565b6008546040517fdf90de0b00000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163df90de0b916123fa91309173ffffffffffffffffffffffffffffffffffffffff90911690899089908990600401615ccf565b60206040518083038186803b15801561241257600080fd5b505af4158015612426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244a91906158f4565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa72856040516124a99190616453565b60405180910390a36124ba8161192e565b6124c43382610a61565b61096884338561491b565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191660003660405161253b929190615b88565b60405180910390a260026006541415612580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146125d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff16612625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6009546301000000900460ff16612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e39565b600e5474010000000000000000000000000000000000000000900460ff16156126bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107869061624c565b600a54156126f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616396565b6008546040517f0970e47f00000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__91630970e47f9161276591309173ffffffffffffffffffffffffffffffffffffffff909116908690600401615c68565b60006040518083038186803b15801561277d57600080fd5b505af4158015611208573d6000803e3d6000fd5b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548083106127ff5733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915281205561283b565b612809818461441b565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020555b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168085529252918290205491519092917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259161289f9190616453565b60405180910390a35060019392505050565b60405160009033907fffffffff00000000000000000000000000000000000000000000000000000000833516906128eb9084903690615b88565b60405180910390a260026006541415612930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16612984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600954640100000000900460ff1615806129ad57503360009081526017602052604090205460ff165b6129e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615ea5565b6008546040517f6a6dc6e700000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__91636a6dc6e791612a5591309173ffffffffffffffffffffffffffffffffffffffff90911690899089908990600401615ccf565b60206040518083038186803b158015612a6d57600080fd5b505af4158015612a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa591906158f4565b90508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fea39e3b35c5cd8937999ed5f7fbab30acd562a931fc4a887fed2a47c3074aa7283604051612b049190616453565b60405180910390a3612b158361192e565b612b1f3384610a61565b61096884338361491b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b73__$c7f394f0430b200d573091ca9a0309069c$__90565b600954600090640100000000900460ff1615612baf575073ffffffffffffffffffffffffffffffffffffffff811660009081526017602052604090205460ff166112bd565b5073ffffffffffffffffffffffffffffffffffffffff811615156112bd565b60055473ffffffffffffffffffffffffffffffffffffffff163314612c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051612c8b929190615b88565b60405180910390a260026006541415612cd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b6002600655612cde81614c16565b506001600655565b60055473ffffffffffffffffffffffffffffffffffffffff163314612d37576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b73ffffffffffffffffffffffffffffffffffffffff8116612d84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f13565b60055460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600060026006541415612e51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906160cb565b60085473ffffffffffffffffffffffffffffffffffffffff16612ea0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517f948d8ce600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063948d8ce690612ef6908590600401615a45565b60206040518083038186803b158015612f0e57600080fd5b505afa158015612f22573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ba91906158f4565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a1e5780601f106109f357610100808354040283529160200191610a1e565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613031929190615b88565b60405180910390a260026006541415613076576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146130cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff1661311b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095462010000900460ff1661315d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f81565b600a5415613197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616396565b6008546040517ff544aa1c00000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9163f544aa1c9161320791309173ffffffffffffffffffffffffffffffffffffffff9091169087908790600401615c98565b60006040518083038186803b15801561321f57600080fd5b505af4158015613233573d6000803e3d6000fd5b5050600160065550505050565b60095460ff8082169161010081048216916201000082048116916301000000810482169164010000000082048116916501000000000090041686565b73__$03602ee833d1498456e485c89c7d5cf6a3$__90565b73__$e2443ddb34206265ddf9ba9c66d7b47e8d$__90565b6040518060400160405280601381526020017f42616c616e63657220536d61727420506f6f6c0000000000000000000000000081525081565b6101f481565b600073ffffffffffffffffffffffffffffffffffffffff831661333a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f13565b6133453384846147fc565b50600192915050565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166000366040516133ba929190615b88565b60405180910390a2600260065414156133ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16613453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600854604080517ffde924f7000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163fde924f7916004808301926020929190829003018186803b1580156134be57600080fd5b505afa1580156134d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134f69190615885565b6008546040517f49b5955200000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906349b595529061354e90600090600401615b4d565b600060405180830381600087803b15801561356857600080fd5b505af115801561357c573d6000803e3d6000fd5b50506008546040517f5471c3e40000000000000000000000000000000000000000000000000000000081526000935083925060609173__$e2443ddb34206265ddf9ba9c66d7b47e8d$__91635471c3e4916135f891309173ffffffffffffffffffffffffffffffffffffffff16908c908c908c90600401615d10565b60006040518083038186803b15801561361057600080fd5b505af4158015613624573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261366a9190810190615979565b92509250925061367a3388612243565b60075461369d9073ffffffffffffffffffffffffffffffffffffffff1684610a61565b6136a682610b47565b600854604080517fcc77828d000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163cc77828d916004808301926000929190829003018186803b15801561371157600080fd5b505afa158015613725573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261376b9190810190615746565b905060005b815181101561382357600082828151811061378757fe5b60200260200101519050600084838151811061379f57fe5b602002602001015190508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fc62fc35ac75e3bff532648e2859a3e1694002cfa357614ae8e034df7f83db5e9836040516138069190616453565b60405180910390a361381982338361446e565b5050600101613770565b50506008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911693506349b5955292506121dc91508490600401615b4d565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613906929190615b88565b60405180910390a26002600654141561394b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560055473ffffffffffffffffffffffffffffffffffffffff1633146139a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60085473ffffffffffffffffffffffffffffffffffffffff166139f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6009546301000000900460ff16613a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e39565b6008546016546040517fefa5877400000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__9263efa5877492613aa492309273ffffffffffffffffffffffffffffffffffffffff169190600e90600401615d5b565b60006040518083038186803b158015613abc57600080fd5b505af4158015613ad0573d6000803e3d6000fd5b505060016006555050565b60055473ffffffffffffffffffffffffffffffffffffffff163314613b2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613b98929190615b88565b60405180910390a260026006541415613bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065580821015613c1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e70565b60158290556016819055613c2f83614c16565b5050600160065550565b600e54600f5460105460115473ffffffffffffffffffffffffffffffffffffffff84169374010000000000000000000000000000000000000000900460ff1692919085565b60055473ffffffffffffffffffffffffffffffffffffffff163314613ccf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b60026006541415613d0c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b60026006556040513390600080357fffffffff000000000000000000000000000000000000000000000000000000001691613d4991903690615b88565b60405180910390a2600954640100000000900460ff16613d95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f4a565b73ffffffffffffffffffffffffffffffffffffffff8116613de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616102565b73ffffffffffffffffffffffffffffffffffffffff16600090815260176020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155600655565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152812054613e7290836152c9565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8916808552925291829020849055905190927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591610ad59190616453565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b3373ffffffffffffffffffffffffffffffffffffffff166000357fffffffff00000000000000000000000000000000000000000000000000000000167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916600036604051613f7b929190615b88565b60405180910390a260026006541415613fc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b600260065560085473ffffffffffffffffffffffffffffffffffffffff16614014576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b60095462010000900460ff16614056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f81565b6008546040517f82495b4500000000000000000000000000000000000000000000000000000000815273__$e2443ddb34206265ddf9ba9c66d7b47e8d$__916382495b4591613aa49173ffffffffffffffffffffffffffffffffffffffff1690600a90600401615af9565b60055473ffffffffffffffffffffffffffffffffffffffff163314614112576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615e02565b6002600654141561414f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616094565b60026006556040513390600080357fffffffff00000000000000000000000000000000000000000000000000000000169161418c91903690615b88565b60405180910390a2600954640100000000900460ff166141d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615f4a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526017602052604090205460ff16614237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fb8565b73ffffffffffffffffffffffffffffffffffffffff8116614284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616102565b73ffffffffffffffffffffffffffffffffffffffff16600090815260176020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556001600655565b60165481565b60155481565b62015f9081565b600060026006541415614327576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906160cb565b60085473ffffffffffffffffffffffffffffffffffffffff16614376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fde924f76040518163ffffffff1660e01b815260040160206040518083038186803b1580156143de57600080fd5b505afa1580156143f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144169190615885565b905090565b600080600061442a8585615308565b915091508015614466576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906162f1565b509392505050565b60085473ffffffffffffffffffffffffffffffffffffffff166144bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063f8b2cb4f90614514908790600401615a45565b60206040518083038186803b15801561452c57600080fd5b505afa158015614540573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061456491906158f4565b6008546040517f948d8ce600000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063948d8ce6906145c0908890600401615a45565b60206040518083038186803b1580156145d857600080fd5b505afa1580156145ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061461091906158f4565b60085490915073ffffffffffffffffffffffffffffffffffffffff16633fdddaa28661463c858761441b565b846040518463ffffffff1660e01b815260040161465b93929190615b1f565b600060405180830381600087803b15801561467557600080fd5b505af1158015614689573d6000803e3d6000fd5b50506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526000925073ffffffffffffffffffffffffffffffffffffffff8816915063a9059cbb906146e49088908890600401615af9565b602060405180830381600087803b1580156146fe57600080fd5b505af1158015614712573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147369190615885565b90508061476f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b505050505050565b610a6b3083836147fc565b3060009081526001602052604090205461479c908261441b565b30600090815260016020526040812091909155546147ba908261441b565b600090815560405130907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906147f1908590616453565b60405180910390a350565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461482c908261441b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461486890826152c9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906148c7908590616453565b60405180910390a3505050565b6148dd8161532d565b6018546000541115610b50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610786906161a7565b60085473ffffffffffffffffffffffffffffffffffffffff1661496a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615fef565b6008546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff169063f8b2cb4f906149c1908790600401615a45565b60206040518083038186803b1580156149d957600080fd5b505afa1580156149ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614a1191906158f4565b6008546040517f948d8ce600000000000000000000000000000000000000000000000000000000815291925060009173ffffffffffffffffffffffffffffffffffffffff9091169063948d8ce690614a6d908890600401615a45565b60206040518083038186803b158015614a8557600080fd5b505afa158015614a99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614abd91906158f4565b905060008573ffffffffffffffffffffffffffffffffffffffff166323b872dd8630876040518463ffffffff1660e01b8152600401614afe93929190615a66565b602060405180830381600087803b158015614b1857600080fd5b505af1158015614b2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614b509190615885565b905080614b89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b60085473ffffffffffffffffffffffffffffffffffffffff16633fdddaa287614bb286886152c9565b856040518463ffffffff1660e01b8152600401614bd193929190615b1f565b600060405180830381600087803b158015614beb57600080fd5b505af1158015614bff573d6000803e3d6000fd5b50505050505050505050565b610a6b8230836147fc565b60085473ffffffffffffffffffffffffffffffffffffffff1615614c66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616026565b68056bc75e2d63100000811015614ca9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107869061605d565b6b033b2e3c9fd0803ce8000000811115614cef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690615edc565b60095465010000000000900460ff1615614d095760188190555b614d128161192e565b614d1c3382610a61565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d556c5dc6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015614d8657600080fd5b505af1158015614d9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614dbe91906158a1565b600880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9283161790819055604080517fc6580d120000000000000000000000000000000000000000000000000000000081529051919092169163c6580d12916004808301926020929190829003018186803b158015614e5457600080fd5b505afa158015614e68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614e8c91906158f4565b15614ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616170565b60005b60135481101561513d57600060138281548110614edf57fe5b60009182526020822001546014805473ffffffffffffffffffffffffffffffffffffffff90921693509084908110614f1357fe5b906000526020600020015490506000600a6002018481548110614f3257fe5b60009182526020822001546040517f23b872dd00000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8516906323b872dd90614f9690339030908890600401615a66565b602060405180830381600087803b158015614fb057600080fd5b505af1158015614fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614fe89190615885565b905080615021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b6008546150689073ffffffffffffffffffffffffffffffffffffffff86811691167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61539d565b9050806150a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616283565b6008546040517fe4e1e53800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e4e1e538906150fb90879087908790600401615b1f565b600060405180830381600087803b15801561511557600080fd5b505af1158015615129573d6000803e3d6000fd5b505060019096019550614ec6945050505050565b505b601354156151af57601380548061515257fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905561513f565b6008546012546040517f34e1990700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216916334e199079161520691600401616453565b600060405180830381600087803b15801561522057600080fd5b505af1158015615234573d6000803e3d6000fd5b50506008546040517f49b5955200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911692506349b59552915061528f90600190600401615b4d565b600060405180830381600087803b1580156152a957600080fd5b505af11580156152bd573d6000803e3d6000fd5b50506000601255505050565b600082820183811015610d1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690616328565b60008083831161531e5750508082036000615326565b505081810360015b9250929050565b3060009081526001602052604090205461534790826152c9565b306000908152600160205260408120919091555461536590826152c9565b60009081556040513091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906147f1908590616453565b6000808473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b81526004016153db929190615a97565b60206040518083038186803b1580156153f357600080fd5b505afa158015615407573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061542b91906158f4565b90508281141561543f576001915050610d1f565b80156154f4576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b39061549a908790600090600401615af9565b602060405180830381600087803b1580156154b457600080fd5b505af11580156154c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906154ec9190615885565b915050610d1f565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b3906155489087908790600401615af9565b602060405180830381600087803b15801561556257600080fd5b505af1158015615576573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061559a9190615885565b95945050505050565b60008083601f8401126155b4578081fd5b50813567ffffffffffffffff8111156155cb578182fd5b602083019150836020808302850101111561532657600080fd5b600082601f8301126155f5578081fd5b81516156086156038261649f565b616478565b81815291506020808301908481018184028601820187101561562957600080fd5b60005b848110156156485781518452928201929082019060010161562c565b505050505092915050565b600060208284031215615664578081fd5b8135610d1f816164bf565b60008060408385031215615681578081fd5b823561568c816164bf565b9150602083013561569c816164bf565b809150509250929050565b6000806000606084860312156156bb578081fd5b83356156c6816164bf565b925060208401356156d6816164bf565b929592945050506040919091013590565b600080604083850312156156f9578182fd5b8235615704816164bf565b946020939093013593505050565b600080600060608486031215615726578283fd5b8335615731816164bf565b95602085013595506040909401359392505050565b60006020808385031215615758578182fd5b825167ffffffffffffffff81111561576e578283fd5b8301601f8101851361577e578283fd5b805161578c6156038261649f565b81815283810190838501858402850186018910156157a8578687fd5b8694505b838510156157d35780516157bf816164bf565b8352600194909401939185019185016157ac565b50979650505050505050565b600080600080606085870312156157f4578081fd5b843567ffffffffffffffff81111561580a578182fd5b615816878288016155a3565b90989097506020870135966040013595509350505050565b60006020828403121561583f578081fd5b815167ffffffffffffffff811115615855578182fd5b615861848285016155e5565b949350505050565b60006020828403121561587a578081fd5b8135610d1f816164e1565b600060208284031215615896578081fd5b8151610d1f816164e1565b6000602082840312156158b2578081fd5b8151610d1f816164bf565b6000602082840312156158ce578081fd5b813560068110610d1f578182fd5b6000602082840312156158ed578081fd5b5035919050565b600060208284031215615905578081fd5b5051919050565b600080600060408486031215615920578081fd5b83359250602084013567ffffffffffffffff81111561593d578182fd5b615949868287016155a3565b9497909650939450505050565b60008060408385031215615968578182fd5b505080516020909101519092909150565b60008060006060848603121561598d578081fd5b8351925060208401519150604084015167ffffffffffffffff8111156159b1578182fd5b6159bd868287016155e5565b9150509250925092565b6000806000606084860312156159db578081fd5b505081359360208301359350604090920135919050565b60008284527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115615a23578081fd5b6020830280836020870137939093016020019283525090919050565b15159052565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff959095168552921515602085015260408401919091526060830152608082015260a00190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b901515815260200190565b9515158652931515602086015291151560408501521515606084015215156080830152151560a082015260c00190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b73ffffffffffffffffffffffffffffffffffffffff958616815293909416602084015260408301919091526060820152608081019190915260a00190565b600073ffffffffffffffffffffffffffffffffffffffff8916825287602083015260c06040830152615c4960c0830187896159f2565b606083019590955250608081019290925260a090910152949350505050565b73ffffffffffffffffffffffffffffffffffffffff93841681529183166020830152909116604082015260600190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152615d506080830184866159f2565b979650505050505050565b73ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b6000602080835283518082850152825b81811015615dbd57858101830151858201604001528201615da1565b81811115615dce5783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526012908201527f4552525f4e4f545f434f4e54524f4c4c45520000000000000000000000000000604082015260600190565b6020808252601c908201527f4552525f43414e4e4f545f4144445f52454d4f56455f544f4b454e5300000000604082015260600190565b6020808252818101527f4552525f494e434f4e53495354454e545f544f4b454e5f54494d455f4c4f434b604082015260600190565b60208082526014908201527f4552525f4e4f545f4f4e5f57484954454c495354000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e49545f535550504c595f4d415800000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604082015260600190565b60208082526018908201527f4552525f43414e4e4f545f57484954454c4953545f4c50530000000000000000604082015260600190565b6020808252601c908201527f4552525f4e4f545f434f4e464947555241424c455f5745494748545300000000604082015260600190565b60208082526016908201527f4552525f4c505f4e4f545f57484954454c495354454400000000000000000000604082015260600190565b6020808252600f908201527f4552525f4e4f545f435245415445440000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f49535f43524541544544000000000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e49545f535550504c595f4d494e00000000000000000000000000604082015260600190565b6020808252600b908201527f4552525f5245454e545259000000000000000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f5245454e5452595f5649455700000000000000000000000000000000604082015260600190565b60208082526013908201527f4552525f494e56414c49445f4144445245535300000000000000000000000000604082015260600190565b60208082526015908201527f4552525f43414e4e4f545f4348414e47455f4341500000000000000000000000604082015260600190565b60208082526014908201527f4552525f4e4f4e5a45524f5f455849545f464545000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4341505f4c494d49545f524541434845440000000000000000000000604082015260600190565b60208082526016908201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604082015260600190565b60208082526015908201527f4552525f50454e44494e475f544f4b454e5f4144440000000000000000000000604082015260600190565b6020808252601b908201527f4552525f52454d4f56455f574954485f4144445f50454e44494e470000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f4e4f545f5041555341424c455f535741500000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b6020808252601d908201527f4552525f4e4f545f434f4e464947555241424c455f535741505f464545000000604082015260600190565b6020808252601c908201527f4552525f4e4f5f5550444154455f445552494e475f4752414455414c00000000604082015260600190565b600060e082019050835460ff808216151584526163f260208501828460081c16615a3f565b61640460408501828460101c16615a3f565b61641660608501828460181c16615a3f565b61642860808501828460201c16615a3f565b61643a60a08501828460281c16615a3f565b50506006831061644657fe5b8260c08301529392505050565b90815260200190565b918252602082015260400190565b60ff91909116815260200190565b60405181810167ffffffffffffffff8111828210171561649757600080fd5b604052919050565b600067ffffffffffffffff8211156164b5578081fd5b5060209081020190565b73ffffffffffffffffffffffffffffffffffffffff81168114610b5057600080fd5b8015158114610b5057600080fdfea264697066735822122091c952f4aae70aa3dbd1dfe38be24bf0fdb15cdf6a4d8653392695dbc98102a064736f6c634300060c0033"; - -type ConfigurableRightsPoolConstructorParams = - | [ - linkLibraryAddresses: ConfigurableRightsPoolLibraryAddresses, - signer?: Signer - ] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ConfigurableRightsPoolConstructorParams -): xs is ConstructorParameters => { - return ( - typeof xs[0] === "string" || - (Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) || - "_isInterface" in xs[0] - ); -}; - -export class ConfigurableRightsPool__factory extends ContractFactory { - constructor(...args: ConfigurableRightsPoolConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - const [linkLibraryAddresses, signer] = args; - super( - _abi, - ConfigurableRightsPool__factory.linkBytecode(linkLibraryAddresses), - signer - ); - } - } - - static linkBytecode( - linkLibraryAddresses: ConfigurableRightsPoolLibraryAddresses - ): string { - let linkedBytecode = _bytecode; - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$e2443ddb34206265ddf9ba9c66d7b47e8d\\$__", "g"), - linkLibraryAddresses[ - "@beehiveinnovation/configurable-rights-pool/libraries/SmartPoolManager.sol:SmartPoolManager" - ] - .replace(/^0x/, "") - .toLowerCase() - ); - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$c7f394f0430b200d573091ca9a0309069c\\$__", "g"), - linkLibraryAddresses[ - "@beehiveinnovation/configurable-rights-pool/libraries/RightsManager.sol:RightsManager" - ] - .replace(/^0x/, "") - .toLowerCase() - ); - - linkedBytecode = linkedBytecode.replace( - new RegExp("__\\$03602ee833d1498456e485c89c7d5cf6a3\\$__", "g"), - linkLibraryAddresses[ - "@beehiveinnovation/configurable-rights-pool/libraries/BalancerSafeMath.sol:BalancerSafeMath" - ] - .replace(/^0x/, "") - .toLowerCase() - ); - - return linkedBytecode; - } - - deploy( - factoryAddress: string, - poolParams: PoolParamsStruct, - rightsStruct: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy( - factoryAddress, - poolParams, - rightsStruct, - overrides || {} - ) as Promise; - } - getDeployTransaction( - factoryAddress: string, - poolParams: PoolParamsStruct, - rightsStruct: RightsStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction( - factoryAddress, - poolParams, - rightsStruct, - overrides || {} - ); - } - attach(address: string): ConfigurableRightsPool { - return super.attach(address) as ConfigurableRightsPool; - } - connect(signer: Signer): ConfigurableRightsPool__factory { - return super.connect(signer) as ConfigurableRightsPool__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ConfigurableRightsPoolInterface { - return new utils.Interface(_abi) as ConfigurableRightsPoolInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ConfigurableRightsPool { - return new Contract( - address, - _abi, - signerOrProvider - ) as ConfigurableRightsPool; - } -} - -export interface ConfigurableRightsPoolLibraryAddresses { - ["@beehiveinnovation/configurable-rights-pool/libraries/SmartPoolManager.sol:SmartPoolManager"]: string; - ["@beehiveinnovation/configurable-rights-pool/libraries/RightsManager.sol:RightsManager"]: string; - ["@beehiveinnovation/configurable-rights-pool/libraries/BalancerSafeMath.sol:BalancerSafeMath"]: string; -} diff --git a/src/typechain/factories/ContextUpgradeable__factory.ts b/src/typechain/factories/ContextUpgradeable__factory.ts new file mode 100644 index 0000000..7ae8a3f --- /dev/null +++ b/src/typechain/factories/ContextUpgradeable__factory.ts @@ -0,0 +1,39 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + ContextUpgradeable, + ContextUpgradeableInterface, +} from "../ContextUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, +]; + +export class ContextUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): ContextUpgradeableInterface { + return new utils.Interface(_abi) as ContextUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ContextUpgradeable { + return new Contract(address, _abi, signerOrProvider) as ContextUpgradeable; + } +} diff --git a/src/typechain/factories/ERC1155__factory.ts b/src/typechain/factories/ERC1155__factory.ts index 62c176a..c403d01 100644 --- a/src/typechain/factories/ERC1155__factory.ts +++ b/src/typechain/factories/ERC1155__factory.ts @@ -332,7 +332,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001cea38038062001cea83398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b611aa680620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461018657600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004611255565b610199565b6040519081526020015b60405180910390f35b6100c56100c03660046112b0565b610276565b60405190151581526020016100a9565b6100e86100e33660046112d4565b61035b565b6040516100a99190611358565b61010861010336600461150c565b6103ef565b005b61011d6101183660046115b6565b6104b8565b6040516100a991906116bc565b6101086101383660046116cf565b610610565b6100c561014b36600461170b565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61010861019436600461173e565b61061f565b600073ffffffffffffffffffffffffffffffffffffffff8316610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061030957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461036a906117a3565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906117a3565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104185750610418853361014b565b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606482015260840161023a565b6104b185858585856106e1565b5050505050565b6060815183511461054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023a565b6000835167ffffffffffffffff8111156105675761056761136b565b604051908082528060200260200182016040528015610590578160200160208202803683370190505b50905060005b8451811015610608576105db8582815181106105b4576105b46117f7565b60200260200101518583815181106105ce576105ce6117f7565b6020026020010151610199565b8282815181106105ed576105ed6117f7565b602090810291909101015261060181611855565b9050610596565b509392505050565b61061b338383610a1b565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806106485750610648853361014b565b6106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023a565b6104b18585858585610b6f565b8151835114610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff8416610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b3360005b8451811015610986576000858281518110610836576108366117f7565b602002602001015190506000858381518110610854576108546117f7565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061096b90849061188e565b925050819055505050508061097f90611855565b9050610819565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109fd9291906118a6565b60405180910390a4610a13818787878787610da9565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b33610c2b818787610c2288611034565b6104b188611034565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8a16845290915290205483811015610ce9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b8116855292528083208785039055908816825281208054869290610d3390849061188e565b9091555050604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610da082888888888861107f565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190610e2090899089908890889088906004016118d4565b6020604051808303816000875af1925050508015610e79575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e769181019061193f565b60015b610f6357610e8561195c565b806308c379a01415610ed95750610e9a611978565b80610ea55750610edb565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023a9190611358565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061106e5761106e6117f7565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906110f69089908990889088908890600401611a20565b6020604051808303816000875af192505050801561114f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261114c9181019061193f565b60015b61115b57610e8561195c565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125057600080fd5b919050565b6000806040838503121561126857600080fd5b6112718361122c565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112ad57600080fd5b50565b6000602082840312156112c257600080fd5b81356112cd8161127f565b9392505050565b6000602082840312156112e657600080fd5b5035919050565b6000815180845260005b81811015611313576020818501810151868301820152016112f7565b81811115611325576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112cd60208301846112ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156113de576113de61136b565b6040525050565b600067ffffffffffffffff8211156113ff576113ff61136b565b5060051b60200190565b600082601f83011261141a57600080fd5b81356020611427826113e5565b604051611434828261139a565b83815260059390931b850182019282810191508684111561145457600080fd5b8286015b8481101561146f5780358352918301918301611458565b509695505050505050565b600082601f83011261148b57600080fd5b813567ffffffffffffffff8111156114a5576114a561136b565b6040516114da60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116018261139a565b8181528460208386010111156114ef57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561152457600080fd5b61152d8661122c565b945061153b6020870161122c565b9350604086013567ffffffffffffffff8082111561155857600080fd5b61156489838a01611409565b9450606088013591508082111561157a57600080fd5b61158689838a01611409565b9350608088013591508082111561159c57600080fd5b506115a98882890161147a565b9150509295509295909350565b600080604083850312156115c957600080fd5b823567ffffffffffffffff808211156115e157600080fd5b818501915085601f8301126115f557600080fd5b81356020611602826113e5565b60405161160f828261139a565b83815260059390931b850182019282810191508984111561162f57600080fd5b948201945b83861015611654576116458661122c565b82529482019490820190611634565b9650508601359250508082111561166a57600080fd5b5061167785828601611409565b9150509250929050565b600081518084526020808501945080840160005b838110156116b157815187529582019590820190600101611695565b509495945050505050565b6020815260006112cd6020830184611681565b600080604083850312156116e257600080fd5b6116eb8361122c565b91506020830135801515811461170057600080fd5b809150509250929050565b6000806040838503121561171e57600080fd5b6117278361122c565b91506117356020840161122c565b90509250929050565b600080600080600060a0868803121561175657600080fd5b61175f8661122c565b945061176d6020870161122c565b93506040860135925060608601359150608086013567ffffffffffffffff81111561179757600080fd5b6115a98882890161147a565b600181811c908216806117b757607f821691505b602082108114156117f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561188757611887611826565b5060010190565b600082198211156118a1576118a1611826565b500190565b6040815260006118b96040830185611681565b82810360208401526118cb8185611681565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261190d60a0830186611681565b828103606084015261191f8186611681565b9050828103608084015261193381856112ed565b98975050505050505050565b60006020828403121561195157600080fd5b81516112cd8161127f565b600060033d11156119755760046000803e5060005160e01c5b90565b600060443d10156119865790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156119d457505050505090565b82850191508151818111156119ec5750505050505090565b843d8701016020828501011115611a065750505050505090565b611a156020828601018761139a565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611a6560a08301846112ed565b97965050505050505056fea2646970667358221220cbc0f60db860b1378f6f2c5ba36500d18047185f97771f5638683e0b2908a3fa64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162001cf738038062001cf783398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b611ab380620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461018657600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004611262565b610199565b6040519081526020015b60405180910390f35b6100c56100c03660046112bd565b610276565b60405190151581526020016100a9565b6100e86100e33660046112e1565b61035b565b6040516100a99190611365565b610108610103366004611519565b6103ef565b005b61011d6101183660046115c3565b6104b8565b6040516100a991906116c9565b6101086101383660046116dc565b610610565b6100c561014b366004611718565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61010861019436600461174b565b61061f565b600073ffffffffffffffffffffffffffffffffffffffff8316610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061030957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461036a906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906117b0565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104185750610418853361014b565b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606482015260840161023a565b6104b185858585856106e1565b5050505050565b6060815183511461054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023a565b6000835167ffffffffffffffff81111561056757610567611378565b604051908082528060200260200182016040528015610590578160200160208202803683370190505b50905060005b8451811015610608576105db8582815181106105b4576105b4611804565b60200260200101518583815181106105ce576105ce611804565b6020026020010151610199565b8282815181106105ed576105ed611804565b602090810291909101015261060181611862565b9050610596565b509392505050565b61061b338383610a1b565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806106485750610648853361014b565b6106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023a565b6104b18585858585610b6f565b8151835114610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff8416610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b3360005b845181101561098657600085828151811061083657610836611804565b60200260200101519050600085838151811061085457610854611804565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061096b90849061189b565b925050819055505050508061097f90611862565b9050610819565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109fd9291906118b3565b60405180910390a4610a13818787878787610dad565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b336000610c1e85611041565b90506000610c2b85611041565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a16825281208054889290610d3590849061189b565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610da2848a8a8a8a8a61108c565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190610e2490899089908890889088906004016118e1565b6020604051808303816000875af1925050508015610e7d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e7a9181019061194c565b60015b610f6757610e89611969565b806308c379a01415610edd5750610e9e611985565b80610ea95750610edf565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023a9190611365565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061107b5761107b611804565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906111039089908990889088908890600401611a2d565b6020604051808303816000875af192505050801561115c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526111599181019061194c565b60015b61116857610e89611969565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112ba57600080fd5b50565b6000602082840312156112cf57600080fd5b81356112da8161128c565b9392505050565b6000602082840312156112f357600080fd5b5035919050565b6000815180845260005b8181101561132057602081850181015186830182015201611304565b81811115611332576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112da60208301846112fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156113eb576113eb611378565b6040525050565b600067ffffffffffffffff82111561140c5761140c611378565b5060051b60200190565b600082601f83011261142757600080fd5b81356020611434826113f2565b60405161144182826113a7565b83815260059390931b850182019282810191508684111561146157600080fd5b8286015b8481101561147c5780358352918301918301611465565b509695505050505050565b600082601f83011261149857600080fd5b813567ffffffffffffffff8111156114b2576114b2611378565b6040516114e760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601826113a7565b8181528460208386010111156114fc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561153157600080fd5b61153a86611239565b945061154860208701611239565b9350604086013567ffffffffffffffff8082111561156557600080fd5b61157189838a01611416565b9450606088013591508082111561158757600080fd5b61159389838a01611416565b935060808801359150808211156115a957600080fd5b506115b688828901611487565b9150509295509295909350565b600080604083850312156115d657600080fd5b823567ffffffffffffffff808211156115ee57600080fd5b818501915085601f83011261160257600080fd5b8135602061160f826113f2565b60405161161c82826113a7565b83815260059390931b850182019282810191508984111561163c57600080fd5b948201945b838610156116615761165286611239565b82529482019490820190611641565b9650508601359250508082111561167757600080fd5b5061168485828601611416565b9150509250929050565b600081518084526020808501945080840160005b838110156116be578151875295820195908201906001016116a2565b509495945050505050565b6020815260006112da602083018461168e565b600080604083850312156116ef57600080fd5b6116f883611239565b91506020830135801515811461170d57600080fd5b809150509250929050565b6000806040838503121561172b57600080fd5b61173483611239565b915061174260208401611239565b90509250929050565b600080600080600060a0868803121561176357600080fd5b61176c86611239565b945061177a60208701611239565b93506040860135925060608601359150608086013567ffffffffffffffff8111156117a457600080fd5b6115b688828901611487565b600181811c908216806117c457607f821691505b602082108114156117fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561189457611894611833565b5060010190565b600082198211156118ae576118ae611833565b500190565b6040815260006118c6604083018561168e565b82810360208401526118d8818561168e565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261191a60a083018661168e565b828103606084015261192c818661168e565b9050828103608084015261194081856112fa565b98975050505050505050565b60006020828403121561195e57600080fd5b81516112da8161128c565b600060033d11156119825760046000803e5060005160e01c5b90565b600060443d10156119935790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156119e157505050505090565b82850191508151818111156119f95750505050505090565b843d8701016020828501011115611a135750505050505090565b611a22602082860101876113a7565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611a7260a08301846112fa565b97965050505050505056fea26469706673582212208b52b46c7ac4aba70875f40e56e34bbc2839c5260f4d9e7dc10bd7877e342f4e64736f6c634300080a0033"; type ERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts index 5ec2852..b85fb69 100644 --- a/src/typechain/factories/ERC165Upgradeable__factory.ts +++ b/src/typechain/factories/ERC165Upgradeable__factory.ts @@ -10,6 +10,19 @@ import type { } from "../ERC165Upgradeable"; const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { inputs: [ { diff --git a/src/typechain/factories/ERC20BalanceTierFactory__factory.ts b/src/typechain/factories/ERC20BalanceTierFactory__factory.ts index 0586aa2..5df820e 100644 --- a/src/typechain/factories/ERC20BalanceTierFactory__factory.ts +++ b/src/typechain/factories/ERC20BalanceTierFactory__factory.ts @@ -137,7 +137,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610ce3806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea2646970667358221220ec9932e0ecdaefa26435066b684dd87432016db14e264acb8c303de31d4ae06464736f6c634300080a0033608060405234801561001057600080fd5b50610cc3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610888565b60405180910390f35b61008261007d3660046108df565b6100fa565b005b6100826100923660046109c1565b610161565b6100aa6100a5366004610a5f565b61035e565b604051908152602001610066565b6100c0610869565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff16610414565b8060200190518101906100f59190610a7c565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166101a85760005474010000000000000000000000000000000000000000900460ff16156101ac565b303b155b610238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b6000547501000000000000000000000000000000000000000000900460ff1615801561029f57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6102ac8260200151610442565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061040e60006104096103706100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104049190610add565b6105db565b610629565b92915050565b606061040e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6106c9565b60005473ffffffffffffffffffffffffffffffffffffffff161561046857610468610af6565b6000805b6008811015610516578183826008811061048857610488610b25565b602002015110156104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061050757610507610b25565b6020020151915060010161046c565b505060006105428260405160200161052e9190610888565b6040516020818303038152906040526107b2565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561061f578381600881106105fa576105fa610b25565b602002015183101561060d57905061040e565b8061061781610b54565b9150506105df565b5060089392505050565b6000816008811115610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806106e85750506040805160208101909152600081526107ab565b808411156107065750506040805160208101909152600081526107ab565b83831015610751576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b83830384820360008282106107665782610768565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806107dd836040516020016107c99190610bef565b60405160208183030381529060405261083d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610837576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610853929190610c02565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156108b1578151835260209283019290910190600101610892565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146108dc57600080fd5b50565b600080600080606085870312156108f557600080fd5b8435610900816108ba565b935060208501359250604085013567ffffffffffffffff8082111561092457600080fd5b818701915087601f83011261093857600080fd5b81358181111561094757600080fd5b88602082850101111561095957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156109bb576109bb610968565b60405290565b60006101208083850312156109d557600080fd5b6040516040810181811067ffffffffffffffff821117156109f8576109f8610968565b6040528335610a06816108ba565b81526020603f85018613610a1957600080fd5b610a21610997565b928501928087851115610a3357600080fd5b8287015b85811015610a4e5780358352918301918301610a37565b509183019190915250949350505050565b600060208284031215610a7157600080fd5b81356107ab816108ba565b6000610100808385031215610a9057600080fd5b83601f840112610a9f57600080fd5b610aa7610997565b908301908085831115610ab957600080fd5b845b83811015610ad3578051835260209283019201610abb565b5095945050505050565b600060208284031215610aef57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610bd55760208185018101518683015201610bbb565b81811115610be4576000828601525b509290920192915050565b6000815260006107ab6001830184610bb4565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610c85600e830184610bb4565b94935050505056fea2646970667358221220357d760f9dd4cc0e0a228e340d951502a72616fefae3f7afd98c93ffdb1c439464736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610df8806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea26469706673582212206821a955d90cf540417d75dc98c9d8f1bbe3f099c400a1e65739a30d5294bdca64736f6c634300080a0033608060405234801561001057600080fd5b50610dd8806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061099d565b60405180910390f35b61008261007d3660046109f4565b6100fa565b005b610082610092366004610ad6565b610161565b6100aa6100a5366004610b74565b6102a9565b604051908152602001610066565b6100c061097e565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff1661035f565b8060200190518101906100f59190610b91565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061016d600161038d565b905080156101b657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6101c38260200151610557565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061035960006103546102bb6100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190610bf2565b6106f0565b61073e565b92915050565b60606103598260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107de565b600080547501000000000000000000000000000000000000000000900460ff1615610458578160ff1660011480156103c45750303b155b610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff161561057d5761057d610c0b565b6000805b600881101561062b578183826008811061059d5761059d610c3a565b6020020151101561060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061061c5761061c610c3a565b60200201519150600101610581565b5050600061065782604051602001610643919061099d565b6040516020818303038152906040526108c7565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107345783816008811061070f5761070f610c3a565b6020020151831015610722579050610359565b8061072c81610c69565b9150506106f4565b5060089392505050565b60008160088111156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806107fd5750506040805160208101909152600081526108c0565b8084111561081b5750506040805160208101909152600081526108c0565b83831015610866576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b838303848203600082821061087b578261087d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806108f2836040516020016108de9190610d04565b604051602081830303815290604052610952565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661094c576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610968929190610d17565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109c65781518352602092830192909101906001016109a7565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146109f157600080fd5b50565b60008060008060608587031215610a0a57600080fd5b8435610a15816109cf565b935060208501359250604085013567ffffffffffffffff80821115610a3957600080fd5b818701915087601f830112610a4d57600080fd5b813581811115610a5c57600080fd5b886020828501011115610a6e57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610ad057610ad0610a7d565b60405290565b6000610120808385031215610aea57600080fd5b6040516040810181811067ffffffffffffffff82111715610b0d57610b0d610a7d565b6040528335610b1b816109cf565b81526020603f85018613610b2e57600080fd5b610b36610aac565b928501928087851115610b4857600080fd5b8287015b85811015610b635780358352918301918301610b4c565b509183019190915250949350505050565b600060208284031215610b8657600080fd5b81356108c0816109cf565b6000610100808385031215610ba557600080fd5b83601f840112610bb457600080fd5b610bbc610aac565b908301908085831115610bce57600080fd5b845b83811015610be8578051835260209283019201610bd0565b5095945050505050565b600060208284031215610c0457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610cea5760208185018101518683015201610cd0565b81811115610cf9576000828601525b509290920192915050565b6000815260006108c06001830184610cc9565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610d9a600e830184610cc9565b94935050505056fea2646970667358221220679ad7597a92dea92eb7f10a6886e12b59a650617ac7221e0893992251df14d964736f6c634300080a0033"; type ERC20BalanceTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20BalanceTier__factory.ts b/src/typechain/factories/ERC20BalanceTier__factory.ts index f194cc3..9fb40cd 100644 --- a/src/typechain/factories/ERC20BalanceTier__factory.ts +++ b/src/typechain/factories/ERC20BalanceTier__factory.ts @@ -73,6 +73,19 @@ const _abi = [ name: "InitializeValueTier", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -193,7 +206,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610cc3806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610888565b60405180910390f35b61008261007d3660046108df565b6100fa565b005b6100826100923660046109c1565b610161565b6100aa6100a5366004610a5f565b61035e565b604051908152602001610066565b6100c0610869565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff16610414565b8060200190518101906100f59190610a7c565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166101a85760005474010000000000000000000000000000000000000000900460ff16156101ac565b303b155b610238576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b6000547501000000000000000000000000000000000000000000900460ff1615801561029f57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b6102ac8260200151610442565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035a57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061040e60006104096103706100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104049190610add565b6105db565b610629565b92915050565b606061040e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6106c9565b60005473ffffffffffffffffffffffffffffffffffffffff161561046857610468610af6565b6000805b6008811015610516578183826008811061048857610488610b25565b602002015110156104f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061050757610507610b25565b6020020151915060010161046c565b505060006105428260405160200161052e9190610888565b6040516020818303038152906040526107b2565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561061f578381600881106105fa576105fa610b25565b602002015183101561060d57905061040e565b8061061781610b54565b9150506105df565b5060089392505050565b6000816008811115610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806106e85750506040805160208101909152600081526107ab565b808411156107065750506040805160208101909152600081526107ab565b83831015610751576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b83830384820360008282106107665782610768565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806107dd836040516020016107c99190610bef565b60405160208183030381529060405261083d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610837576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610853929190610c02565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156108b1578151835260209283019290910190600101610892565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146108dc57600080fd5b50565b600080600080606085870312156108f557600080fd5b8435610900816108ba565b935060208501359250604085013567ffffffffffffffff8082111561092457600080fd5b818701915087601f83011261093857600080fd5b81358181111561094757600080fd5b88602082850101111561095957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156109bb576109bb610968565b60405290565b60006101208083850312156109d557600080fd5b6040516040810181811067ffffffffffffffff821117156109f8576109f8610968565b6040528335610a06816108ba565b81526020603f85018613610a1957600080fd5b610a21610997565b928501928087851115610a3357600080fd5b8287015b85811015610a4e5780358352918301918301610a37565b509183019190915250949350505050565b600060208284031215610a7157600080fd5b81356107ab816108ba565b6000610100808385031215610a9057600080fd5b83601f840112610a9f57600080fd5b610aa7610997565b908301908085831115610ab957600080fd5b845b83811015610ad3578051835260209283019201610abb565b5095945050505050565b600060208284031215610aef57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610bad577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610bd55760208185018101518683015201610bbb565b81811115610be4576000828601525b509290920192915050565b6000815260006107ab6001830184610bb4565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610c85600e830184610bb4565b94935050505056fea2646970667358221220357d760f9dd4cc0e0a228e340d951502a72616fefae3f7afd98c93ffdb1c439464736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610dd8806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061099d565b60405180910390f35b61008261007d3660046109f4565b6100fa565b005b610082610092366004610ad6565b610161565b6100aa6100a5366004610b74565b6102a9565b604051908152602001610066565b6100c061097e565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff1661035f565b8060200190518101906100f59190610b91565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061016d600161038d565b905080156101b657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6101c38260200151610557565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061035960006103546102bb6100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190610bf2565b6106f0565b61073e565b92915050565b60606103598260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107de565b600080547501000000000000000000000000000000000000000000900460ff1615610458578160ff1660011480156103c45750303b155b610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff161561057d5761057d610c0b565b6000805b600881101561062b578183826008811061059d5761059d610c3a565b6020020151101561060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061061c5761061c610c3a565b60200201519150600101610581565b5050600061065782604051602001610643919061099d565b6040516020818303038152906040526108c7565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107345783816008811061070f5761070f610c3a565b6020020151831015610722579050610359565b8061072c81610c69565b9150506106f4565b5060089392505050565b60008160088111156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806107fd5750506040805160208101909152600081526108c0565b8084111561081b5750506040805160208101909152600081526108c0565b83831015610866576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b838303848203600082821061087b578261087d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806108f2836040516020016108de9190610d04565b604051602081830303815290604052610952565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661094c576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610968929190610d17565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109c65781518352602092830192909101906001016109a7565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146109f157600080fd5b50565b60008060008060608587031215610a0a57600080fd5b8435610a15816109cf565b935060208501359250604085013567ffffffffffffffff80821115610a3957600080fd5b818701915087601f830112610a4d57600080fd5b813581811115610a5c57600080fd5b886020828501011115610a6e57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610ad057610ad0610a7d565b60405290565b6000610120808385031215610aea57600080fd5b6040516040810181811067ffffffffffffffff82111715610b0d57610b0d610a7d565b6040528335610b1b816109cf565b81526020603f85018613610b2e57600080fd5b610b36610aac565b928501928087851115610b4857600080fd5b8287015b85811015610b635780358352918301918301610b4c565b509183019190915250949350505050565b600060208284031215610b8657600080fd5b81356108c0816109cf565b6000610100808385031215610ba557600080fd5b83601f840112610bb457600080fd5b610bbc610aac565b908301908085831115610bce57600080fd5b845b83811015610be8578051835260209283019201610bd0565b5095945050505050565b600060208284031215610c0457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610cea5760208185018101518683015201610cd0565b81811115610cf9576000828601525b509290920192915050565b6000815260006108c06001830184610cc9565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610d9a600e830184610cc9565b94935050505056fea2646970667358221220679ad7597a92dea92eb7f10a6886e12b59a650617ac7221e0893992251df14d964736f6c634300080a0033"; type ERC20BalanceTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20BurnableUpgradeable__factory.ts b/src/typechain/factories/ERC20BurnableUpgradeable__factory.ts index ecf6c4a..dce0efd 100644 --- a/src/typechain/factories/ERC20BurnableUpgradeable__factory.ts +++ b/src/typechain/factories/ERC20BurnableUpgradeable__factory.ts @@ -35,6 +35,19 @@ const _abi = [ name: "Approval", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ diff --git a/src/typechain/factories/ERC20Pull__factory.ts b/src/typechain/factories/ERC20Pull__factory.ts deleted file mode 100644 index 390a7eb..0000000 --- a/src/typechain/factories/ERC20Pull__factory.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { ERC20Pull, ERC20PullInterface } from "../ERC20Pull"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "tokenSender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "ERC20PullInitialize", - type: "event", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount_", - type: "uint256", - }, - ], - name: "pullERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610530806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063b7a3c82814610030575b600080fd5b61004361003e366004610426565b610045565b005b6000546001546100709173ffffffffffffffffffffffffffffffffffffffff91821691163084610073565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261010890859061010e565b50505050565b6000610170826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166102249092919063ffffffff16565b80519091501561021f578080602001905181019061018e919061043f565b61021f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b505050565b6060610233848460008561023d565b90505b9392505050565b6060824710156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610216565b73ffffffffffffffffffffffffffffffffffffffff85163b61034d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610216565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610376919061048d565b60006040518083038185875af1925050503d80600081146103b3576040519150601f19603f3d011682016040523d82523d6000602084013e6103b8565b606091505b50915091506103c88282866103d3565b979650505050505050565b606083156103e2575081610236565b8251156103f25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021691906104a9565b60006020828403121561043857600080fd5b5035919050565b60006020828403121561045157600080fd5b8151801515811461023657600080fd5b60005b8381101561047c578181015183820152602001610464565b838111156101085750506000910152565b6000825161049f818460208701610461565b9190910192915050565b60208152600082518060208401526104c8816040850160208701610461565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220fc84a451a48f5bd0ce70646e55347ac1ef9eccd69e0a86e67d2e94e0ff2848a164736f6c634300080a0033"; - -type ERC20PullConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20PullConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20Pull__factory extends ContractFactory { - constructor(...args: ERC20PullConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC20Pull { - return super.attach(address) as ERC20Pull; - } - connect(signer: Signer): ERC20Pull__factory { - return super.connect(signer) as ERC20Pull__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20PullInterface { - return new utils.Interface(_abi) as ERC20PullInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20Pull { - return new Contract(address, _abi, signerOrProvider) as ERC20Pull; - } -} diff --git a/src/typechain/factories/ERC20PulleeTest__factory.ts b/src/typechain/factories/ERC20PulleeTest__factory.ts index b38664b..1adc754 100644 --- a/src/typechain/factories/ERC20PulleeTest__factory.ts +++ b/src/typechain/factories/ERC20PulleeTest__factory.ts @@ -135,7 +135,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220a9d4815901afb4b4e18e59f30f4f9edbe29e276f327d042ef0a58031b9d42aa964736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212208bcf37f3b61286629353c09abb58fc2dbbe1c4ad47ef6f0133312ffb666e209c64736f6c634300080a0033"; type ERC20PulleeTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20Redeem__factory.ts b/src/typechain/factories/ERC20Redeem__factory.ts index 0e3535b..04ea06e 100644 --- a/src/typechain/factories/ERC20Redeem__factory.ts +++ b/src/typechain/factories/ERC20Redeem__factory.ts @@ -31,6 +31,19 @@ const _abi = [ name: "Approval", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -373,7 +386,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea2646970667358221220e777e1013a6937b8182b0e07189344f22299097b11f6cf3b6031ca75493c679164736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea264697066735822122075ccbebca57e8d2b57cb3107f97553d20571f4106aa852796a4696fb85886ed064736f6c634300080a0033"; type ERC20RedeemConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20TransferTierFactory__factory.ts b/src/typechain/factories/ERC20TransferTierFactory__factory.ts index 38b423d..4c20ea2 100644 --- a/src/typechain/factories/ERC20TransferTierFactory__factory.ts +++ b/src/typechain/factories/ERC20TransferTierFactory__factory.ts @@ -137,7 +137,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b611461806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea2646970667358221220595000413c44d9b72a212da798ce433e335b4cf68b140efef65580c0638e571464736f6c634300080a0033608060405234801561001057600080fd5b50611441806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610f5a565b60405180910390f35b61008261007d366004610fb1565b6100fa565b005b610082610092366004611093565b610210565b6100aa6100a5366004611131565b61040d565b604051908152602001610066565b6100c0610f3b565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff1661048a565b8060200190518101906100f5919061114e565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101748561040d565b9050600061018282436104b8565b9050610190828287436104f2565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906111af565b60405180910390a1610208868287878761051f565b505050505050565b6001547501000000000000000000000000000000000000000000900460ff166102575760015474010000000000000000000000000000000000000000900460ff161561025b565b303b155b6102e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b6001547501000000000000000000000000000000000000000000900460ff1615801561034e57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61035b8260200151610642565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561040957600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205461045d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610484565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606104848260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107db565b6000805b60088110156104e857828160200285901c63ffffffff1611156104e0579050610484565b6001016104bc565b5060089392505050565b600083831061050c57610507858585856108c4565b610516565b610516858461096a565b95945050505050565b8383116105a5573373ffffffffffffffffffffffffffffffffffffffff8616146105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006105af6100b8565b905060006105bd8287610a0a565b905060006105cb8387610a0a565b9050818114156105dd5750505061063b565b818111156106115760025461060c9073ffffffffffffffffffffffffffffffffffffffff163330858503610a3b565b610637565b6002546106379073ffffffffffffffffffffffffffffffffffffffff1633838503610b1d565b5050505b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff161561066857610668611235565b6000805b6008811015610716578183826008811061068857610688611264565b602002015110156106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061070757610707611264565b6020020151915060010161066c565b505060006107428260405160200161072e9190610f5a565b604051602081830303815290604052610b78565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b806107fa5750506040805160208101909152600081526108bd565b808411156108185750506040805160208101909152600081526108bd565b83831015610863576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b8383038482036000828210610878578261087a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b8581101561095e5763ffffffff6020820290811b199890981685891b17979150600101610936565b50959695505050505050565b60008160088111156109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610a1a5760006108bd565b826001830360088110610a2f57610a2f611264565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b179085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c03565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b739084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a95565b505050565b600080610ba383604051602001610b8f91906112bf565b604051602081830303815290604052610d0f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610bfd576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610c65826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610d3b9092919063ffffffff16565b805190915015610b735780806020019051810190610c8391906112e5565b610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610d25929190611307565b6040516020818303038152906040529050919050565b6060610d4a8484600085610d52565b949350505050565b606082471015610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e8b919061139e565b60006040518083038185875af1925050503d8060008114610ec8576040519150601f19603f3d011682016040523d82523d6000602084013e610ecd565b606091505b5091509150610edd828286610ee8565b979650505050505050565b60608315610ef75750816108bd565b825115610f075782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906113ba565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610f83578151835260209283019290910190600101610f64565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fae57600080fd5b50565b60008060008060608587031215610fc757600080fd5b8435610fd281610f8c565b935060208501359250604085013567ffffffffffffffff80821115610ff657600080fd5b818701915087601f83011261100a57600080fd5b81358181111561101957600080fd5b88602082850101111561102b57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561108d5761108d61103a565b60405290565b60006101208083850312156110a757600080fd5b6040516040810181811067ffffffffffffffff821117156110ca576110ca61103a565b60405283356110d881610f8c565b81526020603f850186136110eb57600080fd5b6110f3611069565b92850192808785111561110557600080fd5b8287015b858110156111205780358352918301918301611109565b509183019190915250949350505050565b60006020828403121561114357600080fd5b81356108bd81610f8c565b600061010080838503121561116257600080fd5b83601f84011261117157600080fd5b611179611069565b90830190808583111561118b57600080fd5b845b838110156111a557805183526020928301920161118d565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156112ae578181015183820152602001611296565b83811115610b175750506000910152565b60008152600082516112d8816001850160208701611293565b9190910160010192915050565b6000602082840312156112f757600080fd5b815180151581146108bd57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161139081600e850160208701611293565b91909101600e019392505050565b600082516113b0818460208701611293565b9190910192915050565b60208152600082518060208401526113d9816040850160208701611293565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212206ec8ffe9592912187417d18bec7de32180944a21c3e48048c4a3bad19700b40b64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b611575806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea2646970667358221220d88afd1c7c31b92d7ddbd84edc65d86d4eb9e42c2fc11a10679380769eb04e1664736f6c634300080a0033608060405234801561001057600080fd5b50611555806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061106e565b60405180910390f35b61008261007d3660046110c5565b6100fa565b005b6100826100923660046111a7565b610210565b6100aa6100a5366004611245565b610357565b604051908152602001610066565b6100c061104f565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff166103d4565b8060200190518101906100f59190611262565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061017485610357565b905060006101828243610402565b90506101908282874361043c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906112c3565b60405180910390a16102088682878787610469565b505050505050565b600061021c600161058c565b9050801561026557600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6102728260200151610756565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035357600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546103a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103ce565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606103ce8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ef565b6000805b600881101561043257828160200285901c63ffffffff16111561042a5790506103ce565b600101610406565b5060089392505050565b600083831061045657610451858585856109d8565b610460565b6104608584610a7e565b95945050505050565b8383116104ef573373ffffffffffffffffffffffffffffffffffffffff8616146104ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006104f96100b8565b905060006105078287610b1e565b905060006105158387610b1e565b90508181141561052757505050610585565b8181111561055b576002546105569073ffffffffffffffffffffffffffffffffffffffff163330858503610b4f565b610581565b6002546105819073ffffffffffffffffffffffffffffffffffffffff1633838503610c31565b5050505b5050505050565b6001546000907501000000000000000000000000000000000000000000900460ff1615610659578160ff1660011480156105c55750303b155b610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506000919050565b60015460ff808416740100000000000000000000000000000000000000009092041610610708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506001805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117815590565b60015473ffffffffffffffffffffffffffffffffffffffff161561077c5761077c611349565b6000805b600881101561082a578183826008811061079c5761079c611378565b60200201511015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061081b5761081b611378565b60200201519150600101610780565b5050600061085682604051602001610842919061106e565b604051602081830303815290604052610c8c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b8061090e5750506040805160208101909152600081526109d1565b8084111561092c5750506040805160208101909152600081526109d1565b83831015610977576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b838303848203600082821061098c578261098e565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b85811015610a725763ffffffff6020820290811b199890981685891b17979150600101610a4a565b50959695505050505050565b6000816008811115610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610b2e5760006109d1565b826001830360088110610b4357610b43611378565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c2b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d17565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c879084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ba9565b505050565b600080610cb783604051602001610ca391906113d3565b604051602081830303815290604052610e23565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610d11576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610d79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e4f9092919063ffffffff16565b805190915015610c875780806020019051810190610d9791906113f9565b610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610e3992919061141b565b6040516020818303038152906040529050919050565b6060610e5e8484600085610e66565b949350505050565b606082471015610ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610f76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f9f91906114b2565b60006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5091509150610ff1828286610ffc565b979650505050505050565b6060831561100b5750816109d1565b82511561101b5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906114ce565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015611097578151835260209283019290910190600101611078565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146110c257600080fd5b50565b600080600080606085870312156110db57600080fd5b84356110e6816110a0565b935060208501359250604085013567ffffffffffffffff8082111561110a57600080fd5b818701915087601f83011261111e57600080fd5b81358181111561112d57600080fd5b88602082850101111561113f57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156111a1576111a161114e565b60405290565b60006101208083850312156111bb57600080fd5b6040516040810181811067ffffffffffffffff821117156111de576111de61114e565b60405283356111ec816110a0565b81526020603f850186136111ff57600080fd5b61120761117d565b92850192808785111561121957600080fd5b8287015b85811015611234578035835291830191830161121d565b509183019190915250949350505050565b60006020828403121561125757600080fd5b81356109d1816110a0565b600061010080838503121561127657600080fd5b83601f84011261128557600080fd5b61128d61117d565b90830190808583111561129f57600080fd5b845b838110156112b95780518352602092830192016112a1565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113c25781810151838201526020016113aa565b83811115610c2b5750506000910152565b60008152600082516113ec8160018501602087016113a7565b9190910160010192915050565b60006020828403121561140b57600080fd5b815180151581146109d157600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516114a481600e8501602087016113a7565b91909101600e019392505050565b600082516114c48184602087016113a7565b9190910192915050565b60208152600082518060208401526114ed8160408501602087016113a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200b36d31ceb93426269f8b038f947a6654d343a9d2d121c3e2b69ac9d8f3119b164736f6c634300080a0033"; type ERC20TransferTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20TransferTier__factory.ts b/src/typechain/factories/ERC20TransferTier__factory.ts index 6c3c639..f9c4b93 100644 --- a/src/typechain/factories/ERC20TransferTier__factory.ts +++ b/src/typechain/factories/ERC20TransferTier__factory.ts @@ -73,6 +73,19 @@ const _abi = [ name: "InitializeValueTier", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -193,7 +206,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611441806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b6040516100669190610f5a565b60405180910390f35b61008261007d366004610fb1565b6100fa565b005b610082610092366004611093565b610210565b6100aa6100a5366004611131565b61040d565b604051908152602001610066565b6100c0610f3b565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff1661048a565b8060200190518101906100f5919061114e565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101748561040d565b9050600061018282436104b8565b9050610190828287436104f2565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906111af565b60405180910390a1610208868287878761051f565b505050505050565b6001547501000000000000000000000000000000000000000000900460ff166102575760015474010000000000000000000000000000000000000000900460ff161561025b565b303b155b6102e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b6001547501000000000000000000000000000000000000000000900460ff1615801561034e57600180547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61035b8260200151610642565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561040957600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205461045d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610484565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606104848260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107db565b6000805b60088110156104e857828160200285901c63ffffffff1611156104e0579050610484565b6001016104bc565b5060089392505050565b600083831061050c57610507858585856108c4565b610516565b610516858461096a565b95945050505050565b8383116105a5573373ffffffffffffffffffffffffffffffffffffffff8616146105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006105af6100b8565b905060006105bd8287610a0a565b905060006105cb8387610a0a565b9050818114156105dd5750505061063b565b818111156106115760025461060c9073ffffffffffffffffffffffffffffffffffffffff163330858503610a3b565b610637565b6002546106379073ffffffffffffffffffffffffffffffffffffffff1633838503610b1d565b5050505b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff161561066857610668611235565b6000805b6008811015610716578183826008811061068857610688611264565b602002015110156106f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061070757610707611264565b6020020151915060010161066c565b505060006107428260405160200161072e9190610f5a565b604051602081830303815290604052610b78565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b806107fa5750506040805160208101909152600081526108bd565b808411156108185750506040805160208101909152600081526108bd565b83831015610863576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b8383038482036000828210610878578261087a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610932576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b8581101561095e5763ffffffff6020820290811b199890981685891b17979150600101610936565b50959695505050505050565b60008160088111156109d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610a1a5760006108bd565b826001830360088110610a2f57610a2f611264565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610b179085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610c03565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610b739084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610a95565b505050565b600080610ba383604051602001610b8f91906112bf565b604051602081830303815290604052610d0f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610bfd576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610c65826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610d3b9092919063ffffffff16565b805190915015610b735780806020019051810190610c8391906112e5565b610b73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610d25929190611307565b6040516020818303038152906040529050919050565b6060610d4a8484600085610d52565b949350505050565b606082471015610de4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610e62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610e8b919061139e565b60006040518083038185875af1925050503d8060008114610ec8576040519150601f19603f3d011682016040523d82523d6000602084013e610ecd565b606091505b5091509150610edd828286610ee8565b979650505050505050565b60608315610ef75750816108bd565b825115610f075782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906113ba565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610f83578151835260209283019290910190600101610f64565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610fae57600080fd5b50565b60008060008060608587031215610fc757600080fd5b8435610fd281610f8c565b935060208501359250604085013567ffffffffffffffff80821115610ff657600080fd5b818701915087601f83011261100a57600080fd5b81358181111561101957600080fd5b88602082850101111561102b57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561108d5761108d61103a565b60405290565b60006101208083850312156110a757600080fd5b6040516040810181811067ffffffffffffffff821117156110ca576110ca61103a565b60405283356110d881610f8c565b81526020603f850186136110eb57600080fd5b6110f3611069565b92850192808785111561110557600080fd5b8287015b858110156111205780358352918301918301611109565b509183019190915250949350505050565b60006020828403121561114357600080fd5b81356108bd81610f8c565b600061010080838503121561116257600080fd5b83601f84011261117157600080fd5b611179611069565b90830190808583111561118b57600080fd5b845b838110156111a557805183526020928301920161118d565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156112ae578181015183820152602001611296565b83811115610b175750506000910152565b60008152600082516112d8816001850160208701611293565b9190910160010192915050565b6000602082840312156112f757600080fd5b815180151581146108bd57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161139081600e850160208701611293565b91909101600e019392505050565b600082516113b0818460208701611293565b9190910192915050565b60208152600082518060208401526113d9816040850160208701611293565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212206ec8ffe9592912187417d18bec7de32180944a21c3e48048c4a3bad19700b40b64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611555806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061106e565b60405180910390f35b61008261007d3660046110c5565b6100fa565b005b6100826100923660046111a7565b610210565b6100aa6100a5366004611245565b610357565b604051908152602001610066565b6100c061104f565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff166103d4565b8060200190518101906100f59190611262565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061017485610357565b905060006101828243610402565b90506101908282874361043c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906112c3565b60405180910390a16102088682878787610469565b505050505050565b600061021c600161058c565b9050801561026557600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6102728260200151610756565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035357600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546103a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103ce565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606103ce8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ef565b6000805b600881101561043257828160200285901c63ffffffff16111561042a5790506103ce565b600101610406565b5060089392505050565b600083831061045657610451858585856109d8565b610460565b6104608584610a7e565b95945050505050565b8383116104ef573373ffffffffffffffffffffffffffffffffffffffff8616146104ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006104f96100b8565b905060006105078287610b1e565b905060006105158387610b1e565b90508181141561052757505050610585565b8181111561055b576002546105569073ffffffffffffffffffffffffffffffffffffffff163330858503610b4f565b610581565b6002546105819073ffffffffffffffffffffffffffffffffffffffff1633838503610c31565b5050505b5050505050565b6001546000907501000000000000000000000000000000000000000000900460ff1615610659578160ff1660011480156105c55750303b155b610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506000919050565b60015460ff808416740100000000000000000000000000000000000000009092041610610708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506001805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117815590565b60015473ffffffffffffffffffffffffffffffffffffffff161561077c5761077c611349565b6000805b600881101561082a578183826008811061079c5761079c611378565b60200201511015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061081b5761081b611378565b60200201519150600101610780565b5050600061085682604051602001610842919061106e565b604051602081830303815290604052610c8c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b8061090e5750506040805160208101909152600081526109d1565b8084111561092c5750506040805160208101909152600081526109d1565b83831015610977576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b838303848203600082821061098c578261098e565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b85811015610a725763ffffffff6020820290811b199890981685891b17979150600101610a4a565b50959695505050505050565b6000816008811115610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610b2e5760006109d1565b826001830360088110610b4357610b43611378565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c2b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d17565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c879084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ba9565b505050565b600080610cb783604051602001610ca391906113d3565b604051602081830303815290604052610e23565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610d11576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610d79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e4f9092919063ffffffff16565b805190915015610c875780806020019051810190610d9791906113f9565b610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610e3992919061141b565b6040516020818303038152906040529050919050565b6060610e5e8484600085610e66565b949350505050565b606082471015610ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610f76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f9f91906114b2565b60006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5091509150610ff1828286610ffc565b979650505050505050565b6060831561100b5750816109d1565b82511561101b5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906114ce565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015611097578151835260209283019290910190600101611078565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146110c257600080fd5b50565b600080600080606085870312156110db57600080fd5b84356110e6816110a0565b935060208501359250604085013567ffffffffffffffff8082111561110a57600080fd5b818701915087601f83011261111e57600080fd5b81358181111561112d57600080fd5b88602082850101111561113f57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156111a1576111a161114e565b60405290565b60006101208083850312156111bb57600080fd5b6040516040810181811067ffffffffffffffff821117156111de576111de61114e565b60405283356111ec816110a0565b81526020603f850186136111ff57600080fd5b61120761117d565b92850192808785111561121957600080fd5b8287015b85811015611234578035835291830191830161121d565b509183019190915250949350505050565b60006020828403121561125757600080fd5b81356109d1816110a0565b600061010080838503121561127657600080fd5b83601f84011261128557600080fd5b61128d61117d565b90830190808583111561129f57600080fd5b845b838110156112b95780518352602092830192016112a1565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113c25781810151838201526020016113aa565b83811115610c2b5750506000910152565b60008152600082516113ec8160018501602087016113a7565b9190910160010192915050565b60006020828403121561140b57600080fd5b815180151581146109d157600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516114a481600e8501602087016113a7565b91909101600e019392505050565b600082516114c48184602087016113a7565b9190910192915050565b60208152600082518060208401526114ed8160408501602087016113a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200b36d31ceb93426269f8b038f947a6654d343a9d2d121c3e2b69ac9d8f3119b164736f6c634300080a0033"; type ERC20TransferTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20Upgradeable__factory.ts b/src/typechain/factories/ERC20Upgradeable__factory.ts index 2bd9a36..082f40a 100644 --- a/src/typechain/factories/ERC20Upgradeable__factory.ts +++ b/src/typechain/factories/ERC20Upgradeable__factory.ts @@ -34,6 +34,19 @@ const _abi = [ name: "Approval", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -282,7 +295,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610b6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6035545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60606036805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606037805461020f90610aa1565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212206c27f9478aa5afde3811a219e43ef1b776a53c801700d18644daffc015f8d00e64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610b6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6035545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60606036805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606037805461020f90610aa1565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220a254200b7db7e30cc57bd94a5aafe4c2ebf9a682a2b85b2ec16a506c45280dc264736f6c634300080a0033"; type ERC20UpgradeableConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20__factory.ts b/src/typechain/factories/ERC20__factory.ts index 5842ed9..2ee6b98 100644 --- a/src/typechain/factories/ERC20__factory.ts +++ b/src/typechain/factories/ERC20__factory.ts @@ -295,7 +295,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000dfc38038062000dfc8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6a80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea26469706673582212200ac558ec96dd8de2cdeb74660e0e1080bf90c496240dace24818948a945cdf0964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162000dfc38038062000dfc8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6a80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea264697066735822122057571ed554a32aea26f29ccf298690cf69e2fb4560590b8f5c0934553a6caea864736f6c634300080a0033"; type ERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC721BalanceTierFactory__factory.ts b/src/typechain/factories/ERC721BalanceTierFactory__factory.ts index ebe0b66..0f1273f 100644 --- a/src/typechain/factories/ERC721BalanceTierFactory__factory.ts +++ b/src/typechain/factories/ERC721BalanceTierFactory__factory.ts @@ -124,7 +124,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060016000908155604051610024906100aa565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a1600280546001600160a01b0319166001600160a01b03929092169190911790556100b7565b610d438061086b83390190565b6107a5806100c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063ab43ea1f14610083578063fc91a89714610096575b600080fd5b6100596100543660046104d9565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046105c9565b61028d565b6100cf6100a4366004610667565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610330565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102bc919061068b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e791906106df565b6020604051808303816000875af1158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190610752565b92915050565b60008061033f838501856105c9565b6002549091506000906103679073ffffffffffffffffffffffffffffffffffffffff166103f7565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103bc90859060040161068b565b600060405180830381600087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104ec57600080fd5b823567ffffffffffffffff8082111561050457600080fd5b818501915085601f83011261051857600080fd5b81358181111561052757600080fd5b86602082850101111561053957600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561059e5761059e61054b565b60405290565b73ffffffffffffffffffffffffffffffffffffffff811681146105c657600080fd5b50565b60006101208083850312156105dd57600080fd5b6040516040810181811067ffffffffffffffff821117156106005761060061054b565b604052833561060e816105a4565b81526020603f8501861361062157600080fd5b61062961057a565b92850192808785111561063b57600080fd5b8287015b85811015610656578035835291830191830161063f565b509183019190915250949350505050565b60006020828403121561067957600080fd5b8135610684816105a4565b9392505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156106d5578251825291830191908301906001016106b8565b5050505092915050565b600060208083528351808285015260005b8181101561070c578581018301518582016040015282016106f0565b8181111561071e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561076457600080fd5b8151610684816105a456fea2646970667358221220209ec87fa7760f5db49683456a8ed70339b85afc804f2bec8876158245ded64664736f6c634300080a0033608060405234801561001057600080fd5b50610d23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906108e8565b60405180910390f35b61009d61009836600461093f565b61015a565b005b61009d6100ad366004610a21565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610abf565b6103be565b604051908152602001610081565b6101206108c9565b6000546101429073ffffffffffffffffffffffffffffffffffffffff16610474565b8060200190518101906101559190610adc565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166102085760005474010000000000000000000000000000000000000000900460ff161561020c565b303b155b610298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b6000547501000000000000000000000000000000000000000000900460ff161580156102ff57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61030c82602001516104a2565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156103ba57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061046e60006104696103d0610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610b3d565b61063b565b610689565b92915050565b606061046e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610729565b60005473ffffffffffffffffffffffffffffffffffffffff16156104c8576104c8610b56565b6000805b600881101561057657818382600881106104e8576104e8610b85565b60200201511015610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061056757610567610b85565b602002015191506001016104cc565b505060006105a28260405160200161058e91906108e8565b604051602081830303815290604052610812565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561067f5783816008811061065a5761065a610b85565b602002015183101561066d57905061046e565b8061067781610bb4565b91505061063f565b5060089392505050565b60008160088111156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061074857505060408051602081019091526000815261080b565b8084111561076657505060408051602081019091526000815261080b565b838310156107b1576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106107c657826107c8565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b60008061083d836040516020016108299190610c4f565b60405160208183030381529060405261089d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610897576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016108b3929190610c62565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109115781518352602092830192909101906001016108f2565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461093c57600080fd5b50565b6000806000806060858703121561095557600080fd5b84356109608161091a565b935060208501359250604085013567ffffffffffffffff8082111561098457600080fd5b818701915087601f83011261099857600080fd5b8135818111156109a757600080fd5b8860208285010111156109b957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610a1b57610a1b6109c8565b60405290565b6000610120808385031215610a3557600080fd5b6040516040810181811067ffffffffffffffff82111715610a5857610a586109c8565b6040528335610a668161091a565b81526020603f85018613610a7957600080fd5b610a816109f7565b928501928087851115610a9357600080fd5b8287015b85811015610aae5780358352918301918301610a97565b509183019190915250949350505050565b600060208284031215610ad157600080fd5b813561080b8161091a565b6000610100808385031215610af057600080fd5b83601f840112610aff57600080fd5b610b076109f7565b908301908085831115610b1957600080fd5b845b83811015610b33578051835260209283019201610b1b565b5095945050505050565b600060208284031215610b4f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610c0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610c355760208185018101518683015201610c1b565b81811115610c44576000828601525b509290920192915050565b60008152600061080b6001830184610c14565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610ce5600e830184610c14565b94935050505056fea264697066735822122004bdfaa709e0710cf4d55d305bc8a4895c540e85df7d66bb36040a9389f38d7564736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5060016000908155604051610024906100aa565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a1600280546001600160a01b0319166001600160a01b03929092169190911790556100b7565b610e588061086b83390190565b6107a5806100c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063ab43ea1f14610083578063fc91a89714610096575b600080fd5b6100596100543660046104d9565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046105c9565b61028d565b6100cf6100a4366004610667565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610330565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102bc919061068b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e791906106df565b6020604051808303816000875af1158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190610752565b92915050565b60008061033f838501856105c9565b6002549091506000906103679073ffffffffffffffffffffffffffffffffffffffff166103f7565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103bc90859060040161068b565b600060405180830381600087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104ec57600080fd5b823567ffffffffffffffff8082111561050457600080fd5b818501915085601f83011261051857600080fd5b81358181111561052757600080fd5b86602082850101111561053957600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561059e5761059e61054b565b60405290565b73ffffffffffffffffffffffffffffffffffffffff811681146105c657600080fd5b50565b60006101208083850312156105dd57600080fd5b6040516040810181811067ffffffffffffffff821117156106005761060061054b565b604052833561060e816105a4565b81526020603f8501861361062157600080fd5b61062961057a565b92850192808785111561063b57600080fd5b8287015b85811015610656578035835291830191830161063f565b509183019190915250949350505050565b60006020828403121561067957600080fd5b8135610684816105a4565b9392505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156106d5578251825291830191908301906001016106b8565b5050505092915050565b600060208083528351808285015260005b8181101561070c578581018301518582016040015282016106f0565b8181111561071e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561076457600080fd5b8151610684816105a456fea2646970667358221220ee8031f8b375d0ce7a21c04d37cb99921b259c746a31c9a9e39ebf0d33bd946c64736f6c634300080a0033608060405234801561001057600080fd5b50610e38806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906109fd565b60405180910390f35b61009d610098366004610a54565b61015a565b005b61009d6100ad366004610b36565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610bd4565b610309565b604051908152602001610081565b6101206109de565b6000546101429073ffffffffffffffffffffffffffffffffffffffff166103bf565b8060200190518101906101559190610bf1565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101cd60016103ed565b9050801561021657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b61022382602001516105b7565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561030557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103b960006103b461031b610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103af9190610c52565b610750565b61079e565b92915050565b60606103b98260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61083e565b600080547501000000000000000000000000000000000000000000900460ff16156104b8578160ff1660011480156104245750303b155b6104b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff16156105dd576105dd610c6b565b6000805b600881101561068b57818382600881106105fd576105fd610c9a565b6020020151101561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061067c5761067c610c9a565b602002015191506001016105e1565b505060006106b7826040516020016106a391906109fd565b604051602081830303815290604052610927565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107945783816008811061076f5761076f610c9a565b60200201518310156107825790506103b9565b8061078c81610cc9565b915050610754565b5060089392505050565b600081600881111561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061085d575050604080516020810190915260008152610920565b8084111561087b575050604080516020810190915260008152610920565b838310156108c6576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106108db57826108dd565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806109528360405160200161093e9190610d64565b6040516020818303038152906040526109b2565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166109ac576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109c8929190610d77565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610a26578151835260209283019290910190600101610a07565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a5157600080fd5b50565b60008060008060608587031215610a6a57600080fd5b8435610a7581610a2f565b935060208501359250604085013567ffffffffffffffff80821115610a9957600080fd5b818701915087601f830112610aad57600080fd5b813581811115610abc57600080fd5b886020828501011115610ace57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610b3057610b30610add565b60405290565b6000610120808385031215610b4a57600080fd5b6040516040810181811067ffffffffffffffff82111715610b6d57610b6d610add565b6040528335610b7b81610a2f565b81526020603f85018613610b8e57600080fd5b610b96610b0c565b928501928087851115610ba857600080fd5b8287015b85811015610bc35780358352918301918301610bac565b509183019190915250949350505050565b600060208284031215610be657600080fd5b813561092081610a2f565b6000610100808385031215610c0557600080fd5b83601f840112610c1457600080fd5b610c1c610b0c565b908301908085831115610c2e57600080fd5b845b83811015610c48578051835260209283019201610c30565b5095945050505050565b600060208284031215610c6457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610d4a5760208185018101518683015201610d30565b81811115610d59576000828601525b509290920192915050565b6000815260006109206001830184610d29565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610dfa600e830184610d29565b94935050505056fea26469706673582212201df98fdc602f8856c1708b5ffdd62deded81c2448096f94f1688be17793f49ca64736f6c634300080a0033"; type ERC721BalanceTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC721BalanceTier__factory.ts b/src/typechain/factories/ERC721BalanceTier__factory.ts index 514cf2f..09531d8 100644 --- a/src/typechain/factories/ERC721BalanceTier__factory.ts +++ b/src/typechain/factories/ERC721BalanceTier__factory.ts @@ -73,6 +73,19 @@ const _abi = [ name: "InitializeValueTier", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -206,7 +219,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610d23806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906108e8565b60405180910390f35b61009d61009836600461093f565b61015a565b005b61009d6100ad366004610a21565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610abf565b6103be565b604051908152602001610081565b6101206108c9565b6000546101429073ffffffffffffffffffffffffffffffffffffffff16610474565b8060200190518101906101559190610adc565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000547501000000000000000000000000000000000000000000900460ff166102085760005474010000000000000000000000000000000000000000900460ff161561020c565b303b155b610298576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b6000547501000000000000000000000000000000000000000000900460ff161580156102ff57600080547fffffffffffffffffffff0000ffffffffffffffffffffffffffffffffffffffff1675010100000000000000000000000000000000000000001790555b61030c82602001516104a2565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156103ba57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1690555b5050565b600061046e60006104696103d0610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa158015610440573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104649190610b3d565b61063b565b610689565b92915050565b606061046e8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610729565b60005473ffffffffffffffffffffffffffffffffffffffff16156104c8576104c8610b56565b6000805b600881101561057657818382600881106104e8576104e8610b85565b60200201511015610555576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061056757610567610b85565b602002015191506001016104cc565b505060006105a28260405160200161058e91906108e8565b604051602081830303815290604052610812565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b600881101561067f5783816008811061065a5761065a610b85565b602002015183101561066d57905061046e565b8061067781610bb4565b91505061063f565b5060089392505050565b60008160088111156106f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061074857505060408051602081019091526000815261080b565b8084111561076657505060408051602081019091526000815261080b565b838310156107b1576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106107c657826107c8565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b60008061083d836040516020016108299190610c4f565b60405160208183030381529060405261089d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610897576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016108b3929190610c62565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109115781518352602092830192909101906001016108f2565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff8116811461093c57600080fd5b50565b6000806000806060858703121561095557600080fd5b84356109608161091a565b935060208501359250604085013567ffffffffffffffff8082111561098457600080fd5b818701915087601f83011261099857600080fd5b8135818111156109a757600080fd5b8860208285010111156109b957600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610a1b57610a1b6109c8565b60405290565b6000610120808385031215610a3557600080fd5b6040516040810181811067ffffffffffffffff82111715610a5857610a586109c8565b6040528335610a668161091a565b81526020603f85018613610a7957600080fd5b610a816109f7565b928501928087851115610a9357600080fd5b8287015b85811015610aae5780358352918301918301610a97565b509183019190915250949350505050565b600060208284031215610ad157600080fd5b813561080b8161091a565b6000610100808385031215610af057600080fd5b83601f840112610aff57600080fd5b610b076109f7565b908301908085831115610b1957600080fd5b845b83811015610b33578051835260209283019201610b1b565b5095945050505050565b600060208284031215610b4f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610c0d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610c355760208185018101518683015201610c1b565b81811115610c44576000828601525b509290920192915050565b60008152600061080b6001830184610c14565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610ce5600e830184610c14565b94935050505056fea264697066735822122004bdfaa709e0710cf4d55d305bc8a4895c540e85df7d66bb36040a9389f38d7564736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610e38806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906109fd565b60405180910390f35b61009d610098366004610a54565b61015a565b005b61009d6100ad366004610b36565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610bd4565b610309565b604051908152602001610081565b6101206109de565b6000546101429073ffffffffffffffffffffffffffffffffffffffff166103bf565b8060200190518101906101559190610bf1565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101cd60016103ed565b9050801561021657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b61022382602001516105b7565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561030557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103b960006103b461031b610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103af9190610c52565b610750565b61079e565b92915050565b60606103b98260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61083e565b600080547501000000000000000000000000000000000000000000900460ff16156104b8578160ff1660011480156104245750303b155b6104b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff16156105dd576105dd610c6b565b6000805b600881101561068b57818382600881106105fd576105fd610c9a565b6020020151101561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061067c5761067c610c9a565b602002015191506001016105e1565b505060006106b7826040516020016106a391906109fd565b604051602081830303815290604052610927565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107945783816008811061076f5761076f610c9a565b60200201518310156107825790506103b9565b8061078c81610cc9565b915050610754565b5060089392505050565b600081600881111561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061085d575050604080516020810190915260008152610920565b8084111561087b575050604080516020810190915260008152610920565b838310156108c6576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106108db57826108dd565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806109528360405160200161093e9190610d64565b6040516020818303038152906040526109b2565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166109ac576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109c8929190610d77565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610a26578151835260209283019290910190600101610a07565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a5157600080fd5b50565b60008060008060608587031215610a6a57600080fd5b8435610a7581610a2f565b935060208501359250604085013567ffffffffffffffff80821115610a9957600080fd5b818701915087601f830112610aad57600080fd5b813581811115610abc57600080fd5b886020828501011115610ace57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610b3057610b30610add565b60405290565b6000610120808385031215610b4a57600080fd5b6040516040810181811067ffffffffffffffff82111715610b6d57610b6d610add565b6040528335610b7b81610a2f565b81526020603f85018613610b8e57600080fd5b610b96610b0c565b928501928087851115610ba857600080fd5b8287015b85811015610bc35780358352918301918301610bac565b509183019190915250949350505050565b600060208284031215610be657600080fd5b813561092081610a2f565b6000610100808385031215610c0557600080fd5b83601f840112610c1457600080fd5b610c1c610b0c565b908301908085831115610c2e57600080fd5b845b83811015610c48578051835260209283019201610c30565b5095945050505050565b600060208284031215610c6457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610d4a5760208185018101518683015201610d30565b81811115610d59576000828601525b509290920192915050565b6000815260006109206001830184610d29565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610dfa600e830184610d29565b94935050505056fea26469706673582212201df98fdc602f8856c1708b5ffdd62deded81c2448096f94f1688be17793f49ca64736f6c634300080a0033"; type ERC721BalanceTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC721Upgradeable__factory.ts b/src/typechain/factories/ERC721Upgradeable__factory.ts index 0f1a35d..9a017d9 100644 --- a/src/typechain/factories/ERC721Upgradeable__factory.ts +++ b/src/typechain/factories/ERC721Upgradeable__factory.ts @@ -59,6 +59,19 @@ const _abi = [ name: "ApprovalForAll", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -342,7 +355,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1f57508373ffffffffffffffffffffffffffffffffffffffff16610c07846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c5c575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea2646970667358221220f0faadabc95d4785025da8974186e87deb20ee0fc1508bdc115f6ac9b15b5dfd64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea26469706673582212206d6095494c27553541fe0f0e51f0544e9a2d2bf8f3d6c40b03226902630ce7cb64736f6c634300080a0033"; type ERC721UpgradeableConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC721__factory.ts b/src/typechain/factories/ERC721__factory.ts index bc1b8c1..9c682f0 100644 --- a/src/typechain/factories/ERC721__factory.ts +++ b/src/typechain/factories/ERC721__factory.ts @@ -355,7 +355,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001bbe38038062001bbe8339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61192c80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1f57508373ffffffffffffffffffffffffffffffffffffffff16610c07846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b80610c5c575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610e459084906117b9565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea264697066735822122065cdd12ee76692514c0985b653e17625a305f48aa0ca7aba2916a06b5b3ddb5964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162001bbe38038062001bbe8339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61192c80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610e459084906117b9565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea2646970667358221220965f8e30f221ade5909f6bc82257936f550de7bed348f46fba466273d3096c1a64736f6c634300080a0033"; type ERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20Factory__factory.ts b/src/typechain/factories/EmissionsERC20Factory__factory.ts index 6287162..cb44918 100644 --- a/src/typechain/factories/EmissionsERC20Factory__factory.ts +++ b/src/typechain/factories/EmissionsERC20Factory__factory.ts @@ -10,7 +10,13 @@ import type { const _abi = [ { - inputs: [], + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], stateMutability: "nonpayable", type: "constructor", }, @@ -119,16 +125,6 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", name: "vmStateConfig", @@ -186,7 +182,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b614aac8061110183390190565b60805161103d6100c4600039600081816093015261037a015261103d6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638dbdd926146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee919061088c565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610a08565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610a1b565b92915050565b60008061037183850185610d30565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f814e3a8e00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063814e3a8e906103f3908590600401610f33565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201606081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b8035801515811461050b57600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261064a57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261068857600080fd5b830160208101925035905067ffffffffffffffff8111156106a857600080fd5b8036038313156106b757600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b36038313156106b757600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156107a057600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000608083016107cd8384610707565b608086528281845260a08701905060a08260051b88010193508260005b83811015610845577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608987030183526108238286610653565b61082e8882846106be565b9750505060209283019291909101906001016107ea565b50505050506108576020840184610707565b858303602087015261086a83828461076e565b9250505060408301356040850152606083013560608501528091505092915050565b6020815261089982610606565b1515602082015260006108af6020840184610616565b606060408401526108c08182610653565b6080808601526108d5610100860182846106be565b9150506108e56020830183610653565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a087015261091a8382846106be565b92505050604082013561092c816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095e6040860186610616565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261099481836107bd565b95945050505050565b6000815180845260005b818110156109c3576020818501810151868301820152016109a7565b818111156109d5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd602083018461099d565b600060208284031215610a2d57600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610a8a57610a8a610a38565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8a57610a8a610a38565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610afa57610afa610a38565b604052919050565b600067ffffffffffffffff831115610b1c57610b1c610a38565b610b4d60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ab3565b9050828152838383011115610b6157600080fd5b828260208301376000602084830101529392505050565b600082601f830112610b8957600080fd5b6105bd83833560208501610b02565b600067ffffffffffffffff821115610bb257610bb2610a38565b5060051b60200190565b600082601f830112610bcd57600080fd5b81356020610be2610bdd83610b98565b610ab3565b82815260059290921b84018101918181019086841115610c0157600080fd5b8286015b84811015610c1c5780358352918301918301610c05565b509695505050505050565b600060808284031215610c3957600080fd5b610c41610a67565b9050813567ffffffffffffffff80821115610c5b57600080fd5b818401915084601f830112610c6f57600080fd5b81356020610c7f610bdd83610b98565b82815260059290921b84018101918181019088841115610c9e57600080fd5b8286015b84811015610ceb57803586811115610cba5760008081fd5b8701603f81018b13610ccc5760008081fd5b610cdd8b8683013560408401610b02565b845250918301918301610ca2565b5086525085810135935082841115610d0257600080fd5b610d0e87858801610bbc565b8186015250505050604082013560408201526060820135606082015292915050565b600060208284031215610d4257600080fd5b813567ffffffffffffffff80821115610d5a57600080fd5b9083019060608286031215610d6e57600080fd5b610d76610a90565b610d7f83610606565b8152602083013582811115610d9357600080fd5b830160808188031215610da557600080fd5b610dad610a67565b813584811115610dbc57600080fd5b610dc889828501610b78565b825250602082013584811115610ddd57600080fd5b610de989828501610b78565b6020830152506040820135610dfd816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e2857600080fd5b610e3487828601610c27565b60408301525095945050505050565b600081518084526020808501945080840160005b83811015610e7357815187529582019590820190600101610e57565b509495945050505050565b60006080830182516080855281815180845260a08701915060a08160051b88010193506020808401935060005b82811015610ef7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60898703018452610ee586865161099d565b95509381019392810192600101610eab565b5080870151935087850381890152505050610f128282610e43565b91505060408301516040850152606083015160608501528091505092915050565b6020815281511515602082015260006020830151606060408401528051608080850152610f6461010085018261099d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f9f828261099d565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08482030160608501526109948183610e7e56fea26469706673582212209af47326321ac949c76d4f1a95661ebfe9a4e83cacd7434223b749d40ad3d63f64736f6c634300080a003360a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516149db620000d16000396000818161196c01526119a701526149db6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063814e3a8e116100b2578063a9059cbb11610081578063dd62ed3e11610066578063dd62ed3e1461026c578063e053ea31146102b2578063ea345540146102e857600080fd5b8063a9059cbb14610246578063bb1757cf1461025957600080fd5b8063814e3a8e146102035780638a200fff1461021857806395d89b411461022b578063a457c2d71461023357600080fd5b8063313ce567116100ee578063313ce56714610186578063395093511461019557806367676b11146101a857806370a08231146101cd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b6101286102fb565b6040516101359190613b67565b60405180910390f35b61015161014c366004613b9c565b61038d565b6040519015158152602001610135565b6035545b604051908152602001610135565b610151610181366004613bc8565b6103a7565b60405160128152602001610135565b6101516101a3366004613b9c565b6103cd565b6065546101519074010000000000000000000000000000000000000000900460ff1681565b6101656101db366004613c09565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610216610211366004613f4a565b610419565b005b6102166102263660046140ad565b61061c565b61012861067e565b610151610241366004613b9c565b61068d565b610151610254366004613b9c565b610769565b610216610267366004614109565b610777565b61016561027a36600461415e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101656102c0366004613c09565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101656102f6366004613c09565b61091d565b60606036805461030a90614197565b80601f016020809104026020016040519081016040528092919081815260200182805461033690614197565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60003361039b8185856109b6565b60019150505b92915050565b6000336103b5858285610b69565b6103c0858585610c40565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061039b9082908690610414908790614214565b6109b6565b600054610100900460ff166104345760005460ff1615610438565b303b155b6104c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600054610100900460ff1615801561050857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b602080830151805191015161051d9190610ef3565b610537826020015160400151836020015160600151610f94565b61054c61054783604001516110b4565b611210565b60658054845173ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffff00000000000000000000000000000000000000000090911617740100000000000000000000000000000000000000009215159283021790556040805133815260208101929092527f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a35910160405180910390a1801561061857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b60606037805461030a90614197565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104c0565b61075e82868684036109b6565b506001949350505050565b60003361039b818585610c40565b60655474010000000000000000000000000000000000000000900460ff16610818573373ffffffffffffffffffffffffffffffffffffffff841614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016104c0565b60006108238461091d565b905061082f8482610f94565b61085d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361127e565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f433385858560405161090f949392919061422c565b60405180910390a150505050565b60655460009081906109449073ffffffffffffffffffffffffffffffffffffffff16611324565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506109839101604051602081830303815290604052826000611372565b60208101518151610996906001906142a4565b815181106109a6576109a66142bb565b6020026020010151915050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff8216610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c3a5781811015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104c0565b610c3a84848484036109b6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ce3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff8216610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610e80908490614214565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ee691815260200190565b60405180910390a3610c3a565b600054610100900460ff16610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104c0565b61061882826115fb565b73ffffffffffffffffffffffffffffffffffffffff8216611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104c0565b80603560008282546110239190614214565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061105d908490614214565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6110e66040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b81515161114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016104c0565b6040518060a0016040528060008152602001836040015167ffffffffffffffff81111561117e5761117e613c26565b6040519080825280602002602001820160405280156111a7578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff8111156111de576111de613c26565b604051908082528060200260200182016040528015611207578160200160208202803683370190505b50905292915050565b60008061123b8360405160200161122791906143fb565b6040516020818303038152906040526116b9565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516112709392919061440e565b60405180910390a192915050565b60008260088111156112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b6000855b858110156113185763ffffffff6020820290811b199890981685891b179791506001016112f0565b50959695505050505050565b6113566040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b61135f82611744565b8060200190518101906103a1919061455e565b602082015151825111156113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016104c0565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156115e9576002880197508784015180601e1a975080601f1a965050600587101561156857600187141561148057816080871661144b5750825b607f87168151811061145c57600080fd5b8b516020820260200183015160208202602001850152600181018d52505050611574565b60028714156114b757895180871061149757600080fd5b6020870260200182015160208202602001830152600181018b5250611574565b60038714156114d0576114cb8b8b88611772565b611574565b6004871415611501576114cb8a6040516020016114ed91906143fb565b6040516020818303038152906040526118d8565b866114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016104c0565b6115748b8b898961196a565b60208a0151518a5111156115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016104c0565b61140e565b5050505050505050505050565b505050565b600054610100900460ff16611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104c0565b81516116a5906036906020850190613a58565b5080516115f6906037906020840190613a58565b6000806116e4836040516020016116d09190614641565b604051602081830303815290604052611a96565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661173e576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606103a18260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ac2565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff8111156117d6576117d6613c26565b6040519080825280602002602001820160405280156117ff578160200160208202803683370190505b50905060005b828110156118565787602001518189600001510181518110611829576118296142bb565b6020026020010151828281518110611843576118436142bb565b6020908102919091010152600101611805565b5060005b6101008110156118cd5760005b838110156118ba5784828603848381518110611885576118856142bb565b6020026020010151901b901c896080015182815181106118a7576118a76142bb565b6020908102919091010152600101611867565b506118c6898988611372565b840161185a565b505050505050505050565b611967816040516024016118ec9190613b67565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611baa565b50565b7f00000000000000000000000000000000000000000000000000000000000000008210156119a5576119a0836005840383611bcb565b610c3a565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210611a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b600084806020019051810190611a4a9190614667565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110611a7d57611a7d6142bb565b6020908102919091010152508251600101835250505050565b6060815182604051602001611aac929190614684565b6040516020818303038152906040529050919050565b6060833b80611ae15750506040805160208101909152600081526103c6565b80841115611aff5750506040805160208101909152600081526103c6565b83831015611b4a576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016104c0565b8383038482036000828210611b5f5782611b61565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015611bdf576115f6838383611d31565b601d821015611c6257600b821015611bff576115f6836004840383611e47565b6016821015611c35576115f6837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5840183612175565b6115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea84018361260e565b6023821015611c98576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe384018361287e565b6025821015611cce576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183612d52565b6027821015611d04576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612f7b565b6115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9840183613175565b60048210611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b81611dcc57438360200151846000015181518110611dbb57611dbb6142bb565b602002602001018181525050611e3c565b6001821415611df057428360200151846000015181518110611dbb57611dbb6142bb565b6002821415611e1457602083015183518151339291908110611dbb57611dbb6142bb565b602083015183518151309291908110611e2f57611e2f6142bb565b6020026020010181815250505b505080516001019052565b60078210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b6002821015611ffd5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182611f5c5783602001518160010181518110611efc57611efc6142bb565b6020026020010151611f348386602001518481518110611f1e57611f1e6142bb565b60200260200101516135a190919063ffffffff16565b0284602001518281518110611f4b57611f4b6142bb565b602002602001018181525050611fd1565b6001831415611fd15783602001518160010181518110611f7e57611f7e6142bb565b6020026020010151611fa08386602001518481518110611f1e57611f1e6142bb565b81611fad57611fad61471b565b0484602001518281518110611fc457611fc46142bb565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b600582101561210e5782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160028314156120745761204d8285602001518381518110611f1e57611f1e6142bb565b84602001518281518110612063576120636142bb565b602002602001018181525050610c3a565b60038314156120ad5761204d8285602001518381518110612097576120976142bb565b602002602001015161362290919063ffffffff16565b6004831415610c3a576120e682856020015183815181106120d0576120d06142bb565b602002602001015161368090919063ffffffff16565b846020015182815181106120fc576120fc6142bb565b60200260200101818152505050505050565b600582141561215057670de0b6b3a7640000836020015184600001518151811061213a5761213a6142bb565b6020908102919091010152505080516001019052565b60068214156115f65760128360200151846000015181518110611e2f57611e2f6142bb565b600b82106121df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019183916000919083908110612225576122256142bb565b60200260200101519050600086141561227d575b8282101561227857602087015180516001909301928390811061225e5761225e6142bb565b6020026020010151816122719190614214565b9050612239565b6125df565b60018614156122f9575b82821080156122b557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156122785781806001019250506122f2876020015183815181106122db576122db6142bb565b6020026020010151826136cb90919063ffffffff16565b9050612287565b6002861415612342575b82821015612278576020870151805160019093019283908110612328576123286142bb565b60200260200101518161233b91906142a4565b9050612303565b600386141561239f575b828210801561235b5750806000105b1561227857818060010192505061239887602001518381518110612381576123816142bb565b60200260200101518261370790919063ffffffff16565b905061234c565b60048614156123e8575b828210156122785760208701518051600190930192839081106123ce576123ce6142bb565b6020026020010151816123e1919061474a565b90506123a9565b6005861415612464575b828210801561242057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561227857818060010192505061245d87602001518381518110612446576124466142bb565b60200260200101518261371d90919063ffffffff16565b90506123f2565b60068614156124ad575b82821015612278576020870151805160019093019283908110612493576124936142bb565b6020026020010151816124a69190614787565b905061246e565b60078614156124f6575b828210156122785760208701518051600190930192839081106124dc576124dc6142bb565b6020026020010151816124ef919061479b565b90506124b7565b600886141561253f575b82821015612278576020870151805160019093019283908110612525576125256142bb565b60200260200101518161253891906148cf565b9050612500565b60098614156125915760005b8383101561258b576020880151805160019094019384908110612570576125706142bb565b6020026020010151905081811015612586578091505b61254b565b506125df565b600a8614156125df5760005b838310156125dd5760208801518051600190940193849081106125c2576125c26142bb565b60200260200101519050818111156125d8578091505b61259d565b505b80876020015185815181106125f6576125f66142bb565b60209081029190910101525050506001019092525050565b60078210612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b825160208085015181830201018380156126c157600181146126f85760028114612771576003811461279957600481146127c157600581146127e9576006811461283057612876565b826126cb57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082018051159052612876565b600383101561270657600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015612762576020820151825261276a565b604082015182525b5050612876565b600283101561277f57600080fd5b600183038652604082036020810151815114815250612876565b60028310156127a757600080fd5b600183038652604082036020810151815110815250612876565b60028310156127cf57600080fd5b600183038652604082036020810151815111815250612876565b838310156127f657600080fd5b831561282b576001840383038652602084028203805b8381101561276a578051612823576000825261276a565b60200161280c565b612876565b8383101561283d57600080fd5b8315612876576001840383038652602084028203805b83811015612873578051801561286a578252612873565b50602001612853565b50505b505050505050565b600682106128e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b600082612a10575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110612953576129536142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea318560200151836001018151811061298f5761298f6142bb565b60200260200101516040518263ffffffff1660e01b81526004016129cf919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156129ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d91906148db565b6001831415612a6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110612a5457612a546142bb565b602090810291909101015283516001018452610c3a565b6002831415612a905760008460200151856000015181518110612a5457612a546142bb565b6003831415612b44575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110612adc57612adc6142bb565b60200260200101519050600085602001518360010181518110612b0157612b016142bb565b60200260200101519050612b15828261374c565b86602001518481518110612b2b57612b2b6142bb565b6020908102919091010152505083516001018452610c3a565b6004831415612c0c575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110612b9f57612b9f6142bb565b60200260200101519050600087602001518560010181518110612bc457612bc46142bb565b60200260200101519050612bda8285858461127e565b88602001518681518110612bf057612bf06142bb565b602090810291909101015250508551600101865250610c3a9050565b6005831415610c3a575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115612c7157612c71613c26565b604051908082528060200260200182016040528015612c9a578160200160208202803683370190505b50905060005b83811015612cef5789602001518381518110612cbe57612cbe6142bb565b6020026020010151828281518110612cd857612cd86142bb565b602090810291909101015260019283019201612ca0565b50600089602001518381518110612d0857612d086142bb565b60200260200101519050612d1e828288886137ab565b8a602001518881518110612d3457612d346142bb565b60209081029190910101525050875160010188525050505050505050565b60028210612dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b81612ee25782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110612e2457612e246142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110612e6157612e616142bb565b60200260200101516040518263ffffffff1660e01b8152600401612ea1919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906148db565b60018214156115f6578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019182908110612f2957612f296142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b60028210612fe5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826130865783602001518181518110613049576130496142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231856020015186600001518151811061298f5761298f6142bb565b6001831415610c3a57836020015181815181106130a5576130a56142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106130e2576130e26142bb565b60200260200101516040518263ffffffff1660e01b815260040161310891815260200190565b602060405180830381865afa158015613125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131499190614667565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106120fc576120fc6142bb565b600282106131df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b816132e95782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9092019182908110613247576132476142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e85602001518360010181518110613282576132826142bb565b6020026020010151866020015184600201815181106132a3576132a36142bb565b60200260200101516040518363ffffffff1660e01b8152600401612ea192919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60018214156115f6576001810160008167ffffffffffffffff81111561331157613311613c26565b60405190808252806020026020018201604052801561333a578160200160208202803683370190505b50905060008267ffffffffffffffff81111561335857613358613c26565b604051908082528060200260200182016040528015613381578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106133d1576133d16142bb565b6020026020010151905060005b8581101561348857886020015181840160010181518110613401576134016142bb565b602002602001015185828151811061341b5761341b6142bb565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061345b5761345b6142bb565b6020026020010151848281518110613475576134756142bb565b60209081029190910101526001016133de565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906134e090889088906004016148f4565b600060405180830381865afa1580156134fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135439190810190614961565b905060005b8681101561359557818181518110613562576135626142bb565b60200260200101518a6020015182860181518110613582576135826142bb565b6020908102919091010152600101613548565b50505050505050505050565b60008082601214156135b657839150506103a1565b82601211156135e2575060128290036135d081600a6148cf565b6135da908561474a565b9150506103a1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161361181600a6148cf565b6135da9085614787565b5092915050565b600080601283141561363757839150506103a1565b82601211156136515750601282900361361181600a6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016135d081600a6148cf565b600081810b6136905750816103a1565b60008260000b13156136b8576136a782600a614996565b6136b1908461474a565b90506103a1565b60ff60008390031661361181600a6148cf565b60008282018381106136dd57806136ff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116137175760006103c6565b50900390565b60008261372c575060006103a1565b8282028284828161373f5761373f61471b565b0414156136dd57806136ff565b60008060015b600881116137a357600061376686836138fb565b9050600061377486846138fb565b905060006137828383613707565b90506137928560018603836139a8565b945050600190920191506137529050565b509392505050565b835160009081908190819060015b600881116138ed576000925082876137f257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6137f6565b5060005b60005b838110156138ab576138248c8281518110613816576138166142bb565b6020026020010151846138fb565b95508a861161387657886138435761383c8683613a32565b915061386d565b60018914156138565761383c8683613a48565b600289148015613864575084155b1561386d578591505b600194506138a3565b896138a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506138ab565b6001016137f9565b50836138d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6138e28660018403836139a8565b9550506001016137b9565b509298975050505050505050565b6000816008811115613969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b82613977576000915061361b565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310613a4157816103c6565b5090919050565b600081831015613a4157816103c6565b828054613a6490614197565b90600052602060002090601f016020900481019282613a865760008555613acc565b82601f10613a9f57805160ff1916838001178555613acc565b82800160010185558215613acc579182015b82811115613acc578251825591602001919060010190613ab1565b50613ad8929150613adc565b5090565b5b80821115613ad85760008155600101613add565b60005b83811015613b0c578181015183820152602001613af4565b83811115610c3a5750506000910152565b60008151808452613b35816020860160208601613af1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006103c66020830184613b1d565b73ffffffffffffffffffffffffffffffffffffffff8116811461196757600080fd5b60008060408385031215613baf57600080fd5b8235613bba81613b7a565b946020939093013593505050565b600080600060608486031215613bdd57600080fd5b8335613be881613b7a565b92506020840135613bf881613b7a565b929592945050506040919091013590565b600060208284031215613c1b57600080fd5b81356103c681613b7a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c7857613c78613c26565b60405290565b6040516060810167ffffffffffffffff81118282101715613c7857613c78613c26565b60405160a0810167ffffffffffffffff81118282101715613c7857613c78613c26565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613d0b57613d0b613c26565b604052919050565b600067ffffffffffffffff821115613d2d57613d2d613c26565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000613d6c613d6784613d13565b613cc4565b9050828152838383011115613d8057600080fd5b828260208301376000602084830101529392505050565b600082601f830112613da857600080fd5b6103c683833560208501613d59565b600067ffffffffffffffff821115613dd157613dd1613c26565b5060051b60200190565b600082601f830112613dec57600080fd5b81356020613dfc613d6783613db7565b82815260059290921b84018101918181019086841115613e1b57600080fd5b8286015b84811015613e365780358352918301918301613e1f565b509695505050505050565b600060808284031215613e5357600080fd5b613e5b613c55565b9050813567ffffffffffffffff80821115613e7557600080fd5b818401915084601f830112613e8957600080fd5b81356020613e99613d6783613db7565b82815260059290921b84018101918181019088841115613eb857600080fd5b8286015b84811015613f0557803586811115613ed45760008081fd5b8701603f81018b13613ee65760008081fd5b613ef78b8683013560408401613d59565b845250918301918301613ebc565b5086525085810135935082841115613f1c57600080fd5b613f2887858801613ddb565b8186015250505050604082013560408201526060820135606082015292915050565b600060208284031215613f5c57600080fd5b813567ffffffffffffffff80821115613f7457600080fd5b9083019060608286031215613f8857600080fd5b613f90613c7e565b82358015158114613fa057600080fd5b8152602083013582811115613fb457600080fd5b830160808188031215613fc657600080fd5b613fce613c55565b813584811115613fdd57600080fd5b613fe989828501613d97565b825250602082013584811115613ffe57600080fd5b61400a89828501613d97565b602083015250604082013561401e81613b7a565b8060408301525060608201356060820152806020840152505060408301358281111561404957600080fd5b61405587828601613e41565b60408301525095945050505050565b60008083601f84011261407657600080fd5b50813567ffffffffffffffff81111561408e57600080fd5b6020830191508360208285010111156140a657600080fd5b9250929050565b600080600080606085870312156140c357600080fd5b84356140ce81613b7a565b935060208501359250604085013567ffffffffffffffff8111156140f157600080fd5b6140fd87828801614064565b95989497509550505050565b60008060006040848603121561411e57600080fd5b833561412981613b7a565b9250602084013567ffffffffffffffff81111561414557600080fd5b61415186828701614064565b9497909650939450505050565b6000806040838503121561417157600080fd5b823561417c81613b7a565b9150602083013561418c81613b7a565b809150509250929050565b600181811c908216806141ab57607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614227576142276141e5565b500190565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b6000828210156142b6576142b66141e5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561431a578151875295820195908201906001016142fe565b509495945050505050565b80518252600060208083015160a08286015261434460a08601826142ea565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156143ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08683030184526143a8828651613b1d565b9487019493870193915060010161436e565b506060880151955088810360608a01526143d481876142ea565b95505050505050608083015184820360808601526143f282826142ea565b95945050505050565b6020815260006103c66020830184614325565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526143f26060830184614325565b600082601f83011261445857600080fd5b81516020614468613d6783613db7565b82815260059290921b8401810191818101908684111561448757600080fd5b8286015b84811015613e36578051835291830191830161448b565b600082601f8301126144b357600080fd5b815160206144c3613d6783613db7565b82815260059290921b840181019181810190868411156144e257600080fd5b8286015b84811015613e3657805167ffffffffffffffff8111156145065760008081fd5b8701603f810189136145185760008081fd5b84810151604061452a613d6783613d13565b8281528b8284860101111561453f5760008081fd5b61454e83898301848701613af1565b86525050509183019183016144e6565b60006020828403121561457057600080fd5b815167ffffffffffffffff8082111561458857600080fd5b9083019060a0828603121561459c57600080fd5b6145a4613ca1565b825181526020830151828111156145ba57600080fd5b6145c687828601614447565b6020830152506040830151828111156145de57600080fd5b6145ea878286016144a2565b60408301525060608301518281111561460257600080fd5b61460e87828601614447565b60608301525060808301518281111561462657600080fd5b61463287828601614447565b60808301525095945050505050565b600081526000825161465a816001850160208701613af1565b9190910160010192915050565b60006020828403121561467957600080fd5b81516103c681613b7a565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161470d81600e850160208701613af1565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614782576147826141e5565b500290565b6000826147965761479661471b565b500490565b6000826147aa576147aa61471b565b500690565b600181815b8085111561480857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147ee576147ee6141e5565b808516156147fb57918102915b93841c93908002906147b4565b509250929050565b60008261481f575060016103a1565b8161482c575060006103a1565b8160018114614842576002811461484c57614868565b60019150506103a1565b60ff84111561485d5761485d6141e5565b50506001821b6103a1565b5060208310610133831016604e8410600b841016171561488b575081810a6103a1565b61489583836147af565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c7576148c76141e5565b029392505050565b60006103c68383614810565b6000602082840312156148ed57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561494357815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614911565b5050508381038285015261495781866142ea565b9695505050505050565b60006020828403121561497357600080fd5b815167ffffffffffffffff81111561498a57600080fd5b6136ff84828501614447565b60006103c660ff84168361481056fea2646970667358221220f574c9550f66f4136490d1c31398b880561e03beaa5e50c1a75bd491923224f764736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b5060405161556038038061556083398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b61441f8061114183390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b60805161101c6101256000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea26469706673582212209f65a41570658ac1f0f4abdb0a2bda6ab42551c57e053451abc34af8e43b09a864736f6c634300080a003360c06040523480156200001157600080fd5b506040516200441f3803806200441f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161437d620000a26000396000610894015260006108bb015261437d6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806395d89b41116100cd578063dd62ed3e11610081578063e053ea3111610066578063e053ea3114610320578063ea34554014610356578063f2cd6c081461036957600080fd5b8063dd62ed3e146102a2578063e0419ae3146102e857600080fd5b8063a457c2d7116100b2578063a457c2d714610269578063a9059cbb1461027c578063bb1757cf1461028f57600080fd5b806395d89b411461024e5780639a8d2ac81461025657600080fd5b8063313ce5671161012457806367676b111161010957806367676b11146101de57806370a08231146102035780638a200fff1461023957600080fd5b8063313ce567146101bc57806339509351146101cb57600080fd5b806306fdde0314610156578063095ea7b31461017457806318160ddd1461019757806323b872dd146101a9575b600080fd5b61015e6104f6565b60405161016b9190613593565b60405180910390f35b6101876101823660046135c8565b610588565b604051901515815260200161016b565b6035545b60405190815260200161016b565b6101876101b73660046135f4565b6105a2565b6040516012815260200161016b565b6101876101d93660046135c8565b6105c8565b6065546101879074010000000000000000000000000000000000000000900460ff1681565b61019b610211366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61024c61024736600461369b565b610614565b005b61015e61067b565b61024c6102643660046136f7565b61068a565b6101876102773660046135c8565b610ad8565b61018761028a3660046135c8565b610bb4565b61024c61029d366004613732565b610bc2565b61019b6102b0366004613787565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60408051808201825260008082526020918201819052825180840184528181528201818152835191825251918101919091520161016b565b61019b61032e366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b61019b610364366004613635565b610d68565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261215360e082015261215e61010082015261216961012082015261217461014082015261217f6101608201526121f26101808201526122586101a08201526122986101c08201526122cc6101e08201526123006102008201526123476102208201526123a46102408201526123dd61026082015261241b61028082015261246d6102a08201526124ca6102c08201526124fe6102e08201526125326103008201526125646103208201526125966103408201526125c86103608201526125f56103808201526126506103a08201526126a66103c08201526126fd6103e08201526127546104008201526127886104208201526127b26104408201526128996104608201526128f56104808201526129716104a0820152612a2b6104c08201819052612ad56104e0830152610500820152612b55610520820152612c5d610540820152612d7b61056080830191909152815261015e565b606060368054610505906137c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906137c0565b801561057e5780601f106105535761010080835404028352916020019161057e565b820191906000526020600020905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b600033610596818585610e1d565b60019150505b92915050565b6000336105b0858285610fd0565b6105bb8585856110a7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610596908290869061060f90879061383d565b610e1d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b606060378054610505906137c0565b6000610696600161135a565b905080156106cb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61076f6106db6020840184613855565b6106e59080613893565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610727925050506020850185613855565b610735906020810190613893565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e092505050565b6107a661077f6020840184613855565b610790906060810190604001613635565b61079d6020850185613855565b60600135611581565b6107e66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108476040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610807579050509050818160008151811061087057610870613927565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108e76040890189613956565b856040518463ffffffff1660e01b815260040161090693929190613b02565b6000604051808303816000875af1158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096b9190810190613cb4565b9050610976816116a1565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109c86020860186613d5d565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790557f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a3533610a3f6020880188613d5d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301520160405180910390a15050508015610ad457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610672565b610ba98286868403610e1d565b506001949350505050565b6000336105968185856110a7565b60655474010000000000000000000000000000000000000000900460ff16610c63573373ffffffffffffffffffffffffffffffffffffffff841614610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610672565b6000610c6e84610d68565b9050610c7a8482611581565b610ca87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361172c565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4333858585604051610d5a9493929190613d7f565b60405180910390a150505050565b6065546000908190610d9890610d939073ffffffffffffffffffffffffffffffffffffffff166117d2565b611800565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610de78284600061196c565b5060208301518351610dfb90600190613db9565b81518110610e0b57610e0b613927565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8216610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110a15781811015611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610672565b6110a18484848403610e1d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff82166111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906112e790849061383d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134d91815260200190565b60405180910390a36110a1565b60008054610100900460ff1615611411578160ff16600114801561137d5750303b155b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b506000919050565b60005460ff8084169116106114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600054610100900460ff16611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b610ad48282611c45565b73ffffffffffffffffffffffffffffffffffffffff82166115fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610672565b8060356000828254611610919061383d565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061164a90849061383d565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116cc836040516020016116b89190613dd0565b604051602081830303815290604052611d03565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611726576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600082600881111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b6000855b858110156117c65763ffffffff6020820290811b199890981685891b1797915060010161179e565b50959695505050505050565b606061059c8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d2f565b6118326040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118646040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611898576118986138f8565b6040519080825280602002602001820160405280156118c1578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156118f8576118f86138f8565b604051908082528060200260200182016040528015611921578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561195b578160208202602001840152815160200182019150600181019050611934565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c28576003890198508886015180601f1a975061ffff8160081c169850506006881015611ba057876119ef57866020028401518252602082019150611bb3565b6001881415611a0c57602087028301518252602082019150611bb3565b6002881415611a99578c518760200210611a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610672565b866020026020018d01518252602082019150611bb3565b6003881415611ae1576000611acf6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611bb3565b6004881415611afd57611af68d8d848a611e17565b9150611bb3565b606087611b2b578c604051602001611b159190613e26565b6040516020818303038152906040529050611b8a565b6001881415611b4457611b3d8d611f84565b9050611b8a565b6002881415611b60576020808e0151604051611b159201613efc565b6003881415611b8a578c516040805160208101929092520160405160208183030381529060405290505b805115611b9a57611b9a816120c1565b50611bb3565b87611baf888463ffffffff8416565b9250505b60208c0151518c511115611c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610672565b6119aa565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b8151611cef906036906020850190613484565b508051611c40906037906020840190613484565b6060815182604051602001611d19929190613f61565b6040516020818303038152906040529050919050565b6060833b80611d4e5750506040805160208101909152600081526105c1565b80841115611d6c5750506040805160208101909152600081526105c1565b83831015611db7576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610672565b8383038482036000828210611dcc5782611dce565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611e5657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ea1565b8260011415611e7a57506fffffffffffffffffffffffffffffffff90506080611ea1565b8260021415611e96575067ffffffffffffffff90506040611ea1565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611ec457611ec46138f8565b604051908082528060200260200182016040528015611eed578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f14578151815260209182019101611efc565b505060608b015160808c015160209081029091010160005b610100811015611f725760208502830182845b82811015611f5b578051841c8a16825260209182019101611f3f565b505050611f698e8e8b61196c565b9b508501611f2c565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611fd09190613efc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261200c9291602001613ff8565b604051602081830303815290604052905060005b8560400151518110156120b857818660400151828151811061204457612044613927565b60200260200101515160001b8760400151838151811061206657612066613927565b60200260200101516040516020016120809392919061401e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612020565b50949350505050565b612150816040516024016120d59190613593565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612f78565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e5826121df858a612f99565b9061301a565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e582612252858a612f99565b90613039565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c8287612f99565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c828761304e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c82876130ac565b600060208302820380516000602083015b85811015612339578051830191508282101561232c57600080fd5b9091508190602001612311565b505081526020019392505050565b6020828102820380516000928201835b858210801561238557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156123395750805160209091019061239d83826130f7565b9250612357565b600060208302820380516000602083015b8581101561233957805183039150828211156123d057600080fd5b90915081906020016123b5565b6020828102820380516000928201835b85821080156123fc5750826000105b15612339575080516020909101906124148382613133565b92506123ed565b60006020830282038051600080602084015b8681101561245e57831561245657805192508284029150828483041461245257600080fd5b8193505b60200161242d565b50505081526020019392505050565b6020828102820380516000928201835b85821080156124ab57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612339575080516020909101906124c38382613149565b925061247d565b600060208302820380516000602083015b858110156123395780519150816124f157600080fd5b91819004916020016124db565b600060208302820380516000602083015b8581101561233957805191508161252557600080fd5b918190069160200161250f565b6020828102820380516000928201835b858210156123395750805160209091019061255d8184614175565b9250612542565b6020828102820380516000928201835b85821015612339575080518281101561258b578092505b602082019150612574565b6020828102820380516000928201835b8582101561233957508051828111156125bd578092505b6020820191506125a6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561277d578051612775576000825261277d565b60200161275e565b506020019392505050565b6000602083028203805b8381101561277d57805180156127a957825261277d565b50602001612792565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e59190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e58383613178565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856129628585858561172c565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561299f5761299f6138f8565b6040519080825280602002602001820160405280156129c8578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612a04578151816020018601526020820191506020810190506129e2565b50505190506000612a17838389896131d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612858565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228c9190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3a919061419a565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6d9190614181565b909452509395945050505050565b60008060008467ffffffffffffffff811115612d9957612d996138f8565b604051908082528060200260200182016040528015612dc2578160200160208202803683370190505b50905060008567ffffffffffffffff811115612de057612de06138f8565b604051908082528060200260200182016040528015612e09578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e5e578251815260209283019201612e46565b5050602088028101602084015b81831015612e83578251815260209283019201612e6b565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612edd90879087906004016141b7565b600060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f40919081019061421a565b9050846020820160208a0281015b80821015612f69578151835260209283019290910190612f4e565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415612fae578391505061059c565b8260121115612fda57506012829003612fc881600a614175565b612fd290856142c0565b91505061059c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161300981600a614175565b612fd290856142fd565b5092915050565b6000670de0b6b3a764000061302f83856142c0565b6105c191906142fd565b60008161302f670de0b6b3a7640000856142c0565b6000806012831415613063578391505061059c565b826012111561307d5750601282900361300981600a614175565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612fc881600a614175565b600081810b6130bc57508161059c565b60008260000b13156130e4576130d382600a614338565b6130dd90846142c0565b905061059c565b60ff60008390031661300981600a614175565b6000828201838110613109578061312b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116131435760006105c1565b50900390565b6000826131585750600061059c565b8282028284828161316b5761316b613f32565b041415613109578061312b565b60008060015b600881116131cf5760006131928683613327565b905060006131a08684613327565b905060006131ae8383613133565b90506131be8560018603836133d4565b9450506001909201915061317e9050565b509392505050565b835160009081908190819060015b600881116133195760009250828761321e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613222565b5060005b60005b838110156132d7576132508c828151811061324257613242613927565b602002602001015184613327565b95508a86116132a2578861326f57613268868361345e565b9150613299565b6001891415613282576132688683613474565b600289148015613290575084155b15613299578591505b600194506132cf565b896132cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506132d7565b600101613225565b508361330057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61330e8660018403836133d4565b9550506001016131e5565b509298975050505050505050565b6000816008811115613395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b826133a35760009150613013565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b505060209190910290811b63ffffffff90911b19919091161790565b600081831061346d57816105c1565b5090919050565b60008183101561346d57816105c1565b828054613490906137c0565b90600052602060002090601f0160209004810192826134b257600085556134f8565b82601f106134cb57805160ff19168380011785556134f8565b828001600101855582156134f8579182015b828111156134f85782518255916020019190600101906134dd565b50613504929150613508565b5090565b5b808211156135045760008155600101613509565b60005b83811015613538578181015183820152602001613520565b838111156110a15750506000910152565b6000815180845261356181602086016020860161351d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105c16020830184613549565b73ffffffffffffffffffffffffffffffffffffffff8116811461215057600080fd5b600080604083850312156135db57600080fd5b82356135e6816135a6565b946020939093013593505050565b60008060006060848603121561360957600080fd5b8335613614816135a6565b92506020840135613624816135a6565b929592945050506040919091013590565b60006020828403121561364757600080fd5b81356105c1816135a6565b60008083601f84011261366457600080fd5b50813567ffffffffffffffff81111561367c57600080fd5b60208301915083602082850101111561369457600080fd5b9250929050565b600080600080606085870312156136b157600080fd5b84356136bc816135a6565b935060208501359250604085013567ffffffffffffffff8111156136df57600080fd5b6136eb87828801613652565b95989497509550505050565b60006020828403121561370957600080fd5b813567ffffffffffffffff81111561372057600080fd5b8201606081850312156105c157600080fd5b60008060006040848603121561374757600080fd5b8335613752816135a6565b9250602084013567ffffffffffffffff81111561376e57600080fd5b61377a86828701613652565b9497909650939450505050565b6000806040838503121561379a57600080fd5b82356137a5816135a6565b915060208301356137b5816135a6565b809150509250929050565b600181811c908216806137d457607f821691505b60208210811415611726577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156138505761385061380e565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261388957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138c857600080fd5b83018035915067ffffffffffffffff8211156138e357600080fd5b60200191503681900382131561369457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261388957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126139bf57600080fd5b830160208101925035905067ffffffffffffffff8111156139df57600080fd5b8060051b360383131561369457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613a6c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015613af757815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101613a9d565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301613b33868761398a565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015613bfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112613bb457600080fd5b8501803567ffffffffffffffff811115613bcd57600080fd5b803603871315613bdc57600080fd5b613be988828b85016139f1565b975050509186019190860190600101613b53565b5050505050613c0e8287018761398a565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613c45828483613a3a565b925050508281036040840152613c5b8185613a89565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cac57613cac6138f8565b604052919050565b600060208284031215613cc657600080fd5b815167ffffffffffffffff80821115613cde57600080fd5b818401915084601f830112613cf257600080fd5b815181811115613d0457613d046138f8565b613d3560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c65565b9150808252856020828501011115613d4c57600080fd5b6120b881602084016020860161351d565b600060208284031215613d6f57600080fd5b813580151581146105c157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152613c5b6060830184866139f1565b600082821015613dcb57613dcb61380e565b500390565b6000815260008251613de981600185016020870161351d565b9190910160010192915050565b600081518084526020808501945080840160005b83811015613af757815187529582019590820190600101613e0a565b600060208083528351818401528084015160a06040850152613e4b60c0850182613df6565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015613ec45784878303018452613eb2828751613549565b95880195938801939150600101613e98565b5060608a01519650838982030160808a0152613ee08188613df6565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015613f2657815185529382019390820190600101613f0a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613fea81600e85016020870161351d565b91909101600e019392505050565b8281526000825161401081602085016020870161351d565b919091016020019392505050565b6000845161403081846020890161351d565b8201848152835161404881602080850190880161351d565b0160200195945050505050565b600181815b808511156140ae57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156140945761409461380e565b808516156140a157918102915b93841c939080029061405a565b509250929050565b6000826140c55750600161059c565b816140d25750600061059c565b81600181146140e857600281146140f25761410e565b600191505061059c565b60ff8411156141035761410361380e565b50506001821b61059c565b5060208310610133831016604e8410600b8410161715614131575081810a61059c565b61413b8383614055565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561416d5761416d61380e565b029392505050565b60006105c183836140b6565b60006020828403121561419357600080fd5b5051919050565b6000602082840312156141ac57600080fd5b81516105c1816135a6565b604080825283519082018190526000906020906060840190828701845b8281101561420657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016141d4565b50505083810382850152613c5b8186613df6565b6000602080838503121561422d57600080fd5b825167ffffffffffffffff8082111561424557600080fd5b818501915085601f83011261425957600080fd5b81518181111561426b5761426b6138f8565b8060051b915061427c848301613c65565b818152918301840191848101908884111561429657600080fd5b938501935b838510156142b45784518252938501939085019061429b565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f8576142f861380e565b500290565b600082614333577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006105c160ff8416836140b656fea264697066735822122059380f529cfa2de509d5e04383eec1f4f77c87f8c186c3c99f7a53c8a890ad5564736f6c634300080a0033"; type EmissionsERC20FactoryConstructorParams = | [signer?: Signer] @@ -206,14 +202,19 @@ export class EmissionsERC20Factory__factory extends ContractFactory { } deploy( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): Promise { - return super.deploy(overrides || {}) as Promise; + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; } getDeployTransaction( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); } attach(address: string): EmissionsERC20Factory { return super.attach(address) as EmissionsERC20Factory; diff --git a/src/typechain/factories/EmissionsERC20__factory.ts b/src/typechain/factories/EmissionsERC20__factory.ts index 41ca4f4..e1037fa 100644 --- a/src/typechain/factories/EmissionsERC20__factory.ts +++ b/src/typechain/factories/EmissionsERC20__factory.ts @@ -10,7 +10,13 @@ import type { const _abi = [ { - inputs: [], + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], stateMutability: "nonpayable", type: "constructor", }, @@ -114,51 +120,12 @@ const _abi = [ inputs: [ { indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", + internalType: "uint8", + name: "version", + type: "uint8", }, ], - name: "Snapshot", + name: "Initialized", type: "event", }, { @@ -377,6 +344,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -449,16 +429,6 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", name: "vmStateConfig", @@ -530,6 +500,31 @@ const _abi = [ stateMutability: "pure", type: "function", }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "symbol", @@ -612,7 +607,7 @@ const _abi = [ ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b506002808060066007600b6200002982600462000087565b62000035919062000087565b62000041919062000087565b6200004d919062000087565b62000059919062000087565b62000065919062000087565b62000071919062000087565b6200007e90600562000087565b608052620000ae565b60008219821115620000a957634e487b7160e01b600052601160045260246000fd5b500190565b6080516149db620000d16000396000818161196c01526119a701526149db6000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063814e3a8e116100b2578063a9059cbb11610081578063dd62ed3e11610066578063dd62ed3e1461026c578063e053ea31146102b2578063ea345540146102e857600080fd5b8063a9059cbb14610246578063bb1757cf1461025957600080fd5b8063814e3a8e146102035780638a200fff1461021857806395d89b411461022b578063a457c2d71461023357600080fd5b8063313ce567116100ee578063313ce56714610186578063395093511461019557806367676b11146101a857806370a08231146101cd57600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b6101286102fb565b6040516101359190613b67565b60405180910390f35b61015161014c366004613b9c565b61038d565b6040519015158152602001610135565b6035545b604051908152602001610135565b610151610181366004613bc8565b6103a7565b60405160128152602001610135565b6101516101a3366004613b9c565b6103cd565b6065546101519074010000000000000000000000000000000000000000900460ff1681565b6101656101db366004613c09565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610216610211366004613f4a565b610419565b005b6102166102263660046140ad565b61061c565b61012861067e565b610151610241366004613b9c565b61068d565b610151610254366004613b9c565b610769565b610216610267366004614109565b610777565b61016561027a36600461415e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101656102c0366004613c09565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101656102f6366004613c09565b61091d565b60606036805461030a90614197565b80601f016020809104026020016040519081016040528092919081815260200182805461033690614197565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60003361039b8185856109b6565b60019150505b92915050565b6000336103b5858285610b69565b6103c0858585610c40565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061039b9082908690610414908790614214565b6109b6565b600054610100900460ff166104345760005460ff1615610438565b303b155b6104c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600054610100900460ff1615801561050857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b602080830151805191015161051d9190610ef3565b610537826020015160400151836020015160600151610f94565b61054c61054783604001516110b4565b611210565b60658054845173ffffffffffffffffffffffffffffffffffffffff939093167fffffffffffffffffffffff00000000000000000000000000000000000000000090911617740100000000000000000000000000000000000000009215159283021790556040805133815260208101929092527f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a35910160405180910390a1801561061857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b60606037805461030a90614197565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610751576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104c0565b61075e82868684036109b6565b506001949350505050565b60003361039b818585610c40565b60655474010000000000000000000000000000000000000000900460ff16610818573373ffffffffffffffffffffffffffffffffffffffff841614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016104c0565b60006108238461091d565b905061082f8482610f94565b61085d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361127e565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f433385858560405161090f949392919061422c565b60405180910390a150505050565b60655460009081906109449073ffffffffffffffffffffffffffffffffffffffff16611324565b6040805173ffffffffffffffffffffffffffffffffffffffff861660208201529192506109839101604051602081830303815290604052826000611372565b60208101518151610996906001906142a4565b815181106109a6576109a66142bb565b6020026020010151915050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff8216610afb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610c3a5781811015610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104c0565b610c3a84848484036109b6565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610ce3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff8216610d86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104c0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290610e80908490614214565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ee691815260200190565b60405180910390a3610c3a565b600054610100900460ff16610f8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104c0565b61061882826115fb565b73ffffffffffffffffffffffffffffffffffffffff8216611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104c0565b80603560008282546110239190614214565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061105d908490614214565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6110e66040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b81515161114f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016104c0565b6040518060a0016040528060008152602001836040015167ffffffffffffffff81111561117e5761117e613c26565b6040519080825280602002602001820160405280156111a7578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff8111156111de576111de613c26565b604051908082528060200260200182016040528015611207578160200160208202803683370190505b50905292915050565b60008061123b8360405160200161122791906143fb565b6040516020818303038152906040526116b9565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516112709392919061440e565b60405180910390a192915050565b60008260088111156112ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b6000855b858110156113185763ffffffff6020820290811b199890981685891b179791506001016112f0565b50959695505050505050565b6113566040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b61135f82611744565b8060200190518101906103a1919061455e565b602082015151825111156113e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016104c0565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156115e9576002880197508784015180601e1a975080601f1a965050600587101561156857600187141561148057816080871661144b5750825b607f87168151811061145c57600080fd5b8b516020820260200183015160208202602001850152600181018d52505050611574565b60028714156114b757895180871061149757600080fd5b6020870260200182015160208202602001830152600181018b5250611574565b60038714156114d0576114cb8b8b88611772565b611574565b6004871415611501576114cb8a6040516020016114ed91906143fb565b6040516020818303038152906040526118d8565b866114cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016104c0565b6115748b8b898961196a565b60208a0151518a5111156115e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016104c0565b61140e565b5050505050505050505050565b505050565b600054610100900460ff16611692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104c0565b81516116a5906036906020850190613a58565b5080516115f6906037906020840190613a58565b6000806116e4836040516020016116d09190614641565b604051602081830303815290604052611a96565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661173e576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606103a18260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611ac2565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff8111156117d6576117d6613c26565b6040519080825280602002602001820160405280156117ff578160200160208202803683370190505b50905060005b828110156118565787602001518189600001510181518110611829576118296142bb565b6020026020010151828281518110611843576118436142bb565b6020908102919091010152600101611805565b5060005b6101008110156118cd5760005b838110156118ba5784828603848381518110611885576118856142bb565b6020026020010151901b901c896080015182815181106118a7576118a76142bb565b6020908102919091010152600101611867565b506118c6898988611372565b840161185a565b505050505050505050565b611967816040516024016118ec9190613b67565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611baa565b50565b7f00000000000000000000000000000000000000000000000000000000000000008210156119a5576119a0836005840383611bcb565b610c3a565b7f00000000000000000000000000000000000000000000000000000000000000008203915060018210611a34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b600084806020019051810190611a4a9190614667565b90508073ffffffffffffffffffffffffffffffffffffffff168460200151856000015181518110611a7d57611a7d6142bb565b6020908102919091010152508251600101835250505050565b6060815182604051602001611aac929190614684565b6040516020818303038152906040529050919050565b6060833b80611ae15750506040805160208101909152600081526103c6565b80841115611aff5750506040805160208101909152600081526103c6565b83831015611b4a576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016104c0565b8383038482036000828210611b5f5782611b61565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6004821015611bdf576115f6838383611d31565b601d821015611c6257600b821015611bff576115f6836004840383611e47565b6016821015611c35576115f6837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5840183612175565b6115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea84018361260e565b6023821015611c98576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe384018361287e565b6025821015611cce576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183612d52565b6027821015611d04576115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183612f7b565b6115f6837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9840183613175565b60048210611d9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b81611dcc57438360200151846000015181518110611dbb57611dbb6142bb565b602002602001018181525050611e3c565b6001821415611df057428360200151846000015181518110611dbb57611dbb6142bb565b6002821415611e1457602083015183518151339291908110611dbb57611dbb6142bb565b602083015183518151309291908110611e2f57611e2f6142bb565b6020026020010181815250505b505080516001019052565b60078210611eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b6002821015611ffd5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182611f5c5783602001518160010181518110611efc57611efc6142bb565b6020026020010151611f348386602001518481518110611f1e57611f1e6142bb565b60200260200101516135a190919063ffffffff16565b0284602001518281518110611f4b57611f4b6142bb565b602002602001018181525050611fd1565b6001831415611fd15783602001518160010181518110611f7e57611f7e6142bb565b6020026020010151611fa08386602001518481518110611f1e57611f1e6142bb565b81611fad57611fad61471b565b0484602001518281518110611fc457611fc46142bb565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b600582101561210e5782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0160028314156120745761204d8285602001518381518110611f1e57611f1e6142bb565b84602001518281518110612063576120636142bb565b602002602001018181525050610c3a565b60038314156120ad5761204d8285602001518381518110612097576120976142bb565b602002602001015161362290919063ffffffff16565b6004831415610c3a576120e682856020015183815181106120d0576120d06142bb565b602002602001015161368090919063ffffffff16565b846020015182815181106120fc576120fc6142bb565b60200260200101818152505050505050565b600582141561215057670de0b6b3a7640000836020015184600001518151811061213a5761213a6142bb565b6020908102919091010152505080516001019052565b60068214156115f65760128360200151846000015181518110611e2f57611e2f6142bb565b600b82106121df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019183916000919083908110612225576122256142bb565b60200260200101519050600086141561227d575b8282101561227857602087015180516001909301928390811061225e5761225e6142bb565b6020026020010151816122719190614214565b9050612239565b6125df565b60018614156122f9575b82821080156122b557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156122785781806001019250506122f2876020015183815181106122db576122db6142bb565b6020026020010151826136cb90919063ffffffff16565b9050612287565b6002861415612342575b82821015612278576020870151805160019093019283908110612328576123286142bb565b60200260200101518161233b91906142a4565b9050612303565b600386141561239f575b828210801561235b5750806000105b1561227857818060010192505061239887602001518381518110612381576123816142bb565b60200260200101518261370790919063ffffffff16565b905061234c565b60048614156123e8575b828210156122785760208701518051600190930192839081106123ce576123ce6142bb565b6020026020010151816123e1919061474a565b90506123a9565b6005861415612464575b828210801561242057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b1561227857818060010192505061245d87602001518381518110612446576124466142bb565b60200260200101518261371d90919063ffffffff16565b90506123f2565b60068614156124ad575b82821015612278576020870151805160019093019283908110612493576124936142bb565b6020026020010151816124a69190614787565b905061246e565b60078614156124f6575b828210156122785760208701518051600190930192839081106124dc576124dc6142bb565b6020026020010151816124ef919061479b565b90506124b7565b600886141561253f575b82821015612278576020870151805160019093019283908110612525576125256142bb565b60200260200101518161253891906148cf565b9050612500565b60098614156125915760005b8383101561258b576020880151805160019094019384908110612570576125706142bb565b6020026020010151905081811015612586578091505b61254b565b506125df565b600a8614156125df5760005b838310156125dd5760208801518051600190940193849081106125c2576125c26142bb565b60200260200101519050818111156125d8578091505b61259d565b505b80876020015185815181106125f6576125f66142bb565b60209081029190910101525050506001019092525050565b60078210612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b825160208085015181830201018380156126c157600181146126f85760028114612771576003811461279957600481146127c157600581146127e9576006811461283057612876565b826126cb57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082018051159052612876565b600383101561270657600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0820180518015612762576020820151825261276a565b604082015182525b5050612876565b600283101561277f57600080fd5b600183038652604082036020810151815114815250612876565b60028310156127a757600080fd5b600183038652604082036020810151815110815250612876565b60028310156127cf57600080fd5b600183038652604082036020810151815111815250612876565b838310156127f657600080fd5b831561282b576001840383038652602084028203805b8381101561276a578051612823576000825261276a565b60200161280c565b612876565b8383101561283d57600080fd5b8315612876576001840383038652602084028203805b83811015612873578051801561286a578252612873565b50602001612853565b50505b505050505050565b600682106128e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b600082612a10575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110612953576129536142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea318560200151836001018151811061298f5761298f6142bb565b60200260200101516040518263ffffffff1660e01b81526004016129cf919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa1580156129ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204d91906148db565b6001831415612a6b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110612a5457612a546142bb565b602090810291909101015283516001018452610c3a565b6002831415612a905760008460200151856000015181518110612a5457612a546142bb565b6003831415612b44575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110612adc57612adc6142bb565b60200260200101519050600085602001518360010181518110612b0157612b016142bb565b60200260200101519050612b15828261374c565b86602001518481518110612b2b57612b2b6142bb565b6020908102919091010152505083516001018452610c3a565b6004831415612c0c575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110612b9f57612b9f6142bb565b60200260200101519050600087602001518560010181518110612bc457612bc46142bb565b60200260200101519050612bda8285858461127e565b88602001518681518110612bf057612bf06142bb565b602090810291909101015250508551600101865250610c3a9050565b6005831415610c3a575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115612c7157612c71613c26565b604051908082528060200260200182016040528015612c9a578160200160208202803683370190505b50905060005b83811015612cef5789602001518381518110612cbe57612cbe6142bb565b6020026020010151828281518110612cd857612cd86142bb565b602090810291909101015260019283019201612ca0565b50600089602001518381518110612d0857612d086142bb565b60200260200101519050612d1e828288886137ab565b8a602001518881518110612d3457612d346142bb565b60209081029190910101525050875160010188525050505050505050565b60028210612dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b81612ee25782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110612e2457612e246142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110612e6157612e616142bb565b60200260200101516040518263ffffffff1660e01b8152600401612ea1919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015612ebe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120e691906148db565b60018214156115f6578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019182908110612f2957612f296142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ebe573d6000803e3d6000fd5b60028210612fe5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01826130865783602001518181518110613049576130496142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231856020015186600001518151811061298f5761298f6142bb565b6001831415610c3a57836020015181815181106130a5576130a56142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e85602001518660000151815181106130e2576130e26142bb565b60200260200101516040518263ffffffff1660e01b815260040161310891815260200190565b602060405180830381865afa158015613125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131499190614667565b73ffffffffffffffffffffffffffffffffffffffff16846020015182815181106120fc576120fc6142bb565b600282106131df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016104c0565b816132e95782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9092019182908110613247576132476142bb565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e85602001518360010181518110613282576132826142bb565b6020026020010151866020015184600201815181106132a3576132a36142bb565b60200260200101516040518363ffffffff1660e01b8152600401612ea192919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60018214156115f6576001810160008167ffffffffffffffff81111561331157613311613c26565b60405190808252806020026020018201604052801561333a578160200160208202803683370190505b50905060008267ffffffffffffffff81111561335857613358613c26565b604051908082528060200260200182016040528015613381578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81810189526020890151805193945091869003019160009190839081106133d1576133d16142bb565b6020026020010151905060005b8581101561348857886020015181840160010181518110613401576134016142bb565b602002602001015185828151811061341b5761341b6142bb565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091018201528901518051600185890184010190811061345b5761345b6142bb565b6020026020010151848281518110613475576134756142bb565b60209081029190910101526001016133de565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906134e090889088906004016148f4565b600060405180830381865afa1580156134fd573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135439190810190614961565b905060005b8681101561359557818181518110613562576135626142bb565b60200260200101518a6020015182860181518110613582576135826142bb565b6020908102919091010152600101613548565b50505050505050505050565b60008082601214156135b657839150506103a1565b82601211156135e2575060128290036135d081600a6148cf565b6135da908561474a565b9150506103a1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161361181600a6148cf565b6135da9085614787565b5092915050565b600080601283141561363757839150506103a1565b82601211156136515750601282900361361181600a6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016135d081600a6148cf565b600081810b6136905750816103a1565b60008260000b13156136b8576136a782600a614996565b6136b1908461474a565b90506103a1565b60ff60008390031661361181600a6148cf565b60008282018381106136dd57806136ff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116137175760006103c6565b50900390565b60008261372c575060006103a1565b8282028284828161373f5761373f61471b565b0414156136dd57806136ff565b60008060015b600881116137a357600061376686836138fb565b9050600061377486846138fb565b905060006137828383613707565b90506137928560018603836139a8565b945050600190920191506137529050565b509392505050565b835160009081908190819060015b600881116138ed576000925082876137f257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6137f6565b5060005b60005b838110156138ab576138248c8281518110613816576138166142bb565b6020026020010151846138fb565b95508a861161387657886138435761383c8683613a32565b915061386d565b60018914156138565761383c8683613a48565b600289148015613864575084155b1561386d578591505b600194506138a3565b896138a3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506138ab565b6001016137f9565b50836138d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6138e28660018403836139a8565b9550506001016137b9565b509298975050505050505050565b6000816008811115613969576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b82613977576000915061361b565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104c0565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310613a4157816103c6565b5090919050565b600081831015613a4157816103c6565b828054613a6490614197565b90600052602060002090601f016020900481019282613a865760008555613acc565b82601f10613a9f57805160ff1916838001178555613acc565b82800160010185558215613acc579182015b82811115613acc578251825591602001919060010190613ab1565b50613ad8929150613adc565b5090565b5b80821115613ad85760008155600101613add565b60005b83811015613b0c578181015183820152602001613af4565b83811115610c3a5750506000910152565b60008151808452613b35816020860160208601613af1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006103c66020830184613b1d565b73ffffffffffffffffffffffffffffffffffffffff8116811461196757600080fd5b60008060408385031215613baf57600080fd5b8235613bba81613b7a565b946020939093013593505050565b600080600060608486031215613bdd57600080fd5b8335613be881613b7a565b92506020840135613bf881613b7a565b929592945050506040919091013590565b600060208284031215613c1b57600080fd5b81356103c681613b7a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c7857613c78613c26565b60405290565b6040516060810167ffffffffffffffff81118282101715613c7857613c78613c26565b60405160a0810167ffffffffffffffff81118282101715613c7857613c78613c26565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613d0b57613d0b613c26565b604052919050565b600067ffffffffffffffff821115613d2d57613d2d613c26565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000613d6c613d6784613d13565b613cc4565b9050828152838383011115613d8057600080fd5b828260208301376000602084830101529392505050565b600082601f830112613da857600080fd5b6103c683833560208501613d59565b600067ffffffffffffffff821115613dd157613dd1613c26565b5060051b60200190565b600082601f830112613dec57600080fd5b81356020613dfc613d6783613db7565b82815260059290921b84018101918181019086841115613e1b57600080fd5b8286015b84811015613e365780358352918301918301613e1f565b509695505050505050565b600060808284031215613e5357600080fd5b613e5b613c55565b9050813567ffffffffffffffff80821115613e7557600080fd5b818401915084601f830112613e8957600080fd5b81356020613e99613d6783613db7565b82815260059290921b84018101918181019088841115613eb857600080fd5b8286015b84811015613f0557803586811115613ed45760008081fd5b8701603f81018b13613ee65760008081fd5b613ef78b8683013560408401613d59565b845250918301918301613ebc565b5086525085810135935082841115613f1c57600080fd5b613f2887858801613ddb565b8186015250505050604082013560408201526060820135606082015292915050565b600060208284031215613f5c57600080fd5b813567ffffffffffffffff80821115613f7457600080fd5b9083019060608286031215613f8857600080fd5b613f90613c7e565b82358015158114613fa057600080fd5b8152602083013582811115613fb457600080fd5b830160808188031215613fc657600080fd5b613fce613c55565b813584811115613fdd57600080fd5b613fe989828501613d97565b825250602082013584811115613ffe57600080fd5b61400a89828501613d97565b602083015250604082013561401e81613b7a565b8060408301525060608201356060820152806020840152505060408301358281111561404957600080fd5b61405587828601613e41565b60408301525095945050505050565b60008083601f84011261407657600080fd5b50813567ffffffffffffffff81111561408e57600080fd5b6020830191508360208285010111156140a657600080fd5b9250929050565b600080600080606085870312156140c357600080fd5b84356140ce81613b7a565b935060208501359250604085013567ffffffffffffffff8111156140f157600080fd5b6140fd87828801614064565b95989497509550505050565b60008060006040848603121561411e57600080fd5b833561412981613b7a565b9250602084013567ffffffffffffffff81111561414557600080fd5b61415186828701614064565b9497909650939450505050565b6000806040838503121561417157600080fd5b823561417c81613b7a565b9150602083013561418c81613b7a565b809150509250929050565b600181811c908216806141ab57607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614227576142276141e5565b500190565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301528260608301528284608084013760006080848401015260807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905095945050505050565b6000828210156142b6576142b66141e5565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561431a578151875295820195908201906001016142fe565b509495945050505050565b80518252600060208083015160a08286015261434460a08601826142ea565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156143ba577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08683030184526143a8828651613b1d565b9487019493870193915060010161436e565b506060880151955088810360608a01526143d481876142ea565b95505050505050608083015184820360808601526143f282826142ea565b95945050505050565b6020815260006103c66020830184614325565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526143f26060830184614325565b600082601f83011261445857600080fd5b81516020614468613d6783613db7565b82815260059290921b8401810191818101908684111561448757600080fd5b8286015b84811015613e36578051835291830191830161448b565b600082601f8301126144b357600080fd5b815160206144c3613d6783613db7565b82815260059290921b840181019181810190868411156144e257600080fd5b8286015b84811015613e3657805167ffffffffffffffff8111156145065760008081fd5b8701603f810189136145185760008081fd5b84810151604061452a613d6783613d13565b8281528b8284860101111561453f5760008081fd5b61454e83898301848701613af1565b86525050509183019183016144e6565b60006020828403121561457057600080fd5b815167ffffffffffffffff8082111561458857600080fd5b9083019060a0828603121561459c57600080fd5b6145a4613ca1565b825181526020830151828111156145ba57600080fd5b6145c687828601614447565b6020830152506040830151828111156145de57600080fd5b6145ea878286016144a2565b60408301525060608301518281111561460257600080fd5b61460e87828601614447565b60608301525060808301518281111561462657600080fd5b61463287828601614447565b60808301525095945050505050565b600081526000825161465a816001850160208701613af1565b9190910160010192915050565b60006020828403121561467957600080fd5b81516103c681613b7a565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161470d81600e850160208701613af1565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614782576147826141e5565b500290565b6000826147965761479661471b565b500490565b6000826147aa576147aa61471b565b500690565b600181815b8085111561480857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147ee576147ee6141e5565b808516156147fb57918102915b93841c93908002906147b4565b509250929050565b60008261481f575060016103a1565b8161482c575060006103a1565b8160018114614842576002811461484c57614868565b60019150506103a1565b60ff84111561485d5761485d6141e5565b50506001821b6103a1565b5060208310610133831016604e8410600b841016171561488b575081810a6103a1565b61489583836147af565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c7576148c76141e5565b029392505050565b60006103c68383614810565b6000602082840312156148ed57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561494357815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614911565b5050508381038285015261495781866142ea565b9695505050505050565b60006020828403121561497357600080fd5b815167ffffffffffffffff81111561498a57600080fd5b6136ff84828501614447565b60006103c660ff84168361481056fea2646970667358221220f574c9550f66f4136490d1c31398b880561e03beaa5e50c1a75bd491923224f764736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506040516200441f3803806200441f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161437d620000a26000396000610894015260006108bb015261437d6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806395d89b41116100cd578063dd62ed3e11610081578063e053ea3111610066578063e053ea3114610320578063ea34554014610356578063f2cd6c081461036957600080fd5b8063dd62ed3e146102a2578063e0419ae3146102e857600080fd5b8063a457c2d7116100b2578063a457c2d714610269578063a9059cbb1461027c578063bb1757cf1461028f57600080fd5b806395d89b411461024e5780639a8d2ac81461025657600080fd5b8063313ce5671161012457806367676b111161010957806367676b11146101de57806370a08231146102035780638a200fff1461023957600080fd5b8063313ce567146101bc57806339509351146101cb57600080fd5b806306fdde0314610156578063095ea7b31461017457806318160ddd1461019757806323b872dd146101a9575b600080fd5b61015e6104f6565b60405161016b9190613593565b60405180910390f35b6101876101823660046135c8565b610588565b604051901515815260200161016b565b6035545b60405190815260200161016b565b6101876101b73660046135f4565b6105a2565b6040516012815260200161016b565b6101876101d93660046135c8565b6105c8565b6065546101879074010000000000000000000000000000000000000000900460ff1681565b61019b610211366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61024c61024736600461369b565b610614565b005b61015e61067b565b61024c6102643660046136f7565b61068a565b6101876102773660046135c8565b610ad8565b61018761028a3660046135c8565b610bb4565b61024c61029d366004613732565b610bc2565b61019b6102b0366004613787565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60408051808201825260008082526020918201819052825180840184528181528201818152835191825251918101919091520161016b565b61019b61032e366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b61019b610364366004613635565b610d68565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261215360e082015261215e61010082015261216961012082015261217461014082015261217f6101608201526121f26101808201526122586101a08201526122986101c08201526122cc6101e08201526123006102008201526123476102208201526123a46102408201526123dd61026082015261241b61028082015261246d6102a08201526124ca6102c08201526124fe6102e08201526125326103008201526125646103208201526125966103408201526125c86103608201526125f56103808201526126506103a08201526126a66103c08201526126fd6103e08201526127546104008201526127886104208201526127b26104408201526128996104608201526128f56104808201526129716104a0820152612a2b6104c08201819052612ad56104e0830152610500820152612b55610520820152612c5d610540820152612d7b61056080830191909152815261015e565b606060368054610505906137c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906137c0565b801561057e5780601f106105535761010080835404028352916020019161057e565b820191906000526020600020905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b600033610596818585610e1d565b60019150505b92915050565b6000336105b0858285610fd0565b6105bb8585856110a7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610596908290869061060f90879061383d565b610e1d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b606060378054610505906137c0565b6000610696600161135a565b905080156106cb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61076f6106db6020840184613855565b6106e59080613893565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610727925050506020850185613855565b610735906020810190613893565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e092505050565b6107a661077f6020840184613855565b610790906060810190604001613635565b61079d6020850185613855565b60600135611581565b6107e66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108476040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610807579050509050818160008151811061087057610870613927565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108e76040890189613956565b856040518463ffffffff1660e01b815260040161090693929190613b02565b6000604051808303816000875af1158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096b9190810190613cb4565b9050610976816116a1565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109c86020860186613d5d565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790557f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a3533610a3f6020880188613d5d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301520160405180910390a15050508015610ad457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610672565b610ba98286868403610e1d565b506001949350505050565b6000336105968185856110a7565b60655474010000000000000000000000000000000000000000900460ff16610c63573373ffffffffffffffffffffffffffffffffffffffff841614610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610672565b6000610c6e84610d68565b9050610c7a8482611581565b610ca87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361172c565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4333858585604051610d5a9493929190613d7f565b60405180910390a150505050565b6065546000908190610d9890610d939073ffffffffffffffffffffffffffffffffffffffff166117d2565b611800565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610de78284600061196c565b5060208301518351610dfb90600190613db9565b81518110610e0b57610e0b613927565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8216610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110a15781811015611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610672565b6110a18484848403610e1d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff82166111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906112e790849061383d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134d91815260200190565b60405180910390a36110a1565b60008054610100900460ff1615611411578160ff16600114801561137d5750303b155b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b506000919050565b60005460ff8084169116106114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600054610100900460ff16611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b610ad48282611c45565b73ffffffffffffffffffffffffffffffffffffffff82166115fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610672565b8060356000828254611610919061383d565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061164a90849061383d565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116cc836040516020016116b89190613dd0565b604051602081830303815290604052611d03565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611726576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600082600881111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b6000855b858110156117c65763ffffffff6020820290811b199890981685891b1797915060010161179e565b50959695505050505050565b606061059c8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d2f565b6118326040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118646040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611898576118986138f8565b6040519080825280602002602001820160405280156118c1578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156118f8576118f86138f8565b604051908082528060200260200182016040528015611921578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561195b578160208202602001840152815160200182019150600181019050611934565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c28576003890198508886015180601f1a975061ffff8160081c169850506006881015611ba057876119ef57866020028401518252602082019150611bb3565b6001881415611a0c57602087028301518252602082019150611bb3565b6002881415611a99578c518760200210611a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610672565b866020026020018d01518252602082019150611bb3565b6003881415611ae1576000611acf6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611bb3565b6004881415611afd57611af68d8d848a611e17565b9150611bb3565b606087611b2b578c604051602001611b159190613e26565b6040516020818303038152906040529050611b8a565b6001881415611b4457611b3d8d611f84565b9050611b8a565b6002881415611b60576020808e0151604051611b159201613efc565b6003881415611b8a578c516040805160208101929092520160405160208183030381529060405290505b805115611b9a57611b9a816120c1565b50611bb3565b87611baf888463ffffffff8416565b9250505b60208c0151518c511115611c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610672565b6119aa565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b8151611cef906036906020850190613484565b508051611c40906037906020840190613484565b6060815182604051602001611d19929190613f61565b6040516020818303038152906040529050919050565b6060833b80611d4e5750506040805160208101909152600081526105c1565b80841115611d6c5750506040805160208101909152600081526105c1565b83831015611db7576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610672565b8383038482036000828210611dcc5782611dce565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611e5657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ea1565b8260011415611e7a57506fffffffffffffffffffffffffffffffff90506080611ea1565b8260021415611e96575067ffffffffffffffff90506040611ea1565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611ec457611ec46138f8565b604051908082528060200260200182016040528015611eed578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f14578151815260209182019101611efc565b505060608b015160808c015160209081029091010160005b610100811015611f725760208502830182845b82811015611f5b578051841c8a16825260209182019101611f3f565b505050611f698e8e8b61196c565b9b508501611f2c565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611fd09190613efc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261200c9291602001613ff8565b604051602081830303815290604052905060005b8560400151518110156120b857818660400151828151811061204457612044613927565b60200260200101515160001b8760400151838151811061206657612066613927565b60200260200101516040516020016120809392919061401e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612020565b50949350505050565b612150816040516024016120d59190613593565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612f78565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e5826121df858a612f99565b9061301a565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e582612252858a612f99565b90613039565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c8287612f99565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c828761304e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c82876130ac565b600060208302820380516000602083015b85811015612339578051830191508282101561232c57600080fd5b9091508190602001612311565b505081526020019392505050565b6020828102820380516000928201835b858210801561238557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156123395750805160209091019061239d83826130f7565b9250612357565b600060208302820380516000602083015b8581101561233957805183039150828211156123d057600080fd5b90915081906020016123b5565b6020828102820380516000928201835b85821080156123fc5750826000105b15612339575080516020909101906124148382613133565b92506123ed565b60006020830282038051600080602084015b8681101561245e57831561245657805192508284029150828483041461245257600080fd5b8193505b60200161242d565b50505081526020019392505050565b6020828102820380516000928201835b85821080156124ab57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612339575080516020909101906124c38382613149565b925061247d565b600060208302820380516000602083015b858110156123395780519150816124f157600080fd5b91819004916020016124db565b600060208302820380516000602083015b8581101561233957805191508161252557600080fd5b918190069160200161250f565b6020828102820380516000928201835b858210156123395750805160209091019061255d8184614175565b9250612542565b6020828102820380516000928201835b85821015612339575080518281101561258b578092505b602082019150612574565b6020828102820380516000928201835b8582101561233957508051828111156125bd578092505b6020820191506125a6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561277d578051612775576000825261277d565b60200161275e565b506020019392505050565b6000602083028203805b8381101561277d57805180156127a957825261277d565b50602001612792565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e59190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e58383613178565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856129628585858561172c565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561299f5761299f6138f8565b6040519080825280602002602001820160405280156129c8578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612a04578151816020018601526020820191506020810190506129e2565b50505190506000612a17838389896131d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612858565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228c9190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3a919061419a565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6d9190614181565b909452509395945050505050565b60008060008467ffffffffffffffff811115612d9957612d996138f8565b604051908082528060200260200182016040528015612dc2578160200160208202803683370190505b50905060008567ffffffffffffffff811115612de057612de06138f8565b604051908082528060200260200182016040528015612e09578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e5e578251815260209283019201612e46565b5050602088028101602084015b81831015612e83578251815260209283019201612e6b565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612edd90879087906004016141b7565b600060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f40919081019061421a565b9050846020820160208a0281015b80821015612f69578151835260209283019290910190612f4e565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415612fae578391505061059c565b8260121115612fda57506012829003612fc881600a614175565b612fd290856142c0565b91505061059c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161300981600a614175565b612fd290856142fd565b5092915050565b6000670de0b6b3a764000061302f83856142c0565b6105c191906142fd565b60008161302f670de0b6b3a7640000856142c0565b6000806012831415613063578391505061059c565b826012111561307d5750601282900361300981600a614175565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612fc881600a614175565b600081810b6130bc57508161059c565b60008260000b13156130e4576130d382600a614338565b6130dd90846142c0565b905061059c565b60ff60008390031661300981600a614175565b6000828201838110613109578061312b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116131435760006105c1565b50900390565b6000826131585750600061059c565b8282028284828161316b5761316b613f32565b041415613109578061312b565b60008060015b600881116131cf5760006131928683613327565b905060006131a08684613327565b905060006131ae8383613133565b90506131be8560018603836133d4565b9450506001909201915061317e9050565b509392505050565b835160009081908190819060015b600881116133195760009250828761321e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613222565b5060005b60005b838110156132d7576132508c828151811061324257613242613927565b602002602001015184613327565b95508a86116132a2578861326f57613268868361345e565b9150613299565b6001891415613282576132688683613474565b600289148015613290575084155b15613299578591505b600194506132cf565b896132cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506132d7565b600101613225565b508361330057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61330e8660018403836133d4565b9550506001016131e5565b509298975050505050505050565b6000816008811115613395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b826133a35760009150613013565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b505060209190910290811b63ffffffff90911b19919091161790565b600081831061346d57816105c1565b5090919050565b60008183101561346d57816105c1565b828054613490906137c0565b90600052602060002090601f0160209004810192826134b257600085556134f8565b82601f106134cb57805160ff19168380011785556134f8565b828001600101855582156134f8579182015b828111156134f85782518255916020019190600101906134dd565b50613504929150613508565b5090565b5b808211156135045760008155600101613509565b60005b83811015613538578181015183820152602001613520565b838111156110a15750506000910152565b6000815180845261356181602086016020860161351d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105c16020830184613549565b73ffffffffffffffffffffffffffffffffffffffff8116811461215057600080fd5b600080604083850312156135db57600080fd5b82356135e6816135a6565b946020939093013593505050565b60008060006060848603121561360957600080fd5b8335613614816135a6565b92506020840135613624816135a6565b929592945050506040919091013590565b60006020828403121561364757600080fd5b81356105c1816135a6565b60008083601f84011261366457600080fd5b50813567ffffffffffffffff81111561367c57600080fd5b60208301915083602082850101111561369457600080fd5b9250929050565b600080600080606085870312156136b157600080fd5b84356136bc816135a6565b935060208501359250604085013567ffffffffffffffff8111156136df57600080fd5b6136eb87828801613652565b95989497509550505050565b60006020828403121561370957600080fd5b813567ffffffffffffffff81111561372057600080fd5b8201606081850312156105c157600080fd5b60008060006040848603121561374757600080fd5b8335613752816135a6565b9250602084013567ffffffffffffffff81111561376e57600080fd5b61377a86828701613652565b9497909650939450505050565b6000806040838503121561379a57600080fd5b82356137a5816135a6565b915060208301356137b5816135a6565b809150509250929050565b600181811c908216806137d457607f821691505b60208210811415611726577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156138505761385061380e565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261388957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138c857600080fd5b83018035915067ffffffffffffffff8211156138e357600080fd5b60200191503681900382131561369457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261388957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126139bf57600080fd5b830160208101925035905067ffffffffffffffff8111156139df57600080fd5b8060051b360383131561369457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613a6c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015613af757815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101613a9d565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301613b33868761398a565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015613bfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112613bb457600080fd5b8501803567ffffffffffffffff811115613bcd57600080fd5b803603871315613bdc57600080fd5b613be988828b85016139f1565b975050509186019190860190600101613b53565b5050505050613c0e8287018761398a565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613c45828483613a3a565b925050508281036040840152613c5b8185613a89565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cac57613cac6138f8565b604052919050565b600060208284031215613cc657600080fd5b815167ffffffffffffffff80821115613cde57600080fd5b818401915084601f830112613cf257600080fd5b815181811115613d0457613d046138f8565b613d3560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c65565b9150808252856020828501011115613d4c57600080fd5b6120b881602084016020860161351d565b600060208284031215613d6f57600080fd5b813580151581146105c157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152613c5b6060830184866139f1565b600082821015613dcb57613dcb61380e565b500390565b6000815260008251613de981600185016020870161351d565b9190910160010192915050565b600081518084526020808501945080840160005b83811015613af757815187529582019590820190600101613e0a565b600060208083528351818401528084015160a06040850152613e4b60c0850182613df6565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015613ec45784878303018452613eb2828751613549565b95880195938801939150600101613e98565b5060608a01519650838982030160808a0152613ee08188613df6565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015613f2657815185529382019390820190600101613f0a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613fea81600e85016020870161351d565b91909101600e019392505050565b8281526000825161401081602085016020870161351d565b919091016020019392505050565b6000845161403081846020890161351d565b8201848152835161404881602080850190880161351d565b0160200195945050505050565b600181815b808511156140ae57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156140945761409461380e565b808516156140a157918102915b93841c939080029061405a565b509250929050565b6000826140c55750600161059c565b816140d25750600061059c565b81600181146140e857600281146140f25761410e565b600191505061059c565b60ff8411156141035761410361380e565b50506001821b61059c565b5060208310610133831016604e8410600b8410161715614131575081810a61059c565b61413b8383614055565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561416d5761416d61380e565b029392505050565b60006105c183836140b6565b60006020828403121561419357600080fd5b5051919050565b6000602082840312156141ac57600080fd5b81516105c1816135a6565b604080825283519082018190526000906020906060840190828701845b8281101561420657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016141d4565b50505083810382850152613c5b8186613df6565b6000602080838503121561422d57600080fd5b825167ffffffffffffffff8082111561424557600080fd5b818501915085601f83011261425957600080fd5b81518181111561426b5761426b6138f8565b8060051b915061427c848301613c65565b818152918301840191848101908884111561429657600080fd5b938501935b838510156142b45784518252938501939085019061429b565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f8576142f861380e565b500290565b600082614333577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006105c160ff8416836140b656fea264697066735822122059380f529cfa2de509d5e04383eec1f4f77c87f8c186c3c99f7a53c8a890ad5564736f6c634300080a0033"; type EmissionsERC20ConstructorParams = | [signer?: Signer] @@ -632,14 +627,19 @@ export class EmissionsERC20__factory extends ContractFactory { } deploy( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): Promise { - return super.deploy(overrides || {}) as Promise; + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; } getDeployTransaction( + vmStateBuilder_: string, overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); } attach(address: string): EmissionsERC20 { return super.attach(address) as EmissionsERC20; diff --git a/src/typechain/factories/FixedPointMathOpsTest__factory.ts b/src/typechain/factories/FixedPointMathOpsTest__factory.ts deleted file mode 100644 index 75c8f7b..0000000 --- a/src/typechain/factories/FixedPointMathOpsTest__factory.ts +++ /dev/null @@ -1,235 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - FixedPointMathOpsTest, - FixedPointMathOpsTestInterface, - StateConfigStruct, -} from "../FixedPointMathOpsTest"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, - { - inputs: [], - name: "run", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "runState", - outputs: [ - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - internalType: "struct State", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162001c0838038062001c088339810160408190526200003491620003fd565b60056080526200004e620000488262000061565b6200019b565b6001600160a01b031660a0525062000759565b620000946040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151620000d45760405162461bcd60e51b8152602060048201526009602482015268305f534f555243455360b81b604482015260640160405180910390fd5b6040518060a001604052806000815260200183604001516001600160401b03811115620001055762000105620002bd565b6040519080825280602002602001820160405280156200012f578160200160208202803683370190505b508152602001836000015181526020018360200151815260200183606001516001600160401b03811115620001685762000168620002bd565b60405190808252806020026020018201604052801562000192578160200160208202803683370190505b50905292915050565b600080620001d583604051602001620001b5919062000694565b6040516020818303038152906040526200021a60201b6200012f1760201c565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516200020c93929190620006b0565b60405180910390a192915050565b6000806200025483604051602001620002349190620006de565b6040516020818303038152906040526200028f60201b620001ba1760201c565b90508051602082016000f091506001600160a01b038216620002895760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620002a792919062000706565b6040516020818303038152906040529050919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620002f857620002f8620002bd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003295762000329620002bd565b604052919050565b60006001600160401b038211156200034d576200034d620002bd565b5060051b60200190565b60005b83811015620003745781810151838201526020016200035a565b8381111562000384576000848401525b50505050565b600082601f8301126200039c57600080fd5b81516020620003b5620003af8362000331565b620002fe565b82815260059290921b84018101918181019086841115620003d557600080fd5b8286015b84811015620003f25780518352918301918301620003d9565b509695505050505050565b600060208083850312156200041157600080fd5b82516001600160401b03808211156200042957600080fd5b90840190608082870312156200043e57600080fd5b62000448620002d3565b8251828111156200045857600080fd5b8301601f810188136200046a57600080fd5b80516200047b620003af8262000331565b81815260059190911b8201860190868101908a8311156200049b57600080fd5b8784015b838110156200053157805187811115620004b95760008081fd5b8501603f81018d13620004cc5760008081fd5b89810151604089821115620004e557620004e5620002bd565b620004f9601f8301601f19168d01620002fe565b8281528f828486010111156200050f5760008081fd5b62000520838e830184870162000357565b86525050509188019188016200049f565b50845250505082840151828111156200054957600080fd5b62000557888286016200038a565b858301525060408301516040820152606083015160608201528094505050505092915050565b600081518084526020808501945080840160005b83811015620005af5781518752958201959082019060010162000591565b509495945050505050565b80518252600060208083015160a082860152620005db60a08601826200057d565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156200064f57601f19808784030185528551805180855262000630818b87018c850162000357565b9689019695890195601f01909116929092018701915060010162000605565b506060880151955088810360608a01526200066b81876200057d565b95505050505050608083015184820360808601526200068b82826200057d565b95945050505050565b602081526000620006a96020830184620005ba565b9392505050565b6001600160a01b038481168252831660208201526060604082018190526000906200068b90830184620005ba565b6000815260008251620006f981600185016020870162000357565b9190910160010192915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015281516000906200074b81600e85016020870162000357565b91909101600e019392505050565b60805160a05161148a6200077e600039600060a8015260006106ef015261148a6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806345c6a7a61461003b578063c040622614610059575b600080fd5b61004361006f565b6040516100509190610d2d565b60405180910390f35b6100616100ee565b604051908152602001610050565b6100a16040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b60006100cc7f00000000000000000000000000000000000000000000000000000000000000006101e6565b90506100e96040518060200160405280600081525082600061023a565b919050565b6000806100f961006f565b90508060200151600182600001516101119190610e41565b8151811061012157610121610e58565b602002602001015191505090565b60008061015a836040516020016101469190610e87565b6040516020818303038152906040526101ba565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166101b4576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101d0929190610ead565b6040516020818303038152906040529050919050565b6102186040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610221826104c3565b806020019051810190610234919061117c565b92915050565b602082015151825111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064015b60405180910390fd5b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156104b6576002880197508784015180601e1a975080601f1a965050600587101561043557600187141561034d5781608087166103185750825b607f87168151811061032957600080fd5b8b516020820260200183015160208202602001850152600181018d52505050610441565b600287141561038457895180871061036457600080fd5b6020870260200182015160208202602001830152600181018b5250610441565b600387141561039d576103988b8b886104f1565b610441565b60048714156103ce576103988a6040516020016103ba9190610d2d565b604051602081830303815290604052610657565b86610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016102a6565b6104418b8b89896106e9565b60208a0151518a5111156104b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102a6565b6102db565b5050505050505050505050565b60606102348260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61071c565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561055557610555610f44565b60405190808252806020026020018201604052801561057e578160200160208202803683370190505b50905060005b828110156105d557876020015181896000015101815181106105a8576105a8610e58565b60200260200101518282815181106105c2576105c2610e58565b6020908102919091010152600101610584565b5060005b61010081101561064c5760005b83811015610639578482860384838151811061060457610604610e58565b6020026020010151901b901c8960800151828151811061062657610626610e58565b60209081029190910101526001016105e6565b5061064589898861023a565b84016105d9565b505050505050505050565b6106e68160405160240161066b919061125f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052610805565b50565b610716837f0000000000000000000000000000000000000000000000000000000000000000840383610826565b50505050565b6060833b8061073b5750506040805160208101909152600081526107fe565b808411156107595750506040805160208101909152600081526107fe565b838310156107a4576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102a6565b83830384820360008282106107b957826107bb565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60078210610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102a6565b60028210156109dc5782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe018261093b57836020015181600101815181106108db576108db610e58565b602002602001015161091383866020015184815181106108fd576108fd610e58565b6020026020010151610b5990919063ffffffff16565b028460200151828151811061092a5761092a610e58565b6020026020010181815250506109b0565b60018314156109b0578360200151816001018151811061095d5761095d610e58565b602002602001015161097f83866020015184815181106108fd576108fd610e58565b8161098c5761098c611272565b04846020015182815181106109a3576109a3610e58565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b6005821015610aed5782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016002831415610a5357610a2c82856020015183815181106108fd576108fd610e58565b84602001518281518110610a4257610a42610e58565b602002602001018181525050610716565b6003831415610a8c57610a2c8285602001518381518110610a7657610a76610e58565b6020026020010151610bd390919063ffffffff16565b600483141561071657610ac58285602001518381518110610aaf57610aaf610e58565b6020026020010151610c3190919063ffffffff16565b84602001518281518110610adb57610adb610e58565b60200260200101818152505050505050565b6005821415610b2f57670de0b6b3a76400008360200151846000015181518110610b1957610b19610e58565b6020908102919091010152505080516001019052565b6006821415610b545760128360200151846000015181518110610b1957610b19610e58565b505050565b6000808260121415610b6e5783915050610234565b8260121115610b9a57506012829003610b8881600a6113c1565b610b9290856113cd565b915050610234565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201610bc981600a6113c1565b610b92908561140a565b6000806012831415610be85783915050610234565b8260121115610c0257506012829003610bc981600a6113c1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201610b8881600a6113c1565b600081810b610c41575081610234565b60008260000b1315610c6957610c5882600a611445565b610c6290846113cd565b9050610234565b60ff600083900316610bc981600a6113c1565b600081518084526020808501945080840160005b83811015610cac57815187529582019590820190600101610c90565b509495945050505050565b60005b83811015610cd2578181015183820152602001610cba565b838111156107165750506000910152565b60008151808452610cfb816020860160208601610cb7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a06040850152610d5260c0850182610c7c565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015610dcb5784878303018452610db9828751610ce3565b95880195938801939150600101610d9f565b5060608a01519650838982030160808a0152610de78188610c7c565b965050505060808701519250808685030160a08701525050610e098282610c7c565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610e5357610e53610e12565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815260008251610ea0816001850160208701610cb7565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251610f3681600e850160208701610cb7565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610f9657610f96610f44565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fe357610fe3610f44565b604052919050565b600067ffffffffffffffff82111561100557611005610f44565b5060051b60200190565b600082601f83011261102057600080fd5b8151602061103561103083610feb565b610f9c565b82815260059290921b8401810191818101908684111561105457600080fd5b8286015b8481101561106f5780518352918301918301611058565b509695505050505050565b6000601f838184011261108c57600080fd5b8251602061109c61103083610feb565b82815260059290921b850181019181810190878411156110bb57600080fd5b8287015b8481101561117057805167ffffffffffffffff808211156110e05760008081fd5b818a0191508a603f8301126110f55760008081fd5b8582015160408282111561110b5761110b610f44565b61113a887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c85011601610f9c565b92508183528c818386010111156111515760008081fd5b61116082898501838701610cb7565b50508452509183019183016110bf565b50979650505050505050565b60006020828403121561118e57600080fd5b815167ffffffffffffffff808211156111a657600080fd5b9083019060a082860312156111ba57600080fd5b6111c2610f73565b825181526020830151828111156111d857600080fd5b6111e48782860161100f565b6020830152506040830151828111156111fc57600080fd5b6112088782860161107a565b60408301525060608301518281111561122057600080fd5b61122c8782860161100f565b60608301525060808301518281111561124457600080fd5b6112508782860161100f565b60808301525095945050505050565b6020815260006107fe6020830184610ce3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600181815b808511156112fa57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112e0576112e0610e12565b808516156112ed57918102915b93841c93908002906112a6565b509250929050565b60008261131157506001610234565b8161131e57506000610234565b8160018114611334576002811461133e5761135a565b6001915050610234565b60ff84111561134f5761134f610e12565b50506001821b610234565b5060208310610133831016604e8410600b841016171561137d575081810a610234565b61138783836112a1565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156113b9576113b9610e12565b029392505050565b60006107fe8383611302565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561140557611405610e12565b500290565b600082611440577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006107fe60ff84168361130256fea264697066735822122069d2b92c76dfe1b7b89790669af33ca10040bafa2e604aeafb917a9a6182e45964736f6c634300080a0033"; - -type FixedPointMathOpsTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: FixedPointMathOpsTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class FixedPointMathOpsTest__factory extends ContractFactory { - constructor(...args: FixedPointMathOpsTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy( - config_, - overrides || {} - ) as Promise; - } - getDeployTransaction( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): FixedPointMathOpsTest { - return super.attach(address) as FixedPointMathOpsTest; - } - connect(signer: Signer): FixedPointMathOpsTest__factory { - return super.connect(signer) as FixedPointMathOpsTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): FixedPointMathOpsTestInterface { - return new utils.Interface(_abi) as FixedPointMathOpsTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): FixedPointMathOpsTest { - return new Contract( - address, - _abi, - signerOrProvider - ) as FixedPointMathOpsTest; - } -} diff --git a/src/typechain/factories/FnPtrsTest__factory.ts b/src/typechain/factories/FnPtrsTest__factory.ts new file mode 100644 index 0000000..b9d5cae --- /dev/null +++ b/src/typechain/factories/FnPtrsTest__factory.ts @@ -0,0 +1,142 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { FnPtrsTest, FnPtrsTestInterface } from "../FnPtrsTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c060405234801561001057600080fd5b506040516109d83803806109d883398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161093f6100996000396000610191015260006101cd015261093f6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b61005961005436600461037e565b6100b8565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6040805180820182526000602082015260108152905161008f91906103f0565b6100f86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6101596040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610119579050509050818160008151811061018257610182610470565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161020c9392919061061e565b6000604051808303816000875af115801561022b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102719190810190610781565b905061027c816102c7565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806102f2836040516020016102de919061084c565b604051602081830303815290604052610352565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661034c576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610368929190610872565b6040516020818303038152906040529050919050565b60006020828403121561039057600080fd5b813567ffffffffffffffff8111156103a757600080fd5b8201604081850312156103b957600080fd5b9392505050565b60005b838110156103db5781810151838201526020016103c3565b838111156103ea576000848401525b50505050565b602081526000825180602084015261040f8160408501602087016103c0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126104d457600080fd5b830160208101925035905067ffffffffffffffff8111156104f457600080fd5b8060051b360383131561050657600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561058857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561061357815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016105b9565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161064f868761049f565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015610719577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126106d057600080fd5b8501803567ffffffffffffffff8111156106e957600080fd5b8036038713156106f857600080fd5b61070588828b850161050d565b97505050918601919086019060010161066f565b505050505061072a8287018761049f565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152610761828483610556565b92505050828103604084015261077781856105a5565b9695505050505050565b60006020828403121561079357600080fd5b815167ffffffffffffffff808211156107ab57600080fd5b818401915084601f8301126107bf57600080fd5b8151818111156107d1576107d1610441565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561081757610817610441565b8160405282815287602084870101111561083057600080fd5b6108418360208301602088016103c0565b979650505050505050565b60008152600082516108658160018501602087016103c0565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108fb81600e8501602087016103c0565b91909101600e01939250505056fea2646970667358221220c4e2496ef83eb61cc73cb81884f34ce54404adef097526965fdd1f5ff7a02a7c64736f6c634300080a0033"; + +type FnPtrsTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FnPtrsTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class FnPtrsTest__factory extends ContractFactory { + constructor(...args: FnPtrsTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): FnPtrsTest { + return super.attach(address) as FnPtrsTest; + } + connect(signer: Signer): FnPtrsTest__factory { + return super.connect(signer) as FnPtrsTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FnPtrsTestInterface { + return new utils.Interface(_abi) as FnPtrsTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): FnPtrsTest { + return new Contract(address, _abi, signerOrProvider) as FnPtrsTest; + } +} diff --git a/src/typechain/factories/GatedNFTFactory__factory.ts b/src/typechain/factories/GatedNFTFactory__factory.ts index f905725..637f39b 100644 --- a/src/typechain/factories/GatedNFTFactory__factory.ts +++ b/src/typechain/factories/GatedNFTFactory__factory.ts @@ -184,7 +184,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61354b80610c5e83390190565b608051610ba06100be60003960006103770152610ba06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063eec513d014610083578063fc91a89714610096575b600080fd5b610059610054366004610525565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046107c0565b61028d565b6100cf6100a436600461085c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610347565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49338b8b8b8b8b8b8b8b6040516020016102cc99989796959493929190610926565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102f79190610a8b565b6020604051808303816000875af1158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a9190610a9e565b9998505050505050505050565b600080808080808080808061035e8b8d018d610abb565b985098509850985098509850985098509850600061039b7f0000000000000000000000000000000000000000000000000000000000000000610443565b6040517f911e29e300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063911e29e390610400908d908d908d908d908d908d908d908d908d90600401610926565b600060405180830381600087803b15801561041a57600080fd5b505af115801561042e573d6000803e3d6000fd5b50929f9e505050505050505050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b6000806020838503121561053857600080fd5b823567ffffffffffffffff8082111561055057600080fd5b818501915085601f83011261056457600080fd5b81358181111561057357600080fd5b86602082850101111561058557600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156105e9576105e9610597565b60405290565b600082601f83011261060057600080fd5b813567ffffffffffffffff8082111561061b5761061b610597565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561066157610661610597565b8160405283815286602085880101111561067a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060e082840312156106ac57600080fd5b6106b46105c6565b9050813567ffffffffffffffff808211156106ce57600080fd5b6106da858386016105ef565b835260208401359150808211156106f057600080fd5b6106fc858386016105ef565b6020840152604084013591508082111561071557600080fd5b610721858386016105ef565b6040840152606084013591508082111561073a57600080fd5b610746858386016105ef565b6060840152608084013591508082111561075f57600080fd5b5061076c848285016105ef565b60808301525060a082013560a082015260c082013560c082015292915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107ae57600080fd5b50565b80356003811061052057600080fd5b600080600080600080600080610100898b0312156107dd57600080fd5b883567ffffffffffffffff8111156107f457600080fd5b6108008b828c0161069a565b98505060208901356108118161078c565b9650604089013595506060890135945061082d60808a016107b1565b935060a0890135925060c08901356108448161078c565b8092505060e089013590509295985092959890939650565b60006020828403121561086e57600080fd5b81356108798161078c565b9392505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60038110610922577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061012073ffffffffffffffffffffffffffffffffffffffff8c1683528060208401528a5160e082850152610960610200850182610880565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0808584030161014086015261099e8383610880565b925060408d0151915080858403016101608601526109bc8383610880565b925060608d0151915080858403016101808601526109da8383610880565b925060808d0151915080858403016101a0860152506109f98282610880565b60a08d01516101c086015260c08d01516101e086015273ffffffffffffffffffffffffffffffffffffffff8c1660408601529250610a35915050565b876060830152866080830152610a4e60a08301876108eb565b8460c0830152610a7660e083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101008301529a9950505050505050505050565b6020815260006108796020830184610880565b600060208284031215610ab057600080fd5b81516108798161078c565b60008060008060008060008060006101208a8c031215610ada57600080fd5b8935610ae58161078c565b985060208a013567ffffffffffffffff811115610b0157600080fd5b610b0d8c828d0161069a565b98505060408a0135610b1e8161078c565b965060608a0135955060808a01359450610b3a60a08b016107b1565b935060c08a0135925060e08a0135610b518161078c565b809250506101008a01359050929598509295985092959856fea2646970667358221220f471f4cb7b15057db412636e1aef069502de8be49184214c1f8a73d8343a69c464736f6c634300080a0033608060405234801561001057600080fd5b5061352b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046128fe565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612998565b6101d76101d23660046129ab565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a3660046129f6565b61059b565b005b61020f61021f366004612a22565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612a3f565b61090c565b61028061027b366004612a80565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612a3f565b610a34565b6101d76102cd3660046129ab565b610a4f565b61024c6102e0366004612a22565b610b01565b61024c6102f3366004612a22565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612bbd565b610e6d565b6101b76111f8565b61020f610347366004612d3c565b611207565b61020f61035a366004612d7a565b611216565b6101b761036d3660046129ab565b6112be565b61019a610380366004612dfa565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612a22565b611354565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610424575061042482611484565b92915050565b60606065805461043990612e28565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612e28565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e8383611567565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612eab565b905090565b6109163382611607565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611777565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612ec2565b610a289190612eff565b915091505b9250929050565b61074e83838360405180602001604052806000815250611216565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612f3a565b4361195a565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d048382611994565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b60006119ae565b565b600054610100900460ff16610e885760005460ff1615610e8c565b303b155b610f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b600054610100900460ff16158015610f5757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8316610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610fe689600001518a60200151611a25565b610fee611ac6565b610ff78a611354565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91611051918391602090910190612837565b50602082810151805161106a9260018501920190612837565b5060408201518051611086916002840191602090910190612837565b50606082015180516110a2916003840191602090910190612837565b50608082015180516110be916004840191602090910190612837565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561111c5761111c612f53565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b6040516111b59a99989796959493929190612fbd565b60405180910390a180156111ec57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050505050565b60606066805461043990612e28565b611212338383611b65565b5050565b6112203383611607565b6112ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b6112b884848484611c93565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611d36565b60975473ffffffffffffffffffffffffffffffffffffffff1633146113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b611481816119ae565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061151757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906115c182610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff166116b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b60006116c383610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061173257508373ffffffffffffffffffffffffffffffffffffffff1661171a846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b8061176f575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b600060d45460ff16600281111561179057611790612f53565b14156117f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561181157611811612f53565b14156118dc5760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261187492169063e053ea3190602401610b5f565b10156118dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d3546118e883610d12565b1061194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611d91565b6000805b600881101561198a57828160200285901c63ffffffff161115611982579050610424565b60010161195e565b5060089392505050565b611212828260405180602001604052806000815250611ff8565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b611212828261209b565b600054610100900460ff16611b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b612159565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611c9e848484611777565b611caa848484846121f9565b6112b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611d6d60ca60cc611d476123e9565b604051602001611d59939291906131ff565b60405160208183030381529060405261249c565b604051602001611d7d91906132d0565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611db182610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff8216611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b611f01600082611567565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290611f37908490612eab565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290611f72908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120028383612675565b61200f60008484846121f9565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b8151612145906065906020850190612837565b50805161074e906066906020840190612837565b600054610100900460ff166121f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b336119ae565b600073ffffffffffffffffffffffffffffffffffffffff84163b156123de576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061227090339089908890889060040161332d565b6020604051808303816000875af19250505080156122c9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526122c691810190613376565b60015b612393573d8080156122f7576040519150601f19603f3d011682016040523d82523d6000602084013e6122fc565b606091505b50805161238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061176f565b506001949350505050565b606060008060ca60040180546123fe90612e28565b905011905060008060ca600301805461241690612e28565b90501190508180156124255750805b156124555760405161243f9060ce9060cd90602001613393565b6040516020818303038152906040529250505090565b811561246d5760405161243f9060ce90602001613424565b80156124855760405161243f9060cd90602001613483565b604051806020016040528060008152509250505090565b60608151600014156124bc57505060408051602081019091526000815290565b60006040518060600160405280604081526020016134b660409139905060006003845160026124eb9190613315565b6124f59190612eff565b612500906004612ec2565b9050600061250f826020613315565b67ffffffffffffffff81111561252757612527612aa2565b6040519080825280601f01601f191660200182016040528015612551576020820181803683370190505b509050818152600183018586518101602084015b818310156125bd576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101612565565b6003895106600181146125d7576002811461262157612667565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152612667565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff161561277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906127b4908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461284390612e28565b90600052602060002090601f01602090048101928261286557600085556128ab565b82601f1061287e57805160ff19168380011785556128ab565b828001600101855582156128ab579182015b828111156128ab578251825591602001919060010190612890565b506128b79291506128bb565b5090565b5b808211156128b757600081556001016128bc565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461148157600080fd5b60006020828403121561291057600080fd5b813561291b816128d0565b9392505050565b60005b8381101561293d578181015183820152602001612925565b838111156112b85750506000910152565b60008151808452612966816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061291b602083018461294e565b6000602082840312156129bd57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148157600080fd5b80356129f1816129c4565b919050565b60008060408385031215612a0957600080fd5b8235612a14816129c4565b946020939093013593505050565b600060208284031215612a3457600080fd5b813561291b816129c4565b600080600060608486031215612a5457600080fd5b8335612a5f816129c4565b92506020840135612a6f816129c4565b929592945050506040919091013590565b60008060408385031215612a9357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612af457612af4612aa2565b60405290565b600067ffffffffffffffff80841115612b1557612b15612aa2565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b5b57612b5b612aa2565b81604052809350858152868686011115612b7457600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612b9f57600080fd5b61291b83833560208501612afa565b8035600381106129f157600080fd5b60008060008060008060008060006101208a8c031215612bdc57600080fd5b8935612be7816129c4565b985060208a013567ffffffffffffffff80821115612c0457600080fd5b908b019060e0828e031215612c1857600080fd5b612c20612ad1565b823582811115612c2f57600080fd5b612c3b8f828601612b8e565b825250602083013582811115612c5057600080fd5b612c5c8f828601612b8e565b602083015250604083013582811115612c7457600080fd5b612c808f828601612b8e565b604083015250606083013582811115612c9857600080fd5b612ca48f828601612b8e565b606083015250608083013582811115612cbc57600080fd5b612cc88f828601612b8e565b60808301525060a083013560a082015260c083013560c0820152809a50505050612cf460408b016129e6565b965060608a0135955060808a01359450612d1060a08b01612bae565b935060c08a01359250612d2560e08b016129e6565b91506101008a013590509295985092959850929598565b60008060408385031215612d4f57600080fd5b8235612d5a816129c4565b915060208301358015158114612d6f57600080fd5b809150509250929050565b60008060008060808587031215612d9057600080fd5b8435612d9b816129c4565b93506020850135612dab816129c4565b925060408501359150606085013567ffffffffffffffff811115612dce57600080fd5b8501601f81018713612ddf57600080fd5b612dee87823560208401612afa565b91505092959194509250565b60008060408385031215612e0d57600080fd5b8235612e18816129c4565b91506020830135612d6f816129c4565b600181811c90821680612e3c57607f821691505b60208210811415612e76577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ebd57612ebd612e7c565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612efa57612efa612e7c565b500290565b600082612f35577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612f4c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110612fb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e08285015261300161022085018261294e565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0808584030161016086015261303f838361294e565b925060408d01519150808584030161018086015261305d838361294e565b925060608d0151915080858403016101a086015261307b838361294e565b925060808d0151915080858403016101c08601525061309a828261294e565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506130d6915050565b8760808301528660a08301526130ef60c0830187612f82565b8460e083015261311861010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061314857607f831692505b6020808410821415613183577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561319757600181146131c6576131f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506131f3565b60008881526020902060005b868110156131eb5781548b8201529085019083016131d2565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613231600a83018661312e565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613261601382018661312e565b90507f220000000000000000000000000000000000000000000000000000000000000081528351613299816001840160208801612922565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161330881601d850160208701612922565b91909101601d0192915050565b6000821982111561332857613328612e7c565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261336c608083018461294e565b9695505050505050565b60006020828403121561338857600080fd5b815161291b816128d0565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006133c5600c83018561312e565b7f222c2022616e696d6174696f6e5f75726c223a2022000000000000000000000081526133f5601582018561312e565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613456600c83018461312e565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613456601483018461312e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220aa91fffe016684114ae588f1dc7fb76b331009e5351e3c768f70c8b2c8dce14464736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61365c80610c5e83390190565b608051610ba06100be60003960006103770152610ba06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063eec513d014610083578063fc91a89714610096575b600080fd5b610059610054366004610525565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046107c0565b61028d565b6100cf6100a436600461085c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610347565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49338b8b8b8b8b8b8b8b6040516020016102cc99989796959493929190610926565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102f79190610a8b565b6020604051808303816000875af1158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a9190610a9e565b9998505050505050505050565b600080808080808080808061035e8b8d018d610abb565b985098509850985098509850985098509850600061039b7f0000000000000000000000000000000000000000000000000000000000000000610443565b6040517f911e29e300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063911e29e390610400908d908d908d908d908d908d908d908d908d90600401610926565b600060405180830381600087803b15801561041a57600080fd5b505af115801561042e573d6000803e3d6000fd5b50929f9e505050505050505050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b6000806020838503121561053857600080fd5b823567ffffffffffffffff8082111561055057600080fd5b818501915085601f83011261056457600080fd5b81358181111561057357600080fd5b86602082850101111561058557600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156105e9576105e9610597565b60405290565b600082601f83011261060057600080fd5b813567ffffffffffffffff8082111561061b5761061b610597565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561066157610661610597565b8160405283815286602085880101111561067a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060e082840312156106ac57600080fd5b6106b46105c6565b9050813567ffffffffffffffff808211156106ce57600080fd5b6106da858386016105ef565b835260208401359150808211156106f057600080fd5b6106fc858386016105ef565b6020840152604084013591508082111561071557600080fd5b610721858386016105ef565b6040840152606084013591508082111561073a57600080fd5b610746858386016105ef565b6060840152608084013591508082111561075f57600080fd5b5061076c848285016105ef565b60808301525060a082013560a082015260c082013560c082015292915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107ae57600080fd5b50565b80356003811061052057600080fd5b600080600080600080600080610100898b0312156107dd57600080fd5b883567ffffffffffffffff8111156107f457600080fd5b6108008b828c0161069a565b98505060208901356108118161078c565b9650604089013595506060890135945061082d60808a016107b1565b935060a0890135925060c08901356108448161078c565b8092505060e089013590509295985092959890939650565b60006020828403121561086e57600080fd5b81356108798161078c565b9392505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60038110610922577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061012073ffffffffffffffffffffffffffffffffffffffff8c1683528060208401528a5160e082850152610960610200850182610880565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0808584030161014086015261099e8383610880565b925060408d0151915080858403016101608601526109bc8383610880565b925060608d0151915080858403016101808601526109da8383610880565b925060808d0151915080858403016101a0860152506109f98282610880565b60a08d01516101c086015260c08d01516101e086015273ffffffffffffffffffffffffffffffffffffffff8c1660408601529250610a35915050565b876060830152866080830152610a4e60a08301876108eb565b8460c0830152610a7660e083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101008301529a9950505050505050505050565b6020815260006108796020830184610880565b600060208284031215610ab057600080fd5b81516108798161078c565b60008060008060008060008060006101208a8c031215610ada57600080fd5b8935610ae58161078c565b985060208a013567ffffffffffffffff811115610b0157600080fd5b610b0d8c828d0161069a565b98505060408a0135610b1e8161078c565b965060608a0135955060808a01359450610b3a60a08b016107b1565b935060c08a0135925060e08a0135610b518161078c565b809250506101008a01359050929598509295985092959856fea26469706673582212205f4af3bf6b3d0ce04751596e5d33599d75cd58a946280057b7cd72308ac1cf5964736f6c634300080a0033608060405234801561001057600080fd5b5061363c806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004612a14565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612aae565b6101d76101d2366004612ac1565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a366004612b07565b61059b565b005b61020f61021f366004612b33565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612b50565b61090c565b61028061027b366004612b91565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612b50565b610a34565b6101d76102cd366004612ac1565b610a4f565b61024c6102e0366004612b33565b610b01565b61024c6102f3366004612b33565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612cce565b610e6d565b6101b7611183565b61020f610347366004612e4d565b611192565b61020f61035a366004612e8b565b6111a1565b6101b761036d366004612ac1565b611249565b61019a610380366004612f0b565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612b33565b6112df565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061042457506104248261140f565b92915050565b60606065805461043990612f39565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612f39565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e83836114f2565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612fbc565b905090565b6109163382611592565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611702565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612fd3565b610a289190613010565b915091505b9250929050565b61074e838383604051806020016040528060008152506111a1565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba0919061304b565b436118e5565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d04838261191f565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b6000611939565b565b6000610e7960016119b0565b90508015610eae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8316610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610f3d89600001518a60200151611b3b565b610f45611bdc565b610f4e8a6112df565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91610fa891839160209091019061294d565b506020828101518051610fc1926001850192019061294d565b5060408201518051610fdd91600284019160209091019061294d565b5060608201518051610ff991600384019160209091019061294d565b506080820151805161101591600484019160209091019061294d565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561107357611073613064565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b60405161110c9a999897969594939291906130ce565b60405180910390a1801561117757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b60606066805461043990612f39565b61119d338383611c7b565b5050565b6111ab3383611592565b611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61124384848484611da9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166112d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611e4c565b60975473ffffffffffffffffffffffffffffffffffffffff163314611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b61140c81611939565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806114a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061154c82610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b600061164e83610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116bc575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b806116fa57508373ffffffffffffffffffffffffffffffffffffffff166116e2846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b600060d45460ff16600281111561171b5761171b613064565b1415611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561179c5761179c613064565b14156118675760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526117ff92169063e053ea3190602401610b5f565b1015611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d35461187383610d12565b106118da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611ea7565b6000805b600881101561191557828160200285901c63ffffffff16111561190d579050610424565b6001016118e9565b5060089392505050565b61119d82826040518060200160405280600081525061210e565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611a67578160ff1660011480156119d35750303b155b611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b506000919050565b60005460ff808416911610611afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b61119d82826121b1565b600054610100900460ff16611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b61226f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611db4848484611702565b611dc08484848461230f565b611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611e8360ca60cc611e5d6124ff565b604051602001611e6f93929190613310565b6040516020818303038152906040526125b2565b604051602001611e9391906133e1565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611ec782610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff821661200c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b6120176000826114f2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040812080546001929061204d908490612fbc565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290612088908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612118838361278b565b612125600084848461230f565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b815161225b90606590602085019061294d565b50805161074e90606690602084019061294d565b600054610100900460ff16612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b33611939565b600073ffffffffffffffffffffffffffffffffffffffff84163b156124f4576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061238690339089908890889060040161343e565b6020604051808303816000875af19250505080156123df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123dc91810190613487565b60015b6124a9573d80801561240d576040519150601f19603f3d011682016040523d82523d6000602084013e612412565b606091505b5080516124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506116fa565b506001949350505050565b606060008060ca600401805461251490612f39565b905011905060008060ca600301805461252c90612f39565b905011905081801561253b5750805b1561256b576040516125559060ce9060cd906020016134a4565b6040516020818303038152906040529250505090565b8115612583576040516125559060ce90602001613535565b801561259b576040516125559060cd90602001613594565b604051806020016040528060008152509250505090565b60608151600014156125d257505060408051602081019091526000815290565b60006040518060600160405280604081526020016135c760409139905060006003845160026126019190613426565b61260b9190613010565b612616906004612fd3565b90506000612625826020613426565b67ffffffffffffffff81111561263d5761263d612bb3565b6040519080825280601f01601f191660200182016040528015612667576020820181803683370190505b509050818152600183018586518101602084015b818310156126d3576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161267b565b6003895106600181146126ed57600281146127375761277d565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83015261277d565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906128ca908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461295990612f39565b90600052602060002090601f01602090048101928261297b57600085556129c1565b82601f1061299457805160ff19168380011785556129c1565b828001600101855582156129c1579182015b828111156129c15782518255916020019190600101906129a6565b506129cd9291506129d1565b5090565b5b808211156129cd57600081556001016129d2565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461140c57600080fd5b600060208284031215612a2657600080fd5b8135612a31816129e6565b9392505050565b60005b83811015612a53578181015183820152602001612a3b565b838111156112435750506000910152565b60008151808452612a7c816020860160208601612a38565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612a316020830184612a64565b600060208284031215612ad357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461140c57600080fd5b8035611b3681612ada565b60008060408385031215612b1a57600080fd5b8235612b2581612ada565b946020939093013593505050565b600060208284031215612b4557600080fd5b8135612a3181612ada565b600080600060608486031215612b6557600080fd5b8335612b7081612ada565b92506020840135612b8081612ada565b929592945050506040919091013590565b60008060408385031215612ba457600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612c0557612c05612bb3565b60405290565b600067ffffffffffffffff80841115612c2657612c26612bb3565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612c6c57612c6c612bb3565b81604052809350858152868686011115612c8557600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612cb057600080fd5b612a3183833560208501612c0b565b803560038110611b3657600080fd5b60008060008060008060008060006101208a8c031215612ced57600080fd5b8935612cf881612ada565b985060208a013567ffffffffffffffff80821115612d1557600080fd5b908b019060e0828e031215612d2957600080fd5b612d31612be2565b823582811115612d4057600080fd5b612d4c8f828601612c9f565b825250602083013582811115612d6157600080fd5b612d6d8f828601612c9f565b602083015250604083013582811115612d8557600080fd5b612d918f828601612c9f565b604083015250606083013582811115612da957600080fd5b612db58f828601612c9f565b606083015250608083013582811115612dcd57600080fd5b612dd98f828601612c9f565b60808301525060a083013560a082015260c083013560c0820152809a50505050612e0560408b01612afc565b965060608a0135955060808a01359450612e2160a08b01612cbf565b935060c08a01359250612e3660e08b01612afc565b91506101008a013590509295985092959850929598565b60008060408385031215612e6057600080fd5b8235612e6b81612ada565b915060208301358015158114612e8057600080fd5b809150509250929050565b60008060008060808587031215612ea157600080fd5b8435612eac81612ada565b93506020850135612ebc81612ada565b925060408501359150606085013567ffffffffffffffff811115612edf57600080fd5b8501601f81018713612ef057600080fd5b612eff87823560208401612c0b565b91505092959194509250565b60008060408385031215612f1e57600080fd5b8235612f2981612ada565b91506020830135612e8081612ada565b600181811c90821680612f4d57607f821691505b60208210811415612f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fce57612fce612f8d565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561300b5761300b612f8d565b500290565b600082613046577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561305d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106130ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e082850152613112610220850182612a64565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec080858403016101608601526131508383612a64565b925060408d01519150808584030161018086015261316e8383612a64565b925060608d0151915080858403016101a086015261318c8383612a64565b925060808d0151915080858403016101c0860152506131ab8282612a64565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506131e7915050565b8760808301528660a083015261320060c0830187613093565b8460e083015261322961010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061325957607f831692505b6020808410821415613294577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8180156132a857600181146132d757613304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650613304565b60008881526020902060005b868110156132fc5781548b8201529085019083016132e3565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613342600a83018661323f565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613372601382018661323f565b90507f2200000000000000000000000000000000000000000000000000000000000000815283516133aa816001840160208801612a38565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161341981601d850160208701612a38565b91909101601d0192915050565b6000821982111561343957613439612f8d565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261347d6080830184612a64565b9695505050505050565b60006020828403121561349957600080fd5b8151612a31816129e6565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006134d6600c83018561323f565b7f222c2022616e696d6174696f6e5f75726c223a202200000000000000000000008152613506601582018561323f565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613567600c83018461323f565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613567601483018461323f56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122047bc7ad223c6b3b593f6e327294d09e4f394e625614838958af76c60c89e5f4164736f6c634300080a0033"; type GatedNFTFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/GatedNFT__factory.ts b/src/typechain/factories/GatedNFT__factory.ts index 43c17d2..1919190 100644 --- a/src/typechain/factories/GatedNFT__factory.ts +++ b/src/typechain/factories/GatedNFT__factory.ts @@ -160,6 +160,19 @@ const _abi = [ name: "CreatedGatedNFT", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -685,7 +698,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061352b806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a6101953660046128fe565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612998565b6101d76101d23660046129ab565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a3660046129f6565b61059b565b005b61020f61021f366004612a22565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612a3f565b61090c565b61028061027b366004612a80565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612a3f565b610a34565b6101d76102cd3660046129ab565b610a4f565b61024c6102e0366004612a22565b610b01565b61024c6102f3366004612a22565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612bbd565b610e6d565b6101b76111f8565b61020f610347366004612d3c565b611207565b61020f61035a366004612d7a565b611216565b6101b761036d3660046129ab565b6112be565b61019a610380366004612dfa565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612a22565b611354565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161480610424575061042482611484565b92915050565b60606065805461043990612e28565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612e28565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e8383611567565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612eab565b905090565b6109163382611607565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611777565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612ec2565b610a289190612eff565b915091505b9250929050565b61074e83838360405180602001604052806000815250611216565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba09190612f3a565b4361195a565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d048382611994565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b60006119ae565b565b600054610100900460ff16610e885760005460ff1615610e8c565b303b155b610f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b600054610100900460ff16158015610f5757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8316610fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610fe689600001518a60200151611a25565b610fee611ac6565b610ff78a611354565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91611051918391602090910190612837565b50602082810151805161106a9260018501920190612837565b5060408201518051611086916002840191602090910190612837565b50606082015180516110a2916003840191602090910190612837565b50608082015180516110be916004840191602090910190612837565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561111c5761111c612f53565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b6040516111b59a99989796959493929190612fbd565b60405180910390a180156111ec57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50505050505050505050565b60606066805461043990612e28565b611212338383611b65565b5050565b6112203383611607565b6112ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b6112b884848484611c93565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1661134c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611d36565b60975473ffffffffffffffffffffffffffffffffffffffff1633146113d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611478576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b611481816119ae565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061151757507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906115c182610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff166116b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b60006116c383610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061173257508373ffffffffffffffffffffffffffffffffffffffff1661171a846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b8061176f575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b949350505050565b600060d45460ff16600281111561179057611790612f53565b14156117f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561181157611811612f53565b14156118dc5760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261187492169063e053ea3190602401610b5f565b10156118dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d3546118e883610d12565b1061194f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611d91565b6000805b600881101561198a57828160200285901c63ffffffff161115611982579050610424565b60010161195e565b5060089392505050565b611212828260405180602001604052806000815250611ff8565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff16611abc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b611212828261209b565b600054610100900460ff16611b5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b612159565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611bfb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611c9e848484611777565b611caa848484846121f9565b6112b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611d6d60ca60cc611d476123e9565b604051602001611d59939291906131ff565b60405160208183030381529060405261249c565b604051602001611d7d91906132d0565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611db182610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611e54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff8216611ef6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b611f01600082611567565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290611f37908490612eab565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290611f72908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6120028383612675565b61200f60008484846121f9565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b8151612145906065906020850190612837565b50805161074e906066906020840190612837565b600054610100900460ff166121f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b336119ae565b600073ffffffffffffffffffffffffffffffffffffffff84163b156123de576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061227090339089908890889060040161332d565b6020604051808303816000875af19250505080156122c9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526122c691810190613376565b60015b612393573d8080156122f7576040519150601f19603f3d011682016040523d82523d6000602084013e6122fc565b606091505b50805161238b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a020000000000000000000000000000000000000000000000000000000014905061176f565b506001949350505050565b606060008060ca60040180546123fe90612e28565b905011905060008060ca600301805461241690612e28565b90501190508180156124255750805b156124555760405161243f9060ce9060cd90602001613393565b6040516020818303038152906040529250505090565b811561246d5760405161243f9060ce90602001613424565b80156124855760405161243f9060cd90602001613483565b604051806020016040528060008152509250505090565b60608151600014156124bc57505060408051602081019091526000815290565b60006040518060600160405280604081526020016134b660409139905060006003845160026124eb9190613315565b6124f59190612eff565b612500906004612ec2565b9050600061250f826020613315565b67ffffffffffffffff81111561252757612527612aa2565b6040519080825280601f01601f191660200182016040528015612551576020820181803683370190505b509050818152600183018586518101602084015b818310156125bd576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f8116850151825350600101612565565b6003895106600181146125d7576002811461262157612667565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830152612667565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff82166126f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff161561277e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906127b4908490613315565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461284390612e28565b90600052602060002090601f01602090048101928261286557600085556128ab565b82601f1061287e57805160ff19168380011785556128ab565b828001600101855582156128ab579182015b828111156128ab578251825591602001919060010190612890565b506128b79291506128bb565b5090565b5b808211156128b757600081556001016128bc565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461148157600080fd5b60006020828403121561291057600080fd5b813561291b816128d0565b9392505050565b60005b8381101561293d578181015183820152602001612925565b838111156112b85750506000910152565b60008151808452612966816020860160208601612922565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061291b602083018461294e565b6000602082840312156129bd57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148157600080fd5b80356129f1816129c4565b919050565b60008060408385031215612a0957600080fd5b8235612a14816129c4565b946020939093013593505050565b600060208284031215612a3457600080fd5b813561291b816129c4565b600080600060608486031215612a5457600080fd5b8335612a5f816129c4565b92506020840135612a6f816129c4565b929592945050506040919091013590565b60008060408385031215612a9357600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612af457612af4612aa2565b60405290565b600067ffffffffffffffff80841115612b1557612b15612aa2565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612b5b57612b5b612aa2565b81604052809350858152868686011115612b7457600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612b9f57600080fd5b61291b83833560208501612afa565b8035600381106129f157600080fd5b60008060008060008060008060006101208a8c031215612bdc57600080fd5b8935612be7816129c4565b985060208a013567ffffffffffffffff80821115612c0457600080fd5b908b019060e0828e031215612c1857600080fd5b612c20612ad1565b823582811115612c2f57600080fd5b612c3b8f828601612b8e565b825250602083013582811115612c5057600080fd5b612c5c8f828601612b8e565b602083015250604083013582811115612c7457600080fd5b612c808f828601612b8e565b604083015250606083013582811115612c9857600080fd5b612ca48f828601612b8e565b606083015250608083013582811115612cbc57600080fd5b612cc88f828601612b8e565b60808301525060a083013560a082015260c083013560c0820152809a50505050612cf460408b016129e6565b965060608a0135955060808a01359450612d1060a08b01612bae565b935060c08a01359250612d2560e08b016129e6565b91506101008a013590509295985092959850929598565b60008060408385031215612d4f57600080fd5b8235612d5a816129c4565b915060208301358015158114612d6f57600080fd5b809150509250929050565b60008060008060808587031215612d9057600080fd5b8435612d9b816129c4565b93506020850135612dab816129c4565b925060408501359150606085013567ffffffffffffffff811115612dce57600080fd5b8501601f81018713612ddf57600080fd5b612dee87823560208401612afa565b91505092959194509250565b60008060408385031215612e0d57600080fd5b8235612e18816129c4565b91506020830135612d6f816129c4565b600181811c90821680612e3c57607f821691505b60208210811415612e76577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ebd57612ebd612e7c565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612efa57612efa612e7c565b500290565b600082612f35577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600060208284031215612f4c57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110612fb9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e08285015261300161022085018261294e565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec0808584030161016086015261303f838361294e565b925060408d01519150808584030161018086015261305d838361294e565b925060608d0151915080858403016101a086015261307b838361294e565b925060808d0151915080858403016101c08601525061309a828261294e565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506130d6915050565b8760808301528660a08301526130ef60c0830187612f82565b8460e083015261311861010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061314857607f831692505b6020808410821415613183577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b81801561319757600181146131c6576131f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008616895284890196506131f3565b60008881526020902060005b868110156131eb5781548b8201529085019083016131d2565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613231600a83018661312e565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613261601382018661312e565b90507f220000000000000000000000000000000000000000000000000000000000000081528351613299816001840160208801612922565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161330881601d850160208701612922565b91909101601d0192915050565b6000821982111561332857613328612e7c565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261336c608083018461294e565b9695505050505050565b60006020828403121561338857600080fd5b815161291b816128d0565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006133c5600c83018561312e565b7f222c2022616e696d6174696f6e5f75726c223a2022000000000000000000000081526133f5601582018561312e565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613456600c83018461312e565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613456601483018461312e56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa2646970667358221220aa91fffe016684114ae588f1dc7fb76b331009e5351e3c768f70c8b2c8dce14464736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061363c806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004612a14565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612aae565b6101d76101d2366004612ac1565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a366004612b07565b61059b565b005b61020f61021f366004612b33565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612b50565b61090c565b61028061027b366004612b91565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612b50565b610a34565b6101d76102cd366004612ac1565b610a4f565b61024c6102e0366004612b33565b610b01565b61024c6102f3366004612b33565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612cce565b610e6d565b6101b7611183565b61020f610347366004612e4d565b611192565b61020f61035a366004612e8b565b6111a1565b6101b761036d366004612ac1565b611249565b61019a610380366004612f0b565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612b33565b6112df565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061042457506104248261140f565b92915050565b60606065805461043990612f39565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612f39565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e83836114f2565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612fbc565b905090565b6109163382611592565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611702565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612fd3565b610a289190613010565b915091505b9250929050565b61074e838383604051806020016040528060008152506111a1565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba0919061304b565b436118e5565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d04838261191f565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b6000611939565b565b6000610e7960016119b0565b90508015610eae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8316610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610f3d89600001518a60200151611b3b565b610f45611bdc565b610f4e8a6112df565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91610fa891839160209091019061294d565b506020828101518051610fc1926001850192019061294d565b5060408201518051610fdd91600284019160209091019061294d565b5060608201518051610ff991600384019160209091019061294d565b506080820151805161101591600484019160209091019061294d565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561107357611073613064565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b60405161110c9a999897969594939291906130ce565b60405180910390a1801561117757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b60606066805461043990612f39565b61119d338383611c7b565b5050565b6111ab3383611592565b611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61124384848484611da9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166112d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611e4c565b60975473ffffffffffffffffffffffffffffffffffffffff163314611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b61140c81611939565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806114a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061154c82610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b600061164e83610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116bc575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b806116fa57508373ffffffffffffffffffffffffffffffffffffffff166116e2846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b600060d45460ff16600281111561171b5761171b613064565b1415611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561179c5761179c613064565b14156118675760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526117ff92169063e053ea3190602401610b5f565b1015611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d35461187383610d12565b106118da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611ea7565b6000805b600881101561191557828160200285901c63ffffffff16111561190d579050610424565b6001016118e9565b5060089392505050565b61119d82826040518060200160405280600081525061210e565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611a67578160ff1660011480156119d35750303b155b611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b506000919050565b60005460ff808416911610611afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b61119d82826121b1565b600054610100900460ff16611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b61226f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611db4848484611702565b611dc08484848461230f565b611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611e8360ca60cc611e5d6124ff565b604051602001611e6f93929190613310565b6040516020818303038152906040526125b2565b604051602001611e9391906133e1565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611ec782610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff821661200c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b6120176000826114f2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040812080546001929061204d908490612fbc565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290612088908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612118838361278b565b612125600084848461230f565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b815161225b90606590602085019061294d565b50805161074e90606690602084019061294d565b600054610100900460ff16612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b33611939565b600073ffffffffffffffffffffffffffffffffffffffff84163b156124f4576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061238690339089908890889060040161343e565b6020604051808303816000875af19250505080156123df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123dc91810190613487565b60015b6124a9573d80801561240d576040519150601f19603f3d011682016040523d82523d6000602084013e612412565b606091505b5080516124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506116fa565b506001949350505050565b606060008060ca600401805461251490612f39565b905011905060008060ca600301805461252c90612f39565b905011905081801561253b5750805b1561256b576040516125559060ce9060cd906020016134a4565b6040516020818303038152906040529250505090565b8115612583576040516125559060ce90602001613535565b801561259b576040516125559060cd90602001613594565b604051806020016040528060008152509250505090565b60608151600014156125d257505060408051602081019091526000815290565b60006040518060600160405280604081526020016135c760409139905060006003845160026126019190613426565b61260b9190613010565b612616906004612fd3565b90506000612625826020613426565b67ffffffffffffffff81111561263d5761263d612bb3565b6040519080825280601f01601f191660200182016040528015612667576020820181803683370190505b509050818152600183018586518101602084015b818310156126d3576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161267b565b6003895106600181146126ed57600281146127375761277d565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83015261277d565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906128ca908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461295990612f39565b90600052602060002090601f01602090048101928261297b57600085556129c1565b82601f1061299457805160ff19168380011785556129c1565b828001600101855582156129c1579182015b828111156129c15782518255916020019190600101906129a6565b506129cd9291506129d1565b5090565b5b808211156129cd57600081556001016129d2565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461140c57600080fd5b600060208284031215612a2657600080fd5b8135612a31816129e6565b9392505050565b60005b83811015612a53578181015183820152602001612a3b565b838111156112435750506000910152565b60008151808452612a7c816020860160208601612a38565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612a316020830184612a64565b600060208284031215612ad357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461140c57600080fd5b8035611b3681612ada565b60008060408385031215612b1a57600080fd5b8235612b2581612ada565b946020939093013593505050565b600060208284031215612b4557600080fd5b8135612a3181612ada565b600080600060608486031215612b6557600080fd5b8335612b7081612ada565b92506020840135612b8081612ada565b929592945050506040919091013590565b60008060408385031215612ba457600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612c0557612c05612bb3565b60405290565b600067ffffffffffffffff80841115612c2657612c26612bb3565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612c6c57612c6c612bb3565b81604052809350858152868686011115612c8557600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612cb057600080fd5b612a3183833560208501612c0b565b803560038110611b3657600080fd5b60008060008060008060008060006101208a8c031215612ced57600080fd5b8935612cf881612ada565b985060208a013567ffffffffffffffff80821115612d1557600080fd5b908b019060e0828e031215612d2957600080fd5b612d31612be2565b823582811115612d4057600080fd5b612d4c8f828601612c9f565b825250602083013582811115612d6157600080fd5b612d6d8f828601612c9f565b602083015250604083013582811115612d8557600080fd5b612d918f828601612c9f565b604083015250606083013582811115612da957600080fd5b612db58f828601612c9f565b606083015250608083013582811115612dcd57600080fd5b612dd98f828601612c9f565b60808301525060a083013560a082015260c083013560c0820152809a50505050612e0560408b01612afc565b965060608a0135955060808a01359450612e2160a08b01612cbf565b935060c08a01359250612e3660e08b01612afc565b91506101008a013590509295985092959850929598565b60008060408385031215612e6057600080fd5b8235612e6b81612ada565b915060208301358015158114612e8057600080fd5b809150509250929050565b60008060008060808587031215612ea157600080fd5b8435612eac81612ada565b93506020850135612ebc81612ada565b925060408501359150606085013567ffffffffffffffff811115612edf57600080fd5b8501601f81018713612ef057600080fd5b612eff87823560208401612c0b565b91505092959194509250565b60008060408385031215612f1e57600080fd5b8235612f2981612ada565b91506020830135612e8081612ada565b600181811c90821680612f4d57607f821691505b60208210811415612f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fce57612fce612f8d565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561300b5761300b612f8d565b500290565b600082613046577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561305d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106130ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e082850152613112610220850182612a64565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec080858403016101608601526131508383612a64565b925060408d01519150808584030161018086015261316e8383612a64565b925060608d0151915080858403016101a086015261318c8383612a64565b925060808d0151915080858403016101c0860152506131ab8282612a64565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506131e7915050565b8760808301528660a083015261320060c0830187613093565b8460e083015261322961010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061325957607f831692505b6020808410821415613294577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8180156132a857600181146132d757613304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650613304565b60008881526020902060005b868110156132fc5781548b8201529085019083016132e3565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613342600a83018661323f565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613372601382018661323f565b90507f2200000000000000000000000000000000000000000000000000000000000000815283516133aa816001840160208801612a38565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161341981601d850160208701612a38565b91909101601d0192915050565b6000821982111561343957613439612f8d565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261347d6080830184612a64565b9695505050505050565b60006020828403121561349957600080fd5b8151612a31816129e6565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006134d6600c83018561323f565b7f222c2022616e696d6174696f6e5f75726c223a202200000000000000000000008152613506601582018561323f565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613567600c83018461323f565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613567601483018461323f56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122047bc7ad223c6b3b593f6e327294d09e4f394e625614838958af76c60c89e5f4164736f6c634300080a0033"; type GatedNFTConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/IBFactory__factory.ts b/src/typechain/factories/IBFactory__factory.ts deleted file mode 100644 index 0649d97..0000000 --- a/src/typechain/factories/IBFactory__factory.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { IBFactory, IBFactoryInterface } from "../IBFactory"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IBPool", - name: "pool", - type: "address", - }, - ], - name: "collect", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "getBLabs", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "b", - type: "address", - }, - ], - name: "isBPool", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "newBPool", - outputs: [ - { - internalType: "contract IBPool", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "b", - type: "address", - }, - ], - name: "setBLabs", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IBFactory__factory { - static readonly abi = _abi; - static createInterface(): IBFactoryInterface { - return new utils.Interface(_abi) as IBFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IBFactory { - return new Contract(address, _abi, signerOrProvider) as IBFactory; - } -} diff --git a/src/typechain/factories/IBPool__factory.ts b/src/typechain/factories/IBPool__factory.ts deleted file mode 100644 index 0dc9c3c..0000000 --- a/src/typechain/factories/IBPool__factory.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { IBPool, IBPoolInterface } from "../IBPool"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "getBalance", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "gulp", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPrice", - type: "uint256", - }, - ], - name: "swapExactAmountIn", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "spotPriceAfter", - type: "uint256", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IBPool__factory { - static readonly abi = _abi; - static createInterface(): IBPoolInterface { - return new utils.Interface(_abi) as IBPoolInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): IBPool { - return new Contract(address, _abi, signerOrProvider) as IBPool; - } -} diff --git a/src/typechain/factories/IBalancerConstants__factory.ts b/src/typechain/factories/IBalancerConstants__factory.ts deleted file mode 100644 index 4059c81..0000000 --- a/src/typechain/factories/IBalancerConstants__factory.ts +++ /dev/null @@ -1,269 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - IBalancerConstants, - IBalancerConstantsInterface, -} from "../IBalancerConstants"; - -const _abi = [ - { - inputs: [], - name: "BONE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "EXIT_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_ASSET_LIMIT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_IN_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_OUT_RATIO", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_TOTAL_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_UINT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MAX_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_ASSET_LIMIT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_BALANCE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_FEE", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_POOL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "MIN_WEIGHT", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x61035361003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361061010a5760003560e01c8063bc063e1a116100a1578063def92c6911610070578063def92c6914610178578063e4a28a521461010f578063e5b5019a14610180578063ec093021146101a757600080fd5b8063bc063e1a14610160578063c36596a614610129578063c6580d1214610168578063cc12f2671461017057600080fd5b806376c7a3c7116100dd57806376c7a3c7146101485780637e88781c14610150578063867378c514610148578063992e2a921461015857600080fd5b806309a3bbe41461010f578063218b5382146101295780634d1acbab146101385780636fd34b9f14610140575b600080fd5b6101176101af565b60405190815260200160405180910390f35b610117670de0b6b3a764000081565b610117600281565b610117600881565b6101176101c5565b6101176101da565b6101176101ed565b61011761020b565b610117600081565b61011761021e565b610117610234565b6101177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81565b61011761024b565b6101c2670de0b6b3a7640000603261028d565b81565b6101c2620f4240670de0b6b3a76400006102ca565b6101c2670de0b6b3a7640000606461028d565b6102006003670de0b6b3a76400006102ca565b6101c2906001610305565b6101c2600a670de0b6b3a76400006102ca565b6101c2670de0b6b3a7640000633b9aca0061028d565b6101c2670de0b6b3a764000064e8d4a5100061028d565b6101c26002670de0b6b3a76400006102ca565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156102c5576102c561025e565b500290565b600082610300577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156103185761031861025e565b50019056fea2646970667358221220ede8bf5eb5d8e18aa958a706d31385aeed847581579d8180d7970ecc1ea5051b64736f6c634300080a0033"; - -type IBalancerConstantsConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: IBalancerConstantsConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class IBalancerConstants__factory extends ContractFactory { - constructor(...args: IBalancerConstantsConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): IBalancerConstants { - return super.attach(address) as IBalancerConstants; - } - connect(signer: Signer): IBalancerConstants__factory { - return super.connect(signer) as IBalancerConstants__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): IBalancerConstantsInterface { - return new utils.Interface(_abi) as IBalancerConstantsInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IBalancerConstants { - return new Contract(address, _abi, signerOrProvider) as IBalancerConstants; - } -} diff --git a/src/typechain/factories/ICRPFactory__factory.ts b/src/typechain/factories/ICRPFactory__factory.ts deleted file mode 100644 index 2416310..0000000 --- a/src/typechain/factories/ICRPFactory__factory.ts +++ /dev/null @@ -1,116 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { ICRPFactory, ICRPFactoryInterface } from "../ICRPFactory"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "factoryAddress", - type: "address", - }, - { - components: [ - { - internalType: "string", - name: "poolTokenSymbol", - type: "string", - }, - { - internalType: "string", - name: "poolTokenName", - type: "string", - }, - { - internalType: "address[]", - name: "constituentTokens", - type: "address[]", - }, - { - internalType: "uint256[]", - name: "tokenBalances", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "tokenWeights", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "swapFee", - type: "uint256", - }, - ], - internalType: "struct PoolParams", - name: "poolParams", - type: "tuple", - }, - { - components: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - internalType: "struct Rights", - name: "rights", - type: "tuple", - }, - ], - name: "newCrp", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class ICRPFactory__factory { - static readonly abi = _abi; - static createInterface(): ICRPFactoryInterface { - return new utils.Interface(_abi) as ICRPFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ICRPFactory { - return new Contract(address, _abi, signerOrProvider) as ICRPFactory; - } -} diff --git a/src/typechain/factories/IConfigurableRightsPool__factory.ts b/src/typechain/factories/IConfigurableRightsPool__factory.ts deleted file mode 100644 index d8d15f1..0000000 --- a/src/typechain/factories/IConfigurableRightsPool__factory.ts +++ /dev/null @@ -1,127 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IConfigurableRightsPool, - IConfigurableRightsPoolInterface, -} from "../IConfigurableRightsPool"; - -const _abi = [ - { - inputs: [], - name: "bFactory", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "bPool", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - { - internalType: "uint256", - name: "minimumWeightChangeBlockPeriodParam", - type: "uint256", - }, - { - internalType: "uint256", - name: "addTokenTimeLockInBlocksParam", - type: "uint256", - }, - ], - name: "createPool", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "minAmountsOut", - type: "uint256[]", - }, - ], - name: "exitPool", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "pokeWeights", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256[]", - name: "newWeights", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "startBlock", - type: "uint256", - }, - { - internalType: "uint256", - name: "endBlock", - type: "uint256", - }, - ], - name: "updateWeightsGradually", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IConfigurableRightsPool__factory { - static readonly abi = _abi; - static createInterface(): IConfigurableRightsPoolInterface { - return new utils.Interface(_abi) as IConfigurableRightsPoolInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IConfigurableRightsPool { - return new Contract( - address, - _abi, - signerOrProvider - ) as IConfigurableRightsPool; - } -} diff --git a/src/typechain/factories/Initializable__factory.ts b/src/typechain/factories/Initializable__factory.ts new file mode 100644 index 0000000..b8c0c6b --- /dev/null +++ b/src/typechain/factories/Initializable__factory.ts @@ -0,0 +1,36 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { Initializable, InitializableInterface } from "../Initializable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, +]; + +export class Initializable__factory { + static readonly abi = _abi; + static createInterface(): InitializableInterface { + return new utils.Interface(_abi) as InitializableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Initializable { + return new Contract(address, _abi, signerOrProvider) as Initializable; + } +} diff --git a/src/typechain/factories/LogicOpsTest__factory.ts b/src/typechain/factories/LogicOpsTest__factory.ts deleted file mode 100644 index ecd41cc..0000000 --- a/src/typechain/factories/LogicOpsTest__factory.ts +++ /dev/null @@ -1,228 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - LogicOpsTest, - LogicOpsTestInterface, - StateConfigStruct, -} from "../LogicOpsTest"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, - { - inputs: [], - name: "run", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "runState", - outputs: [ - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - internalType: "struct State", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162001838380380620018388339810160408190526200003491620003fd565b60056080526200004e620000488262000061565b6200019b565b6001600160a01b031660a0525062000759565b620000946040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151620000d45760405162461bcd60e51b8152602060048201526009602482015268305f534f555243455360b81b604482015260640160405180910390fd5b6040518060a001604052806000815260200183604001516001600160401b03811115620001055762000105620002bd565b6040519080825280602002602001820160405280156200012f578160200160208202803683370190505b508152602001836000015181526020018360200151815260200183606001516001600160401b03811115620001685762000168620002bd565b60405190808252806020026020018201604052801562000192578160200160208202803683370190505b50905292915050565b600080620001d583604051602001620001b5919062000694565b6040516020818303038152906040526200021a60201b6200012f1760201c565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516200020c93929190620006b0565b60405180910390a192915050565b6000806200025483604051602001620002349190620006de565b6040516020818303038152906040526200028f60201b620001ba1760201c565b90508051602082016000f091506001600160a01b038216620002895760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620002a792919062000706565b6040516020818303038152906040529050919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620002f857620002f8620002bd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003295762000329620002bd565b604052919050565b60006001600160401b038211156200034d576200034d620002bd565b5060051b60200190565b60005b83811015620003745781810151838201526020016200035a565b8381111562000384576000848401525b50505050565b600082601f8301126200039c57600080fd5b81516020620003b5620003af8362000331565b620002fe565b82815260059290921b84018101918181019086841115620003d557600080fd5b8286015b84811015620003f25780518352918301918301620003d9565b509695505050505050565b600060208083850312156200041157600080fd5b82516001600160401b03808211156200042957600080fd5b90840190608082870312156200043e57600080fd5b62000448620002d3565b8251828111156200045857600080fd5b8301601f810188136200046a57600080fd5b80516200047b620003af8262000331565b81815260059190911b8201860190868101908a8311156200049b57600080fd5b8784015b838110156200053157805187811115620004b95760008081fd5b8501603f81018d13620004cc5760008081fd5b89810151604089821115620004e557620004e5620002bd565b620004f9601f8301601f19168d01620002fe565b8281528f828486010111156200050f5760008081fd5b62000520838e830184870162000357565b86525050509188019188016200049f565b50845250505082840151828111156200054957600080fd5b62000557888286016200038a565b858301525060408301516040820152606083015160608201528094505050505092915050565b600081518084526020808501945080840160005b83811015620005af5781518752958201959082019060010162000591565b509495945050505050565b80518252600060208083015160a082860152620005db60a08601826200057d565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156200064f57601f19808784030185528551805180855262000630818b87018c850162000357565b9689019695890195601f01909116929092018701915060010162000605565b506060880151955088810360608a01526200066b81876200057d565b95505050505050608083015184820360808601526200068b82826200057d565b95945050505050565b602081526000620006a96020830184620005ba565b9392505050565b6001600160a01b038481168252831660208201526060604082018190526000906200068b90830184620005ba565b6000815260008251620006f981600185016020870162000357565b9190910160010192915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015281516000906200074b81600e85016020870162000357565b91909101600e019392505050565b60805160a0516110ba6200077e600039600060a8015260006106ef01526110ba6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806345c6a7a61461003b578063c040622614610059575b600080fd5b61004361006f565b6040516100509190610b47565b60405180910390f35b6100616100ee565b604051908152602001610050565b6100a16040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b60006100cc7f00000000000000000000000000000000000000000000000000000000000000006101e6565b90506100e96040518060200160405280600081525082600061023a565b919050565b6000806100f961006f565b90508060200151600182600001516101119190610c2c565b8151811061012157610121610c6a565b602002602001015191505090565b60008061015a836040516020016101469190610c99565b6040516020818303038152906040526101ba565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166101b4576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101d0929190610cbf565b6040516020818303038152906040529050919050565b6102186040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610221826104c3565b8060200190518101906102349190610f8e565b92915050565b602082015151825111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064015b60405180910390fd5b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156104b6576002880197508784015180601e1a975080601f1a965050600587101561043557600187141561034d5781608087166103185750825b607f87168151811061032957600080fd5b8b516020820260200183015160208202602001850152600181018d52505050610441565b600287141561038457895180871061036457600080fd5b6020870260200182015160208202602001830152600181018b5250610441565b600387141561039d576103988b8b886104f1565b610441565b60048714156103ce576103988a6040516020016103ba9190610b47565b604051602081830303815290604052610657565b86610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016102a6565b6104418b8b89896106e9565b60208a0151518a5111156104b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102a6565b6102db565b5050505050505050505050565b60606102348260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61071c565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561055557610555610d56565b60405190808252806020026020018201604052801561057e578160200160208202803683370190505b50905060005b828110156105d557876020015181896000015101815181106105a8576105a8610c6a565b60200260200101518282815181106105c2576105c2610c6a565b6020908102919091010152600101610584565b5060005b61010081101561064c5760005b83811015610639578482860384838151811061060457610604610c6a565b6020026020010151901b901c8960800151828151811061062657610626610c6a565b60209081029190910101526001016105e6565b5061064589898861023a565b84016105d9565b505050505050505050565b6106e68160405160240161066b9190611071565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052610805565b50565b610716837f0000000000000000000000000000000000000000000000000000000000000000840383610826565b50505050565b6060833b8061073b5750506040805160208101909152600081526107fe565b808411156107595750506040805160208101909152600081526107fe565b838310156107a4576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102a6565b83830384820360008282106107b957826107bb565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60078210610890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102a6565b825160208085015181830201018380156108d95760018114610910576002811461098957600381146109b157600481146109d95760058114610a015760068114610a4857610a8e565b826108e357600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082018051159052610a8e565b600383101561091e57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa082018051801561097a5760208201518252610982565b604082015182525b5050610a8e565b600283101561099757600080fd5b600183038652604082036020810151815114815250610a8e565b60028310156109bf57600080fd5b600183038652604082036020810151815110815250610a8e565b60028310156109e757600080fd5b600183038652604082036020810151815111815250610a8e565b83831015610a0e57600080fd5b8315610a43576001840383038652602084028203805b83811015610982578051610a3b5760008252610982565b602001610a24565b610a8e565b83831015610a5557600080fd5b8315610a8e576001840383038652602084028203805b83811015610a8b5780518015610a82578252610a8b565b50602001610a6b565b50505b505050505050565b600081518084526020808501945080840160005b83811015610ac657815187529582019590820190600101610aaa565b509495945050505050565b60005b83811015610aec578181015183820152602001610ad4565b838111156107165750506000910152565b60008151808452610b15816020860160208601610ad1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a06040850152610b6c60c0850182610a96565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015610be55784878303018452610bd3828751610afd565b95880195938801939150600101610bb9565b5060608a01519650838982030160808a0152610c018188610a96565b965050505060808701519250808685030160a08701525050610c238282610a96565b95945050505050565b600082821015610c65577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815260008251610cb2816001850160208701610ad1565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251610d4881600e850160208701610ad1565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610da857610da8610d56565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610df557610df5610d56565b604052919050565b600067ffffffffffffffff821115610e1757610e17610d56565b5060051b60200190565b600082601f830112610e3257600080fd5b81516020610e47610e4283610dfd565b610dae565b82815260059290921b84018101918181019086841115610e6657600080fd5b8286015b84811015610e815780518352918301918301610e6a565b509695505050505050565b6000601f8381840112610e9e57600080fd5b82516020610eae610e4283610dfd565b82815260059290921b85018101918181019087841115610ecd57600080fd5b8287015b84811015610f8257805167ffffffffffffffff80821115610ef25760008081fd5b818a0191508a603f830112610f075760008081fd5b85820151604082821115610f1d57610f1d610d56565b610f4c887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c85011601610dae565b92508183528c81838601011115610f635760008081fd5b610f7282898501838701610ad1565b5050845250918301918301610ed1565b50979650505050505050565b600060208284031215610fa057600080fd5b815167ffffffffffffffff80821115610fb857600080fd5b9083019060a08286031215610fcc57600080fd5b610fd4610d85565b82518152602083015182811115610fea57600080fd5b610ff687828601610e21565b60208301525060408301518281111561100e57600080fd5b61101a87828601610e8c565b60408301525060608301518281111561103257600080fd5b61103e87828601610e21565b60608301525060808301518281111561105657600080fd5b61106287828601610e21565b60808301525095945050505050565b6020815260006107fe6020830184610afd56fea2646970667358221220c412a2a9614db13854a44a3e2d40de5ae83f24ebc4780069af0143f747bc42fe64736f6c634300080a0033"; - -type LogicOpsTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: LogicOpsTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class LogicOpsTest__factory extends ContractFactory { - constructor(...args: LogicOpsTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(config_, overrides || {}) as Promise; - } - getDeployTransaction( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): LogicOpsTest { - return super.attach(address) as LogicOpsTest; - } - connect(signer: Signer): LogicOpsTest__factory { - return super.connect(signer) as LogicOpsTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): LogicOpsTestInterface { - return new utils.Interface(_abi) as LogicOpsTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): LogicOpsTest { - return new Contract(address, _abi, signerOrProvider) as LogicOpsTest; - } -} diff --git a/src/typechain/factories/MockTrustISale__factory.ts b/src/typechain/factories/MockTrustISale__factory.ts deleted file mode 100644 index aab6c1f..0000000 --- a/src/typechain/factories/MockTrustISale__factory.ts +++ /dev/null @@ -1,217 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - MockTrustISale, - MockTrustISaleInterface, -} from "../MockTrustISale"; - -const _abi = [ - { - inputs: [], - name: "_crp", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "_reserve", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "_saleStatus", - outputs: [ - { - internalType: "enum SaleStatus", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "_token", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "crp", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "reserve", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "saleStatus", - outputs: [ - { - internalType: "enum SaleStatus", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "crp_", - type: "address", - }, - ], - name: "setCrp", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "reserve_", - type: "address", - }, - ], - name: "setReserve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "enum SaleStatus", - name: "saleStatus_", - type: "uint8", - }, - ], - name: "setSaleStatus", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token_", - type: "address", - }, - ], - name: "setToken", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061047f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c8063b451eb0b11610081578063ecd0c0c31161005b578063ecd0c0c3146102c1578063f9020e33146102e1578063fc0c546a1461030457600080fd5b8063b451eb0b1461021c578063cd3293de14610271578063cf5200241461028f57600080fd5b80634429f047116100b25780634429f047146101945780634891ad88146101b45780639cecc80a146101c757600080fd5b8063144fa6d7146100d95780633fd8108e14610130578063413ab4a814610174575b600080fd5b61012e6100e736600461037b565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b005b60025473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60005461014a9073ffffffffffffffffffffffffffffffffffffffff1681565b60025461014a9073ffffffffffffffffffffffffffffffffffffffff1681565b61012e6101c23660046103b8565b610322565b61012e6101d536600461037b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61012e61022a36600461037b565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff1661014a565b6000546102b49074010000000000000000000000000000000000000000900460ff1681565b60405161016b9190610408565b60015461014a9073ffffffffffffffffffffffffffffffffffffffff1681565b60005474010000000000000000000000000000000000000000900460ff166102b4565b60015473ffffffffffffffffffffffffffffffffffffffff1661014a565b600080548291907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000836003811115610373576103736103d9565b021790555050565b60006020828403121561038d57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146103b157600080fd5b9392505050565b6000602082840312156103ca57600080fd5b8135600481106103b157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160048310610443577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9190529056fea26469706673582212206386d3e52b82a53a9f08c16c9ff5af84d49791f4957c3c8f232e1262b293023e64736f6c634300080a0033"; - -type MockTrustISaleConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: MockTrustISaleConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class MockTrustISale__factory extends ContractFactory { - constructor(...args: MockTrustISaleConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): MockTrustISale { - return super.attach(address) as MockTrustISale; - } - connect(signer: Signer): MockTrustISale__factory { - return super.connect(signer) as MockTrustISale__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): MockTrustISaleInterface { - return new utils.Interface(_abi) as MockTrustISaleInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): MockTrustISale { - return new Contract(address, _abi, signerOrProvider) as MockTrustISale; - } -} diff --git a/src/typechain/factories/OrderBookStateBuilder__factory.ts b/src/typechain/factories/OrderBookStateBuilder__factory.ts new file mode 100644 index 0000000..59ca123 --- /dev/null +++ b/src/typechain/factories/OrderBookStateBuilder__factory.ts @@ -0,0 +1,286 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + OrderBookStateBuilder, + OrderBookStateBuilderInterface, +} from "../OrderBookStateBuilder"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "vm_", + type: "address", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "config_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "opcodesLength", + type: "uint256", + }, + ], + internalType: "struct Bounds[]", + name: "boundss_", + type: "tuple[]", + }, + ], + name: "buildState", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "opcodesLength", + type: "uint256", + }, + ], + internalType: "struct Bounds", + name: "bounds_", + type: "tuple", + }, + ], + name: "ensureIntegrity", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "packedFnPtrs_", + type: "bytes", + }, + { + internalType: "bytes", + name: "source_", + type: "bytes", + }, + ], + name: "ptrSource", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPopsFnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushesFnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c511760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a052620006c0565b6060620000746200019e60201b62000cdc1760201c565b620000b4604080516060810182526001600160401b0362000522602090811b62000ff4178216818401526200051c901b62000fee17168183015290815290565b604051602001620000c792919062000645565b604051602081830303815290604052905090565b6000806200011583604051602001620000f5919062000666565b6040516020818303038152906040526200036360201b62000e531760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060620001676200039160201b62000e7f1760201c565b604080516060810182526001600160401b0362000522602090811b62000ff4179190911690820181905281830152908152620000b4565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000516831b62000fe817811660e08301819052610100830181905261012083018190526101408301526200051c831b62000fee1781166101608301819052610180830181905262000522841b62000ff41782166101a084018190526101c084018190526101e0840181905262000528851b62000ffa178316610200850181905261022085018190526102408501819052610260850181905261028085018190526102a085018190526102c085018190526102e0850181905261030085018190526103208501819052610340850181905261036085018290526200056f861b6200106917841661038086018190526103a086018490526103c086018490526103e08601849052610400860182905261042086019190915261044085018390526104608501839052610480850183905262000575861b6200106f1784166104a08601526104c085018390526104e08501919091526105008401829052610520840191909152610540830152620005be90921b620010e21790911661056080830191909152815290565b60608151826040516020016200037b92919062000682565b6040516020818303038152906040529050919050565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000522831b62000ff417811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526101c083018190526101e08301819052610200830181905261022083018190526102408301819052610260830181905261028083018190526102a083018190526102c083018190526102e08301819052610300830181905261032083018190526103408301819052610360830181905261038083018190526103a083018190526103c083018190526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083018190526105408301526200052890921b62000ffa1790911661056080830191909152815290565b50600090565b50600290565b50600190565b60008082116200056b5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5090565b50600390565b6000601f821680620005b85760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b604482015260640162000562565b92915050565b6000808211620005fd5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b604482015260640162000562565b5060020260010190565b6000815160005b818110156200062a57602081850181015186830152016200060e565b818111156200063a576000828601525b509290920192915050565b60006200065e62000657838662000607565b8462000607565b949350505050565b6000815260006200067b600183018462000607565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200065e600e83018462000607565b60805160a051611f0e620006e66000396000610711015260006106e40152611f0e6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a3660046119e3565b6100cd565b60405161008c9190611b01565b60405180910390f35b61007f6104c8565b6100b06100ab366004611b52565b610670565b005b61007f6100c0366004611ba2565b610974565b61007f610ac5565b606060006100da85611157565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c06565b60200151905060008060005b86518110156102f0578387828151811061017457610174611c55565b602002602001015160a0018181525050600285518161019557610195611c84565b048782815181106101a8576101a8611c55565b602002602001015160c00181815250506101db888883815181106101ce576101ce611c55565b6020026020010151610670565b61020b8782815181106101f0576101f0611c55565b6020026020010151608001518461129590919063ffffffff16565b925061023d87828151811061022257610222611c55565b6020026020010151606001518361129590919063ffffffff16565b915086818151811061025157610251611c55565b60200260200101516020015187828151811061026f5761026f611c55565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff811115610313576103136116b2565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611c55565b602002602001015182828151811061037f5761037f611c55565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b16116b2565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611c55565b6020026020010151610974565b82828151811061042d5761042d611c55565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f6116b2565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b60200151518152506112ac565b96505050505050505b9392505050565b604080516105808101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252610ff460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610ffa61056080830191909152815260408051606081018252610ff460208201819052818301529081525b60405160200161065c929190611cb3565b604051602081830303815290604052905090565b805182515181106106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b60006107087f00000000000000000000000000000000000000000000000000000000000000006113e9565b905060006107357f00000000000000000000000000000000000000000000000000000000000000006113e9565b905060008080600080602088026020018a5101519050805193505b838510156108f9576002850194508481015180601e1a935080601f1a925050600683101561081457826107a457896020015151896080015101821061079457600080fd5b60408901805160010190526107fb565b60018314156107bd578860400151821061079457600080fd5b60028314156107d65760408901805160010190526107fb565b60038314156107fb578860a0015182106107ef57600080fd5b60408901805160010190525b600483141561080f5761080f8a8a84611417565b6108dc565b8860c001518310610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108a08463ffffffff8416565b60408c018051919091039081905260608c01516108bc91611295565b60608c01526108ce8463ffffffff8316565b60408c018051909101905250505b604089015160608a01516108ef91611295565b60608a0152610750565b606089015160ff1015610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a0557610a056116b2565b6040519080825280601f01601f191660200182016040528015610a2f576020820181803683370190505b509050600660018381018160005b82821015610ab75781890151601f1a6002830615610a995785811015610a6b57600182019181908801602101535b858110610a9957600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610aaa5780826020018801535b5060019182019101610a3d565b509398975050505050505050565b60408051610580810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c0840192909252610fe860e0840181905261010084018190526101208401819052610140840152610fee61016084018190526101808401819052610ff46101a085018190526101c085018190526101e08501819052610ffa610200860181905261022086018190526102408601819052610260860181905261028086018190526102a086018190526102c086018190526102e08601819052610300860181905261032086018190526103408601819052610360860182905261106961038087018190526103a087018490526103c087018490526103e08701849052610400870182905261042087019190915261044086018390526104608601839052610480860183905261106f6104a08701526104c086018390526104e08601829052610500860183905261052086018390526105408601526110e26105608087019190915285528551808501875292830152818501529283529161064b565b600080610c7c83604051602001610c689190611ce2565b604051602081830303815290604052610e53565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cd6576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe860e0820181905261010082018190526101208201819052610140820152610fee61016082018190526101808201819052610ff46101a083018190526101c083018190526101e08301819052610ffa610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840182905261106961038085018190526103a085018490526103c085018490526103e08501849052610400850182905261042085019190915261044084018390526104608401839052610480840183905261106f6104a08501526104c084018390526104e084019190915261050083018290526105208301919091526105408201526110e261056082810191909152815290565b6060815182604051602001610e69929190611d08565b6040516020818303038152906040529050919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610ff460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610ffa61056082810191909152815290565b50600090565b50600290565b50600190565b6000808211611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b50600390565b6000601f8216806110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b600080821161114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261118b91166113e9565b90508051600014156110dc576112386112338473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261122e9190810190611d9f565b6114b6565b610c51565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c183611157565b6000818310156112a557816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112f89190611e16565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113349291602001611e4c565b604051602081830303815290604052905060005b8560400151518110156113e057818660400151828151811061136c5761136c611c55565b60200260200101515160001b8760400151838151811061138e5761138e611c55565b60200260200101516040516020016113a893929190611e72565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611348565b50949350505050565b60606110dc8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115c0565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114619190611295565b606084015260808301516114759082611295565b60808401528251600783168085526001600385811c161b919060005b838110156114ab576114a38888610670565b600101611491565b505090935250505050565b606060208251816114c9576114c9611c84565b0615611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b6000601083518161154457611544611c84565b0467ffffffffffffffff81111561155d5761155d6116b2565b6040519080825280601f01601f191660200182016040528015611587576020820181803683370190505b509050600060025b84518210156115b757808301805160208488018101519091179091529091019060020161158f565b50909392505050565b6060833b806115df5750506040805160208101909152600081526104c1565b808411156115fd5750506040805160208101909152600081526104c1565b83831015611648576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b838303848203600082821061165d578261165f565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6116b0611ea9565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611704576117046116b2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611751576117516116b2565b604052919050565b600067ffffffffffffffff821115611773576117736116b2565b5060051b60200190565b600067ffffffffffffffff821115611797576117976116b2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117d457600080fd5b81356117e76117e28261177d565b61170a565b8181528460208386010111156117fc57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261182a57600080fd5b8135602061183a6117e283611759565b82815260059290921b8401810191818101908684111561185957600080fd5b8286015b84811015611874578035835291830191830161185d565b509695505050505050565b60006040828403121561189157600080fd5b6118996116e1565b9050813567ffffffffffffffff808211156118b357600080fd5b818401915084601f8301126118c757600080fd5b813560206118d76117e283611759565b82815260059290921b840181019181810190888411156118f657600080fd5b8286015b8481101561192e578035868111156119125760008081fd5b6119208b86838b01016117c3565b8452509183019183016118fa565b508652508581013593508284111561194557600080fd5b61195187858801611819565b818601525050505092915050565b600060e0828403121561197157600080fd5b60405160e0810181811067ffffffffffffffff82111715611994576119946116b2565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b6000806000606084860312156119f857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a1c57600080fd5b925060208481013567ffffffffffffffff80821115611a3a57600080fd5b611a468883890161187f565b94506040870135915080821115611a5c57600080fd5b508501601f81018713611a6e57600080fd5b8035611a7c6117e282611759565b81815260e0918202830184019184820191908a841115611a9b57600080fd5b938501935b83851015611ac157611ab28b8661195f565b83529384019391850191611aa0565b5080955050505050509250925092565b60005b83811015611aec578181015183820152602001611ad4565b83811115611afb576000848401525b50505050565b6020815260008251806020840152611b20816040850160208701611ad1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b6657600080fd5b823567ffffffffffffffff811115611b7d57600080fd5b611b898582860161187f565b925050611b99846020850161195f565b90509250929050565b60008060408385031215611bb557600080fd5b823567ffffffffffffffff80821115611bcd57600080fd5b611bd9868387016117c3565b93506020850135915080821115611bef57600080fd5b50611bfc858286016117c3565b9150509250929050565b600060408284031215611c1857600080fd5b6040516040810181811067ffffffffffffffff82111715611c3b57611c3b6116b2565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611cc5818460208801611ad1565b835190830190611cd9818360208801611ad1565b01949350505050565b6000815260008251611cfb816001850160208701611ad1565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d9181600e850160208701611ad1565b91909101600e019392505050565b600060208284031215611db157600080fd5b815167ffffffffffffffff811115611dc857600080fd5b8201601f81018413611dd957600080fd5b8051611de76117e28261177d565b818152856020838501011115611dfc57600080fd5b611e0d826020830160208601611ad1565b95945050505050565b815160009082906020808601845b83811015611e4057815185529382019390820190600101611e24565b50929695505050505050565b82815260008251611e64816020850160208701611ad1565b919091016020019392505050565b60008451611e84818460208901611ad1565b82018481528351611e9c816020808501908801611ad1565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea26469706673582212201049998f06e91c628256ff7d55a834615e54a08ccb3deedef1b99c9784562cfa64736f6c634300080a0033"; + +type OrderBookStateBuilderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: OrderBookStateBuilderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class OrderBookStateBuilder__factory extends ContractFactory { + constructor(...args: OrderBookStateBuilderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): OrderBookStateBuilder { + return super.attach(address) as OrderBookStateBuilder; + } + connect(signer: Signer): OrderBookStateBuilder__factory { + return super.connect(signer) as OrderBookStateBuilder__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): OrderBookStateBuilderInterface { + return new utils.Interface(_abi) as OrderBookStateBuilderInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OrderBookStateBuilder { + return new Contract( + address, + _abi, + signerOrProvider + ) as OrderBookStateBuilder; + } +} diff --git a/src/typechain/factories/OrderBook__factory.ts b/src/typechain/factories/OrderBook__factory.ts new file mode 100644 index 0000000..c363341 --- /dev/null +++ b/src/typechain/factories/OrderBook__factory.ts @@ -0,0 +1,727 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { OrderBook, OrderBookInterface } from "../OrderBook"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + components: [ + { + internalType: "uint256", + name: "aOutput", + type: "uint256", + }, + { + internalType: "uint256", + name: "bOutput", + type: "uint256", + }, + { + internalType: "uint256", + name: "aInput", + type: "uint256", + }, + { + internalType: "uint256", + name: "bInput", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct ClearStateChange", + name: "stateChange", + type: "tuple", + }, + ], + name: "AfterClear", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct Order", + name: "a_", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct Order", + name: "b_", + type: "tuple", + }, + { + components: [ + { + internalType: "VaultId", + name: "aVaultId", + type: "uint256", + }, + { + internalType: "VaultId", + name: "bVaultId", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct BountyConfig", + name: "bountyConfig", + type: "tuple", + }, + ], + name: "Clear", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "VaultId", + name: "vaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct DepositConfig", + name: "config", + type: "tuple", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct Order", + name: "config", + type: "tuple", + }, + ], + name: "OrderDead", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + indexed: false, + internalType: "struct Order", + name: "config", + type: "tuple", + }, + ], + name: "OrderLive", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "VaultId", + name: "vaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + indexed: false, + internalType: "struct WithdrawConfig", + name: "config", + type: "tuple", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "Withdraw", + type: "event", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "vmStateConfig", + type: "tuple", + }, + ], + internalType: "struct OrderConfig", + name: "orderConfig_", + type: "tuple", + }, + ], + name: "addOrder", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + internalType: "struct Order", + name: "a_", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + internalType: "struct Order", + name: "b_", + type: "tuple", + }, + { + components: [ + { + internalType: "VaultId", + name: "aVaultId", + type: "uint256", + }, + { + internalType: "VaultId", + name: "bVaultId", + type: "uint256", + }, + ], + internalType: "struct BountyConfig", + name: "bountyConfig_", + type: "tuple", + }, + ], + name: "clear", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "VaultId", + name: "vaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + internalType: "struct DepositConfig", + name: "config_", + type: "tuple", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "inputVaultId", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "VaultId", + name: "outputVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "tracking", + type: "uint256", + }, + { + internalType: "bytes", + name: "vmState", + type: "bytes", + }, + ], + internalType: "struct Order", + name: "order_", + type: "tuple", + }, + ], + name: "removeOrder", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "VaultId", + name: "vaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + internalType: "struct WithdrawConfig", + name: "config_", + type: "tuple", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b50604051620046383803806200463883398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614596620000a26000396000610d9e01526000610dbf01526145966000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bb93549b1161005b578063bb93549b146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806384e07cdc146100aa575b600080fd5b6100956100903660046134cb565b610135565b005b6100956100a536600461351e565b610258565b6100956100b836600461378e565b6103ac565b6100956100cb36600461382c565b610d97565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b36600461351e565b610e60565b610128610f5a565b60405161010491906138dd565b61014260208201826138f0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e98361390d565b611124565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b90339085906139cd565b60405180910390a15b5050565b3360009081526001602090815260408220908290610278908501856138f0565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf9084013583611173565b90506102cb8183613abe565b336000908152600160209081526040822091906102ea908701876138f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613b0d565b60405180910390a16103a7338261038a60208701876138f0565b73ffffffffffffffffffffffffffffffffffffffff16919061118d565b505050565b60006103b784611124565b905060006103c484611124565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff1614610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff1614610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b61061b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b6040516106569493929190613bb2565b60405180910390a16106906040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61069d8b60c00151611261565b90506106e16106d960405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff168152506113cd565b826000611421565b5080602001516001826000015103815181106106ff576106ff613c10565b60200260200101519450806020015160028260000151038151811061072657610726613c10565b6020026020010151925061073d8a60c00151611261565b90506107796106d960405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff168152506113cd565b50806020015160018260000151038151811061079757610797613c10565b6020026020010151935080602001516002826000015103815181106107be576107be613c10565b6020026020010151915050610875600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361117390919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e01518352905220549092506108c9908290611173565b90506108df6108d882856116f7565b8390611173565b85526108f56108ee83866116f7565b8290611173565b6020860152845115158061090d575060008560200151115b610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b845161097f90856116f7565b6040860152602085015161099390846116f7565b606086015250508251159150610a8b9050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b01518352905290812080549091906109fe908490613abe565b909155505060a086015160011615610a3657805160008481526002602052604081208054909190610a30908490613c3f565b90915550505b60a086015160021615610a8b5780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610a85908490613c3f565b90915550505b602081015115610b8757602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610af0908490613abe565b909155505060a085015160011615610b2f578060200151600260008481526020019081526020016000206000828254610b299190613c3f565b90915550505b60a085015160021615610b875760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610b81908490613c3f565b90915550505b604081015115610bf257604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610bec908490613c3f565b90915550505b606081015115610c5c576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610c56908490613c3f565b90915550505b60608101518151600091610c6f91613abe565b9050600082604001518360200151610c879190613abe565b90508115610ce25733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610cdc908490613c3f565b90915550505b8015610d3d5733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610d37908490613c3f565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b6000610dec7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610de785613ce1565b611716565b90506000610df982611124565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb890610e539033908590613e31565b60405180910390a1505050565b33600090815260016020908152604080832090840135929091610e85908501856138f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee39190613c3f565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a9033908490613e60565b60405180910390a1610f5733306040840135610f3960208601866138f0565b73ffffffffffffffffffffffffffffffffffffffff169291906119a4565b50565b604080516105808101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611e4d60e0820152611e58610100820152611e63610120820152611e6e610140820152611e79610160820152611eec610180820152611f526101a0820152611f926101c0820152611fc66101e0820152611ffa61020082015261204161022082015261209e6102408201526120d76102608201526121156102808201526121676102a08201526121c46102c08201526121f86102e082015261222c61030082015261225e6103208201526122906103408201526122c26103608201526122ef61038082015261234a6103a08201526123a06103c08201526123f76103e082015261244e6104008201526124826104208201526124ac6104408201526125936104608201526125ef61048082015261266b6104a08201526127256104c082018190526127cf6104e083015261050082015261284f610520820152612957610540820152612a7561056080830191909152815260408051606081018252612c726020820152612cad81830152908152604051602001611110929190613e8a565b604051602081830303815290604052905090565b6000816040516020016111379190613eb9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60008183106111825781611184565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a08565b6112936040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6112c56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156112f9576112f961353a565b604051908082528060200260200182016040528015611322578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156113595761135961353a565b604051908082528060200260200182016040528015611382578160200160208202803683370190505b5090506020870151602002604001870160005b848110156113bc578160208202602001840152815160200182019150600181019050611395565b505060408501525091949350505050565b60606113d76134ad565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff168183015260405161140a91839101613ecc565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156116dd576003890198508886015180601f1a975061ffff8160081c16985050600688101561165557876114a457866020028401518252602082019150611668565b60018814156114c157602087028301518252602082019150611668565b600288141561154e578c518760200210611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d01518252602082019150611668565b60038814156115965760006115846040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611668565b60048814156115b2576115ab8d8d848a611b14565b9150611668565b6060876115e0578c6040516020016115ca9190613f8d565b604051602081830303815290604052905061163f565b60018814156115f9576115f28d611c81565b905061163f565b6002881415611615576020808e01516040516115ca9201614024565b600388141561163f578c516040805160208101929092520160405160208183030381529060405290505b80511561164f5761164f81611dbe565b50611668565b87611664888463ffffffff8416565b9250505b60208c0151518c5111156116d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b61145f565b6020838303048c52509750505050505050505b9392505050565b6000670de0b6b3a764000061170c8385614089565b61118491906140c6565b6117986040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b6117d86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6118396040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816117f9579050509050818160008151811061186257611862613c10565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff16815260200185606001518152602001856080015181526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860a00151866040518463ffffffff1660e01b815260040161193393929190614101565b6000604051808303816000875af1158015611952573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261199891908101906141f4565b90529695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a029085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111df565b50505050565b6000611a6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612d319092919063ffffffff16565b8051909150156103a75780806020019051810190611a88919061426b565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b600060078216600383811c16828082611b5357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611b9e565b8260011415611b7757506fffffffffffffffffffffffffffffffff90506080611b9e565b8260021415611b93575067ffffffffffffffff90506040611b9e565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611bc157611bc161353a565b604051908082528060200260200182016040528015611bea578160200160208202803683370190505b50905060208082019083028a03815b8b821015611c11578151815260209182019101611bf9565b505060608b015160808c015160209081029091010160005b610100811015611c6f5760208502830182845b82811015611c58578051841c8a16825260209182019101611c3c565b505050611c668e8e8b611421565b9b508501611c29565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611ccd9190614024565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d09929160200161428d565b604051602081830303815290604052905060005b856040015151811015611db5578186604001518281518110611d4157611d41613c10565b60200260200101515160001b87604001518381518110611d6357611d63613c10565b6020026020010151604051602001611d7d939291906142b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611d1d565b50949350505050565b610f5781604051602401611dd291906138dd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612d48565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611edf82611ed9858a612d69565b906116f7565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611edf82611f4c858a612d69565b90612dea565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611f868287612d69565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611f868287612dff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611f868287612e5d565b600060208302820380516000602083015b85811015612033578051830191508282101561202657600080fd5b909150819060200161200b565b505081526020019392505050565b6020828102820380516000928201835b858210801561207f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612033575080516020909101906120978382612ea8565b9250612051565b600060208302820380516000602083015b8581101561203357805183039150828211156120ca57600080fd5b90915081906020016120af565b6020828102820380516000928201835b85821080156120f65750826000105b156120335750805160209091019061210e8382612ee3565b92506120e7565b60006020830282038051600080602084015b8681101561215857831561215057805192508284029150828483041461214c57600080fd5b8193505b602001612127565b50505081526020019392505050565b6020828102820380516000928201835b85821080156121a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612033575080516020909101906121bd8382612ef9565b9250612177565b600060208302820380516000602083015b858110156120335780519150816121eb57600080fd5b91819004916020016121d5565b600060208302820380516000602083015b8581101561203357805191508161221f57600080fd5b9181900691602001612209565b6020828102820380516000928201835b8582101561203357508051602090910190612257818461440a565b925061223c565b6020828102820380516000928201835b858210156120335750805182811015612285578092505b60208201915061226e565b6020828102820380516000928201835b8582101561203357508051828111156122b7578092505b6020820191506122a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561247757805161246f5760008252612477565b602001612458565b506020019392505050565b6000602083028203805b8381101561247757805180156124a3578252612477565b5060200161248c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edf9190614416565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611edf8383612f28565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561265c85858585612f87565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156126995761269961353a565b6040519080825280602002602001820160405280156126c2578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156126fe578151816020018601526020820191506020810190506126dc565b505051905060006127118383898961302d565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612552565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f869190614416565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612934919061442f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015612a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a679190614416565b909452509395945050505050565b60008060008467ffffffffffffffff811115612a9357612a9361353a565b604051908082528060200260200182016040528015612abc578160200160208202803683370190505b50905060008567ffffffffffffffff811115612ada57612ada61353a565b604051908082528060200260200182016040528015612b03578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612b58578251815260209283019201612b40565b5050602088028101602084015b81831015612b7d578251815260209283019201612b65565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612bd7908790879060040161444c565b600060405180830381865afa158015612bf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612c3a91908101906144af565b9050846020820160208a0281015b80821015612c63578151835260209283019290910190612c48565b50909998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b6060612d40848460008561317d565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415612d7e5783915050611187565b8260121115612daa57506012829003612d9881600a61440a565b612da29085614089565b915050611187565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612dd981600a61440a565b612da290856140c6565b5092915050565b60008161170c670de0b6b3a764000085614089565b6000806012831415612e145783915050611187565b8260121115612e2e57506012829003612dd981600a61440a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612d9881600a61440a565b600081810b612e6d575081611187565b60008260000b1315612e9557612e8482600a614535565b612e8e9084614089565b9050611187565b60ff600083900316612dd981600a61440a565b6000828201838110612eba5780612d40565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000818311612ef3576000611184565b50900390565b600082612f0857506000611187565b82820282848281612f1b57612f1b61405a565b041415612eba5780612d40565b60008060015b60088111612f7f576000612f428683613313565b90506000612f508684613313565b90506000612f5e8383612ee3565b9050612f6e8560018603836133c0565b94505060019092019150612f2e9050565b509392505050565b6000826008811115612ff5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156130215763ffffffff6020820290811b199890981685891b17979150600101612ff9565b50959695505050505050565b835160009081908190819060015b6008811161316f5760009250828761307457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613078565b5060005b60005b8381101561312d576130a68c828151811061309857613098613c10565b602002602001015184613313565b95508a86116130f857886130c5576130be8683611173565b91506130ef565b60018914156130d8576130be868361344a565b6002891480156130e6575084155b156130ef578591505b60019450613125565b89613125577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061312d565b60010161307b565b508361315657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6131648660018403836133c0565b95505060010161303b565b509298975050505050505050565b60608247101561320f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b61328d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516132b69190614544565b60006040518083038185875af1925050503d80600081146132f3576040519150601f19603f3d011682016040523d82523d6000602084013e6132f8565b606091505b509150915061330882828661345a565b979650505050505050565b6000816008811115613381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b8261338f5760009150612de3565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b600082600881111561342e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310156111825781611184565b606083156134695750816116f0565b8251156134795782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d291906138dd565b60405180604001604052806002906020820280368337509192915050565b6000602082840312156134dd57600080fd5b813567ffffffffffffffff8111156134f457600080fd5b820160e081850312156116f057600080fd5b60006060828403121561351857600080fd5b50919050565b60006060828403121561353057600080fd5b6111848383613506565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561358c5761358c61353a565b60405290565b60405160c0810167ffffffffffffffff8111828210171561358c5761358c61353a565b6040805190810167ffffffffffffffff8111828210171561358c5761358c61353a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561361f5761361f61353a565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b803561365481613627565b919050565b600067ffffffffffffffff8211156136735761367361353a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126136b057600080fd5b81356136c36136be82613659565b6135d8565b8181528460208386010111156136d857600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0828403121561370757600080fd5b61370f613569565b905061371a82613649565b815261372860208301613649565b60208201526040820135604082015261374360608301613649565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff81111561377657600080fd5b6137828482850161369f565b60c08301525092915050565b600080600083850360808112156137a457600080fd5b843567ffffffffffffffff808211156137bc57600080fd5b6137c8888389016136f5565b955060208701359150808211156137de57600080fd5b506137eb878288016136f5565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561381e57600080fd5b506040840190509250925092565b60006020828403121561383e57600080fd5b813567ffffffffffffffff81111561385557600080fd5b820160c081850312156116f057600080fd5b60005b8381101561388257818101518382015260200161386a565b83811115611a025750506000910152565b600081518084526138ab816020860160208601613867565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111846020830184613893565b60006020828403121561390257600080fd5b81356116f081613627565b600061118736836136f5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261394e57600080fd5b830160208101925035905067ffffffffffffffff81111561396e57600080fd5b80360383131561397d57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015283356139fb81613627565b811660408401526020840135613a1081613627565b8181166060850152505060408301356080830152613a3060608401613649565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613a6e60c0840184613919565b60e0610100850152613a8561012085018284613984565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613ad057613ad0613a8f565b500390565b8035613ae081613627565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613b376020830185613ad5565b826080830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c0850152612d4060e0850182613893565b73ffffffffffffffffffffffffffffffffffffffff8516815260a060208201526000613be160a0830186613b45565b8281036040840152613bf38186613b45565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115613c5257613c52613a8f565b500190565b600067ffffffffffffffff821115613c7157613c7161353a565b5060051b60200190565b600082601f830112613c8c57600080fd5b81356020613c9c6136be83613c57565b82815260059290921b84018101918181019086841115613cbb57600080fd5b8286015b84811015613cd65780358352918301918301613cbf565b509695505050505050565b600060c08236031215613cf357600080fd5b613cfb613592565b8235613d0681613627565b8152602083810135818301526040840135613d2081613627565b80604084015250606084013560608301526080840135608083015260a084013567ffffffffffffffff80821115613d5657600080fd5b818601915060408236031215613d6b57600080fd5b613d736135b5565b823582811115613d8257600080fd5b830136601f820112613d9357600080fd5b8035613da16136be82613c57565b81815260059190911b82018601908681019036831115613dc057600080fd5b8784015b83811015613df857803587811115613ddc5760008081fd5b613dea368b8389010161369f565b845250918801918801613dc4565b5084525050508284013582811115613e0f57600080fd5b613e1b36828601613c7b565b9482019490945260a08501525091949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612d406040830184613b45565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016116f06020830184613ad5565b60008351613e9c818460208801613867565b835190830190613eb0818360208801613867565b01949350505050565b6020815260006111846020830184613b45565b60008183825b6002811015613ef1578151835260209283019290910190600101613ed2565b50505060408201905092915050565b600081518084526020808501945080840160005b83811015613f3057815187529582019590820190600101613f14565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015613f80578383038952613f6e838351613893565b98850198925090840190600101613f56565b5090979650505050505050565b60208152815160208201526000602083015160a06040840152613fb360c0840182613f00565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016060860152613fef8383613f3b565b925060608601519150808584030160808601525061400d8282613f00565b915050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561404e57815185529382019390820190600101614032565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140c1576140c1613a8f565b500290565b6000826140fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261413c83880183613f3b565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526141778483613f00565b898103848b01528a51808252878c019550908701925060005b818110156141e25785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e090930192600101614190565b50919c9b505050505050505050505050565b60006020828403121561420657600080fd5b815167ffffffffffffffff81111561421d57600080fd5b8201601f8101841361422e57600080fd5b805161423c6136be82613659565b81815285602083850101111561425157600080fd5b614262826020830160208601613867565b95945050505050565b60006020828403121561427d57600080fd5b815180151581146116f057600080fd5b828152600082516142a5816020850160208701613867565b919091016020019392505050565b600084516142c5818460208901613867565b820184815283516142dd816020808501908801613867565b0160200195945050505050565b600181815b8085111561434357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561432957614329613a8f565b8085161561433657918102915b93841c93908002906142ef565b509250929050565b60008261435a57506001611187565b8161436757506000611187565b816001811461437d5760028114614387576143a3565b6001915050611187565b60ff84111561439857614398613a8f565b50506001821b611187565b5060208310610133831016604e8410600b84101617156143c6575081810a611187565b6143d083836142ea565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561440257614402613a8f565b029392505050565b6000611184838361434b565b60006020828403121561442857600080fd5b5051919050565b60006020828403121561444157600080fd5b81516116f081613627565b604080825283519082018190526000906020906060840190828701845b8281101561449b57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614469565b50505083810382850152613a858186613f00565b600060208083850312156144c257600080fd5b825167ffffffffffffffff8111156144d957600080fd5b8301601f810185136144ea57600080fd5b80516144f86136be82613c57565b81815260059190911b8201830190838101908783111561451757600080fd5b928401925b828410156133085783518252928401929084019061451c565b600061118460ff84168361434b565b60008251614556818460208701613867565b919091019291505056fea26469706673582212201849bdb7eb2abd02ec8db0c40492bb850654e3af371edee0ce96229617e4382864736f6c634300080a0033"; + +type OrderBookConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: OrderBookConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class OrderBook__factory extends ContractFactory { + constructor(...args: OrderBookConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(vmStateBuilder_, overrides || {}) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): OrderBook { + return super.attach(address) as OrderBook; + } + connect(signer: Signer): OrderBook__factory { + return super.connect(signer) as OrderBook__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): OrderBookInterface { + return new utils.Interface(_abi) as OrderBookInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OrderBook { + return new Contract(address, _abi, signerOrProvider) as OrderBook; + } +} diff --git a/src/typechain/factories/OwnableUpgradeable__factory.ts b/src/typechain/factories/OwnableUpgradeable__factory.ts index 7d69092..3100f92 100644 --- a/src/typechain/factories/OwnableUpgradeable__factory.ts +++ b/src/typechain/factories/OwnableUpgradeable__factory.ts @@ -10,6 +10,19 @@ import type { } from "../OwnableUpgradeable"; const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ diff --git a/src/typechain/factories/Ownable__factory.ts b/src/typechain/factories/Ownable__factory.ts deleted file mode 100644 index df0453a..0000000 --- a/src/typechain/factories/Ownable__factory.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { Ownable, OwnableInterface } from "../Ownable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class Ownable__factory { - static readonly abi = _abi; - static createInterface(): OwnableInterface { - return new utils.Interface(_abi) as OwnableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): Ownable { - return new Contract(address, _abi, signerOrProvider) as Ownable; - } -} diff --git a/src/typechain/factories/PCToken__factory.ts b/src/typechain/factories/PCToken__factory.ts deleted file mode 100644 index 074ca88..0000000 --- a/src/typechain/factories/PCToken__factory.ts +++ /dev/null @@ -1,378 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { PCToken, PCTokenInterface } from "../PCToken"; - -const _abi = [ - { - inputs: [ - { - internalType: "string", - name: "tokenSymbol", - type: "string", - }, - { - internalType: "string", - name: "tokenName", - type: "string", - }, - ], - 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: [], - name: "DECIMALS", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "NAME", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - 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: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "decreaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "increaseApproval", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - 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: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transfer", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "sender", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000ef438038062000ef4833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250508251620001b491506003906020850190620001d3565b508051620001ca906004906020840190620001d3565b5050506200026f565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021657805160ff191683800117855562000246565b8280016001018555821562000246579182015b828111156200024657825182559160200191906001019062000229565b506200025492915062000258565b5090565b5b8082111562000254576000815560010162000259565b610c75806200027f6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063661884631161008c578063a3f4df7e11610066578063a3f4df7e146102a5578063a9059cbb146102ad578063d73dd623146102e6578063dd62ed3e1461031f576100df565b8063661884631461023157806370a082311461026a57806395d89b411461029d576100df565b806323b872dd116100bd57806323b872dd146101c85780632e0f26251461020b578063313ce56714610229576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61035a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040e565b604080519115158252519081900360200190f35b6101b6610481565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610487565b6102136106be565b6040805160ff9092168252519081900360200190f35b6102136106c3565b61019a6004803603604081101561024757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106c8565b6101b66004803603602081101561028057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107e5565b6100ec61080d565b6100ec61088c565b61019a600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356108c5565b61019a600480360360408110156102fc57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561095d565b6101b66004803603604081101561033557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610a0a565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60005490565b600073ffffffffffffffffffffffffffffffffffffffff831661050b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604482015290519081900360640190fd5b3373ffffffffffffffffffffffffffffffffffffffff8516148061055f575073ffffffffffffffffffffffffffffffffffffffff841660009081526002602090815260408083203384529091529020548211155b6105ca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552525f5043544f4b454e5f4241445f43414c4c455200000000000000000000604482015290519081900360640190fd5b6105d5848484610a42565b73ffffffffffffffffffffffffffffffffffffffff8416600081815260026020908152604080832033808552925290912054911480159061063657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114155b156106b3576106458184610b17565b73ffffffffffffffffffffffffffffffffffffffff868116600090815260026020908152604080832033808552908352928190208590558051948552519288169391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a35b506001949350505050565b601281565b601290565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120548083106107365733600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff88168452909152812055610772565b6107408184610b17565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff891684529091529020555b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205490565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104045780601f106103d957610100808354040283529160200191610404565b6040518060400160405280601381526020017f42616c616e63657220536d61727420506f6f6c0000000000000000000000000081525081565b600073ffffffffffffffffffffffffffffffffffffffff831661094957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4552525f5a45524f5f4144445245535300000000000000000000000000000000604482015290519081900360640190fd5b610954338484610a42565b50600192915050565b33600090815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091528120546109989083610b9f565b33600081815260026020908152604080832073ffffffffffffffffffffffffffffffffffffffff89168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260026020908152604080832093909416825291909152205490565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610a729082610b17565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054610aae9082610b9f565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000806000610b268585610c1a565b915091508015610b9757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604482015290519081900360640190fd5b509392505050565b600082820183811015610c1357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b9392505050565b600080838311610c305750508082036000610c38565b505081810360015b925092905056fea26469706673582212200eb2f8d4ff71330acb013d7e40de2372cc6f09b396056c2693d05a3731a5597964736f6c634300060c0033"; - -type PCTokenConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: PCTokenConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class PCToken__factory extends ContractFactory { - constructor(...args: PCTokenConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - tokenSymbol: string, - tokenName: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy( - tokenSymbol, - tokenName, - overrides || {} - ) as Promise; - } - getDeployTransaction( - tokenSymbol: string, - tokenName: string, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(tokenSymbol, tokenName, overrides || {}); - } - attach(address: string): PCToken { - return super.attach(address) as PCToken; - } - connect(signer: Signer): PCToken__factory { - return super.connect(signer) as PCToken__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): PCTokenInterface { - return new utils.Interface(_abi) as PCTokenInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): PCToken { - return new Contract(address, _abi, signerOrProvider) as PCToken; - } -} diff --git a/src/typechain/factories/RainVM__factory.ts b/src/typechain/factories/RainVM__factory.ts new file mode 100644 index 0000000..254f691 --- /dev/null +++ b/src/typechain/factories/RainVM__factory.ts @@ -0,0 +1,58 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { RainVM, RainVMInterface } from "../RainVM"; + +const _abi = [ + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +export class RainVM__factory { + static readonly abi = _abi; + static createInterface(): RainVMInterface { + return new utils.Interface(_abi) as RainVMInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): RainVM { + return new Contract(address, _abi, signerOrProvider) as RainVM; + } +} diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts index 2e749d0..d533ab2 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts @@ -473,7 +473,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611991806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115ce565b610231565b005b6100d06100cb366004611614565b6104c0565b60405190815260200160405180910390f35b6100bb6100f0366004611655565b610503565b6100d06101033660046116a0565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d366004611614565b6105cd565b6100bb610170366004611614565b6107a2565b6100d0610183366004611655565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d3366004611614565b6107d5565b6100d06101e63660046116f1565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610afc565b600281111561024d5761024d611744565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260056020908152604080832093871683529281528282203383528152828220858352905290812080548392906103779084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c89084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906104199084906117a2565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610ca0565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610e1b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610ca0565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610eef565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610afc565b600281111561065357610653611744565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209386168352928152828220338352905290812080548392906107069084906117b9565b909155506000905061071784610ca0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff841633308561123f565b6107ae83833384610eef565b6107d073ffffffffffffffffffffffffffffffffffffffff831633308461123f565b505050565b60026107e084610afc565b60028111156107f1576107f1611744565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260066020908152604080832094871680845294825280832086845282528083205493835260038252808320948352938152838220858352815283822033835290529182205490916108c586610ca0565b73ffffffffffffffffffffffffffffffffffffffff87811660009081526003602090815260408083208a8516845282528083208984528252808320338085529252808320889055517f70a0823100000000000000000000000000000000000000000000000000000000815260048101919091529293509186918416906370a0823190602401602060405180830381865afa158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b91906117d1565b61099585876117a2565b61099f91906117ea565b6109a99190611827565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109fa9084906117a2565b909155505080610a66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610af373ffffffffffffffffffffffffffffffffffffffff87163383610e1b565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b3857610b38611744565b1115610b445792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb59190611862565b90506002816003811115610bcb57610bcb611744565b1415610c265750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c3a57610c3a611744565b1415610c965750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610e155760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d409190611883565b905073ffffffffffffffffffffffffffffffffffffffff8116610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261129d565b6000610efa85610afc565b6002811115610f0b57610f0b611744565b11610f72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fe785610ca0565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611036573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105a91906117d1565b9050600081116110c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80871660009081526005602090815260408083208985168452825280832093881683529281528282208483529052908120805485929061111c9084906117b9565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061116d9084906117b9565b909155505073ffffffffffffffffffffffffffffffffffffffff80871660009081526007602090815260408083209389168352928152828220848352905290812080548592906111be9084906117b9565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e6d565b60006112ff826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166113a99092919063ffffffff16565b8051909150156107d0578080602001905181019061131d91906118a0565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b60606113b884846000856113c0565b949350505050565b606082471015611452576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114f991906118ee565b60006040518083038185875af1925050503d8060008114611536576040519150601f19603f3d011682016040523d82523d6000602084013e61153b565b606091505b509150915061154b828286611556565b979650505050505050565b606083156115655750816104fc565b8251156115755782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b0919061190a565b73ffffffffffffffffffffffffffffffffffffffff811681146115cb57600080fd5b50565b600080600080608085870312156115e457600080fd5b84356115ef816115a9565b935060208501356115ff816115a9565b93969395505050506040820135916060013590565b60008060006060848603121561162957600080fd5b8335611634816115a9565b92506020840135611644816115a9565b929592945050506040919091013590565b60008060006060848603121561166a57600080fd5b8335611675816115a9565b92506020840135611685816115a9565b91506040840135611695816115a9565b809150509250925092565b600080600080608085870312156116b657600080fd5b84356116c1816115a9565b935060208501356116d1816115a9565b925060408501356116e1816115a9565b9396929550929360600135925050565b6000806000806080858703121561170757600080fd5b8435611712816115a9565b93506020850135611722816115a9565b9250604085013591506060850135611739816115a9565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b6000602082840312156117e357600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561182257611822611773565b500290565b60008261185d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561187457600080fd5b8151600481106104fc57600080fd5b60006020828403121561189557600080fd5b81516104fc816115a9565b6000602082840312156118b257600080fd5b815180151581146104fc57600080fd5b60005b838110156118dd5781810151838201526020016118c5565b838111156104ba5750506000910152565b600082516119008184602087016118c2565b9190910192915050565b60208152600082518060208401526119298160408501602087016118c2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220ea9bda1a00aea5de2ce4ce1a69094213e2613c37ad0c1db4e4d88f42867ea0a464736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f31f34597b211bd7285b6bd31dd1526ee4142fcd5bf8a891c1cf8690726573de64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowWrapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts index e8cc1a7..e4be016 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts @@ -347,7 +347,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611748806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a366004611429565b6100cd565b005b61007f61008f36600461146f565b61035c565b61007f6100a23660046114ba565b610426565b61007f6100b53660046114ba565b6105fb565b61007f6100c83660046114ba565b61062e565b60016100d885610955565b60028111156100e9576100e96114fb565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610213908490611559565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600660209081526040808320938716835292815282822085835290529081208054839290610264908490611559565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b5908490611559565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610af9565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c74565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610af9565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d48565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b84610955565b60028111156104ac576104ac6114fb565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611570565b909155506000905061057084610af9565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff8416333085611098565b61060783833384610d48565b61062973ffffffffffffffffffffffffffffffffffffffff8316333084611098565b505050565b600261063984610955565b600281111561064a5761064a6114fb565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822054909161071e86610af9565b73ffffffffffffffffffffffffffffffffffffffff87811660009081526003602090815260408083208a8516845282528083208984528252808320338085529252808320889055517f70a0823100000000000000000000000000000000000000000000000000000000815260048101919091529293509186918416906370a0823190602401602060405180830381865afa1580156107c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e49190611588565b6107ee8587611559565b6107f891906115a1565b61080291906115de565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b168352928152828220898352905290812080549293508392909190610853908490611559565b9091555050806108bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161094c73ffffffffffffffffffffffffffffffffffffffff87163383610c74565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610991576109916114fb565b111561099d5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109ea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0e9190611619565b90506002816003811115610a2457610a246114fb565b1415610a7f5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a9357610a936114fb565b1415610aef5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c6e5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b99919061163a565b905073ffffffffffffffffffffffffffffffffffffffff8116610c18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110f6565b6000610d5385610955565b6002811115610d6457610d646114fb565b11610dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e4085610af9565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb39190611588565b905060008111610f1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f75908490611570565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610fc6908490611570565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290611017908490611570565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610cc6565b6000611158826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112029092919063ffffffff16565b80519091501561062957808060200190518101906111769190611657565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b6060611211848460008561121b565b90505b9392505050565b6060824710156112ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b61132b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161135491906116a5565b60006040518083038185875af1925050503d8060008114611391576040519150601f19603f3d011682016040523d82523d6000602084013e611396565b606091505b50915091506113a68282866113b1565b979650505050505050565b606083156113c0575081611214565b8251156113d05782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c91906116c1565b73ffffffffffffffffffffffffffffffffffffffff8116811461142657600080fd5b50565b6000806000806080858703121561143f57600080fd5b843561144a81611404565b9350602085013561145a81611404565b93969395505050506040820135916060013590565b60008060006060848603121561148457600080fd5b833561148f81611404565b9250602084013561149f81611404565b915060408401356114af81611404565b809150509250925092565b6000806000606084860312156114cf57600080fd5b83356114da81611404565b925060208401356114ea81611404565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561156b5761156b61152a565b500390565b600082198211156115835761158361152a565b500190565b60006020828403121561159a57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115d9576115d961152a565b500290565b600082611614577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561162b57600080fd5b81516004811061121457600080fd5b60006020828403121561164c57600080fd5b815161121481611404565b60006020828403121561166957600080fd5b8151801515811461121457600080fd5b60005b8381101561169457818101518382015260200161167c565b838111156103565750506000910152565b600082516116b7818460208701611679565b9190910192915050565b60208152600082518060208401526116e0816040850160208701611679565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220ec4442479dfe0c9bff5bf592c824cdede3c2d2a242c92ab92b5b8c3cd21ae9a864736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220fe13880f7f37da2d19095b3252247f55e154a19f54d760bd29f47004c2a620e664736f6c634300080a0033"; type RedeemableERC20ClaimEscrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Factory__factory.ts b/src/typechain/factories/RedeemableERC20Factory__factory.ts index 2e45b75..ebb196b 100644 --- a/src/typechain/factories/RedeemableERC20Factory__factory.ts +++ b/src/typechain/factories/RedeemableERC20Factory__factory.ts @@ -174,7 +174,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61357a80610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea2646970667358221220d3af1f2e9d8b3b7f1c160ad9f5f16a0f1bc68ef872fb57f01b4b0a787f4f2d1a64736f6c634300080a0033608060405234801561001057600080fd5b5061355a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063b7a3c82811610097578063e384346311610071578063e384346314610458578063e7ae91fe14610493578063f1ebd5dd146104a6578063f677de96146104af57600080fd5b8063b7a3c828146103ec578063b8ffd02c146103ff578063dd62ed3e1461041257600080fd5b806395d89b41116100d357806395d89b41146103965780639923c94b1461039e578063a457c2d7146103c6578063a9059cbb146103d957600080fd5b806379cc67901461035d5780638246df01146103705780638b24259b1461038357600080fd5b8063313ce56711610166578063395093511161014057806339509351146102ee57806342966c6814610301578063634991af1461031457806370a082311461032757600080fd5b8063313ce567146102915780633833be62146102a0578063392243e1146102b357600080fd5b8063095ea7b3116101a2578063095ea7b31461020e57806316f4d0221461023157806318160ddd1461027657806323b872dd1461027e57600080fd5b8063038ef03e146101c9578063055ad42e146101de57806306fdde03146101f9575b600080fd5b6101dc6101d7366004612d90565b6104c2565b005b6101e6610514565b6040519081526020015b60405180910390f35b61020161057f565b6040516101f09190612dd7565b61022161021c366004612e28565b610611565b60405190151581526020016101f0565b609c546102519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f0565b6036546101e6565b61022161028c366004612e52565b61062b565b604051601281526020016101f0565b6101dc6102ae366004612d90565b610651565b6102216102c1366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600116151590565b6102216102fc366004612e28565b61073b565b6101dc61030f366004612e8e565b610787565b6101e6610322366004612eea565b610794565b6101e6610335366004612d90565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101dc61036b366004612e28565b6107e8565b6101dc61037e366004612f74565b610801565b6101dc610391366004612d90565b610db4565b610201610f3c565b6103b16103ac366004612e8e565b610f4b565b60405163ffffffff90911681526020016101f0565b6102216103d4366004612e28565b610f7b565b6102216103e7366004612e28565b611057565b6101dc6103fa366004612e8e565b611065565b6101e661040d366004612eea565b611090565b6101e6610420366004612faf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610221610466366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600216151590565b6101dc6104a1366004612d90565b6110cf565b6101e6609d5481565b6101dc6104bd366004612fe2565b6111b4565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161057a91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610533579050505050505043610794565b905090565b60606037805461058e9061305d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba9061305d565b80156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60003361061f818585611264565b60019150505b92915050565b600033610639858285611418565b6106448585856114e9565b60019150505b9392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff1633146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b6479101610509565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061061f90829086906107829087906130e0565b611264565b61079133826117a7565b50565b6000805b60088110156107de578381600881106107b3576107b36130f8565b602002015163ffffffff168310156107cc579050610625565b806107d681613127565b915050610798565b5060089392505050565b6107f3823383611418565b6107fd82826117a7565b5050565b600054610100900460ff1661081c5760005460ff1615610820565b303b155b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ce565b600054610100900460ff161580156108eb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6108f361199d565b6109036060830160408401612d90565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109ec6109586020840184613160565b610962908061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109a4925050506020850185613160565b6109b290602081019061319e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a4792505050565b610a626040518060400160405280848060200190610a0a9190613160565b610a1b906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff168152602090810190610a4590860186612d90565b73ffffffffffffffffffffffffffffffffffffffff169052611ae8565b670de0b6b3a7640000610a786020840184613160565b606001351015610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ce565b6060820135609d55610afc60a0830160808401612d90565b609e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556000808052609b602081815260037f10afac9233b4ccc54d6404ffc1cf3b47515a2b8edbf675d15eddce05a027dcbd5560019290610b8190860186613160565b610b92906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609e541615610bf357609e5473ffffffffffffffffffffffffffffffffffffffff166000908152609b60205260409020600190555b610c006020830183613160565b610c11906060810190604001612d90565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c8d610c666020840184613160565b610c77906060810190604001612d90565b610c846020850185613160565b60600135611ca6565b610c9d6101d76020840184612d90565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610cce9291906132b7565b60405180910390a1610ce66060830160408401612d90565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190613419565b50610d82600143611dd2565b80156107fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b600180610dbf610514565b14610e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b609a5473ffffffffffffffffffffffffffffffffffffffff163314610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b610eb2600243611dd2565b609e5473ffffffffffffffffffffffffffffffffffffffff166000610ef98473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f365773ffffffffffffffffffffffffffffffffffffffff8216610f2b57610f2684826117a7565b610f36565b610f368483836114e9565b50505050565b60606038805461058e9061305d565b60018160088110610f5b57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b61104c8286868403611264565b506001949350505050565b60003361061f8185856114e9565b6098546099546107919173ffffffffffffffffffffffffffffffffffffffff9182169116308461207b565b60008082116110a05760006110c2565b826110ac600184613432565b600881106110bc576110bc6130f8565b60200201515b63ffffffff169392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff163314611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade99101610509565b6002806111bf610514565b14611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b610f36848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612157915050565b73ffffffffffffffffffffffffffffffffffffffff8316611306576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff82166113a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f3657818110156114dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610f368484848403611264565b73ffffffffffffffffffffffffffffffffffffffff831661158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff821661162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b61163a8383836124fc565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156116f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906117349084906130e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161179a91815260200190565b60405180910390a3610f36565b73ffffffffffffffffffffffffffffffffffffffff821661184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b611856826000836124fc565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020548181101561190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611948908490613432565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161140b565b505050565b6001805463ffffffff16106119b4576119b4613449565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a056001826008612c42565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d390606001610509565b600054610100900460ff16611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b6107fd82826127f2565b805173ffffffffffffffffffffffffffffffffffffffff163b611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f454f415f53454e4445520000000000000000000000000000000000000000000060448201526064016106ce565b602081015173ffffffffffffffffffffffffffffffffffffffff16611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5a45524f5f544f4b454e0000000000000000000000000000000000000000000060448201526064016106ce565b60995473ffffffffffffffffffffffffffffffffffffffff1615611c0e57611c0e613449565b80516098805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556020808501516099805491909516921682179093556040805133815293840192909252908201527fe67a5c2dcf68e8fac05314f53ecd2ff0b403ed683c4bfdad15eaec7a8a63f55590606001610509565b73ffffffffffffffffffffffffffffffffffffffff8216611d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b611d2f600083836124fc565b8060366000828254611d4191906130e0565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611d7b9084906130e0565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106ce565b63ffffffff8110611ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611ed5610514565b14611f3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ce565b60018160088110611f4f57611f4f6130f8565b60088104919091015460079091166004026101000a900463ffffffff90811614611fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106ce565b8160018260088110611fe957611fe96130f8565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161206e9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f369085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128b0565b815160008167ffffffffffffffff81111561217457612174612ea7565b60405190808252806020026020018201604052801561219d578160200160208202803683370190505b5090506000821161220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ce565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227b9190613419565b90506000805b8481101561246e57828688838151811061229d5761229d6130f8565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123379190613419565b6123419190613478565b61234b91906134b5565b9150600082116123b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ce565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106123eb576123eb6130f8565b60200260200101518885604051612436949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a181848281518110612451576124516130f8565b60209081029190910101528061246681613127565b915050612281565b5061247933866117a7565b60005b848110156124f3576124e13385838151811061249a5761249a6130f8565b60200260200101518984815181106124b4576124b46130f8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166129bc9092919063ffffffff16565b806124eb81613127565b91505061247c565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ce565b6000811180156125e6575073ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546002161515806125e4575073ffffffffffffffffffffffffffffffffffffffff82166000908152609b602052604090205460011615155b155b156119985760016125f5610514565b1461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546001166126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ce565b609d54609c546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261278a92169063e053ea3190602401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190613419565b43612a12565b1015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ce565b600054610100900460ff16612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b815161289c906037906020850190612cde565b508051611998906038906020840190612cde565b6000612912826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a429092919063ffffffff16565b805190915015611998578080602001905181019061293091906134f0565b611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ce565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119989084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016120d5565b6000805b60088110156107de57828160200285901c63ffffffff161115612a3a579050610625565b600101612a16565b6060612a518484600085612a59565b949350505050565b606082471015612aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff85163b612b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ce565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b929190613512565b60006040518083038185875af1925050503d8060008114612bcf576040519150601f19603f3d011682016040523d82523d6000602084013e612bd4565b606091505b5091509150612be4828286612bef565b979650505050505050565b60608315612bfe57508161064a565b825115612c0e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce9190612dd7565b600183019183908215612cce5791602002820160005b83821115612c9c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c58565b8015612ccc5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c9c565b505b50612cda929150612d52565b5090565b828054612cea9061305d565b90600052602060002090601f016020900481019282612d0c5760008555612cce565b82601f10612d2557805160ff1916838001178555612cce565b82800160010185558215612cce579182015b82811115612cce578251825591602001919060010190612d37565b5b80821115612cda5760008155600101612d53565b803573ffffffffffffffffffffffffffffffffffffffff81168114612d8b57600080fd5b919050565b600060208284031215612da257600080fd5b61064a82612d67565b60005b83811015612dc6578181015183820152602001612dae565b83811115610f365750506000910152565b6020815260008251806020840152612df6816040850160208701612dab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612e3b57600080fd5b612e4483612d67565b946020939093013593505050565b600080600060608486031215612e6757600080fd5b612e7084612d67565b9250612e7e60208501612d67565b9150604084013590509250925092565b600060208284031215612ea057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612d8b57600080fd5b6000806101208385031215612efe57600080fd5b83601f840112612f0d57600080fd5b60405161010080820182811067ffffffffffffffff82111715612f3257612f32612ea7565b60405284018186821115612f4557600080fd5b855b82811015612f6657612f5881612ed6565b825260209182019101612f47565b509196903595509350505050565b600060208284031215612f8657600080fd5b813567ffffffffffffffff811115612f9d57600080fd5b820160a0818503121561064a57600080fd5b60008060408385031215612fc257600080fd5b612fcb83612d67565b9150612fd960208401612d67565b90509250929050565b600080600060408486031215612ff757600080fd5b833567ffffffffffffffff8082111561300f57600080fd5b818601915086601f83011261302357600080fd5b81358181111561303257600080fd5b8760208260051b850101111561304757600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061307157607f821691505b602082108114156130ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156130f3576130f36130b1565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613159576131596130b1565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261319457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131d357600080fd5b83018035915067ffffffffffffffff8211156131ee57600080fd5b60200191503681900382131561320357600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261323f57600080fd5b830160208101925035905067ffffffffffffffff81111561325f57600080fd5b80360383131561320357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132e485612d67565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261331f57600080fd5b60a060608501528401613332818061320a565b608060e08701526133486101608701828461326e565b915050613358602083018361320a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261338e83828461326e565b925050508261339f60408401612d67565b1661012086015260608201356101408601526133bd60408701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133f160808701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561342b57600080fd5b5051919050565b600082821015613444576134446130b1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134b0576134b06130b1565b500290565b6000826134eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561350257600080fd5b8151801515811461064a57600080fd5b60008251613194818460208701612dab56fea26469706673582212200e98bd243707999fddbe3a723adfa0bc42f752b4d0730f086841614ced18857c64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61336980610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea264697066735822122074fbf2f8f12d5102c88fb0dd487b54a0248b2605be1e20a07751a67f00287b7d64736f6c634300080a0033608060405234801561001057600080fd5b50613349806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a9059cbb11610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a9059cbb146103ce578063b8ffd02c146103e1578063dd62ed3e146103f457600080fd5b80638b24259b116100d35780638b24259b1461037857806395d89b411461038b5780639923c94b14610393578063a457c2d7146103bb57600080fd5b806370a082311461031c57806379cc6790146103525780638246df011461036557600080fd5b806323b872dd11610166578063392243e111610140578063392243e1146102a857806339509351146102e357806342966c68146102f6578063634991af1461030957600080fd5b806323b872dd14610273578063313ce567146102865780633833be621461029557600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612b7f565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612bc6565b610216610211366004612c17565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b610216610281366004612c41565b61060d565b604051601281526020016101e5565b6101d16102a3366004612b7f565b610633565b6102166102b6366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b6102166102f1366004612c17565b61071d565b6101d1610304366004612c7d565b610769565b6101db610317366004612cd9565b610776565b6101db61032a366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610360366004612c17565b6107ca565b6101d1610373366004612d63565b6107e3565b6101d1610386366004612b7f565b610cab565b6101f6610e33565b6103a66103a1366004612c7d565b610e42565b60405163ffffffff90911681526020016101e5565b6102166103c9366004612c17565b610e72565b6102166103dc366004612c17565b610f4e565b6101db6103ef366004612cd9565b610f5c565b6101db610402366004612d9e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612b7f565b610f9b565b6101db609b5481565b6101d161049f366004612dd1565b611080565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610515579050505050505043610776565b905090565b60606037805461057090612e4c565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612e4c565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611130565b60019150505b92915050565b60003361061b8582856112e4565b6106268585856113b5565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906106019082908690610764908790612ecf565b611130565b6107733382611673565b50565b6000805b60088110156107c05783816008811061079557610795612ee7565b602002015163ffffffff168310156107ae579050610607565b806107b881612f16565b91505061077a565b5060089392505050565b6107d58233836112e4565b6107df8282611673565b5050565b60006107ef6001611869565b9050801561082457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61082c6119f4565b61083c6060830160408401612b7f565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109256108916020840184612f4f565b61089b9080612f8d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108dd925050506020850185612f4f565b6108eb906020810190612f8d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a9e92505050565b670de0b6b3a764000061093b6020840184612f4f565b6060013510156109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106b0565b6060820135609b556109bf60a0830160808401612b7f565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610a4490860186612f4f565b610a55906060810190604001612b7f565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610ab657609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610ac36020830183612f4f565b610ad4906060810190604001612b7f565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b50610b296020840184612f4f565b610b3a906060810190604001612b7f565b610b476020850185612f4f565b60600135611b3f565b610b606101cc6020840184612b7f565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610b919291906130a6565b60405180910390a1610ba96060830160408401612b7f565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613208565b50610c45600143611c6b565b80156107df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610cb66104f6565b14610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b60985473ffffffffffffffffffffffffffffffffffffffff163314610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b610da9600243611c6b565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610df08473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e2d5773ffffffffffffffffffffffffffffffffffffffff8216610e2257610e1d8482611673565b610e2d565b610e2d8483836113b5565b50505050565b60606038805461057090612e4c565b60018160088110610e5257600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106b0565b610f438286868403611130565b506001949350505050565b6000336106018185856113b5565b6000808211610f6c576000610f8e565b82610f78600184613221565b60088110610f8857610f88612ee7565b60200201515b63ffffffff169392505050565b60985473ffffffffffffffffffffffffffffffffffffffff16331461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061108b6104f6565b146110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b610e2d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f14915050565b73ffffffffffffffffffffffffffffffffffffffff83166111d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff8216611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e2d57818110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106b0565b610e2d8484848403611130565b73ffffffffffffffffffffffffffffffffffffffff8316611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff82166114fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b6115068383836122b9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260346020526040808220858503905591851681529081208054849290611600908490612ecf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161166691815260200190565b60405180910390a3610e2d565b73ffffffffffffffffffffffffffffffffffffffff8216611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b611722826000836122b9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611814908490613221565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112d7565b505050565b60008054610100900460ff1615611920578160ff16600114801561188c5750303b155b611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b506000919050565b60005460ff8084169116106119b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff1610611a0b57611a0b613238565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a5c6001826008612a36565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b600054610100900460ff16611b35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b6107df82826125af565b73ffffffffffffffffffffffffffffffffffffffff8216611bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106b0565b611bc8600083836122b9565b8060366000828254611bda9190612ecf565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c14908490612ecf565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106b0565b63ffffffff8110611d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d6e6104f6565b14611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106b0565b60018160088110611de857611de8612ee7565b60088104919091015460079091166004026101000a900463ffffffff90811614611e6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106b0565b8160018260088110611e8257611e82612ee7565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f079392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3157611f31612c96565b604051908082528060200260200182016040528015611f5a578160200160208202803683370190505b50905060008211611fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106b0565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613208565b90506000805b8481101561222b57828688838151811061205a5761205a612ee7565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f49190613208565b6120fe9190613267565b61210891906132a4565b915060008211612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106b0565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121a8576121a8612ee7565b602002602001015188856040516121f3949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061220e5761220e612ee7565b60209081029190910101528061222381612f16565b91505061203e565b506122363386611673565b60005b848110156122b05761229e3385838151811061225757612257612ee7565b602002602001015189848151811061227157612271612ee7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661266d9092919063ffffffff16565b806122a881612f16565b915050612239565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106b0565b6000811180156123a3575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123a1575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118645760016123b26104f6565b14612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106b0565b609b54609a546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261254792169063e053ea3190602401602060405180830381865afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190613208565b436126fa565b1015611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106b0565b600054610100900460ff16612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b8151612659906037906020850190612ad2565b508051611864906038906020840190612ad2565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261186490849061272a565b6000805b60088110156107c057828160200285901c63ffffffff161115612722579050610607565b6001016126fe565b600061278c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166128369092919063ffffffff16565b80519091501561186457808060200190518101906127aa91906132df565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106b0565b6060612845848460008561284d565b949350505050565b6060824710156128df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff85163b61295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129869190613301565b60006040518083038185875af1925050503d80600081146129c3576040519150601f19603f3d011682016040523d82523d6000602084013e6129c8565b606091505b50915091506129d88282866129e3565b979650505050505050565b606083156129f257508161062c565b825115612a025782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190612bc6565b600183019183908215612ac25791602002820160005b83821115612a9057835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612a4c565b8015612ac05782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612a90565b505b50612ace929150612b46565b5090565b828054612ade90612e4c565b90600052602060002090601f016020900481019282612b005760008555612ac2565b82601f10612b1957805160ff1916838001178555612ac2565b82800160010185558215612ac2579182015b82811115612ac2578251825591602001919060010190612b2b565b5b80821115612ace5760008155600101612b47565b803573ffffffffffffffffffffffffffffffffffffffff811681146119ef57600080fd5b600060208284031215612b9157600080fd5b61062c82612b5b565b60005b83811015612bb5578181015183820152602001612b9d565b83811115610e2d5750506000910152565b6020815260008251806020840152612be5816040850160208701612b9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612c2a57600080fd5b612c3383612b5b565b946020939093013593505050565b600080600060608486031215612c5657600080fd5b612c5f84612b5b565b9250612c6d60208501612b5b565b9150604084013590509250925092565b600060208284031215612c8f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119ef57600080fd5b6000806101208385031215612ced57600080fd5b83601f840112612cfc57600080fd5b60405161010080820182811067ffffffffffffffff82111715612d2157612d21612c96565b60405284018186821115612d3457600080fd5b855b82811015612d5557612d4781612cc5565b825260209182019101612d36565b509196903595509350505050565b600060208284031215612d7557600080fd5b813567ffffffffffffffff811115612d8c57600080fd5b820160a0818503121561062c57600080fd5b60008060408385031215612db157600080fd5b612dba83612b5b565b9150612dc860208401612b5b565b90509250929050565b600080600060408486031215612de657600080fd5b833567ffffffffffffffff80821115612dfe57600080fd5b818601915086601f830112612e1257600080fd5b813581811115612e2157600080fd5b8760208260051b8501011115612e3657600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612e6057607f821691505b60208210811415612e9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612ee257612ee2612ea0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f4857612f48612ea0565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112612f8357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612fc257600080fd5b83018035915067ffffffffffffffff821115612fdd57600080fd5b602001915036819003821315612ff257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261302e57600080fd5b830160208101925035905067ffffffffffffffff81111561304e57600080fd5b803603831315612ff257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806130d385612b5b565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261310e57600080fd5b60a0606085015284016131218180612ff9565b608060e08701526131376101608701828461305d565b9150506131476020830183612ff9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261317d83828461305d565b925050508261318e60408401612b5b565b1661012086015260608201356101408601526131ac60408701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526131e060808701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561321a57600080fd5b5051919050565b60008282101561323357613233612ea0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329f5761329f612ea0565b500290565b6000826132da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156132f157600080fd5b8151801515811461062c57600080fd5b60008251612f83818460208701612b9a56fea264697066735822122095aa26e24ccda5b9a1505f8e955b7175c1beb492eee981665d67f2240692253564736f6c634300080a0033"; type RedeemableERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts index f6c62ad..07298e1 100644 --- a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts +++ b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts @@ -389,7 +389,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea2646970667358221220d8968a69930ba2a7d576b7133a47edb206e252bc4533b8973ee5968b734f0b6d64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea264697066735822122063e83af5ca4e1ecabaffb0362a319951fe91605b6ad8a659fc1ff08837596ac264736f6c634300080a0033"; type RedeemableERC20ReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20__factory.ts b/src/typechain/factories/RedeemableERC20__factory.ts index 62a6a7f..d5eda91 100644 --- a/src/typechain/factories/RedeemableERC20__factory.ts +++ b/src/typechain/factories/RedeemableERC20__factory.ts @@ -34,31 +34,6 @@ const _abi = [ name: "Approval", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "tokenSender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "ERC20PullInitialize", - type: "event", - }, { anonymous: false, inputs: [ @@ -127,6 +102,19 @@ const _abi = [ name: "Initialize", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -682,19 +670,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "uint256", - name: "amount_", - type: "uint256", - }, - ], - name: "pullERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -808,7 +783,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061355a806100206000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063b7a3c82811610097578063e384346311610071578063e384346314610458578063e7ae91fe14610493578063f1ebd5dd146104a6578063f677de96146104af57600080fd5b8063b7a3c828146103ec578063b8ffd02c146103ff578063dd62ed3e1461041257600080fd5b806395d89b41116100d357806395d89b41146103965780639923c94b1461039e578063a457c2d7146103c6578063a9059cbb146103d957600080fd5b806379cc67901461035d5780638246df01146103705780638b24259b1461038357600080fd5b8063313ce56711610166578063395093511161014057806339509351146102ee57806342966c6814610301578063634991af1461031457806370a082311461032757600080fd5b8063313ce567146102915780633833be62146102a0578063392243e1146102b357600080fd5b8063095ea7b3116101a2578063095ea7b31461020e57806316f4d0221461023157806318160ddd1461027657806323b872dd1461027e57600080fd5b8063038ef03e146101c9578063055ad42e146101de57806306fdde03146101f9575b600080fd5b6101dc6101d7366004612d90565b6104c2565b005b6101e6610514565b6040519081526020015b60405180910390f35b61020161057f565b6040516101f09190612dd7565b61022161021c366004612e28565b610611565b60405190151581526020016101f0565b609c546102519073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f0565b6036546101e6565b61022161028c366004612e52565b61062b565b604051601281526020016101f0565b6101dc6102ae366004612d90565b610651565b6102216102c1366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600116151590565b6102216102fc366004612e28565b61073b565b6101dc61030f366004612e8e565b610787565b6101e6610322366004612eea565b610794565b6101e6610335366004612d90565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101dc61036b366004612e28565b6107e8565b6101dc61037e366004612f74565b610801565b6101dc610391366004612d90565b610db4565b610201610f3c565b6103b16103ac366004612e8e565b610f4b565b60405163ffffffff90911681526020016101f0565b6102216103d4366004612e28565b610f7b565b6102216103e7366004612e28565b611057565b6101dc6103fa366004612e8e565b611065565b6101e661040d366004612eea565b611090565b6101e6610420366004612faf565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610221610466366004612d90565b73ffffffffffffffffffffffffffffffffffffffff166000908152609b6020526040902054600216151590565b6101dc6104a1366004612d90565b6110cf565b6101e6609d5481565b6101dc6104bd366004612fe2565b6111b4565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161057a91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610533579050505050505043610794565b905090565b60606037805461058e9061305d565b80601f01602080910402602001604051908101604052809291908181526020018280546105ba9061305d565b80156106075780601f106105dc57610100808354040283529160200191610607565b820191906000526020600020905b8154815290600101906020018083116105ea57829003601f168201915b5050505050905090565b60003361061f818585611264565b60019150505b92915050565b600033610639858285611418565b6106448585856114e9565b60019150505b9392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff1633146106d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b6479101610509565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061061f90829086906107829087906130e0565b611264565b61079133826117a7565b50565b6000805b60088110156107de578381600881106107b3576107b36130f8565b602002015163ffffffff168310156107cc579050610625565b806107d681613127565b915050610798565b5060089392505050565b6107f3823383611418565b6107fd82826117a7565b5050565b600054610100900460ff1661081c5760005460ff1615610820565b303b155b6108ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ce565b600054610100900460ff161580156108eb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6108f361199d565b6109036060830160408401612d90565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109ec6109586020840184613160565b610962908061319e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109a4925050506020850185613160565b6109b290602081019061319e565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a4792505050565b610a626040518060400160405280848060200190610a0a9190613160565b610a1b906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff168152602090810190610a4590860186612d90565b73ffffffffffffffffffffffffffffffffffffffff169052611ae8565b670de0b6b3a7640000610a786020840184613160565b606001351015610ae4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ce565b6060820135609d55610afc60a0830160808401612d90565b609e80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556000808052609b602081815260037f10afac9233b4ccc54d6404ffc1cf3b47515a2b8edbf675d15eddce05a027dcbd5560019290610b8190860186613160565b610b92906060810190604001612d90565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609e541615610bf357609e5473ffffffffffffffffffffffffffffffffffffffff166000908152609b60205260409020600190555b610c006020830183613160565b610c11906060810190604001612d90565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c8d610c666020840184613160565b610c77906060810190604001612d90565b610c846020850185613160565b60600135611ca6565b610c9d6101d76020840184612d90565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610cce9291906132b7565b60405180910390a1610ce66060830160408401612d90565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d769190613419565b50610d82600143611dd2565b80156107fd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b600180610dbf610514565b14610e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b609a5473ffffffffffffffffffffffffffffffffffffffff163314610ea7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b610eb2600243611dd2565b609e5473ffffffffffffffffffffffffffffffffffffffff166000610ef98473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f365773ffffffffffffffffffffffffffffffffffffffff8216610f2b57610f2684826117a7565b610f36565b610f368483836114e9565b50505050565b60606038805461058e9061305d565b60018160088110610f5b57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561103f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ce565b61104c8286868403611264565b506001949350505050565b60003361061f8185856114e9565b6098546099546107919173ffffffffffffffffffffffffffffffffffffffff9182169116308461207b565b60008082116110a05760006110c2565b826110ac600184613432565b600881106110bc576110bc6130f8565b60200201515b63ffffffff169392505050565b609a5473ffffffffffffffffffffffffffffffffffffffff163314611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff81166000818152609b6020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade99101610509565b6002806111bf610514565b14611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ce565b610f36848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250612157915050565b73ffffffffffffffffffffffffffffffffffffffff8316611306576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff82166113a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f3657818110156114dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ce565b610f368484848403611264565b73ffffffffffffffffffffffffffffffffffffffff831661158c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff821661162f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b61163a8383836124fc565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156116f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906117349084906130e0565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161179a91815260200190565b60405180910390a3610f36565b73ffffffffffffffffffffffffffffffffffffffff821661184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b611856826000836124fc565b73ffffffffffffffffffffffffffffffffffffffff82166000908152603460205260409020548181101561190c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611948908490613432565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161140b565b505050565b6001805463ffffffff16106119b4576119b4613449565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a056001826008612c42565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d390606001610509565b600054610100900460ff16611ade576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b6107fd82826127f2565b805173ffffffffffffffffffffffffffffffffffffffff163b611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f454f415f53454e4445520000000000000000000000000000000000000000000060448201526064016106ce565b602081015173ffffffffffffffffffffffffffffffffffffffff16611be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5a45524f5f544f4b454e0000000000000000000000000000000000000000000060448201526064016106ce565b60995473ffffffffffffffffffffffffffffffffffffffff1615611c0e57611c0e613449565b80516098805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821681179092556020808501516099805491909516921682179093556040805133815293840192909252908201527fe67a5c2dcf68e8fac05314f53ecd2ff0b403ed683c4bfdad15eaec7a8a63f55590606001610509565b73ffffffffffffffffffffffffffffffffffffffff8216611d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ce565b611d2f600083836124fc565b8060366000828254611d4191906130e0565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611d7b9084906130e0565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611e3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106ce565b63ffffffff8110611ea9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106ce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611ed5610514565b14611f3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ce565b60018160088110611f4f57611f4f6130f8565b60088104919091015460079091166004026101000a900463ffffffff90811614611fd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106ce565b8160018260088110611fe957611fe96130f8565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161206e9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f369085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128b0565b815160008167ffffffffffffffff81111561217457612174612ea7565b60405190808252806020026020018201604052801561219d578160200160208202803683370190505b5090506000821161220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ce565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227b9190613419565b90506000805b8481101561246e57828688838151811061229d5761229d6130f8565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612313573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123379190613419565b6123419190613478565b61234b91906134b5565b9150600082116123b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ce565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106123eb576123eb6130f8565b60200260200101518885604051612436949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a181848281518110612451576124516130f8565b60209081029190910101528061246681613127565b915050612281565b5061247933866117a7565b60005b848110156124f3576124e13385838151811061249a5761249a6130f8565b60200260200101518984815181106124b4576124b46130f8565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166129bc9092919063ffffffff16565b806124eb81613127565b91505061247c565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561257c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ce565b6000811180156125e6575073ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546002161515806125e4575073ffffffffffffffffffffffffffffffffffffffff82166000908152609b602052604090205460011615155b155b156119985760016125f5610514565b1461265c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ce565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609b60205260409020546001166126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ce565b609d54609c546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261278a92169063e053ea3190602401602060405180830381865afa158015612760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127849190613419565b43612a12565b1015611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ce565b600054610100900460ff16612889576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ce565b815161289c906037906020850190612cde565b508051611998906038906020840190612cde565b6000612912826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612a429092919063ffffffff16565b805190915015611998578080602001905181019061293091906134f0565b611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ce565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526119989084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016120d5565b6000805b60088110156107de57828160200285901c63ffffffff161115612a3a579050610625565b600101612a16565b6060612a518484600085612a59565b949350505050565b606082471015612aeb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ce565b73ffffffffffffffffffffffffffffffffffffffff85163b612b69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ce565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b929190613512565b60006040518083038185875af1925050503d8060008114612bcf576040519150601f19603f3d011682016040523d82523d6000602084013e612bd4565b606091505b5091509150612be4828286612bef565b979650505050505050565b60608315612bfe57508161064a565b825115612c0e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ce9190612dd7565b600183019183908215612cce5791602002820160005b83821115612c9c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c58565b8015612ccc5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c9c565b505b50612cda929150612d52565b5090565b828054612cea9061305d565b90600052602060002090601f016020900481019282612d0c5760008555612cce565b82601f10612d2557805160ff1916838001178555612cce565b82800160010185558215612cce579182015b82811115612cce578251825591602001919060010190612d37565b5b80821115612cda5760008155600101612d53565b803573ffffffffffffffffffffffffffffffffffffffff81168114612d8b57600080fd5b919050565b600060208284031215612da257600080fd5b61064a82612d67565b60005b83811015612dc6578181015183820152602001612dae565b83811115610f365750506000910152565b6020815260008251806020840152612df6816040850160208701612dab565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612e3b57600080fd5b612e4483612d67565b946020939093013593505050565b600080600060608486031215612e6757600080fd5b612e7084612d67565b9250612e7e60208501612d67565b9150604084013590509250925092565b600060208284031215612ea057600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612d8b57600080fd5b6000806101208385031215612efe57600080fd5b83601f840112612f0d57600080fd5b60405161010080820182811067ffffffffffffffff82111715612f3257612f32612ea7565b60405284018186821115612f4557600080fd5b855b82811015612f6657612f5881612ed6565b825260209182019101612f47565b509196903595509350505050565b600060208284031215612f8657600080fd5b813567ffffffffffffffff811115612f9d57600080fd5b820160a0818503121561064a57600080fd5b60008060408385031215612fc257600080fd5b612fcb83612d67565b9150612fd960208401612d67565b90509250929050565b600080600060408486031215612ff757600080fd5b833567ffffffffffffffff8082111561300f57600080fd5b818601915086601f83011261302357600080fd5b81358181111561303257600080fd5b8760208260051b850101111561304757600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061307157607f821691505b602082108114156130ab577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156130f3576130f36130b1565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613159576131596130b1565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261319457600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131d357600080fd5b83018035915067ffffffffffffffff8211156131ee57600080fd5b60200191503681900382131561320357600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261323f57600080fd5b830160208101925035905067ffffffffffffffff81111561325f57600080fd5b80360383131561320357600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132e485612d67565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261331f57600080fd5b60a060608501528401613332818061320a565b608060e08701526133486101608701828461326e565b915050613358602083018361320a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261338e83828461326e565b925050508261339f60408401612d67565b1661012086015260608201356101408601526133bd60408701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133f160808701612d67565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561342b57600080fd5b5051919050565b600082821015613444576134446130b1565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134b0576134b06130b1565b500290565b6000826134eb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561350257600080fd5b8151801515811461064a57600080fd5b60008251613194818460208701612dab56fea26469706673582212200e98bd243707999fddbe3a723adfa0bc42f752b4d0730f086841614ced18857c64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50613349806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a9059cbb11610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a9059cbb146103ce578063b8ffd02c146103e1578063dd62ed3e146103f457600080fd5b80638b24259b116100d35780638b24259b1461037857806395d89b411461038b5780639923c94b14610393578063a457c2d7146103bb57600080fd5b806370a082311461031c57806379cc6790146103525780638246df011461036557600080fd5b806323b872dd11610166578063392243e111610140578063392243e1146102a857806339509351146102e357806342966c68146102f6578063634991af1461030957600080fd5b806323b872dd14610273578063313ce567146102865780633833be621461029557600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612b7f565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612bc6565b610216610211366004612c17565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b610216610281366004612c41565b61060d565b604051601281526020016101e5565b6101d16102a3366004612b7f565b610633565b6102166102b6366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b6102166102f1366004612c17565b61071d565b6101d1610304366004612c7d565b610769565b6101db610317366004612cd9565b610776565b6101db61032a366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610360366004612c17565b6107ca565b6101d1610373366004612d63565b6107e3565b6101d1610386366004612b7f565b610cab565b6101f6610e33565b6103a66103a1366004612c7d565b610e42565b60405163ffffffff90911681526020016101e5565b6102166103c9366004612c17565b610e72565b6102166103dc366004612c17565b610f4e565b6101db6103ef366004612cd9565b610f5c565b6101db610402366004612d9e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612b7f565b610f9b565b6101db609b5481565b6101d161049f366004612dd1565b611080565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610515579050505050505043610776565b905090565b60606037805461057090612e4c565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612e4c565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611130565b60019150505b92915050565b60003361061b8582856112e4565b6106268585856113b5565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906106019082908690610764908790612ecf565b611130565b6107733382611673565b50565b6000805b60088110156107c05783816008811061079557610795612ee7565b602002015163ffffffff168310156107ae579050610607565b806107b881612f16565b91505061077a565b5060089392505050565b6107d58233836112e4565b6107df8282611673565b5050565b60006107ef6001611869565b9050801561082457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61082c6119f4565b61083c6060830160408401612b7f565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109256108916020840184612f4f565b61089b9080612f8d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108dd925050506020850185612f4f565b6108eb906020810190612f8d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a9e92505050565b670de0b6b3a764000061093b6020840184612f4f565b6060013510156109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106b0565b6060820135609b556109bf60a0830160808401612b7f565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610a4490860186612f4f565b610a55906060810190604001612b7f565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610ab657609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610ac36020830183612f4f565b610ad4906060810190604001612b7f565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b50610b296020840184612f4f565b610b3a906060810190604001612b7f565b610b476020850185612f4f565b60600135611b3f565b610b606101cc6020840184612b7f565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610b919291906130a6565b60405180910390a1610ba96060830160408401612b7f565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613208565b50610c45600143611c6b565b80156107df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610cb66104f6565b14610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b60985473ffffffffffffffffffffffffffffffffffffffff163314610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b610da9600243611c6b565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610df08473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e2d5773ffffffffffffffffffffffffffffffffffffffff8216610e2257610e1d8482611673565b610e2d565b610e2d8483836113b5565b50505050565b60606038805461057090612e4c565b60018160088110610e5257600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106b0565b610f438286868403611130565b506001949350505050565b6000336106018185856113b5565b6000808211610f6c576000610f8e565b82610f78600184613221565b60088110610f8857610f88612ee7565b60200201515b63ffffffff169392505050565b60985473ffffffffffffffffffffffffffffffffffffffff16331461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061108b6104f6565b146110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b610e2d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f14915050565b73ffffffffffffffffffffffffffffffffffffffff83166111d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff8216611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e2d57818110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106b0565b610e2d8484848403611130565b73ffffffffffffffffffffffffffffffffffffffff8316611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff82166114fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b6115068383836122b9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260346020526040808220858503905591851681529081208054849290611600908490612ecf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161166691815260200190565b60405180910390a3610e2d565b73ffffffffffffffffffffffffffffffffffffffff8216611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b611722826000836122b9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611814908490613221565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112d7565b505050565b60008054610100900460ff1615611920578160ff16600114801561188c5750303b155b611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b506000919050565b60005460ff8084169116106119b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff1610611a0b57611a0b613238565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a5c6001826008612a36565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b600054610100900460ff16611b35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b6107df82826125af565b73ffffffffffffffffffffffffffffffffffffffff8216611bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106b0565b611bc8600083836122b9565b8060366000828254611bda9190612ecf565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c14908490612ecf565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106b0565b63ffffffff8110611d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d6e6104f6565b14611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106b0565b60018160088110611de857611de8612ee7565b60088104919091015460079091166004026101000a900463ffffffff90811614611e6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106b0565b8160018260088110611e8257611e82612ee7565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f079392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3157611f31612c96565b604051908082528060200260200182016040528015611f5a578160200160208202803683370190505b50905060008211611fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106b0565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613208565b90506000805b8481101561222b57828688838151811061205a5761205a612ee7565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f49190613208565b6120fe9190613267565b61210891906132a4565b915060008211612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106b0565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121a8576121a8612ee7565b602002602001015188856040516121f3949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061220e5761220e612ee7565b60209081029190910101528061222381612f16565b91505061203e565b506122363386611673565b60005b848110156122b05761229e3385838151811061225757612257612ee7565b602002602001015189848151811061227157612271612ee7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661266d9092919063ffffffff16565b806122a881612f16565b915050612239565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106b0565b6000811180156123a3575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123a1575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118645760016123b26104f6565b14612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106b0565b609b54609a546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261254792169063e053ea3190602401602060405180830381865afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190613208565b436126fa565b1015611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106b0565b600054610100900460ff16612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b8151612659906037906020850190612ad2565b508051611864906038906020840190612ad2565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261186490849061272a565b6000805b60088110156107c057828160200285901c63ffffffff161115612722579050610607565b6001016126fe565b600061278c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166128369092919063ffffffff16565b80519091501561186457808060200190518101906127aa91906132df565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106b0565b6060612845848460008561284d565b949350505050565b6060824710156128df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff85163b61295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129869190613301565b60006040518083038185875af1925050503d80600081146129c3576040519150601f19603f3d011682016040523d82523d6000602084013e6129c8565b606091505b50915091506129d88282866129e3565b979650505050505050565b606083156129f257508161062c565b825115612a025782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190612bc6565b600183019183908215612ac25791602002820160005b83821115612a9057835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612a4c565b8015612ac05782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612a90565b505b50612ace929150612b46565b5090565b828054612ade90612e4c565b90600052602060002090601f016020900481019282612b005760008555612ac2565b82601f10612b1957805160ff1916838001178555612ac2565b82800160010185558215612ac2579182015b82811115612ac2578251825591602001919060010190612b2b565b5b80821115612ace5760008155600101612b47565b803573ffffffffffffffffffffffffffffffffffffffff811681146119ef57600080fd5b600060208284031215612b9157600080fd5b61062c82612b5b565b60005b83811015612bb5578181015183820152602001612b9d565b83811115610e2d5750506000910152565b6020815260008251806020840152612be5816040850160208701612b9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612c2a57600080fd5b612c3383612b5b565b946020939093013593505050565b600080600060608486031215612c5657600080fd5b612c5f84612b5b565b9250612c6d60208501612b5b565b9150604084013590509250925092565b600060208284031215612c8f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119ef57600080fd5b6000806101208385031215612ced57600080fd5b83601f840112612cfc57600080fd5b60405161010080820182811067ffffffffffffffff82111715612d2157612d21612c96565b60405284018186821115612d3457600080fd5b855b82811015612d5557612d4781612cc5565b825260209182019101612d36565b509196903595509350505050565b600060208284031215612d7557600080fd5b813567ffffffffffffffff811115612d8c57600080fd5b820160a0818503121561062c57600080fd5b60008060408385031215612db157600080fd5b612dba83612b5b565b9150612dc860208401612b5b565b90509250929050565b600080600060408486031215612de657600080fd5b833567ffffffffffffffff80821115612dfe57600080fd5b818601915086601f830112612e1257600080fd5b813581811115612e2157600080fd5b8760208260051b8501011115612e3657600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612e6057607f821691505b60208210811415612e9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612ee257612ee2612ea0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f4857612f48612ea0565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112612f8357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612fc257600080fd5b83018035915067ffffffffffffffff821115612fdd57600080fd5b602001915036819003821315612ff257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261302e57600080fd5b830160208101925035905067ffffffffffffffff81111561304e57600080fd5b803603831315612ff257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806130d385612b5b565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261310e57600080fd5b60a0606085015284016131218180612ff9565b608060e08701526131376101608701828461305d565b9150506131476020830183612ff9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261317d83828461305d565b925050508261318e60408401612b5b565b1661012086015260608201356101408601526131ac60408701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526131e060808701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561321a57600080fd5b5051919050565b60008282101561323357613233612ea0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329f5761329f612ea0565b500290565b6000826132da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156132f157600080fd5b8151801515811461062c57600080fd5b60008251612f83818460208701612b9a56fea264697066735822122095aa26e24ccda5b9a1505f8e955b7175c1beb492eee981665d67f2240692253564736f6c634300080a0033"; type RedeemableERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveNFT__factory.ts b/src/typechain/factories/ReserveNFT__factory.ts index 4290335..9c7aa35 100644 --- a/src/typechain/factories/ReserveNFT__factory.ts +++ b/src/typechain/factories/ReserveNFT__factory.ts @@ -420,7 +420,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060408051808201825260128152712727a710232aa723a4a12622902a27a5a2a760711b60208083019182528351808501909452600384526213919560ea1b90840152815191929162000067916000916200008c565b5080516200007d9060019060208401906200008c565b5050612710600855506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b611a73806200017f6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635bb9058b116100b2578063a22cb46511610081578063c87b56dd11610066578063c87b56dd146102e9578063d5abeb011461032f578063e985e9c51461033857600080fd5b8063a22cb465146102c3578063b88d4fde146102d657600080fd5b80635bb9058b146102385780636352211e1461029557806370a08231146102a857806395d89b41146102bb57600080fd5b806318160ddd1161010957806340c10f19116100ee57806340c10f19146101ef57806342842e0e1461020257806348422faa1461021557600080fd5b806318160ddd146101c557806323b872dd146101dc57600080fd5b806301ffc9a71461013b57806306fdde0314610163578063081812fc14610178578063095ea7b3146101b0575b600080fd5b61014e6101493660046115ef565b610381565b60405190151581526020015b60405180910390f35b61016b610466565b60405161015a919061167e565b61018b610186366004611691565b6104f8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101c36101be3660046116d3565b6105d7565b005b6101ce60075481565b60405190815260200161015a565b6101c36101ea3660046116fd565b610764565b6101c36101fd3660046116d3565b610805565b6101c36102103660046116fd565b6108bc565b61014e610223366004611739565b60066020526000908152604090205460ff1681565b6101c3610246366004611739565b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61018b6102a3366004611691565b6108d7565b6101ce6102b6366004611739565b610989565b61016b610a57565b6101c36102d1366004611754565b610a66565b6101c36102e43660046117bf565b610a75565b61016b6102f7366004611691565b5060408051808201909152600381527f5552490000000000000000000000000000000000000000000000000000000000602082015290565b6101ce60085481565b61014e6103463660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061041457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061046057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610475906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906118ec565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105e2826108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c957506106c98133610346565b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105a5565b61075f8383610b1d565b505050565b61076e3382610bbd565b6107fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b61075f838383610d2d565b60085481600754610816919061196f565b111561087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6178206c696d697420726561636865642e000000000000000000000000000060448201526064016105a5565b60005b8181101561075f576007805490600061089983611987565b91905055506108aa83600754610f9f565b6108b581600161196f565b9050610881565b61075f83838360405180602001604052806000815250610a75565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016105a5565b600073ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016105a5565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610475906118ec565b610a7133838361116d565b5050565b610a7f3383610bbd565b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b610b178484848461129b565b50505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610b77826108d7565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016105a5565b6000610c79836108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ce857508373ffffffffffffffffffffffffffffffffffffffff16610cd0846104f8565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d25575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d4d826108d7565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610e9d83838361133e565b610ea8600082610b1d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610ede9084906119c0565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f1990849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105a5565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105a5565b6110b46000838361133e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110ea90849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6112a6848484610d2d565b6112b2848484846113ce565b610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff161561075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906114459033908990889088906004016119d7565b6020604051808303816000875af192505050801561149e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149b91810190611a20565b60015b611568573d8080156114cc576040519150601f19603f3d011682016040523d82523d6000602084013e6114d1565b606091505b508051611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d25565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115ec57600080fd5b50565b60006020828403121561160157600080fd5b813561160c816115be565b9392505050565b6000815180845260005b818110156116395760208185018101518683018201520161161d565b8181111561164b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061160c6020830184611613565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b61160c826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561198257611982611940565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119b9576119b9611940565b5060010190565b6000828210156119d2576119d2611940565b500390565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611a166080830184611613565b9695505050505050565b600060208284031215611a3257600080fd5b815161160c816115be56fea2646970667358221220d18dd12224c5bc38a86b79657a1181502ce2bafcb6b3190037a498f6eefc511b64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060408051808201825260128152712727a710232aa723a4a12622902a27a5a2a760711b60208083019182528351808501909452600384526213919560ea1b90840152815191929162000067916000916200008c565b5080516200007d9060019060208401906200008c565b5050612710600855506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b611a73806200017f6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635bb9058b116100b2578063a22cb46511610081578063c87b56dd11610066578063c87b56dd146102e9578063d5abeb011461032f578063e985e9c51461033857600080fd5b8063a22cb465146102c3578063b88d4fde146102d657600080fd5b80635bb9058b146102385780636352211e1461029557806370a08231146102a857806395d89b41146102bb57600080fd5b806318160ddd1161010957806340c10f19116100ee57806340c10f19146101ef57806342842e0e1461020257806348422faa1461021557600080fd5b806318160ddd146101c557806323b872dd146101dc57600080fd5b806301ffc9a71461013b57806306fdde0314610163578063081812fc14610178578063095ea7b3146101b0575b600080fd5b61014e6101493660046115ef565b610381565b60405190151581526020015b60405180910390f35b61016b610466565b60405161015a919061167e565b61018b610186366004611691565b6104f8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101c36101be3660046116d3565b6105d7565b005b6101ce60075481565b60405190815260200161015a565b6101c36101ea3660046116fd565b610764565b6101c36101fd3660046116d3565b610805565b6101c36102103660046116fd565b6108bc565b61014e610223366004611739565b60066020526000908152604090205460ff1681565b6101c3610246366004611739565b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61018b6102a3366004611691565b6108d7565b6101ce6102b6366004611739565b610989565b61016b610a57565b6101c36102d1366004611754565b610a66565b6101c36102e43660046117bf565b610a75565b61016b6102f7366004611691565b5060408051808201909152600381527f5552490000000000000000000000000000000000000000000000000000000000602082015290565b6101ce60085481565b61014e6103463660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061041457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061046057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610475906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906118ec565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105e2826108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c957506106c98133610346565b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105a5565b61075f8383610b1d565b505050565b61076e3382610bbd565b6107fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b61075f838383610d2d565b60085481600754610816919061196f565b111561087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6178206c696d697420726561636865642e000000000000000000000000000060448201526064016105a5565b60005b8181101561075f576007805490600061089983611987565b91905055506108aa83600754610f9f565b6108b581600161196f565b9050610881565b61075f83838360405180602001604052806000815250610a75565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016105a5565b600073ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016105a5565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610475906118ec565b610a7133838361116d565b5050565b610a7f3383610bbd565b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b610b178484848461129b565b50505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610b77826108d7565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016105a5565b6000610c79836108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ce7575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610d2557508373ffffffffffffffffffffffffffffffffffffffff16610d0d846104f8565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d4d826108d7565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610e9d83838361133e565b610ea8600082610b1d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610ede9084906119c0565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f1990849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105a5565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105a5565b6110b46000838361133e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110ea90849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6112a6848484610d2d565b6112b2848484846113ce565b610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff161561075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906114459033908990889088906004016119d7565b6020604051808303816000875af192505050801561149e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149b91810190611a20565b60015b611568573d8080156114cc576040519150601f19603f3d011682016040523d82523d6000602084013e6114d1565b606091505b508051611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d25565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115ec57600080fd5b50565b60006020828403121561160157600080fd5b813561160c816115be565b9392505050565b6000815180845260005b818110156116395760208185018101518683018201520161161d565b8181111561164b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061160c6020830184611613565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b61160c826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561198257611982611940565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119b9576119b9611940565b5060010190565b6000828210156119d2576119d2611940565b500390565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611a166080830184611613565b9695505050505050565b600060208284031215611a3257600080fd5b815161160c816115be56fea264697066735822122035aadb4a5d34cd8a60bed7c39dbe2bfba0c9ceb0afa8f275f7234261806a4dba64736f6c634300080a0033"; type ReserveNFTConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveToken18__factory.ts b/src/typechain/factories/ReserveToken18__factory.ts new file mode 100644 index 0000000..952f061 --- /dev/null +++ b/src/typechain/factories/ReserveToken18__factory.ts @@ -0,0 +1,425 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + ReserveToken18, + ReserveToken18Interface, +} from "../ReserveToken18"; + +const _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: [], + name: "DECIMALS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "TOTAL_SUPPLY", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account_", + type: "address", + }, + ], + name: "addFreezable", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + 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: "account", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "burnFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "pure", + 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: "", + type: "address", + }, + ], + name: "freezables", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + 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: [], + 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", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360126009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165601281565b60405160128152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860126009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea264697066735822122050b7a320de6eb03881c8230885982eacd63ff999da0cdfb2f3dd1c68081c843864736f6c634300080a0033"; + +type ReserveToken18ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ReserveToken18ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ReserveToken18__factory extends ContractFactory { + constructor(...args: ReserveToken18ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): ReserveToken18 { + return super.attach(address) as ReserveToken18; + } + connect(signer: Signer): ReserveToken18__factory { + return super.connect(signer) as ReserveToken18__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ReserveToken18Interface { + return new utils.Interface(_abi) as ReserveToken18Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ReserveToken18 { + return new Contract(address, _abi, signerOrProvider) as ReserveToken18; + } +} diff --git a/src/typechain/factories/ReserveTokenERC1155__factory.ts b/src/typechain/factories/ReserveTokenERC1155__factory.ts index 9f4aa3e..caa728b 100644 --- a/src/typechain/factories/ReserveTokenERC1155__factory.ts +++ b/src/typechain/factories/ReserveTokenERC1155__factory.ts @@ -421,7 +421,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b9033906200004960066009620004a1565b6200005690600a620005bb565b6040805160208101909152600081526200008a565b620007e2565b805162000086906002906020840190620003e5565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b3362000116816000876200010488620001aa565b6200010f88620001aa565b5050505050565b6000848152602081815260408083206001600160a01b03891684529091528120805485929062000148908490620004a1565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46200010f8160008787878762000200565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e757620001e7620005d0565b602090810291909101015292915050565b505050505050565b6200021f846001600160a01b0316620003d660201b620009761760201c565b15620001f85760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025b908990899088908890889060040162000636565b6020604051808303816000875af192505050801562000299575060408051601f3d908101601f1916820190925262000296918101906200067d565b60015b6200035a57620002a8620006a9565b806308c379a01415620002e95750620002c062000701565b80620002cd5750620002eb565b8060405162461bcd60e51b8152600401620000e7919062000790565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620003cd5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b50505050505050565b6001600160a01b03163b151590565b828054620003f390620007a5565b90600052602060002090601f01602090048101928262000417576000855562000462565b82601f106200043257805160ff191683800117855562000462565b8280016001018555821562000462579182015b828111156200046257825182559160200191906001019062000445565b506200047092915062000474565b5090565b5b8082111562000470576000815560010162000475565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b757620004b76200048b565b500190565b600181815b80851115620004fd578160001904821115620004e157620004e16200048b565b80851615620004ef57918102915b93841c9390800290620004c1565b509250929050565b6000826200051657506001620005b5565b816200052557506000620005b5565b81600181146200053e5760028114620005495762000569565b6001915050620005b5565b60ff8411156200055d576200055d6200048b565b50506001821b620005b5565b5060208310610133831016604e8410600b84101617156200058e575081810a620005b5565b6200059a8383620004bc565b8060001904821115620005b157620005b16200048b565b0290505b92915050565b6000620005c9838362000505565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060e57602081850181015186830182015201620005f0565b8181111562000621576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200067290830184620005e6565b979650505050505050565b6000602082840312156200069057600080fd5b81516001600160e01b031981168114620005c957600080fd5b600060033d1115620006c35760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006fa57634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007105790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200074057505050505090565b8285019150815181811115620007595750505050505090565b843d8701016020828501011115620007745750505050505090565b6200078560208286010187620006c6565b509095945050505050565b602081526000620005c96020830184620005e6565b600181811c90821680620007ba57607f821691505b60208210811415620007dc57634e487b7160e01b600052602260045260246000fd5b50919050565b6125a980620007f26000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611b85565b610242565b6040519081526020015b60405180910390f35b610127610122366004611be0565b610322565b604051901515815260200161010b565b61014a610145366004611c04565b610405565b60405161010b9190611c88565b610101600681565b61017261016d366004611e3c565b610499565b005b610187610182366004611ee6565b610562565b60405161010b9190611fec565b6101726101a2366004611fff565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce366004612073565b6107e5565b6101276101e13660046120af565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a3660046120e2565b6107f4565b61017261023d366004612147565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b6060600280546104149061217a565b80601f01602080910402602001604051908101604052809291908181526020018280546104409061217a565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f766564000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611c9b565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121ce565b6020026020010151858381518110610678576106786121ce565b6020026020010151610242565b828281518110610697576106976121ce565b60209081029190910101526106ab8161222c565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f8361222c565b91905055506107c933600354600660096107a99190612265565b6107b490600a61239d565b60405180602001604052806000815250610fe5565b565b6107d760066009612265565b6107e290600a61239d565b81565b6107f033838361114c565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112a0565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a8383836114d1565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121ce565b602002602001015190506000858381518110610b0557610b056121ce565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c908490612265565b9250508190555050505080610c309061222c565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123a9565b60405180910390a4610cc48187878787876116d9565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121ce565b602002602001015190506000848381518110610e4f57610e4f6121ce565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f578161222c565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123a9565b60405180910390a450505050565b73ffffffffffffffffffffffffffffffffffffffff8416611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b336110a28160008761109988611964565b61055b88611964565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff89168452909152812080548592906110df908490612265565b9091555050604080518581526020810185905273ffffffffffffffffffffffffffffffffffffffff80881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461055b816000878787876119af565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611208576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3361135381878761109988611964565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8a16845290915290205483811015611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008581526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b811685529252808320878503905590881682528120805486929061145b908490612265565b9091555050604080518681526020810186905273ffffffffffffffffffffffffffffffffffffffff808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114c88288888888886119af565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316611574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b336115a48185600061158587611964565b61158e87611964565b5050604080516020810190915260009052505050565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8816845290915290205482811015611661576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008481526020818152604080832073ffffffffffffffffffffffffffffffffffffffff898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061175090899089908890889088906004016123d7565b6020604051808303816000875af19250505080156117a9575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117a691810190612442565b60015b611893576117b561245f565b806308c379a0141561180957506117ca61247b565b806117d5575061180b565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611c88565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c8100000000000000000000000000000000000000000000000000000000146114c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061199e5761199e6121ce565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a269089908990889088908890600401612523565b6020604051808303816000875af1925050508015611a7f575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611a7c91810190612442565b60015b611a8b576117b561245f565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e6100000000000000000000000000000000000000000000000000000000146114c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611b8057600080fd5b919050565b60008060408385031215611b9857600080fd5b611ba183611b5c565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611bdd57600080fd5b50565b600060208284031215611bf257600080fd5b8135611bfd81611baf565b9392505050565b600060208284031215611c1657600080fd5b5035919050565b6000815180845260005b81811015611c4357602081850181015186830182015201611c27565b81811115611c55576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611bfd6020830184611c1d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d0e57611d0e611c9b565b6040525050565b600067ffffffffffffffff821115611d2f57611d2f611c9b565b5060051b60200190565b600082601f830112611d4a57600080fd5b81356020611d5782611d15565b604051611d648282611cca565b83815260059390931b8501820192828101915086841115611d8457600080fd5b8286015b84811015611d9f5780358352918301918301611d88565b509695505050505050565b600082601f830112611dbb57600080fd5b813567ffffffffffffffff811115611dd557611dd5611c9b565b604051611e0a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cca565b818152846020838601011115611e1f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e5457600080fd5b611e5d86611b5c565b9450611e6b60208701611b5c565b9350604086013567ffffffffffffffff80821115611e8857600080fd5b611e9489838a01611d39565b94506060880135915080821115611eaa57600080fd5b611eb689838a01611d39565b93506080880135915080821115611ecc57600080fd5b50611ed988828901611daa565b9150509295509295909350565b60008060408385031215611ef957600080fd5b823567ffffffffffffffff80821115611f1157600080fd5b818501915085601f830112611f2557600080fd5b81356020611f3282611d15565b604051611f3f8282611cca565b83815260059390931b8501820192828101915089841115611f5f57600080fd5b948201945b83861015611f8457611f7586611b5c565b82529482019490820190611f64565b96505086013592505080821115611f9a57600080fd5b50611fa785828601611d39565b9150509250929050565b600081518084526020808501945080840160005b83811015611fe157815187529582019590820190600101611fc5565b509495945050505050565b602081526000611bfd6020830184611fb1565b60008060006060848603121561201457600080fd5b61201d84611b5c565b9250602084013567ffffffffffffffff8082111561203a57600080fd5b61204687838801611d39565b9350604086013591508082111561205c57600080fd5b5061206986828701611d39565b9150509250925092565b6000806040838503121561208657600080fd5b61208f83611b5c565b9150602083013580151581146120a457600080fd5b809150509250929050565b600080604083850312156120c257600080fd5b6120cb83611b5c565b91506120d960208401611b5c565b90509250929050565b600080600080600060a086880312156120fa57600080fd5b61210386611b5c565b945061211160208701611b5c565b93506040860135925060608601359150608086013567ffffffffffffffff81111561213b57600080fd5b611ed988828901611daa565b60008060006060848603121561215c57600080fd5b61216584611b5c565b95602085013595506040909401359392505050565b600181811c9082168061218e57607f821691505b602082108114156121c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561225e5761225e6121fd565b5060010190565b60008219821115612278576122786121fd565b500190565b600181815b808511156122d657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122bc576122bc6121fd565b808516156122c957918102915b93841c9390800290612282565b509250929050565b6000826122ed5750600161031c565b816122fa5750600061031c565b8160018114612310576002811461231a57612336565b600191505061031c565b60ff84111561232b5761232b6121fd565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612359575081810a61031c565b612363838361227d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612395576123956121fd565b029392505050565b6000611bfd83836122de565b6040815260006123bc6040830185611fb1565b82810360208401526123ce8185611fb1565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261241060a0830186611fb1565b82810360608401526124228186611fb1565b905082810360808401526124368185611c1d565b98975050505050505050565b60006020828403121561245457600080fd5b8151611bfd81611baf565b600060033d11156124785760046000803e5060005160e01c5b90565b600060443d10156124895790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124d757505050505090565b82850191508151818111156124ef5750505050505090565b843d87010160208285010111156125095750505050505090565b61251860208286010187611cca565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261256860a0830184611c1d565b97965050505050505056fea26469706673582212200f405c2e8ebaee4d9d4f638138a9039998b1a0913d669b0811f8637e85d18cbc64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b90339062000049600660096200049a565b6200005690600a620005b4565b6040805160208101909152600081526200008a565b620007db565b805162000086906002906020840190620003de565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b336000620000fe85620001ac565b905060006200010d85620001ac565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290620001419084906200049a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4620001a38360008989898962000202565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e957620001e9620005c9565b602090810291909101015292915050565b505050505050565b62000221846001600160a01b0316620003cf60201b620009761760201c565b15620001fa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025d90899089908890889088906004016200062f565b6020604051808303816000875af19250505080156200029b575060408051601f3d908101601f19168201909252620002989181019062000676565b60015b6200035c57620002aa620006a2565b806308c379a01415620002eb5750620002c2620006fa565b80620002cf5750620002ed565b8060405162461bcd60e51b8152600401620000e7919062000789565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620001a35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b6001600160a01b03163b151590565b828054620003ec906200079e565b90600052602060002090601f0160209004810192826200041057600085556200045b565b82601f106200042b57805160ff19168380011785556200045b565b828001600101855582156200045b579182015b828111156200045b5782518255916020019190600101906200043e565b50620004699291506200046d565b5090565b5b808211156200046957600081556001016200046e565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b057620004b062000484565b500190565b600181815b80851115620004f6578160001904821115620004da57620004da62000484565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff84111562000556576200055662000484565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa62000484565b0290505b92915050565b6000620005c28383620004fe565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060757602081850181015186830182015201620005e9565b818111156200061a576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200066b90830184620005df565b979650505050505050565b6000602082840312156200068957600080fd5b81516001600160e01b031981168114620005c257600080fd5b600060033d1115620006bc5760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006f357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007095790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200073957505050505090565b8285019150815181811115620007525750505050505090565b843d87010160208285010111156200076d5750505050505090565b6200077e60208286010187620006bf565b509095945050505050565b602081526000620005c26020830184620005df565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6125d180620007eb6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611bad565b610242565b6040519081526020015b60405180910390f35b610127610122366004611c08565b610322565b604051901515815260200161010b565b61014a610145366004611c2c565b610405565b60405161010b9190611cb0565b610101600681565b61017261016d366004611e64565b610499565b005b610187610182366004611f0e565b610562565b60405161010b9190612014565b6101726101a2366004612027565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce36600461209b565b6107e5565b6101276101e13660046120d7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a36600461210a565b6107f4565b61017261023d36600461216f565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b606060028054610414906121a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610440906121a2565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f766564000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611cc3565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121f6565b6020026020010151858381518110610678576106786121f6565b6020026020010151610242565b828281518110610697576106976121f6565b60209081029190910101526106ab81612254565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f83612254565b91905055506107c933600354600660096107a9919061228d565b6107b490600a6123c5565b60405180602001604052806000815250610ff4565b565b6107d76006600961228d565b6107e290600a6123c5565b81565b6107f0338383611165565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112b9565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a8383836114f7565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121f6565b602002602001015190506000858381518110610b0557610b056121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c90849061228d565b9250508190555050505080610c3090612254565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123d1565b60405180910390a4610cc4818787878787611701565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121f6565b602002602001015190506000848381518110610e4f57610e4f6121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f5781612254565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123d1565b60405180910390a460408051602081019091526000905250505050565b73ffffffffffffffffffffffffffffffffffffffff8416611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006110a38561198c565b905060006110b08561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152812080548792906110ef90849061228d565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461115c836000898989896119d7565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff841661135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006113688561198c565b905060006113758561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a1682528120805488929061147f90849061228d565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114ec848a8a8a8a8a6119d7565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006115a68461198c565b905060006115b38461198c565b604080516020808201835260009182905288825281815282822073ffffffffffffffffffffffffffffffffffffffff8b168352905220549091508481101561167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261115c565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061177890899089908890889088906004016123ff565b6020604051808303816000875af19250505080156117d1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ce9181019061246a565b60015b6118bb576117dd612487565b806308c379a0141561183157506117f26124a3565b806117fd5750611833565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611cb0565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119c6576119c66121f6565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a4e908990899088908890889060040161254b565b6020604051808303816000875af1925050508015611aa7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa49181019061246a565b60015b611ab3576117dd612487565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b84565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c0557600080fd5b50565b600060208284031215611c1a57600080fd5b8135611c2581611bd7565b9392505050565b600060208284031215611c3e57600080fd5b5035919050565b6000815180845260005b81811015611c6b57602081850181015186830182015201611c4f565b81811115611c7d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c256020830184611c45565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d3657611d36611cc3565b6040525050565b600067ffffffffffffffff821115611d5757611d57611cc3565b5060051b60200190565b600082601f830112611d7257600080fd5b81356020611d7f82611d3d565b604051611d8c8282611cf2565b83815260059390931b8501820192828101915086841115611dac57600080fd5b8286015b84811015611dc75780358352918301918301611db0565b509695505050505050565b600082601f830112611de357600080fd5b813567ffffffffffffffff811115611dfd57611dfd611cc3565b604051611e3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cf2565b818152846020838601011115611e4757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e7c57600080fd5b611e8586611b84565b9450611e9360208701611b84565b9350604086013567ffffffffffffffff80821115611eb057600080fd5b611ebc89838a01611d61565b94506060880135915080821115611ed257600080fd5b611ede89838a01611d61565b93506080880135915080821115611ef457600080fd5b50611f0188828901611dd2565b9150509295509295909350565b60008060408385031215611f2157600080fd5b823567ffffffffffffffff80821115611f3957600080fd5b818501915085601f830112611f4d57600080fd5b81356020611f5a82611d3d565b604051611f678282611cf2565b83815260059390931b8501820192828101915089841115611f8757600080fd5b948201945b83861015611fac57611f9d86611b84565b82529482019490820190611f8c565b96505086013592505080821115611fc257600080fd5b50611fcf85828601611d61565b9150509250929050565b600081518084526020808501945080840160005b8381101561200957815187529582019590820190600101611fed565b509495945050505050565b602081526000611c256020830184611fd9565b60008060006060848603121561203c57600080fd5b61204584611b84565b9250602084013567ffffffffffffffff8082111561206257600080fd5b61206e87838801611d61565b9350604086013591508082111561208457600080fd5b5061209186828701611d61565b9150509250925092565b600080604083850312156120ae57600080fd5b6120b783611b84565b9150602083013580151581146120cc57600080fd5b809150509250929050565b600080604083850312156120ea57600080fd5b6120f383611b84565b915061210160208401611b84565b90509250929050565b600080600080600060a0868803121561212257600080fd5b61212b86611b84565b945061213960208701611b84565b93506040860135925060608601359150608086013567ffffffffffffffff81111561216357600080fd5b611f0188828901611dd2565b60008060006060848603121561218457600080fd5b61218d84611b84565b95602085013595506040909401359392505050565b600181811c908216806121b657607f821691505b602082108114156121f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561228657612286612225565b5060010190565b600082198211156122a0576122a0612225565b500190565b600181815b808511156122fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122e4576122e4612225565b808516156122f157918102915b93841c93908002906122aa565b509250929050565b6000826123155750600161031c565b816123225750600061031c565b816001811461233857600281146123425761235e565b600191505061031c565b60ff84111561235357612353612225565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612381575081810a61031c565b61238b83836122a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123bd576123bd612225565b029392505050565b6000611c258383612306565b6040815260006123e46040830185611fd9565b82810360208401526123f68185611fd9565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261243860a0830186611fd9565b828103606084015261244a8186611fd9565b9050828103608084015261245e8185611c45565b98975050505050505050565b60006020828403121561247c57600080fd5b8151611c2581611bd7565b600060033d11156124a05760046000803e5060005160e01c5b90565b600060443d10156124b15790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124ff57505050505090565b82850191508151818111156125175750505050505090565b843d87010160208285010111156125315750505050505090565b61254060208286010187611cf2565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261259060a0830184611c45565b97965050505050505056fea26469706673582212205913168831f9795ef87cc4fe830a49ace8e1fd2ccb4a708350ead93fdd31f99164736f6c634300080a0033"; type ReserveTokenERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC721__factory.ts b/src/typechain/factories/ReserveTokenERC721__factory.ts index 5dd9454..f64c867 100644 --- a/src/typechain/factories/ReserveTokenERC721__factory.ts +++ b/src/typechain/factories/ReserveTokenERC721__factory.ts @@ -380,7 +380,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611cc280620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b610118610113366004611785565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b6040516101249190611818565b61015561015036600461182b565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d61018836600461186d565b6104ed565b005b61018d61019d366004611897565b61067a565b61018d6101b0366004611897565b61071c565b61018d6101c336600461182b565b610737565b6101556101d636600461182b565b6107d8565b6101ee6101e93660046118d3565b61088a565b604051908152602001610124565b61018d610958565b61013561097b565b6101ee60065481565b61018d6102233660046118ee565b61098a565b61018d610236366004611959565b610999565b61013561024936600461182b565b610a41565b61011861025c366004611a53565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b90611a86565b80601f01602080910402602001604051908101604052809291908181526020018280546103b790611a86565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166104c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104f8826107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016104bb565b3373ffffffffffffffffffffffffffffffffffffffff821614806105df57506105df813361025c565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016104bb565b6106758383610b5e565b505050565b610685335b82610bfe565b610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610675838383610d6e565b61067583838360405180602001604052806000815250610999565b6107403361067f565b6107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f7665640000000000000000000000000000000060648201526084016104bb565b6107d581610fd5565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016104bb565b600073ffffffffffffffffffffffffffffffffffffffff821661092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016104bb565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061096883611b09565b9190505550610979336006546110a2565b565b60606001805461038b90611a86565b610995338383611264565b5050565b6109a33383610bfe565b610a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610a3b84848484611392565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016104bb565b6000610b0c60408051602081019091526000815290565b90506000815111610b2c5760405180602001604052806000815250610b57565b80610b3684611435565b604051602001610b47929190611b42565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bb8826107d8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016104bb565b6000610cba836107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d2957508373ffffffffffffffffffffffffffffffffffffffff16610d118461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b80610d66575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d8e826107d8565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104bb565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bb565b610ede600082610b5e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610f14908490611b71565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f4f908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610fe0826107d8565b9050610fed600083610b5e565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290611023908490611b71565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff821661111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104bb565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156111ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906111e1908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61139d848484610d6e565b6113a984848484611567565b610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b60608161147557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561149f578061148981611b09565b91506114989050600a83611bcf565b9150611479565b60008167ffffffffffffffff8111156114ba576114ba61192a565b6040519080825280601f01601f1916602001820160405280156114e4576020820181803683370190505b5090505b8415610d66576114f9600183611b71565b9150611506600a86611be3565b611511906030611b88565b60f81b81838151811061152657611526611bf7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611560600a86611bcf565b94506114e8565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561174c576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906115de903390899088908890600401611c26565b6020604051808303816000875af1925050508015611637575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163491810190611c6f565b60015b611701573d808015611665576040519150601f19603f3d011682016040523d82523d6000602084013e61166a565b606091505b5080516116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d66565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107d557600080fd5b60006020828403121561179757600080fd5b8135610b5781611757565b60005b838110156117bd5781810151838201526020016117a5565b83811115610a3b5750506000910152565b600081518084526117e68160208601602086016117a2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610b5760208301846117ce565b60006020828403121561183d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461186857600080fd5b919050565b6000806040838503121561188057600080fd5b61188983611844565b946020939093013593505050565b6000806000606084860312156118ac57600080fd5b6118b584611844565b92506118c360208501611844565b9150604084013590509250925092565b6000602082840312156118e557600080fd5b610b5782611844565b6000806040838503121561190157600080fd5b61190a83611844565b91506020830135801515811461191f57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561196f57600080fd5b61197885611844565b935061198660208601611844565b925060408501359150606085013567ffffffffffffffff808211156119aa57600080fd5b818701915087601f8301126119be57600080fd5b8135818111156119d0576119d061192a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a1657611a1661192a565b816040528281528a6020848701011115611a2f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611a6657600080fd5b611a6f83611844565b9150611a7d60208401611844565b90509250929050565b600181811c90821680611a9a57607f821691505b60208210811415611ad4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b3b57611b3b611ada565b5060010190565b60008351611b548184602088016117a2565b835190830190611b688183602088016117a2565b01949350505050565b600082821015611b8357611b83611ada565b500390565b60008219821115611b9b57611b9b611ada565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611bde57611bde611ba0565b500490565b600082611bf257611bf2611ba0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611c6560808301846117ce565b9695505050505050565b600060208284031215611c8157600080fd5b8151610b578161175756fea264697066735822122055d90dccd489b7631316a6f0f4a24325133426dfd967486cd7d2dfaea606058764736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611cc280620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b610118610113366004611785565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b6040516101249190611818565b61015561015036600461182b565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d61018836600461186d565b6104ed565b005b61018d61019d366004611897565b61067a565b61018d6101b0366004611897565b61071c565b61018d6101c336600461182b565b610737565b6101556101d636600461182b565b6107d8565b6101ee6101e93660046118d3565b61088a565b604051908152602001610124565b61018d610958565b61013561097b565b6101ee60065481565b61018d6102233660046118ee565b61098a565b61018d610236366004611959565b610999565b61013561024936600461182b565b610a41565b61011861025c366004611a53565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b90611a86565b80601f01602080910402602001604051908101604052809291908181526020018280546103b790611a86565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166104c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104f8826107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016104bb565b3373ffffffffffffffffffffffffffffffffffffffff821614806105df57506105df813361025c565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016104bb565b6106758383610b5e565b505050565b610685335b82610bfe565b610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610675838383610d6e565b61067583838360405180602001604052806000815250610999565b6107403361067f565b6107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f7665640000000000000000000000000000000060648201526084016104bb565b6107d581610fd5565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016104bb565b600073ffffffffffffffffffffffffffffffffffffffff821661092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016104bb565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061096883611b09565b9190505550610979336006546110a2565b565b60606001805461038b90611a86565b610995338383611264565b5050565b6109a33383610bfe565b610a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610a3b84848484611392565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016104bb565b6000610b0c60408051602081019091526000815290565b90506000815111610b2c5760405180602001604052806000815250610b57565b80610b3684611435565b604051602001610b47929190611b42565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bb8826107d8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016104bb565b6000610cba836107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d28575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610d6657508373ffffffffffffffffffffffffffffffffffffffff16610d4e8461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d8e826107d8565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104bb565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bb565b610ede600082610b5e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610f14908490611b71565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f4f908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610fe0826107d8565b9050610fed600083610b5e565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290611023908490611b71565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff821661111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104bb565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156111ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906111e1908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61139d848484610d6e565b6113a984848484611567565b610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b60608161147557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561149f578061148981611b09565b91506114989050600a83611bcf565b9150611479565b60008167ffffffffffffffff8111156114ba576114ba61192a565b6040519080825280601f01601f1916602001820160405280156114e4576020820181803683370190505b5090505b8415610d66576114f9600183611b71565b9150611506600a86611be3565b611511906030611b88565b60f81b81838151811061152657611526611bf7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611560600a86611bcf565b94506114e8565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561174c576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906115de903390899088908890600401611c26565b6020604051808303816000875af1925050508015611637575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163491810190611c6f565b60015b611701573d808015611665576040519150601f19603f3d011682016040523d82523d6000602084013e61166a565b606091505b5080516116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d66565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107d557600080fd5b60006020828403121561179757600080fd5b8135610b5781611757565b60005b838110156117bd5781810151838201526020016117a5565b83811115610a3b5750506000910152565b600081518084526117e68160208601602086016117a2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610b5760208301846117ce565b60006020828403121561183d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461186857600080fd5b919050565b6000806040838503121561188057600080fd5b61188983611844565b946020939093013593505050565b6000806000606084860312156118ac57600080fd5b6118b584611844565b92506118c360208501611844565b9150604084013590509250925092565b6000602082840312156118e557600080fd5b610b5782611844565b6000806040838503121561190157600080fd5b61190a83611844565b91506020830135801515811461191f57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561196f57600080fd5b61197885611844565b935061198660208601611844565b925060408501359150606085013567ffffffffffffffff808211156119aa57600080fd5b818701915087601f8301126119be57600080fd5b8135818111156119d0576119d061192a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a1657611a1661192a565b816040528281528a6020848701011115611a2f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611a6657600080fd5b611a6f83611844565b9150611a7d60208401611844565b90509250929050565b600181811c90821680611a9a57607f821691505b60208210811415611ad4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b3b57611b3b611ada565b5060010190565b60008351611b548184602088016117a2565b835190830190611b688183602088016117a2565b01949350505050565b600082821015611b8357611b83611ada565b500390565b60008219821115611b9b57611b9b611ada565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611bde57611bde611ba0565b500490565b600082611bf257611bf2611ba0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611c6560808301846117ce565b9695505050505050565b600060208284031215611c8157600080fd5b8151610b578161175756fea2646970667358221220dbbfffc5f27fe925cfa6e73681bbf435bc307d5e7e61e65742b3075ed5e0ae3064736f6c634300080a0033"; type ReserveTokenERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenTest__factory.ts b/src/typechain/factories/ReserveTokenTest__factory.ts index 02b4717..7f4a161 100644 --- a/src/typechain/factories/ReserveTokenTest__factory.ts +++ b/src/typechain/factories/ReserveTokenTest__factory.ts @@ -352,7 +352,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000209565b5080516200007890600490602084019062000209565b505050620000a033633b9aca00670de0b6b3a76400006200009a9190620002c5565b620000a6565b6200033f565b6001600160a01b038216620001025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000110600083836200019d565b8060026000828254620001249190620002e7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000153908490620002e7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620001cd57506001600160a01b03821660009081526005602052604090205460ff16155b620002045760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000f9565b505050565b828054620002179062000302565b90600052602060002090601f0160209004810192826200023b576000855562000286565b82601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b5b8082111562000294576000815560010162000299565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002e257620002e2620002af565b500290565b60008219821115620002fd57620002fd620002af565b500190565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b610f7c806200034f6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610268578063ca7df92c1461027b578063dd62ed3e14610286578063ea49e9a2146102cc57600080fd5b806370a082311461020f57806370f0c3511461024557806395d89b411461024d578063a457c2d71461025557600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806348422faa1461018d5780635bb9058b146101b057600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610326565b60405161011a9190610d3d565b60405180910390f35b610136610131366004610dd9565b6103b8565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610e03565b6103d0565b6040516012815260200161011a565b610136610188366004610dd9565b6103f4565b61013661019b366004610e3f565b60056020526000908152604090205460ff1681565b61020d6101be366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b005b61014a61021d366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61020d610440565b61010d61045c565b610136610263366004610dd9565b61046b565b610136610276366004610dd9565b610541565b61014a633b9aca0081565b61014a610294366004610e61565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61020d6102da366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606003805461033590610e94565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610e94565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b6000336103c681858561054f565b5060019392505050565b6000336103de858285610703565b6103e98585856107da565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103c6908290869061043b908790610f17565b61054f565b3360008181526020819052604090205461045a9190610a98565b565b60606004805461033590610e94565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103e9828686840361054f565b6000336103c68185856107da565b73ffffffffffffffffffffffffffffffffffffffff83166105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d457818110156107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b6107d4848484840361054f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052b565b61092b838383610c8e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a25908490610f17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8b91815260200190565b60405180910390a36107d4565b73ffffffffffffffffffffffffffffffffffffffff8216610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b610b4782600083610c8e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c39908490610f2f565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f6565b505050565b73ffffffffffffffffffffffffffffffffffffffff82161580610cd7575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b610c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e0000000000000000000000000000000000000000000000000000604482015260640161052b565b600060208083528351808285015260005b81811015610d6a57858101830151858201604001528201610d4e565b81811115610d7c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dd457600080fd5b919050565b60008060408385031215610dec57600080fd5b610df583610db0565b946020939093013593505050565b600080600060608486031215610e1857600080fd5b610e2184610db0565b9250610e2f60208501610db0565b9150604084013590509250925092565b600060208284031215610e5157600080fd5b610e5a82610db0565b9392505050565b60008060408385031215610e7457600080fd5b610e7d83610db0565b9150610e8b60208401610db0565b90509250929050565b600181811c90821680610ea857607f821691505b60208210811415610ee2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f2a57610f2a610ee8565b500190565b600082821015610f4157610f41610ee8565b50039056fea26469706673582212203f44813dfbbfe04da8f1afa9d236bf2b6aae3de068900007926a1fe23e4779df64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000209565b5080516200007890600490602084019062000209565b505050620000a033633b9aca00670de0b6b3a76400006200009a9190620002c5565b620000a6565b6200033f565b6001600160a01b038216620001025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000110600083836200019d565b8060026000828254620001249190620002e7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000153908490620002e7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620001cd57506001600160a01b03821660009081526005602052604090205460ff16155b620002045760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000f9565b505050565b828054620002179062000302565b90600052602060002090601f0160209004810192826200023b576000855562000286565b82601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b5b8082111562000294576000815560010162000299565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002e257620002e2620002af565b500290565b60008219821115620002fd57620002fd620002af565b500190565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b610f7c806200034f6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610268578063ca7df92c1461027b578063dd62ed3e14610286578063ea49e9a2146102cc57600080fd5b806370a082311461020f57806370f0c3511461024557806395d89b411461024d578063a457c2d71461025557600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806348422faa1461018d5780635bb9058b146101b057600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610326565b60405161011a9190610d3d565b60405180910390f35b610136610131366004610dd9565b6103b8565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610e03565b6103d0565b6040516012815260200161011a565b610136610188366004610dd9565b6103f4565b61013661019b366004610e3f565b60056020526000908152604090205460ff1681565b61020d6101be366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b005b61014a61021d366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61020d610440565b61010d61045c565b610136610263366004610dd9565b61046b565b610136610276366004610dd9565b610541565b61014a633b9aca0081565b61014a610294366004610e61565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61020d6102da366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606003805461033590610e94565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610e94565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b6000336103c681858561054f565b5060019392505050565b6000336103de858285610703565b6103e98585856107da565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103c6908290869061043b908790610f17565b61054f565b3360008181526020819052604090205461045a9190610a98565b565b60606004805461033590610e94565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103e9828686840361054f565b6000336103c68185856107da565b73ffffffffffffffffffffffffffffffffffffffff83166105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d457818110156107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b6107d4848484840361054f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052b565b61092b838383610c8e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a25908490610f17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8b91815260200190565b60405180910390a36107d4565b73ffffffffffffffffffffffffffffffffffffffff8216610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b610b4782600083610c8e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c39908490610f2f565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f6565b505050565b73ffffffffffffffffffffffffffffffffffffffff82161580610cd7575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b610c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e0000000000000000000000000000000000000000000000000000604482015260640161052b565b600060208083528351808285015260005b81811015610d6a57858101830151858201604001528201610d4e565b81811115610d7c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dd457600080fd5b919050565b60008060408385031215610dec57600080fd5b610df583610db0565b946020939093013593505050565b600080600060608486031215610e1857600080fd5b610e2184610db0565b9250610e2f60208501610db0565b9150604084013590509250925092565b600060208284031215610e5157600080fd5b610e5a82610db0565b9392505050565b60008060408385031215610e7457600080fd5b610e7d83610db0565b9150610e8b60208401610db0565b90509250929050565b600181811c90821680610ea857607f821691505b60208210811415610ee2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f2a57610f2a610ee8565b500190565b600082821015610f4157610f41610ee8565b50039056fea26469706673582212206a9cdbc492fddcff65027fc45847297b2584133d3e92b815396112c1f7a832be64736f6c634300080a0033"; type ReserveTokenTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveToken__factory.ts b/src/typechain/factories/ReserveToken__factory.ts index 5b58da1..a01cff0 100644 --- a/src/typechain/factories/ReserveToken__factory.ts +++ b/src/typechain/factories/ReserveToken__factory.ts @@ -373,7 +373,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea2646970667358221220c56ad081ecc000a3742bbf0d60ea65085830ac567b777bb99d8b94464e60a16f64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea2646970667358221220206ed2a3bafa10a36bfdf67bd6392e6552dabe3d043c3788fdd78f69da42507464736f6c634300080a0033"; type ReserveTokenConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RightsManager__factory.ts b/src/typechain/factories/RightsManager__factory.ts deleted file mode 100644 index b424a3a..0000000 --- a/src/typechain/factories/RightsManager__factory.ts +++ /dev/null @@ -1,294 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { RightsManager, RightsManagerInterface } from "../RightsManager"; - -const _abi = [ - { - inputs: [], - name: "DEFAULT_CAN_ADD_REMOVE_TOKENS", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_CAN_CHANGE_CAP", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_CAN_CHANGE_SWAP_FEE", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_CAN_CHANGE_WEIGHTS", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_CAN_PAUSE_SWAPPING", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "DEFAULT_CAN_WHITELIST_LPS", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bool[]", - name: "a", - type: "bool[]", - }, - ], - name: "constructRights", - outputs: [ - { - components: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - internalType: "struct RightsManager.Rights", - name: "", - type: "tuple", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - internalType: "struct RightsManager.Rights", - name: "rights", - type: "tuple", - }, - ], - name: "convertRights", - outputs: [ - { - internalType: "bool[]", - name: "", - type: "bool[]", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bool", - name: "canPauseSwapping", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeSwapFee", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeWeights", - type: "bool", - }, - { - internalType: "bool", - name: "canAddRemoveTokens", - type: "bool", - }, - { - internalType: "bool", - name: "canWhitelistLPs", - type: "bool", - }, - { - internalType: "bool", - name: "canChangeCap", - type: "bool", - }, - ], - internalType: "struct RightsManager.Rights", - name: "self", - type: "tuple", - }, - { - internalType: "enum RightsManager.Permissions", - name: "permission", - type: "RightsManager.Permissions", - }, - ], - name: "hasPermission", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "pure", - type: "function", - }, -]; - -const _bytecode = - "0x6106a6610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100ad5760003560e01c80634583544a11610080578063c08473fc11610065578063c08473fc1461010b578063cb0d28f6146100d0578063dccf54e7146100b2576100ad565b80634583544a146100d8578063710a51c2146100eb576100ad565b806308395a34146100b257806321bb04ae146100d05780632cc0c346146100b25780633d027b9d146100b2575b600080fd5b6100ba61012b565b6040516100c79190610615565b60405180910390f35b6100ba610130565b6100ba6100e6366004610595565b610135565b6100fe6100f936600461057a565b610215565b6040516100c791906105cf565b61011e6101193660046104e4565b61034b565b6040516100c79190610620565b600081565b600181565b600081600581111561014357fe5b61015b576101546020840184610553565b905061020f565b81600581111561016757fe5b6001141561017f576101546040840160208501610553565b81600581111561018b57fe5b600214156101a3576101546060840160408501610553565b8160058111156101af57fe5b600314156101c7576101546080840160608501610553565b8160058111156101d357fe5b600414156101eb5761015460a0840160808501610553565b8160058111156101f757fe5b6005141561020f5761015460c0840160a08501610553565b92915050565b60408051600680825260e082019092526060918291906020820160c0803683370190505090506102486020840184610553565b8160008151811061025557fe5b9115156020928302919091018201526102749060408501908501610553565b8160018151811061028157fe5b911515602092830291909101909101526102a16060840160408501610553565b816002815181106102ae57fe5b911515602092830291909101909101526102ce6080840160608501610553565b816003815181106102db57fe5b911515602092830291909101909101526102fb60a0840160808501610553565b8160048151811061030857fe5b9115156020928302919091019091015261032860c0840160a08501610553565b8160058151811061033557fe5b9115156020928302919091019091015292915050565b610353610498565b8161039357506040805160c081018252600080825260016020830181905292820192909252606081018290526080810182905260a081019190915261020f565b6040518060c00160405280848460008181106103ab57fe5b90506020020160208101906103c09190610553565b15158152602001848460018181106103d457fe5b90506020020160208101906103e99190610553565b15158152602001848460028181106103fd57fe5b90506020020160208101906104129190610553565b151581526020018484600381811061042657fe5b905060200201602081019061043b9190610553565b151581526020018484600481811061044f57fe5b90506020020160208101906104649190610553565b151581526020018484600581811061047857fe5b905060200201602081019061048d9190610553565b15159052905061020f565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915290565b600060c082840312156104de578081fd5b50919050565b600080602083850312156104f6578182fd5b823567ffffffffffffffff8082111561050d578384fd5b818501915085601f830112610520578384fd5b81358181111561052e578485fd5b8660208083028501011115610541578485fd5b60209290920196919550909350505050565b600060208284031215610564578081fd5b81358015158114610573578182fd5b9392505050565b600060c0828403121561058b578081fd5b61057383836104cd565b60008060e083850312156105a7578182fd5b6105b184846104cd565b915060c0830135600681106105c4578182fd5b809150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156106095783511515835292840192918401916001016105eb565b50909695505050505050565b901515815260200190565b600060c08201905082511515825260208301511515602083015260408301511515604083015260608301511515606083015260808301511515608083015260a0830151151560a08301529291505056fea2646970667358221220f6ab13ff61fcf0a3b338a93f2fc32b927cb2d949ccbd49c56b26e71ab143832364736f6c634300060c0033"; - -type RightsManagerConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: RightsManagerConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class RightsManager__factory extends ContractFactory { - constructor(...args: RightsManagerConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): RightsManager { - return super.attach(address) as RightsManager; - } - connect(signer: Signer): RightsManager__factory { - return super.connect(signer) as RightsManager__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): RightsManagerInterface { - return new utils.Interface(_abi) as RightsManagerInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): RightsManager { - return new Contract(address, _abi, signerOrProvider) as RightsManager; - } -} diff --git a/src/typechain/factories/SSTORE2__factory.ts b/src/typechain/factories/SSTORE2__factory.ts index 8607b1a..9ad01dd 100644 --- a/src/typechain/factories/SSTORE2__factory.ts +++ b/src/typechain/factories/SSTORE2__factory.ts @@ -14,7 +14,7 @@ const _abi = [ ]; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204cb3fe323beb32f9aca91cb898a2da76f79a6e62f50b59d8d87e1d1ddc43f5f764736f6c634300080a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122008e67a66919f4c8e1f3778d6aea1bbdb482579c0e275fd82b53428a40219c11c64736f6c634300080a0033"; type SSTORE2ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleFactory__factory.ts b/src/typechain/factories/SaleFactory__factory.ts index 94640b2..476acbe 100644 --- a/src/typechain/factories/SaleFactory__factory.ts +++ b/src/typechain/factories/SaleFactory__factory.ts @@ -29,6 +29,11 @@ const _abi = [ name: "redeemableERC20Factory", type: "address", }, + { + internalType: "address", + name: "vmStateBuilder", + type: "address", + }, ], internalType: "struct SaleConstructorConfig", name: "config_", @@ -111,73 +116,9 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", - name: "canStartStateConfig", - type: "tuple", - }, - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "canEndStateConfig", - type: "tuple", - }, - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "calculatePriceStateConfig", + name: "vmStateConfig", type: "tuple", }, { @@ -186,7 +127,7 @@ const _abi = [ type: "address", }, { - internalType: "contract IERC20", + internalType: "address", name: "reserve", type: "address", }, @@ -298,7 +239,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b50604051620074703803806200747083398101604081905261003191610137565b60016000908155604051829061004690610129565b81518152602080830151908201526040918201516001600160a01b031682820152905190819003606001906000f080158015610086573d6000803e3d6000fd5b5090506001600160a01b0381166100d65760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b0316608052506101b0565b615f3d806200153383390190565b60006060828403121561014957600080fd5b604051606081016001600160401b038111828210171561017957634e487b7160e01b600052604160045260246000fd5b604090815283518252602080850151908301528301516001600160a01b03811681146101a457600080fd5b60408201529392505050565b608051611367620001cc600039600061034e01526113676000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063079fb762146100465780632ea72a4914610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005961009136600461055b565b610185565b6100cf6100a43660046105fd565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016101109291906109a2565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161013b9190610b37565b6020604051808303816000875af115801561015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061017e9190610b4a565b9392505050565b6000600260005414156101f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600090815561020a8484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff161561029d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c44000000000000000000000000000000000060448201526064016101f0565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6000808061034384860186610f4a565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f7939b0fe00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690637939b0fe906103c9908690869060040161122c565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016101f0565b919050565b600080604083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b90840190610120828703121561052757600080fd5b9092506020840135908082111561053d57600080fd5b5083016080818603121561055057600080fd5b809150509250929050565b6000806020838503121561056e57600080fd5b823567ffffffffffffffff8082111561058657600080fd5b818501915085601f83011261059a57600080fd5b8135818111156105a957600080fd5b8660208285010111156105bb57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ef57600080fd5b50565b80356104e2816105cd565b60006020828403121561060f57600080fd5b813561017e816105cd565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261064e57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261068c57600080fd5b830160208101925035905067ffffffffffffffff8111156106ac57600080fd5b8060051b36038313156106be57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261074357600080fd5b830160208101925035905067ffffffffffffffff81111561076357600080fd5b8036038313156106be57600080fd5b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156107a457600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000608083016107d18384610657565b608086528281845260a08701905060a08260051b88010193508260005b83811015610849577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60898703018352610827828661070e565b6108328882846106c5565b9750505060209283019291909101906001016107ee565b505050505061085b6020840184610657565b858303602087015261086e838284610772565b9250505060408301356040850152606083013560608501528091505092915050565b600061089c828361061a565b608084526108aa818261070e565b6080808701526108bf610100870182846106c5565b9150506108cf602083018361070e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526109048382846106c5565b925050506040820135610916816105cd565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610947602085016105f2565b73ffffffffffffffffffffffffffffffffffffffff8116602087015291506040840135604086015261097b606085016105f2565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b6040815260006109b2848561061a565b6101208060408501526109c96101608501836107c1565b91506109d8602087018761061a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc080868503016060870152610a0d84836107c1565b9350610a1c604089018961061a565b91508086850301608087015250610a3383826107c1565b925050610a42606087016105f2565b73ffffffffffffffffffffffffffffffffffffffff1660a0850152610a69608087016105f2565b73ffffffffffffffffffffffffffffffffffffffff811660c08601525060a086013560e085015261010060c08701358186015260e0870135828601528087013561014086015250508281036020840152610ac38185610890565b95945050505050565b6000815180845260005b81811015610af257602081850181015186830182015201610ad6565b81811115610b04576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061017e6020830184610acc565b600060208284031215610b5c57600080fd5b815161017e816105cd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610bb957610bb9610b67565b60405290565b604051610120810167ffffffffffffffff81118282101715610bb957610bb9610b67565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610c2a57610c2a610b67565b604052919050565b600067ffffffffffffffff821115610c4c57610c4c610b67565b5060051b60200190565b600067ffffffffffffffff831115610c7057610c70610b67565b610ca160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610be3565b9050828152838383011115610cb557600080fd5b828260208301376000602084830101529392505050565b600082601f830112610cdd57600080fd5b81356020610cf2610ced83610c32565b610be3565b82815260059290921b84018101918181019086841115610d1157600080fd5b8286015b84811015610d2c5780358352918301918301610d15565b509695505050505050565b600060808284031215610d4957600080fd5b610d51610b96565b9050813567ffffffffffffffff80821115610d6b57600080fd5b818401915084601f830112610d7f57600080fd5b81356020610d8f610ced83610c32565b82815260059290921b84018101918181019088841115610dae57600080fd5b8286015b84811015610dfb57803586811115610dca5760008081fd5b8701603f81018b13610ddc5760008081fd5b610ded8b8683013560408401610c56565b845250918301918301610db2565b5086525085810135935082841115610e1257600080fd5b610e1e87858801610ccc565b8186015250505050604082013560408201526060820135606082015292915050565b600082601f830112610e5157600080fd5b61017e83833560208501610c56565b600060808284031215610e7257600080fd5b610e7a610b96565b9050813567ffffffffffffffff80821115610e9457600080fd5b9083019060808286031215610ea857600080fd5b610eb0610b96565b823582811115610ebf57600080fd5b610ecb87828601610e40565b825250602083013582811115610ee057600080fd5b610eec87828601610e40565b60208301525060408301359150610f02826105cd565b81604082015260608301356060820152808452505050610f24602083016105f2565b602082015260408201356040820152610f3f606083016105f2565b606082015292915050565b60008060408385031215610f5d57600080fd5b823567ffffffffffffffff80821115610f7557600080fd5b908401906101208287031215610f8a57600080fd5b610f92610bbf565b823582811115610fa157600080fd5b610fad88828601610d37565b825250602083013582811115610fc257600080fd5b610fce88828601610d37565b602083015250604083013582811115610fe657600080fd5b610ff288828601610d37565b604083015250611004606084016105f2565b6060820152611015608084016105f2565b608082015260a083013560a082015260c083013560c082015260e083013560e082015261010080840135818301525080945050602085013591508082111561105c57600080fd5b5061106985828601610e60565b9150509250929050565b600081518084526020808501945080840160005b838110156110a357815187529582019590820190600101611087565b509495945050505050565b60006080830182516080855281815180845260a08701915060a08160051b88010193506020808401935060005b82811015611127577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60898703018452611115868651610acc565b955093810193928101926001016110db565b50808701519350878503818901525050506111428282611073565b91505060408301516040850152606083015160608501528091505092915050565b60008151608084528051608080860152611181610100860182610acc565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526111bc8282610acc565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e08801528060208701511660208801525050604084015160408601526060840151915061099a606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835161012080604085015261124b6101608501836110ae565b915060208601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08086850301606087015261128784836110ae565b93506040880151915080868503016080870152506112a583826110ae565b92505060608601516112cf60a086018273ffffffffffffffffffffffffffffffffffffffff169052565b50608086015173ffffffffffffffffffffffffffffffffffffffff811660c08601525060a086015160e085015260c0860151610100818187015260e088015183870152808801516101408701525050508281036020840152610ac3818561116356fea2646970667358221220c60ef6184818a000b5ca8e3725035d37948d0d2d683ea6ffdf6ddb8afb0d3fe164736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005f3d38038062005f3d833981016040819052620000359162000126565b6001600481905550600280600260066007600b60076004620000589190620001a2565b620000649190620001a2565b620000709190620001a2565b6200007c9190620001a2565b620000889190620001a2565b620000949190620001a2565b620000a09190620001a2565b620000ad906005620001a2565b6080908152815160a0526020808301805160c052604080850180516001600160a01b0390811660e0528251338152875195810195909552925191840191909152511660608201527febb7bbe68143e887fe137da12458b32f7aec9b8aa0030b338fb7758a798daf9a910160405180910390a150620001c9565b6000606082840312156200013957600080fd5b604051606081016001600160401b03811182821017156200016a57634e487b7160e01b600052604160045260246000fd5b604090815283518252602080850151908301528301516001600160a01b03811681146200019657600080fd5b60408201529392505050565b60008219821115620001c457634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e051615d336200020a6000396000610c87015260006108bb01526000610956015260008181612552015261258d0152615d336000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063be9a65551161008c578063ec30903811610066578063ec309038146101bf578063efbe1c1c146101c7578063f9020e33146101cf578063fc0c546a146101fa57600080fd5b8063be9a655514610165578063cd3293de1461016d578063d48827e9146101ac57600080fd5b80637939b0fe116100bd5780637939b0fe14610114578063abf3969e14610127578063ae1042651461014457600080fd5b806315a0ea6a146100e4578063504d14f8146100f957806370dea79a1461010c575b600080fd5b6100f76100f23660046149d3565b610218565b005b6100f76101073660046149f0565b61031b565b6100f7610597565b6100f7610122366004614e11565b6107cf565b61012f610ddc565b60405190151581526020015b60405180910390f35b610157610152366004614f3a565b610ea5565b60405190815260200161013b565b6100f7610f2e565b600c5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013b565b6100f76101ba366004614f53565b611010565b61012f611700565b6100f761175d565b600c5474010000000000000000000000000000000000000000900460ff1660405161013b9190615036565b60055473ffffffffffffffffffffffffffffffffffffffff16610187565b6002600c5474010000000000000000000000000000000000000000900460ff16600381111561024957610249614fcc565b146102b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090205480156103175773ffffffffffffffffffffffffffffffffffffffff808316600090815260126020526040812055600c546103179116838361192d565b5050565b6002600c5474010000000000000000000000000000000000000000900460ff16600381111561034c5761034c614fcc565b14156103b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f5355434345535300000000000000000000000000000000000060448201526064016102ac565b6003600c5474010000000000000000000000000000000000000000900460ff1660038111156103e5576103e5614fcc565b146103f2576103f2611a01565b336000908152601060209081526040808320905190929161041591859101615090565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061044a906150cd565b909155506000905061046460808301356060840135611ba0565b905080600f60008282546104789190615102565b925050819055508160600135600e60008282546104959190615119565b9091555050604082018035906012906000906104b490602087016149d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104fd9190615102565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a324906105349033908590615131565b60405180910390a16005546105659073ffffffffffffffffffffffffffffffffffffffff1633306060860135611bc8565b61031733610577604085013584615119565b600c5473ffffffffffffffffffffffffffffffffffffffff16919061192d565b43600d5410610602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f55540000000000000000000000000000000000000060448201526064016102ac565b6000600c5474010000000000000000000000000000000000000000900460ff16600381111561063357610633614fcc565b148061066d57506001600c5474010000000000000000000000000000000000000000900460ff16600381111561066b5761066b614fcc565b145b6106d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016102ac565b6000600e55600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740300000000000000000000000000000000000000001790556040805133815290517f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809181900360200190a16005546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156107b557600080fd5b505af11580156107c9573d6000803e3d6000fd5b50505050565b600054610100900460ff166107ea5760005460ff16156107ee565b303b155b61087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102ac565b600054610100900460ff161580156108b957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b7f00000000000000000000000000000000000000000000000000000000000000008360c001511115610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f434f4f4c444f574e000000000000000000000000000000000000000060448201526064016102ac565b6109548360c00151611c26565b7f00000000000000000000000000000000000000000000000000000000000000008360a0015111156109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f555400000000000000000000000000000000000000000060448201526064016102ac565b60a08301516109f19043615119565b600d5560e0830151610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f3000000000000000000000000000000000000000000060448201526064016102ac565b60e0830151600a558251610a7b90610a7690611ce1565b611e3d565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610acb610a768460200151611ce1565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b1b610a768460400151611ce1565b600980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155606085015160068054909216908316179055610100840151600b55600c8054608086015183167fffffffffffffffffffffff0000000000000000000000000000000000000000009091161790558251604001511615610c1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f534554000000000000000000000000000000000060448201526064016102ac565b8151306040918201528251606090810151600e55815160a08101835260808087015173ffffffffffffffffffffffffffffffffffffffff908116835286516020808501919091528088015182168487015285880151848601529387015181169183019190915292516000937f00000000000000000000000000000000000000000000000000000000000000001692632ea72a4992610cba929091016151d1565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ce591906152d3565b6020604051808303816000875af1158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2891906152e6565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040519091507f887b6fed5d41b64af6f50c6d1010798acb0e93f4adea8213a06574ea968e5d2590610d9f903390879085906153df565b60405180910390a1508015610dd757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b60006001600c5474010000000000000000000000000000000000000000900460ff166003811115610e0f57610e0f614fcc565b1415610e9f576001600e541015610e265750600190565b600854600090610e4b9073ffffffffffffffffffffffffffffffffffffffff16611eab565b9050610e6860405180602001604052806000815250826000611ef9565b6000816020015160018360000151610e809190615102565b81518110610e9057610e90615513565b60200260200101511191505090565b50600090565b6009546000908190610ecc9073ffffffffffffffffffffffffffffffffffffffff16611eab565b9050610efb83604051602001610ee491815260200190565b604051602081830303815290604052826000611ef9565b60208101518151610f0e90600190615102565b81518110610f1e57610f1e615513565b6020026020010151915050919050565b610f36611700565b610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f43414e545f53544152540000000000000000000000000000000000000000000060448201526064016102ac565b600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805133815290517f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659181900360200190a1565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561104f5760035473ffffffffffffffffffffffffffffffffffffffff1661107d565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915043101561110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102ac565b60006001544361111f9190615119565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156111f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102ac565b60026004556040830151611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d000000000000000000000000000000000000000000000060448201526064016102ac565b8260600151836040015111156112d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f4445534952454400000000000000000000000060448201526064016102ac565b6001600c5474010000000000000000000000000000000000000000900460ff16600381111561130357611303614fcc565b1461136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102ac565b6000611385600e54856060015161217d90919063ffffffff16565b905083604001518110156113f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b000000000000000000000000000060448201526064016102ac565b600061140082610ea5565b90508460800151811115611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f50524943450000000000000000000000000000000000000060448201526064016102ac565b600061147c8284611ba0565b6040805160a081018252601180548083528a5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528b01519383019390935260608201879052608082018690529293509160006114d583615542565b909155505033600090815260106020908152604080832090519092916114fd9185910161557b565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061153290615542565b9091555050602080880151885173ffffffffffffffffffffffffffffffffffffffff166000908152601290925260408220805491929091611574908490615119565b9250508190555083600e600082825461158d9190615102565b9250508190555081600f60008282546115a69190615119565b925050819055506115e333308960200151856115c29190615119565b600c5473ffffffffffffffffffffffffffffffffffffffff16929190611bc8565b6005546116079073ffffffffffffffffffffffffffffffffffffffff16338661192d565b6001600e54101561161f5761161a61175d565b61168f565b600b54600e54101561168f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a3388836040516116c2939291906155ca565b60405180910390a1505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050565b600080600c5474010000000000000000000000000000000000000000900460ff16600381111561173257611732614fcc565b1415610e9f57600754600090610e4b9073ffffffffffffffffffffffffffffffffffffffff16611eab565b611765610ddc565b6117cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f43414e545f454e4400000000000000000000000000000000000000000000000060448201526064016102ac565b600a54600f5410156000816117e15760036117e4565b60025b6000600e55600c805491925082917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000083600381111561183c5761183c614fcc565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd338260405161187292919061566d565b60405180910390a16005546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b50505050811561031757600654600f54600c546103179273ffffffffffffffffffffffffffffffffffffffff918216929116905b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610dd79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612193565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611a405760035473ffffffffffffffffffffffffffffffffffffffff16611a6e565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150431015611b00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102ac565b600060015443611b109190615119565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611bb58385615697565b611bbf9190615703565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526107c99085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161197f565b60008111611c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f300000000000000000000000000000000000000000000060448201526064016102ac565b60015415611ca057611ca0615717565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b611d136040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151611d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016102ac565b6040518060a0016040528060008152602001836040015167ffffffffffffffff811115611dab57611dab614a02565b604051908082528060200260200182016040528015611dd4578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff811115611e0b57611e0b614a02565b604051908082528060200260200182016040528015611e34578160200160208202803683370190505b50905292915050565b600080611e6883604051602001611e5491906157b2565b60405160208183030381529060405261229f565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd338285604051611e9d939291906157c5565b60405180910390a192915050565b611edd6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b611ee68261232a565b806020019051810190611bc29190615915565b60208201515182511115611f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102ac565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b84881015612170576002880197508784015180601e1a975080601f1a96505060058710156120ef576001871415612007578160808716611fd25750825b607f871681518110611fe357600080fd5b8b516020820260200183015160208202602001850152600181018d525050506120fb565b600287141561203e57895180871061201e57600080fd5b6020870260200182015160208202602001830152600181018b52506120fb565b6003871415612057576120528b8b88612358565b6120fb565b6004871415612088576120528a60405160200161207491906157b2565b6040516020818303038152906040526124be565b86612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016102ac565b6120fb8b8b8989612550565b60208a0151518a51111561216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102ac565b611f95565b5050505050505050505050565b600081831061218c5781611bbf565b5090919050565b60006121f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661274c9092919063ffffffff16565b805190915015610dd7578080602001905181019061221391906159f8565b610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102ac565b6000806122ca836040516020016122b69190615a1a565b604051602081830303815290604052612765565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216612324576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060611bc28260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612791565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff8111156123bc576123bc614a02565b6040519080825280602002602001820160405280156123e5578160200160208202803683370190505b50905060005b8281101561243c578760200151818960000151018151811061240f5761240f615513565b602002602001015182828151811061242957612429615513565b60209081029190910101526001016123eb565b5060005b6101008110156124b35760005b838110156124a0578482860384838151811061246b5761246b615513565b6020026020010151901b901c8960800151828151811061248d5761248d615513565b602090810291909101015260010161244d565b506124ac898988611ef9565b8401612440565b505050505050505050565b61254d816040516024016124d291906152d3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612879565b50565b7f000000000000000000000000000000000000000000000000000000000000000082101561258b5761258683600584038361289a565b6107c9565b7f0000000000000000000000000000000000000000000000000000000000000000820391506005821061261a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b8161264a57600e54602084015184518151811061263957612639615513565b602002602001018181525050612740565b600182141561266d57600f54602084015184518151811061263957612639615513565b60028214156126bb5760008480602001905181019061268c9190615a40565b90508084602001518560000151815181106126a9576126a9615513565b60200260200101818152505050612740565b60038214156126f75760055460208401518451815173ffffffffffffffffffffffffffffffffffffffff90931692811061263957612639615513565b600482141561274057600c5460208401518451815173ffffffffffffffffffffffffffffffffffffffff90931692811061273357612733615513565b6020026020010181815250505b50508051600101905250565b606061275b8484600085612a00565b90505b9392505050565b606081518260405160200161277b929190615a59565b6040516020818303038152906040529050919050565b6060833b806127b057505060408051602081019091526000815261275e565b808411156127ce57505060408051602081019091526000815261275e565b83831015612819576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102ac565b838303848203600082821061282e5782612830565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60048210156128ae57610dd7838383612b98565b601d82101561293157600b8210156128ce57610dd7836004840383612cae565b601682101561290457610dd7837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5840183612fdc565b610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea840183613475565b602382101561296757610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe38401836136e5565b602582101561299d57610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183613bb9565b60278210156129d357610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183613de2565b610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9840183613fdc565b606082471015612a92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102ac565b73ffffffffffffffffffffffffffffffffffffffff85163b612b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102ac565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b399190615af0565b60006040518083038185875af1925050503d8060008114612b76576040519150601f19603f3d011682016040523d82523d6000602084013e612b7b565b606091505b5091509150612b8b828286614408565b925050505b949350505050565b60048210612c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b81612c3357438360200151846000015181518110612c2257612c22615513565b602002602001018181525050612ca3565b6001821415612c5757428360200151846000015181518110612c2257612c22615513565b6002821415612c7b57602083015183518151339291908110612c2257612c22615513565b602083015183518151309291908110612c9657612c96615513565b6020026020010181815250505b505080516001019052565b60078210612d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b6002821015612e645782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182612dc35783602001518160010181518110612d6357612d63615513565b6020026020010151612d9b8386602001518481518110612d8557612d85615513565b602002602001015161445b90919063ffffffff16565b0284602001518281518110612db257612db2615513565b602002602001018181525050612e38565b6001831415612e385783602001518160010181518110612de557612de5615513565b6020026020010151612e078386602001518481518110612d8557612d85615513565b81612e1457612e146156d4565b0484602001518281518110612e2b57612e2b615513565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b6005821015612f755782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016002831415612edb57612eb48285602001518381518110612d8557612d85615513565b84602001518281518110612eca57612eca615513565b6020026020010181815250506107c9565b6003831415612f1457612eb48285602001518381518110612efe57612efe615513565b60200260200101516144dc90919063ffffffff16565b60048314156107c957612f4d8285602001518381518110612f3757612f37615513565b602002602001015161453a90919063ffffffff16565b84602001518281518110612f6357612f63615513565b60200260200101818152505050505050565b6005821415612fb757670de0b6b3a76400008360200151846000015181518110612fa157612fa1615513565b6020908102919091010152505080516001019052565b6006821415610dd75760128360200151846000015181518110612c9657612c96615513565b600b8210613046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01918391600091908390811061308c5761308c615513565b6020026020010151905060008614156130e4575b828210156130df5760208701518051600190930192839081106130c5576130c5615513565b6020026020010151816130d89190615119565b90506130a0565b613446565b6001861415613160575b828210801561311c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156130df5781806001019250506131598760200151838151811061314257613142615513565b60200260200101518261458590919063ffffffff16565b90506130ee565b60028614156131a9575b828210156130df57602087015180516001909301928390811061318f5761318f615513565b6020026020010151816131a29190615102565b905061316a565b6003861415613206575b82821080156131c25750806000105b156130df5781806001019250506131ff876020015183815181106131e8576131e8615513565b6020026020010151826145c090919063ffffffff16565b90506131b3565b600486141561324f575b828210156130df57602087015180516001909301928390811061323557613235615513565b6020026020010151816132489190615697565b9050613210565b60058614156132cb575b828210801561328757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156130df5781806001019250506132c4876020015183815181106132ad576132ad615513565b6020026020010151826145d690919063ffffffff16565b9050613259565b6006861415613314575b828210156130df5760208701518051600190930192839081106132fa576132fa615513565b60200260200101518161330d9190615703565b90506132d5565b600786141561335d575b828210156130df57602087015180516001909301928390811061334357613343615513565b6020026020010151816133569190615b0c565b905061331e565b60088614156133a6575b828210156130df57602087015180516001909301928390811061338c5761338c615513565b60200260200101518161339f9190615c40565b9050613367565b60098614156133f85760005b838310156133f25760208801518051600190940193849081106133d7576133d7615513565b60200260200101519050818110156133ed578091505b6133b2565b50613446565b600a8614156134465760005b8383101561344457602088015180516001909401938490811061342957613429615513565b602002602001015190508181111561343f578091505b613404565b505b808760200151858151811061345d5761345d615513565b60209081029190910101525050506001019092525050565b600782106134df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b82516020808501518183020101838015613528576001811461355f57600281146135d85760038114613600576004811461362857600581146136505760068114613697576136dd565b8261353257600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180511590526136dd565b600383101561356d57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08201805180156135c957602082015182526135d1565b604082015182525b50506136dd565b60028310156135e657600080fd5b6001830386526040820360208101518151148152506136dd565b600283101561360e57600080fd5b6001830386526040820360208101518151108152506136dd565b600283101561363657600080fd5b6001830386526040820360208101518151118152506136dd565b8383101561365d57600080fd5b8315613692576001840383038652602084028203805b838110156135d157805161368a57600082526135d1565b602001613673565b6136dd565b838310156136a457600080fd5b83156136dd576001840383038652602084028203805b838110156136da57805180156136d15782526136da565b506020016136ba565b50505b505050505050565b6006821061374f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b600082613877575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90920191829081106137ba576137ba615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea31856020015183600101815181106137f6576137f6615513565b60200260200101516040518263ffffffff1660e01b8152600401613836919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613853573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190615a40565b60018314156138d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84602001518560000151815181106138bb576138bb615513565b6020908102919091010152835160010184526107c9565b60028314156138f757600084602001518560000151815181106138bb576138bb615513565b60038314156139ab575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600091908390811061394357613943615513565b6020026020010151905060008560200151836001018151811061396857613968615513565b6020026020010151905061397c8282614605565b8660200151848151811061399257613992615513565b60209081029190910101525050835160010184526107c9565b6004831415613a73575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110613a0657613a06615513565b60200260200101519050600087602001518560010181518110613a2b57613a2b615513565b60200260200101519050613a4182858584614664565b88602001518681518110613a5757613a57615513565b6020908102919091010152505085516001018652506107c99050565b60058314156107c9575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115613ad857613ad8614a02565b604051908082528060200260200182016040528015613b01578160200160208202803683370190505b50905060005b83811015613b565789602001518381518110613b2557613b25615513565b6020026020010151828281518110613b3f57613b3f615513565b602090810291909101015260019283019201613b07565b50600089602001518381518110613b6f57613b6f615513565b60200260200101519050613b858282888861470a565b8a602001518881518110613b9b57613b9b615513565b60209081029190910101525050875160010188525050505050505050565b60028210613c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b81613d495782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110613c8b57613c8b615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110613cc857613cc8615513565b60200260200101516040518263ffffffff1660e01b8152600401613d08919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4d9190615a40565b6001821415610dd7578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019182908110613d9057613d90615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d25573d6000803e3d6000fd5b60028210613e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182613eed5783602001518181518110613eb057613eb0615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a0823185602001518660000151815181106137f6576137f6615513565b60018314156107c95783602001518181518110613f0c57613f0c615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e8560200151866000015181518110613f4957613f49615513565b60200260200101516040518263ffffffff1660e01b8152600401613f6f91815260200190565b602060405180830381865afa158015613f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb091906152e6565b73ffffffffffffffffffffffffffffffffffffffff1684602001518281518110612f6357612f63615513565b60028210614046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b816141505782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd90920191829081106140ae576140ae615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e856020015183600101815181106140e9576140e9615513565b60200260200101518660200151846002018151811061410a5761410a615513565b60200260200101516040518363ffffffff1660e01b8152600401613d0892919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610dd7576001810160008167ffffffffffffffff81111561417857614178614a02565b6040519080825280602002602001820160405280156141a1578160200160208202803683370190505b50905060008267ffffffffffffffff8111156141bf576141bf614a02565b6040519080825280602002602001820160405280156141e8578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818101895260208901518051939450918690030191600091908390811061423857614238615513565b6020026020010151905060005b858110156142ef5788602001518184016001018151811061426857614268615513565b602002602001015185828151811061428257614282615513565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152890151805160018589018401019081106142c2576142c2615513565b60200260200101518482815181106142dc576142dc615513565b6020908102919091010152600101614245565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906143479088908890600401615c4c565b600060405180830381865afa158015614364573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526143aa9190810190615cb9565b905060005b868110156143fc578181815181106143c9576143c9615513565b60200260200101518a60200151828601815181106143e9576143e9615513565b60209081029190910101526001016143af565b50505050505050505050565b6060831561441757508161275e565b8251156144275782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac91906152d3565b60008082601214156144705783915050611bc2565b826012111561449c5750601282900361448a81600a615c40565b6144949085615697565b915050611bc2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016144cb81600a615c40565b6144949085615703565b5092915050565b60008060128314156144f15783915050611bc2565b826012111561450b575060128290036144cb81600a615c40565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161448a81600a615c40565b600081810b61454a575081611bc2565b60008260000b13156145725761456182600a615cee565b61456b9084615697565b9050611bc2565b60ff6000839003166144cb81600a615c40565b60008282018381106145975780612b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b60008183116145d0576000611bbf565b50900390565b6000826145e557506000611bc2565b828202828482816145f8576145f86156d4565b0414156145975780612b90565b60008060015b6008811161465c57600061461f868361485a565b9050600061462d868461485a565b9050600061463b83836145c0565b905061464b856001860383614907565b9450506001909201915061460b9050565b509392505050565b60008260088111156146d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ac565b6000855b858110156146fe5763ffffffff6020820290811b199890981685891b179791506001016146d6565b50959695505050505050565b835160009081908190819060015b6008811161484c5760009250828761475157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614755565b5060005b60005b8381101561480a576147838c828151811061477557614775615513565b60200260200101518461485a565b95508a86116147d557886147a25761479b868361217d565b91506147cc565b60018914156147b55761479b8683614991565b6002891480156147c3575084155b156147cc578591505b60019450614802565b89614802577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061480a565b600101614758565b508361483357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b614841866001840383614907565b955050600101614718565b509298975050505050505050565b60008160088111156148c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ac565b826148d657600091506144d5565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ac565b505060209190910290811b63ffffffff90911b19919091161790565b60008183101561218c5781611bbf565b73ffffffffffffffffffffffffffffffffffffffff8116811461254d57600080fd5b80356149ce816149a1565b919050565b6000602082840312156149e557600080fd5b813561275e816149a1565b600060a0828403121561232457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614a5457614a54614a02565b60405290565b604051610120810167ffffffffffffffff81118282101715614a5457614a54614a02565b60405160a0810167ffffffffffffffff81118282101715614a5457614a54614a02565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ae857614ae8614a02565b604052919050565b600067ffffffffffffffff821115614b0a57614b0a614a02565b5060051b60200190565b600067ffffffffffffffff821115614b2e57614b2e614a02565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000614b6d614b6884614b14565b614aa1565b9050828152838383011115614b8157600080fd5b828260208301376000602084830101529392505050565b600082601f830112614ba957600080fd5b81356020614bb9614b6883614af0565b82815260059290921b84018101918181019086841115614bd857600080fd5b8286015b84811015614bf35780358352918301918301614bdc565b509695505050505050565b600060808284031215614c1057600080fd5b614c18614a31565b9050813567ffffffffffffffff80821115614c3257600080fd5b818401915084601f830112614c4657600080fd5b81356020614c56614b6883614af0565b82815260059290921b84018101918181019088841115614c7557600080fd5b8286015b84811015614cc257803586811115614c915760008081fd5b8701603f81018b13614ca35760008081fd5b614cb48b8683013560408401614b5a565b845250918301918301614c79565b5086525085810135935082841115614cd957600080fd5b614ce587858801614b98565b8186015250505050604082013560408201526060820135606082015292915050565b600082601f830112614d1857600080fd5b611bbf83833560208501614b5a565b600060808284031215614d3957600080fd5b614d41614a31565b9050813567ffffffffffffffff80821115614d5b57600080fd5b9083019060808286031215614d6f57600080fd5b614d77614a31565b823582811115614d8657600080fd5b614d9287828601614d07565b825250602083013582811115614da757600080fd5b614db387828601614d07565b60208301525060408301359150614dc9826149a1565b81604082015260608301356060820152808452505050614deb602083016149c3565b602082015260408201356040820152614e06606083016149c3565b606082015292915050565b60008060408385031215614e2457600080fd5b823567ffffffffffffffff80821115614e3c57600080fd5b908401906101208287031215614e5157600080fd5b614e59614a5a565b823582811115614e6857600080fd5b614e7488828601614bfe565b825250602083013582811115614e8957600080fd5b614e9588828601614bfe565b602083015250604083013582811115614ead57600080fd5b614eb988828601614bfe565b604083015250614ecb606084016149c3565b6060820152614edc608084016149c3565b608082015260a083013560a082015260c083013560c082015260e083013560e0820152610100808401358183015250809450506020850135915080821115614f2357600080fd5b50614f3085828601614d27565b9150509250929050565b600060208284031215614f4c57600080fd5b5035919050565b600060a08284031215614f6557600080fd5b60405160a0810181811067ffffffffffffffff82111715614f8857614f88614a02565b6040528235614f96816149a1565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110615032577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611bc28284614ffb565b803582526020810135615056816149a1565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611bc28284615044565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000816150dc576150dc61509e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000828210156151145761511461509e565b500390565b6000821982111561512c5761512c61509e565b500190565b73ffffffffffffffffffffffffffffffffffffffff8316815260c0810161275e6020830184615044565b60005b8381101561517657818101518382015260200161515e565b838111156107c95750506000910152565b6000815180845261519f81602086016020860161515b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152615218610140860182615187565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e08701526152538282615187565b91505082604083015116610100860152606082015161012086015260408601519250615297606086018473ffffffffffffffffffffffffffffffffffffffff169052565b60608601516080860152608086015192506152ca60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b602081526000611bbf6020830184615187565b6000602082840312156152f857600080fd5b815161275e816149a1565b6000815180845260208085019450848260051b860182860160005b85811015615348578383038952615336838351615187565b9885019892509084019060010161531e565b5090979650505050505050565b600081518084526020808501945080840160005b8381101561538557815187529582019590820190600101615369565b509495945050505050565b60008151608084526153a56080850182615303565b9050602083015184820360208601526153be8282615355565b91505060408301516040850152606083015160608501528091505092915050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000835161012080606085015261541a610180850183615390565b915060208601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0808685030160808701526154568483615390565b935060408801519150808685030160a0870152506154748382615390565b925050606086015161549e60c086018273ffffffffffffffffffffffffffffffffffffffff169052565b50608086015173ffffffffffffffffffffffffffffffffffffffff811660e08601525060a08601516101008581019190915260c08701519185019190915260e086015161014085015285015161016084015273ffffffffffffffffffffffffffffffffffffffff841660408401529050612b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155745761557461509e565b5060010190565b60a08101611bc282848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152612b9060c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161275e6020830184614ffb565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156156cf576156cf61509e565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615712576157126156d4565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b805182526000602082015160a0602085015261576560a0850182615355565b90506040830151848203604086015261577e8282615303565b915050606083015184820360608601526157988282615355565b915050608083015184820360808601526152ca8282615355565b602081526000611bbf6020830184615746565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526152ca6060830184615746565b600082601f83011261580f57600080fd5b8151602061581f614b6883614af0565b82815260059290921b8401810191818101908684111561583e57600080fd5b8286015b84811015614bf35780518352918301918301615842565b600082601f83011261586a57600080fd5b8151602061587a614b6883614af0565b82815260059290921b8401810191818101908684111561589957600080fd5b8286015b84811015614bf357805167ffffffffffffffff8111156158bd5760008081fd5b8701603f810189136158cf5760008081fd5b8481015160406158e1614b6883614b14565b8281528b828486010111156158f65760008081fd5b6159058389830184870161515b565b865250505091830191830161589d565b60006020828403121561592757600080fd5b815167ffffffffffffffff8082111561593f57600080fd5b9083019060a0828603121561595357600080fd5b61595b614a7e565b8251815260208301518281111561597157600080fd5b61597d878286016157fe565b60208301525060408301518281111561599557600080fd5b6159a187828601615859565b6040830152506060830151828111156159b957600080fd5b6159c5878286016157fe565b6060830152506080830151828111156159dd57600080fd5b6159e9878286016157fe565b60808301525095945050505050565b600060208284031215615a0a57600080fd5b8151801515811461275e57600080fd5b6000815260008251615a3381600185016020870161515b565b9190910160010192915050565b600060208284031215615a5257600080fd5b5051919050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251615ae281600e85016020870161515b565b91909101600e019392505050565b60008251615b0281846020870161515b565b9190910192915050565b600082615b1b57615b1b6156d4565b500690565b600181815b80851115615b7957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615b5f57615b5f61509e565b80851615615b6c57918102915b93841c9390800290615b25565b509250929050565b600082615b9057506001611bc2565b81615b9d57506000611bc2565b8160018114615bb35760028114615bbd57615bd9565b6001915050611bc2565b60ff841115615bce57615bce61509e565b50506001821b611bc2565b5060208310610133831016604e8410600b8410161715615bfc575081810a611bc2565b615c068383615b20565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615c3857615c3861509e565b029392505050565b6000611bbf8383615b81565b604080825283519082018190526000906020906060840190828701845b82811015615c9b57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101615c69565b50505083810382850152615caf8186615355565b9695505050505050565b600060208284031215615ccb57600080fd5b815167ffffffffffffffff811115615ce257600080fd5b612b90848285016157fe565b6000611bbf60ff841683615b8156fea26469706673582212205f1b2889f19d9f0dbf5f50f5bad76f88df9741b85bcc16bf86c818cf593e961864736f6c634300080a0033"; + "0x60a06040523480156200001157600080fd5b5060405162006a3838038062006a38833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b615600806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea26469706673582212208035afdf9d7e9b64da8d93a43a75349ae515337e090521bfe881d4e52b6e40d964736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005600380380620056008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161545d620001a360003960006109bd015260006105030152600061075a01526000610781015261545d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e3314610390578063fc0c546a146103a357600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd3660046141c7565b6103ab565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461420d565b6103c8565b005b61012f61013f36600461436d565b6104b3565b61012f6101523660046144a7565b610bbc565b61015f610e08565b6040519015158152602001610113565b61012f610e1f565b61012f611013565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046144b9565b61110e565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61186c565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261280760e082015261281261010082015261281d6101208201526128286101408201526128336101608201526128a661018082015261290c6101a082015261294c6101c08201526129806101e08201526129b46102008201526129fb610220820152612a58610240820152612a91610260820152612acf610280820152612b216102a0820152612b7e6102c0820152612bb26102e0820152612be6610300820152612c18610320820152612c4a610340820152612c7c610360820152612ca9610380820152612d046103a0820152612d5a6103c0820152612db16103e0820152612e08610400820152612e3c610420820152612e66610440820152612f4d610460820152612fa96104808201526130256104a08201526130df6104c082018190526131896104e083015261050082015261320961052082015261331161054082015261342f610560808301919091528152905161011391906145a8565b600d5460ff166040516101139190614625565b600754610183565b6000806103bf6103b9611968565b846119c5565b91509150915091565b6002600d5460ff1660038111156103e1576103e16145bb565b1461044d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104af5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104af91168383611a66565b5050565b60006104bf6001611b3a565b905080156104f457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105018360800135611cc5565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f55540000000000000000000000000000000000000000006044820152606401610444565b61059d606084013543614662565b600e5560a083013561060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f300000000000000000000000000000000000000000006044820152606401610444565b8260a00135600b819055506106566040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6106ee6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106ae57905050905082816000815181106107175761071761467a565b602002602001018190525081816001815181106107365761073661467a565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107aa8a806146a9565b856040518463ffffffff1660e01b81526004016107c9939291906148ef565b6000604051808303816000875af11580156107e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261082e91908101906149a0565b905061083981611d80565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561088e604088016020890161420d565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610913606088016040890161420d565b73ffffffffffffffffffffffffffffffffffffffff908116600855865160400151161561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f53455400000000000000000000000000000000006044820152606401610444565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a0b91908e01908e0161420d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610a889190614a17565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ab391906145a8565b6020604051808303816000875af1158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190614b10565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b479033908b908590614b2d565b60405180910390a150505050508015610bb757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bd557610bd56145bb565b1415610c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f535543434553530000000000000000000000000000000000006044820152606401610444565b6003600d5460ff166003811115610c5657610c566145bb565b14610c6357610c63611e0b565b336000908152600f602090815260408083209051909291610c8691859101614c86565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cbb90614c94565b9091555060009050610cd560808301356060840135611faa565b90508060066000828254610ce99190614cc9565b92505081905550816060013560056000828254610d069190614662565b909155505060408201803590601190600090610d25906020870161420d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d6e9190614cc9565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610da59033908590614ce0565b60405180910390a1600754610dd69073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fd2565b6104af33610de8604085013584614662565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a66565b6000610e1a610e15611968565b612030565b905090565b43600e5410610e8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f5554000000000000000000000000000000000000006044820152606401610444565b6000600d5460ff166003811115610ea357610ea36145bb565b1480610ec557506001600d5460ff166003811115610ec357610ec36145bb565b145b610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e444544000000000000000000000000000000000000006044820152606401610444565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561102c5761102c6145bb565b14611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610444565b61109e610e15611968565b611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c4956450000000000000000000000000000000000000000000000006044820152606401610444565b61110c612096565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561114d5760035473ffffffffffffffffffffffffffffffffffffffff1661117b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915043101561120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b60006001544361121d9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610444565b6002600455604083015161135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d00000000000000000000000000000000000000000000006044820152606401610444565b8260600151836040015111156113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f444553495245440000000000000000000000006044820152606401610444565b60006113da611968565b90506113e581612030565b15611416576000600d5460ff166003811115611403576114036145bb565b141561141157611411612096565b61143d565b6001600d5460ff16600381111561142f5761142f6145bb565b141561143d5761143d6120f6565b6001600d5460ff166003811115611456576114566145bb565b146114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b60006114d8600554866060015161224890919063ffffffff16565b90506000806114e784846119c5565b909250905060006114f88385612248565b90508760400151811015611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b00000000000000000000000000006044820152606401610444565b87608001518211156115d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f5052494345000000000000000000000000000000000000006044820152606401610444565b60006115e28383611faa565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061163b83614d0a565b9091555050336000908152600f60209081526040808320905190929161166391859101614d43565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061169890614d0a565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116da908490614662565b9250508190555082600560008282546116f39190614cc9565b92505081905550816006600082825461170c9190614662565b9250508190555061174933308c60200151856117289190614662565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fd2565b60075461176d9073ffffffffffffffffffffffffffffffffffffffff163385611a66565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117a093929190614d92565b60405180910390a16117b187612030565b1561182b57600c546005541015611826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611833565b6118336120f6565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff166003811115611885576118856145bb565b146118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b6118f7610e15611968565b15611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61110c6120f6565b61199a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e1a906119c09073ffffffffffffffffffffffffffffffffffffffff1661225e565b61228c565b604080516020808252818301909252600091829182916020820181803683370190505090508360208201526119fc818660016123f8565b506000808660200151600288600001510381518110611a1d57611a1d61467a565b60200260200101518760200151600189600001510381518110611a4257611a4261467a565b602002602001015191509150611a588760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bb79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126cf565b60008054610100900460ff1615611bf1578160ff166001148015611b5d5750303b155b611be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b506000919050565b60005460ff808416911610611c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f30000000000000000000000000000000000000000000006044820152606401610444565b60015415611d3f57611d3f614e35565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611dab83604051602001611d979190614e64565b6040516020818303038152906040526127db565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e05576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e4a5760035473ffffffffffffffffffffffffffffffffffffffff16611e78565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150431015611f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b600060015443611f1a9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fbf8385614e8a565b611fc99190614ef6565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261100d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ab8565b60006001600554101561204557506000919050565b612060604051806020016040528060008152508360006123f8565b5060008083602001516001856000015103815181106120815761208161467a565b6020026020010151119050611fcc8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161210c57600361210f565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115612153576121536145bb565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612189929190614f31565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121fc57600080fd5b505af1158015612210573d6000803e3d6000fd5b5050505081156104af576009546006546008546104af9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a66565b60008183106122575781611fc9565b5090919050565b6060611fcc8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61362c565b6122be6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123245761232461422a565b60405190808252806020026020018201604052801561234d578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123845761238461422a565b6040519080825280602002602001820160405280156123ad578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123e75781602082026020018401528151602001820191506001810190506123c0565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156126b5576003890198508886015180601f1a975061ffff8160081c16985050600688101561262d578761247b57866020028401518252602082019150612640565b600188141561249857602087028301518252602082019150612640565b6002881415612525578c51876020021061250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610444565b866020026020018d01518252602082019150612640565b600388141561256e57600061255c604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612640565b600488141561258a576125838d8d848a613714565b9150612640565b6060876125b8578c6040516020016125a29190614f96565b6040516020818303038152906040529050612617565b60018814156125d1576125ca8d613884565b9050612617565b60028814156125ed576020808e01516040516125a2920161506c565b6003881415612617578c516040805160208101929092520160405160208183030381529060405290505b80511561262757612627816139c1565b50612640565b8761263c888463ffffffff8416565b9250505b60208c0151518c5111156126b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610444565b612436565b6020838303048c52509750505050505050505b9392505050565b6000612731826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a539092919063ffffffff16565b805190915015610bb7578080602001905181019061274f91906150a2565b610bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610444565b60608151826040516020016127f19291906150c4565b6040516020818303038152906040529050919050565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612893858a613a62565b90611faa565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612906858a613a62565b90613ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613a62565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613af8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613b56565b600060208302820380516000602083015b858110156129ed57805183019150828210156129e057600080fd5b90915081906020016129c5565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a3957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612a518382613ba1565b9250612a0b565b600060208302820380516000602083015b858110156129ed5780518303915082821115612a8457600080fd5b9091508190602001612a69565b6020828102820380516000928201835b8582108015612ab05750826000105b156129ed57508051602090910190612ac88382613bdc565b9250612aa1565b60006020830282038051600080602084015b86811015612b12578315612b0a578051925082840291508284830414612b0657600080fd5b8193505b602001612ae1565b50505081526020019392505050565b6020828102820380516000928201835b8582108015612b5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612b778382613bf2565b9250612b31565b600060208302820380516000602083015b858110156129ed578051915081612ba557600080fd5b9181900491602001612b8f565b600060208302820380516000602083015b858110156129ed578051915081612bd957600080fd5b9181900691602001612bc3565b6020828102820380516000928201835b858210156129ed57508051602090910190612c11818461527b565b9250612bf6565b6020828102820380516000928201835b858210156129ed5750805182811015612c3f578092505b602082019150612c28565b6020828102820380516000928201835b858210156129ed5750805182811115612c71578092505b602082019150612c5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015612e31578051612e295760008252612e31565b602001612e12565b506020019392505050565b6000602083028203805b83811015612e315780518015612e5d578252612e31565b50602001612e46565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612f29573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128999190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128998383613c21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561301685858585613c80565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156130535761305361422a565b60405190808252806020026020018201604052801561307c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156130b857815181602001860152602082019150602081019050613096565b505051905060006130cb83838989613d26565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612f0c565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129409190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190614b10565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa1580156133fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134219190615287565b909452509395945050505050565b60008060008467ffffffffffffffff81111561344d5761344d61422a565b604051908082528060200260200182016040528015613476578160200160208202803683370190505b50905060008567ffffffffffffffff8111156134945761349461422a565b6040519080825280602002602001820160405280156134bd578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156135125782518152602092830192016134fa565b5050602088028101602084015b8183101561353757825181526020928301920161351f565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061359190879087906004016152a0565b600060405180830381865afa1580156135ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135f49190810190615303565b9050846020820160208a0281015b8082101561361d578151835260209283019290910190613602565b50909998505050505050505050565b6060833b8061364b5750506040805160208101909152600081526126c8565b808411156136695750506040805160208101909152600081526126c8565b838310156136b4576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610444565b83830384820360008282106136c957826136cb565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261375357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061379e565b826001141561377757506fffffffffffffffffffffffffffffffff9050608061379e565b8260021415613793575067ffffffffffffffff9050604061379e565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156137c1576137c161422a565b6040519080825280602002602001820160405280156137ea578160200160208202803683370190505b50905060208082019083028a03815b8b8210156138115781518152602091820191016137f9565b505060608b015160808c015160209081029091010160005b61010081101561386f5760208502830182845b82811015613858578051841c8a1682526020918201910161383c565b5050506138668e8e8b6123f8565b9b508501613829565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016138d0919061506c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261390c92916020016153a9565b604051602081830303815290604052905060005b8560400151518110156139b85781866040015182815181106139445761394461467a565b60200260200101515160001b876040015183815181106139665761396661467a565b6020026020010151604051602001613980939291906153cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613920565b50949350505050565b613a50816040516024016139d591906145a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613e76565b50565b606061387c8484600085613e97565b6000808260121415613a775783915050611fcc565b8260121115613aa357506012829003613a9181600a61527b565b613a9b9085614e8a565b915050611fcc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613ad281600a61527b565b613a9b9085614ef6565b5092915050565b600081611fbf670de0b6b3a764000085614e8a565b6000806012831415613b0d5783915050611fcc565b8260121115613b2757506012829003613ad281600a61527b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613a9181600a61527b565b600081810b613b66575081611fcc565b60008260000b1315613b8e57613b7d82600a615406565b613b879084614e8a565b9050611fcc565b60ff600083900316613ad281600a61527b565b6000828201838110613bb3578061387c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000818311613bec576000611fc9565b50900390565b600082613c0157506000611fcc565b82820282848281613c1457613c14614ec7565b041415613bb3578061387c565b60008060015b60088111613c78576000613c3b868361402d565b90506000613c49868461402d565b90506000613c578383613bdc565b9050613c678560018603836140da565b94505060019092019150613c279050565b509392505050565b6000826008811115613cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b6000855b85811015613d1a5763ffffffff6020820290811b199890981685891b17979150600101613cf2565b50959695505050505050565b835160009081908190819060015b60088111613e6857600092508287613d6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613d71565b5060005b60005b83811015613e2657613d9f8c8281518110613d9157613d9161467a565b60200260200101518461402d565b95508a8611613df15788613dbe57613db78683612248565b9150613de8565b6001891415613dd157613db78683614164565b600289148015613ddf575084155b15613de8578591505b60019450613e1e565b89613e1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613e26565b600101613d74565b5083613e4f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613e5d8660018403836140da565b955050600101613d34565b509298975050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015613f29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610444565b73ffffffffffffffffffffffffffffffffffffffff85163b613fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610444565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613fd09190615415565b60006040518083038185875af1925050503d806000811461400d576040519150601f19603f3d011682016040523d82523d6000602084013e614012565b606091505b5091509150614022828286614174565b979650505050505050565b600081600881111561409b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b826140a95760009150613adc565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310156122575781611fc9565b606083156141835750816126c8565b8251156141935782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044491906145a8565b6000602082840312156141d957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613a5057600080fd5b8035611cc0816141e0565b60006020828403121561421f57600080fd5b81356126c8816141e0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561427c5761427c61422a565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142c9576142c961422a565b604052919050565b600067ffffffffffffffff8211156142eb576142eb61422a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261432857600080fd5b813561433b614336826142d1565b614282565b81815284602083860101111561435057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561438057600080fd5b823567ffffffffffffffff8082111561439857600080fd5b9084019060e082870312156143ac57600080fd5b909250602084013590808211156143c257600080fd5b90840190608082870312156143d657600080fd5b6143de614259565b8235828111156143ed57600080fd5b8301608081890312156143ff57600080fd5b614407614259565b81358481111561441657600080fd5b6144228a828501614317565b82525060208201358481111561443757600080fd5b6144438a828501614317565b60208301525060408201359350614459846141e0565b83604082015260608201356060820152808352505061447a60208401614202565b60208201526040830135604082015261449560608401614202565b60608201528093505050509250929050565b600060a08284031215611e0557600080fd5b600060a082840312156144cb57600080fd5b60405160a0810181811067ffffffffffffffff821117156144ee576144ee61422a565b60405282356144fc816141e0565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561454d578181015183820152602001614535565b8381111561100d5750506000910152565b60008151808452614576816020860160208601614532565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc9602083018461455e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614621577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611fcc82846145ea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561467557614675614633565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126146dd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261471c57600080fd5b830160208101925035905067ffffffffffffffff81111561473c57600080fd5b8060051b3603831315611a5f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156147c957600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016147f683846146e7565b604086528281845260608701905060608260051b88010193508260005b838110156148c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261487457600080fd5b85018035602067ffffffffffffffff82111561488f57600080fd5b81360388131561489e57600080fd5b6148ab898383860161474e565b98509485019493909301925050600101614813565b50505050506148d260208401846146e7565b85830360208701526148e5838284614797565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261491f828501876147e6565b84810360408681019190915286518083528388019284019060005b81811015614990578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161493a565b50909a9950505050505050505050565b6000602082840312156149b257600080fd5b815167ffffffffffffffff8111156149c957600080fd5b8201601f810184136149da57600080fd5b80516149e8614336826142d1565b8181528560208385010111156149fd57600080fd5b614a0e826020830160208601614532565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614a5e61014086018261455e565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614a99828261455e565b91505082604083015116610100860152606082015161012086015260408601519250614add606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614a0e60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614b2257600080fd5b81516126c8816141e0565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614b8157600080fd5b60e06060840152614b9861014084018683016147e6565b9050614ba660208601614202565b73ffffffffffffffffffffffffffffffffffffffff166080840152614bcd60408601614202565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c08501356101208401528091505061387c604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614c4c816141e0565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611fcc8284614c3a565b600081614ca357614ca3614633565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614cdb57614cdb614633565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126c86020830184614c3a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d3c57614d3c614633565b5060010190565b60a08101611fcc82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a083015261387c60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000815260008251614e7d816001850160208701614532565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ec257614ec2614633565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126c860208301846145ea565b600081518084526020808501945080840160005b83811015614f8b57815187529582019590820190600101614f6f565b509495945050505050565b600060208083528351818401528084015160a06040850152614fbb60c0850182614f5b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615034578487830301845261502282875161455e565b95880195938801939150600101615008565b5060608a01519650838982030160808a01526150508188614f5b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156150965781518552938201939082019060010161507a565b50929695505050505050565b6000602082840312156150b457600080fd5b815180151581146126c857600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161514d81600e850160208701614532565b91909101600e019392505050565b600181815b808511156151b457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561519a5761519a614633565b808516156151a757918102915b93841c9390800290615160565b509250929050565b6000826151cb57506001611fcc565b816151d857506000611fcc565b81600181146151ee57600281146151f857615214565b6001915050611fcc565b60ff84111561520957615209614633565b50506001821b611fcc565b5060208310610133831016604e8410600b8410161715615237575081810a611fcc565b615241838361515b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561527357615273614633565b029392505050565b6000611fc983836151bc565b60006020828403121561529957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156152ef57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016152bd565b505050838103828501526148e58186614f5b565b6000602080838503121561531657600080fd5b825167ffffffffffffffff8082111561532e57600080fd5b818501915085601f83011261534257600080fd5b8151818111156153545761535461422a565b8060051b9150615365848301614282565b818152918301840191848101908884111561537f57600080fd5b938501935b8385101561539d57845182529385019390850190615384565b98975050505050505050565b828152600082516153c1816020850160208701614532565b919091016020019392505050565b600084516153e1818460208901614532565b820184815283516153f9816020808501908801614532565b0160200195945050505050565b6000611fc960ff8416836151bc565b600082516146dd81846020870161453256fea2646970667358221220acdec4358db66d8ec11c160884f6e44c5ff896a1cabd5caff75db69e3ccd8e7364736f6c634300080a0033"; type SaleFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleReentrant__factory.ts b/src/typechain/factories/SaleReentrant__factory.ts index b4258bb..9bc29ad 100644 --- a/src/typechain/factories/SaleReentrant__factory.ts +++ b/src/typechain/factories/SaleReentrant__factory.ts @@ -418,7 +418,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220b8076aac98553c4a5d4d00f3e8e86b096d4e91f7f569fc47783369ca7105571964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea26469706673582212208d99fcb1f8e717392ce551f4be0931aa71e4d3443e27c6a3d90c6c37eb9cbf5864736f6c634300080a0033"; type SaleReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Sale__factory.ts b/src/typechain/factories/Sale__factory.ts index 563b9e9..063d2d5 100644 --- a/src/typechain/factories/Sale__factory.ts +++ b/src/typechain/factories/Sale__factory.ts @@ -25,6 +25,11 @@ const _abi = [ name: "redeemableERC20Factory", type: "address", }, + { + internalType: "address", + name: "vmStateBuilder", + type: "address", + }, ], internalType: "struct SaleConstructorConfig", name: "config_", @@ -165,6 +170,11 @@ const _abi = [ name: "redeemableERC20Factory", type: "address", }, + { + internalType: "address", + name: "vmStateBuilder", + type: "address", + }, ], indexed: false, internalType: "struct SaleConstructorConfig", @@ -255,73 +265,9 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "canStartStateConfig", - type: "tuple", - }, - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "canEndStateConfig", - type: "tuple", - }, - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", - name: "calculatePriceStateConfig", + name: "vmStateConfig", type: "tuple", }, { @@ -330,7 +276,7 @@ const _abi = [ type: "address", }, { - internalType: "contract IERC20", + internalType: "address", name: "reserve", type: "address", }, @@ -370,6 +316,19 @@ const _abi = [ name: "Initialize", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -416,58 +375,6 @@ const _abi = [ name: "Refund", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, { anonymous: false, inputs: [ @@ -538,29 +445,21 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "units_", + name: "targetUnits_", type: "uint256", }, ], - name: "calculatePrice", + name: "calculateBuy", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "canEnd", - outputs: [ { - internalType: "bool", + internalType: "uint256", name: "", - type: "bool", + type: "uint256", }, ], stateMutability: "view", @@ -568,7 +467,7 @@ const _abi = [ }, { inputs: [], - name: "canStart", + name: "canLive", outputs: [ { internalType: "bool", @@ -599,6 +498,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -615,73 +527,9 @@ const _abi = [ name: "constants", type: "uint256[]", }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, ], internalType: "struct StateConfig", - name: "canStartStateConfig", - type: "tuple", - }, - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "canEndStateConfig", - type: "tuple", - }, - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "calculatePriceStateConfig", + name: "vmStateConfig", type: "tuple", }, { @@ -690,7 +538,7 @@ const _abi = [ type: "address", }, { - internalType: "contract IERC20", + internalType: "address", name: "reserve", type: "address", }, @@ -847,6 +695,31 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "timeout", @@ -870,7 +743,7 @@ const _abi = [ ]; const _bytecode = - "0x6101006040523480156200001257600080fd5b5060405162005f3d38038062005f3d833981016040819052620000359162000126565b6001600481905550600280600260066007600b60076004620000589190620001a2565b620000649190620001a2565b620000709190620001a2565b6200007c9190620001a2565b620000889190620001a2565b620000949190620001a2565b620000a09190620001a2565b620000ad906005620001a2565b6080908152815160a0526020808301805160c052604080850180516001600160a01b0390811660e0528251338152875195810195909552925191840191909152511660608201527febb7bbe68143e887fe137da12458b32f7aec9b8aa0030b338fb7758a798daf9a910160405180910390a150620001c9565b6000606082840312156200013957600080fd5b604051606081016001600160401b03811182821017156200016a57634e487b7160e01b600052604160045260246000fd5b604090815283518252602080850151908301528301516001600160a01b03811681146200019657600080fd5b60408201529392505050565b60008219821115620001c457634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c05160e051615d336200020a6000396000610c87015260006108bb01526000610956015260008181612552015261258d0152615d336000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c8063be9a65551161008c578063ec30903811610066578063ec309038146101bf578063efbe1c1c146101c7578063f9020e33146101cf578063fc0c546a146101fa57600080fd5b8063be9a655514610165578063cd3293de1461016d578063d48827e9146101ac57600080fd5b80637939b0fe116100bd5780637939b0fe14610114578063abf3969e14610127578063ae1042651461014457600080fd5b806315a0ea6a146100e4578063504d14f8146100f957806370dea79a1461010c575b600080fd5b6100f76100f23660046149d3565b610218565b005b6100f76101073660046149f0565b61031b565b6100f7610597565b6100f7610122366004614e11565b6107cf565b61012f610ddc565b60405190151581526020015b60405180910390f35b610157610152366004614f3a565b610ea5565b60405190815260200161013b565b6100f7610f2e565b600c5473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013b565b6100f76101ba366004614f53565b611010565b61012f611700565b6100f761175d565b600c5474010000000000000000000000000000000000000000900460ff1660405161013b9190615036565b60055473ffffffffffffffffffffffffffffffffffffffff16610187565b6002600c5474010000000000000000000000000000000000000000900460ff16600381111561024957610249614fcc565b146102b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526012602052604090205480156103175773ffffffffffffffffffffffffffffffffffffffff808316600090815260126020526040812055600c546103179116838361192d565b5050565b6002600c5474010000000000000000000000000000000000000000900460ff16600381111561034c5761034c614fcc565b14156103b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f5355434345535300000000000000000000000000000000000060448201526064016102ac565b6003600c5474010000000000000000000000000000000000000000900460ff1660038111156103e5576103e5614fcc565b146103f2576103f2611a01565b336000908152601060209081526040808320905190929161041591859101615090565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061044a906150cd565b909155506000905061046460808301356060840135611ba0565b905080600f60008282546104789190615102565b925050819055508160600135600e60008282546104959190615119565b9091555050604082018035906012906000906104b490602087016149d3565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546104fd9190615102565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a324906105349033908590615131565b60405180910390a16005546105659073ffffffffffffffffffffffffffffffffffffffff1633306060860135611bc8565b61031733610577604085013584615119565b600c5473ffffffffffffffffffffffffffffffffffffffff16919061192d565b43600d5410610602576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f55540000000000000000000000000000000000000060448201526064016102ac565b6000600c5474010000000000000000000000000000000000000000900460ff16600381111561063357610633614fcc565b148061066d57506001600c5474010000000000000000000000000000000000000000900460ff16600381111561066b5761066b614fcc565b145b6106d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016102ac565b6000600e55600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740300000000000000000000000000000000000000001790556040805133815290517f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809181900360200190a16005546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156107b557600080fd5b505af11580156107c9573d6000803e3d6000fd5b50505050565b600054610100900460ff166107ea5760005460ff16156107ee565b303b155b61087a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102ac565b600054610100900460ff161580156108b957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b7f00000000000000000000000000000000000000000000000000000000000000008360c001511115610947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d41585f434f4f4c444f574e000000000000000000000000000000000000000060448201526064016102ac565b6109548360c00151611c26565b7f00000000000000000000000000000000000000000000000000000000000000008360a0015111156109e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f555400000000000000000000000000000000000000000060448201526064016102ac565b60a08301516109f19043615119565b600d5560e0830151610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f3000000000000000000000000000000000000000000060448201526064016102ac565b60e0830151600a558251610a7b90610a7690611ce1565b611e3d565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610acb610a768460200151611ce1565b600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610b1b610a768460400151611ce1565b600980547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155606085015160068054909216908316179055610100840151600b55600c8054608086015183167fffffffffffffffffffffff0000000000000000000000000000000000000000009091161790558251604001511615610c1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f534554000000000000000000000000000000000060448201526064016102ac565b8151306040918201528251606090810151600e55815160a08101835260808087015173ffffffffffffffffffffffffffffffffffffffff908116835286516020808501919091528088015182168487015285880151848601529387015181169183019190915292516000937f00000000000000000000000000000000000000000000000000000000000000001692632ea72a4992610cba929091016151d1565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ce591906152d3565b6020604051808303816000875af1158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2891906152e6565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040519091507f887b6fed5d41b64af6f50c6d1010798acb0e93f4adea8213a06574ea968e5d2590610d9f903390879085906153df565b60405180910390a1508015610dd757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b60006001600c5474010000000000000000000000000000000000000000900460ff166003811115610e0f57610e0f614fcc565b1415610e9f576001600e541015610e265750600190565b600854600090610e4b9073ffffffffffffffffffffffffffffffffffffffff16611eab565b9050610e6860405180602001604052806000815250826000611ef9565b6000816020015160018360000151610e809190615102565b81518110610e9057610e90615513565b60200260200101511191505090565b50600090565b6009546000908190610ecc9073ffffffffffffffffffffffffffffffffffffffff16611eab565b9050610efb83604051602001610ee491815260200190565b604051602081830303815290604052826000611ef9565b60208101518151610f0e90600190615102565b81518110610f1e57610f1e615513565b6020026020010151915050919050565b610f36611700565b610f9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f43414e545f53544152540000000000000000000000000000000000000000000060448201526064016102ac565b600c80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790556040805133815290517f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659181900360200190a1565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561104f5760035473ffffffffffffffffffffffffffffffffffffffff1661107d565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915043101561110f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102ac565b60006001544361111f9190615119565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156111f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102ac565b60026004556040830151611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d000000000000000000000000000000000000000000000060448201526064016102ac565b8260600151836040015111156112d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f4445534952454400000000000000000000000060448201526064016102ac565b6001600c5474010000000000000000000000000000000000000000900460ff16600381111561130357611303614fcc565b1461136a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102ac565b6000611385600e54856060015161217d90919063ffffffff16565b905083604001518110156113f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b000000000000000000000000000060448201526064016102ac565b600061140082610ea5565b90508460800151811115611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f50524943450000000000000000000000000000000000000060448201526064016102ac565b600061147c8284611ba0565b6040805160a081018252601180548083528a5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528b01519383019390935260608201879052608082018690529293509160006114d583615542565b909155505033600090815260106020908152604080832090519092916114fd9185910161557b565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061153290615542565b9091555050602080880151885173ffffffffffffffffffffffffffffffffffffffff166000908152601290925260408220805491929091611574908490615119565b9250508190555083600e600082825461158d9190615102565b9250508190555081600f60008282546115a69190615119565b925050819055506115e333308960200151856115c29190615119565b600c5473ffffffffffffffffffffffffffffffffffffffff16929190611bc8565b6005546116079073ffffffffffffffffffffffffffffffffffffffff16338661192d565b6001600e54101561161f5761161a61175d565b61168f565b600b54600e54101561168f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a3388836040516116c2939291906155ca565b60405180910390a1505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050565b600080600c5474010000000000000000000000000000000000000000900460ff16600381111561173257611732614fcc565b1415610e9f57600754600090610e4b9073ffffffffffffffffffffffffffffffffffffffff16611eab565b611765610ddc565b6117cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f43414e545f454e4400000000000000000000000000000000000000000000000060448201526064016102ac565b600a54600f5410156000816117e15760036117e4565b60025b6000600e55600c805491925082917fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000083600381111561183c5761183c614fcc565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd338260405161187292919061566d565b60405180910390a16005546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156118e557600080fd5b505af11580156118f9573d6000803e3d6000fd5b50505050811561031757600654600f54600c546103179273ffffffffffffffffffffffffffffffffffffffff918216929116905b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610dd79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612193565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611a405760035473ffffffffffffffffffffffffffffffffffffffff16611a6e565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150431015611b00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102ac565b600060015443611b109190615119565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611bb58385615697565b611bbf9190615703565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526107c99085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161197f565b60008111611c90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f300000000000000000000000000000000000000000000060448201526064016102ac565b60015415611ca057611ca0615717565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b611d136040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151611d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f534f5552434553000000000000000000000000000000000000000000000060448201526064016102ac565b6040518060a0016040528060008152602001836040015167ffffffffffffffff811115611dab57611dab614a02565b604051908082528060200260200182016040528015611dd4578160200160208202803683370190505b5081526020018360000151815260200183602001518152602001836060015167ffffffffffffffff811115611e0b57611e0b614a02565b604051908082528060200260200182016040528015611e34578160200160208202803683370190505b50905292915050565b600080611e6883604051602001611e5491906157b2565b60405160208183030381529060405261229f565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd338285604051611e9d939291906157c5565b60405180910390a192915050565b611edd6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b611ee68261232a565b806020019051810190611bc29190615915565b60208201515182511115611f69576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102ac565b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b84881015612170576002880197508784015180601e1a975080601f1a96505060058710156120ef576001871415612007578160808716611fd25750825b607f871681518110611fe357600080fd5b8b516020820260200183015160208202602001850152600181018d525050506120fb565b600287141561203e57895180871061201e57600080fd5b6020870260200182015160208202602001830152600181018b52506120fb565b6003871415612057576120528b8b88612358565b6120fb565b6004871415612088576120528a60405160200161207491906157b2565b6040516020818303038152906040526124be565b86612052576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f564544000000000000000000000000000000000000000060448201526064016102ac565b6120fb8b8b8989612550565b60208a0151518a51111561216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102ac565b611f95565b5050505050505050505050565b600081831061218c5781611bbf565b5090919050565b60006121f5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661274c9092919063ffffffff16565b805190915015610dd7578080602001905181019061221391906159f8565b610dd7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102ac565b6000806122ca836040516020016122b69190615a1a565b604051602081830303815290604052612765565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216612324576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060611bc28260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612791565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff8111156123bc576123bc614a02565b6040519080825280602002602001820160405280156123e5578160200160208202803683370190505b50905060005b8281101561243c578760200151818960000151018151811061240f5761240f615513565b602002602001015182828151811061242957612429615513565b60209081029190910101526001016123eb565b5060005b6101008110156124b35760005b838110156124a0578482860384838151811061246b5761246b615513565b6020026020010151901b901c8960800151828151811061248d5761248d615513565b602090810291909101015260010161244d565b506124ac898988611ef9565b8401612440565b505050505050505050565b61254d816040516024016124d291906152d3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612879565b50565b7f000000000000000000000000000000000000000000000000000000000000000082101561258b5761258683600584038361289a565b6107c9565b7f0000000000000000000000000000000000000000000000000000000000000000820391506005821061261a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b8161264a57600e54602084015184518151811061263957612639615513565b602002602001018181525050612740565b600182141561266d57600f54602084015184518151811061263957612639615513565b60028214156126bb5760008480602001905181019061268c9190615a40565b90508084602001518560000151815181106126a9576126a9615513565b60200260200101818152505050612740565b60038214156126f75760055460208401518451815173ffffffffffffffffffffffffffffffffffffffff90931692811061263957612639615513565b600482141561274057600c5460208401518451815173ffffffffffffffffffffffffffffffffffffffff90931692811061273357612733615513565b6020026020010181815250505b50508051600101905250565b606061275b8484600085612a00565b90505b9392505050565b606081518260405160200161277b929190615a59565b6040516020818303038152906040529050919050565b6060833b806127b057505060408051602081019091526000815261275e565b808411156127ce57505060408051602081019091526000815261275e565b83831015612819576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102ac565b838303848203600082821061282e5782612830565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60048210156128ae57610dd7838383612b98565b601d82101561293157600b8210156128ce57610dd7836004840383612cae565b601682101561290457610dd7837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5840183612fdc565b610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffea840183613475565b602382101561296757610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe38401836136e5565b602582101561299d57610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd840183613bb9565b60278210156129d357610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdb840183613de2565b610dd7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9840183613fdc565b606082471015612a92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102ac565b73ffffffffffffffffffffffffffffffffffffffff85163b612b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102ac565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b399190615af0565b60006040518083038185875af1925050503d8060008114612b76576040519150601f19603f3d011682016040523d82523d6000602084013e612b7b565b606091505b5091509150612b8b828286614408565b925050505b949350505050565b60048210612c02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b81612c3357438360200151846000015181518110612c2257612c22615513565b602002602001018181525050612ca3565b6001821415612c5757428360200151846000015181518110612c2257612c22615513565b6002821415612c7b57602083015183518151339291908110612c2257612c22615513565b602083015183518151309291908110612c9657612c96615513565b6020026020010181815250505b505080516001019052565b60078210612d18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b6002821015612e645782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182612dc35783602001518160010181518110612d6357612d63615513565b6020026020010151612d9b8386602001518481518110612d8557612d85615513565b602002602001015161445b90919063ffffffff16565b0284602001518281518110612db257612db2615513565b602002602001018181525050612e38565b6001831415612e385783602001518160010181518110612de557612de5615513565b6020026020010151612e078386602001518481518110612d8557612d85615513565b81612e1457612e146156d4565b0484602001518281518110612e2b57612e2b615513565b6020026020010181815250505b5082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff018352505050565b6005821015612f755782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016002831415612edb57612eb48285602001518381518110612d8557612d85615513565b84602001518281518110612eca57612eca615513565b6020026020010181815250506107c9565b6003831415612f1457612eb48285602001518381518110612efe57612efe615513565b60200260200101516144dc90919063ffffffff16565b60048314156107c957612f4d8285602001518381518110612f3757612f37615513565b602002602001015161453a90919063ffffffff16565b84602001518281518110612f6357612f63615513565b60200260200101818152505050505050565b6005821415612fb757670de0b6b3a76400008360200151846000015181518110612fa157612fa1615513565b6020908102919091010152505080516001019052565b6006821415610dd75760128360200151846000015181518110612c9657612c96615513565b600b8210613046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b825160208401518051838303927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01918391600091908390811061308c5761308c615513565b6020026020010151905060008614156130e4575b828210156130df5760208701518051600190930192839081106130c5576130c5615513565b6020026020010151816130d89190615119565b90506130a0565b613446565b6001861415613160575b828210801561311c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156130df5781806001019250506131598760200151838151811061314257613142615513565b60200260200101518261458590919063ffffffff16565b90506130ee565b60028614156131a9575b828210156130df57602087015180516001909301928390811061318f5761318f615513565b6020026020010151816131a29190615102565b905061316a565b6003861415613206575b82821080156131c25750806000105b156130df5781806001019250506131ff876020015183815181106131e8576131e8615513565b6020026020010151826145c090919063ffffffff16565b90506131b3565b600486141561324f575b828210156130df57602087015180516001909301928390811061323557613235615513565b6020026020010151816132489190615697565b9050613210565b60058614156132cb575b828210801561328757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81105b156130df5781806001019250506132c4876020015183815181106132ad576132ad615513565b6020026020010151826145d690919063ffffffff16565b9050613259565b6006861415613314575b828210156130df5760208701518051600190930192839081106132fa576132fa615513565b60200260200101518161330d9190615703565b90506132d5565b600786141561335d575b828210156130df57602087015180516001909301928390811061334357613343615513565b6020026020010151816133569190615b0c565b905061331e565b60088614156133a6575b828210156130df57602087015180516001909301928390811061338c5761338c615513565b60200260200101518161339f9190615c40565b9050613367565b60098614156133f85760005b838310156133f25760208801518051600190940193849081106133d7576133d7615513565b60200260200101519050818110156133ed578091505b6133b2565b50613446565b600a8614156134465760005b8383101561344457602088015180516001909401938490811061342957613429615513565b602002602001015190508181111561343f578091505b613404565b505b808760200151858151811061345d5761345d615513565b60209081029190910101525050506001019092525050565b600782106134df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b82516020808501518183020101838015613528576001811461355f57600281146135d85760038114613600576004811461362857600581146136505760068114613697576136dd565b8261353257600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820180511590526136dd565b600383101561356d57600080fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe830186527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08201805180156135c957602082015182526135d1565b604082015182525b50506136dd565b60028310156135e657600080fd5b6001830386526040820360208101518151148152506136dd565b600283101561360e57600080fd5b6001830386526040820360208101518151108152506136dd565b600283101561363657600080fd5b6001830386526040820360208101518151118152506136dd565b8383101561365d57600080fd5b8315613692576001840383038652602084028203805b838110156135d157805161368a57600082526135d1565b602001613673565b6136dd565b838310156136a457600080fd5b83156136dd576001840383038652602084028203805b838110156136da57805180156136d15782526136da565b506020016136ba565b50505b505050505050565b6006821061374f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b600082613877575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90920191829081106137ba576137ba615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea31856020015183600101815181106137f6576137f6615513565b60200260200101516040518263ffffffff1660e01b8152600401613836919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613853573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb49190615a40565b60018314156138d2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84602001518560000151815181106138bb576138bb615513565b6020908102919091010152835160010184526107c9565b60028314156138f757600084602001518560000151815181106138bb576138bb615513565b60038314156139ab575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600091908390811061394357613943615513565b6020026020010151905060008560200151836001018151811061396857613968615513565b6020026020010151905061397c8282614605565b8660200151848151811061399257613992615513565b60209081029190910101525050835160010184526107c9565b6004831415613a73575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110613a0657613a06615513565b60200260200101519050600087602001518560010181518110613a2b57613a2b615513565b60200260200101519050613a4182858584614664565b88602001518681518110613a5757613a57615513565b6020908102919091010152505085516001018652506107c99050565b60058314156107c9575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115613ad857613ad8614a02565b604051908082528060200260200182016040528015613b01578160200160208202803683370190505b50905060005b83811015613b565789602001518381518110613b2557613b25615513565b6020026020010151828281518110613b3f57613b3f615513565b602090810291909101015260019283019201613b07565b50600089602001518381518110613b6f57613b6f615513565b60200260200101519050613b858282888861470a565b8a602001518881518110613b9b57613b9b615513565b60209081029190910101525050875160010188525050505050505050565b60028210613c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b81613d495782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110613c8b57613c8b615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110613cc857613cc8615513565b60200260200101516040518263ffffffff1660e01b8152600401613d08919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015613d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4d9190615a40565b6001821415610dd7578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019182908110613d9057613d90615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613d25573d6000803e3d6000fd5b60028210613e4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182613eed5783602001518181518110613eb057613eb0615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a0823185602001518660000151815181106137f6576137f6615513565b60018314156107c95783602001518181518110613f0c57613f0c615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e8560200151866000015181518110613f4957613f49615513565b60200260200101516040518263ffffffff1660e01b8152600401613f6f91815260200190565b602060405180830381865afa158015613f8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fb091906152e6565b73ffffffffffffffffffffffffffffffffffffffff1684602001518281518110612f6357612f63615513565b60028210614046576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102ac565b816141505782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd90920191829081106140ae576140ae615513565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e856020015183600101815181106140e9576140e9615513565b60200260200101518660200151846002018151811061410a5761410a615513565b60200260200101516040518363ffffffff1660e01b8152600401613d0892919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610dd7576001810160008167ffffffffffffffff81111561417857614178614a02565b6040519080825280602002602001820160405280156141a1578160200160208202803683370190505b50905060008267ffffffffffffffff8111156141bf576141bf614a02565b6040519080825280602002602001820160405280156141e8578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818101895260208901518051939450918690030191600091908390811061423857614238615513565b6020026020010151905060005b858110156142ef5788602001518184016001018151811061426857614268615513565b602002602001015185828151811061428257614282615513565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152890151805160018589018401019081106142c2576142c2615513565b60200260200101518482815181106142dc576142dc615513565b6020908102919091010152600101614245565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906143479088908890600401615c4c565b600060405180830381865afa158015614364573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526143aa9190810190615cb9565b905060005b868110156143fc578181815181106143c9576143c9615513565b60200260200101518a60200151828601815181106143e9576143e9615513565b60209081029190910101526001016143af565b50505050505050505050565b6060831561441757508161275e565b8251156144275782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102ac91906152d3565b60008082601214156144705783915050611bc2565b826012111561449c5750601282900361448a81600a615c40565b6144949085615697565b915050611bc2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016144cb81600a615c40565b6144949085615703565b5092915050565b60008060128314156144f15783915050611bc2565b826012111561450b575060128290036144cb81600a615c40565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161448a81600a615c40565b600081810b61454a575081611bc2565b60008260000b13156145725761456182600a615cee565b61456b9084615697565b9050611bc2565b60ff6000839003166144cb81600a615c40565b60008282018381106145975780612b90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b60008183116145d0576000611bbf565b50900390565b6000826145e557506000611bc2565b828202828482816145f8576145f86156d4565b0414156145975780612b90565b60008060015b6008811161465c57600061461f868361485a565b9050600061462d868461485a565b9050600061463b83836145c0565b905061464b856001860383614907565b9450506001909201915061460b9050565b509392505050565b60008260088111156146d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ac565b6000855b858110156146fe5763ffffffff6020820290811b199890981685891b179791506001016146d6565b50959695505050505050565b835160009081908190819060015b6008811161484c5760009250828761475157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614755565b5060005b60005b8381101561480a576147838c828151811061477557614775615513565b60200260200101518461485a565b95508a86116147d557886147a25761479b868361217d565b91506147cc565b60018914156147b55761479b8683614991565b6002891480156147c3575084155b156147cc578591505b60019450614802565b89614802577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061480a565b600101614758565b508361483357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b614841866001840383614907565b955050600101614718565b509298975050505050505050565b60008160088111156148c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ac565b826148d657600091506144d5565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ac565b505060209190910290811b63ffffffff90911b19919091161790565b60008183101561218c5781611bbf565b73ffffffffffffffffffffffffffffffffffffffff8116811461254d57600080fd5b80356149ce816149a1565b919050565b6000602082840312156149e557600080fd5b813561275e816149a1565b600060a0828403121561232457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614a5457614a54614a02565b60405290565b604051610120810167ffffffffffffffff81118282101715614a5457614a54614a02565b60405160a0810167ffffffffffffffff81118282101715614a5457614a54614a02565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614ae857614ae8614a02565b604052919050565b600067ffffffffffffffff821115614b0a57614b0a614a02565b5060051b60200190565b600067ffffffffffffffff821115614b2e57614b2e614a02565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000614b6d614b6884614b14565b614aa1565b9050828152838383011115614b8157600080fd5b828260208301376000602084830101529392505050565b600082601f830112614ba957600080fd5b81356020614bb9614b6883614af0565b82815260059290921b84018101918181019086841115614bd857600080fd5b8286015b84811015614bf35780358352918301918301614bdc565b509695505050505050565b600060808284031215614c1057600080fd5b614c18614a31565b9050813567ffffffffffffffff80821115614c3257600080fd5b818401915084601f830112614c4657600080fd5b81356020614c56614b6883614af0565b82815260059290921b84018101918181019088841115614c7557600080fd5b8286015b84811015614cc257803586811115614c915760008081fd5b8701603f81018b13614ca35760008081fd5b614cb48b8683013560408401614b5a565b845250918301918301614c79565b5086525085810135935082841115614cd957600080fd5b614ce587858801614b98565b8186015250505050604082013560408201526060820135606082015292915050565b600082601f830112614d1857600080fd5b611bbf83833560208501614b5a565b600060808284031215614d3957600080fd5b614d41614a31565b9050813567ffffffffffffffff80821115614d5b57600080fd5b9083019060808286031215614d6f57600080fd5b614d77614a31565b823582811115614d8657600080fd5b614d9287828601614d07565b825250602083013582811115614da757600080fd5b614db387828601614d07565b60208301525060408301359150614dc9826149a1565b81604082015260608301356060820152808452505050614deb602083016149c3565b602082015260408201356040820152614e06606083016149c3565b606082015292915050565b60008060408385031215614e2457600080fd5b823567ffffffffffffffff80821115614e3c57600080fd5b908401906101208287031215614e5157600080fd5b614e59614a5a565b823582811115614e6857600080fd5b614e7488828601614bfe565b825250602083013582811115614e8957600080fd5b614e9588828601614bfe565b602083015250604083013582811115614ead57600080fd5b614eb988828601614bfe565b604083015250614ecb606084016149c3565b6060820152614edc608084016149c3565b608082015260a083013560a082015260c083013560c082015260e083013560e0820152610100808401358183015250809450506020850135915080821115614f2357600080fd5b50614f3085828601614d27565b9150509250929050565b600060208284031215614f4c57600080fd5b5035919050565b600060a08284031215614f6557600080fd5b60405160a0810181811067ffffffffffffffff82111715614f8857614f88614a02565b6040528235614f96816149a1565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110615032577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611bc28284614ffb565b803582526020810135615056816149a1565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611bc28284615044565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000816150dc576150dc61509e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b6000828210156151145761511461509e565b500390565b6000821982111561512c5761512c61509e565b500190565b73ffffffffffffffffffffffffffffffffffffffff8316815260c0810161275e6020830184615044565b60005b8381101561517657818101518382015260200161515e565b838111156107c95750506000910152565b6000815180845261519f81602086016020860161515b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152615218610140860182615187565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e08701526152538282615187565b91505082604083015116610100860152606082015161012086015260408601519250615297606086018473ffffffffffffffffffffffffffffffffffffffff169052565b60608601516080860152608086015192506152ca60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b602081526000611bbf6020830184615187565b6000602082840312156152f857600080fd5b815161275e816149a1565b6000815180845260208085019450848260051b860182860160005b85811015615348578383038952615336838351615187565b9885019892509084019060010161531e565b5090979650505050505050565b600081518084526020808501945080840160005b8381101561538557815187529582019590820190600101615369565b509495945050505050565b60008151608084526153a56080850182615303565b9050602083015184820360208601526153be8282615355565b91505060408301516040850152606083015160608501528091505092915050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201526000835161012080606085015261541a610180850183615390565b915060208601517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0808685030160808701526154568483615390565b935060408801519150808685030160a0870152506154748382615390565b925050606086015161549e60c086018273ffffffffffffffffffffffffffffffffffffffff169052565b50608086015173ffffffffffffffffffffffffffffffffffffffff811660e08601525060a08601516101008581019190915260c08701519185019190915260e086015161014085015285015161016084015273ffffffffffffffffffffffffffffffffffffffff841660408401529050612b90565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156155745761557461509e565b5060010190565b60a08101611bc282848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152612b9060c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161275e6020830184614ffb565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156156cf576156cf61509e565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615712576157126156d4565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b805182526000602082015160a0602085015261576560a0850182615355565b90506040830151848203604086015261577e8282615303565b915050606083015184820360608601526157988282615355565b915050608083015184820360808601526152ca8282615355565b602081526000611bbf6020830184615746565b600073ffffffffffffffffffffffffffffffffffffffff8086168352808516602084015250606060408301526152ca6060830184615746565b600082601f83011261580f57600080fd5b8151602061581f614b6883614af0565b82815260059290921b8401810191818101908684111561583e57600080fd5b8286015b84811015614bf35780518352918301918301615842565b600082601f83011261586a57600080fd5b8151602061587a614b6883614af0565b82815260059290921b8401810191818101908684111561589957600080fd5b8286015b84811015614bf357805167ffffffffffffffff8111156158bd5760008081fd5b8701603f810189136158cf5760008081fd5b8481015160406158e1614b6883614b14565b8281528b828486010111156158f65760008081fd5b6159058389830184870161515b565b865250505091830191830161589d565b60006020828403121561592757600080fd5b815167ffffffffffffffff8082111561593f57600080fd5b9083019060a0828603121561595357600080fd5b61595b614a7e565b8251815260208301518281111561597157600080fd5b61597d878286016157fe565b60208301525060408301518281111561599557600080fd5b6159a187828601615859565b6040830152506060830151828111156159b957600080fd5b6159c5878286016157fe565b6060830152506080830151828111156159dd57600080fd5b6159e9878286016157fe565b60808301525095945050505050565b600060208284031215615a0a57600080fd5b8151801515811461275e57600080fd5b6000815260008251615a3381600185016020870161515b565b9190910160010192915050565b600060208284031215615a5257600080fd5b5051919050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251615ae281600e85016020870161515b565b91909101600e019392505050565b60008251615b0281846020870161515b565b9190910192915050565b600082615b1b57615b1b6156d4565b500690565b600181815b80851115615b7957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615b5f57615b5f61509e565b80851615615b6c57918102915b93841c9390800290615b25565b509250929050565b600082615b9057506001611bc2565b81615b9d57506000611bc2565b8160018114615bb35760028114615bbd57615bd9565b6001915050611bc2565b60ff841115615bce57615bce61509e565b50506001821b611bc2565b5060208310610133831016604e8410600b8410161715615bfc575081810a611bc2565b615c068383615b20565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615c3857615c3861509e565b029392505050565b6000611bbf8383615b81565b604080825283519082018190526000906020906060840190828701845b82811015615c9b57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101615c69565b50505083810382850152615caf8186615355565b9695505050505050565b600060208284031215615ccb57600080fd5b815167ffffffffffffffff811115615ce257600080fd5b612b90848285016157fe565b6000611bbf60ff841683615b8156fea26469706673582212205f1b2889f19d9f0dbf5f50f5bad76f88df9741b85bcc16bf86c818cf593e961864736f6c634300080a0033"; + "0x6101006040523480156200001257600080fd5b5060405162005600380380620056008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161545d620001a360003960006109bd015260006105030152600061075a01526000610781015261545d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e3314610390578063fc0c546a146103a357600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd3660046141c7565b6103ab565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461420d565b6103c8565b005b61012f61013f36600461436d565b6104b3565b61012f6101523660046144a7565b610bbc565b61015f610e08565b6040519015158152602001610113565b61012f610e1f565b61012f611013565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046144b9565b61110e565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61186c565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261280760e082015261281261010082015261281d6101208201526128286101408201526128336101608201526128a661018082015261290c6101a082015261294c6101c08201526129806101e08201526129b46102008201526129fb610220820152612a58610240820152612a91610260820152612acf610280820152612b216102a0820152612b7e6102c0820152612bb26102e0820152612be6610300820152612c18610320820152612c4a610340820152612c7c610360820152612ca9610380820152612d046103a0820152612d5a6103c0820152612db16103e0820152612e08610400820152612e3c610420820152612e66610440820152612f4d610460820152612fa96104808201526130256104a08201526130df6104c082018190526131896104e083015261050082015261320961052082015261331161054082015261342f610560808301919091528152905161011391906145a8565b600d5460ff166040516101139190614625565b600754610183565b6000806103bf6103b9611968565b846119c5565b91509150915091565b6002600d5460ff1660038111156103e1576103e16145bb565b1461044d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104af5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104af91168383611a66565b5050565b60006104bf6001611b3a565b905080156104f457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105018360800135611cc5565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f55540000000000000000000000000000000000000000006044820152606401610444565b61059d606084013543614662565b600e5560a083013561060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f300000000000000000000000000000000000000000006044820152606401610444565b8260a00135600b819055506106566040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6106ee6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106ae57905050905082816000815181106107175761071761467a565b602002602001018190525081816001815181106107365761073661467a565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107aa8a806146a9565b856040518463ffffffff1660e01b81526004016107c9939291906148ef565b6000604051808303816000875af11580156107e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261082e91908101906149a0565b905061083981611d80565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561088e604088016020890161420d565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610913606088016040890161420d565b73ffffffffffffffffffffffffffffffffffffffff908116600855865160400151161561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f53455400000000000000000000000000000000006044820152606401610444565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a0b91908e01908e0161420d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610a889190614a17565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ab391906145a8565b6020604051808303816000875af1158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190614b10565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b479033908b908590614b2d565b60405180910390a150505050508015610bb757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bd557610bd56145bb565b1415610c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f535543434553530000000000000000000000000000000000006044820152606401610444565b6003600d5460ff166003811115610c5657610c566145bb565b14610c6357610c63611e0b565b336000908152600f602090815260408083209051909291610c8691859101614c86565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cbb90614c94565b9091555060009050610cd560808301356060840135611faa565b90508060066000828254610ce99190614cc9565b92505081905550816060013560056000828254610d069190614662565b909155505060408201803590601190600090610d25906020870161420d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d6e9190614cc9565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610da59033908590614ce0565b60405180910390a1600754610dd69073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fd2565b6104af33610de8604085013584614662565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a66565b6000610e1a610e15611968565b612030565b905090565b43600e5410610e8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f5554000000000000000000000000000000000000006044820152606401610444565b6000600d5460ff166003811115610ea357610ea36145bb565b1480610ec557506001600d5460ff166003811115610ec357610ec36145bb565b145b610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e444544000000000000000000000000000000000000006044820152606401610444565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561102c5761102c6145bb565b14611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610444565b61109e610e15611968565b611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c4956450000000000000000000000000000000000000000000000006044820152606401610444565b61110c612096565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561114d5760035473ffffffffffffffffffffffffffffffffffffffff1661117b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915043101561120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b60006001544361121d9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610444565b6002600455604083015161135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d00000000000000000000000000000000000000000000006044820152606401610444565b8260600151836040015111156113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f444553495245440000000000000000000000006044820152606401610444565b60006113da611968565b90506113e581612030565b15611416576000600d5460ff166003811115611403576114036145bb565b141561141157611411612096565b61143d565b6001600d5460ff16600381111561142f5761142f6145bb565b141561143d5761143d6120f6565b6001600d5460ff166003811115611456576114566145bb565b146114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b60006114d8600554866060015161224890919063ffffffff16565b90506000806114e784846119c5565b909250905060006114f88385612248565b90508760400151811015611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b00000000000000000000000000006044820152606401610444565b87608001518211156115d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f5052494345000000000000000000000000000000000000006044820152606401610444565b60006115e28383611faa565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061163b83614d0a565b9091555050336000908152600f60209081526040808320905190929161166391859101614d43565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061169890614d0a565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116da908490614662565b9250508190555082600560008282546116f39190614cc9565b92505081905550816006600082825461170c9190614662565b9250508190555061174933308c60200151856117289190614662565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fd2565b60075461176d9073ffffffffffffffffffffffffffffffffffffffff163385611a66565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117a093929190614d92565b60405180910390a16117b187612030565b1561182b57600c546005541015611826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611833565b6118336120f6565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff166003811115611885576118856145bb565b146118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b6118f7610e15611968565b15611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61110c6120f6565b61199a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e1a906119c09073ffffffffffffffffffffffffffffffffffffffff1661225e565b61228c565b604080516020808252818301909252600091829182916020820181803683370190505090508360208201526119fc818660016123f8565b506000808660200151600288600001510381518110611a1d57611a1d61467a565b60200260200101518760200151600189600001510381518110611a4257611a4261467a565b602002602001015191509150611a588760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bb79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126cf565b60008054610100900460ff1615611bf1578160ff166001148015611b5d5750303b155b611be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b506000919050565b60005460ff808416911610611c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f30000000000000000000000000000000000000000000006044820152606401610444565b60015415611d3f57611d3f614e35565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611dab83604051602001611d979190614e64565b6040516020818303038152906040526127db565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e05576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e4a5760035473ffffffffffffffffffffffffffffffffffffffff16611e78565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150431015611f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b600060015443611f1a9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fbf8385614e8a565b611fc99190614ef6565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261100d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ab8565b60006001600554101561204557506000919050565b612060604051806020016040528060008152508360006123f8565b5060008083602001516001856000015103815181106120815761208161467a565b6020026020010151119050611fcc8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161210c57600361210f565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115612153576121536145bb565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612189929190614f31565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121fc57600080fd5b505af1158015612210573d6000803e3d6000fd5b5050505081156104af576009546006546008546104af9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a66565b60008183106122575781611fc9565b5090919050565b6060611fcc8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61362c565b6122be6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123245761232461422a565b60405190808252806020026020018201604052801561234d578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123845761238461422a565b6040519080825280602002602001820160405280156123ad578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123e75781602082026020018401528151602001820191506001810190506123c0565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156126b5576003890198508886015180601f1a975061ffff8160081c16985050600688101561262d578761247b57866020028401518252602082019150612640565b600188141561249857602087028301518252602082019150612640565b6002881415612525578c51876020021061250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610444565b866020026020018d01518252602082019150612640565b600388141561256e57600061255c604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612640565b600488141561258a576125838d8d848a613714565b9150612640565b6060876125b8578c6040516020016125a29190614f96565b6040516020818303038152906040529050612617565b60018814156125d1576125ca8d613884565b9050612617565b60028814156125ed576020808e01516040516125a2920161506c565b6003881415612617578c516040805160208101929092520160405160208183030381529060405290505b80511561262757612627816139c1565b50612640565b8761263c888463ffffffff8416565b9250505b60208c0151518c5111156126b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610444565b612436565b6020838303048c52509750505050505050505b9392505050565b6000612731826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a539092919063ffffffff16565b805190915015610bb7578080602001905181019061274f91906150a2565b610bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610444565b60608151826040516020016127f19291906150c4565b6040516020818303038152906040529050919050565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612893858a613a62565b90611faa565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612906858a613a62565b90613ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613a62565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613af8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613b56565b600060208302820380516000602083015b858110156129ed57805183019150828210156129e057600080fd5b90915081906020016129c5565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a3957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612a518382613ba1565b9250612a0b565b600060208302820380516000602083015b858110156129ed5780518303915082821115612a8457600080fd5b9091508190602001612a69565b6020828102820380516000928201835b8582108015612ab05750826000105b156129ed57508051602090910190612ac88382613bdc565b9250612aa1565b60006020830282038051600080602084015b86811015612b12578315612b0a578051925082840291508284830414612b0657600080fd5b8193505b602001612ae1565b50505081526020019392505050565b6020828102820380516000928201835b8582108015612b5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612b778382613bf2565b9250612b31565b600060208302820380516000602083015b858110156129ed578051915081612ba557600080fd5b9181900491602001612b8f565b600060208302820380516000602083015b858110156129ed578051915081612bd957600080fd5b9181900691602001612bc3565b6020828102820380516000928201835b858210156129ed57508051602090910190612c11818461527b565b9250612bf6565b6020828102820380516000928201835b858210156129ed5750805182811015612c3f578092505b602082019150612c28565b6020828102820380516000928201835b858210156129ed5750805182811115612c71578092505b602082019150612c5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015612e31578051612e295760008252612e31565b602001612e12565b506020019392505050565b6000602083028203805b83811015612e315780518015612e5d578252612e31565b50602001612e46565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612f29573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128999190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128998383613c21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561301685858585613c80565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156130535761305361422a565b60405190808252806020026020018201604052801561307c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156130b857815181602001860152602082019150602081019050613096565b505051905060006130cb83838989613d26565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612f0c565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129409190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190614b10565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa1580156133fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134219190615287565b909452509395945050505050565b60008060008467ffffffffffffffff81111561344d5761344d61422a565b604051908082528060200260200182016040528015613476578160200160208202803683370190505b50905060008567ffffffffffffffff8111156134945761349461422a565b6040519080825280602002602001820160405280156134bd578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156135125782518152602092830192016134fa565b5050602088028101602084015b8183101561353757825181526020928301920161351f565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061359190879087906004016152a0565b600060405180830381865afa1580156135ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135f49190810190615303565b9050846020820160208a0281015b8082101561361d578151835260209283019290910190613602565b50909998505050505050505050565b6060833b8061364b5750506040805160208101909152600081526126c8565b808411156136695750506040805160208101909152600081526126c8565b838310156136b4576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610444565b83830384820360008282106136c957826136cb565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261375357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061379e565b826001141561377757506fffffffffffffffffffffffffffffffff9050608061379e565b8260021415613793575067ffffffffffffffff9050604061379e565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156137c1576137c161422a565b6040519080825280602002602001820160405280156137ea578160200160208202803683370190505b50905060208082019083028a03815b8b8210156138115781518152602091820191016137f9565b505060608b015160808c015160209081029091010160005b61010081101561386f5760208502830182845b82811015613858578051841c8a1682526020918201910161383c565b5050506138668e8e8b6123f8565b9b508501613829565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016138d0919061506c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261390c92916020016153a9565b604051602081830303815290604052905060005b8560400151518110156139b85781866040015182815181106139445761394461467a565b60200260200101515160001b876040015183815181106139665761396661467a565b6020026020010151604051602001613980939291906153cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613920565b50949350505050565b613a50816040516024016139d591906145a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613e76565b50565b606061387c8484600085613e97565b6000808260121415613a775783915050611fcc565b8260121115613aa357506012829003613a9181600a61527b565b613a9b9085614e8a565b915050611fcc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613ad281600a61527b565b613a9b9085614ef6565b5092915050565b600081611fbf670de0b6b3a764000085614e8a565b6000806012831415613b0d5783915050611fcc565b8260121115613b2757506012829003613ad281600a61527b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613a9181600a61527b565b600081810b613b66575081611fcc565b60008260000b1315613b8e57613b7d82600a615406565b613b879084614e8a565b9050611fcc565b60ff600083900316613ad281600a61527b565b6000828201838110613bb3578061387c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000818311613bec576000611fc9565b50900390565b600082613c0157506000611fcc565b82820282848281613c1457613c14614ec7565b041415613bb3578061387c565b60008060015b60088111613c78576000613c3b868361402d565b90506000613c49868461402d565b90506000613c578383613bdc565b9050613c678560018603836140da565b94505060019092019150613c279050565b509392505050565b6000826008811115613cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b6000855b85811015613d1a5763ffffffff6020820290811b199890981685891b17979150600101613cf2565b50959695505050505050565b835160009081908190819060015b60088111613e6857600092508287613d6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613d71565b5060005b60005b83811015613e2657613d9f8c8281518110613d9157613d9161467a565b60200260200101518461402d565b95508a8611613df15788613dbe57613db78683612248565b9150613de8565b6001891415613dd157613db78683614164565b600289148015613ddf575084155b15613de8578591505b60019450613e1e565b89613e1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613e26565b600101613d74565b5083613e4f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613e5d8660018403836140da565b955050600101613d34565b509298975050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015613f29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610444565b73ffffffffffffffffffffffffffffffffffffffff85163b613fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610444565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613fd09190615415565b60006040518083038185875af1925050503d806000811461400d576040519150601f19603f3d011682016040523d82523d6000602084013e614012565b606091505b5091509150614022828286614174565b979650505050505050565b600081600881111561409b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b826140a95760009150613adc565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310156122575781611fc9565b606083156141835750816126c8565b8251156141935782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044491906145a8565b6000602082840312156141d957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613a5057600080fd5b8035611cc0816141e0565b60006020828403121561421f57600080fd5b81356126c8816141e0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561427c5761427c61422a565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142c9576142c961422a565b604052919050565b600067ffffffffffffffff8211156142eb576142eb61422a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261432857600080fd5b813561433b614336826142d1565b614282565b81815284602083860101111561435057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561438057600080fd5b823567ffffffffffffffff8082111561439857600080fd5b9084019060e082870312156143ac57600080fd5b909250602084013590808211156143c257600080fd5b90840190608082870312156143d657600080fd5b6143de614259565b8235828111156143ed57600080fd5b8301608081890312156143ff57600080fd5b614407614259565b81358481111561441657600080fd5b6144228a828501614317565b82525060208201358481111561443757600080fd5b6144438a828501614317565b60208301525060408201359350614459846141e0565b83604082015260608201356060820152808352505061447a60208401614202565b60208201526040830135604082015261449560608401614202565b60608201528093505050509250929050565b600060a08284031215611e0557600080fd5b600060a082840312156144cb57600080fd5b60405160a0810181811067ffffffffffffffff821117156144ee576144ee61422a565b60405282356144fc816141e0565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561454d578181015183820152602001614535565b8381111561100d5750506000910152565b60008151808452614576816020860160208601614532565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc9602083018461455e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614621577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611fcc82846145ea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561467557614675614633565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126146dd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261471c57600080fd5b830160208101925035905067ffffffffffffffff81111561473c57600080fd5b8060051b3603831315611a5f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156147c957600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016147f683846146e7565b604086528281845260608701905060608260051b88010193508260005b838110156148c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261487457600080fd5b85018035602067ffffffffffffffff82111561488f57600080fd5b81360388131561489e57600080fd5b6148ab898383860161474e565b98509485019493909301925050600101614813565b50505050506148d260208401846146e7565b85830360208701526148e5838284614797565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261491f828501876147e6565b84810360408681019190915286518083528388019284019060005b81811015614990578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161493a565b50909a9950505050505050505050565b6000602082840312156149b257600080fd5b815167ffffffffffffffff8111156149c957600080fd5b8201601f810184136149da57600080fd5b80516149e8614336826142d1565b8181528560208385010111156149fd57600080fd5b614a0e826020830160208601614532565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614a5e61014086018261455e565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614a99828261455e565b91505082604083015116610100860152606082015161012086015260408601519250614add606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614a0e60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614b2257600080fd5b81516126c8816141e0565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614b8157600080fd5b60e06060840152614b9861014084018683016147e6565b9050614ba660208601614202565b73ffffffffffffffffffffffffffffffffffffffff166080840152614bcd60408601614202565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c08501356101208401528091505061387c604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614c4c816141e0565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611fcc8284614c3a565b600081614ca357614ca3614633565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614cdb57614cdb614633565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126c86020830184614c3a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d3c57614d3c614633565b5060010190565b60a08101611fcc82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a083015261387c60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000815260008251614e7d816001850160208701614532565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ec257614ec2614633565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126c860208301846145ea565b600081518084526020808501945080840160005b83811015614f8b57815187529582019590820190600101614f6f565b509495945050505050565b600060208083528351818401528084015160a06040850152614fbb60c0850182614f5b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615034578487830301845261502282875161455e565b95880195938801939150600101615008565b5060608a01519650838982030160808a01526150508188614f5b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156150965781518552938201939082019060010161507a565b50929695505050505050565b6000602082840312156150b457600080fd5b815180151581146126c857600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161514d81600e850160208701614532565b91909101600e019392505050565b600181815b808511156151b457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561519a5761519a614633565b808516156151a757918102915b93841c9390800290615160565b509250929050565b6000826151cb57506001611fcc565b816151d857506000611fcc565b81600181146151ee57600281146151f857615214565b6001915050611fcc565b60ff84111561520957615209614633565b50506001821b611fcc565b5060208310610133831016604e8410600b8410161715615237575081810a611fcc565b615241838361515b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561527357615273614633565b029392505050565b6000611fc983836151bc565b60006020828403121561529957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156152ef57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016152bd565b505050838103828501526148e58186614f5b565b6000602080838503121561531657600080fd5b825167ffffffffffffffff8082111561532e57600080fd5b818501915085601f83011261534257600080fd5b8151818111156153545761535461422a565b8060051b9150615365848301614282565b818152918301840191848101908884111561537f57600080fd5b938501935b8385101561539d57845182529385019390850190615384565b98975050505050505050565b828152600082516153c1816020850160208701614532565b919091016020019392505050565b600084516153e1818460208901614532565b820184815283516153f9816020808501908801614532565b0160200195945050505050565b6000611fc960ff8416836151bc565b600082516146dd81846020870161453256fea2646970667358221220acdec4358db66d8ec11c160884f6e44c5ff896a1cabd5caff75db69e3ccd8e7364736f6c634300080a0033"; type SaleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SeedERC20Factory__factory.ts b/src/typechain/factories/SeedERC20Factory__factory.ts deleted file mode 100644 index c4efd95..0000000 --- a/src/typechain/factories/SeedERC20Factory__factory.ts +++ /dev/null @@ -1,223 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - SeedERC20Factory, - SeedERC20FactoryInterface, -} from "../SeedERC20Factory"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Implementation", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "child", - type: "address", - }, - ], - name: "NewChild", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "createChild", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "reserve", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "seedPrice", - type: "uint256", - }, - { - internalType: "uint256", - name: "cooldownDuration", - type: "uint256", - }, - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "address", - name: "distributor", - type: "address", - }, - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - internalType: "struct ERC20Config", - name: "erc20Config", - type: "tuple", - }, - ], - internalType: "struct SeedERC20Config", - name: "config_", - type: "tuple", - }, - ], - name: "createChildTyped", - outputs: [ - { - internalType: "contract SeedERC20", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "implementation", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "maybeChild_", - type: "address", - }, - ], - name: "isChild", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6134d380610c8a83390190565b608051610bc66100c46000396000818160a6015261037a0152610bc66000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a491461005157806337669b011461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610857565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c919061086a565b92915050565b600080610371838501856109ad565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ff6d5a76600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063f6d5a766906103f3908590600401610acb565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591506106f8826105c4565b80821660408501526040850135606085015260608501356080850152608085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261074b57600080fd5b60a0848101529084019061075f8280610606565b608060c087015261077561014087018284610671565b9150506107856020840184610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e08801526107ba838284610671565b9250505060408301356107cc816105c4565b909116610100850152606091909101356101209093019290925250919050565b6000815180845260005b81811015610812576020818501810151868301820152016107f6565b81811115610824576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd60208301846107ec565b60006020828403121561087c57600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156108d9576108d9610887565b60405290565b6040516080810167ffffffffffffffff811182821017156108d9576108d9610887565b600082601f83011261091357600080fd5b813567ffffffffffffffff8082111561092e5761092e610887565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561097457610974610887565b8160405283815286602085880101111561098d57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109bf57600080fd5b813567ffffffffffffffff808211156109d757600080fd5b9083019060a082860312156109eb57600080fd5b6109f36108b6565b82356109fe816105c4565b81526020830135610a0e816105c4565b806020830152506040830135604082015260608301356060820152608083013582811115610a3b57600080fd5b929092019160808387031215610a5057600080fd5b610a586108df565b833583811115610a6757600080fd5b610a7388828701610902565b825250602084013583811115610a8857600080fd5b610a9488828701610902565b60208301525060408401359250610aaa836105c4565b60408101929092526060928301359282019290925260808201529392505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff8084511660208401528060208501511660408401526040840151606084015260608401516080840152608084015160a0808501528051608060c0860152610b316101408601826107ec565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b6c82826107ec565b6040840151909416610100870152505060600151610120909301929092525091905056fea26469706673582212206e8dff4d754c870f50239ce751a1f673c50d478f10fd0010995068f359e9ad9364736f6c634300080a0033608060405234801561001057600080fd5b506134b3806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806370a08231116100e3578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e14610366578063f6d5a766146103ac578063fed8ea71146103bf57600080fd5b8063a9059cbb1461032d578063b7a3c82814610340578063b8ffd02c1461035357600080fd5b806395d89b41116100bd57806395d89b41146102ea5780639923c94b146102f2578063a457c2d71461031a57600080fd5b806370a082311461028e57806379cc6790146102c45780637cbc2373146102d757600080fd5b806318160ddd11610145578063395093511161011f578063395093511461025557806342966c6814610268578063634991af1461027b57600080fd5b806318160ddd1461022b57806323b872dd14610233578063313ce5671461024657600080fd5b8063094890961161017657806309489096146101e2578063095ea7b3146101f5578063166a00e41461021857600080fd5b8063038ef03e1461019d578063055ad42e146101b257806306fdde03146101cd575b600080fd5b6101b06101ab366004612e10565b6103c8565b005b6101ba61041a565b6040519081526020015b60405180910390f35b6101d5610485565b6040516101c49190612e59565b6101b06101f0366004612eaa565b610517565b610208610203366004612ec3565b6107b2565b60405190151581526020016101c4565b6101b0610226366004612eef565b6107cc565b6039546101ba565b610208610241366004612f11565b610ca0565b604051600081526020016101c4565b610208610263366004612ec3565b610cc6565b6101b0610276366004612eaa565b610d12565b6101ba610289366004612fcd565b610d1f565b6101ba61029c366004612e10565b73ffffffffffffffffffffffffffffffffffffffff1660009081526037602052604090205490565b6101b06102d2366004612ec3565b610d73565b6101b06102e5366004612eef565b610d8c565b6101d5610fb7565b610305610300366004612eaa565b610fc6565b60405163ffffffff90911681526020016101c4565b610208610328366004612ec3565b610ff6565b61020861033b366004612ec3565b6110d2565b6101b061034e366004612eaa565b6110e0565b6101ba610361366004612fcd565b61110b565b6101ba610374366004613063565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260386020908152604080832093909416825291909152205490565b6101b06103ba366004613147565b61114a565b6101ba60a15481565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161048091906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610439579050505050505043610d1f565b905090565b6060603a805461049490613265565b80601f01602080910402602001604051908101604052809291908181526020018280546104c090613265565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b60018061052261041a565b1461058e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60045460009073ffffffffffffffffffffffffffffffffffffffff16156105cd5760045473ffffffffffffffffffffffffffffffffffffffff166105fb565b600480547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915043101561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610585565b60006002544361069d91906132e8565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260036020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600084609f546107119190613300565b905061071e333087611560565b60408051338152602081018790529081018290527fa7a28d973038da3f8f74915d4ba1108930a16dfd6c9f81bf3881c858e08568369060600160405180910390a1609d546107839073ffffffffffffffffffffffffffffffffffffffff163383611815565b5050600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050565b6000336107c08185856118ee565b60019150505b92915050565b6001806107d761041a565b1461083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610585565b60045460009073ffffffffffffffffffffffffffffffffffffffff161561087d5760045473ffffffffffffffffffffffffffffffffffffffff166108ab565b600480547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915043101561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610585565b60006002544361094d91906132e8565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260036020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160008411610a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f444553495245445f3000000000000000000000000000000000000000000000006044820152606401610585565b83851115610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f444553495245440000000000000000000000006044820152606401610585565b3060009081526037602052604090205480861115610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b00000000000000000000000000006044820152606401610585565b6000610b0b8683611aa1565b9050600081609f54610b1d9190613300565b905081831415610b3257610b32600243611ab7565b610b3d303384611560565b60408051338152602081018490529081018290527fcfbc75cbfc5b8b5055f9bbb6b60bdf5394eb8dc9a09770d5deedd7d4f82d79169060600160405180910390a1609d54610ba39073ffffffffffffffffffffffffffffffffffffffff16333084611d60565b6002610bad61041a565b1415610c6e57609e54609d546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610c6e9273ffffffffffffffffffffffffffffffffffffffff9081169216906370a0823190602401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061333d565b609d5473ffffffffffffffffffffffffffffffffffffffff169190611815565b5050600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b600033610cae858285611dbe565b610cb9858585611560565b60019150505b9392505050565b33600081815260386020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906107c09082908690610d0d9087906132e8565b6118ee565b610d1c3382611e8f565b50565b6000805b6008811015610d6957838160088110610d3e57610d3e613356565b602002015163ffffffff16831015610d575790506107c6565b80610d6181613385565b915050610d23565b5060089392505050565b610d7e823383611dbe565b610d888282611e8f565b5050565b600280610d9761041a565b14610dfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610585565b609d546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e91919061333d565b60a15490915081811015610ea7575060a1819055805b60a054610eb485836132e8565b1015610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f524553455256455f42414c414e434500000000000000000000000000000000006044820152606401610585565b604080516001808252818301909252600091602080830190803683375050609d54825192935073ffffffffffffffffffffffffffffffffffffffff1691839150600090610f6b57610f6b613356565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610faf818761207c565b505050505050565b6060603b805461049490613265565b60018160088110610fd657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260386020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610585565b6110c782868684036118ee565b506001949350505050565b6000336107c0818585611560565b609b54609c54610d1c9173ffffffffffffffffffffffffffffffffffffffff91821691163084611d60565b600080821161111b57600061113d565b826111276001846133be565b6008811061113757611137613356565b60200201515b63ffffffff169392505050565b600054610100900460ff166111655760005460ff1615611169565b303b155b6111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610585565b600054610100900460ff1615801561123457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b60008260400151116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50524943455f30000000000000000000000000000000000000000000000000006044820152606401610585565b600082608001516060015111611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f535550504c595f300000000000000000000000000000000000000000000000006044820152606401610585565b602082015173ffffffffffffffffffffffffffffffffffffffff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f524543495049454e545f300000000000000000000000000000000000000000006044820152606401610585565b61139d612421565b6113aa82606001516124cb565b608082018051306040909101525180516020909101516113ca9190612580565b6113e4826080015160400151836080015160600151612621565b6114356040518060400160405280846020015173ffffffffffffffffffffffffffffffffffffffff168152602001846000015173ffffffffffffffffffffffffffffffffffffffff16815250612741565b6020820151609e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091558351609d80549190931691161790556040820151609f8190556080830151606001516114a991613300565b60a05581516114b7906103c8565b6020808301518351604080860151815133815273ffffffffffffffffffffffffffffffffffffffff94851695810195909552929091169083015260608201527fc38c89ccc76be750f6667bd27ef37d3fa8061eb6451003ba3008ac6b00fa17339060800160405180910390a161152e600143611ab7565b8015610d8857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b73ffffffffffffffffffffffffffffffffffffffff8316611603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff82166116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603760205260409020548181101561175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603760205260408082208585039055918516815290812080548492906117a09084906132e8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161180691815260200190565b60405180910390a35b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118e99084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128ff565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316611990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff8216611a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526038602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000818310611ab05781610cbf565b5090919050565b80431115611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f5041535400000000000000000000000000000000006044820152606401610585565b63ffffffff8110611b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a454400000000000000006044820152606401610585565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611bba61041a565b14611c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f5048415345000000000000000000000000000000000000000000006044820152606401610585565b60018160088110611c3457611c34613356565b60088104919091015460079091166004026101000a900463ffffffff90811614611cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f5345540000000000000000000000000000000000006044820152606401610585565b8160018260088110611cce57611cce613356565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611d539392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261180f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611867565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603860209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461180f5781811015611e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610585565b61180f84848484036118ee565b73ffffffffffffffffffffffffffffffffffffffff8216611f32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff821660009081526037602052604090205481811015611fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff831660009081526037602052604081208383039055603980548492906120249084906133be565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b815160008167ffffffffffffffff81111561209957612099612f52565b6040519080825280602002602001820160405280156120c2578160200160208202803683370190505b5090506000821161212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f41535345545300000000000000000000000000000000000000006044820152606401610585565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061333d565b90506000805b848110156123935782868883815181106121c2576121c2613356565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225c919061333d565b6122669190613300565b61227091906133d5565b9150600082116122dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e540000000000000000000000000000000000000000006044820152606401610585565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061231057612310613356565b6020026020010151888560405161235b949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061237657612376613356565b60209081029190910101528061238b81613385565b9150506121a6565b5061239e3386611e8f565b60005b8481101561241857612406338583815181106123bf576123bf613356565b60200260200101518984815181106123d9576123d9613356565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166118159092919063ffffffff16565b8061241081613385565b9150506123a1565b50505050505050565b6001805463ffffffff161061243857612438613410565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526124896001826008612cc9565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39060600161040f565b60008111612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f30000000000000000000000000000000000000000000006044820152606401610585565b6002541561254557612545613410565b600281905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910161040f565b600054610100900460ff16612617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610585565b610d888282612a0b565b73ffffffffffffffffffffffffffffffffffffffff821661269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610585565b80603960008282546126b091906132e8565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260376020526040812080548392906126ea9084906132e8565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b805173ffffffffffffffffffffffffffffffffffffffff163b6127c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f454f415f53454e444552000000000000000000000000000000000000000000006044820152606401610585565b602081015173ffffffffffffffffffffffffffffffffffffffff16612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5a45524f5f544f4b454e000000000000000000000000000000000000000000006044820152606401610585565b609c5473ffffffffffffffffffffffffffffffffffffffff161561286757612867613410565b8051609b805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255602080850151609c805491909516921682179093556040805133815293840192909252908201527fe67a5c2dcf68e8fac05314f53ecd2ff0b403ed683c4bfdad15eaec7a8a63f5559060600161040f565b6000612961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ac99092919063ffffffff16565b8051909150156118e9578080602001905181019061297f919061343f565b6118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610585565b600054610100900460ff16612aa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610585565b8151612ab590603a906020850190612d65565b5080516118e990603b906020840190612d65565b6060612ad88484600085612ae0565b949350505050565b606082471015612b72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612c199190613461565b60006040518083038185875af1925050503d8060008114612c56576040519150601f19603f3d011682016040523d82523d6000602084013e612c5b565b606091505b5091509150612c6b828286612c76565b979650505050505050565b60608315612c85575081610cbf565b825115612c955782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190612e59565b600183019183908215612d555791602002820160005b83821115612d2357835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612cdf565b8015612d535782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612d23565b505b50612d61929150612dd9565b5090565b828054612d7190613265565b90600052602060002090601f016020900481019282612d935760008555612d55565b82601f10612dac57805160ff1916838001178555612d55565b82800160010185558215612d55579182015b82811115612d55578251825591602001919060010190612dbe565b5b80821115612d615760008155600101612dda565b73ffffffffffffffffffffffffffffffffffffffff81168114610d1c57600080fd5b600060208284031215612e2257600080fd5b8135610cbf81612dee565b60005b83811015612e48578181015183820152602001612e30565b8381111561180f5750506000910152565b6020815260008251806020840152612e78816040850160208701612e2d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600060208284031215612ebc57600080fd5b5035919050565b60008060408385031215612ed657600080fd5b8235612ee181612dee565b946020939093013593505050565b60008060408385031215612f0257600080fd5b50508035926020909101359150565b600080600060608486031215612f2657600080fd5b8335612f3181612dee565b92506020840135612f4181612dee565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715612fa457612fa4612f52565b60405290565b6040516080810167ffffffffffffffff81118282101715612fa457612fa4612f52565b6000806101208385031215612fe157600080fd5b83601f840112612ff057600080fd5b60405161010080820182811067ffffffffffffffff8211171561301557613015612f52565b6040528401818682111561302857600080fd5b855b8281101561305557803563ffffffff811681146130475760008081fd5b82526020918201910161302a565b509196903595509350505050565b6000806040838503121561307657600080fd5b823561308181612dee565b9150602083013561309181612dee565b809150509250929050565b600082601f8301126130ad57600080fd5b813567ffffffffffffffff808211156130c8576130c8612f52565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561310e5761310e612f52565b8160405283815286602085880101111561312757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561315957600080fd5b813567ffffffffffffffff8082111561317157600080fd5b9083019060a0828603121561318557600080fd5b61318d612f81565b823561319881612dee565b815260208301356131a881612dee565b8060208301525060408301356040820152606083013560608201526080830135828111156131d557600080fd5b9290920191608083870312156131ea57600080fd5b6131f2612faa565b83358381111561320157600080fd5b61320d8882870161309c565b82525060208401358381111561322257600080fd5b61322e8882870161309c565b6020830152506040840135925061324483612dee565b60408101929092526060928301359282019290925260808201529392505050565b600181811c9082168061327957607f821691505b602082108114156132b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156132fb576132fb6132b9565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613338576133386132b9565b500290565b60006020828403121561334f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133b7576133b76132b9565b5060010190565b6000828210156133d0576133d06132b9565b500390565b60008261340b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561345157600080fd5b81518015158114610cbf57600080fd5b60008251613473818460208701612e2d565b919091019291505056fea26469706673582212208935541b1ec091e23de8a78f260dccd653c8b747156e4db14d6f8d0d93a0633564736f6c634300080a0033"; - -type SeedERC20FactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SeedERC20FactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class SeedERC20Factory__factory extends ContractFactory { - constructor(...args: SeedERC20FactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): SeedERC20Factory { - return super.attach(address) as SeedERC20Factory; - } - connect(signer: Signer): SeedERC20Factory__factory { - return super.connect(signer) as SeedERC20Factory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SeedERC20FactoryInterface { - return new utils.Interface(_abi) as SeedERC20FactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SeedERC20Factory { - return new Contract(address, _abi, signerOrProvider) as SeedERC20Factory; - } -} diff --git a/src/typechain/factories/SeedERC20ForceSendEther__factory.ts b/src/typechain/factories/SeedERC20ForceSendEther__factory.ts deleted file mode 100644 index 0f65ecd..0000000 --- a/src/typechain/factories/SeedERC20ForceSendEther__factory.ts +++ /dev/null @@ -1,86 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - SeedERC20ForceSendEther, - SeedERC20ForceSendEtherInterface, -} from "../SeedERC20ForceSendEther"; - -const _abi = [ - { - stateMutability: "payable", - type: "fallback", - }, - { - inputs: [ - { - internalType: "contract SeedERC20", - name: "seedERC20Contract_", - type: "address", - }, - ], - name: "destroy", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - stateMutability: "payable", - type: "receive", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060c68061001f6000396000f3fe608060405260043610601c5760003560e01c8062f55d9d14602457005b36602257005b005b348015602f57600080fd5b506022603b3660046055565b8073ffffffffffffffffffffffffffffffffffffffff8116ff5b600060208284031215606657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114608957600080fd5b939250505056fea264697066735822122032c00524b83f47fc78f6fd3ffe2b689fbcbfb98759ef3de5cb371d693d412cf264736f6c634300080a0033"; - -type SeedERC20ForceSendEtherConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SeedERC20ForceSendEtherConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class SeedERC20ForceSendEther__factory extends ContractFactory { - constructor(...args: SeedERC20ForceSendEtherConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): SeedERC20ForceSendEther { - return super.attach(address) as SeedERC20ForceSendEther; - } - connect(signer: Signer): SeedERC20ForceSendEther__factory { - return super.connect(signer) as SeedERC20ForceSendEther__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SeedERC20ForceSendEtherInterface { - return new utils.Interface(_abi) as SeedERC20ForceSendEtherInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SeedERC20ForceSendEther { - return new Contract( - address, - _abi, - signerOrProvider - ) as SeedERC20ForceSendEther; - } -} diff --git a/src/typechain/factories/SeedERC20Reentrant__factory.ts b/src/typechain/factories/SeedERC20Reentrant__factory.ts deleted file mode 100644 index 2e9110a..0000000 --- a/src/typechain/factories/SeedERC20Reentrant__factory.ts +++ /dev/null @@ -1,459 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - SeedERC20Reentrant, - SeedERC20ReentrantInterface, -} from "../SeedERC20Reentrant"; - -const _abi = [ - { - 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: [], - name: "DECIMALS", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "TOTAL_SUPPLY", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account_", - type: "address", - }, - ], - name: "addFreezable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "contract SeedERC20", - name: "seedERC20Contract_", - type: "address", - }, - ], - name: "addReentrantTarget", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - 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: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burnFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "pure", - 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: "", - type: "address", - }, - ], - name: "freezables", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - 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: [], - name: "methodTarget", - outputs: [ - { - internalType: "enum SeedERC20Reentrant.Method", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "enum SeedERC20Reentrant.Method", - name: "methodTarget_", - type: "uint8", - }, - ], - name: "setMethodTarget", - outputs: [], - stateMutability: "nonpayable", - 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", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620003e2565b50805162000078906004906020840190620003e2565b505050620000a333600660096200009091906200049e565b6200009d90600a620005b8565b620000a9565b62000620565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b80600260008282546200012791906200049e565b90915550506001600160a01b03821660009081526020819052604081208054839290620001569084906200049e565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200037660201b6200069d1760201c565b6001600654600160a01b900460ff166003811115620001db57620001db620005cd565b148015620001f657506006546001600160a01b038381169116145b15620002695760065460405163059a803960e21b815260006004820152600160248201526001600160a01b039091169063166a00e4906044015b600060405180830381600087803b1580156200024b57600080fd5b505af115801562000260573d6000803e3d6000fd5b50505050505050565b6002600654600160a01b900460ff1660038111156200028c576200028c620005cd565b148015620002a757506006546001600160a01b038481169116145b15620002df576006546040516304a4484b60e11b8152600160048201526001600160a01b039091169063094890969060240162000230565b6003600654600160a01b900460ff166003811115620003025762000302620005cd565b1480156200031d57506006546001600160a01b038481169116145b156200037157600654604051637cbc237360e01b815260016004820152600060248201526001600160a01b0390911690637cbc237390604401600060405180830381600087803b1580156200024b57600080fd5b505050565b6200038e8383836200037160201b6200072d1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620003715760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003f090620005e3565b90600052602060002090601f0160209004810192826200041457600085556200045f565b82601f106200042f57805160ff19168380011785556200045f565b828001600101855582156200045f579182015b828111156200045f57825182559160200191906001019062000442565b506200046d92915062000471565b5090565b5b808211156200046d576000815560010162000472565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b457620004b462000488565b500190565b600181815b80851115620004fa578160001904821115620004de57620004de62000488565b80851615620004ec57918102915b93841c9390800290620004be565b509250929050565b6000826200051357506001620005b2565b816200052257506000620005b2565b81600181146200053b5760028114620005465762000566565b6001915050620005b2565b60ff8411156200055a576200055a62000488565b50506001821b620005b2565b5060208310610133831016604e8410600b84101617156200058b575081810a620005b2565b620005978383620004b9565b8060001904821115620005ae57620005ae62000488565b0290505b92915050565b6000620005c6838362000502565b9392505050565b634e487b7160e01b600052602160045260246000fd5b600181811c90821680620005f857607f821691505b602082108114156200061a57634e487b7160e01b600052602260045260246000fd5b50919050565b6114f880620006306000396000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c80635bb9058b116100cd578063902d55a511610081578063a457c2d711610066578063a457c2d714610389578063a9059cbb1461039c578063dd62ed3e146103af57600080fd5b8063902d55a51461037957806395d89b411461038157600080fd5b806379cc6790116100b257806379cc6790146103215780637cc4129a1461033457806385b75f5f1461036657600080fd5b80635bb9058b1461028e57806370a08231146102eb57600080fd5b8063313ce5671161012457806342966c681161010957806342966c681461020157806348422faa1461021657806348ea30da1461023957600080fd5b8063313ce567146101df57806339509351146101ee57600080fd5b806318160ddd1161015557806318160ddd146101b257806323b872dd146101c45780632e0f2625146101d757600080fd5b806306fdde0314610171578063095ea7b31461018f575b600080fd5b6101796103f5565b60405161018691906110db565b60405180910390f35b6101a261019d366004611170565b610487565b6040519015158152602001610186565b6002545b604051908152602001610186565b6101a26101d236600461119c565b6104a1565b6101b6600681565b60405160068152602001610186565b6101a26101fc366004611170565b6104c5565b61021461020f3660046111dd565b610511565b005b6101a26102243660046111f6565b60056020526000908152604090205460ff1681565b6102146102473660046111f6565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61021461029c3660046111f6565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101b66102f93660046111f6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61021461032f366004611170565b61051e565b6006546103599074010000000000000000000000000000000000000000900460ff1681565b6040516101869190611249565b61021461037436600461128a565b610537565b6101b6610590565b6101796105aa565b6101a2610397366004611170565b6105b9565b6101a26103aa366004611170565b61068f565b6101b66103bd3660046112ab565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b606060038054610404906112e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610430906112e4565b801561047d5780601f106104525761010080835404028352916020019161047d565b820191906000526020600020905b81548152906001019060200180831161046057829003601f168201915b5050505050905090565b600033610495818585610732565b60019150505b92915050565b6000336104af8582856108e5565b6104ba8585856109bc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610495908290869061050c908790611367565b610732565b61051b3382610c7a565b50565b6105298233836108e5565b6105338282610c7a565b5050565b600680548291907fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000008360038111156105885761058861121a565b021790555050565b61059c60066009611367565b6105a790600a61149f565b81565b606060048054610404906112e4565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6104ba8286868403610732565b6000336104958185856109bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610679565b505050565b73ffffffffffffffffffffffffffffffffffffffff83166107d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610679565b73ffffffffffffffffffffffffffffffffffffffff8216610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610679565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146109b657818110156109a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610679565b6109b68484848403610732565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610679565b73ffffffffffffffffffffffffffffffffffffffff8216610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610679565b610b0d838383610e73565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610bc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610679565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610c07908490611367565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c6d91815260200190565b60405180910390a36109b6565b73ffffffffffffffffffffffffffffffffffffffff8216610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610679565b610d2982600083610e73565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610ddf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610679565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610e1b9084906114ab565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610e7e83838361069d565b600160065474010000000000000000000000000000000000000000900460ff166003811115610eaf57610eaf61121a565b148015610ed6575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b15610f6c576006546040517f166a00e4000000000000000000000000000000000000000000000000000000008152600060048201526001602482015273ffffffffffffffffffffffffffffffffffffffff9091169063166a00e4906044015b600060405180830381600087803b158015610f4f57600080fd5b505af1158015610f63573d6000803e3d6000fd5b50505050505050565b600260065474010000000000000000000000000000000000000000900460ff166003811115610f9d57610f9d61121a565b148015610fc4575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b15611020576006546040517f094890960000000000000000000000000000000000000000000000000000000081526001600482015273ffffffffffffffffffffffffffffffffffffffff90911690630948909690602401610f35565b600360065474010000000000000000000000000000000000000000900460ff1660038111156110515761105161121a565b148015611078575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561072d576006546040517f7cbc2373000000000000000000000000000000000000000000000000000000008152600160048201526000602482015273ffffffffffffffffffffffffffffffffffffffff90911690637cbc237390604401610f35565b600060208083528351808285015260005b81811015611108578581018301518582016040015282016110ec565b8181111561111a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461051b57600080fd5b6000806040838503121561118357600080fd5b823561118e8161114e565b946020939093013593505050565b6000806000606084860312156111b157600080fd5b83356111bc8161114e565b925060208401356111cc8161114e565b929592945050506040919091013590565b6000602082840312156111ef57600080fd5b5035919050565b60006020828403121561120857600080fd5b81356112138161114e565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160048310611284577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561129c57600080fd5b81356004811061121357600080fd5b600080604083850312156112be57600080fd5b82356112c98161114e565b915060208301356112d98161114e565b809150509250929050565b600181811c908216806112f857607f821691505b60208210811415611332577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561137a5761137a611338565b500190565b600181815b808511156113d857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156113be576113be611338565b808516156113cb57918102915b93841c9390800290611384565b509250929050565b6000826113ef5750600161049b565b816113fc5750600061049b565b8160018114611412576002811461141c57611438565b600191505061049b565b60ff84111561142d5761142d611338565b50506001821b61049b565b5060208310610133831016604e8410600b841016171561145b575081810a61049b565b611465838361137f565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561149757611497611338565b029392505050565b600061121383836113e0565b6000828210156114bd576114bd611338565b50039056fea2646970667358221220a7ea3bc67a96b9e72544d77c367aca108c765b33e6568d642bfdf4bfcd43f93264736f6c634300080a0033"; - -type SeedERC20ReentrantConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SeedERC20ReentrantConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class SeedERC20Reentrant__factory extends ContractFactory { - constructor(...args: SeedERC20ReentrantConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): SeedERC20Reentrant { - return super.attach(address) as SeedERC20Reentrant; - } - connect(signer: Signer): SeedERC20Reentrant__factory { - return super.connect(signer) as SeedERC20Reentrant__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SeedERC20ReentrantInterface { - return new utils.Interface(_abi) as SeedERC20ReentrantInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SeedERC20Reentrant { - return new Contract(address, _abi, signerOrProvider) as SeedERC20Reentrant; - } -} diff --git a/src/typechain/factories/SeedERC20__factory.ts b/src/typechain/factories/SeedERC20__factory.ts deleted file mode 100644 index 3b970c0..0000000 --- a/src/typechain/factories/SeedERC20__factory.ts +++ /dev/null @@ -1,808 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { SeedERC20, SeedERC20Interface } from "../SeedERC20"; - -const _abi = [ - { - 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: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "cooldownDuration", - type: "uint256", - }, - ], - name: "CooldownInitialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "caller", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "cooldown", - type: "uint256", - }, - ], - name: "CooldownTriggered", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "tokenSender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - ], - name: "ERC20PullInitialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "recipient", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "reserve", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "seedPrice", - type: "uint256", - }, - ], - name: "Initialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "newPhase", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "scheduledBlock", - type: "uint256", - }, - ], - name: "PhaseScheduled", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "treasuryAsset", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "redeemAmount", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "assetAmount", - type: "uint256", - }, - ], - name: "Redeem", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokensSeeded", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "reserveReceived", - type: "uint256", - }, - ], - name: "Seed", - 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", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "asset", - type: "address", - }, - ], - name: "TreasuryAsset", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "tokensUnseeded", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "reserveReturned", - type: "uint256", - }, - ], - name: "Unseed", - 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: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "phase_", - type: "uint256", - }, - ], - name: "blockNumberForPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burn", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "burnFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "currentPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "decimals", - outputs: [ - { - internalType: "uint8", - name: "", - type: "uint8", - }, - ], - stateMutability: "pure", - 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: [], - name: "highwater", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - 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: [ - { - components: [ - { - internalType: "contract IERC20", - name: "reserve", - type: "address", - }, - { - internalType: "address", - name: "recipient", - type: "address", - }, - { - internalType: "uint256", - name: "seedPrice", - type: "uint256", - }, - { - internalType: "uint256", - name: "cooldownDuration", - type: "uint256", - }, - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "address", - name: "distributor", - type: "address", - }, - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - internalType: "struct ERC20Config", - name: "erc20Config", - type: "tuple", - }, - ], - internalType: "struct SeedERC20Config", - name: "config_", - type: "tuple", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newTreasuryAsset_", - type: "address", - }, - ], - name: "newTreasuryAsset", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "blockNumber_", - type: "uint256", - }, - ], - name: "phaseAtBlockNumber", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "phaseBlocks", - outputs: [ - { - internalType: "uint32", - name: "", - type: "uint32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "amount_", - type: "uint256", - }, - ], - name: "pullERC20", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "units_", - type: "uint256", - }, - { - internalType: "uint256", - name: "safetyRelease_", - type: "uint256", - }, - ], - name: "redeem", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "minimumUnits_", - type: "uint256", - }, - { - internalType: "uint256", - name: "desiredUnits_", - type: "uint256", - }, - ], - name: "seed", - outputs: [], - stateMutability: "nonpayable", - 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", - }, - { - inputs: [ - { - internalType: "uint256", - name: "units_", - type: "uint256", - }, - ], - name: "unseed", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b506134b3806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806370a08231116100e3578063a9059cbb1161008c578063dd62ed3e11610066578063dd62ed3e14610366578063f6d5a766146103ac578063fed8ea71146103bf57600080fd5b8063a9059cbb1461032d578063b7a3c82814610340578063b8ffd02c1461035357600080fd5b806395d89b41116100bd57806395d89b41146102ea5780639923c94b146102f2578063a457c2d71461031a57600080fd5b806370a082311461028e57806379cc6790146102c45780637cbc2373146102d757600080fd5b806318160ddd11610145578063395093511161011f578063395093511461025557806342966c6814610268578063634991af1461027b57600080fd5b806318160ddd1461022b57806323b872dd14610233578063313ce5671461024657600080fd5b8063094890961161017657806309489096146101e2578063095ea7b3146101f5578063166a00e41461021857600080fd5b8063038ef03e1461019d578063055ad42e146101b257806306fdde03146101cd575b600080fd5b6101b06101ab366004612e10565b6103c8565b005b6101ba61041a565b6040519081526020015b60405180910390f35b6101d5610485565b6040516101c49190612e59565b6101b06101f0366004612eaa565b610517565b610208610203366004612ec3565b6107b2565b60405190151581526020016101c4565b6101b0610226366004612eef565b6107cc565b6039546101ba565b610208610241366004612f11565b610ca0565b604051600081526020016101c4565b610208610263366004612ec3565b610cc6565b6101b0610276366004612eaa565b610d12565b6101ba610289366004612fcd565b610d1f565b6101ba61029c366004612e10565b73ffffffffffffffffffffffffffffffffffffffff1660009081526037602052604090205490565b6101b06102d2366004612ec3565b610d73565b6101b06102e5366004612eef565b610d8c565b6101d5610fb7565b610305610300366004612eaa565b610fc6565b60405163ffffffff90911681526020016101c4565b610208610328366004612ec3565b610ff6565b61020861033b366004612ec3565b6110d2565b6101b061034e366004612eaa565b6110e0565b6101ba610361366004612fcd565b61110b565b6101ba610374366004613063565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260386020908152604080832093909416825291909152205490565b6101b06103ba366004613147565b61114a565b6101ba60a15481565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161048091906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610439579050505050505043610d1f565b905090565b6060603a805461049490613265565b80601f01602080910402602001604051908101604052809291908181526020018280546104c090613265565b801561050d5780601f106104e25761010080835404028352916020019161050d565b820191906000526020600020905b8154815290600101906020018083116104f057829003601f168201915b5050505050905090565b60018061052261041a565b1461058e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60045460009073ffffffffffffffffffffffffffffffffffffffff16156105cd5760045473ffffffffffffffffffffffffffffffffffffffff166105fb565b600480547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915043101561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610585565b60006002544361069d91906132e8565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260036020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600084609f546107119190613300565b905061071e333087611560565b60408051338152602081018790529081018290527fa7a28d973038da3f8f74915d4ba1108930a16dfd6c9f81bf3881c858e08568369060600160405180910390a1609d546107839073ffffffffffffffffffffffffffffffffffffffff163383611815565b5050600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050565b6000336107c08185856118ee565b60019150505b92915050565b6001806107d761041a565b1461083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610585565b60045460009073ffffffffffffffffffffffffffffffffffffffff161561087d5760045473ffffffffffffffffffffffffffffffffffffffff166108ab565b600480547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526003602052604090205490915043101561093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610585565b60006002544361094d91906132e8565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260036020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160008411610a1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f444553495245445f3000000000000000000000000000000000000000000000006044820152606401610585565b83851115610a85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f444553495245440000000000000000000000006044820152606401610585565b3060009081526037602052604090205480861115610aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b00000000000000000000000000006044820152606401610585565b6000610b0b8683611aa1565b9050600081609f54610b1d9190613300565b905081831415610b3257610b32600243611ab7565b610b3d303384611560565b60408051338152602081018490529081018290527fcfbc75cbfc5b8b5055f9bbb6b60bdf5394eb8dc9a09770d5deedd7d4f82d79169060600160405180910390a1609d54610ba39073ffffffffffffffffffffffffffffffffffffffff16333084611d60565b6002610bad61041a565b1415610c6e57609e54609d546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610c6e9273ffffffffffffffffffffffffffffffffffffffff9081169216906370a0823190602401602060405180830381865afa158015610c2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4e919061333d565b609d5473ffffffffffffffffffffffffffffffffffffffff169190611815565b5050600480547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b600033610cae858285611dbe565b610cb9858585611560565b60019150505b9392505050565b33600081815260386020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906107c09082908690610d0d9087906132e8565b6118ee565b610d1c3382611e8f565b50565b6000805b6008811015610d6957838160088110610d3e57610d3e613356565b602002015163ffffffff16831015610d575790506107c6565b80610d6181613385565b915050610d23565b5060089392505050565b610d7e823383611dbe565b610d888282611e8f565b5050565b600280610d9761041a565b14610dfe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610585565b609d546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610e6d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e91919061333d565b60a15490915081811015610ea7575060a1819055805b60a054610eb485836132e8565b1015610f1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f524553455256455f42414c414e434500000000000000000000000000000000006044820152606401610585565b604080516001808252818301909252600091602080830190803683375050609d54825192935073ffffffffffffffffffffffffffffffffffffffff1691839150600090610f6b57610f6b613356565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050610faf818761207c565b505050505050565b6060603b805461049490613265565b60018160088110610fd657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260386020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610585565b6110c782868684036118ee565b506001949350505050565b6000336107c0818585611560565b609b54609c54610d1c9173ffffffffffffffffffffffffffffffffffffffff91821691163084611d60565b600080821161111b57600061113d565b826111276001846133be565b6008811061113757611137613356565b60200201515b63ffffffff169392505050565b600054610100900460ff166111655760005460ff1615611169565b303b155b6111f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610585565b600054610100900460ff1615801561123457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b60008260400151116112a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50524943455f30000000000000000000000000000000000000000000000000006044820152606401610585565b600082608001516060015111611314576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f535550504c595f300000000000000000000000000000000000000000000000006044820152606401610585565b602082015173ffffffffffffffffffffffffffffffffffffffff16611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f524543495049454e545f300000000000000000000000000000000000000000006044820152606401610585565b61139d612421565b6113aa82606001516124cb565b608082018051306040909101525180516020909101516113ca9190612580565b6113e4826080015160400151836080015160600151612621565b6114356040518060400160405280846020015173ffffffffffffffffffffffffffffffffffffffff168152602001846000015173ffffffffffffffffffffffffffffffffffffffff16815250612741565b6020820151609e805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216179091558351609d80549190931691161790556040820151609f8190556080830151606001516114a991613300565b60a05581516114b7906103c8565b6020808301518351604080860151815133815273ffffffffffffffffffffffffffffffffffffffff94851695810195909552929091169083015260608201527fc38c89ccc76be750f6667bd27ef37d3fa8061eb6451003ba3008ac6b00fa17339060800160405180910390a161152e600143611ab7565b8015610d8857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b73ffffffffffffffffffffffffffffffffffffffff8316611603576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff82166116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603760205260409020548181101561175c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603760205260408082208585039055918516815290812080548492906117a09084906132e8565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161180691815260200190565b60405180910390a35b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118e99084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526128ff565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316611990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff8216611a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526038602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000818310611ab05781610cbf565b5090919050565b80431115611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f5041535400000000000000000000000000000000006044820152606401610585565b63ffffffff8110611b8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a454400000000000000006044820152606401610585565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611bba61041a565b14611c21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f5048415345000000000000000000000000000000000000000000006044820152606401610585565b60018160088110611c3457611c34613356565b60088104919091015460079091166004026101000a900463ffffffff90811614611cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f5345540000000000000000000000000000000000006044820152606401610585565b8160018260088110611cce57611cce613356565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611d539392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261180f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611867565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603860209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461180f5781811015611e82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610585565b61180f84848484036118ee565b73ffffffffffffffffffffffffffffffffffffffff8216611f32576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff821660009081526037602052604090205481811015611fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff831660009081526037602052604081208383039055603980548492906120249084906133be565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b815160008167ffffffffffffffff81111561209957612099612f52565b6040519080825280602002602001820160405280156120c2578160200160208202803683370190505b5090506000821161212f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f41535345545300000000000000000000000000000000000000006044820152606401610585565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561217c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121a0919061333d565b90506000805b848110156123935782868883815181106121c2576121c2613356565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612238573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061225c919061333d565b6122669190613300565b61227091906133d5565b9150600082116122dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e540000000000000000000000000000000000000000006044820152606401610585565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061231057612310613356565b6020026020010151888560405161235b949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061237657612376613356565b60209081029190910101528061238b81613385565b9150506121a6565b5061239e3386611e8f565b60005b8481101561241857612406338583815181106123bf576123bf613356565b60200260200101518984815181106123d9576123d9613356565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166118159092919063ffffffff16565b8061241081613385565b9150506123a1565b50505050505050565b6001805463ffffffff161061243857612438613410565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526124896001826008612cc9565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39060600161040f565b60008111612535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f30000000000000000000000000000000000000000000006044820152606401610585565b6002541561254557612545613410565b600281905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910161040f565b600054610100900460ff16612617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610585565b610d888282612a0b565b73ffffffffffffffffffffffffffffffffffffffff821661269e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610585565b80603960008282546126b091906132e8565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260376020526040812080548392906126ea9084906132e8565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b805173ffffffffffffffffffffffffffffffffffffffff163b6127c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f454f415f53454e444552000000000000000000000000000000000000000000006044820152606401610585565b602081015173ffffffffffffffffffffffffffffffffffffffff16612841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f5a45524f5f544f4b454e000000000000000000000000000000000000000000006044820152606401610585565b609c5473ffffffffffffffffffffffffffffffffffffffff161561286757612867613410565b8051609b805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255602080850151609c805491909516921682179093556040805133815293840192909252908201527fe67a5c2dcf68e8fac05314f53ecd2ff0b403ed683c4bfdad15eaec7a8a63f5559060600161040f565b6000612961826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612ac99092919063ffffffff16565b8051909150156118e9578080602001905181019061297f919061343f565b6118e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610585565b600054610100900460ff16612aa2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610585565b8151612ab590603a906020850190612d65565b5080516118e990603b906020840190612d65565b6060612ad88484600085612ae0565b949350505050565b606082471015612b72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612c199190613461565b60006040518083038185875af1925050503d8060008114612c56576040519150601f19603f3d011682016040523d82523d6000602084013e612c5b565b606091505b5091509150612c6b828286612c76565b979650505050505050565b60608315612c85575081610cbf565b825115612c955782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105859190612e59565b600183019183908215612d555791602002820160005b83821115612d2357835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612cdf565b8015612d535782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612d23565b505b50612d61929150612dd9565b5090565b828054612d7190613265565b90600052602060002090601f016020900481019282612d935760008555612d55565b82601f10612dac57805160ff1916838001178555612d55565b82800160010185558215612d55579182015b82811115612d55578251825591602001919060010190612dbe565b5b80821115612d615760008155600101612dda565b73ffffffffffffffffffffffffffffffffffffffff81168114610d1c57600080fd5b600060208284031215612e2257600080fd5b8135610cbf81612dee565b60005b83811015612e48578181015183820152602001612e30565b8381111561180f5750506000910152565b6020815260008251806020840152612e78816040850160208701612e2d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600060208284031215612ebc57600080fd5b5035919050565b60008060408385031215612ed657600080fd5b8235612ee181612dee565b946020939093013593505050565b60008060408385031215612f0257600080fd5b50508035926020909101359150565b600080600060608486031215612f2657600080fd5b8335612f3181612dee565b92506020840135612f4181612dee565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715612fa457612fa4612f52565b60405290565b6040516080810167ffffffffffffffff81118282101715612fa457612fa4612f52565b6000806101208385031215612fe157600080fd5b83601f840112612ff057600080fd5b60405161010080820182811067ffffffffffffffff8211171561301557613015612f52565b6040528401818682111561302857600080fd5b855b8281101561305557803563ffffffff811681146130475760008081fd5b82526020918201910161302a565b509196903595509350505050565b6000806040838503121561307657600080fd5b823561308181612dee565b9150602083013561309181612dee565b809150509250929050565b600082601f8301126130ad57600080fd5b813567ffffffffffffffff808211156130c8576130c8612f52565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561310e5761310e612f52565b8160405283815286602085880101111561312757600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561315957600080fd5b813567ffffffffffffffff8082111561317157600080fd5b9083019060a0828603121561318557600080fd5b61318d612f81565b823561319881612dee565b815260208301356131a881612dee565b8060208301525060408301356040820152606083013560608201526080830135828111156131d557600080fd5b9290920191608083870312156131ea57600080fd5b6131f2612faa565b83358381111561320157600080fd5b61320d8882870161309c565b82525060208401358381111561322257600080fd5b61322e8882870161309c565b6020830152506040840135925061324483612dee565b60408101929092526060928301359282019290925260808201529392505050565b600181811c9082168061327957607f821691505b602082108114156132b3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156132fb576132fb6132b9565b500190565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613338576133386132b9565b500290565b60006020828403121561334f57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156133b7576133b76132b9565b5060010190565b6000828210156133d0576133d06132b9565b500390565b60008261340b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561345157600080fd5b81518015158114610cbf57600080fd5b60008251613473818460208701612e2d565b919091019291505056fea26469706673582212208935541b1ec091e23de8a78f260dccd653c8b747156e4db14d6f8d0d93a0633564736f6c634300080a0033"; - -type SeedERC20ConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SeedERC20ConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class SeedERC20__factory extends ContractFactory { - constructor(...args: SeedERC20ConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): SeedERC20 { - return super.attach(address) as SeedERC20; - } - connect(signer: Signer): SeedERC20__factory { - return super.connect(signer) as SeedERC20__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SeedERC20Interface { - return new utils.Interface(_abi) as SeedERC20Interface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SeedERC20 { - return new Contract(address, _abi, signerOrProvider) as SeedERC20; - } -} diff --git a/src/typechain/factories/SmartPoolManager__factory.ts b/src/typechain/factories/SmartPoolManager__factory.ts deleted file mode 100644 index 0657ffc..0000000 --- a/src/typechain/factories/SmartPoolManager__factory.ts +++ /dev/null @@ -1,305 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - SmartPoolManager, - SmartPoolManagerInterface, -} from "../SmartPoolManager"; - -const _abi = [ - { - inputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "self", - type: "IConfigurableRightsPool", - }, - { - internalType: "contract IBPool", - name: "bPool", - type: "IBPool", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "minAmountsOut", - type: "uint256[]", - }, - ], - name: "exitPool", - outputs: [ - { - internalType: "uint256", - name: "exitFee", - type: "uint256", - }, - { - internalType: "uint256", - name: "pAiAfterExitFee", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "actualAmountsOut", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "self", - type: "IConfigurableRightsPool", - }, - { - internalType: "contract IBPool", - name: "bPool", - type: "IBPool", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPoolAmountIn", - type: "uint256", - }, - ], - name: "exitswapExternAmountOut", - outputs: [ - { - internalType: "uint256", - name: "exitFee", - type: "uint256", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "self", - type: "IConfigurableRightsPool", - }, - { - internalType: "contract IBPool", - name: "bPool", - type: "IBPool", - }, - { - internalType: "address", - name: "tokenOut", - type: "address", - }, - { - internalType: "uint256", - name: "poolAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "minAmountOut", - type: "uint256", - }, - ], - name: "exitswapPoolAmountIn", - outputs: [ - { - internalType: "uint256", - name: "exitFee", - type: "uint256", - }, - { - internalType: "uint256", - name: "tokenAmountOut", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "self", - type: "IConfigurableRightsPool", - }, - { - internalType: "contract IBPool", - name: "bPool", - type: "IBPool", - }, - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "maxAmountsIn", - type: "uint256[]", - }, - ], - name: "joinPool", - outputs: [ - { - internalType: "uint256[]", - name: "actualAmountsIn", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "self", - type: "IConfigurableRightsPool", - }, - { - internalType: "contract IBPool", - name: "bPool", - type: "IBPool", - }, - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - { - internalType: "uint256", - name: "minPoolAmountOut", - type: "uint256", - }, - ], - name: "joinswapExternAmountIn", - outputs: [ - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "self", - type: "IConfigurableRightsPool", - }, - { - internalType: "contract IBPool", - name: "bPool", - type: "IBPool", - }, - { - internalType: "address", - name: "tokenIn", - type: "address", - }, - { - internalType: "uint256", - name: "poolAmountOut", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxAmountIn", - type: "uint256", - }, - ], - name: "joinswapPoolAmountOut", - outputs: [ - { - internalType: "uint256", - name: "tokenAmountIn", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x614df4610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100f45760003560e01c806382495b4511610096578063d505a94e11610070578063d505a94e14610247578063df90de0b1461025a578063efa587741461026d578063f544aa1c1461028d576100f4565b806382495b45146101e7578063a1925f1d14610207578063b489ec1914610227576100f4565b80635471c3e4116100d25780635471c3e41461015b5780636a6dc6e714610186578063724a2d53146101a657806377d44349146101c7576100f4565b80630970e47f146100f957806313b8bf241461011b5780631c1af1361461013b575b600080fd5b81801561010557600080fd5b50610119610114366004614439565b6102ad565b005b81801561012757600080fd5b506101196101363660046143c4565b610822565b81801561014757600080fd5b50610119610156366004614206565b610be8565b61016e61016936600461452d565b610bf4565b60405161017d93929190614d2e565b60405180910390f35b6101996101943660046144d3565b610f7a565b60405161017d9190614d17565b6101b96101b43660046144d3565b6114f6565b60405161017d929190614d20565b8180156101d357600080fd5b506101196101e236600461423e565b611a67565b8180156101f357600080fd5b50610119610202366004614399565b611aa8565b61021a61021536600461452d565b611e89565b60405161017d9190614702565b81801561023357600080fd5b50610119610242366004614349565b6121f1565b6101b96102553660046144d3565b6124f0565b6101996102683660046144d3565b6129c0565b81801561027957600080fd5b5061011961028836600461459e565b612e9e565b81801561029957600080fd5b506101196102a8366004614483565b613381565b60008373ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156102f557600080fd5b505afa158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d91906145e3565b905060006104496103c6838673ffffffffffffffffffffffffffffffffffffffff1663948d8ce6876040518263ffffffff1660e01b81526004016103719190614635565b60206040518083038186803b15801561038957600080fd5b505afa15801561039d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103c191906145e3565b613bef565b8573ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b15801561040c57600080fd5b505afa158015610420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044491906145e3565b613ca2565b905060008473ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f856040518263ffffffff1660e01b81526004016104869190614635565b60206040518083038186803b15801561049e57600080fd5b505afa1580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d691906145e3565b6040517fcf5e7bd300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff86169063cf5e7bd39061052b908790600401614635565b600060405180830381600087803b15801561054557600080fd5b505af1158015610559573d6000803e3d6000fd5b5050505060008473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8873ffffffffffffffffffffffffffffffffffffffff16633018205f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c157600080fd5b505afa1580156105d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f99190614222565b846040518363ffffffff1660e01b8152600401610617929190614687565b602060405180830381600087803b15801561063157600080fd5b505af1158015610645573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106699190614329565b9050806106ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c72565b60405180910390fd5b8673ffffffffffffffffffffffffffffffffffffffff166355c32a238873ffffffffffffffffffffffffffffffffffffffff16633018205f6040518163ffffffff1660e01b815260040160206040518083038186803b15801561070d57600080fd5b505afa158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190614222565b856040518363ffffffff1660e01b8152600401610763929190614687565b600060405180830381600087803b15801561077d57600080fd5b505af1158015610791573d6000803e3d6000fd5b50506040517f220eb76000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16925063220eb76091506107e7908690600401614d17565b600060405180830381600087803b15801561080157600080fd5b505af1158015610815573d6000803e3d6000fd5b5050505050505050505050565b81431061085b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061474c565b8243111561086b5743865561086f565b8286555b8061087e838860000154613d81565b10156108b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614783565b60608773ffffffffffffffffffffffffffffffffffffffff1663cc77828d6040518163ffffffff1660e01b815260040160006040518083038186803b1580156108fe57600080fd5b505afa158015610912573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610958919081019061427e565b80519091508514610995576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906147b8565b6000815167ffffffffffffffff811180156109af57600080fd5b506040519080825280602002602001820160405280156109d9578160200160208202803683370190505b5080516109f09160028b019160209091019061411e565b5060005b8251811015610b83576802b5e3af16b1880000888883818110610a1357fe5b905060200201351115610a52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614b28565b670de0b6b3a7640000888883818110610a6757fe5b905060200201351015610aa6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a4c565b610ac282898984818110610ab657fe5b90506020020135613dd4565b91508973ffffffffffffffffffffffffffffffffffffffff1663948d8ce6848381518110610aec57fe5b60200260200101516040518263ffffffff1660e01b8152600401610b109190614635565b60206040518083038186803b158015610b2857600080fd5b505afa158015610b3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6091906145e3565b896002018281548110610b6f57fe5b6000918252602090912001556001016109f4565b506802b5e3af16b1880000811115610bc7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906148cb565b60018801849055610bdc600389018888614169565b50505050505050505050565b610bf181613e1a565b50565b6000806060808773ffffffffffffffffffffffffffffffffffffffff1663cc77828d6040518163ffffffff1660e01b815260040160006040518083038186803b158015610c4057600080fd5b505afa158015610c54573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c9a919081019061427e565b80519091508514610cd7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614902565b60008973ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d1f57600080fd5b505afa158015610d33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5791906145e3565b9050610d64886000613bef565b9450610d708886613d81565b93506000610d8385610444846001613dd4565b905080610dbc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061485d565b825167ffffffffffffffff81118015610dd457600080fd5b50604051908082528060200260200182016040528015610dfe578160200160208202803683370190505b50935060005b8351811015610f6b576000848281518110610e1b57fe5b6020026020010151905060008c73ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f836040518263ffffffff1660e01b8152600401610e609190614635565b60206040518083038186803b158015610e7857600080fd5b505afa158015610e8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb091906145e3565b90506000610ec3856103c1846001613d81565b905080610efc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061485d565b8b8b85818110610f0857fe5b90506020020135811015610f48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614939565b80888581518110610f5557fe5b6020908102919091010152505050600101610e04565b50505050955095509592505050565b6040517f2f37b62400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff861690632f37b62490610fcf908790600401614635565b60206040518083038186803b158015610fe757600080fd5b505afa158015610ffb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061101f9190614329565b611055576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614aba565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690635c1bbaf790829063f8b2cb4f906110af908990600401614635565b60206040518083038186803b1580156110c757600080fd5b505afa1580156110db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ff91906145e3565b6040517f948d8ce600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169063948d8ce690611151908a90600401614635565b60206040518083038186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a191906145e3565b8973ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111e757600080fd5b505afa1580156111fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061121f91906145e3565b8973ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b15801561126557600080fd5b505afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d91906145e3565b888b73ffffffffffffffffffffffffffffffffffffffff1663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b1580156112e457600080fd5b505afa1580156112f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061131c91906145e3565b6040518763ffffffff1660e01b815260040161133d96959493929190614d4d565b60206040518083038186803b15801561135557600080fd5b505afa158015611369573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061138d91906145e3565b9050806113c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061485d565b81811115611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a15565b6040517ff8b2cb4f0000000000000000000000000000000000000000000000000000000081526114b49073ffffffffffffffffffffffffffffffffffffffff87169063f8b2cb4f90611456908890600401614635565b60206040518083038186803b15801561146e57600080fd5b505afa158015611482573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a691906145e3565b6706f05b59d3b20000613bef565b8111156114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614826565b95945050505050565b6000808573ffffffffffffffffffffffffffffffffffffffff16632f37b624866040518263ffffffff1660e01b81526004016115329190614635565b60206040518083038186803b15801561154a57600080fd5b505afa15801561155e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115829190614329565b6115b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614aba565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815261166c9073ffffffffffffffffffffffffffffffffffffffff88169063f8b2cb4f9061160e908990600401614635565b60206040518083038186803b15801561162657600080fd5b505afa15801561163a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165e91906145e3565b6704a03ce68d215556613bef565b8411156116a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a83565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8716906382f652ad90829063f8b2cb4f906116ff908a90600401614635565b60206040518083038186803b15801561171757600080fd5b505afa15801561172b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174f91906145e3565b6040517f948d8ce600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063948d8ce6906117a1908b90600401614635565b60206040518083038186803b1580156117b957600080fd5b505afa1580156117cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117f191906145e3565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561183757600080fd5b505afa15801561184b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186f91906145e3565b8a73ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b1580156118b557600080fd5b505afa1580156118c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ed91906145e3565b898c73ffffffffffffffffffffffffffffffffffffffff1663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b15801561193457600080fd5b505afa158015611948573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196c91906145e3565b6040518763ffffffff1660e01b815260040161198d96959493929190614d4d565b60206040518083038186803b1580156119a557600080fd5b505afa1580156119b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119dd91906145e3565b905080611a16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061485d565b82811115611a50576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a15565b611a5b816000613bef565b91509550959350505050565b60005b81811015611aa357611a9b838383818110611a8157fe5b9050602002016020810190611a969190614206565b613e1a565b600101611a6a565b505050565b8054611ab357611e85565b8054431015611aee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906149a7565b60008160010154431115611b0757506001810154611b0a565b50435b6000611b1e83600101548460000154613d81565b90506000611b30838560000154613d81565b9050600080600060608873ffffffffffffffffffffffffffffffffffffffff1663cc77828d6040518163ffffffff1660e01b815260040160006040518083038186803b158015611b7f57600080fd5b505afa158015611b93573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611bd9919081019061427e565b905060005b8151811015611e6c57886003018181548110611bf657fe5b9060005260206000200154896002018281548110611c1057fe5b906000526020600020015414611e6457886002018181548110611c2f57fe5b9060005260206000200154896003018281548110611c4957fe5b90600052602060002001541015611cd757611c96896002018281548110611c6c57fe5b90600052602060002001548a6003018381548110611c8657fe5b9060005260206000200154613d81565b9450611ca28588613ca2565b9350611cd0896002018281548110611cb657fe5b9060005260206000200154611ccb8887613bef565b613d81565b9250611d40565b611d03896003018281548110611ce957fe5b90600052602060002001548a6002018381548110611c8657fe5b9450611d0f8588613ca2565b9350611d3d896002018281548110611d2357fe5b9060005260206000200154611d388887613bef565b613dd4565b92505b60008a73ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f848481518110611d6a57fe5b60200260200101516040518263ffffffff1660e01b8152600401611d8e9190614635565b60206040518083038186803b158015611da657600080fd5b505afa158015611dba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dde91906145e3565b90508a73ffffffffffffffffffffffffffffffffffffffff16633fdddaa2848481518110611e0857fe5b602002602001015183876040518463ffffffff1660e01b8152600401611e30939291906146d4565b600060405180830381600087803b158015611e4a57600080fd5b505af1158015611e5e573d6000803e3d6000fd5b50505050505b600101611bde565b5087600101544310611e7d57600088555b505050505050505b5050565b6060808573ffffffffffffffffffffffffffffffffffffffff1663cc77828d6040518163ffffffff1660e01b815260040160006040518083038186803b158015611ed257600080fd5b505afa158015611ee6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f2c919081019061427e565b80519091508314611f69576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614902565b60008773ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015611fb157600080fd5b505afa158015611fc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fe991906145e3565b90506000611ffc87610444846001613d81565b905080612035576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061485d565b825167ffffffffffffffff8111801561204d57600080fd5b50604051908082528060200260200182016040528015612077578160200160208202803683370190505b50935060005b83518110156121e457600084828151811061209457fe5b6020026020010151905060008a73ffffffffffffffffffffffffffffffffffffffff1663f8b2cb4f836040518263ffffffff1660e01b81526004016120d99190614635565b60206040518083038186803b1580156120f157600080fd5b505afa158015612105573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212991906145e3565b9050600061213c856103c1846001613dd4565b905080612175576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a29061485d565b89898581811061218157fe5b905060200201358111156121c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a15565b808885815181106121ce57fe5b602090810291909101015250505060010161207d565b5050505095945050505050565b6040517f2f37b62400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690632f37b62490612243908790600401614635565b60206040518083038186803b15801561225b57600080fd5b505afa15801561226f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122939190614329565b156122ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906147ef565b6802b5e3af16b188000082111561230d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614b28565b670de0b6b3a764000082101561234f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a4c565b670de0b6b3a76400006032026123e28673ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b1580156123a457600080fd5b505afa1580156123b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123dc91906145e3565b84613dd4565b111561241a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906148cb565b64e8d4a51000831015612459576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c3b565b805460038201939093556002810191909155436001820155740100000000000000000000000000000000000000007fffffffffffffffffffffffff000000000000000000000000000000000000000090921673ffffffffffffffffffffffffffffffffffffffff93909316929092177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1617905550565b6000808573ffffffffffffffffffffffffffffffffffffffff16632f37b624866040518263ffffffff1660e01b815260040161252c9190614635565b60206040518083038186803b15801561254457600080fd5b505afa158015612558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257c9190614329565b6125b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614aba565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690638929801290829063f8b2cb4f9061260c908a90600401614635565b60206040518083038186803b15801561262457600080fd5b505afa158015612638573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061265c91906145e3565b6040517f948d8ce600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169063948d8ce6906126ae908b90600401614635565b60206040518083038186803b1580156126c657600080fd5b505afa1580156126da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126fe91906145e3565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561274457600080fd5b505afa158015612758573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061277c91906145e3565b8a73ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b1580156127c257600080fd5b505afa1580156127d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fa91906145e3565b898c73ffffffffffffffffffffffffffffffffffffffff1663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b15801561284157600080fd5b505afa158015612855573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287991906145e3565b6040518763ffffffff1660e01b815260040161289a96959493929190614d4d565b60206040518083038186803b1580156128b257600080fd5b505afa1580156128c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128ea91906145e3565b905082811015612926576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614939565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815261297c9073ffffffffffffffffffffffffffffffffffffffff88169063f8b2cb4f9061160e908990600401614635565b8111156129b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614a83565b611a5b846000613bef565b6040517f2f37b62400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff861690632f37b62490612a15908790600401614635565b60206040518083038186803b158015612a2d57600080fd5b505afa158015612a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a659190614329565b612a9b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614aba565b6040517ff8b2cb4f000000000000000000000000000000000000000000000000000000008152612af19073ffffffffffffffffffffffffffffffffffffffff87169063f8b2cb4f90611456908890600401614635565b831115612b2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614826565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861690638656b65390829063f8b2cb4f90612b84908990600401614635565b60206040518083038186803b158015612b9c57600080fd5b505afa158015612bb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bd491906145e3565b6040517f948d8ce600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89169063948d8ce690612c26908a90600401614635565b60206040518083038186803b158015612c3e57600080fd5b505afa158015612c52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c7691906145e3565b8973ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cbc57600080fd5b505afa158015612cd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cf491906145e3565b8973ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b158015612d3a57600080fd5b505afa158015612d4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7291906145e3565b888b73ffffffffffffffffffffffffffffffffffffffff1663d4cadf686040518163ffffffff1660e01b815260040160206040518083038186803b158015612db957600080fd5b505afa158015612dcd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612df191906145e3565b6040518763ffffffff1660e01b8152600401612e1296959493929190614d4d565b60206040518083038186803b158015612e2a57600080fd5b505afa158015612e3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e6291906145e3565b9050818110156114ed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614939565b805474010000000000000000000000000000000000000000900460ff16612ef1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614715565b81612f00438360010154613d81565b1015612f38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614b5f565b60008473ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015612f8057600080fd5b505afa158015612f94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb891906145e3565b90506000613013612fcd838560020154613bef565b8673ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b15801561040c57600080fd5b83547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff81168555604080517f3018205f000000000000000000000000000000000000000000000000000000008152905192935060009273ffffffffffffffffffffffffffffffffffffffff928316926323b872dd92908b1691633018205f91600480820192602092909190829003018186803b1580156130b257600080fd5b505afa1580156130c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130ea9190614222565b8987600301546040518463ffffffff1660e01b815260040161310e93929190614656565b602060405180830381600087803b15801561312857600080fd5b505af115801561313c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131609190614329565b905080613199576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c72565b83546131dc9073ffffffffffffffffffffffffffffffffffffffff16877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613efc565b905080613215576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c72565b8354600385015460028601546040517fe4e1e53800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808b169463e4e1e538946132779491909216926004016146d4565b600060405180830381600087803b15801561329157600080fd5b505af11580156132a5573d6000803e3d6000fd5b50506040517f4ba5788200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a169250634ba5788291506132fb908590600401614d17565b600060405180830381600087803b15801561331557600080fd5b505af1158015613329573d6000803e3d6000fd5b50506040517f095dcccc00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16925063095dcccc91506107e79033908690600401614687565b670de0b6b3a76400008110156133c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614af1565b6802b5e3af16b1880000811115613406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614894565b6040517f948d8ce600000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff85169063948d8ce69061345b908690600401614635565b60206040518083038186803b15801561347357600080fd5b505afa158015613487573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134ab91906145e3565b9050818114156134bb5750613be9565b6040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff86169063f8b2cb4f90613510908790600401614635565b60206040518083038186803b15801561352857600080fd5b505afa15801561353c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061356091906145e3565b905060008673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156135aa57600080fd5b505afa1580156135be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135e291906145e3565b905060008673ffffffffffffffffffffffffffffffffffffffff1663936c34776040518163ffffffff1660e01b815260040160206040518083038186803b15801561362c57600080fd5b505afa158015613640573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366491906145e3565b90506000806000808789101561394c5761367e888a613d81565b915061368e866103c18488613ca2565b935061369e876103c1848b613ca2565b92506136aa8784613d81565b905064e8d4a510008110156136eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614970565b6040517f3fdddaa200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c1690633fdddaa290613741908d9085908e906004016146d4565b600060405180830381600087803b15801561375b57600080fd5b505af115801561376f573d6000803e3d6000fd5b50506040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526000925073ffffffffffffffffffffffffffffffffffffffff8d16915063a9059cbb906137ca9033908890600401614687565b602060405180830381600087803b1580156137e457600080fd5b505af11580156137f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061381c9190614329565b905080613855576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c72565b6040517f55c32a2300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8e16906355c32a23906138a99033908990600401614687565b600060405180830381600087803b1580156138c357600080fd5b505af11580156138d7573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663220eb760866040518263ffffffff1660e01b81526004016139149190614d17565b600060405180830381600087803b15801561392e57600080fd5b505af1158015613942573d6000803e3d6000fd5b5050505050613be0565b6139568989613d81565b91506802b5e3af16b188000061396c8684613dd4565b11156139a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906148cb565b6139b2866103c18488613ca2565b93506139c2876103c1848b613ca2565b925060008a73ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401613a0393929190614656565b602060405180830381600087803b158015613a1d57600080fd5b505af1158015613a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a559190614329565b905080613a8e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c72565b8b73ffffffffffffffffffffffffffffffffffffffff16633fdddaa28c613ab58b88613dd4565b8d6040518463ffffffff1660e01b8152600401613ad4939291906146d4565b600060405180830381600087803b158015613aee57600080fd5b505af1158015613b02573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff16634ba57882866040518263ffffffff1660e01b8152600401613b3f9190614d17565b600060405180830381600087803b158015613b5957600080fd5b505af1158015613b6d573d6000803e3d6000fd5b505050508c73ffffffffffffffffffffffffffffffffffffffff1663095dcccc33876040518363ffffffff1660e01b8152600401613bac929190614687565b600060405180830381600087803b158015613bc657600080fd5b505af1158015613bda573d6000803e3d6000fd5b50505050505b50505050505050505b50505050565b600082613bfe57506000613c9c565b82820282848281613c0b57fe5b0414613c43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614b96565b6706f05b59d3b20000810181811015613c88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614b96565b6000670de0b6b3a7640000825b0493505050505b92915050565b600081613cdb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614c04565b82613ce857506000613c9c565b670de0b6b3a764000083810290848281613cfe57fe5b0414613d36576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906149de565b60028304810181811015613d76576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a2906149de565b6000848281613c9557fe5b6000806000613d9085856140f9565b915091508015613dcc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614ca9565b509392505050565b600082820183811015613e13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614ce0565b9392505050565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff83169063a9059cbb90613e719033908590600401614687565b602060405180830381600087803b158015613e8b57600080fd5b505af1158015613e9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ec39190614329565b905080611e85576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a290614bcd565b6000808473ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30866040518363ffffffff1660e01b8152600401613f3a9291906146ad565b60206040518083038186803b158015613f5257600080fd5b505afa158015613f66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f8a91906145e3565b905082811415613f9e576001915050613e13565b8015614053576040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b390613ff9908790600090600401614687565b602060405180830381600087803b15801561401357600080fd5b505af1158015614027573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061404b9190614329565b915050613e13565b6040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff86169063095ea7b3906140a79087908790600401614687565b602060405180830381600087803b1580156140c157600080fd5b505af11580156140d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ed9190614329565b60008083831161410f5750508082036000614117565b505081810360015b9250929050565b828054828255906000526020600020908101928215614159579160200282015b8281111561415957825182559160200191906001019061413e565b506141659291506141a4565b5090565b828054828255906000526020600020908101928215614159579160200282015b82811115614159578235825591602001919060010190614189565b5b8082111561416557600081556001016141a5565b8051613c9c81614d9c565b60008083601f8401126141d5578182fd5b50813567ffffffffffffffff8111156141ec578182fd5b602083019150836020808302850101111561411757600080fd5b600060208284031215614217578081fd5b8135613e1381614d9c565b600060208284031215614233578081fd5b8151613e1381614d9c565b60008060208385031215614250578081fd5b823567ffffffffffffffff811115614266578182fd5b614272858286016141c4565b90969095509350505050565b60006020808385031215614290578182fd5b825167ffffffffffffffff808211156142a7578384fd5b818501915085601f8301126142ba578384fd5b8151818111156142c8578485fd5b83810291506142d8848301614d75565b8181528481019084860184860187018a10156142f2578788fd5b8795505b8386101561431c576143088a826141b9565b8352600195909501949186019186016142f6565b5098975050505050505050565b60006020828403121561433a578081fd5b81518015158114613e13578182fd5b600080600080600060a08688031215614360578081fd5b853561436b81614d9c565b9450602086013561437b81614d9c565b94979496505050506040830135926060810135926080909101359150565b600080604083850312156143ab578182fd5b82356143b681614d9c565b946020939093013593505050565b600080600080600080600060c0888a0312156143de578182fd5b87356143e981614d9c565b965060208801359550604088013567ffffffffffffffff81111561440b578283fd5b6144178a828b016141c4565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060006060848603121561444d578283fd5b833561445881614d9c565b9250602084013561446881614d9c565b9150604084013561447881614d9c565b809150509250925092565b60008060008060808587031215614498578384fd5b84356144a381614d9c565b935060208501356144b381614d9c565b925060408501356144c381614d9c565b9396929550929360600135925050565b600080600080600060a086880312156144ea578283fd5b85356144f581614d9c565b9450602086013561450581614d9c565b9350604086013561451581614d9c565b94979396509394606081013594506080013592915050565b600080600080600060808688031215614544578283fd5b853561454f81614d9c565b9450602086013561455f81614d9c565b935060408601359250606086013567ffffffffffffffff811115614581578182fd5b61458d888289016141c4565b969995985093965092949392505050565b600080600080608085870312156145b3578182fd5b84356145be81614d9c565b935060208501356145ce81614d9c565b93969395505050506040820135916060013590565b6000602082840312156145f4578081fd5b5051919050565b6000815180845260208085019450808401835b8381101561462a5781518752958201959082019060010161460e565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b600060208252613e1360208301846145fb565b60208082526013908201527f4552525f4e4f5f544f4b454e5f434f4d4d495400000000000000000000000000604082015260600190565b6020808252601e908201527f4552525f4752414455414c5f5550444154455f54494d455f54524156454c0000604082015260600190565b6020808252818101527f4552525f5745494748545f4348414e47455f54494d455f42454c4f575f4d494e604082015260600190565b6020808252601a908201527f4552525f53544152545f574549474854535f4d49534d41544348000000000000604082015260600190565b6020808252600c908201527f4552525f49535f424f554e440000000000000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4d41585f494e5f524154494f00000000000000000000000000000000604082015260600190565b6020808252600f908201527f4552525f4d4154485f415050524f580000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f4d41585f574549474854000000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f4d41585f544f54414c5f574549474854000000000000000000000000604082015260600190565b60208082526014908201527f4552525f414d4f554e54535f4d49534d41544348000000000000000000000000604082015260600190565b6020808252600d908201527f4552525f4c494d49545f4f555400000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f4552525f4d494e5f42414c414e43450000000000000000000000000000000000604082015260600190565b60208082526011908201527f4552525f43414e545f504f4b455f594554000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4449565f494e5445524e414c00000000000000000000000000000000604082015260600190565b6020808252600c908201527f4552525f4c494d49545f494e0000000000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f5745494748545f42454c4f575f4d494e000000000000000000000000604082015260600190565b60208082526011908201527f4552525f4d41585f4f55545f524154494f000000000000000000000000000000604082015260600190565b6020808252600d908201527f4552525f4e4f545f424f554e4400000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4552525f4d494e5f574549474854000000000000000000000000000000000000604082015260600190565b60208082526014908201527f4552525f5745494748545f41424f56455f4d4158000000000000000000000000604082015260600190565b6020808252601b908201527f4552525f54494d454c4f434b5f5354494c4c5f434f554e54494e470000000000604082015260600190565b60208082526010908201527f4552525f4d554c5f4f564552464c4f5700000000000000000000000000000000604082015260600190565b60208082526017908201527f4552525f4e4f4e434f4e464f524d494e475f544f4b454e000000000000000000604082015260600190565b6020808252600c908201527f4552525f4449565f5a45524f0000000000000000000000000000000000000000604082015260600190565b60208082526015908201527f4552525f42414c414e43455f42454c4f575f4d494e0000000000000000000000604082015260600190565b6020808252600f908201527f4552525f45524332305f46414c53450000000000000000000000000000000000604082015260600190565b60208082526011908201527f4552525f5355425f554e444552464c4f57000000000000000000000000000000604082015260600190565b60208082526010908201527f4552525f4144445f4f564552464c4f5700000000000000000000000000000000604082015260600190565b90815260200190565b918252602082015260400190565b6000848252836020830152606060408301526114ed60608301846145fb565b958652602086019490945260408501929092526060840152608083015260a082015260c00190565b60405181810167ffffffffffffffff81118282101715614d9457600080fd5b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610bf157600080fdfea2646970667358221220587999a58eec7ab8164e11fc2f5d638ed365241e692c7f2e7772855522b50a6864736f6c634300060c0033"; - -type SmartPoolManagerConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: SmartPoolManagerConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class SmartPoolManager__factory extends ContractFactory { - constructor(...args: SmartPoolManagerConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): SmartPoolManager { - return super.attach(address) as SmartPoolManager; - } - connect(signer: Signer): SmartPoolManager__factory { - return super.connect(signer) as SmartPoolManager__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): SmartPoolManagerInterface { - return new utils.Interface(_abi) as SmartPoolManagerInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): SmartPoolManager { - return new Contract(address, _abi, signerOrProvider) as SmartPoolManager; - } -} diff --git a/src/typechain/factories/StackHeightTest__factory.ts b/src/typechain/factories/StackHeightTest__factory.ts new file mode 100644 index 0000000..8944752 --- /dev/null +++ b/src/typechain/factories/StackHeightTest__factory.ts @@ -0,0 +1,145 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + StackHeightTest, + StackHeightTestInterface, +} from "../StackHeightTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [], + name: "fnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c060405234801561001057600080fd5b50604051620022d7380380620022d783398101604081905261003191610046565b306080526001600160a01b031660a052610076565b60006020828403121561005857600080fd5b81516001600160a01b038116811461006f57600080fd5b9392505050565b60805160a05161223b6200009c60003960006103020152600061033e015261223b6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b6100596100543660046118b4565b610229565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526104ef60e08201526104fd61010082015261050861012082015261051361014082015261051e6101608201526105916101808201526105f76101a08201526106376101c082015261066b6101e082015261069f6102008201526106e661022082015261074361024082015261077c6102608201526107ba61028082015261080c6102a08201526108696102c082015261089d6102e08201526108d16103008201526109036103208201526109356103408201526109676103608201526109946103808201526109ef6103a0820152610a456103c0820152610a9c6103e0820152610af3610400820152610b27610420820152610b51610440820152610c38610460820152610c94610480820152610d106104a0820152610dca6104c08201819052610e746104e0830152610500820152610ef4610520820152610ffc61054082015261111a610560808301919091528152905161008f919061191f565b6102696040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6102ca6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161028a57905050905081816000815181106102f3576102f361199f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161037d93929190611b4d565b6000604051808303816000875af115801561039c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103e29190810190611cff565b90506103ed81610438565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806104638360405160200161044f9190611db1565b6040516020818303038152906040526104c3565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166104bd576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016104d9929190611dd7565b6040516020818303038152906040529050919050565b438152602001805b92915050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105848261057e858a611317565b90611398565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183610584826105f1858a611317565b906113be565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261062b8287611317565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261062b82876113d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261062b8287611431565b600060208302820380516000602083015b858110156106d857805183019150828210156106cb57600080fd5b90915081906020016106b0565b505081526020019392505050565b6020828102820380516000928201835b858210801561072457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156106d85750805160209091019061073c838261147c565b92506106f6565b600060208302820380516000602083015b858110156106d8578051830391508282111561076f57600080fd5b9091508190602001610754565b6020828102820380516000928201835b858210801561079b5750826000105b156106d8575080516020909101906107b383826114b8565b925061078c565b60006020830282038051600080602084015b868110156107fd5783156107f55780519250828402915082848304146107f157600080fd5b8193505b6020016107cc565b50505081526020019392505050565b6020828102820380516000928201835b858210801561084a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156106d85750805160209091019061086283826114ce565b925061081c565b600060208302820380516000602083015b858110156106d857805191508161089057600080fd5b918190049160200161087a565b600060208302820380516000602083015b858110156106d85780519150816108c457600080fd5b91819006916020016108ae565b6020828102820380516000928201835b858210156106d8575080516020909101906108fc8184611fbd565b92506108e1565b6020828102820380516000928201835b858210156106d8575080518281101561092a578092505b602082019150610913565b6020828102820380516000928201835b858210156106d8575080518281111561095c578092505b602082019150610945565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015610b1c578051610b145760008252610b1c565b602001610afd565b506020019392505050565b6000602083028203805b83811015610b1c5780518015610b48578252610b1c565b50602001610b31565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190611fc9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361058483836114fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085610d018585858561155c565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115610d3e57610d3e611970565b604051908082528060200260200182016040528015610d67578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015610da357815181602001860152602082019150602081019050610d81565b50505190506000610db683838989611607565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401610bf7565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611fc9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd99190611fe2565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c9190611fc9565b909452509395945050505050565b60008060008467ffffffffffffffff81111561113857611138611970565b604051908082528060200260200182016040528015611161578160200160208202803683370190505b50905060008567ffffffffffffffff81111561117f5761117f611970565b6040519080825280602002602001820160405280156111a8578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156111fd5782518152602092830192016111e5565b5050602088028101602084015b8183101561122257825181526020928301920161120a565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061127c9087908790600401612018565b600060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112df91908101906120a9565b9050846020820160208a0281015b808210156113085781518352602092830192909101906112ed565b50909998505050505050505050565b600080826012141561132c57839150506104f7565b82601211156113585750601282900361134681600a611fbd565b611350908561214f565b9150506104f7565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161138781600a611fbd565b61135090856121bb565b5092915050565b6000670de0b6b3a76400006113ad838561214f565b6113b791906121bb565b9392505050565b6000816113ad670de0b6b3a76400008561214f565b60008060128314156113e857839150506104f7565b82601211156114025750601282900361138781600a611fbd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161134681600a611fbd565b600081810b6114415750816104f7565b60008260000b13156114695761145882600a6121f6565b611462908461214f565b90506104f7565b60ff60008390031661138781600a611fbd565b600082820183811061148e57806114b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116114c85760006113b7565b50900390565b6000826114dd575060006104f7565b828202828482816114f0576114f061218c565b04141561148e57806114b0565b60008060015b600881116115545760006115178683611757565b905060006115258684611757565b9050600061153383836114b8565b9050611543856001860383611804565b945050600190920191506115039050565b509392505050565b60008260088111156115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b858110156115fb5763ffffffff6020820290811b199890981685891b179791506001016115d3565b50959695505050505050565b835160009081908190819060015b600881116117495760009250828761164e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611652565b5060005b60005b83811015611707576116808c82815181106116725761167261199f565b602002602001015184611757565b95508a86116116d2578861169f57611698868361188e565b91506116c9565b60018914156116b25761169886836118a4565b6002891480156116c0575084155b156116c9578591505b600194506116ff565b896116ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150611707565b600101611655565b508361173057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61173e866001840383611804565b955050600101611615565b509298975050505050505050565b60008160088111156117c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016115c6565b826117d35760009150611391565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016115c6565b505060209190910290811b63ffffffff90911b19919091161790565b600081831061189d57816113b7565b5090919050565b60008183101561189d57816113b7565b6000602082840312156118c657600080fd5b813567ffffffffffffffff8111156118dd57600080fd5b8201604081850312156113b757600080fd5b60005b8381101561190a5781810151838201526020016118f2565b83811115611919576000848401525b50505050565b602081526000825180602084015261193e8160408501602087016118ef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a0357600080fd5b830160208101925035905067ffffffffffffffff811115611a2357600080fd5b8060051b3603831315611a3557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ab757600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015611b4257815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101611ae8565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301611b7e86876119ce565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015611c48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611bff57600080fd5b8501803567ffffffffffffffff811115611c1857600080fd5b803603871315611c2757600080fd5b611c3488828b8501611a3c565b975050509186019190860190600101611b9e565b5050505050611c59828701876119ce565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152611c90828483611a85565b925050508281036040840152611ca68185611ad4565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf757611cf7611970565b604052919050565b600060208284031215611d1157600080fd5b815167ffffffffffffffff80821115611d2957600080fd5b818401915084601f830112611d3d57600080fd5b815181811115611d4f57611d4f611970565b611d8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611cb0565b9150808252856020828501011115611d9757600080fd5b611da88160208401602086016118ef565b50949350505050565b6000815260008251611dca8160018501602087016118ef565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611e6081600e8501602087016118ef565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115611ef657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611edc57611edc611e6e565b80851615611ee957918102915b93841c9390800290611ea2565b509250929050565b600082611f0d575060016104f7565b81611f1a575060006104f7565b8160018114611f305760028114611f3a57611f56565b60019150506104f7565b60ff841115611f4b57611f4b611e6e565b50506001821b6104f7565b5060208310610133831016604e8410600b8410161715611f79575081810a6104f7565b611f838383611e9d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611fb557611fb5611e6e565b029392505050565b60006113b78383611efe565b600060208284031215611fdb57600080fd5b5051919050565b600060208284031215611ff457600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146113b757600080fd5b604080825283519082018190526000906020906060840190828701845b8281101561206757815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612035565b5050508381038285015284518082528583019183019060005b8181101561209c57835183529284019291840191600101612080565b5090979650505050505050565b600060208083850312156120bc57600080fd5b825167ffffffffffffffff808211156120d457600080fd5b818501915085601f8301126120e857600080fd5b8151818111156120fa576120fa611970565b8060051b915061210b848301611cb0565b818152918301840191848101908884111561212557600080fd5b938501935b838510156121435784518252938501939085019061212a565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561218757612187611e6e565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826121f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006113b760ff841683611efe56fea2646970667358221220c3d4ce9637aee421171f034f5cf984258068c4f8309753b2573887fb6536892b64736f6c634300080a0033"; + +type StackHeightTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StackHeightTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StackHeightTest__factory extends ContractFactory { + constructor(...args: StackHeightTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): StackHeightTest { + return super.attach(address) as StackHeightTest; + } + connect(signer: Signer): StackHeightTest__factory { + return super.connect(signer) as StackHeightTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StackHeightTestInterface { + return new utils.Interface(_abi) as StackHeightTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StackHeightTest { + return new Contract(address, _abi, signerOrProvider) as StackHeightTest; + } +} diff --git a/src/typechain/factories/StakeFactory__factory.ts b/src/typechain/factories/StakeFactory__factory.ts new file mode 100644 index 0000000..586d343 --- /dev/null +++ b/src/typechain/factories/StakeFactory__factory.ts @@ -0,0 +1,193 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { StakeFactory, StakeFactoryInterface } from "../StakeFactory"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Implementation", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "child", + type: "address", + }, + ], + name: "NewChild", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes", + name: "data_", + type: "bytes", + }, + ], + name: "createChild", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "initialRatio", + type: "uint256", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + ], + internalType: "struct StakeConfig", + name: "config_", + type: "tuple", + }, + ], + name: "createChildTyped", + outputs: [ + { + internalType: "contract Stake", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "implementation", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "maybeChild_", + type: "address", + }, + ], + name: "isChild", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61296e80610b3383390190565b608051610a6f6100c46000396000818160a6015261037a0152610a6f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906107ce565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906107e1565b92915050565b60008061037183850185610901565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103f39085906004016109af565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526106ff6040840184610606565b6080606085015261071460a085018284610671565b9150506107246060850185610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403016080860152610759838284610671565b9695505050505050565b6000815180845260005b818110156107895760208185018101518683018201520161076d565b8181111561079b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610763565b6000602082840312156107f357600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610850576108506107fe565b60405290565b600082601f83011261086757600080fd5b813567ffffffffffffffff80821115610882576108826107fe565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108c8576108c86107fe565b816040528381528660208588010111156108e157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091357600080fd5b813567ffffffffffffffff8082111561092b57600080fd5b908301906080828603121561093f57600080fd5b61094761082d565b8235610952816105c4565b81526020838101359082015260408301358281111561097057600080fd5b61097c87828601610856565b60408301525060608301358281111561099457600080fd5b6109a087828601610856565b60608301525095945050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526109f560a0840182610763565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152610a308282610763565b9594505050505056fea26469706673582212207092a4f1b2ea17ab2324e1ee3cc2e8854fa1e5d4a235a5cd1ca4e9b3e1bf44e364736f6c634300080a0033608060405234801561001057600080fd5b506001606555612949806100256000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146101fb578063cced57cb1461020e578063dd62ed3e14610221578063fad876c31461026757600080fd5b806370a082311461019757806395d89b41146101cd578063a457c2d7146101d5578063a9059cbb146101e857600080fd5b806323b872dd116100d357806323b872dd1461014d5780632e1a7d4d14610160578063313ce56714610175578063395093511461018457600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261027a565b60405161010f9190612222565b60405180910390f35b61012b610126366004612297565b61030c565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b3660046122c1565b610324565b61017361016e3660046122fd565b61034a565b005b6040516012815260200161010f565b61012b610192366004612297565b610781565b61013f6101a5366004612316565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026107cd565b61012b6101e3366004612297565b6107dc565b61012b6101f6366004612297565b6108b8565b6101736102093660046122fd565b6108c6565b61013f61021c366004612331565b610c29565b61013f61022f3660046123b4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101736102753660046123e7565b610dd8565b60606036805461028990612422565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590612422565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60003361031a81858561109b565b5060019392505050565b60003361033285828561124f565b61033d858585611326565b60019150505b9392505050565b600260655414156103bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b33600090815260686020526040812054610444906001906124a5565b336000908152606860205260408120805492935090918390811061046a5761046a6124bc565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506104a784836124a5565b90505b3360009081526068602052604090208054829190859081106104ce576104ce6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561056657336000908152606860205260409020805484908110610527576105276124bc565b60009182526020822001558261053c57610566565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201916104aa565b336000908152606860205260408120546105815760006105e1565b336000908152606860205260409020805461059e906001906124a5565b815481106105ae576105ae6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156106915733600090815260686020908152604091829020825180840190935263ffffffff431683529190810161063a856115d9565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061069c60355490565b90506106a8338761168b565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610774913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906124eb565b61074a908a612504565b6107549190612541565b60665473ffffffffffffffffffffffffffffffffffffffff169190611875565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061031a90829086906107c890879061257c565b61109b565b60606037805461028990612422565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103b3565b6108ad828686840361109b565b506001949350505050565b60003361031a818585611326565b60026065541415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103b3565b60026065558061099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906124eb565b90506000610a3f60355490565b606654909150610a679073ffffffffffffffffffffffffffffffffffffffff16333086611949565b600081610a8357606754610a7c9085906119a7565b9050610a9b565b82610a8e8584612504565b610a989190612541565b90505b60008111610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016103b3565b610b0f33826119c6565b33600090815260686020526040812054610b2a576000610b8a565b3360009081526068602052604090208054610b47906001906124a5565b81548110610b5757610b576124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff431683529293508101610bbc886115d9565b610bc69085612594565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b600080610c3883850185612603565b80519091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9015610dcf57604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902054811015610dcb5773ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805482908110610ce257610ce26124bc565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b845183108015610d7e5750848381518110610d5057610d506124bc565b602002602001015182602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610dab57610d988484846000015163ffffffff16611ae6565b5082610da3816126df565b935050610d33565b8451831415610db957610dcb565b80610dc3816126df565b915050610c7e565b5050505b95945050505050565b6000610de46001611b70565b90508015610e1957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610e286020840184612316565b73ffffffffffffffffffffffffffffffffffffffff161415610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016103b3565b6000826020013511610f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016103b3565b610fa0610f246040840184612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f66925050506060850185612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cfb92505050565b610fad6020830183612316565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061102c9033908590612831565b60405180910390a1801561109757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff82166111e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113205781811015611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103b3565b611320848484840361109b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166113c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061156690849061257c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115cc91815260200190565b60405180910390a3611320565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016103b3565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906118209084906124a5565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611242565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118709084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d9c565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526113209085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118c7565b6000670de0b6b3a76400006119bc8385612504565b6103439190612541565b73ffffffffffffffffffffffffffffffffffffffff8216611a43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b3565b8060356000828254611a55919061257c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611a8f90849061257c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000826008811115611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103b3565b505060209190910290811b63ffffffff90911b19919091161790565b60008054610100900460ff1615611c27578160ff166001148015611b935750303b155b611c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b506000919050565b60005460ff808416911610611cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b6110978282611ea8565b6000611dfe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f669092919063ffffffff16565b8051909150156118705780806020019051810190611e1c91906128d5565b611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103b3565b600054610100900460ff16611f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b8151611f52906036906020850190612166565b508051611870906037906020840190612166565b6060611f758484600085611f7d565b949350505050565b60608247101561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff85163b61208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120b691906128f7565b60006040518083038185875af1925050503d80600081146120f3576040519150601f19603f3d011682016040523d82523d6000602084013e6120f8565b606091505b5091509150612108828286612113565b979650505050505050565b60608315612122575081610343565b8251156121325782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b39190612222565b82805461217290612422565b90600052602060002090601f01602090048101928261219457600085556121da565b82601f106121ad57805160ff19168380011785556121da565b828001600101855582156121da579182015b828111156121da5782518255916020019190600101906121bf565b506116879291505b8082111561168757600081556001016121e2565b60005b838110156122115781810151838201526020016121f9565b838111156113205750506000910152565b60208152600082518060208401526122418160408501602087016121f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611cf657600080fd5b600080604083850312156122aa57600080fd5b6122b383612273565b946020939093013593505050565b6000806000606084860312156122d657600080fd5b6122df84612273565b92506122ed60208501612273565b9150604084013590509250925092565b60006020828403121561230f57600080fd5b5035919050565b60006020828403121561232857600080fd5b61034382612273565b60008060006040848603121561234657600080fd5b61234f84612273565b9250602084013567ffffffffffffffff8082111561236c57600080fd5b818601915086601f83011261238057600080fd5b81358181111561238f57600080fd5b8760208285010111156123a157600080fd5b6020830194508093505050509250925092565b600080604083850312156123c757600080fd5b6123d083612273565b91506123de60208401612273565b90509250929050565b6000602082840312156123f957600080fd5b813567ffffffffffffffff81111561241057600080fd5b82016080818503121561034357600080fd5b600181811c9082168061243657607f821691505b60208210811415612470577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156124b7576124b7612476565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124fd57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253c5761253c612476565b500290565b600082612577577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561258f5761258f612476565b500190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168185168083038211156125cb576125cb612476565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602080838503121561261657600080fd5b823567ffffffffffffffff8082111561262e57600080fd5b818501915085601f83011261264257600080fd5b813581811115612654576126546125d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612697576126976125d4565b6040529182528482019250838101850191888311156126b557600080fd5b938501935b828510156126d3578435845293850193928501926126ba565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561271157612711612476565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261274d57600080fd5b83018035915067ffffffffffffffff82111561276857600080fd5b60200191503681900382131561277d57600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127b957600080fd5b830160208101925035905067ffffffffffffffff8111156127d957600080fd5b80360383131561277d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061285e85612273565b166040840152506020830135606083015261287c6040840184612784565b60808085015261289060c0850182846127e8565b9150506128a06060850185612784565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121088382846127e8565b6000602082840312156128e757600080fd5b8151801515811461034357600080fd5b600082516129098184602087016121f6565b919091019291505056fea264697066735822122057699be3479436f26a7b5ebb0b980ab128753a4889b83e467cb1fb25e712312864736f6c634300080a0033"; + +type StakeFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StakeFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StakeFactory__factory extends ContractFactory { + constructor(...args: StakeFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): StakeFactory { + return super.attach(address) as StakeFactory; + } + connect(signer: Signer): StakeFactory__factory { + return super.connect(signer) as StakeFactory__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StakeFactoryInterface { + return new utils.Interface(_abi) as StakeFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StakeFactory { + return new Contract(address, _abi, signerOrProvider) as StakeFactory; + } +} diff --git a/src/typechain/factories/Stake__factory.ts b/src/typechain/factories/Stake__factory.ts new file mode 100644 index 0000000..0835b6f --- /dev/null +++ b/src/typechain/factories/Stake__factory.ts @@ -0,0 +1,464 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { Stake, StakeInterface } from "../Stake"; + +const _abi = [ + { + 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: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "initialRatio", + type: "uint256", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + ], + indexed: false, + internalType: "struct StakeConfig", + name: "config", + type: "tuple", + }, + ], + name: "Initialize", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + 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: [], + 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: "uint256", + name: "amount_", + type: "uint256", + }, + ], + name: "deposit", + outputs: [], + 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: [ + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "initialRatio", + type: "uint256", + }, + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + ], + internalType: "struct StakeConfig", + name: "config_", + type: "tuple", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account_", + type: "address", + }, + { + internalType: "bytes", + name: "data_", + type: "bytes", + }, + ], + name: "report", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + 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", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount_", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506001606555612949806100256000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146101fb578063cced57cb1461020e578063dd62ed3e14610221578063fad876c31461026757600080fd5b806370a082311461019757806395d89b41146101cd578063a457c2d7146101d5578063a9059cbb146101e857600080fd5b806323b872dd116100d357806323b872dd1461014d5780632e1a7d4d14610160578063313ce56714610175578063395093511461018457600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261027a565b60405161010f9190612222565b60405180910390f35b61012b610126366004612297565b61030c565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b3660046122c1565b610324565b61017361016e3660046122fd565b61034a565b005b6040516012815260200161010f565b61012b610192366004612297565b610781565b61013f6101a5366004612316565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026107cd565b61012b6101e3366004612297565b6107dc565b61012b6101f6366004612297565b6108b8565b6101736102093660046122fd565b6108c6565b61013f61021c366004612331565b610c29565b61013f61022f3660046123b4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101736102753660046123e7565b610dd8565b60606036805461028990612422565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590612422565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60003361031a81858561109b565b5060019392505050565b60003361033285828561124f565b61033d858585611326565b60019150505b9392505050565b600260655414156103bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b33600090815260686020526040812054610444906001906124a5565b336000908152606860205260408120805492935090918390811061046a5761046a6124bc565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506104a784836124a5565b90505b3360009081526068602052604090208054829190859081106104ce576104ce6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561056657336000908152606860205260409020805484908110610527576105276124bc565b60009182526020822001558261053c57610566565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201916104aa565b336000908152606860205260408120546105815760006105e1565b336000908152606860205260409020805461059e906001906124a5565b815481106105ae576105ae6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156106915733600090815260686020908152604091829020825180840190935263ffffffff431683529190810161063a856115d9565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061069c60355490565b90506106a8338761168b565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610774913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906124eb565b61074a908a612504565b6107549190612541565b60665473ffffffffffffffffffffffffffffffffffffffff169190611875565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061031a90829086906107c890879061257c565b61109b565b60606037805461028990612422565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103b3565b6108ad828686840361109b565b506001949350505050565b60003361031a818585611326565b60026065541415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103b3565b60026065558061099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906124eb565b90506000610a3f60355490565b606654909150610a679073ffffffffffffffffffffffffffffffffffffffff16333086611949565b600081610a8357606754610a7c9085906119a7565b9050610a9b565b82610a8e8584612504565b610a989190612541565b90505b60008111610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016103b3565b610b0f33826119c6565b33600090815260686020526040812054610b2a576000610b8a565b3360009081526068602052604090208054610b47906001906124a5565b81548110610b5757610b576124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff431683529293508101610bbc886115d9565b610bc69085612594565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b600080610c3883850185612603565b80519091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9015610dcf57604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902054811015610dcb5773ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805482908110610ce257610ce26124bc565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b845183108015610d7e5750848381518110610d5057610d506124bc565b602002602001015182602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610dab57610d988484846000015163ffffffff16611ae6565b5082610da3816126df565b935050610d33565b8451831415610db957610dcb565b80610dc3816126df565b915050610c7e565b5050505b95945050505050565b6000610de46001611b70565b90508015610e1957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610e286020840184612316565b73ffffffffffffffffffffffffffffffffffffffff161415610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016103b3565b6000826020013511610f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016103b3565b610fa0610f246040840184612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f66925050506060850185612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cfb92505050565b610fad6020830183612316565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061102c9033908590612831565b60405180910390a1801561109757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff82166111e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113205781811015611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103b3565b611320848484840361109b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166113c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061156690849061257c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115cc91815260200190565b60405180910390a3611320565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016103b3565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906118209084906124a5565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611242565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118709084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d9c565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526113209085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118c7565b6000670de0b6b3a76400006119bc8385612504565b6103439190612541565b73ffffffffffffffffffffffffffffffffffffffff8216611a43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b3565b8060356000828254611a55919061257c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611a8f90849061257c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000826008811115611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103b3565b505060209190910290811b63ffffffff90911b19919091161790565b60008054610100900460ff1615611c27578160ff166001148015611b935750303b155b611c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b506000919050565b60005460ff808416911610611cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b6110978282611ea8565b6000611dfe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f669092919063ffffffff16565b8051909150156118705780806020019051810190611e1c91906128d5565b611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103b3565b600054610100900460ff16611f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b8151611f52906036906020850190612166565b508051611870906037906020840190612166565b6060611f758484600085611f7d565b949350505050565b60608247101561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff85163b61208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120b691906128f7565b60006040518083038185875af1925050503d80600081146120f3576040519150601f19603f3d011682016040523d82523d6000602084013e6120f8565b606091505b5091509150612108828286612113565b979650505050505050565b60608315612122575081610343565b8251156121325782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b39190612222565b82805461217290612422565b90600052602060002090601f01602090048101928261219457600085556121da565b82601f106121ad57805160ff19168380011785556121da565b828001600101855582156121da579182015b828111156121da5782518255916020019190600101906121bf565b506116879291505b8082111561168757600081556001016121e2565b60005b838110156122115781810151838201526020016121f9565b838111156113205750506000910152565b60208152600082518060208401526122418160408501602087016121f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611cf657600080fd5b600080604083850312156122aa57600080fd5b6122b383612273565b946020939093013593505050565b6000806000606084860312156122d657600080fd5b6122df84612273565b92506122ed60208501612273565b9150604084013590509250925092565b60006020828403121561230f57600080fd5b5035919050565b60006020828403121561232857600080fd5b61034382612273565b60008060006040848603121561234657600080fd5b61234f84612273565b9250602084013567ffffffffffffffff8082111561236c57600080fd5b818601915086601f83011261238057600080fd5b81358181111561238f57600080fd5b8760208285010111156123a157600080fd5b6020830194508093505050509250925092565b600080604083850312156123c757600080fd5b6123d083612273565b91506123de60208401612273565b90509250929050565b6000602082840312156123f957600080fd5b813567ffffffffffffffff81111561241057600080fd5b82016080818503121561034357600080fd5b600181811c9082168061243657607f821691505b60208210811415612470577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156124b7576124b7612476565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124fd57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253c5761253c612476565b500290565b600082612577577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561258f5761258f612476565b500190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168185168083038211156125cb576125cb612476565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602080838503121561261657600080fd5b823567ffffffffffffffff8082111561262e57600080fd5b818501915085601f83011261264257600080fd5b813581811115612654576126546125d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612697576126976125d4565b6040529182528482019250838101850191888311156126b557600080fd5b938501935b828510156126d3578435845293850193928501926126ba565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561271157612711612476565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261274d57600080fd5b83018035915067ffffffffffffffff82111561276857600080fd5b60200191503681900382131561277d57600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127b957600080fd5b830160208101925035905067ffffffffffffffff8111156127d957600080fd5b80360383131561277d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061285e85612273565b166040840152506020830135606083015261287c6040840184612784565b60808085015261289060c0850182846127e8565b9150506128a06060850185612784565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121088382846127e8565b6000602082840312156128e757600080fd5b8151801515811461034357600080fd5b600082516129098184602087016121f6565b919091019291505056fea264697066735822122057699be3479436f26a7b5ebb0b980ab128753a4889b83e467cb1fb25e712312864736f6c634300080a0033"; + +type StakeConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StakeConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class Stake__factory extends ContractFactory { + constructor(...args: StakeConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): Stake { + return super.attach(address) as Stake; + } + connect(signer: Signer): Stake__factory { + return super.connect(signer) as Stake__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StakeInterface { + return new utils.Interface(_abi) as StakeInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Stake { + return new Contract(address, _abi, signerOrProvider) as Stake; + } +} diff --git a/src/typechain/factories/TierOpsTest__factory.ts b/src/typechain/factories/TierOpsTest__factory.ts deleted file mode 100644 index db57025..0000000 --- a/src/typechain/factories/TierOpsTest__factory.ts +++ /dev/null @@ -1,247 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - TierOpsTest, - TierOpsTestInterface, - StateConfigStruct, -} from "../TierOpsTest"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, - { - inputs: [], - name: "run", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "length_", - type: "uint256", - }, - ], - name: "runLength", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "runState", - outputs: [ - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - internalType: "struct State", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162002050380380620020508339810160408190526200003491620003fd565b60056080526200004e620000488262000061565b6200019b565b6001600160a01b031660a0525062000759565b620000946040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151620000d45760405162461bcd60e51b8152602060048201526009602482015268305f534f555243455360b81b604482015260640160405180910390fd5b6040518060a001604052806000815260200183604001516001600160401b03811115620001055762000105620002bd565b6040519080825280602002602001820160405280156200012f578160200160208202803683370190505b508152602001836000015181526020018360200151815260200183606001516001600160401b03811115620001685762000168620002bd565b60405190808252806020026020018201604052801562000192578160200160208202803683370190505b50905292915050565b600080620001d583604051602001620001b5919062000694565b6040516020818303038152906040526200021a60201b620002251760201c565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516200020c93929190620006b0565b60405180910390a192915050565b6000806200025483604051602001620002349190620006de565b6040516020818303038152906040526200028f60201b620002b01760201c565b90508051602082016000f091506001600160a01b038216620002895760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620002a792919062000706565b6040516020818303038152906040529050919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715620002f857620002f8620002bd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003295762000329620002bd565b604052919050565b60006001600160401b038211156200034d576200034d620002bd565b5060051b60200190565b60005b83811015620003745781810151838201526020016200035a565b8381111562000384576000848401525b50505050565b600082601f8301126200039c57600080fd5b81516020620003b5620003af8362000331565b620002fe565b82815260059290921b84018101918181019086841115620003d557600080fd5b8286015b84811015620003f25780518352918301918301620003d9565b509695505050505050565b600060208083850312156200041157600080fd5b82516001600160401b03808211156200042957600080fd5b90840190608082870312156200043e57600080fd5b62000448620002d3565b8251828111156200045857600080fd5b8301601f810188136200046a57600080fd5b80516200047b620003af8262000331565b81815260059190911b8201860190868101908a8311156200049b57600080fd5b8784015b838110156200053157805187811115620004b95760008081fd5b8501603f81018d13620004cc5760008081fd5b89810151604089821115620004e557620004e5620002bd565b620004f9601f8301601f19168d01620002fe565b8281528f828486010111156200050f5760008081fd5b62000520838e830184870162000357565b86525050509188019188016200049f565b50845250505082840151828111156200054957600080fd5b62000557888286016200038a565b858301525060408301516040820152606083015160608201528094505050505092915050565b600081518084526020808501945080840160005b83811015620005af5781518752958201959082019060010162000591565b509495945050505050565b80518252600060208083015160a082860152620005db60a08601826200057d565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156200064f57601f19808784030185528551805180855262000630818b87018c850162000357565b9689019695890195601f01909116929092018701915060010162000605565b506060880151955088810360608a01526200066b81876200057d565b95505050505050608083015184820360808601526200068b82826200057d565b95945050505050565b602081526000620006a96020830184620005ba565b9392505050565b6001600160a01b038481168252831660208201526060604082018190526000906200068b90830184620005ba565b6000815260008251620006f981600185016020870162000357565b9190910160010192915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015281516000906200074b81600e85016020870162000357565b91909101600e019392505050565b60805160a0516118d26200077e600039600060d3015260006107e501526118d26000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806345c6a7a6146100465780635ab47a0114610064578063c040622614610084575b600080fd5b61004e61009a565b60405161005b9190611290565b60405180910390f35b610077610072366004611375565b610119565b60405161005b919061138e565b61008c6101e4565b60405190815260200161005b565b6100cc6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b60006100f77f00000000000000000000000000000000000000000000000000000000000000006102dc565b905061011460405180602001604052806000815250826000610330565b919050565b6060600061012561009a565b905060008367ffffffffffffffff811115610142576101426113d2565b60405190808252806020026020018201604052801561016b578160200160208202803683370190505b50905060005b848110156101dc5760208301518351829061018d908890611430565b6101979190611447565b815181106101a7576101a761145f565b60200260200101518282815181106101c1576101c161145f565b60209081029190910101526101d58161148e565b9050610171565b509392505050565b6000806101ef61009a565b90508060200151600182600001516102079190611430565b815181106102175761021761145f565b602002602001015191505090565b6000806102508360405160200161023c91906114c7565b6040516020818303038152906040526102b0565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166102aa576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016102c69291906114ed565b6040516020818303038152906040529050919050565b61030e6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610317826105b9565b80602001905181019061032a919061178d565b92915050565b602082015151825111156103a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064015b60405180910390fd5b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156105ac576002880197508784015180601e1a975080601f1a965050600587101561052b57600187141561044357816080871661040e5750825b607f87168151811061041f57600080fd5b8b516020820260200183015160208202602001850152600181018d52505050610537565b600287141561047a57895180871061045a57600080fd5b6020870260200182015160208202602001830152600181018b5250610537565b60038714156104935761048e8b8b886105e7565b610537565b60048714156104c45761048e8a6040516020016104b09190611290565b60405160208183030381529060405261074d565b8661048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f5645440000000000000000000000000000000000000000604482015260640161039c565b6105378b8b89896107df565b60208a0151518a5111156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161039c565b6103d1565b5050505050505050505050565b606061032a8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610812565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561064b5761064b6113d2565b604051908082528060200260200182016040528015610674578160200160208202803683370190505b50905060005b828110156106cb578760200151818960000151018151811061069e5761069e61145f565b60200260200101518282815181106106b8576106b861145f565b602090810291909101015260010161067a565b5060005b6101008110156107425760005b8381101561072f57848286038483815181106106fa576106fa61145f565b6020026020010151901b901c8960800151828151811061071c5761071c61145f565b60209081029190910101526001016106dc565b5061073b898988610330565b84016106cf565b505050505050505050565b6107dc816040516024016107619190611870565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526108fb565b50565b61080c837f000000000000000000000000000000000000000000000000000000000000000084038361091c565b50505050565b6060833b806108315750506040805160208101909152600081526108f4565b8084111561084f5750506040805160208101909152600081526108f4565b8383101561089a576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161039c565b83830384820360008282106108af57826108b1565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60068210610986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f444500000000000000000000000000000000000000000000604482015260640161039c565b600082610ad5575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe90920191829081106109f1576109f161145f565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1663e053ea3185602001518360010181518110610a2d57610a2d61145f565b60200260200101516040518263ffffffff1660e01b8152600401610a6d919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015610a8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aae9190611883565b84602001518281518110610ac457610ac461145f565b60200260200101818152505061080c565b6001831415610b30577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460200151856000015181518110610b1957610b1961145f565b60209081029190910101528351600101845261080c565b6002831415610b555760008460200151856000015181518110610b1957610b1961145f565b6003831415610c09575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01808452602084015180516000919083908110610ba157610ba161145f565b60200260200101519050600085602001518360010181518110610bc657610bc661145f565b60200260200101519050610bda8282610e17565b86602001518481518110610bf057610bf061145f565b602090810291909101015250508351600101845261080c565b6004831415610cd1575082517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0180845260208401518051600f80851692600486901c909116916000919085908110610c6457610c6461145f565b60200260200101519050600087602001518560010181518110610c8957610c8961145f565b60200260200101519050610c9f82858584610e6e565b88602001518681518110610cb557610cb561145f565b60209081029190910101525050855160010186525061080c9050565b600583141561080c575082517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f8316918290030180855290600783901c906003600585901c16908360008267ffffffffffffffff811115610d3657610d366113d2565b604051908082528060200260200182016040528015610d5f578160200160208202803683370190505b50905060005b83811015610db45789602001518381518110610d8357610d8361145f565b6020026020010151828281518110610d9d57610d9d61145f565b602090810291909101015260019283019201610d65565b50600089602001518381518110610dcd57610dcd61145f565b60200260200101519050610de382828888610f14565b8a602001518881518110610df957610df961145f565b60209081029190910101525050875160010188525050505050505050565b60008060015b600881116101dc576000610e318683611064565b90506000610e3f8684611064565b90506000610e4d8383611119565b9050610e5d85600186038361112f565b94505060019092019150610e1d9050565b6000826008811115610edc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161039c565b6000855b85811015610f085763ffffffff6020820290811b199890981685891b17979150600101610ee0565b50959695505050505050565b835160009081908190819060015b6008811161105657600092508287610f5b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f5f565b5060005b60005b8381101561101457610f8d8c8281518110610f7f57610f7f61145f565b602002602001015184611064565b95508a8611610fdf5788610fac57610fa586836111b9565b9150610fd6565b6001891415610fbf57610fa586836111cf565b600289148015610fcd575084155b15610fd6578591505b6001945061100c565b8961100c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150611014565b600101610f62565b508361103d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61104b86600184038361112f565b955050600101610f22565b509298975050505050505050565b60008160088111156110d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161039c565b826110e05760009150611112565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60008183116111295760006108f4565b50900390565b600082600881111561119d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161039c565b505060209190910290811b63ffffffff90911b19919091161790565b60008183106111c857816108f4565b5090919050565b6000818310156111c857816108f4565b600081518084526020808501945080840160005b8381101561120f578151875295820195908201906001016111f3565b509495945050505050565b60005b8381101561123557818101518382015260200161121d565b8381111561080c5750506000910152565b6000815180845261125e81602086016020860161121a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a060408501526112b560c08501826111df565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b8281101561132e578487830301845261131c828751611246565b95880195938801939150600101611302565b5060608a01519650838982030160808a015261134a81886111df565b965050505060808701519250808685030160a0870152505061136c82826111df565b95945050505050565b60006020828403121561138757600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156113c6578351835292840192918401916001016113aa565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561144257611442611401565b500390565b6000821982111561145a5761145a611401565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156114c0576114c0611401565b5060010190565b60008152600082516114e081600185016020870161121a565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161157681600e85016020870161121a565b91909101600e019392505050565b60405160a0810167ffffffffffffffff811182821017156115a7576115a76113d2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156115f4576115f46113d2565b604052919050565b600067ffffffffffffffff821115611616576116166113d2565b5060051b60200190565b600082601f83011261163157600080fd5b81516020611646611641836115fc565b6115ad565b82815260059290921b8401810191818101908684111561166557600080fd5b8286015b848110156116805780518352918301918301611669565b509695505050505050565b6000601f838184011261169d57600080fd5b825160206116ad611641836115fc565b82815260059290921b850181019181810190878411156116cc57600080fd5b8287015b8481101561178157805167ffffffffffffffff808211156116f15760008081fd5b818a0191508a603f8301126117065760008081fd5b8582015160408282111561171c5761171c6113d2565b61174b887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c850116016115ad565b92508183528c818386010111156117625760008081fd5b6117718289850183870161121a565b50508452509183019183016116d0565b50979650505050505050565b60006020828403121561179f57600080fd5b815167ffffffffffffffff808211156117b757600080fd5b9083019060a082860312156117cb57600080fd5b6117d3611584565b825181526020830151828111156117e957600080fd5b6117f587828601611620565b60208301525060408301518281111561180d57600080fd5b6118198782860161168b565b60408301525060608301518281111561183157600080fd5b61183d87828601611620565b60608301525060808301518281111561185557600080fd5b61186187828601611620565b60808301525095945050505050565b6020815260006108f46020830184611246565b60006020828403121561189557600080fd5b505191905056fea26469706673582212207b43922a12b1b49e348626f1bf4528dfa71969622f3317017218ddfd7acb028664736f6c634300080a0033"; - -type TierOpsTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TierOpsTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TierOpsTest__factory extends ContractFactory { - constructor(...args: TierOpsTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(config_, overrides || {}) as Promise; - } - getDeployTransaction( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): TierOpsTest { - return super.attach(address) as TierOpsTest; - } - connect(signer: Signer): TierOpsTest__factory { - return super.connect(signer) as TierOpsTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TierOpsTestInterface { - return new utils.Interface(_abi) as TierOpsTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TierOpsTest { - return new Contract(address, _abi, signerOrProvider) as TierOpsTest; - } -} diff --git a/src/typechain/factories/TokenOpsTest__factory.ts b/src/typechain/factories/TokenOpsTest__factory.ts deleted file mode 100644 index 510c3cd..0000000 --- a/src/typechain/factories/TokenOpsTest__factory.ts +++ /dev/null @@ -1,247 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - TokenOpsTest, - TokenOpsTestInterface, - StateConfigStruct, -} from "../TokenOpsTest"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256", - name: "stackLength", - type: "uint256", - }, - { - internalType: "uint256", - name: "argumentsLength", - type: "uint256", - }, - ], - internalType: "struct StateConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, - { - inputs: [], - name: "run", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "length_", - type: "uint256", - }, - ], - name: "runLength", - outputs: [ - { - internalType: "uint256[]", - name: "", - type: "uint256[]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "runState", - outputs: [ - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - internalType: "struct State", - name: "", - type: "tuple", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x6101006040523480156200001257600080fd5b506040516200227f3803806200227f833981016040819052620000359162000424565b600560808190526200004a90600290620005a4565b60a08190526200005d90600290620005a4565b60c052620000756200006f8262000088565b620001c2565b6001600160a01b031660e05250620007a7565b620000bb6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b815151620000fb5760405162461bcd60e51b8152602060048201526009602482015268305f534f555243455360b81b604482015260640160405180910390fd5b6040518060a001604052806000815260200183604001516001600160401b038111156200012c576200012c620002e4565b60405190808252806020026020018201604052801562000156578160200160208202803683370190505b508152602001836000015181526020018360200151815260200183606001516001600160401b038111156200018f576200018f620002e4565b604051908082528060200260200182016040528015620001b9578160200160208202803683370190505b50905292915050565b600080620001fc83604051602001620001dc9190620006e2565b6040516020818303038152906040526200024160201b620002251760201c565b90507ff95eed63f55d96a35306669cc3b5f652f8d44552e3e4b17b2f78f13571114abd3382856040516200023393929190620006fe565b60405180910390a192915050565b6000806200027b836040516020016200025b91906200072c565b604051602081830303815290604052620002b660201b620002b01760201c565b90508051602082016000f091506001600160a01b038216620002b05760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620002ce92919062000754565b6040516020818303038152906040529050919050565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156200031f576200031f620002e4565b60405290565b604051601f8201601f191681016001600160401b0381118282101715620003505762000350620002e4565b604052919050565b60006001600160401b03821115620003745762000374620002e4565b5060051b60200190565b60005b838110156200039b57818101518382015260200162000381565b83811115620003ab576000848401525b50505050565b600082601f830112620003c357600080fd5b81516020620003dc620003d68362000358565b62000325565b82815260059290921b84018101918181019086841115620003fc57600080fd5b8286015b8481101562000419578051835291830191830162000400565b509695505050505050565b600060208083850312156200043857600080fd5b82516001600160401b03808211156200045057600080fd5b90840190608082870312156200046557600080fd5b6200046f620002fa565b8251828111156200047f57600080fd5b8301601f810188136200049157600080fd5b8051620004a2620003d68262000358565b81815260059190911b8201860190868101908a831115620004c257600080fd5b8784015b838110156200055857805187811115620004e05760008081fd5b8501603f81018d13620004f35760008081fd5b898101516040898211156200050c576200050c620002e4565b62000520601f8301601f19168d0162000325565b8281528f82848601011115620005365760008081fd5b62000547838e83018487016200037e565b8652505050918801918801620004c6565b50845250505082840151828111156200057057600080fd5b6200057e88828601620003b1565b858301525060408301516040820152606083015160608201528094505050505092915050565b60008219821115620005c657634e487b7160e01b600052601160045260246000fd5b500190565b600081518084526020808501945080840160005b83811015620005fd57815187529582019590820190600101620005df565b509495945050505050565b80518252600060208083015160a0828601526200062960a0860182620005cb565b9050604084015185820360408701528181518084528484019150848160051b850101858401935060005b828110156200069d57601f1980878403018552855180518085526200067e818b87018c85016200037e565b9689019695890195601f01909116929092018701915060010162000653565b506060880151955088810360608a0152620006b98187620005cb565b9550505050505060808301518482036080860152620006d98282620005cb565b95945050505050565b602081526000620006f7602083018462000608565b9392505050565b6001600160a01b03848116825283166020820152606060408201819052600090620006d99083018462000608565b6000815260008251620007478160018501602087016200037e565b9190910160010192915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015281516000906200079981600e8501602087016200037e565b91909101600e019392505050565b60805160a05160c05160e051611a91620007ee600039600060d301526000818161083b01526108940152600081816107e101526108670152600061080d0152611a916000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806345c6a7a6146100465780635ab47a0114610064578063c040622614610084575b600080fd5b61004e61009a565b60405161005b91906113a0565b60405180910390f35b610077610072366004611485565b610119565b60405161005b919061149e565b61008c6101e4565b60405190815260200161005b565b6100cc6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b60006100f77f00000000000000000000000000000000000000000000000000000000000000006102dc565b905061011460405180602001604052806000815250826000610330565b919050565b6060600061012561009a565b905060008367ffffffffffffffff811115610142576101426114b1565b60405190808252806020026020018201604052801561016b578160200160208202803683370190505b50905060005b848110156101dc5760208301518351829061018d90889061150f565b6101979190611526565b815181106101a7576101a761153e565b60200260200101518282815181106101c1576101c161153e565b60209081029190910101526101d58161156d565b9050610171565b509392505050565b6000806101ef61009a565b9050806020015160018260000151610207919061150f565b815181106102175761021761153e565b602002602001015191505090565b6000806102508360405160200161023c91906115a6565b6040516020818303038152906040526102b0565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166102aa576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016102c69291906115cc565b6040516020818303038152906040529050919050565b61030e6040518060a0016040528060008152602001606081526020016060815260200160608152602001606081525090565b610317826105b9565b80602001905181019061032a919061186c565b92915050565b602082015151825111156103a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064015b60405180910390fd5b602082810151604084015183830201909101516060840151608085015182516000948594859492939092915b848810156105ac576002880197508784015180601e1a975080601f1a965050600587101561052b57600187141561044357816080871661040e5750825b607f87168151811061041f57600080fd5b8b516020820260200183015160208202602001850152600181018d52505050610537565b600287141561047a57895180871061045a57600080fd5b6020870260200182015160208202602001830152600181018b5250610537565b60038714156104935761048e8b8b886105e7565b610537565b60048714156104c45761048e8a6040516020016104b091906113a0565b60405160208183030381529060405261074d565b8661048e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f534b49505f52454d4f5645440000000000000000000000000000000000000000604482015260640161039c565b6105378b8b89896107df565b60208a0151518a5111156105a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161039c565b6103d1565b5050505050505050505050565b606061032a8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108c1565b81517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600583901c918290030183526007821690610100600384811c1681901c91908290039060010160008167ffffffffffffffff81111561064b5761064b6114b1565b604051908082528060200260200182016040528015610674578160200160208202803683370190505b50905060005b828110156106cb578760200151818960000151018151811061069e5761069e61153e565b60200260200101518282815181106106b8576106b861153e565b602090810291909101015260010161067a565b5060005b6101008110156107425760005b8381101561072f57848286038483815181106106fa576106fa61153e565b6020026020010151901b901c8960800151828151811061071c5761071c61153e565b60209081029190910101526001016106dc565b5061073b898988610330565b84016106cf565b505050505050505050565b6107dc81604051602401610761919061194f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526109aa565b50565b7f000000000000000000000000000000000000000000000000000000000000000082101561083957610834837f00000000000000000000000000000000000000000000000000000000000000008403836109cb565b6108bb565b7f000000000000000000000000000000000000000000000000000000000000000082101561088e57610834837f0000000000000000000000000000000000000000000000000000000000000000840383610c21565b6108bb837f0000000000000000000000000000000000000000000000000000000000000000840383610ec3565b50505050565b6060833b806108e05750506040805160208101909152600081526109a3565b808411156108fe5750506040805160208101909152600081526109a3565b83831015610949576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161039c565b838303848203600082821061095e5782610960565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60028210610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f444500000000000000000000000000000000000000000000604482015260640161039c565b81610b835782517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9092019182908110610a9d57610a9d61153e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110610ada57610ada61153e565b60200260200101516040518263ffffffff1660e01b8152600401610b1a919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5b9190611962565b84602001518281518110610b7157610b7161153e565b60200260200101818152505050505050565b6001821415610c1c578251602084015180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019182908110610bca57610bca61153e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b37573d6000803e3d6000fd5b505050565b60028210610c8b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f444500000000000000000000000000000000000000000000604482015260640161039c565b82517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810184527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0182610dd45783602001518181518110610cef57610cef61153e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a082318560200151866000015181518110610d2c57610d2c61153e565b60200260200101516040518263ffffffff1660e01b8152600401610d6c919073ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b602060405180830381865afa158015610d89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dad9190611962565b84602001518281518110610dc357610dc361153e565b6020026020010181815250506108bb565b60018314156108bb5783602001518181518110610df357610df361153e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16636352211e8560200151866000015181518110610e3057610e3061153e565b60200260200101516040518263ffffffff1660e01b8152600401610e5691815260200190565b602060405180830381865afa158015610e73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e97919061197b565b73ffffffffffffffffffffffffffffffffffffffff1684602001518281518110610b7157610b7161153e565b60028210610f2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f444500000000000000000000000000000000000000000000604482015260640161039c565b816110375782517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe81018452602084015180517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd9092019182908110610f9557610f9561153e565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1662fdd58e85602001518360010181518110610fd057610fd061153e565b602002602001015186602001518460020181518110610ff157610ff161153e565b60200260200101516040518363ffffffff1660e01b8152600401610b1a92919073ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6001821415610c1c576001810160008167ffffffffffffffff81111561105f5761105f6114b1565b604051908082528060200260200182016040528015611088578160200160208202803683370190505b50905060008267ffffffffffffffff8111156110a6576110a66114b1565b6040519080825280602002602001820160405280156110cf578160200160208202803683370190505b5086518490037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818101895260208901518051939450918690030191600091908390811061111f5761111f61153e565b6020026020010151905060005b858110156111d65788602001518184016001018151811061114f5761114f61153e565b60200260200101518582815181106111695761116961153e565b73ffffffffffffffffffffffffffffffffffffffff909216602092830291909101820152890151805160018589018401019081106111a9576111a961153e565b60200260200101518482815181106111c3576111c361153e565b602090810291909101015260010161112c565b506040517f4e1273f400000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061122e90889088906004016119b1565b600060405180830381865afa15801561124b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112919190810190611a1e565b905060005b868110156112e3578181815181106112b0576112b061153e565b60200260200101518a60200151828601815181106112d0576112d061153e565b6020908102919091010152600101611296565b50505050505050505050565b600081518084526020808501945080840160005b8381101561131f57815187529582019590820190600101611303565b509495945050505050565b60005b8381101561134557818101518382015260200161132d565b838111156108bb5750506000910152565b6000815180845261136e81602086016020860161132a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a060408501526113c560c08501826112ef565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b8281101561143e578487830301845261142c828751611356565b95880195938801939150600101611412565b5060608a01519650838982030160808a015261145a81886112ef565b965050505060808701519250808685030160a0870152505061147c82826112ef565b95945050505050565b60006020828403121561149757600080fd5b5035919050565b6020815260006109a360208301846112ef565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611521576115216114e0565b500390565b60008219821115611539576115396114e0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561159f5761159f6114e0565b5060010190565b60008152600082516115bf81600185016020870161132a565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161165581600e85016020870161132a565b91909101600e019392505050565b60405160a0810167ffffffffffffffff81118282101715611686576116866114b1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116d3576116d36114b1565b604052919050565b600067ffffffffffffffff8211156116f5576116f56114b1565b5060051b60200190565b600082601f83011261171057600080fd5b81516020611725611720836116db565b61168c565b82815260059290921b8401810191818101908684111561174457600080fd5b8286015b8481101561175f5780518352918301918301611748565b509695505050505050565b6000601f838184011261177c57600080fd5b8251602061178c611720836116db565b82815260059290921b850181019181810190878411156117ab57600080fd5b8287015b8481101561186057805167ffffffffffffffff808211156117d05760008081fd5b818a0191508a603f8301126117e55760008081fd5b858201516040828211156117fb576117fb6114b1565b61182a887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08c8501160161168c565b92508183528c818386010111156118415760008081fd5b6118508289850183870161132a565b50508452509183019183016117af565b50979650505050505050565b60006020828403121561187e57600080fd5b815167ffffffffffffffff8082111561189657600080fd5b9083019060a082860312156118aa57600080fd5b6118b2611663565b825181526020830151828111156118c857600080fd5b6118d4878286016116ff565b6020830152506040830151828111156118ec57600080fd5b6118f88782860161176a565b60408301525060608301518281111561191057600080fd5b61191c878286016116ff565b60608301525060808301518281111561193457600080fd5b611940878286016116ff565b60808301525095945050505050565b6020815260006109a36020830184611356565b60006020828403121561197457600080fd5b5051919050565b60006020828403121561198d57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146109a357600080fd5b604080825283519082018190526000906020906060840190828701845b82811015611a0057815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016119ce565b50505083810382850152611a1481866112ef565b9695505050505050565b600060208284031215611a3057600080fd5b815167ffffffffffffffff811115611a4757600080fd5b611a53848285016116ff565b94935050505056fea26469706673582212203a0cc620c7c9a7e6b23a3372d102fd1b1fd164aa756fb05aa3c999b9469ae20764736f6c634300080a0033"; - -type TokenOpsTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TokenOpsTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TokenOpsTest__factory extends ContractFactory { - constructor(...args: TokenOpsTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(config_, overrides || {}) as Promise; - } - getDeployTransaction( - config_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): TokenOpsTest { - return super.attach(address) as TokenOpsTest; - } - connect(signer: Signer): TokenOpsTest__factory { - return super.connect(signer) as TokenOpsTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TokenOpsTestInterface { - return new utils.Interface(_abi) as TokenOpsTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TokenOpsTest { - return new Contract(address, _abi, signerOrProvider) as TokenOpsTest; - } -} diff --git a/src/typechain/factories/TrustEscrowWrapper__factory.ts b/src/typechain/factories/TrustEscrowWrapper__factory.ts deleted file mode 100644 index aa5c37c..0000000 --- a/src/typechain/factories/TrustEscrowWrapper__factory.ts +++ /dev/null @@ -1,189 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - TrustEscrowWrapper, - TrustEscrowWrapperInterface, -} from "../TrustEscrowWrapper"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "fetchCrp", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "fetchEscrowStatus", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "fetchReserve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "fetchToken", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "getCrp", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "getEscrowStatus", - outputs: [ - { - internalType: "enum EscrowStatus", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "getReserve", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "trust_", - type: "address", - }, - ], - name: "getToken", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610963806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c806394eda7de1161005b57806394eda7de14610151578063bc926d0014610164578063c9a396e9146101aa578063dc98e935146101e357600080fd5b8063074f28071461008d57806334672acc146100a257806359770438146100b55780637c6b18d114610118575b600080fd5b6100a061009b36600461085b565b6101f6565b005b6100a06100b036600461085b565b610203565b6100ee6100c336600461085b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ee61012636600461085b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600360205260409020541690565b6100a061015f36600461085b565b61020c565b61019d61017236600461085b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b60405161010f91906108ae565b6100ee6101b836600461085b565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b6100a06101f136600461085b565b610215565b6101ff8161021e565b5050565b6101ff8161039e565b6101ff81610542565b6101ff816106bc565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260208190526040812054909116806103985760008373ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561029a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102be91906108ef565b905073ffffffffffffffffffffffffffffffffffffffff8116610342576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f52455345525645000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff16818160028111156103da576103da61087f565b11156103e65792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610433573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610457919061090c565b9050600281600381111561046d5761046d61087f565b14156104c85750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b60038160038111156104dc576104dc61087f565b14156105385750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260016020526040812054909116806103985760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e291906108ef565b905073ffffffffffffffffffffffffffffffffffffffff8116610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610339565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff808216600090815260036020526040812054909116806103985760008373ffffffffffffffffffffffffffffffffffffffff16633fd8108e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610738573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061075c91906108ef565b905073ffffffffffffffffffffffffffffffffffffffff81166107db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f305f4352500000000000000000000000000000000000000000000000000000006044820152606401610339565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260036020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461085857600080fd5b50565b60006020828403121561086d57600080fd5b813561087881610836565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60208101600383106108e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561090157600080fd5b815161087881610836565b60006020828403121561091e57600080fd5b81516004811061087857600080fdfea2646970667358221220977d65e9728d5a03a7c59091f5c8af02094cee413f83a745cd8cafb3a80d9d8864736f6c634300080a0033"; - -type TrustEscrowWrapperConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TrustEscrowWrapperConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TrustEscrowWrapper__factory extends ContractFactory { - constructor(...args: TrustEscrowWrapperConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): TrustEscrowWrapper { - return super.attach(address) as TrustEscrowWrapper; - } - connect(signer: Signer): TrustEscrowWrapper__factory { - return super.connect(signer) as TrustEscrowWrapper__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TrustEscrowWrapperInterface { - return new utils.Interface(_abi) as TrustEscrowWrapperInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TrustEscrowWrapper { - return new Contract(address, _abi, signerOrProvider) as TrustEscrowWrapper; - } -} diff --git a/src/typechain/factories/TrustFactory__factory.ts b/src/typechain/factories/TrustFactory__factory.ts deleted file mode 100644 index 923db9e..0000000 --- a/src/typechain/factories/TrustFactory__factory.ts +++ /dev/null @@ -1,350 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - TrustFactory, - TrustFactoryInterface, - TrustConstructionConfigStruct, -} from "../TrustFactory"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "crpFactory", - type: "address", - }, - { - internalType: "address", - name: "balancerFactory", - type: "address", - }, - { - internalType: "contract RedeemableERC20Factory", - name: "redeemableERC20Factory", - type: "address", - }, - { - internalType: "contract SeedERC20Factory", - name: "seedERC20Factory", - type: "address", - }, - { - internalType: "uint256", - name: "creatorFundsReleaseTimeout", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxRaiseDuration", - type: "uint256", - }, - ], - internalType: "struct TrustConstructionConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Implementation", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "child", - type: "address", - }, - ], - name: "NewChild", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "createChild", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "reserve", - type: "address", - }, - { - internalType: "uint256", - name: "reserveInit", - type: "uint256", - }, - { - internalType: "uint256", - name: "initialValuation", - type: "uint256", - }, - { - internalType: "uint256", - name: "finalValuation", - type: "uint256", - }, - { - internalType: "uint256", - name: "minimumTradingDuration", - type: "uint256", - }, - { - internalType: "address", - name: "creator", - type: "address", - }, - { - internalType: "uint256", - name: "minimumCreatorRaise", - type: "uint256", - }, - { - internalType: "uint256", - name: "seederFee", - type: "uint256", - }, - { - internalType: "uint256", - name: "redeemInit", - type: "uint256", - }, - ], - internalType: "struct TrustConfig", - name: "trustConfig_", - type: "tuple", - }, - { - components: [ - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "address", - name: "distributor", - type: "address", - }, - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - internalType: "struct ERC20Config", - name: "erc20Config", - type: "tuple", - }, - { - internalType: "address", - name: "tier", - type: "address", - }, - { - internalType: "uint256", - name: "minimumTier", - type: "uint256", - }, - ], - internalType: "struct TrustRedeemableERC20Config", - name: "trustRedeemableERC20Config_", - type: "tuple", - }, - { - components: [ - { - internalType: "address", - name: "seeder", - type: "address", - }, - { - internalType: "uint256", - name: "cooldownDuration", - type: "uint256", - }, - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "address", - name: "distributor", - type: "address", - }, - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - internalType: "struct ERC20Config", - name: "erc20Config", - type: "tuple", - }, - ], - internalType: "struct TrustSeedERC20Config", - name: "trustSeedERC20Config_", - type: "tuple", - }, - ], - name: "createChildTyped", - outputs: [ - { - internalType: "contract Trust", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "implementation", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "maybeChild_", - type: "address", - }, - ], - name: "isChild", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a06040523480156200001157600080fd5b5060405162006b4a38038062006b4a833981016040819052620000349162000139565b6001600090815560405182906200004b906200010e565b81516001600160a01b039081168252602080840151821690830152604080840151821690830152606080840151909116908201526080808301519082015260a0918201519181019190915260c001604051809103906000f080158015620000b6573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001e4565b6159ec806200115e83390190565b80516001600160a01b03811681146200013457600080fd5b919050565b600060c082840312156200014c57600080fd5b60405160c081016001600160401b03811182821017156200017d57634e487b7160e01b600052604160045260246000fd5b6040526200018b836200011c565b81526200019b602084016200011c565b6020820152620001ae604084016200011c565b6040820152620001c1606084016200011c565b60608201526080830151608082015260a083015160a08201528091505092915050565b608051610f58620002066000396000818160a601526103860152610f586000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806305506b4f146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f36600461053a565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c3660046105b9565b6101ba565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d636600461065b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a498585856040516020016101449392919061089a565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016f91906109d2565b6020604051808303816000875af115801561018e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101b291906109e5565b949350505050565b60006002600054141561022e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600090815561023f8484610368565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c4400000000000000000000000000000000006044820152606401610225565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b600080808061037985870187610c9c565b92509250925060006103aa7f0000000000000000000000000000000000000000000000000000000000000000610440565b6040517fbf080f5600000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063bf080f569061040390879087908790600401610e6b565b600060405180830381600087803b15801561041d57600080fd5b505af1158015610431573d6000803e3d6000fd5b50929998505050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661051d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c6564000000000000000000006044820152606401610225565b919050565b60006060828403121561053457600080fd5b50919050565b600080600083850361016081121561055157600080fd5b6101208082121561056157600080fd5b859450840135905067ffffffffffffffff8082111561057f57600080fd5b61058b87838801610522565b93506101408601359150808211156105a257600080fd5b506105af86828701610522565b9150509250925092565b600080602083850312156105cc57600080fd5b823567ffffffffffffffff808211156105e457600080fd5b818501915085601f8301126105f857600080fd5b81358181111561060757600080fd5b86602082850101111561061957600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461064d57600080fd5b50565b803561051d8161062b565b60006020828403121561066d57600080fd5b81356106788161062b565b9392505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126106b357600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126106f157600080fd5b830160208101925035905067ffffffffffffffff81111561071157600080fd5b80360383131561072057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600061077c82836106bc565b6080855261078e608086018284610727565b91505061079e60208401846106bc565b85830360208701526107b1838284610727565b9250505060408301356107c38161062b565b73ffffffffffffffffffffffffffffffffffffffff16604085015260609283013592909301919091525090565b60006107fc828361067f565b6060845261080d6060850182610770565b9050602083013561081d8161062b565b73ffffffffffffffffffffffffffffffffffffffff16602085015260409283013592909301919091525090565b600081356108578161062b565b73ffffffffffffffffffffffffffffffffffffffff16835260208281013590840152610886604083018361067f565b606060408501526101b26060850182610770565b600061016085356108aa8161062b565b73ffffffffffffffffffffffffffffffffffffffff8116845250602086013560208401526040860135604084015260608601356060840152608086013560808401526108f860a08701610650565b73ffffffffffffffffffffffffffffffffffffffff811660a08501525060c086013560c084015260e086013560e084015261010080870135818501525080610120840152610948818401866107f0565b905082810361014084015261095d818561084a565b9695505050505050565b6000815180845260005b8181101561098d57602081850181015186830182015201610971565b8181111561099f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106786020830184610967565b6000602082840312156109f757600080fd5b81516106788161062b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610a5457610a54610a02565b60405290565b604051610120810167ffffffffffffffff81118282101715610a5457610a54610a02565b600082601f830112610a8f57600080fd5b813567ffffffffffffffff80821115610aaa57610aaa610a02565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715610af057610af0610a02565b81604052838152866020858801011115610b0957600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060808284031215610b3b57600080fd5b6040516080810167ffffffffffffffff8282108183111715610b5f57610b5f610a02565b816040528293508435915080821115610b7757600080fd5b610b8386838701610a7e565b83526020850135915080821115610b9957600080fd5b50610ba685828601610a7e565b6020830152506040830135610bba8161062b565b6040820152606092830135920191909152919050565b600060608284031215610be257600080fd5b610bea610a31565b9050813567ffffffffffffffff811115610c0357600080fd5b610c0f84828501610b29565b8252506020820135610c208161062b565b806020830152506040820135604082015292915050565b600060608284031215610c4957600080fd5b610c51610a31565b90508135610c5e8161062b565b815260208281013590820152604082013567ffffffffffffffff811115610c8457600080fd5b610c9084828501610b29565b60408301525092915050565b6000806000838503610160811215610cb357600080fd5b61012080821215610cc357600080fd5b610ccb610a5a565b9150610cd686610650565b825260208601356020830152604086013560408301526060860135606083015260808601356080830152610d0c60a08701610650565b60a083015260c0868101359083015260e08087013590830152610100808701359083015290935084013567ffffffffffffffff80821115610d4c57600080fd5b610d5887838801610bd0565b9350610140860135915080821115610d6f57600080fd5b506105af86828701610c37565b6000815160808452610d916080850182610967565b905060208301518482036020860152610daa8282610967565b91505073ffffffffffffffffffffffffffffffffffffffff6040840151166040850152606083015160608501528091505092915050565b6000815160608452610df66060850182610d7c565b905073ffffffffffffffffffffffffffffffffffffffff6020840151166020850152604083015160408501528091505092915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526020810151602083015260006040820151606060408501526101b26060850182610d7c565b600061016073ffffffffffffffffffffffffffffffffffffffff86511683526020860151602084015260408601516040840152606086015160608401526080860151608084015260a0860151610ed960a085018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c086015160c084015260e086015160e084015261010080870151818501525080610120840152610f0d81840186610de1565b905082810361014084015261095d8185610e2c56fea2646970667358221220f56f771d1d18914f6c05e596f6e5dc65bdcd53c900b8a9c888c3fc202826d0d864736f6c634300080a00336101606040523480156200001257600080fd5b50604051620059ec380380620059ec83398101604081905262000035916200016f565b60208101516001600160a01b03908116610120528151811661010052604080830151821660e052606083015190911660c05251600090620000769062000144565b604051809103906000f08015801562000093573d6000803e3d6000fd5b506001600160a01b03818116608081815285810180516101405260a0808801805182526020808a01518a516040808d01516060808f0151985196518351338152958d1696860196909652928b1691840191909152891690820152939096169383019390935281019290925260c082015260e08101919091529091507f3b46443002e892688873cf730dd0855e18094203835008979109e8402f3012fc906101000160405180910390a150506200021a565b61165f806200438d83390190565b80516001600160a01b03811681146200016a57600080fd5b919050565b600060c082840312156200018257600080fd5b60405160c081016001600160401b0381118282101715620001b357634e487b7160e01b600052604160045260246000fd5b604052620001c18362000152565b8152620001d16020840162000152565b6020820152620001e46040840162000152565b6040820152620001f76060840162000152565b60608201526080830151608082015260a083015160a08201528091505092915050565b60805160a05160c05160e05161010051610120516101405161411862000275600039600061037b01526000612c0501526000612bc90152600061270c015260006128fb01526000611543015260006127ea01526141186000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b45ba71811610097578063cd3293de11610066578063cd3293de14610210578063f9020e331461022e578063fc0c546a14610243578063fdafb7171461026157600080fd5b8063b45ba718146101da578063b8b37916146101e2578063b8ffd02c146101ea578063bf080f56146101fd57600080fd5b8063634991af116100d3578063634991af146101775780636642de101461018a5780639923c94b1461019d578063a1b140b6146101c557600080fd5b8063055ad42e14610105578063341935f5146101205780633fd8108e1461012a5780635422e28c1461016f575b600080fd5b61010d610269565b6040519081526020015b60405180910390f35b6101286102d3565b005b60065461014a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610117565b6101286102e5565b61010d6101853660046135d6565b610486565b6101286101983660046136a1565b6104dc565b6101b06101ab3660046136cd565b61069e565b60405163ffffffff9091168152602001610117565b6101cd6106ce565b6040516101179190613715565b610128610852565b610128610bec565b61010d6101f83660046135d6565b6110ef565b61012861020b36600461394d565b61112e565b60055473ffffffffffffffffffffffffffffffffffffffff1661014a565b6102366117b3565b6040516101179190613a37565b60045473ffffffffffffffffffffffffffffffffffffffff1661014a565b6101286117ef565b604080516101008101918290526000916102ce919083906008908280855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610287579050505050505043610486565b905090565b6102db610bec565b6102e36117ef565b565b6003806102f0610269565b101561035d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d494e5f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610367610269565b6040805161010081019182905291925043917f0000000000000000000000000000000000000000000000000000000000000000916103f191906000906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116103aa5790505050505050846110ef565b6103fb9190613a7a565b1115610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f52454c45415345000000000000000000000000000000000000006044820152606401610354565b600381141561047757610477600443611ac5565b610482600543611ac5565b5050565b6000805b60088110156104d0578381600881106104a5576104a5613a92565b602002015163ffffffff168310156104be5790506104d6565b806104c881613ac1565b91505061048a565b50600890505b92915050565b6005806104e7610269565b1461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b60055473ffffffffffffffffffffffffffffffffffffffff84811691161480610591575060045473ffffffffffffffffffffffffffffffffffffffff8481169116145b806105b6575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b61061c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f554e4b4e4f574e5f544f4b454e000000000000000000000000000000000000006044820152606401610354565b6040805133815273ffffffffffffffffffffffffffffffffffffffff851660208201529081018390527ff78c6ab7f5da48a42db1a0e1eafa1db1c639eaa3cddbce5e1a850e8335762be69060600160405180910390a16009546106999073ffffffffffffffffffffffffffffffffffffffff858116911684611d6e565b505050565b600081600881106106ae57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b6000806106d9610269565b9050806106e857600091505090565b600181141561079b576007546005546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190613afa565b1061079357600191505090565b600091505090565b60028114156107ac57600291505090565b60038114156107bd57600391505090565b60048114806107cc5750600581145b156107ec57600354600254106107e457600491505090565b600591505090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f554e4b4e4f574e5f504f4f4c5f504841534500000000000000000000000000006044820152606401610354565b5090565b60018061085d610269565b146108c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b600043600c546108d49190613a7a565b90506108e1600243611ac5565b6108f660036108f1836001613a7a565b611ac5565b604080516002808252606082018352600092602083019080368337019050509050670de0b6b3a76400008160008151811061093357610933613a92565b602002602001018181525050600d548160018151811061095557610955613a92565b602090810291909101015260065473ffffffffffffffffffffffffffffffffffffffff168063c3391d27610995670de0b6b3a7640000633b9aca00613b13565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526000602482018190526044820152606401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1663b64ef17b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7d9190613b50565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529081018690529091507f11c4af897467273e02b712af422f0e33863936f79975995dce76dd33408b5c2d9060600160405180910390a1600480546040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811693820193909352911690633833be6290602401600060405180830381600087803b158015610b4557600080fd5b505af1158015610b59573d6000803e3d6000fd5b50506040517f246bc19b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516925063246bc19b9150610bb390869043908990600401613ba8565b600060405180830381600087803b158015610bcd57600080fd5b505af1158015610be1573d6000803e3d6000fd5b505050505050505050565b600380610bf7610269565b14610c5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b610c69600443611ac5565b610c71611ef0565b600654604080517fb64ef17b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163b64ef17b9160048083019260209291908290030181865afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190613b50565b600480546040517f70a082310000000000000000000000000000000000000000000000000000000081523092810192909252919250610dc391839173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da39190613afa565b60045473ffffffffffffffffffffffffffffffffffffffff1691906123a1565b600480546040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811693820193909352911690638b24259b90602401600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b50506005546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401602060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf9190613afa565b6002819055600354600754919250821080159190610f0857600a54610f059082906123f7565b90505b610f128184612433565b905060008080610f22868561244b565b90508415610f4a57600b54610f379082612433565b9250610f43818461244b565b9150610f4e565b8092505b6005546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301527fc403d71c903123c0350567a0b3670743d0f9daae64a88f5d66e0fd22883727859233928a92899288928a92909116906370a0823190602401602060405180830381865afa158015610fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100e9190613afa565b6040805173ffffffffffffffffffffffffffffffffffffffff90971687526020870195909552938501929092526060840152608083015260a082015260c00160405180910390a18315611085576001546005546110859173ffffffffffffffffffffffffffffffffffffffff918216911686611d6e565b81156110b5576009546005546110b59173ffffffffffffffffffffffffffffffffffffffff918216911684611d6e565b82156110e5576004546005546110e59173ffffffffffffffffffffffffffffffffffffffff918216911685611d6e565b5050505050505050565b60008082116110ff576000611121565b8261110b600184613bcd565b6008811061111b5761111b613a92565b60200201515b63ffffffff169392505050565b611136612461565b6000611140610269565b146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b6111b2600143611ac5565b60a083015173ffffffffffffffffffffffffffffffffffffffff16611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f43524541544f525f3000000000000000000000000000000000000000000000006044820152606401610354565b825173ffffffffffffffffffffffffffffffffffffffff166112b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f524553455256455f3000000000000000000000000000000000000000000000006044820152606401610354565b6305f5e10083602001511015611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f524553455256455f494e49545f4d494e494d554d0000000000000000000000006044820152606401610354565b826060015183604001511015611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d494e5f494e495449414c5f56414c554154494f4e00000000000000000000006044820152606401610354565b60a08301516009805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155845160058054919093169116179055602083015160075560c0830151611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f300000000000000000000000000000000000000000006044820152606401610354565b60c083015160085560e0830151600a55610100830151600b556020830151606084015161148d9190612510565b600d5560c083015161010084015160e0850151602086015160009392916114b391613a7a565b6114bd9190613a7a565b6114c79190613a7a565b90508084606001511015611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d494e5f46494e414c5f56414c554154494f4e000000000000000000000000006044820152606401610354565b600381905560808401517f000000000000000000000000000000000000000000000000000000000000000010156115ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d41585f52414953455f4455524154494f4e00000000000000000000000000006044820152606401610354565b6000846080015111611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f305f54524144494e475f4455524154494f4e00000000000000000000000000006044820152606401610354565b6080840151600c55600061164c858561263c565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790559050600061169a868561285a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556040805160a08101825289518316815291851660208084019190915289015182820152875160609081015190830152880151608082015290915060009061172590612a29565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040519091507fb8990d778a15ad364ca01d5bc6e6751857db983fa1a2749b9666b7e0a10b1e18906117a29033908a908590879089908b90613be4565b60405180910390a150505050505050565b6000806117be610269565b905060048114806117cf5750600581145b1561079357600354600254106117e757600291505090565b600391505090565b6004806117fa610269565b1015611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d494e5f504841534500000000000000000000000000000000000000000000006044820152606401610354565b600554600480546009546001546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152309481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485018190529482169492821693911690600090859063dd62ed3e90604401602060405180830381865afa1580156118f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119169190613afa565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291925060009187169063dd62ed3e90604401602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b29190613afa565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff878116602483015291925060009188169063dd62ed3e90604401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190613afa565b90508215611a7757611a7773ffffffffffffffffffffffffffffffffffffffff881686856123a1565b8115611a9e57611a9e73ffffffffffffffffffffffffffffffffffffffff881685846123a1565b80156110e5576110e573ffffffffffffffffffffffffffffffffffffffff881687836123a1565b80431115611b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f5041535400000000000000000000000000000000006044820152606401610354565b63ffffffff8110611b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a454400000000000000006044820152606401610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611bc8610269565b14611c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f5048415345000000000000000000000000000000000000000000006044820152606401610354565b60008160088110611c4257611c42613a92565b60088104919091015460079091166004026101000a900463ffffffff90811614611cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f5345540000000000000000000000000000000000006044820152606401610354565b8160008260088110611cdc57611cdc613a92565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611d619392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e099190613afa565b611e139190613a7a565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150611eea9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613083565b50505050565b600654604080517fb64ef17b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163b64ef17b9160048083019260209291908290030181865afa158015611f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f849190613b50565b6005546040517f8c28cbe800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152919250821690638c28cbe890602401600060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b5050600480546040517f8c28cbe800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169281019290925284169250638c28cbe89150602401600060405180830381600087803b15801561207a57600080fd5b505af115801561208e573d6000803e3d6000fd5b505050506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121259190613afa565b6005546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529192506000919084169063f8b2cb4f90602401602060405180830381865afa15801561219b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bf9190613afa565b6121cc620f42418461318f565b6121d69190613d22565b600480546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169281019290925291925060009185169063f8b2cb4f90602401602060405180830381865afa15801561224e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122729190613afa565b61227f620f42418561318f565b6122899190613d22565b905060006122ac826122a68581670de0b6b3a76400006064613b13565b906131be565b6122b7906001613a7a565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925073ffffffffffffffffffffffffffffffffffffffff169063b02f0b73906123669083906370a0823190602401602060405180830381865afa158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190613afa565b612360888661244b565b90612433565b6040805160028082526060820183529091602083019080368337019050506040518363ffffffff1660e01b8152600401610bb3929190613d36565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106999084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611e68565b6000828201838110612409578061242b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183106124425781612444565b825b9392505050565b600081831161245b576000612444565b50900390565b600054600163ffffffff9091161061247b5761247b613d4f565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526124cc60008260086134b2565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b60008083612526670de0b6b3a764000085613b13565b6125309190613d22565b9050670de0b6b3a76400008110156125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e5f5745494748545f56414c554154494f4e0000000000000000000000006044820152606401610354565b6125b681670de0b6b3a7640000613a7a565b670de0b6b3a76400006125ca816032613b13565b6125d49190613bcd565b1015612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d41585f5745494748545f56414c554154494f4e0000000000000000000000006044820152606401610354565b6000826020015182600001516060015110156126b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d494e5f544f4b454e5f535550504c59000000000000000000000000000000006044820152606401610354565b815130604091820152805160a081018252845173ffffffffffffffffffffffffffffffffffffffff908116825284516020808401919091528086015182168385015283860151606084015260006080840181905293517f000000000000000000000000000000000000000000000000000000000000000090921692632ea72a499261273f9201613e59565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161276a9190613ec5565b6020604051808303816000875af1158015612789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ad9190613b50565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015291925090821690633833be6290602401600060405180830381600087803b15801561283a57600080fd5b505af115801561284e573d6000803e3d6000fd5b50929695505050505050565b805160009073ffffffffffffffffffffffffffffffffffffffff81166124445782604001516060015184602001516128929190613ed8565b156128f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f534545445f50524943455f4d554c5449504c49455200000000000000000000006044820152606401610354565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632ea72a496040518060a00160405280876000015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200186604001516060015188602001516129949190613d22565b81526020018660200151815260200186604001518152506040516020016129bb9190613eec565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016129e69190613ec5565b6020604051808303816000875af1158015612a05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242b9190613b50565b60408051600280825260608201835260009283929190602083019080368337019050509050826000015181600081518110612a6657612a66613a92565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050826020015181600181518110612ab857612ab8613a92565b73ffffffffffffffffffffffffffffffffffffffff929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337019050509050836040015181600081518110612b1857612b18613a92565b602002602001018181525050836060015181600181518110612b3c57612b3c613a92565b602090810291909101015260408051600280825260608201909252600091816020016020820280368337019050509050670de0b6b3a764000081600081518110612b8857612b88613a92565b602002602001018181525050612ba685604001518660800151612510565b81600181518110612bb957612bb9613a92565b60200260200101818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634420002b7f00000000000000000000000000000000000000000000000000000000000000006040518060c001604052806040518060400160405280600481526020017f523230500000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601381526020017f52656465656d61626c654552433230506f6f6c000000000000000000000000008152508152602001888152602001878152602001868152602001620f4240670de0b6b3a7640000612cce9190613d22565b90526040805160c081018252600080825260208201819052600182840181905260608301829052608083015260a082015290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152612d3993929190600401613f49565b6020604051808303816000875af1158015612d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7c9190613b50565b9050856020015173ffffffffffffffffffffffffffffffffffffffff16633833be628273ffffffffffffffffffffffffffffffffffffffff16630a1659406040518163ffffffff1660e01b8152600401602060405180830381865afa158015612de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0d9190613b50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381600087803b158015612e7357600080fd5b505af1158015612e87573d6000803e3d6000fd5b50505060208701516040517f3833be6200000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169150633833be6290602401600060405180830381600087803b158015612ef857600080fd5b505af1158015612f0c573d6000803e3d6000fd5b50505060208701516040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169150633833be6290602401600060405180830381600087803b158015612f7f57600080fd5b505af1158015612f93573d6000803e3d6000fd5b50505060208701516040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116915063e7ae91fe90602401600060405180830381600087803b15801561300657600080fd5b505af115801561301a573d6000803e3d6000fd5b50505060408701518751613047925073ffffffffffffffffffffffffffffffffffffffff169083906131ce565b61307a818760600151886020015173ffffffffffffffffffffffffffffffffffffffff166131ce9092919063ffffffff16565b95945050505050565b60006130e5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166133509092919063ffffffff16565b805190915015610699578080602001905181019061310391906140a4565b610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610354565b60008261319e575060006104d6565b828202828482816131b1576131b1613cf3565b041415612409578061242b565b6000818310156124425781612444565b80158061326e57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c9190613afa565b155b6132fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610354565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106999084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611e68565b606061242b84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6133d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610354565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161340291906140c6565b60006040518083038185875af1925050503d806000811461343f576040519150601f19603f3d011682016040523d82523d6000602084013e613444565b606091505b509150915061345482828661345f565b979650505050505050565b6060831561346e575081612444565b82511561347e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103549190613ec5565b60018301918390821561353e5791602002820160005b8382111561350c57835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026134c8565b801561353c5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261350c565b505b5061084e9291505b8082111561084e5760008155600101613546565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156135ac576135ac61355a565b60405290565b604051610120810167ffffffffffffffff811182821017156135ac576135ac61355a565b60008061012083850312156135ea57600080fd5b83601f8401126135f957600080fd5b60405161010080820182811067ffffffffffffffff8211171561361e5761361e61355a565b6040528401818682111561363157600080fd5b855b8281101561365e57803563ffffffff811681146136505760008081fd5b825260209182019101613633565b509196903595509350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461368e57600080fd5b50565b803561369c8161366c565b919050565b600080604083850312156136b457600080fd5b82356136bf8161366c565b946020939093013593505050565b6000602082840312156136df57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310613729576137296136e6565b91905290565b600082601f83011261374057600080fd5b813567ffffffffffffffff8082111561375b5761375b61355a565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156137a1576137a161355a565b816040528381528660208588010111156137ba57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000608082840312156137ec57600080fd5b6040516080810167ffffffffffffffff82821081831117156138105761381061355a565b81604052829350843591508082111561382857600080fd5b6138348683870161372f565b8352602085013591508082111561384a57600080fd5b506138578582860161372f565b602083015250604083013561386b8161366c565b6040820152606092830135920191909152919050565b60006060828403121561389357600080fd5b61389b613589565b9050813567ffffffffffffffff8111156138b457600080fd5b6138c0848285016137da565b82525060208201356138d18161366c565b806020830152506040820135604082015292915050565b6000606082840312156138fa57600080fd5b613902613589565b9050813561390f8161366c565b815260208281013590820152604082013567ffffffffffffffff81111561393557600080fd5b613941848285016137da565b60408301525092915050565b600080600083850361016081121561396457600080fd5b6101208082121561397457600080fd5b61397c6135b2565b915061398786613691565b8252602086013560208301526040860135604083015260608601356060830152608086013560808301526139bd60a08701613691565b60a083015260c0868101359083015260e08087013590830152610100808701359083015290935084013567ffffffffffffffff808211156139fd57600080fd5b613a0987838801613881565b9350610140860135915080821115613a2057600080fd5b50613a2d868287016138e8565b9150509250925092565b6020810160048310613729576137296136e6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613a8d57613a8d613a4b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613af357613af3613a4b565b5060010190565b600060208284031215613b0c57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4b57613b4b613a4b565b500290565b600060208284031215613b6257600080fd5b81516124448161366c565b600081518084526020808501945080840160005b83811015613b9d57815187529582019590820190600101613b81565b509495945050505050565b606081526000613bbb6060830186613b6d565b60208301949094525060400152919050565b600082821015613bdf57613bdf613a4b565b500390565b60006101c08201905073ffffffffffffffffffffffffffffffffffffffff808916835280885116602084015250602087015160408301526040870151606083015260608701516080830152608087015160a083015260a0870151613c6060c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c087015160e083015260e08701516101008181850152808901516101208501525050613ca761014083018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff851661016083015273ffffffffffffffffffffffffffffffffffffffff8416610180830152826101a0830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613d3157613d31613cf3565b500490565b82815260406020820152600061242b6040830184613b6d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60005b83811015613d99578181015183820152602001613d81565b83811115611eea5750506000910152565b60008151808452613dc2816020860160208601613d7e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160808452613e096080850182613daa565b905060208301518482036020860152613e228282613daa565b91505073ffffffffffffffffffffffffffffffffffffffff6040840151166040850152606083015160608501528091505092915050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a06040850152613e9660c0850182613df4565b9050816040860151166060850152606085015160808501528160808601511660a0850152809250505092915050565b6020815260006124446020830184613daa565b600082613ee757613ee7613cf3565b500690565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152806020850151166040840152506040830151606083015260608301516080830152608083015160a08084015261242b60c0840182613df4565b600061010073ffffffffffffffffffffffffffffffffffffffff808716845260208281860152865160c084870152613f856101c0870182613daa565b935050808701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008087860301610120880152613fc28583613daa565b60408a015188820383016101408a01528051808352908501965060009350908401905b8084101561400757865186168252958401956001939093019290840190613fe5565b5060608a0151955081888203016101608901526140248187613b6d565b9550506080890151935080878603016101808801525050506140468282613b6d565b60a08701516101a0860152925061242b915050604083018480511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a0810151151560a08301525050565b6000602082840312156140b657600080fd5b8151801515811461244457600080fd5b600082516140d8818460208701613d7e565b919091019291505056fea264697066735822122087d382e59074e00253e58828f9e01b4cb23fd830724020244fa2fe446dec250d64736f6c634300080a0033608060405234801561001057600080fd5b5061163f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632dbfa73514610046578063db2b292c1461006c578063dc9a7ffb1461007f575b600080fd5b610059610054366004611397565b6100a7565b6040519081526020015b60405180910390f35b61005961007a3660046113d0565b61027c565b61009261008d3660046113ed565b610403565b60408051928352602083019190915201610063565b6000806100b383610832565b905060028160028111156100c9576100c9611446565b14610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209388168352929052205480156102745773ffffffffffffffffffffffffffffffffffffffff8416600090815260056020526040812080548392906101a39084906114a4565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260046020908152604080832093891683529290529081208190556101e8856109d6565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015288811682840152831660608201526080810185905290519192507f4f55a769590f1c0e20a638dce7a4e135e95f8a5ecb2a05e7eef582cce5b5031c919081900360a00190a161027273ffffffffffffffffffffffffffffffffffffffff82168784610b51565b505b949350505050565b60008061028883610832565b9050600181600281111561029e5761029e611446565b14610305576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205480156103fc5773ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260408120819055610362856109d6565b9050600061036f86610c2a565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015285811682840152831660608201526080810186905290519192507f2faadd4ce8b8be8c10cd95882652e780929619ab27641da75536750ef256ca5d919081900360a00190a16103f973ffffffffffffffffffffffffffffffffffffffff83168285610b51565b50505b9392505050565b60008060008611610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f464545000000000000000000000000000000000000000000000000604482015260640161012c565b600061047b88610832565b600281111561048c5761048c611446565b146104f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f454e444544000000000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600460209081526040808320938c16835292905290812080548892906105379084906114bb565b909155505073ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080548892906105719084906114bb565b9091555060009050610582886109d6565b9050600061058f89610c2a565b9050600061059c8a610da4565b905060008173ffffffffffffffffffffffffffffffffffffffff1663b64ef17b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f91906114d3565b90507f6a7dcbbe66188485e365a408a20221fd766c1bb6989b1f5d6f817c258bc67a29338d8d87878f60405161068d9695949392919073ffffffffffffffffffffffffffffffffffffffff9687168152948616602086015292851660408501529084166060840152909216608082015260a081019190915260c00190565b60405180910390a18173ffffffffffffffffffffffffffffffffffffffff1663e211b8756040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106dd57600080fd5b505af11580156106f1573d6000803e3d6000fd5b5050505061072533308b8d61070691906114bb565b73ffffffffffffffffffffffffffffffffffffffff8816929190610f1e565b61074673ffffffffffffffffffffffffffffffffffffffff8516828b610f82565b6040517f8201aa3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018b90528481166044830152606482018a9052608482018990526000918291841690638201aa3f9060a40160408051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906114f0565b909250905061081f73ffffffffffffffffffffffffffffffffffffffff86163384610b51565b909d909c509a5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff168181600281111561086e5761086e611446565b111561087a5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190611514565b9050600281600381111561090157610901611446565b141561095c5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b600381600381111561097057610970611446565b14156109cc5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7691906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f524553455256450000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c259084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611104565b505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cca91906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526003602052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff16633fd8108e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4491906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f305f435250000000000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260036020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f7c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610ba3565b50505050565b80158061102257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190611535565b155b6110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161012c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c259084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610ba3565b6000611166826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112109092919063ffffffff16565b805190915015610c255780806020019051810190611184919061154e565b610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161012c565b606061027484846000858573ffffffffffffffffffffffffffffffffffffffff85163b611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516112c2919061159c565b60006040518083038185875af1925050503d80600081146112ff576040519150601f19603f3d011682016040523d82523d6000602084013e611304565b606091505b509150915061131482828661131f565b979650505050505050565b6060831561132e5750816103fc565b82511561133e5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012c91906115b8565b73ffffffffffffffffffffffffffffffffffffffff8116811461139457600080fd5b50565b600080604083850312156113aa57600080fd5b82356113b581611372565b915060208301356113c581611372565b809150509250929050565b6000602082840312156113e257600080fd5b81356103fc81611372565b60008060008060008060c0878903121561140657600080fd5b863561141181611372565b9550602087013561142181611372565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114b6576114b6611475565b500390565b600082198211156114ce576114ce611475565b500190565b6000602082840312156114e557600080fd5b81516103fc81611372565b6000806040838503121561150357600080fd5b505080516020909101519092909150565b60006020828403121561152657600080fd5b8151600481106103fc57600080fd5b60006020828403121561154757600080fd5b5051919050565b60006020828403121561156057600080fd5b815180151581146103fc57600080fd5b60005b8381101561158b578181015183820152602001611573565b83811115610f7c5750506000910152565b600082516115ae818460208701611570565b9190910192915050565b60208152600082518060208401526115d7816040850160208701611570565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122067cdf1f51edf6901bcfd7e3445b26a4b58fdc5c1160c1dea3bd8228e440692d664736f6c634300080a0033"; - -type TrustFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TrustFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class TrustFactory__factory extends ContractFactory { - constructor(...args: TrustFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: TrustConstructionConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(config_, overrides || {}) as Promise; - } - getDeployTransaction( - config_: TrustConstructionConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): TrustFactory { - return super.attach(address) as TrustFactory; - } - connect(signer: Signer): TrustFactory__factory { - return super.connect(signer) as TrustFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TrustFactoryInterface { - return new utils.Interface(_abi) as TrustFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): TrustFactory { - return new Contract(address, _abi, signerOrProvider) as TrustFactory; - } -} diff --git a/src/typechain/factories/Trust__factory.ts b/src/typechain/factories/Trust__factory.ts deleted file mode 100644 index 43b8db9..0000000 --- a/src/typechain/factories/Trust__factory.ts +++ /dev/null @@ -1,713 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - Trust, - TrustInterface, - TrustConstructionConfigStruct, -} from "../Trust"; - -const _abi = [ - { - inputs: [ - { - components: [ - { - internalType: "address", - name: "crpFactory", - type: "address", - }, - { - internalType: "address", - name: "balancerFactory", - type: "address", - }, - { - internalType: "contract RedeemableERC20Factory", - name: "redeemableERC20Factory", - type: "address", - }, - { - internalType: "contract SeedERC20Factory", - name: "seedERC20Factory", - type: "address", - }, - { - internalType: "uint256", - name: "creatorFundsReleaseTimeout", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxRaiseDuration", - type: "uint256", - }, - ], - internalType: "struct TrustConstructionConfig", - name: "config_", - type: "tuple", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "balancerFactory", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "crpFactory", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "redeemableERC20Factory", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "seedERC20Factory", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "bPoolFeeEscrow", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "creatorFundsReleaseTimeout", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "maxRaiseDuration", - type: "uint256", - }, - ], - name: "Construction", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "token", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "CreatorFundsRelease", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "finalBalance", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "seederPay", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "creatorPay", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "tokenPay", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "poolDust", - type: "uint256", - }, - ], - name: "EndDutchAuction", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - components: [ - { - internalType: "contract IERC20", - name: "reserve", - type: "address", - }, - { - internalType: "uint256", - name: "reserveInit", - type: "uint256", - }, - { - internalType: "uint256", - name: "initialValuation", - type: "uint256", - }, - { - internalType: "uint256", - name: "finalValuation", - type: "uint256", - }, - { - internalType: "uint256", - name: "minimumTradingDuration", - type: "uint256", - }, - { - internalType: "address", - name: "creator", - type: "address", - }, - { - internalType: "uint256", - name: "minimumCreatorRaise", - type: "uint256", - }, - { - internalType: "uint256", - name: "seederFee", - type: "uint256", - }, - { - internalType: "uint256", - name: "redeemInit", - type: "uint256", - }, - ], - indexed: false, - internalType: "struct TrustConfig", - name: "config", - type: "tuple", - }, - { - indexed: false, - internalType: "address", - name: "crp", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "seeder", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "redeemableERC20", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "successBalance", - type: "uint256", - }, - ], - name: "Initialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "newPhase", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "scheduledBlock", - type: "uint256", - }, - ], - name: "PhaseScheduled", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pool", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "finalAuctionBlock", - type: "uint256", - }, - ], - name: "StartDutchAuction", - type: "event", - }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "phase_", - type: "uint256", - }, - ], - name: "blockNumberForPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "token_", - type: "address", - }, - { - internalType: "uint256", - name: "amount_", - type: "uint256", - }, - ], - name: "creatorFundsRelease", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "crp", - outputs: [ - { - internalType: "contract IConfigurableRightsPool", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "currentPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "enableCreatorFundsRelease", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "endDutchAuction", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "endDutchAuctionAndTransfer", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "getDistributionStatus", - outputs: [ - { - internalType: "enum DistributionStatus", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "reserve", - type: "address", - }, - { - internalType: "uint256", - name: "reserveInit", - type: "uint256", - }, - { - internalType: "uint256", - name: "initialValuation", - type: "uint256", - }, - { - internalType: "uint256", - name: "finalValuation", - type: "uint256", - }, - { - internalType: "uint256", - name: "minimumTradingDuration", - type: "uint256", - }, - { - internalType: "address", - name: "creator", - type: "address", - }, - { - internalType: "uint256", - name: "minimumCreatorRaise", - type: "uint256", - }, - { - internalType: "uint256", - name: "seederFee", - type: "uint256", - }, - { - internalType: "uint256", - name: "redeemInit", - type: "uint256", - }, - ], - internalType: "struct TrustConfig", - name: "config_", - type: "tuple", - }, - { - components: [ - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "address", - name: "distributor", - type: "address", - }, - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - internalType: "struct ERC20Config", - name: "erc20Config", - type: "tuple", - }, - { - internalType: "address", - name: "tier", - type: "address", - }, - { - internalType: "uint256", - name: "minimumTier", - type: "uint256", - }, - ], - internalType: "struct TrustRedeemableERC20Config", - name: "trustRedeemableERC20Config_", - type: "tuple", - }, - { - components: [ - { - internalType: "address", - name: "seeder", - type: "address", - }, - { - internalType: "uint256", - name: "cooldownDuration", - type: "uint256", - }, - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "address", - name: "distributor", - type: "address", - }, - { - internalType: "uint256", - name: "initialSupply", - type: "uint256", - }, - ], - internalType: "struct ERC20Config", - name: "erc20Config", - type: "tuple", - }, - ], - internalType: "struct TrustSeedERC20Config", - name: "trustSeedERC20Config_", - type: "tuple", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "blockNumber_", - type: "uint256", - }, - ], - name: "phaseAtBlockNumber", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - name: "phaseBlocks", - outputs: [ - { - internalType: "uint32", - name: "", - type: "uint32", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "reserve", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "saleStatus", - outputs: [ - { - internalType: "enum SaleStatus", - name: "", - type: "uint8", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "startDutchAuction", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "token", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "transferAuctionTokens", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x6101606040523480156200001257600080fd5b50604051620059ec380380620059ec83398101604081905262000035916200016f565b60208101516001600160a01b03908116610120528151811661010052604080830151821660e052606083015190911660c05251600090620000769062000144565b604051809103906000f08015801562000093573d6000803e3d6000fd5b506001600160a01b03818116608081815285810180516101405260a0808801805182526020808a01518a516040808d01516060808f0151985196518351338152958d1696860196909652928b1691840191909152891690820152939096169383019390935281019290925260c082015260e08101919091529091507f3b46443002e892688873cf730dd0855e18094203835008979109e8402f3012fc906101000160405180910390a150506200021a565b61165f806200438d83390190565b80516001600160a01b03811681146200016a57600080fd5b919050565b600060c082840312156200018257600080fd5b60405160c081016001600160401b0381118282101715620001b357634e487b7160e01b600052604160045260246000fd5b604052620001c18362000152565b8152620001d16020840162000152565b6020820152620001e46040840162000152565b6040820152620001f76060840162000152565b60608201526080830151608082015260a083015160a08201528091505092915050565b60805160a05160c05160e05161010051610120516101405161411862000275600039600061037b01526000612c0501526000612bc90152600061270c015260006128fb01526000611543015260006127ea01526141186000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063b45ba71811610097578063cd3293de11610066578063cd3293de14610210578063f9020e331461022e578063fc0c546a14610243578063fdafb7171461026157600080fd5b8063b45ba718146101da578063b8b37916146101e2578063b8ffd02c146101ea578063bf080f56146101fd57600080fd5b8063634991af116100d3578063634991af146101775780636642de101461018a5780639923c94b1461019d578063a1b140b6146101c557600080fd5b8063055ad42e14610105578063341935f5146101205780633fd8108e1461012a5780635422e28c1461016f575b600080fd5b61010d610269565b6040519081526020015b60405180910390f35b6101286102d3565b005b60065461014a9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610117565b6101286102e5565b61010d6101853660046135d6565b610486565b6101286101983660046136a1565b6104dc565b6101b06101ab3660046136cd565b61069e565b60405163ffffffff9091168152602001610117565b6101cd6106ce565b6040516101179190613715565b610128610852565b610128610bec565b61010d6101f83660046135d6565b6110ef565b61012861020b36600461394d565b61112e565b60055473ffffffffffffffffffffffffffffffffffffffff1661014a565b6102366117b3565b6040516101179190613a37565b60045473ffffffffffffffffffffffffffffffffffffffff1661014a565b6101286117ef565b604080516101008101918290526000916102ce919083906008908280855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610287579050505050505043610486565b905090565b6102db610bec565b6102e36117ef565b565b6003806102f0610269565b101561035d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d494e5f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000610367610269565b6040805161010081019182905291925043917f0000000000000000000000000000000000000000000000000000000000000000916103f191906000906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116103aa5790505050505050846110ef565b6103fb9190613a7a565b1115610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f52454c45415345000000000000000000000000000000000000006044820152606401610354565b600381141561047757610477600443611ac5565b610482600543611ac5565b5050565b6000805b60088110156104d0578381600881106104a5576104a5613a92565b602002015163ffffffff168310156104be5790506104d6565b806104c881613ac1565b91505061048a565b50600890505b92915050565b6005806104e7610269565b1461054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b60055473ffffffffffffffffffffffffffffffffffffffff84811691161480610591575060045473ffffffffffffffffffffffffffffffffffffffff8481169116145b806105b6575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b61061c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f554e4b4e4f574e5f544f4b454e000000000000000000000000000000000000006044820152606401610354565b6040805133815273ffffffffffffffffffffffffffffffffffffffff851660208201529081018390527ff78c6ab7f5da48a42db1a0e1eafa1db1c639eaa3cddbce5e1a850e8335762be69060600160405180910390a16009546106999073ffffffffffffffffffffffffffffffffffffffff858116911684611d6e565b505050565b600081600881106106ae57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b6000806106d9610269565b9050806106e857600091505090565b600181141561079b576007546005546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107869190613afa565b1061079357600191505090565b600091505090565b60028114156107ac57600291505090565b60038114156107bd57600391505090565b60048114806107cc5750600581145b156107ec57600354600254106107e457600491505090565b600591505090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f554e4b4e4f574e5f504f4f4c5f504841534500000000000000000000000000006044820152606401610354565b5090565b60018061085d610269565b146108c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b600043600c546108d49190613a7a565b90506108e1600243611ac5565b6108f660036108f1836001613a7a565b611ac5565b604080516002808252606082018352600092602083019080368337019050509050670de0b6b3a76400008160008151811061093357610933613a92565b602002602001018181525050600d548160018151811061095557610955613a92565b602090810291909101015260065473ffffffffffffffffffffffffffffffffffffffff168063c3391d27610995670de0b6b3a7640000633b9aca00613b13565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815260048101919091526000602482018190526044820152606401600060405180830381600087803b1580156109f457600080fd5b505af1158015610a08573d6000803e3d6000fd5b5050505060008173ffffffffffffffffffffffffffffffffffffffff1663b64ef17b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7d9190613b50565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529081018690529091507f11c4af897467273e02b712af422f0e33863936f79975995dce76dd33408b5c2d9060600160405180910390a1600480546040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811693820193909352911690633833be6290602401600060405180830381600087803b158015610b4557600080fd5b505af1158015610b59573d6000803e3d6000fd5b50506040517f246bc19b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516925063246bc19b9150610bb390869043908990600401613ba8565b600060405180830381600087803b158015610bcd57600080fd5b505af1158015610be1573d6000803e3d6000fd5b505050505050505050565b600380610bf7610269565b14610c5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b610c69600443611ac5565b610c71611ef0565b600654604080517fb64ef17b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163b64ef17b9160048083019260209291908290030181865afa158015610ce1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d059190613b50565b600480546040517f70a082310000000000000000000000000000000000000000000000000000000081523092810192909252919250610dc391839173ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015610d7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da39190613afa565b60045473ffffffffffffffffffffffffffffffffffffffff1691906123a1565b600480546040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811693820193909352911690638b24259b90602401600060405180830381600087803b158015610e3257600080fd5b505af1158015610e46573d6000803e3d6000fd5b50506005546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526000935073ffffffffffffffffffffffffffffffffffffffff90911691506370a0823190602401602060405180830381865afa158015610ebb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610edf9190613afa565b6002819055600354600754919250821080159190610f0857600a54610f059082906123f7565b90505b610f128184612433565b905060008080610f22868561244b565b90508415610f4a57600b54610f379082612433565b9250610f43818461244b565b9150610f4e565b8092505b6005546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301527fc403d71c903123c0350567a0b3670743d0f9daae64a88f5d66e0fd22883727859233928a92899288928a92909116906370a0823190602401602060405180830381865afa158015610fea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100e9190613afa565b6040805173ffffffffffffffffffffffffffffffffffffffff90971687526020870195909552938501929092526060840152608083015260a082015260c00160405180910390a18315611085576001546005546110859173ffffffffffffffffffffffffffffffffffffffff918216911686611d6e565b81156110b5576009546005546110b59173ffffffffffffffffffffffffffffffffffffffff918216911684611d6e565b82156110e5576004546005546110e59173ffffffffffffffffffffffffffffffffffffffff918216911685611d6e565b5050505050505050565b60008082116110ff576000611121565b8261110b600184613bcd565b6008811061111b5761111b613a92565b60200201515b63ffffffff169392505050565b611136612461565b6000611140610269565b146111a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610354565b6111b2600143611ac5565b60a083015173ffffffffffffffffffffffffffffffffffffffff16611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f43524541544f525f3000000000000000000000000000000000000000000000006044820152606401610354565b825173ffffffffffffffffffffffffffffffffffffffff166112b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f524553455256455f3000000000000000000000000000000000000000000000006044820152606401610354565b6305f5e10083602001511015611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f524553455256455f494e49545f4d494e494d554d0000000000000000000000006044820152606401610354565b826060015183604001511015611395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4d494e5f494e495449414c5f56414c554154494f4e00000000000000000000006044820152606401610354565b60a08301516009805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff000000000000000000000000000000000000000091821617909155845160058054919093169116179055602083015160075560c0830151611460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f300000000000000000000000000000000000000000006044820152606401610354565b60c083015160085560e0830151600a55610100830151600b556020830151606084015161148d9190612510565b600d5560c083015161010084015160e0850151602086015160009392916114b391613a7a565b6114bd9190613a7a565b6114c79190613a7a565b90508084606001511015611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4d494e5f46494e414c5f56414c554154494f4e000000000000000000000000006044820152606401610354565b600381905560808401517f000000000000000000000000000000000000000000000000000000000000000010156115ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d41585f52414953455f4455524154494f4e00000000000000000000000000006044820152606401610354565b6000846080015111611638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f305f54524144494e475f4455524154494f4e00000000000000000000000000006044820152606401610354565b6080840151600c55600061164c858561263c565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790559050600061169a868561285a565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116919091179091556040805160a08101825289518316815291851660208084019190915289015182820152875160609081015190830152880151608082015290915060009061172590612a29565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83161790556040519091507fb8990d778a15ad364ca01d5bc6e6751857db983fa1a2749b9666b7e0a10b1e18906117a29033908a908590879089908b90613be4565b60405180910390a150505050505050565b6000806117be610269565b905060048114806117cf5750600581145b1561079357600354600254106117e757600291505090565b600391505090565b6004806117fa610269565b1015611862576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d494e5f504841534500000000000000000000000000000000000000000000006044820152606401610354565b600554600480546009546001546040517fdd62ed3e000000000000000000000000000000000000000000000000000000008152309481019490945273ffffffffffffffffffffffffffffffffffffffff918216602485018190529482169492821693911690600090859063dd62ed3e90604401602060405180830381865afa1580156118f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119169190613afa565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff848116602483015291925060009187169063dd62ed3e90604401602060405180830381865afa15801561198e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b29190613afa565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff878116602483015291925060009188169063dd62ed3e90604401602060405180830381865afa158015611a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4e9190613afa565b90508215611a7757611a7773ffffffffffffffffffffffffffffffffffffffff881686856123a1565b8115611a9e57611a9e73ffffffffffffffffffffffffffffffffffffffff881685846123a1565b80156110e5576110e573ffffffffffffffffffffffffffffffffffffffff881687836123a1565b80431115611b2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f5041535400000000000000000000000000000000006044820152606401610354565b63ffffffff8110611b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a454400000000000000006044820152606401610354565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611bc8610269565b14611c2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f5048415345000000000000000000000000000000000000000000006044820152606401610354565b60008160088110611c4257611c42613a92565b60088104919091015460079091166004026101000a900463ffffffff90811614611cc8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f5345540000000000000000000000000000000000006044820152606401610354565b8160008260088110611cdc57611cdc613a92565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611d619392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015611de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e099190613afa565b611e139190613a7a565b60405173ffffffffffffffffffffffffffffffffffffffff8516602482015260448101829052909150611eea9085907f095ea7b300000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613083565b50505050565b600654604080517fb64ef17b000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163b64ef17b9160048083019260209291908290030181865afa158015611f60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f849190613b50565b6005546040517f8c28cbe800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152919250821690638c28cbe890602401600060405180830381600087803b158015611ff357600080fd5b505af1158015612007573d6000803e3d6000fd5b5050600480546040517f8c28cbe800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169281019290925284169250638c28cbe89150602401600060405180830381600087803b15801561207a57600080fd5b505af115801561208e573d6000803e3d6000fd5b505050506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612101573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121259190613afa565b6005546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201529192506000919084169063f8b2cb4f90602401602060405180830381865afa15801561219b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bf9190613afa565b6121cc620f42418461318f565b6121d69190613d22565b600480546040517ff8b2cb4f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182169281019290925291925060009185169063f8b2cb4f90602401602060405180830381865afa15801561224e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122729190613afa565b61227f620f42418561318f565b6122899190613d22565b905060006122ac826122a68581670de0b6b3a76400006064613b13565b906131be565b6122b7906001613a7a565b6006546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015291925073ffffffffffffffffffffffffffffffffffffffff169063b02f0b73906123669083906370a0823190602401602060405180830381865afa158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190613afa565b612360888661244b565b90612433565b6040805160028082526060820183529091602083019080368337019050506040518363ffffffff1660e01b8152600401610bb3929190613d36565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106999084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401611e68565b6000828201838110612409578061242b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183106124425781612444565b825b9392505050565b600081831161245b576000612444565b50900390565b600054600163ffffffff9091161061247b5761247b613d4f565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526124cc60008260086134b2565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b60008083612526670de0b6b3a764000085613b13565b6125309190613d22565b9050670de0b6b3a76400008110156125a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e5f5745494748545f56414c554154494f4e0000000000000000000000006044820152606401610354565b6125b681670de0b6b3a7640000613a7a565b670de0b6b3a76400006125ca816032613b13565b6125d49190613bcd565b1015612444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d41585f5745494748545f56414c554154494f4e0000000000000000000000006044820152606401610354565b6000826020015182600001516060015110156126b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4d494e5f544f4b454e5f535550504c59000000000000000000000000000000006044820152606401610354565b815130604091820152805160a081018252845173ffffffffffffffffffffffffffffffffffffffff908116825284516020808401919091528086015182168385015283860151606084015260006080840181905293517f000000000000000000000000000000000000000000000000000000000000000090921692632ea72a499261273f9201613e59565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161276a9190613ec5565b6020604051808303816000875af1158015612789573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127ad9190613b50565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015291925090821690633833be6290602401600060405180830381600087803b15801561283a57600080fd5b505af115801561284e573d6000803e3d6000fd5b50929695505050505050565b805160009073ffffffffffffffffffffffffffffffffffffffff81166124445782604001516060015184602001516128929190613ed8565b156128f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f534545445f50524943455f4d554c5449504c49455200000000000000000000006044820152606401610354565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632ea72a496040518060a00160405280876000015173ffffffffffffffffffffffffffffffffffffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff16815260200186604001516060015188602001516129949190613d22565b81526020018660200151815260200186604001518152506040516020016129bb9190613eec565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016129e69190613ec5565b6020604051808303816000875af1158015612a05573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061242b9190613b50565b60408051600280825260608201835260009283929190602083019080368337019050509050826000015181600081518110612a6657612a66613a92565b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050826020015181600181518110612ab857612ab8613a92565b73ffffffffffffffffffffffffffffffffffffffff929092166020928302919091018201526040805160028082526060820183526000939192909183019080368337019050509050836040015181600081518110612b1857612b18613a92565b602002602001018181525050836060015181600181518110612b3c57612b3c613a92565b602090810291909101015260408051600280825260608201909252600091816020016020820280368337019050509050670de0b6b3a764000081600081518110612b8857612b88613a92565b602002602001018181525050612ba685604001518660800151612510565b81600181518110612bb957612bb9613a92565b60200260200101818152505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634420002b7f00000000000000000000000000000000000000000000000000000000000000006040518060c001604052806040518060400160405280600481526020017f523230500000000000000000000000000000000000000000000000000000000081525081526020016040518060400160405280601381526020017f52656465656d61626c654552433230506f6f6c000000000000000000000000008152508152602001888152602001878152602001868152602001620f4240670de0b6b3a7640000612cce9190613d22565b90526040805160c081018252600080825260208201819052600182840181905260608301829052608083015260a082015290517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152612d3993929190600401613f49565b6020604051808303816000875af1158015612d58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7c9190613b50565b9050856020015173ffffffffffffffffffffffffffffffffffffffff16633833be628273ffffffffffffffffffffffffffffffffffffffff16630a1659406040518163ffffffff1660e01b8152600401602060405180830381865afa158015612de9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0d9190613b50565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b16815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401600060405180830381600087803b158015612e7357600080fd5b505af1158015612e87573d6000803e3d6000fd5b50505060208701516040517f3833be6200000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff9091169150633833be6290602401600060405180830381600087803b158015612ef857600080fd5b505af1158015612f0c573d6000803e3d6000fd5b50505060208701516040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529091169150633833be6290602401600060405180830381600087803b158015612f7f57600080fd5b505af1158015612f93573d6000803e3d6000fd5b50505060208701516040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152909116915063e7ae91fe90602401600060405180830381600087803b15801561300657600080fd5b505af115801561301a573d6000803e3d6000fd5b50505060408701518751613047925073ffffffffffffffffffffffffffffffffffffffff169083906131ce565b61307a818760600151886020015173ffffffffffffffffffffffffffffffffffffffff166131ce9092919063ffffffff16565b95945050505050565b60006130e5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166133509092919063ffffffff16565b805190915015610699578080602001905181019061310391906140a4565b610699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610354565b60008261319e575060006104d6565b828202828482816131b1576131b1613cf3565b041415612409578061242b565b6000818310156124425781612444565b80158061326e57506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015613248573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061326c9190613afa565b155b6132fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401610354565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106999084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401611e68565b606061242b84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6133d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610354565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161340291906140c6565b60006040518083038185875af1925050503d806000811461343f576040519150601f19603f3d011682016040523d82523d6000602084013e613444565b606091505b509150915061345482828661345f565b979650505050505050565b6060831561346e575081612444565b82511561347e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103549190613ec5565b60018301918390821561353e5791602002820160005b8382111561350c57835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026134c8565b801561353c5782816101000a81549063ffffffff021916905560040160208160030104928301926001030261350c565b505b5061084e9291505b8082111561084e5760008155600101613546565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156135ac576135ac61355a565b60405290565b604051610120810167ffffffffffffffff811182821017156135ac576135ac61355a565b60008061012083850312156135ea57600080fd5b83601f8401126135f957600080fd5b60405161010080820182811067ffffffffffffffff8211171561361e5761361e61355a565b6040528401818682111561363157600080fd5b855b8281101561365e57803563ffffffff811681146136505760008081fd5b825260209182019101613633565b509196903595509350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461368e57600080fd5b50565b803561369c8161366c565b919050565b600080604083850312156136b457600080fd5b82356136bf8161366c565b946020939093013593505050565b6000602082840312156136df57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160068310613729576137296136e6565b91905290565b600082601f83011261374057600080fd5b813567ffffffffffffffff8082111561375b5761375b61355a565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156137a1576137a161355a565b816040528381528660208588010111156137ba57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000608082840312156137ec57600080fd5b6040516080810167ffffffffffffffff82821081831117156138105761381061355a565b81604052829350843591508082111561382857600080fd5b6138348683870161372f565b8352602085013591508082111561384a57600080fd5b506138578582860161372f565b602083015250604083013561386b8161366c565b6040820152606092830135920191909152919050565b60006060828403121561389357600080fd5b61389b613589565b9050813567ffffffffffffffff8111156138b457600080fd5b6138c0848285016137da565b82525060208201356138d18161366c565b806020830152506040820135604082015292915050565b6000606082840312156138fa57600080fd5b613902613589565b9050813561390f8161366c565b815260208281013590820152604082013567ffffffffffffffff81111561393557600080fd5b613941848285016137da565b60408301525092915050565b600080600083850361016081121561396457600080fd5b6101208082121561397457600080fd5b61397c6135b2565b915061398786613691565b8252602086013560208301526040860135604083015260608601356060830152608086013560808301526139bd60a08701613691565b60a083015260c0868101359083015260e08087013590830152610100808701359083015290935084013567ffffffffffffffff808211156139fd57600080fd5b613a0987838801613881565b9350610140860135915080821115613a2057600080fd5b50613a2d868287016138e8565b9150509250925092565b6020810160048310613729576137296136e6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613a8d57613a8d613a4b565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613af357613af3613a4b565b5060010190565b600060208284031215613b0c57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b4b57613b4b613a4b565b500290565b600060208284031215613b6257600080fd5b81516124448161366c565b600081518084526020808501945080840160005b83811015613b9d57815187529582019590820190600101613b81565b509495945050505050565b606081526000613bbb6060830186613b6d565b60208301949094525060400152919050565b600082821015613bdf57613bdf613a4b565b500390565b60006101c08201905073ffffffffffffffffffffffffffffffffffffffff808916835280885116602084015250602087015160408301526040870151606083015260608701516080830152608087015160a083015260a0870151613c6060c084018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c087015160e083015260e08701516101008181850152808901516101208501525050613ca761014083018773ffffffffffffffffffffffffffffffffffffffff169052565b73ffffffffffffffffffffffffffffffffffffffff851661016083015273ffffffffffffffffffffffffffffffffffffffff8416610180830152826101a0830152979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082613d3157613d31613cf3565b500490565b82815260406020820152600061242b6040830184613b6d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60005b83811015613d99578181015183820152602001613d81565b83811115611eea5750506000910152565b60008151808452613dc2816020860160208601613d7e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000815160808452613e096080850182613daa565b905060208301518482036020860152613e228282613daa565b91505073ffffffffffffffffffffffffffffffffffffffff6040840151166040850152606083015160608501528091505092915050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a06040850152613e9660c0850182613df4565b9050816040860151166060850152606085015160808501528160808601511660a0850152809250505092915050565b6020815260006124446020830184613daa565b600082613ee757613ee7613cf3565b500690565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152806020850151166040840152506040830151606083015260608301516080830152608083015160a08084015261242b60c0840182613df4565b600061010073ffffffffffffffffffffffffffffffffffffffff808716845260208281860152865160c084870152613f856101c0870182613daa565b935050808701517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff008087860301610120880152613fc28583613daa565b60408a015188820383016101408a01528051808352908501965060009350908401905b8084101561400757865186168252958401956001939093019290840190613fe5565b5060608a0151955081888203016101608901526140248187613b6d565b9550506080890151935080878603016101808801525050506140468282613b6d565b60a08701516101a0860152925061242b915050604083018480511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a0810151151560a08301525050565b6000602082840312156140b657600080fd5b8151801515811461244457600080fd5b600082516140d8818460208701613d7e565b919091019291505056fea264697066735822122087d382e59074e00253e58828f9e01b4cb23fd830724020244fa2fe446dec250d64736f6c634300080a0033608060405234801561001057600080fd5b5061163f806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632dbfa73514610046578063db2b292c1461006c578063dc9a7ffb1461007f575b600080fd5b610059610054366004611397565b6100a7565b6040519081526020015b60405180910390f35b61005961007a3660046113d0565b61027c565b61009261008d3660046113ed565b610403565b60408051928352602083019190915201610063565b6000806100b383610832565b905060028160028111156100c9576100c9611446565b14610135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff80841660009081526004602090815260408083209388168352929052205480156102745773ffffffffffffffffffffffffffffffffffffffff8416600090815260056020526040812080548392906101a39084906114a4565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260046020908152604080832093891683529290529081208190556101e8856109d6565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015288811682840152831660608201526080810185905290519192507f4f55a769590f1c0e20a638dce7a4e135e95f8a5ecb2a05e7eef582cce5b5031c919081900360a00190a161027273ffffffffffffffffffffffffffffffffffffffff82168784610b51565b505b949350505050565b60008061028883610832565b9050600181600281111561029e5761029e611446565b14610305576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602052604090205480156103fc5773ffffffffffffffffffffffffffffffffffffffff84166000908152600560205260408120819055610362856109d6565b9050600061036f86610c2a565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015285811682840152831660608201526080810186905290519192507f2faadd4ce8b8be8c10cd95882652e780929619ab27641da75536750ef256ca5d919081900360a00190a16103f973ffffffffffffffffffffffffffffffffffffffff83168285610b51565b50505b9392505050565b60008060008611610470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5a45524f5f464545000000000000000000000000000000000000000000000000604482015260640161012c565b600061047b88610832565b600281111561048c5761048c611446565b146104f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f454e444544000000000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff8088166000908152600460209081526040808320938c16835292905290812080548892906105379084906114bb565b909155505073ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080548892906105719084906114bb565b9091555060009050610582886109d6565b9050600061058f89610c2a565b9050600061059c8a610da4565b905060008173ffffffffffffffffffffffffffffffffffffffff1663b64ef17b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060f91906114d3565b90507f6a7dcbbe66188485e365a408a20221fd766c1bb6989b1f5d6f817c258bc67a29338d8d87878f60405161068d9695949392919073ffffffffffffffffffffffffffffffffffffffff9687168152948616602086015292851660408501529084166060840152909216608082015260a081019190915260c00190565b60405180910390a18173ffffffffffffffffffffffffffffffffffffffff1663e211b8756040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156106dd57600080fd5b505af11580156106f1573d6000803e3d6000fd5b5050505061072533308b8d61070691906114bb565b73ffffffffffffffffffffffffffffffffffffffff8816929190610f1e565b61074673ffffffffffffffffffffffffffffffffffffffff8516828b610f82565b6040517f8201aa3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018b90528481166044830152606482018a9052608482018990526000918291841690638201aa3f9060a40160408051808303816000875af11580156107d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f991906114f0565b909250905061081f73ffffffffffffffffffffffffffffffffffffffff86163384610b51565b909d909c509a5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff168181600281111561086e5761086e611446565b111561087a5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108eb9190611514565b9050600281600381111561090157610901611446565b141561095c5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b600381600381111561097057610970611446565b14156109cc5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7691906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f524553455256450000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c259084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611104565b505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ca6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cca91906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610d49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526003602052604081205490911680610b4b5760008373ffffffffffffffffffffffffffffffffffffffff16633fd8108e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4491906114d3565b905073ffffffffffffffffffffffffffffffffffffffff8116610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f305f435250000000000000000000000000000000000000000000000000000000604482015260640161012c565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260036020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610f7c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610ba3565b50505050565b80158061102257506040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015284169063dd62ed3e90604401602060405180830381865afa158015610ffc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110209190611535565b155b6110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000606482015260840161012c565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c259084907f095ea7b30000000000000000000000000000000000000000000000000000000090606401610ba3565b6000611166826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166112109092919063ffffffff16565b805190915015610c255780806020019051810190611184919061154e565b610c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161012c565b606061027484846000858573ffffffffffffffffffffffffffffffffffffffff85163b611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161012c565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516112c2919061159c565b60006040518083038185875af1925050503d80600081146112ff576040519150601f19603f3d011682016040523d82523d6000602084013e611304565b606091505b509150915061131482828661131f565b979650505050505050565b6060831561132e5750816103fc565b82511561133e5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012c91906115b8565b73ffffffffffffffffffffffffffffffffffffffff8116811461139457600080fd5b50565b600080604083850312156113aa57600080fd5b82356113b581611372565b915060208301356113c581611372565b809150509250929050565b6000602082840312156113e257600080fd5b81356103fc81611372565b60008060008060008060c0878903121561140657600080fd5b863561141181611372565b9550602087013561142181611372565b95989597505050506040840135936060810135936080820135935060a0909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156114b6576114b6611475565b500390565b600082198211156114ce576114ce611475565b500190565b6000602082840312156114e557600080fd5b81516103fc81611372565b6000806040838503121561150357600080fd5b505080516020909101519092909150565b60006020828403121561152657600080fd5b8151600481106103fc57600080fd5b60006020828403121561154757600080fd5b5051919050565b60006020828403121561156057600080fd5b815180151581146103fc57600080fd5b60005b8381101561158b578181015183820152602001611573565b83811115610f7c5750506000910152565b600082516115ae818460208701611570565b9190910192915050565b60208152600082518060208401526115d7816040850160208701611570565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122067cdf1f51edf6901bcfd7e3445b26a4b58fdc5c1160c1dea3bd8228e440692d664736f6c634300080a0033"; - -type TrustConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: TrustConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class Trust__factory extends ContractFactory { - constructor(...args: TrustConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - config_: TrustConstructionConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(config_, overrides || {}) as Promise; - } - getDeployTransaction( - config_: TrustConstructionConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(config_, overrides || {}); - } - attach(address: string): Trust { - return super.attach(address) as Trust; - } - connect(signer: Signer): Trust__factory { - return super.connect(signer) as Trust__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): TrustInterface { - return new utils.Interface(_abi) as TrustInterface; - } - static connect(address: string, signerOrProvider: Signer | Provider): Trust { - return new Contract(address, _abi, signerOrProvider) as Trust; - } -} diff --git a/src/typechain/factories/VMStateBuilder__factory.ts b/src/typechain/factories/VMStateBuilder__factory.ts new file mode 100644 index 0000000..32cb4a0 --- /dev/null +++ b/src/typechain/factories/VMStateBuilder__factory.ts @@ -0,0 +1,287 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + VMStateBuilder, + VMStateBuilderInterface, +} from "../VMStateBuilder"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "vm_", + type: "address", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "config_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "opcodesLength", + type: "uint256", + }, + ], + internalType: "struct Bounds[]", + name: "boundss_", + type: "tuple[]", + }, + ], + name: "buildState", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "opcodesLength", + type: "uint256", + }, + ], + internalType: "struct Bounds", + name: "bounds_", + type: "tuple", + }, + ], + name: "ensureIntegrity", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes", + name: "packedFnPtrs_", + type: "bytes", + }, + { + internalType: "bytes", + name: "source_", + type: "bytes", + }, + ], + name: "ptrSource", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPopsFnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushesFnPtrs", + outputs: [ + { + internalType: "bytes", + name: "", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b506200002a60605b6200005460201b620009141760201c565b6001600160a01b031660805262000042606062000019565b6001600160a01b031660a05262000197565b6000806200008e836040516020016200006e919062000135565b604051602081830303815290604052620000c960201b6200099f1760201c565b90508051602082016000f091506001600160a01b038216620000c35760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620000e192919062000151565b6040516020818303038152906040529050919050565b6000815160005b818110156200011a5760208185018101518683015201620000fe565b818111156200012a576000828601525b509290920192915050565b6000815260006200014a6001830184620000f7565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200018f600e830184620000f7565b949350505050565b60805160a051611720620001bd60003960006105600152600061053301526117206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009c5780639b0bc349146100b1578063a46c2a311461009557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611253565b6100c4565b60405161008c9190611371565b60405180910390f35b606061007f565b6100af6100aa3660046113c2565b6104bf565b005b61007f6100bf366004611412565b6107c3565b606060006100d1856109cb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561011f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101439190611476565b60200151905060008060005b86518110156102e7578387828151811061016b5761016b6114c5565b602002602001015160a0018181525050600285518161018c5761018c6114f4565b0487828151811061019f5761019f6114c5565b602002602001015160c00181815250506101d2888883815181106101c5576101c56114c5565b60200260200101516104bf565b6102028782815181106101e7576101e76114c5565b60200260200101516080015184610b0f90919063ffffffff16565b9250610234878281518110610219576102196114c5565b60200260200101516060015183610b0f90919063ffffffff16565b9150868181518110610248576102486114c5565b602002602001015160200151878281518110610266576102666114c5565b60200260200101516040015110156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161014f565b506000828860200151510167ffffffffffffffff81111561030a5761030a610f22565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b50905060005b886020015151811015610389578860200151818151811061035c5761035c6114c5565b6020026020010151828281518110610376576103766114c5565b6020908102919091010152600101610339565b5087515160009067ffffffffffffffff8111156103a8576103a8610f22565b6040519080825280602002602001820160405280156103db57816020015b60608152602001906001900390816103c65790505b50905060005b89515181101561043757610412878b600001518381518110610405576104056114c5565b60200260200101516107c3565b828281518110610424576104246114c5565b60209081029190910101526001016103e1565b506104af6040518060a00160405280600081526020018567ffffffffffffffff81111561046657610466610f22565b60405190808252806020026020018201604052801561048f578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250610b26565b96505050505050505b9392505050565b8051825151811061052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102d6565b60006105577f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060006105847f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060008080600080602088026020018a5101519050805193505b83851015610748576002850194508481015180601e1a935080601f1a925050600683101561066357826105f35789602001515189608001510182106105e357600080fd5b604089018051600101905261064a565b600183141561060c57886040015182106105e357600080fd5b600283141561062557604089018051600101905261064a565b600383141561064a578860a00151821061063e57600080fd5b60408901805160010190525b600483141561065e5761065e8a8a84610c91565b61072b565b8860c0015183106106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102d6565b6020838102888101820151908801909101516106ef8463ffffffff8416565b60408c018051919091039081905260608c015161070b91610b0f565b60608c015261071d8463ffffffff8316565b60408c018051909101905250505b604089015160608a015161073e91610b0f565b60608a015261059f565b606089015160ff10156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102d6565b50505050505050505050565b80516060906002810615610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102d6565b60006002600383020467ffffffffffffffff81111561085457610854610f22565b6040519080825280601f01601f19166020018201604052801561087e576020820181803683370190505b509050600660018381018160005b828210156109065781890151601f1a60028306156108e857858110156108ba57600182019181908801602101535b8581106108e857600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b600283066108f95780826020018801535b506001918201910161088c565b509398975050505050505050565b60008061093f8360405160200161092b9190611523565b60405160208183030381529060405261099f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610999576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109b5929190611549565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926109ff9116610c63565b9050805160001415610b0957610aac610aa78473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610aa291908101906115e0565b610d30565b610914565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104b8836109cb565b92915050565b600081831015610b1f57816104b8565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610b729190611657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bae929160200161168d565b604051602081830303815290604052905060005b856040015151811015610c5a578186604001518281518110610be657610be66114c5565b60200260200101515160001b87604001518381518110610c0857610c086114c5565b6020026020010151604051602001610c22939291906116b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610bc2565b50949350505050565b6060610b098260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610cdb9190610b0f565b60608401526080830151610cef9082610b0f565b60808401528251600783168085526001600385811c161b919060005b83811015610d2557610d1d88886104bf565b600101610d0b565b505090935250505050565b60606020825181610d4357610d436114f4565b0615610dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102d6565b60006010835181610dbe57610dbe6114f4565b0467ffffffffffffffff811115610dd757610dd7610f22565b6040519080825280601f01601f191660200182016040528015610e01576020820181803683370190505b509050600060025b8451821015610e31578083018051602084880181015190911790915290910190600201610e09565b50909392505050565b6060833b80610e595750506040805160208101909152600081526104b8565b80841115610e775750506040805160208101909152600081526104b8565b83831015610ec2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102d6565b8383038482036000828210610ed75782610ed9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f7457610f74610f22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fc157610fc1610f22565b604052919050565b600067ffffffffffffffff821115610fe357610fe3610f22565b5060051b60200190565b600067ffffffffffffffff82111561100757611007610f22565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261104457600080fd5b813561105761105282610fed565b610f7a565b81815284602083860101111561106c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261109a57600080fd5b813560206110aa61105283610fc9565b82815260059290921b840181019181810190868411156110c957600080fd5b8286015b848110156110e457803583529183019183016110cd565b509695505050505050565b60006040828403121561110157600080fd5b611109610f51565b9050813567ffffffffffffffff8082111561112357600080fd5b818401915084601f83011261113757600080fd5b8135602061114761105283610fc9565b82815260059290921b8401810191818101908884111561116657600080fd5b8286015b8481101561119e578035868111156111825760008081fd5b6111908b86838b0101611033565b84525091830191830161116a565b50865250858101359350828411156111b557600080fd5b6111c187858801611089565b818601525050505092915050565b600060e082840312156111e157600080fd5b60405160e0810181811067ffffffffffffffff8211171561120457611204610f22565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561126857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461128c57600080fd5b925060208481013567ffffffffffffffff808211156112aa57600080fd5b6112b6888389016110ef565b945060408701359150808211156112cc57600080fd5b508501601f810187136112de57600080fd5b80356112ec61105282610fc9565b81815260e0918202830184019184820191908a84111561130b57600080fd5b938501935b83851015611331576113228b866111cf565b83529384019391850191611310565b5080955050505050509250925092565b60005b8381101561135c578181015183820152602001611344565b8381111561136b576000848401525b50505050565b6020815260008251806020840152611390816040850160208701611341565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008061010083850312156113d657600080fd5b823567ffffffffffffffff8111156113ed57600080fd5b6113f9858286016110ef565b92505061140984602085016111cf565b90509250929050565b6000806040838503121561142557600080fd5b823567ffffffffffffffff8082111561143d57600080fd5b61144986838701611033565b9350602085013591508082111561145f57600080fd5b5061146c85828601611033565b9150509250929050565b60006040828403121561148857600080fd5b6040516040810181811067ffffffffffffffff821117156114ab576114ab610f22565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081526000825161153c816001850160208701611341565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516115d281600e850160208701611341565b91909101600e019392505050565b6000602082840312156115f257600080fd5b815167ffffffffffffffff81111561160957600080fd5b8201601f8101841361161a57600080fd5b805161162861105282610fed565b81815285602083850101111561163d57600080fd5b61164e826020830160208601611341565b95945050505050565b815160009082906020808601845b8381101561168157815185529382019390820190600101611665565b50929695505050505050565b828152600082516116a5816020850160208701611341565b919091016020019392505050565b600084516116c5818460208901611341565b820184815283516116dd816020808501908801611341565b016020019594505050505056fea2646970667358221220d41007a8bb17e8c78a6315d8c45fe4caedf6e58ea70311c2a917c9c63ae38a0764736f6c634300080a0033"; + +type VMStateBuilderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: VMStateBuilderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class VMStateBuilder__factory extends ContractFactory { + constructor(...args: VMStateBuilderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): VMStateBuilder { + return super.attach(address) as VMStateBuilder; + } + connect(signer: Signer): VMStateBuilder__factory { + return super.connect(signer) as VMStateBuilder__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): VMStateBuilderInterface { + return new utils.Interface(_abi) as VMStateBuilderInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): VMStateBuilder { + return new Contract(address, _abi, signerOrProvider) as VMStateBuilder; + } +} diff --git a/src/typechain/factories/VMState__factory.ts b/src/typechain/factories/VMState__factory.ts deleted file mode 100644 index 13df952..0000000 --- a/src/typechain/factories/VMState__factory.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { VMState, VMStateInterface } from "../VMState"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - { - components: [ - { - internalType: "uint256", - name: "stackIndex", - type: "uint256", - }, - { - internalType: "uint256[]", - name: "stack", - type: "uint256[]", - }, - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - { - internalType: "uint256[]", - name: "arguments", - type: "uint256[]", - }, - ], - indexed: false, - internalType: "struct State", - name: "state", - type: "tuple", - }, - ], - name: "Snapshot", - type: "event", - }, -]; - -const _bytecode = - "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122008516fe95ac84639cd17f72db472eead249704198d4befe0d1301d3a06585aac64736f6c634300080a0033"; - -type VMStateConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: VMStateConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class VMState__factory extends ContractFactory { - constructor(...args: VMStateConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): VMState { - return super.attach(address) as VMState; - } - connect(signer: Signer): VMState__factory { - return super.connect(signer) as VMState__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): VMStateInterface { - return new utils.Interface(_abi) as VMStateInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): VMState { - return new Contract(address, _abi, signerOrProvider) as VMState; - } -} diff --git a/src/typechain/factories/ValueTierTest__factory.ts b/src/typechain/factories/ValueTierTest__factory.ts index 1818b2c..843bdb0 100644 --- a/src/typechain/factories/ValueTierTest__factory.ts +++ b/src/typechain/factories/ValueTierTest__factory.ts @@ -123,7 +123,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620009eb380380620009eb833981016040819052620000349162000248565b6200003f8162000046565b50620003da565b6000546001600160a01b031615620000625762000062620002da565b6000805b6008811015620001035781838260088110620000865762000086620002f0565b60200201511015620000de5760405162461bcd60e51b815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c5545530000000000000000604482015260640160405180910390fd5b828160088110620000f357620000f3620002f0565b6020020151915060010162000066565b505060006200013e826040516020016200011e919062000306565b604051602081830303815290604052620001a560201b620001021760201c565b604080513381526001600160a01b03831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080546001600160a01b0319166001600160a01b039290921691909117905550565b600080620001df83604051602001620001bf919062000378565b6040516020818303038152906040526200021a60201b6200018d1760201c565b90508051602082016000f091506001600160a01b038216620002145760405163046a55db60e11b815260040160405180910390fd5b50919050565b60608151826040516020016200023292919062000394565b6040516020818303038152906040529050919050565b60006101008083850312156200025d57600080fd5b83601f8401126200026d57600080fd5b6040518181016001600160401b03811182821017156200029d57634e487b7160e01b600052604160045260246000fd5b604052908301908085831115620002b357600080fd5b845b83811015620002cf578051825260209182019101620002b5565b509095945050505050565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6101008101818360005b60088110156200033157815183526020928301929091019060010162000310565b50505092915050565b6000815160005b818110156200035d576020818501810151868301520162000341565b818111156200036d576000828601525b509290920192915050565b6000815260006200038d60018301846200033a565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620003d2600e8301846200033a565b949350505050565b61060180620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634bc1010e1461004657806370230b391461006c578063983ca63d14610081575b600080fd5b610059610054366004610372565b610094565b6040519081526020015b60405180910390f35b6100746100ad565b604051610063919061038b565b61005961008f366004610372565b6100ef565b60006100a76100a16100ad565b836101b9565b92915050565b6100b5610353565b6000546100d79073ffffffffffffffffffffffffffffffffffffffff16610207565b8060200190518101906100ea91906103bd565b905090565b60006100a76100fc6100ad565b83610235565b60008061012d83604051602001610119919061049e565b60405160208183030381529060405261018d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610187576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101a39291906104b1565b6040516020818303038152906040529050919050565b6000805b60088110156101fd578381600881106101d8576101d861053c565b60200201518310156101eb5790506100a7565b806101f58161056b565b9150506101bd565b5060089392505050565b60606100a78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610267565b6000808211610245576000610260565b82600183036008811061025a5761025a61053c565b60200201515b9392505050565b6060833b80610286575050604080516020810190915260008152610260565b808411156102a4575050604080516020810190915260008152610260565b838310156102f3576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b8383038482036000828210610308578261030a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561038457600080fd5b5035919050565b6101008101818360005b60088110156103b4578151835260209283019290910190600101610395565b50505092915050565b60006101008083850312156103d157600080fd5b83601f8401126103e057600080fd5b60405181810181811067ffffffffffffffff82111715610429577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561043e57600080fd5b845b83811015610458578051825260209182019101610440565b509095945050505050565b6000815160005b81811015610484576020818501810151868301520161046a565b81811115610493576000828601525b509290920192915050565b6000815260006102606001830184610463565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610534600e830184610463565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220401096430b2e2d1c55ffa45639e74e91e5aa9a1bd10a583444beb5c32cdec60664736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604051620009eb380380620009eb833981016040819052620000349162000248565b6200003f8162000046565b50620003da565b6000546001600160a01b031615620000625762000062620002da565b6000805b6008811015620001035781838260088110620000865762000086620002f0565b60200201511015620000de5760405162461bcd60e51b815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c5545530000000000000000604482015260640160405180910390fd5b828160088110620000f357620000f3620002f0565b6020020151915060010162000066565b505060006200013e826040516020016200011e919062000306565b604051602081830303815290604052620001a560201b620001021760201c565b604080513381526001600160a01b03831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080546001600160a01b0319166001600160a01b039290921691909117905550565b600080620001df83604051602001620001bf919062000378565b6040516020818303038152906040526200021a60201b6200018d1760201c565b90508051602082016000f091506001600160a01b038216620002145760405163046a55db60e11b815260040160405180910390fd5b50919050565b60608151826040516020016200023292919062000394565b6040516020818303038152906040529050919050565b60006101008083850312156200025d57600080fd5b83601f8401126200026d57600080fd5b6040518181016001600160401b03811182821017156200029d57634e487b7160e01b600052604160045260246000fd5b604052908301908085831115620002b357600080fd5b845b83811015620002cf578051825260209182019101620002b5565b509095945050505050565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6101008101818360005b60088110156200033157815183526020928301929091019060010162000310565b50505092915050565b6000815160005b818110156200035d576020818501810151868301520162000341565b818111156200036d576000828601525b509290920192915050565b6000815260006200038d60018301846200033a565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620003d2600e8301846200033a565b949350505050565b61060180620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634bc1010e1461004657806370230b391461006c578063983ca63d14610081575b600080fd5b610059610054366004610372565b610094565b6040519081526020015b60405180910390f35b6100746100ad565b604051610063919061038b565b61005961008f366004610372565b6100ef565b60006100a76100a16100ad565b836101b9565b92915050565b6100b5610353565b6000546100d79073ffffffffffffffffffffffffffffffffffffffff16610207565b8060200190518101906100ea91906103bd565b905090565b60006100a76100fc6100ad565b83610235565b60008061012d83604051602001610119919061049e565b60405160208183030381529060405261018d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610187576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101a39291906104b1565b6040516020818303038152906040529050919050565b6000805b60088110156101fd578381600881106101d8576101d861053c565b60200201518310156101eb5790506100a7565b806101f58161056b565b9150506101bd565b5060089392505050565b60606100a78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610267565b6000808211610245576000610260565b82600183036008811061025a5761025a61053c565b60200201515b9392505050565b6060833b80610286575050604080516020810190915260008152610260565b808411156102a4575050604080516020810190915260008152610260565b838310156102f3576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b8383038482036000828210610308578261030a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561038457600080fd5b5035919050565b6101008101818360005b60088110156103b4578151835260209283019290910190600101610395565b50505092915050565b60006101008083850312156103d157600080fd5b83601f8401126103e057600080fd5b60405181810181811067ffffffffffffffff82111715610429577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561043e57600080fd5b845b83811015610458578051825260209182019101610440565b509095945050505050565b6000815160005b81811015610484576020818501810151868301520161046a565b81811115610493576000828601525b509290920192915050565b6000815260006102606001830184610463565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610534600e830184610463565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207de3044defd03197a2c742c1712aee97aa3ec1ed9572eebc9097d2687453a4e064736f6c634300080a0033"; type ValueTierTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ValueTier__factory.ts b/src/typechain/factories/ValueTier__factory.ts index 9d0d191..4959900 100644 --- a/src/typechain/factories/ValueTier__factory.ts +++ b/src/typechain/factories/ValueTier__factory.ts @@ -62,7 +62,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506102de806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806370230b3914610030575b600080fd5b61003861004e565b60405161004591906101d0565b60405180910390f35b6100566101b1565b6000546100789073ffffffffffffffffffffffffffffffffffffffff16610090565b80602001905181019061008b9190610202565b905090565b60606100be8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6100c4565b92915050565b6060833b806100e35750506040805160208101909152600081526101aa565b808411156101015750506040805160208101909152600081526101aa565b83831015610150576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b83830384820360008282106101655782610167565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156101f95781518352602092830192909101906001016101da565b50505092915050565b600061010080838503121561021657600080fd5b83601f84011261022557600080fd5b60405181810181811067ffffffffffffffff8211171561026e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561028357600080fd5b845b8381101561029d578051825260209182019101610285565b50909594505050505056fea264697066735822122070a9d42a2a57b583b521451cc8323c428bd06f1d3b00f04f1980b108e95fef1364736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506102de806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806370230b3914610030575b600080fd5b61003861004e565b60405161004591906101d0565b60405180910390f35b6100566101b1565b6000546100789073ffffffffffffffffffffffffffffffffffffffff16610090565b80602001905181019061008b9190610202565b905090565b60606100be8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6100c4565b92915050565b6060833b806100e35750506040805160208101909152600081526101aa565b808411156101015750506040805160208101909152600081526101aa565b83831015610150576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b83830384820360008282106101655782610167565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156101f95781518352602092830192909101906001016101da565b50505092915050565b600061010080838503121561021657600080fd5b83601f84011261022557600080fd5b60405181810181811067ffffffffffffffff8211171561026e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561028357600080fd5b845b8381101561029d578051825260209182019101610285565b50909594505050505056fea2646970667358221220bafe2e02bdf14ea765cfa0bb2f158be7ed6c6332184cd86f819bfd862835da5664736f6c634300080a0033"; type ValueTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyCallbackTest__factory.ts b/src/typechain/factories/VerifyCallbackTest__factory.ts index bf5c9b4..e49ef0a 100644 --- a/src/typechain/factories/VerifyCallbackTest__factory.ts +++ b/src/typechain/factories/VerifyCallbackTest__factory.ts @@ -208,7 +208,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207aa72632d97263a189896305c091f92e32a9895b277725c465cdc94fe515e59964736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212204ab9a8a4eef6dde5542801f04b8df65753c551ce0233d372d52d11c96a4ee87164736f6c634300080a0033"; type VerifyCallbackTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyFactory__factory.ts b/src/typechain/factories/VerifyFactory__factory.ts index da822e6..ad0b791 100644 --- a/src/typechain/factories/VerifyFactory__factory.ts +++ b/src/typechain/factories/VerifyFactory__factory.ts @@ -134,7 +134,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612c2e8061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220e94ce9356cfc4963192e058be8295ac1ad722cac14680534e7e7086e934abdfe64736f6c634300080a0033608060405234801561001057600080fd5b50612c0e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046122d6565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612318565b60009081526020819052604090206001015490565b61029c61029736600461235a565b6105a5565b005b6103246102ac366004612386565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c61036136600461235a565b6105d0565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b36600461245c565b610688565b61029c6103ae3660046124e0565b6106f6565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e8366004612622565b610825565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061042236600461235a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c610466366004612622565b610c52565b610231600081565b61029c6104813660046126e5565b610ef8565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb3660046126fd565b611324565b61029c6104ce3660046124e0565b61166e565b61029c6104e136600461235a565b611aad565b61029c6104f43660046124e0565b611ad3565b61029c6105073660046124e0565b611c02565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c18133611d31565b6105cb8383611e01565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106848282611ef1565b5050565b60006001836000015163ffffffff1610156106a55750600061059f565b81836040015163ffffffff16116106be5750600361059f565b81836020015163ffffffff16116106d75750600261059f565b825163ffffffff1682106106ed5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074f9043610688565b146107b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f5576107f561275d565b9050602002810190610807919061278c565b6040516108159291906127ca565b60405180910390a16001016107b9565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316108508133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610889576108896123a1565b6040519080825280602002602001820160405280156108b2578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108d1576108d16123a1565b6040519080825280602002602001820160405280156108fa578160200160208202803683370190505b50905060008060005b8751811015610afa5760008882815181106109205761092061275d565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109de868286611fa8565b6001909301925b602087015163ffffffff9081161415610ab85763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610ab1858285611fa8565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae9929190612968565b60405180910390a150600101610903565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c48578215610bb157610b2a8584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7e9033908990600401612997565b600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b505050505b8115610c4857610bc18483611fd2565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c159033908890600401612997565b600060405180830381600087803b158015610c2f57600080fd5b505af1158015610c43573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7d8133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb657610cb66123a1565b604051908082528060200260200182016040528015610cdf578160200160208202803683370190505b5090506000805b8551811015610e39576000868281518110610d0357610d0361275d565b6020026020010151905060026000888481518110610d2357610d2361275d565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df757805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610df0848285611fa8565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e28929190612968565b60405180910390a150600101610ce6565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610ef0578115610ef057610e698383611fd2565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610ebd9033908790600401612997565b600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff16610f135760015460ff1615610f17565b303b155b610fa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610671565b600154610100900460ff16158015610fe257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6000610ff16020840184612386565b73ffffffffffffffffffffffffffffffffffffffff16141561106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610671565b6110997f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80612041565b6110e37f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c612041565b61110d7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180612041565b6111577f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1612041565b6111817fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80612041565b6111cb7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d612041565b6112017f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111fc6020850185612386565b611e01565b6112327f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111fc6020850185612386565b6112637fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111fc6020850185612386565b6112736040830160208401612386565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ea9033908590612a35565b60405180910390a1801561068457600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113798243610688565b90506002811415801561138d575060038114155b6113f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610671565b806114c257604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115589033908490612968565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610ef057604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161159657905050905082816000815181106115d4576115d461275d565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116339033908590600401612997565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116998133611d31565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116cf576116cf6123a1565b6040519080825280602002602001820160405280156116f8578160200160208202803683370190505b50905060008467ffffffffffffffff811115611716576117166123a1565b60405190808252806020026020018201604052801561173f578160200160208202803683370190505b50905060008060005b878110156119545760008989838181106117645761176461275d565b9050602002810190611776919061278c565b61177f90612a7f565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561183d57604080516060808201835260008083526020808401829052928401528251908101835263ffffffff4381168252918101829052918201529650611836868286611fa8565b6001909301925b604087015163ffffffff90811614156119125763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561190b858285611fa8565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d23382604051611943929190612968565b60405180910390a150600101611748565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611aa2578215611a0b576119848584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b26906119d89033908990600401612997565b600060405180830381600087803b1580156119f257600080fd5b505af1158015611a06573d6000803e3d6000fd5b505050505b8115611aa257611a1b8483611fd2565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611a6f9033908890600401612997565b600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611ac98133611d31565b6105cb8383611ef1565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b2c9043610688565b14611b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611bd257611bd261275d565b9050602002810190611be4919061278c565b604051611bf29291906127ca565b60405180910390a1600101611b96565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611c5b9043610688565b14611cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d0157611d0161275d565b9050602002810190611d13919061278c565b604051611d219291906127ca565b60405180910390a1600101611cc5565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661068457611d878173ffffffffffffffffffffffffffffffffffffffff16601461208c565b611d9283602061208c565b604051602001611da3929190612a8b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067191600401612b0c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e933390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611fc057611fc061275d565b60200260200101818152505050505050565b815181111561203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610671565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6060600061209b836002612b4e565b6120a6906002612b8b565b67ffffffffffffffff8111156120be576120be6123a1565b6040519080825280601f01601f1916602001820160405280156120e8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061211f5761211f61275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121825761218261275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006121be846002612b4e565b6121c9906001612b8b565b90505b6001811115612266577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061220a5761220a61275d565b1a60f81b8282815181106122205761222061275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361225f81612ba3565b90506121cc565b5083156122cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610671565b9392505050565b6000602082840312156122e857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146122cf57600080fd5b60006020828403121561232a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b8235915061237d60208401612331565b90509250929050565b60006020828403121561239857600080fd5b6122cf82612331565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156123f3576123f36123a1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612440576124406123a1565b604052919050565b803563ffffffff8116811461235557600080fd5b600080828403608081121561247057600080fd5b606081121561247e57600080fd5b506040516060810181811067ffffffffffffffff821117156124a2576124a26123a1565b6040526124ae84612448565b81526124bc60208501612448565b60208201526124cd60408501612448565b6040820152946060939093013593505050565b600080602083850312156124f357600080fd5b823567ffffffffffffffff8082111561250b57600080fd5b818501915085601f83011261251f57600080fd5b81358181111561252e57600080fd5b8660208260051b850101111561254357600080fd5b60209290920196919550909350505050565b60006040828403121561256757600080fd5b61256f6123d0565b905061257a82612331565b815260208083013567ffffffffffffffff8082111561259857600080fd5b818501915085601f8301126125ac57600080fd5b8135818111156125be576125be6123a1565b6125ee847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123f9565b9150808252868482850101111561260457600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561263557600080fd5b823567ffffffffffffffff8082111561264d57600080fd5b818501915085601f83011261266157600080fd5b813581811115612673576126736123a1565b8060051b6126828582016123f9565b918252838101850191858101908984111561269c57600080fd5b86860192505b838310156126d8578235858111156126ba5760008081fd5b6126c88b89838a0101612555565b83525091860191908601906126a2565b9998505050505050505050565b6000604082840312156126f757600080fd5b50919050565b6000806020838503121561271057600080fd5b823567ffffffffffffffff8082111561272857600080fd5b818501915085601f83011261273c57600080fd5b81358181111561274b57600080fd5b86602082850101111561254357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806127f785612331565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283357600080fd5b8301803567ffffffffffffffff81111561284c57600080fd5b80360385131561285b57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156128cc5781810151838201526020016128b4565b838111156128db576000848401525b50505050565b600081518084526128f98160208601602086016128b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8151168252600060208201516040602085015261296060408501826128e1565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612960604083018461292b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a27577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a1586835161292b565b955092840192908401906001016129db565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612a5e85612331565b16602084015280612a7160208601612331565b166040840152509392505050565b600061059f3683612555565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612ac38160178501602088016128b1565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b008160288401602088016128b1565b01602801949350505050565b6020815260006122cf60208301846128e1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b8657612b86612b1f565b500290565b60008219821115612b9e57612b9e612b1f565b500190565b600081612bb257612bb2612b1f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122091621b417b280d6f5c8f42ecf2f9357ced6177583277563110b6751c1a7a13e864736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612d468061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220dde3e7d14a2a607cc57f8ba5e9f0ef5c7cc9bd94d6f1ac9c5adeaabbd317224764736f6c634300080a0033608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b366004612574565b610687565b61029c6103ae3660046125f8565b6106f5565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e836600461273a565b610824565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b0610422366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61046636600461273a565b610c50565b610231600081565b61029c6104813660046127fd565b610ef5565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046125f8565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046125f8565b611a58565b61029c6105073660046125f8565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b60006001836000015163ffffffff1610156106a45750600061059f565b81836040015163ffffffff16116106bd5750600361059f565b81836020015163ffffffff16116106d65750600261059f565b825163ffffffff1682106106ec5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074e9043610687565b146107b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f4576107f4612875565b905060200281019061080691906128a4565b6040516108149291906128e2565b60405180910390a16001016107b8565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3161084e81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610887576108876124b9565b6040519080825280602002602001820160405280156108b0578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108cf576108cf6124b9565b6040519080825280602002602001820160405280156108f8578160200160208202803683370190505b50905060008060005b8751811015610af857600088828151811061091e5761091e612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109dc868286611e6a565b6001909301925b602087015163ffffffff9081161415610ab65763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610aaf858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae7929190612a80565b60405180910390a150600101610901565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c46578215610baf57610b288584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7c9033908990600401612aaf565b600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b505050505b8115610c4657610bbf8483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c139033908890600401612aaf565b600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7a81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb357610cb36124b9565b604051908082528060200260200182016040528015610cdc578160200160208202803683370190505b5090506000805b8551811015610e36576000868281518110610d0057610d00612875565b6020026020010151905060026000888481518110610d2057610d20612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df457805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610ded848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e25929190612a80565b60405180910390a150600101610ce3565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610eed578115610eed57610e668383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610eba9033908790600401612aaf565b600060405180830381600087803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b505050505b505050505050565b6000610f016001611f03565b90508015610f3657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f45602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610fed7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b6110377f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b6110617f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b6110ab7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110d57fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b61111f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6111557f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611150602085018561249e565b611cc3565b6111867f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611150602085018561249e565b6111b77fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611150602085018561249e565b6111c7604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09061123e9033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113008243610687565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610eed57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff811115611655576116556124b9565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c6124b9565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab19043610687565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be09043610687565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db6124b9565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561250b5761250b6124b9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612558576125586124b9565b604052919050565b803563ffffffff8116811461208957600080fd5b600080828403608081121561258857600080fd5b606081121561259657600080fd5b506040516060810181811067ffffffffffffffff821117156125ba576125ba6124b9565b6040526125c684612560565b81526125d460208501612560565b60208201526125e560408501612560565b6040820152946060939093013593505050565b6000806020838503121561260b57600080fd5b823567ffffffffffffffff8082111561262357600080fd5b818501915085601f83011261263757600080fd5b81358181111561264657600080fd5b8660208260051b850101111561265b57600080fd5b60209290920196919550909350505050565b60006040828403121561267f57600080fd5b6126876124e8565b90506126928261244e565b815260208083013567ffffffffffffffff808211156126b057600080fd5b818501915085601f8301126126c457600080fd5b8135818111156126d6576126d66124b9565b612706847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612511565b9150808252868482850101111561271c57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561274d57600080fd5b823567ffffffffffffffff8082111561276557600080fd5b818501915085601f83011261277957600080fd5b81358181111561278b5761278b6124b9565b8060051b61279a858201612511565b91825283810185019185810190898411156127b457600080fd5b86860192505b838310156127f0578235858111156127d25760008081fd5b6127e08b89838a010161266d565b83525091860191908601906127ba565b9998505050505050505050565b60006040828403121561280f57600080fd5b50919050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561265b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f368361266d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122098c6f380b9b99ee9b6d8ff0c8c6874c739a71292a311fd79c30d89a38e6a5dd764736f6c634300080a0033"; type VerifyFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTierFactory__factory.ts b/src/typechain/factories/VerifyTierFactory__factory.ts index 71403a4..bd65509 100644 --- a/src/typechain/factories/VerifyTierFactory__factory.ts +++ b/src/typechain/factories/VerifyTierFactory__factory.ts @@ -125,7 +125,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61076d8061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea2646970667358221220046da658046f0d1b0da45ab03f664ca9191b9fff40f56efb3e424f10055f2cf964736f6c634300080a0033608060405234801561001057600080fd5b5061074d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046105b5565b610093565b005b61005961006936600461063c565b6100fa565b61008161007c36600461063c565b610319565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff166101155760005460ff1615610119565b303b155b6101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff161580156101e457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8216610261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561031557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b4919061066b565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906106fe565b14156104be576104b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166104e6565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b6000826008811115610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156105805763ffffffff6020820290811b199890981685891b17979150600101610558565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b057600080fd5b919050565b600080600080606085870312156105cb57600080fd5b6105d48561058c565b935060208501359250604085013567ffffffffffffffff808211156105f857600080fd5b818701915087601f83011261060c57600080fd5b81358181111561061b57600080fd5b88602082850101111561062d57600080fd5b95989497505060200194505050565b60006020828403121561064e57600080fd5b6104b78261058c565b805163ffffffff811681146105b057600080fd5b60006060828403121561067d57600080fd5b6040516060810181811067ffffffffffffffff821117156106c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526106d383610657565b81526106e160208401610657565b60208201526106f260408401610657565b60408201529392505050565b60006020828403121561071057600080fd5b505191905056fea2646970667358221220113bff9ac919f55f19b525dc42e478a9a92d8bc1bea59c6275bcccfcad2756ec64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61087e8061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea2646970667358221220d8ccd9ecb13c574a1d86144057272a1274c7ba7a3fbfdb794e432a7db2d8848764736f6c634300080a0033608060405234801561001057600080fd5b5061085e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046106c6565b610093565b005b61005961006936600461074d565b6100fa565b61008161007c36600461074d565b6102a4565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101066001610471565b9050801561013b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166101b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061077c565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610404919061080f565b1415610449576104427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166105fc565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b60008054610100900460ff1615610528578160ff1660011480156104945750303b155b610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b506000919050565b60005460ff8084169116106105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600082600881111561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156106965763ffffffff6020820290811b199890981685891b1797915060010161066e565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105f757600080fd5b600080600080606085870312156106dc57600080fd5b6106e5856106a2565b935060208501359250604085013567ffffffffffffffff8082111561070957600080fd5b818701915087601f83011261071d57600080fd5b81358181111561072c57600080fd5b88602082850101111561073e57600080fd5b95989497505060200194505050565b60006020828403121561075f57600080fd5b610442826106a2565b805163ffffffff811681146105f757600080fd5b60006060828403121561078e57600080fd5b6040516060810181811067ffffffffffffffff821117156107d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526107e483610768565b81526107f260208401610768565b602082015261080360408401610768565b60408201529392505050565b60006020828403121561082157600080fd5b505191905056fea26469706673582212207bc101b06e84c4971be08c8ac3a53defe981e3bf451fdb0d95048e20ad0ddf4d64736f6c634300080a0033"; type VerifyTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTier__factory.ts b/src/typechain/factories/VerifyTier__factory.ts index d078adc..12e538b 100644 --- a/src/typechain/factories/VerifyTier__factory.ts +++ b/src/typechain/factories/VerifyTier__factory.ts @@ -25,6 +25,19 @@ const _abi = [ name: "Initialize", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -120,7 +133,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061074d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046105b5565b610093565b005b61005961006936600461063c565b6100fa565b61008161007c36600461063c565b610319565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600054610100900460ff166101155760005460ff1615610119565b303b155b6101a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b600054610100900460ff161580156101e457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b73ffffffffffffffffffffffffffffffffffffffff8216610261576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561031557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610390573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b4919061066b565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa158015610455573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047991906106fe565b14156104be576104b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166104e6565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b6000826008811115610554576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156105805763ffffffff6020820290811b199890981685891b17979150600101610558565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105b057600080fd5b919050565b600080600080606085870312156105cb57600080fd5b6105d48561058c565b935060208501359250604085013567ffffffffffffffff808211156105f857600080fd5b818701915087601f83011261060c57600080fd5b81358181111561061b57600080fd5b88602082850101111561062d57600080fd5b95989497505060200194505050565b60006020828403121561064e57600080fd5b6104b78261058c565b805163ffffffff811681146105b057600080fd5b60006060828403121561067d57600080fd5b6040516060810181811067ffffffffffffffff821117156106c7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526106d383610657565b81526106e160208401610657565b60208201526106f260408401610657565b60408201529392505050565b60006020828403121561071057600080fd5b505191905056fea2646970667358221220113bff9ac919f55f19b525dc42e478a9a92d8bc1bea59c6275bcccfcad2756ec64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061085e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046106c6565b610093565b005b61005961006936600461074d565b6100fa565b61008161007c36600461074d565b6102a4565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101066001610471565b9050801561013b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166101b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061077c565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610404919061080f565b1415610449576104427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166105fc565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b60008054610100900460ff1615610528578160ff1660011480156104945750303b155b610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b506000919050565b60005460ff8084169116106105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600082600881111561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156106965763ffffffff6020820290811b199890981685891b1797915060010161066e565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105f757600080fd5b600080600080606085870312156106dc57600080fd5b6106e5856106a2565b935060208501359250604085013567ffffffffffffffff8082111561070957600080fd5b818701915087601f83011261071d57600080fd5b81358181111561072c57600080fd5b88602082850101111561073e57600080fd5b95989497505060200194505050565b60006020828403121561075f57600080fd5b610442826106a2565b805163ffffffff811681146105f757600080fd5b60006060828403121561078e57600080fd5b6040516060810181811067ffffffffffffffff821117156107d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526107e483610768565b81526107f260208401610768565b602082015261080360408401610768565b60408201529392505050565b60006020828403121561082157600080fd5b505191905056fea26469706673582212207bc101b06e84c4971be08c8ac3a53defe981e3bf451fdb0d95048e20ad0ddf4d64736f6c634300080a0033"; type VerifyTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Verify__factory.ts b/src/typechain/factories/Verify__factory.ts index fd613b7..60f35d5 100644 --- a/src/typechain/factories/Verify__factory.ts +++ b/src/typechain/factories/Verify__factory.ts @@ -99,6 +99,19 @@ const _abi = [ name: "Initialize", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, { anonymous: false, inputs: [ @@ -786,7 +799,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50612c0e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046122d6565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612318565b60009081526020819052604090206001015490565b61029c61029736600461235a565b6105a5565b005b6103246102ac366004612386565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c61036136600461235a565b6105d0565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b36600461245c565b610688565b61029c6103ae3660046124e0565b6106f6565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e8366004612622565b610825565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061042236600461235a565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c610466366004612622565b610c52565b610231600081565b61029c6104813660046126e5565b610ef8565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb3660046126fd565b611324565b61029c6104ce3660046124e0565b61166e565b61029c6104e136600461235a565b611aad565b61029c6104f43660046124e0565b611ad3565b61029c6105073660046124e0565b611c02565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c18133611d31565b6105cb8383611e01565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461067a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106848282611ef1565b5050565b60006001836000015163ffffffff1610156106a55750600061059f565b81836040015163ffffffff16116106be5750600361059f565b81836020015163ffffffff16116106d75750600261059f565b825163ffffffff1682106106ed5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074f9043610688565b146107b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f5576107f561275d565b9050602002810190610807919061278c565b6040516108159291906127ca565b60405180910390a16001016107b9565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316108508133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610889576108896123a1565b6040519080825280602002602001820160405280156108b2578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108d1576108d16123a1565b6040519080825280602002602001820160405280156108fa578160200160208202803683370190505b50905060008060005b8751811015610afa5760008882815181106109205761092061275d565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109de868286611fa8565b6001909301925b602087015163ffffffff9081161415610ab85763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610ab1858285611fa8565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae9929190612968565b60405180910390a150600101610903565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c48578215610bb157610b2a8584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7e9033908990600401612997565b600060405180830381600087803b158015610b9857600080fd5b505af1158015610bac573d6000803e3d6000fd5b505050505b8115610c4857610bc18483611fd2565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c159033908890600401612997565b600060405180830381600087803b158015610c2f57600080fd5b505af1158015610c43573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7d8133611d31565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb657610cb66123a1565b604051908082528060200260200182016040528015610cdf578160200160208202803683370190505b5090506000805b8551811015610e39576000868281518110610d0357610d0361275d565b6020026020010151905060026000888481518110610d2357610d2361275d565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df757805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610df0848285611fa8565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e28929190612968565b60405180910390a150600101610ce6565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610ef0578115610ef057610e698383611fd2565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610ebd9033908790600401612997565b600060405180830381600087803b158015610ed757600080fd5b505af1158015610eeb573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff16610f135760015460ff1615610f17565b303b155b610fa3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610671565b600154610100900460ff16158015610fe257600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000166101011790555b6000610ff16020840184612386565b73ffffffffffffffffffffffffffffffffffffffff16141561106f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610671565b6110997f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80612041565b6110e37f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c612041565b61110d7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180612041565b6111577f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1612041565b6111817fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80612041565b6111cb7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d612041565b6112017f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111fc6020850185612386565b611e01565b6112327f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111fc6020850185612386565b6112637fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111fc6020850185612386565b6112736040830160208401612386565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ea9033908590612a35565b60405180910390a1801561068457600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113798243610688565b90506002811415801561138d575060038114155b6113f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610671565b806114c257604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115589033908490612968565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610ef057604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161159657905050905082816000815181106115d4576115d461275d565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116339033908590600401612997565b600060405180830381600087803b15801561164d57600080fd5b505af1158015611661573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116998133611d31565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116cf576116cf6123a1565b6040519080825280602002602001820160405280156116f8578160200160208202803683370190505b50905060008467ffffffffffffffff811115611716576117166123a1565b60405190808252806020026020018201604052801561173f578160200160208202803683370190505b50905060008060005b878110156119545760008989838181106117645761176461275d565b9050602002810190611776919061278c565b61177f90612a7f565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561183d57604080516060808201835260008083526020808401829052928401528251908101835263ffffffff4381168252918101829052918201529650611836868286611fa8565b6001909301925b604087015163ffffffff90811614156119125763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561190b858285611fa8565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d23382604051611943929190612968565b60405180910390a150600101611748565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611aa2578215611a0b576119848584611fd2565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b26906119d89033908990600401612997565b600060405180830381600087803b1580156119f257600080fd5b505af1158015611a06573d6000803e3d6000fd5b505050505b8115611aa257611a1b8483611fd2565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611a6f9033908890600401612997565b600060405180830381600087803b158015611a8957600080fd5b505af1158015611a9d573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611ac98133611d31565b6105cb8383611ef1565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b2c9043610688565b14611b93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611bd257611bd261275d565b9050602002810190611be4919061278c565b604051611bf29291906127ca565b60405180910390a1600101611b96565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611c5b9043610688565b14611cc2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610671565b60005b818110156105cb577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d0157611d0161275d565b9050602002810190611d13919061278c565b604051611d219291906127ca565b60405180910390a1600101611cc5565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661068457611d878173ffffffffffffffffffffffffffffffffffffffff16601461208c565b611d9283602061208c565b604051602001611da3929190612a8b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067191600401612b0c565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e933390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106845760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611fc057611fc061275d565b60200260200101818152505050505050565b815181111561203d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610671565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6060600061209b836002612b4e565b6120a6906002612b8b565b67ffffffffffffffff8111156120be576120be6123a1565b6040519080825280601f01601f1916602001820160405280156120e8576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061211f5761211f61275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121825761218261275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006121be846002612b4e565b6121c9906001612b8b565b90505b6001811115612266577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061220a5761220a61275d565b1a60f81b8282815181106122205761222061275d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361225f81612ba3565b90506121cc565b5083156122cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610671565b9392505050565b6000602082840312156122e857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146122cf57600080fd5b60006020828403121561232a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461235557600080fd5b919050565b6000806040838503121561236d57600080fd5b8235915061237d60208401612331565b90509250929050565b60006020828403121561239857600080fd5b6122cf82612331565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156123f3576123f36123a1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612440576124406123a1565b604052919050565b803563ffffffff8116811461235557600080fd5b600080828403608081121561247057600080fd5b606081121561247e57600080fd5b506040516060810181811067ffffffffffffffff821117156124a2576124a26123a1565b6040526124ae84612448565b81526124bc60208501612448565b60208201526124cd60408501612448565b6040820152946060939093013593505050565b600080602083850312156124f357600080fd5b823567ffffffffffffffff8082111561250b57600080fd5b818501915085601f83011261251f57600080fd5b81358181111561252e57600080fd5b8660208260051b850101111561254357600080fd5b60209290920196919550909350505050565b60006040828403121561256757600080fd5b61256f6123d0565b905061257a82612331565b815260208083013567ffffffffffffffff8082111561259857600080fd5b818501915085601f8301126125ac57600080fd5b8135818111156125be576125be6123a1565b6125ee847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016123f9565b9150808252868482850101111561260457600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561263557600080fd5b823567ffffffffffffffff8082111561264d57600080fd5b818501915085601f83011261266157600080fd5b813581811115612673576126736123a1565b8060051b6126828582016123f9565b918252838101850191858101908984111561269c57600080fd5b86860192505b838310156126d8578235858111156126ba5760008081fd5b6126c88b89838a0101612555565b83525091860191908601906126a2565b9998505050505050505050565b6000604082840312156126f757600080fd5b50919050565b6000806020838503121561271057600080fd5b823567ffffffffffffffff8082111561272857600080fd5b818501915085601f83011261273c57600080fd5b81358181111561274b57600080fd5b86602082850101111561254357600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126127c057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806127f785612331565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283357600080fd5b8301803567ffffffffffffffff81111561284c57600080fd5b80360385131561285b57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156128cc5781810151838201526020016128b4565b838111156128db576000848401525b50505050565b600081518084526128f98160208601602086016128b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff8151168252600060208201516040602085015261296060408501826128e1565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612960604083018461292b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a27577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a1586835161292b565b955092840192908401906001016129db565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612a5e85612331565b16602084015280612a7160208601612331565b166040840152509392505050565b600061059f3683612555565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612ac38160178501602088016128b1565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b008160288401602088016128b1565b01602801949350505050565b6020815260006122cf60208301846128e1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b8657612b86612b1f565b500290565b60008219821115612b9e57612b9e612b1f565b500190565b600081612bb257612bb2612b1f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122091621b417b280d6f5c8f42ecf2f9357ced6177583277563110b6751c1a7a13e864736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b366004612574565b610687565b61029c6103ae3660046125f8565b6106f5565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e836600461273a565b610824565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b0610422366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61046636600461273a565b610c50565b610231600081565b61029c6104813660046127fd565b610ef5565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046125f8565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046125f8565b611a58565b61029c6105073660046125f8565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b60006001836000015163ffffffff1610156106a45750600061059f565b81836040015163ffffffff16116106bd5750600361059f565b81836020015163ffffffff16116106d65750600261059f565b825163ffffffff1682106106ec5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074e9043610687565b146107b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f4576107f4612875565b905060200281019061080691906128a4565b6040516108149291906128e2565b60405180910390a16001016107b8565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3161084e81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610887576108876124b9565b6040519080825280602002602001820160405280156108b0578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108cf576108cf6124b9565b6040519080825280602002602001820160405280156108f8578160200160208202803683370190505b50905060008060005b8751811015610af857600088828151811061091e5761091e612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109dc868286611e6a565b6001909301925b602087015163ffffffff9081161415610ab65763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610aaf858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae7929190612a80565b60405180910390a150600101610901565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c46578215610baf57610b288584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7c9033908990600401612aaf565b600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b505050505b8115610c4657610bbf8483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c139033908890600401612aaf565b600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7a81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb357610cb36124b9565b604051908082528060200260200182016040528015610cdc578160200160208202803683370190505b5090506000805b8551811015610e36576000868281518110610d0057610d00612875565b6020026020010151905060026000888481518110610d2057610d20612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df457805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610ded848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e25929190612a80565b60405180910390a150600101610ce3565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610eed578115610eed57610e668383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610eba9033908790600401612aaf565b600060405180830381600087803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b505050505b505050505050565b6000610f016001611f03565b90508015610f3657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f45602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610fed7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b6110377f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b6110617f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b6110ab7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110d57fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b61111f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6111557f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611150602085018561249e565b611cc3565b6111867f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611150602085018561249e565b6111b77fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611150602085018561249e565b6111c7604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09061123e9033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113008243610687565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610eed57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff811115611655576116556124b9565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c6124b9565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab19043610687565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be09043610687565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db6124b9565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561250b5761250b6124b9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612558576125586124b9565b604052919050565b803563ffffffff8116811461208957600080fd5b600080828403608081121561258857600080fd5b606081121561259657600080fd5b506040516060810181811067ffffffffffffffff821117156125ba576125ba6124b9565b6040526125c684612560565b81526125d460208501612560565b60208201526125e560408501612560565b6040820152946060939093013593505050565b6000806020838503121561260b57600080fd5b823567ffffffffffffffff8082111561262357600080fd5b818501915085601f83011261263757600080fd5b81358181111561264657600080fd5b8660208260051b850101111561265b57600080fd5b60209290920196919550909350505050565b60006040828403121561267f57600080fd5b6126876124e8565b90506126928261244e565b815260208083013567ffffffffffffffff808211156126b057600080fd5b818501915085601f8301126126c457600080fd5b8135818111156126d6576126d66124b9565b612706847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612511565b9150808252868482850101111561271c57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561274d57600080fd5b823567ffffffffffffffff8082111561276557600080fd5b818501915085601f83011261277957600080fd5b81358181111561278b5761278b6124b9565b8060051b61279a858201612511565b91825283810185019185810190898411156127b457600080fd5b86860192505b838310156127f0578235858111156127d25760008081fd5b6127e08b89838a010161266d565b83525091860191908601906127ba565b9998505050505050505050565b60006040828403121561280f57600080fd5b50919050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561265b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f368361266d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122098c6f380b9b99ee9b6d8ff0c8c6874c739a71292a311fd79c30d89a38e6a5dd764736f6c634300080a0033"; type VerifyConstructorParams = | [signer?: Signer] diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index cf13e32..d645773 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -13,89 +13,13 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { getContractFactory( - name: "BBronze", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BColor", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BConst", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BMath", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BNum", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BToken", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BTokenBase", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC20", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ConfigurableRightsPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "CRPFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IBFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IBPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "PCToken", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BalancerOwnable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IConfigurableRightsPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC20", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "BalancerConstants", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "RightsManager", + name: "SSTORE2", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "SmartPoolManager", + name: "Bytecode", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "Factory", signerOrOptions?: ethers.Signer | FactoryOptions @@ -116,6 +40,10 @@ declare module "hardhat/types/runtime" { name: "IERC2981Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "Initializable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -148,6 +76,10 @@ declare module "hardhat/types/runtime" { name: "IERC721Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ContextUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC165Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -165,9 +97,9 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "Ownable", + name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "ERC1155", signerOrOptions?: ethers.Signer | FactoryOptions @@ -248,18 +180,10 @@ declare module "hardhat/types/runtime" { name: "Cooldown", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC20Pull", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ERC20Redeem", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "BPoolFeeEscrow", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "RedeemableERC20ClaimEscrow", signerOrOptions?: ethers.Signer | FactoryOptions @@ -277,25 +201,17 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "Phased", + name: "OrderBook", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "IBalancerConstants", + name: "OrderBookStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "IBPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IConfigurableRightsPool", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ICRPFactory", + name: "Phased", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "GatedNFT", signerOrOptions?: ethers.Signer | FactoryOptions @@ -325,53 +241,29 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "SeedERC20", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SeedERC20Factory", + name: "Stake", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "SSTORE2", + name: "StakeFactory", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "Bytecode", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "CalculatorTest", + name: "AllStandardOpsTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "ERC20PulleeTest", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "FixedPointMathOpsTest", + name: "FnPtrsTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "MockISale", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "MockTrustISale", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "LogicOpsTest", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TierOpsTest", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TokenOpsTest", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "PhasedScheduleTest", signerOrOptions?: ethers.Signer | FactoryOptions @@ -392,6 +284,10 @@ declare module "hardhat/types/runtime" { name: "ReserveToken", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ReserveToken18", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ReserveTokenERC1155", signerOrOptions?: ethers.Signer | FactoryOptions @@ -413,13 +309,9 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "SeedERC20ForceSendEther", + name: "StackHeightTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "SeedERC20Reentrant", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "VerifyCallbackTest", signerOrOptions?: ethers.Signer | FactoryOptions @@ -436,10 +328,6 @@ declare module "hardhat/types/runtime" { name: "TierReportTest", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "TrustEscrowWrapper", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ValueTierTest", signerOrOptions?: ethers.Signer | FactoryOptions @@ -500,14 +388,6 @@ declare module "hardhat/types/runtime" { name: "VerifyTierFactory", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "Trust", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "TrustFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "IVerifyCallback", signerOrOptions?: ethers.Signer | FactoryOptions @@ -521,115 +401,28 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "VMState", + name: "AllStandardOpsStateBuilder", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "RainVM", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "VMStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractAt( - name: "BBronze", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BColor", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BConst", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BMath", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BNum", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BPool", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BToken", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BTokenBase", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC20", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ConfigurableRightsPool", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "CRPFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IBFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IBPool", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "PCToken", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BalancerOwnable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IConfigurableRightsPool", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC20", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "BalancerConstants", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "RightsManager", + name: "SSTORE2", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "SmartPoolManager", + name: "Bytecode", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "Factory", address: string, @@ -655,6 +448,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "Initializable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC20Upgradeable", address: string, @@ -695,6 +493,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ContextUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC165Upgradeable", address: string, @@ -716,10 +519,10 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "Ownable", + name: "Initializable", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "ERC1155", address: string, @@ -820,21 +623,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC20Pull", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ERC20Redeem", address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "BPoolFeeEscrow", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "RedeemableERC20ClaimEscrow", address: string, @@ -856,30 +649,20 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "Phased", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IBalancerConstants", + name: "OrderBook", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "IBPool", + name: "OrderBookStateBuilder", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "IConfigurableRightsPool", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ICRPFactory", + name: "Phased", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "GatedNFT", address: string, @@ -916,65 +699,35 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "SeedERC20", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SeedERC20Factory", + name: "Stake", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "SSTORE2", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "Bytecode", + name: "StakeFactory", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "CalculatorTest", + name: "AllStandardOpsTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "ERC20PulleeTest", address: string, signer?: ethers.Signer ): Promise; getContractAt( - name: "FixedPointMathOpsTest", + name: "FnPtrsTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "MockISale", address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "MockTrustISale", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "LogicOpsTest", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TierOpsTest", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TokenOpsTest", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "PhasedScheduleTest", address: string, @@ -1000,6 +753,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ReserveToken18", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ReserveTokenERC1155", address: string, @@ -1026,15 +784,10 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "SeedERC20ForceSendEther", + name: "StackHeightTest", address: string, signer?: ethers.Signer - ): Promise; - getContractAt( - name: "SeedERC20Reentrant", - address: string, - signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "VerifyCallbackTest", address: string, @@ -1055,11 +808,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "TrustEscrowWrapper", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ValueTierTest", address: string, @@ -1135,16 +883,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "Trust", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "TrustFactory", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "IVerifyCallback", address: string, @@ -1161,10 +899,20 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "VMState", + name: "AllStandardOpsStateBuilder", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "RainVM", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "VMStateBuilder", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; // default types getContractFactory( diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 2ebc04a..4fbc531 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,31 +1,14 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { BBronze } from "./BBronze"; -export type { BColor } from "./BColor"; -export type { BConst } from "./BConst"; -export type { BFactory } from "./BFactory"; -export type { BMath } from "./BMath"; -export type { BNum } from "./BNum"; -export type { BPool } from "./BPool"; -export type { BToken } from "./BToken"; -export type { BTokenBase } from "./BTokenBase"; -export type { IERC20 } from "./IERC20"; -export type { ConfigurableRightsPool } from "./ConfigurableRightsPool"; -export type { CRPFactory } from "./CRPFactory"; -export type { IBFactory } from "./IBFactory"; -export type { IBPool } from "./IBPool"; -export type { PCToken } from "./PCToken"; -export type { BalancerOwnable } from "./BalancerOwnable"; -export type { IConfigurableRightsPool } from "./IConfigurableRightsPool"; -export type { BalancerConstants } from "./BalancerConstants"; -export type { RightsManager } from "./RightsManager"; -export type { SmartPoolManager } from "./SmartPoolManager"; +export type { SSTORE2 } from "./SSTORE2"; +export type { Bytecode } from "./Bytecode"; export type { Factory } from "./Factory"; export type { IFactory } from "./IFactory"; export type { ITier } from "./ITier"; export type { OwnableUpgradeable } from "./OwnableUpgradeable"; export type { IERC2981Upgradeable } from "./IERC2981Upgradeable"; +export type { Initializable } from "./Initializable"; export type { ERC20Upgradeable } from "./ERC20Upgradeable"; export type { ERC20BurnableUpgradeable } from "./ERC20BurnableUpgradeable"; export type { IERC20MetadataUpgradeable } from "./IERC20MetadataUpgradeable"; @@ -34,11 +17,11 @@ export type { ERC721Upgradeable } from "./ERC721Upgradeable"; export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; export type { IERC721Upgradeable } from "./IERC721Upgradeable"; +export type { ContextUpgradeable } from "./ContextUpgradeable"; export type { ERC165Upgradeable } from "./ERC165Upgradeable"; export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; -export type { Ownable } from "./Ownable"; export type { ERC1155 } from "./ERC1155"; export type { ERC1155Burnable } from "./ERC1155Burnable"; export type { IERC1155MetadataURI } from "./IERC1155MetadataURI"; @@ -47,6 +30,7 @@ export type { IERC1155Receiver } from "./IERC1155Receiver"; export type { ERC20 } from "./ERC20"; export type { ERC20Burnable } from "./ERC20Burnable"; export type { IERC20Metadata } from "./IERC20Metadata"; +export type { IERC20 } from "./IERC20"; export type { ERC721 } from "./ERC721"; export type { ERC721Burnable } from "./ERC721Burnable"; export type { IERC721Metadata } from "./IERC721Metadata"; @@ -58,14 +42,12 @@ export type { EmissionsERC20 } from "./EmissionsERC20"; export type { EmissionsERC20Factory } from "./EmissionsERC20Factory"; export type { IClaim } from "./IClaim"; export type { Cooldown } from "./Cooldown"; -export type { ERC20Pull } from "./ERC20Pull"; export type { ERC20Redeem } from "./ERC20Redeem"; -export type { BPoolFeeEscrow } from "./BPoolFeeEscrow"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; export type { NoticeBoard } from "./NoticeBoard"; +export type { OrderBook } from "./OrderBook"; +export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; export type { Phased } from "./Phased"; -export type { IBalancerConstants } from "./IBalancerConstants"; -export type { ICRPFactory } from "./ICRPFactory"; export type { GatedNFT } from "./GatedNFT"; export type { GatedNFTFactory } from "./GatedNFTFactory"; export type { RedeemableERC20 } from "./RedeemableERC20"; @@ -73,35 +55,28 @@ export type { RedeemableERC20Factory } from "./RedeemableERC20Factory"; export type { ISale } from "./ISale"; export type { Sale } from "./Sale"; export type { SaleFactory } from "./SaleFactory"; -export type { SeedERC20 } from "./SeedERC20"; -export type { SeedERC20Factory } from "./SeedERC20Factory"; -export type { SSTORE2 } from "./SSTORE2"; -export type { Bytecode } from "./Bytecode"; -export type { CalculatorTest } from "./CalculatorTest"; +export type { Stake } from "./Stake"; +export type { StakeFactory } from "./StakeFactory"; +export type { AllStandardOpsTest } from "./AllStandardOpsTest"; export type { ERC20PulleeTest } from "./ERC20PulleeTest"; -export type { FixedPointMathOpsTest } from "./FixedPointMathOpsTest"; +export type { FnPtrsTest } from "./FnPtrsTest"; export type { MockISale } from "./MockISale"; -export type { MockTrustISale } from "./MockTrustISale"; -export type { LogicOpsTest } from "./LogicOpsTest"; -export type { TierOpsTest } from "./TierOpsTest"; -export type { TokenOpsTest } from "./TokenOpsTest"; export type { PhasedScheduleTest } from "./PhasedScheduleTest"; export type { PhasedTest } from "./PhasedTest"; export type { RedeemableERC20Reentrant } from "./RedeemableERC20Reentrant"; export type { ReserveNFT } from "./ReserveNFT"; export type { ReserveToken } from "./ReserveToken"; +export type { ReserveToken18 } from "./ReserveToken18"; export type { ReserveTokenERC1155 } from "./ReserveTokenERC1155"; export type { ReserveTokenERC721 } from "./ReserveTokenERC721"; export type { ReserveTokenTest } from "./ReserveTokenTest"; export type { SaleReentrant } from "./SaleReentrant"; export type { SaturatingMathTest } from "./SaturatingMathTest"; -export type { SeedERC20ForceSendEther } from "./SeedERC20ForceSendEther"; -export type { SeedERC20Reentrant } from "./SeedERC20Reentrant"; +export type { StackHeightTest } from "./StackHeightTest"; export type { VerifyCallbackTest } from "./VerifyCallbackTest"; export type { RedeemableERC20ClaimEscrowWrapper } from "./RedeemableERC20ClaimEscrowWrapper"; export type { SaleEscrowWrapper } from "./SaleEscrowWrapper"; export type { TierReportTest } from "./TierReportTest"; -export type { TrustEscrowWrapper } from "./TrustEscrowWrapper"; export type { ValueTierTest } from "./ValueTierTest"; export type { CombineTier } from "./CombineTier"; export type { CombineTierFactory } from "./CombineTierFactory"; @@ -116,38 +91,21 @@ export type { ReadWriteTier } from "./ReadWriteTier"; export type { ValueTier } from "./ValueTier"; export type { VerifyTier } from "./VerifyTier"; export type { VerifyTierFactory } from "./VerifyTierFactory"; -export type { Trust } from "./Trust"; -export type { TrustFactory } from "./TrustFactory"; export type { IVerifyCallback } from "./IVerifyCallback"; export type { Verify } from "./Verify"; export type { VerifyFactory } from "./VerifyFactory"; -export type { VMState } from "./VMState"; +export type { AllStandardOpsStateBuilder } from "./AllStandardOpsStateBuilder"; +export type { RainVM } from "./RainVM"; +export type { VMStateBuilder } from "./VMStateBuilder"; -export { BBronze__factory } from "./factories/BBronze__factory"; -export { BColor__factory } from "./factories/BColor__factory"; -export { BConst__factory } from "./factories/BConst__factory"; -export { BFactory__factory } from "./factories/BFactory__factory"; -export { BMath__factory } from "./factories/BMath__factory"; -export { BNum__factory } from "./factories/BNum__factory"; -export { BPool__factory } from "./factories/BPool__factory"; -export { BToken__factory } from "./factories/BToken__factory"; -export { BTokenBase__factory } from "./factories/BTokenBase__factory"; -export { IERC20__factory } from "./factories/IERC20__factory"; -export { ConfigurableRightsPool__factory } from "./factories/ConfigurableRightsPool__factory"; -export { CRPFactory__factory } from "./factories/CRPFactory__factory"; -export { IBFactory__factory } from "./factories/IBFactory__factory"; -export { IBPool__factory } from "./factories/IBPool__factory"; -export { PCToken__factory } from "./factories/PCToken__factory"; -export { BalancerOwnable__factory } from "./factories/BalancerOwnable__factory"; -export { IConfigurableRightsPool__factory } from "./factories/IConfigurableRightsPool__factory"; -export { BalancerConstants__factory } from "./factories/BalancerConstants__factory"; -export { RightsManager__factory } from "./factories/RightsManager__factory"; -export { SmartPoolManager__factory } from "./factories/SmartPoolManager__factory"; +export { SSTORE2__factory } from "./factories/SSTORE2__factory"; +export { Bytecode__factory } from "./factories/Bytecode__factory"; export { Factory__factory } from "./factories/Factory__factory"; export { IFactory__factory } from "./factories/IFactory__factory"; export { ITier__factory } from "./factories/ITier__factory"; export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; export { IERC2981Upgradeable__factory } from "./factories/IERC2981Upgradeable__factory"; +export { Initializable__factory } from "./factories/Initializable__factory"; export { ERC20Upgradeable__factory } from "./factories/ERC20Upgradeable__factory"; export { ERC20BurnableUpgradeable__factory } from "./factories/ERC20BurnableUpgradeable__factory"; export { IERC20MetadataUpgradeable__factory } from "./factories/IERC20MetadataUpgradeable__factory"; @@ -156,11 +114,11 @@ export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__facto export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; export { IERC721Upgradeable__factory } from "./factories/IERC721Upgradeable__factory"; +export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; -export { Ownable__factory } from "./factories/Ownable__factory"; export { ERC1155__factory } from "./factories/ERC1155__factory"; export { ERC1155Burnable__factory } from "./factories/ERC1155Burnable__factory"; export { IERC1155MetadataURI__factory } from "./factories/IERC1155MetadataURI__factory"; @@ -169,6 +127,7 @@ export { IERC1155Receiver__factory } from "./factories/IERC1155Receiver__factory export { ERC20__factory } from "./factories/ERC20__factory"; export { ERC20Burnable__factory } from "./factories/ERC20Burnable__factory"; export { IERC20Metadata__factory } from "./factories/IERC20Metadata__factory"; +export { IERC20__factory } from "./factories/IERC20__factory"; export { ERC721__factory } from "./factories/ERC721__factory"; export { ERC721Burnable__factory } from "./factories/ERC721Burnable__factory"; export { IERC721Metadata__factory } from "./factories/IERC721Metadata__factory"; @@ -180,14 +139,12 @@ export { EmissionsERC20__factory } from "./factories/EmissionsERC20__factory"; export { EmissionsERC20Factory__factory } from "./factories/EmissionsERC20Factory__factory"; export { IClaim__factory } from "./factories/IClaim__factory"; export { Cooldown__factory } from "./factories/Cooldown__factory"; -export { ERC20Pull__factory } from "./factories/ERC20Pull__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; -export { BPoolFeeEscrow__factory } from "./factories/BPoolFeeEscrow__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; +export { OrderBook__factory } from "./factories/OrderBook__factory"; +export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; export { Phased__factory } from "./factories/Phased__factory"; -export { IBalancerConstants__factory } from "./factories/IBalancerConstants__factory"; -export { ICRPFactory__factory } from "./factories/ICRPFactory__factory"; export { GatedNFT__factory } from "./factories/GatedNFT__factory"; export { GatedNFTFactory__factory } from "./factories/GatedNFTFactory__factory"; export { RedeemableERC20__factory } from "./factories/RedeemableERC20__factory"; @@ -195,35 +152,28 @@ export { RedeemableERC20Factory__factory } from "./factories/RedeemableERC20Fact export { ISale__factory } from "./factories/ISale__factory"; export { Sale__factory } from "./factories/Sale__factory"; export { SaleFactory__factory } from "./factories/SaleFactory__factory"; -export { SeedERC20__factory } from "./factories/SeedERC20__factory"; -export { SeedERC20Factory__factory } from "./factories/SeedERC20Factory__factory"; -export { SSTORE2__factory } from "./factories/SSTORE2__factory"; -export { Bytecode__factory } from "./factories/Bytecode__factory"; -export { CalculatorTest__factory } from "./factories/CalculatorTest__factory"; +export { Stake__factory } from "./factories/Stake__factory"; +export { StakeFactory__factory } from "./factories/StakeFactory__factory"; +export { AllStandardOpsTest__factory } from "./factories/AllStandardOpsTest__factory"; export { ERC20PulleeTest__factory } from "./factories/ERC20PulleeTest__factory"; -export { FixedPointMathOpsTest__factory } from "./factories/FixedPointMathOpsTest__factory"; +export { FnPtrsTest__factory } from "./factories/FnPtrsTest__factory"; export { MockISale__factory } from "./factories/MockISale__factory"; -export { MockTrustISale__factory } from "./factories/MockTrustISale__factory"; -export { LogicOpsTest__factory } from "./factories/LogicOpsTest__factory"; -export { TierOpsTest__factory } from "./factories/TierOpsTest__factory"; -export { TokenOpsTest__factory } from "./factories/TokenOpsTest__factory"; export { PhasedScheduleTest__factory } from "./factories/PhasedScheduleTest__factory"; export { PhasedTest__factory } from "./factories/PhasedTest__factory"; export { RedeemableERC20Reentrant__factory } from "./factories/RedeemableERC20Reentrant__factory"; export { ReserveNFT__factory } from "./factories/ReserveNFT__factory"; export { ReserveToken__factory } from "./factories/ReserveToken__factory"; +export { ReserveToken18__factory } from "./factories/ReserveToken18__factory"; export { ReserveTokenERC1155__factory } from "./factories/ReserveTokenERC1155__factory"; export { ReserveTokenERC721__factory } from "./factories/ReserveTokenERC721__factory"; export { ReserveTokenTest__factory } from "./factories/ReserveTokenTest__factory"; export { SaleReentrant__factory } from "./factories/SaleReentrant__factory"; export { SaturatingMathTest__factory } from "./factories/SaturatingMathTest__factory"; -export { SeedERC20ForceSendEther__factory } from "./factories/SeedERC20ForceSendEther__factory"; -export { SeedERC20Reentrant__factory } from "./factories/SeedERC20Reentrant__factory"; +export { StackHeightTest__factory } from "./factories/StackHeightTest__factory"; export { VerifyCallbackTest__factory } from "./factories/VerifyCallbackTest__factory"; export { RedeemableERC20ClaimEscrowWrapper__factory } from "./factories/RedeemableERC20ClaimEscrowWrapper__factory"; export { SaleEscrowWrapper__factory } from "./factories/SaleEscrowWrapper__factory"; export { TierReportTest__factory } from "./factories/TierReportTest__factory"; -export { TrustEscrowWrapper__factory } from "./factories/TrustEscrowWrapper__factory"; export { ValueTierTest__factory } from "./factories/ValueTierTest__factory"; export { CombineTier__factory } from "./factories/CombineTier__factory"; export { CombineTierFactory__factory } from "./factories/CombineTierFactory__factory"; @@ -238,9 +188,9 @@ export { ReadWriteTier__factory } from "./factories/ReadWriteTier__factory"; export { ValueTier__factory } from "./factories/ValueTier__factory"; export { VerifyTier__factory } from "./factories/VerifyTier__factory"; export { VerifyTierFactory__factory } from "./factories/VerifyTierFactory__factory"; -export { Trust__factory } from "./factories/Trust__factory"; -export { TrustFactory__factory } from "./factories/TrustFactory__factory"; export { IVerifyCallback__factory } from "./factories/IVerifyCallback__factory"; export { Verify__factory } from "./factories/Verify__factory"; export { VerifyFactory__factory } from "./factories/VerifyFactory__factory"; -export { VMState__factory } from "./factories/VMState__factory"; +export { AllStandardOpsStateBuilder__factory } from "./factories/AllStandardOpsStateBuilder__factory"; +export { RainVM__factory } from "./factories/RainVM__factory"; +export { VMStateBuilder__factory } from "./factories/VMStateBuilder__factory"; diff --git a/yarn.lock b/yarn.lock index d5ff244..10b1a55 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,26 @@ # yarn lockfile v1 +"@0xsequence/create3@https://github.com/0xsequence/create3.git": + version "3.0.0" + resolved "https://github.com/0xsequence/create3.git#acc4703a21ec1d71dc2a99db088c4b1f467530fd" + dependencies: + csv-writer "^1.6.0" + +"@0xsequence/sstore2@github:0xsequence/sstore2": + version "1.1.0" + resolved "https://codeload.github.com/0xsequence/sstore2/tar.gz/0a28fe61b6e81de9a05b462a24b9f4ba8c70d5b7" + dependencies: + "@0xsequence/create3" "https://github.com/0xsequence/create3.git" + csv-writer "^1.6.0" + "@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5": version "7.16.7" @@ -16,40 +30,40 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.16.8", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" + integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.9" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.0" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" - integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== +"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" jsesc "^2.5.1" - source-map "^0.5.0" "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" @@ -66,20 +80,20 @@ "@babel/helper-explode-assignable-expression" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== +"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== dependencies: - "@babel/compat-data" "^7.17.7" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.16.10", "@babel/helper-create-class-features-plugin@^7.16.7", "@babel/helper-create-class-features-plugin@^7.17.6": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d" - integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ== +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7" @@ -89,10 +103,10 @@ "@babel/helper-replace-supers" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" -"@babel/helper-create-regexp-features-plugin@^7.16.7": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz#1dcc7d40ba0c6b6b25618997c5dbfd310f186fe1" - integrity sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA== +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" regexpu-core "^5.0.1" @@ -125,12 +139,10 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" - integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== - dependencies: - "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" @@ -154,7 +166,7 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": +"@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== @@ -168,10 +180,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-module-transforms@^7.16.7", "@babel/helper-module-transforms@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz#3943c7f777139e7954a5355c815263741a9c1cbd" - integrity sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw== +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== dependencies: "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-module-imports" "^7.16.7" @@ -179,8 +191,8 @@ "@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.3" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" "@babel/helper-optimise-call-expression@^7.16.7": version "7.16.7" @@ -189,10 +201,10 @@ dependencies: "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz#aa3a8ab4c3cceff8e65eb9e73d87dc4ff320b2f5" - integrity sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== "@babel/helper-remap-async-to-generator@^7.16.8": version "7.16.8" @@ -203,23 +215,23 @@ "@babel/helper-wrap-function" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helper-replace-supers@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz#e9f5f5f32ac90429c1a4bdec0f231ef0c2838ab1" - integrity sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw== +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-member-expression-to-functions" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" -"@babel/helper-simple-access@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz#aaa473de92b7987c6dfa7ce9a7d9674724823367" - integrity sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA== +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.18.2" "@babel/helper-skip-transparent-expression-wrappers@^7.16.0": version "7.16.0" @@ -255,69 +267,69 @@ "@babel/traverse" "^7.16.8" "@babel/types" "^7.16.8" -"@babel/helpers@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a" - integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q== +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== dependencies: "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" "@babel/highlight@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3" - integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== dependencies: "@babel/helper-validator-identifier" "^7.16.7" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9", "@babel/parser@^7.7.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" - integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== +"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0", "@babel/parser@^7.7.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" + integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" - integrity sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz#cc001234dfc139ac45f6bcf801866198c8c72ff9" - integrity sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" -"@babel/plugin-proposal-async-generator-functions@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz#3bdd1ebbe620804ea9416706cd67d60787504bc8" - integrity sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ== +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.16.7", "@babel/plugin-proposal-class-properties@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz#925cad7b3b1a2fcea7e59ecc8eb5954f961f91b0" - integrity sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww== +"@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-class-static-block@^7.16.7": - version "7.17.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz#164e8fd25f0d80fa48c5a4d1438a6629325ad83c" - integrity sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA== +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.6" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-proposal-dynamic-import@^7.16.7": @@ -328,36 +340,36 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz#09de09df18445a5786a305681423ae63507a6163" - integrity sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA== +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz#9732cb1d17d9a2626a08c5be25186c195b6fa6e8" - integrity sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ== +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz#be23c0ba74deec1922e639832904be0bea73cdea" - integrity sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg== +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz#141fc20b6857e59459d430c850a0011e36561d99" - integrity sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator@^7.16.7": @@ -368,16 +380,16 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.16.7": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz#d9eb649a54628a51701aef7e0ea3d17e2b9dd390" - integrity sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw== +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== dependencies: - "@babel/compat-data" "^7.17.0" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-proposal-optional-catch-binding@^7.16.7": version "7.16.7" @@ -387,40 +399,40 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz#7cd629564724816c0e8a969535551f943c64c39a" - integrity sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA== +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.16.11": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz#e8df108288555ff259f4527dbe84813aac3a1c50" - integrity sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw== +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== dependencies: - "@babel/helper-create-class-features-plugin" "^7.16.10" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-proposal-private-property-in-object@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz#b0b8cef543c2c3d57e59e2c611994861d46a3fce" - integrity sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ== +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.16.7", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz#635d18eb10c6214210ffc5ff4932552de08188a2" - integrity sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg== +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -464,6 +476,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -535,26 +554,26 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-arrow-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz#44125e653d94b98db76369de9c396dc14bef4154" - integrity sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ== +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz#b83dff4b970cf41f1b819f8b49cc0cfbaa53a808" - integrity sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg== +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-remap-async-to-generator" "^7.16.8" "@babel/plugin-transform-block-scoped-functions@^7.16.7": @@ -564,40 +583,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-block-scoping@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz#f50664ab99ddeaee5bc681b8f3a6ea9d72ab4f87" - integrity sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ== +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-classes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz#8f4b9562850cd973de3b498f1218796eb181ce00" - integrity sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ== +"@babel/plugin-transform-classes@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== dependencies: "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" "@babel/helper-split-export-declaration" "^7.16.7" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz#66dee12e46f61d2aae7a73710f591eb3df616470" - integrity sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw== +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-destructuring@^7.16.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz#49dc2675a7afa9a5e4c6bdee636061136c3408d1" - integrity sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ== +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.16.7" @@ -607,12 +626,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-duplicate-keys@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz#2207e9ca8f82a0d36a5a67b6536e7ef8b08823c9" - integrity sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw== +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-exponentiation-operator@^7.16.7": version "7.16.7" @@ -622,12 +641,12 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-for-of@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz#649d639d4617dff502a9a158c479b3b556728d8c" - integrity sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg== +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-function-name@^7.16.7": version "7.16.7" @@ -638,12 +657,12 @@ "@babel/helper-function-name" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz#254c9618c5ff749e87cb0c0cef1a0a050c0bdab1" - integrity sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ== +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-member-expression-literals@^7.16.7": version "7.16.7" @@ -652,57 +671,58 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-modules-amd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz#b28d323016a7daaae8609781d1f8c9da42b13186" - integrity sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g== +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.16.8": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6" - integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw== +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== dependencies: - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.16.7": - version "7.17.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz#81fd834024fae14ea78fbe34168b042f38703859" - integrity sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw== +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz#3d6fd9868c735cce8f38d6ae3a407fb7e61e6d46" + integrity sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg== dependencies: "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-identifier" "^7.16.7" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz#23dad479fa585283dbd22215bff12719171e7618" - integrity sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ== +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== dependencies: - "@babel/helper-module-transforms" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-named-capturing-groups-regex@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz#7f860e0e40d844a02c9dcf9d84965e7dfd666252" - integrity sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw== +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-new-target@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz#9967d89a5c243818e0800fdad89db22c5f514244" - integrity sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg== +"@babel/plugin-transform-new-target@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" + integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-object-super@^7.16.7": version "7.16.7" @@ -712,12 +732,12 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7" -"@babel/plugin-transform-parameters@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz#a1721f55b99b736511cb7e0152f61f17688f331f" - integrity sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw== +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-property-literals@^7.16.7": version "7.16.7" @@ -726,27 +746,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-regenerator@^7.16.7": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz#0a33c3a61cf47f45ed3232903683a0afd2d3460c" - integrity sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ== +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== dependencies: + "@babel/helper-plugin-utils" "^7.17.12" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz#1d798e078f7c5958eec952059c460b220a63f586" - integrity sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg== +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-runtime@^7.5.5": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz#0a2e08b5e2b2d95c4b1d3b3371a2180617455b70" - integrity sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A== + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" + integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== dependencies: "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" @@ -759,12 +780,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-spread@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz#a303e2122f9f12e0105daeedd0f30fb197d8ff44" - integrity sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg== +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" "@babel/plugin-transform-sticky-regex@^7.16.7": @@ -774,19 +795,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-template-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz#f3d1c45d28967c8e80f53666fc9c3e50618217ab" - integrity sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA== +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-typeof-symbol@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz#9cdbe622582c21368bd482b660ba87d5545d4f7e" - integrity sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ== +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-unicode-escapes@^7.16.7": version "7.16.7" @@ -804,36 +825,37 @@ "@babel/helper-plugin-utils" "^7.16.7" "@babel/preset-env@^7.11.0": - version "7.16.11" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.16.11.tgz#5dd88fd885fae36f88fd7c8342475c9f0abe2982" - integrity sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g== + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== dependencies: - "@babel/compat-data" "^7.16.8" - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-plugin-utils" "^7.17.12" "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.16.7" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-async-generator-functions" "^7.16.8" - "@babel/plugin-proposal-class-properties" "^7.16.7" - "@babel/plugin-proposal-class-static-block" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.16.7" - "@babel/plugin-proposal-json-strings" "^7.16.7" - "@babel/plugin-proposal-logical-assignment-operators" "^7.16.7" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.16.7" - "@babel/plugin-proposal-private-methods" "^7.16.11" - "@babel/plugin-proposal-private-property-in-object" "^7.16.7" - "@babel/plugin-proposal-unicode-property-regex" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -843,44 +865,44 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.16.7" - "@babel/plugin-transform-async-to-generator" "^7.16.8" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.16.7" - "@babel/plugin-transform-classes" "^7.16.7" - "@babel/plugin-transform-computed-properties" "^7.16.7" - "@babel/plugin-transform-destructuring" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.18.1" "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.16.7" - "@babel/plugin-transform-modules-commonjs" "^7.16.8" - "@babel/plugin-transform-modules-systemjs" "^7.16.7" - "@babel/plugin-transform-modules-umd" "^7.16.7" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.16.8" - "@babel/plugin-transform-new-target" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.16.7" - "@babel/plugin-transform-reserved-words" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.18.0" + "@babel/plugin-transform-reserved-words" "^7.17.12" "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.16.7" - "@babel/plugin-transform-typeof-symbol" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.18.2" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" "@babel/plugin-transform-unicode-escapes" "^7.16.7" "@babel/plugin-transform-unicode-regex" "^7.16.7" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.16.8" + "@babel/types" "^7.18.2" babel-plugin-polyfill-corejs2 "^0.3.0" babel-plugin-polyfill-corejs3 "^0.5.0" babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.20.2" + core-js-compat "^3.22.1" semver "^6.3.0" "@babel/preset-modules@^0.1.5": @@ -895,17 +917,17 @@ esutils "^2.0.2" "@babel/runtime-corejs3@^7.10.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz#3d02d0161f0fbf3ada8e88159375af97690f4055" - integrity sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw== + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" + integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" "@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.17.9.tgz#d19fbf802d01a8cb6cf053a64e472d42c434ba72" - integrity sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg== + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== dependencies: regenerator-runtime "^0.13.4" @@ -918,26 +940,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" - integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== +"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" + integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-environment-visitor" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.18.0" + "@babel/types" "^7.18.2" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -971,19 +993,17 @@ "@beehiveinnovation/rain-protocol@beehive-innovation/rain-protocol#develop": version "0.0.16" - resolved "https://codeload.github.com/beehive-innovation/rain-protocol/tar.gz/2dd7102e9addf0662bc0aef2a6aacb8b82edf089" + resolved "https://codeload.github.com/beehive-innovation/rain-protocol/tar.gz/760e43f0ccc6b51b858c09e3e64f4409d09d1d4f" dependencies: "@beehiveinnovation/balancer-core" "0.0.7" "@beehiveinnovation/configurable-rights-pool" "0.0.1" "@openzeppelin/contracts" "^4.3.3" "@openzeppelin/contracts-upgradeable" "^4.4.1" -"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#e590ce7ef673224afba04c43384a278a9500500d": +"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#af9a3f638d8084d96cbf6898c035920544647879": version "0.0.16" - resolved "git+https://github.com/beehive-innovation/rain-protocol.git#e590ce7ef673224afba04c43384a278a9500500d" + resolved "git+https://github.com/beehive-innovation/rain-protocol.git#af9a3f638d8084d96cbf6898c035920544647879" dependencies: - "@beehiveinnovation/balancer-core" "0.0.7" - "@beehiveinnovation/configurable-rights-pool" "0.0.1" "@openzeppelin/contracts" "^4.3.3" "@openzeppelin/contracts-upgradeable" "^4.4.1" @@ -996,17 +1016,12 @@ "@openzeppelin/contracts-upgradeable" "^4.4.2" base64-sol "^1.1.0" -"@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" - integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== - -"@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" - integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: - "@cspotcode/source-map-consumer" "0.8.0" + "@jridgewell/trace-mapping" "0.3.9" "@discoveryjs/json-ext@^0.5.5": version "0.5.7" @@ -1087,7 +1102,7 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.0", "@ethereumjs/block@^3.6.2": +"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2": version "3.6.2" resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== @@ -1097,7 +1112,7 @@ ethereumjs-util "^7.1.4" merkle-patricia-tree "^4.2.4" -"@ethereumjs/blockchain@^5.5.0", "@ethereumjs/blockchain@^5.5.2": +"@ethereumjs/blockchain@^5.5.2": version "5.5.2" resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.2.tgz#1848abd9dc1ee56acf8cec4c84304d7f4667d027" integrity sha512-Jz26iJmmsQtngerW6r5BDFaew/f2mObLrRZo3rskLOx1lmtMZ8+TX/vJexmivrnWgmAsTdNWhlKUYY4thPhPig== @@ -1111,7 +1126,7 @@ lru-cache "^5.1.1" semaphore-async-await "^1.5.1" -"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": +"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": version "2.6.4" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== @@ -1130,7 +1145,7 @@ ethereumjs-util "^7.1.1" miller-rabin "^4.0.0" -"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.4.0", "@ethereumjs/tx@^3.5.1": +"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1": version "3.5.1" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== @@ -1138,7 +1153,7 @@ "@ethereumjs/common" "^2.6.3" ethereumjs-util "^7.1.4" -"@ethereumjs/vm@^5.6.0": +"@ethereumjs/vm@^5.9.0": version "5.9.0" resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.0.tgz#54e485097c6dbb42554d541ef8d84d06b7ddf12f" integrity sha512-0IRsj4IuF8lFDWVVLc4mFOImaSX8VWF8CGm3mXHG/LLlQ/Tryy/kKXMw/bU9D+Zw03CdteW+wCGqNFS6+mPjpg== @@ -1171,167 +1186,167 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" -"@ethersproject/abi@5.6.1", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.0": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.1.tgz#f7de888edeb56b0a657b672bdd1b3a1135cd14f7" - integrity sha512-0cqssYh6FXjlwKWBmLm3+zH2BNARoS5u/hxbz+LpQmcDB3w0W553h2btWui1/uZp2GBM/SI3KniTuMcYyHpA5w== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" +"@ethersproject/abi@5.6.3", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.3.tgz#2d643544abadf6e6b63150508af43475985c23db" + integrity sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" + "@ethersproject/strings" "^5.6.1" -"@ethersproject/abstract-provider@5.6.0", "@ethersproject/abstract-provider@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.0.tgz#0c4ac7054650dbd9c476cf5907f588bbb6ef3061" - integrity sha512-oPMFlKLN+g+y7a79cLK3WiLcjWFnZQtXWgnLAbHZcN3s7L4v90UHpTOrLk+m3yr0gt+/h9STTM6zrr7PM8uoRw== +"@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" + integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" + "@ethersproject/networks" "^5.6.3" "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" -"@ethersproject/abstract-signer@5.6.0", "@ethersproject/abstract-signer@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.0.tgz#9cd7ae9211c2b123a3b29bf47aab17d4d016e3e7" - integrity sha512-WOqnG0NJKtI8n0wWZPReHtaLkDByPL67tn4nBaDAhmVq8sjHTPbCdz4DRhVu/cfTOvfy9w3iq5QZ7BX7zw56BQ== +"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" + integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" -"@ethersproject/address@5.6.0", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.0.tgz#13c49836d73e7885fc148ad633afad729da25012" - integrity sha512-6nvhYXjbXsHPS+30sHZ+U4VMagFC/9zAk6Gd/h3S21YW4+yfb0WfRtaAIZ4kfM4rrVwqiy284LP0GtL5HXGLxQ== +"@ethersproject/address@5.6.1", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" -"@ethersproject/base64@5.6.0", "@ethersproject/base64@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.0.tgz#a12c4da2a6fb86d88563216b0282308fc15907c9" - integrity sha512-2Neq8wxJ9xHxCF9TUgmKeSh9BXJ6OAxWfeGWvbauPh8FuHEjamgHilllx8KkSd5ErxyHIX7Xv3Fkcud2kY9ezw== +"@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" + integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" -"@ethersproject/basex@5.6.0", "@ethersproject/basex@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.0.tgz#9ea7209bf0a1c3ddc2a90f180c3a7f0d7d2e8a69" - integrity sha512-qN4T+hQd/Md32MoJpc69rOwLYRUXwjTlhHDIeUkUmiN/JyWkkLLMoG0TqvSQKNqZOMgN5stbUYN6ILC+eD7MEQ== +"@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" + integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/properties" "^5.6.0" -"@ethersproject/bignumber@5.6.0", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.0.tgz#116c81b075c57fa765a8f3822648cf718a8a0e26" - integrity sha512-VziMaXIUHQlHJmkv1dlcd6GY2PmT0khtAqaMctCIDogxkrarMzA9L94KN1NeXqqOfFD6r0sJT3vCTOFSmZ07DA== +"@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" + integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" - bn.js "^4.11.9" + bn.js "^5.2.1" -"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.0": +"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/constants@5.6.0", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.0.tgz#55e3eb0918584d3acc0688e9958b0cedef297088" - integrity sha512-SrdaJx2bK0WQl23nSpV/b1aq293Lh0sUaZT/yYKPDKn4tlAbkH96SPJwIhwSwTsoQQZxuh1jnqsKwyymoiBdWA== +"@ethersproject/constants@5.6.1", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" + integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== dependencies: - "@ethersproject/bignumber" "^5.6.0" + "@ethersproject/bignumber" "^5.6.2" -"@ethersproject/contracts@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.0.tgz#60f2cfc7addd99a865c6c8cfbbcec76297386067" - integrity sha512-74Ge7iqTDom0NX+mux8KbRUeJgu1eHZ3iv6utv++sLJG80FVuU9HnHeKVPfjd9s3woFhaFoQGf3B3iH/FrQmgw== - dependencies: - "@ethersproject/abi" "^5.6.0" - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" +"@ethersproject/contracts@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" + integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" -"@ethersproject/hash@5.6.0", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.0.tgz#d24446a5263e02492f9808baa99b6e2b4c3429a2" - integrity sha512-fFd+k9gtczqlr0/BruWLAu7UAOas1uRRJvOR84uDf4lNZ+bTkGl366qvniUZHKtlqxBRU65MkOobkmvmpHU+jA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" +"@ethersproject/hash@5.6.1", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" + integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" + "@ethersproject/strings" "^5.6.1" -"@ethersproject/hdnode@5.6.0", "@ethersproject/hdnode@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.0.tgz#9dcbe8d629bbbcf144f2cae476337fe92d320998" - integrity sha512-61g3Jp3nwDqJcL/p4nugSyLrpl/+ChXIOtCEM8UDmWeB3JCAt5FoLdOMXQc3WWkc0oM2C0aAn6GFqqMcS/mHTw== +"@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" + integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" "@ethersproject/properties" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/wordlists" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" -"@ethersproject/json-wallets@5.6.0", "@ethersproject/json-wallets@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.0.tgz#4c2fc27f17e36c583e7a252fb938bc46f98891e5" - integrity sha512-fmh86jViB9r0ibWXTQipxpAGMiuxoqUf78oqJDlCAJXgnJF024hOOX7qVgqsjtbeoxmcLwpPsXNU0WEe/16qPQ== - dependencies: - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hdnode" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" +"@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" + integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.6.0", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.0.tgz#fea4bb47dbf8f131c2e1774a1cecbfeb9d606459" - integrity sha512-tk56BJ96mdj/ksi7HWZVWGjCq0WVl/QvfhFQNeL8fxhBlGoP+L80uDCiQcpJPd+2XxkivS3lwRm3E0CXTfol0w== +"@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" + integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" js-sha3 "0.8.0" "@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.6.0": @@ -1339,20 +1354,20 @@ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== -"@ethersproject/networks@5.6.2", "@ethersproject/networks@^5.6.0": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.2.tgz#2bacda62102c0b1fcee408315f2bed4f6fbdf336" - integrity sha512-9uEzaJY7j5wpYGTojGp8U89mSsgQLc40PCMJLMCnFXTs7nhBveZ0t7dbqWUNrepWTszDbFkYD6WlL8DKx5huHA== +"@ethersproject/networks@5.6.3", "@ethersproject/networks@^5.6.3": + version "5.6.3" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.3.tgz#3ee3ab08f315b433b50c99702eb32e0cf31f899f" + integrity sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ== dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/pbkdf2@5.6.0", "@ethersproject/pbkdf2@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.0.tgz#04fcc2d7c6bff88393f5b4237d906a192426685a" - integrity sha512-Wu1AxTgJo3T3H6MIu/eejLFok9TYoSdgwRr5oGY1LTLfmGesDoSx05pemsbrPT2gG4cQME+baTSCp5sEo2erZQ== +"@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" + integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" "@ethersproject/properties@5.6.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.6.0": version "5.6.0" @@ -1361,155 +1376,156 @@ dependencies: "@ethersproject/logger" "^5.6.0" -"@ethersproject/providers@5.6.4": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.4.tgz#1a49c211b57b0b2703c320819abbbfa35c83dff7" - integrity sha512-WAdknnaZ52hpHV3qPiJmKx401BLpup47h36Axxgre9zT+doa/4GC/Ne48ICPxTm0BqndpToHjpLP1ZnaxyE+vw== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/basex" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/hash" "^5.6.0" +"@ethersproject/providers@5.6.8": + version "5.6.8" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" + integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/base64" "^5.6.1" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.0" + "@ethersproject/networks" "^5.6.3" "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/strings" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/web" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" bech32 "1.1.4" ws "7.4.6" -"@ethersproject/random@5.6.0", "@ethersproject/random@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.0.tgz#1505d1ab6a250e0ee92f436850fa3314b2cb5ae6" - integrity sha512-si0PLcLjq+NG/XHSZz90asNf+YfKEqJGVdxoEkSukzbnBgC8rydbgbUgBbBGLeHN4kAJwUFEKsu3sCXT93YMsw== +"@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" + integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/rlp@5.6.0", "@ethersproject/rlp@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.0.tgz#55a7be01c6f5e64d6e6e7edb6061aa120962a717" - integrity sha512-dz9WR1xpcTL+9DtOT/aDO+YyxSSdO8YIS0jyZwHHSlAmnxA6cKU3TrTd4Xc/bHayctxTgGLYNuVVoiXE4tTq1g== +"@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" + integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/sha2@5.6.0", "@ethersproject/sha2@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.0.tgz#364c4c11cc753bda36f31f001628706ebadb64d9" - integrity sha512-1tNWCPFLu1n3JM9t4/kytz35DkuF9MxqkGGEHNauEbaARdm2fafnOyw1s0tIQDPKF/7bkP1u3dbrmjpn5CelyA== +"@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" + integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" hash.js "1.1.7" -"@ethersproject/signing-key@5.6.0", "@ethersproject/signing-key@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.0.tgz#4f02e3fb09e22b71e2e1d6dc4bcb5dafa69ce042" - integrity sha512-S+njkhowmLeUu/r7ir8n78OUKx63kBdMCPssePS89So1TH4hZqnWFsThEd/GiXYp9qMxVrydf7KdM9MTGPFukA== +"@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" + integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== dependencies: - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - bn.js "^4.11.9" + bn.js "^5.2.1" elliptic "6.5.4" hash.js "1.1.7" -"@ethersproject/solidity@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.0.tgz#64657362a596bf7f5630bdc921c07dd78df06dc3" - integrity sha512-YwF52vTNd50kjDzqKaoNNbC/r9kMDPq3YzDWmsjFTRBcIF1y4JCQJ8gB30wsTfHbaxgxelI5BfxQSxD/PbJOww== +"@ethersproject/solidity@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" + integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" - "@ethersproject/sha2" "^5.6.0" - "@ethersproject/strings" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" -"@ethersproject/strings@5.6.0", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.0.tgz#9891b26709153d996bf1303d39a7f4bc047878fd" - integrity sha512-uv10vTtLTZqrJuqBZR862ZQjTIa724wGPWQqZrofaPI/kUsf53TBG0I0D+hQ1qyNtllbNzaW+PDPHHUI6/65Mg== +"@ethersproject/strings@5.6.1", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" + integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/transactions@5.6.0", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.0.tgz#4b594d73a868ef6e1529a2f8f94a785e6791ae4e" - integrity sha512-4HX+VOhNjXHZyGzER6E/LVI2i6lf9ejYeWD6l4g50AdmimyuStKc39kvKf1bXWQMg7QNVh+uC7dYwtaZ02IXeg== - dependencies: - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/constants" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" +"@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" + integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" -"@ethersproject/units@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.0.tgz#e5cbb1906988f5740254a21b9ded6bd51e826d9c" - integrity sha512-tig9x0Qmh8qbo1w8/6tmtyrm/QQRviBh389EQ+d8fP4wDsBrJBf08oZfoiz1/uenKK9M78yAP4PoR7SsVoTjsw== +"@ethersproject/units@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" + integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== dependencies: - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/constants" "^5.6.0" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" -"@ethersproject/wallet@5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.0.tgz#33d11a806d783864208f348709a5a3badac8e22a" - integrity sha512-qMlSdOSTyp0MBeE+r7SUhr1jjDlC1zAXB8VD84hCnpijPQiSNbxr6GdiLXxpUs8UKzkDiNYYC5DRI3MZr+n+tg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.0" - "@ethersproject/abstract-signer" "^5.6.0" - "@ethersproject/address" "^5.6.0" - "@ethersproject/bignumber" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" - "@ethersproject/hdnode" "^5.6.0" - "@ethersproject/json-wallets" "^5.6.0" - "@ethersproject/keccak256" "^5.6.0" +"@ethersproject/wallet@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" + integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/json-wallets" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.0" - "@ethersproject/signing-key" "^5.6.0" - "@ethersproject/transactions" "^5.6.0" - "@ethersproject/wordlists" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" -"@ethersproject/web@5.6.0", "@ethersproject/web@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.0.tgz#4bf8b3cbc17055027e1a5dd3c357e37474eaaeb8" - integrity sha512-G/XHj0hV1FxI2teHRfCGvfBUHFmU+YOSbCxlAMqJklxSa7QMiHFQfAxvwY2PFqgvdkxEKwRNr/eCjfAPEm2Ctg== +"@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" + integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== dependencies: - "@ethersproject/base64" "^5.6.0" - "@ethersproject/bytes" "^5.6.0" + "@ethersproject/base64" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" + "@ethersproject/strings" "^5.6.1" -"@ethersproject/wordlists@5.6.0", "@ethersproject/wordlists@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.0.tgz#79e62c5276e091d8575f6930ba01a29218ded032" - integrity sha512-q0bxNBfIX3fUuAo9OmjlEYxP40IB8ABgb7HjEZCL5IKubzV3j30CWi2rqQbjTS2HfoyQbfINoKcTVWP4ejwR7Q== +"@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" + integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== dependencies: - "@ethersproject/bytes" "^5.6.0" - "@ethersproject/hash" "^5.6.0" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.0" + "@ethersproject/strings" "^5.6.1" "@istanbuljs/load-nyc-config@^1.0.0": version "1.1.0" @@ -1727,17 +1743,47 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/resolve-uri@^3.0.3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" - integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.11" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" - integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== -"@jridgewell/trace-mapping@^0.3.0": +"@jridgewell/trace-mapping@0.3.9": version "0.3.9" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== @@ -1745,6 +1791,14 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@metamask/eth-sig-util@^4.0.0": version "4.0.1" resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" @@ -1756,26 +1810,26 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@microsoft/api-extractor-model@7.17.2", "@microsoft/api-extractor-model@^7.0.28": - version "7.17.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.17.2.tgz#033b39a7bac4f3eee3e5ffd406d2af61cedc727e" - integrity sha512-fYfCeBeLm7jnZligC64qHiH4/vzswFLDfyPpX+uKO36OI2kIeMHrYG0zaezmuinKvE4vg1dAz38zZeDbPvBKGg== +"@microsoft/api-extractor-model@7.17.3", "@microsoft/api-extractor-model@^7.0.28": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.17.3.tgz#06899902ab1c10b85690232f21c1585cc158d983" + integrity sha512-ETslFxVEZTEK6mrOARxM34Ll2W/5H2aTk9Pe9dxsMCnthE8O/CaStV4WZAGsvvZKyjelSWgPVYGowxGVnwOMlQ== dependencies: "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.4" + "@rushstack/node-core-library" "3.45.5" "@microsoft/api-extractor@^7.22.2": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.23.0.tgz#8bd5a197e04b0ba92fb85e0f53b4d7cadd0a95b2" - integrity sha512-fbdX05RVE1EMA7nvyRHuS9nx1pryhjgURDx6pQlE/9yOXQ5PO7MpYdfWGaRsQwyYuU3+tPxgro819c0R3AK6KA== + version "7.24.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.24.2.tgz#4abb24319fa77884dab6d807388056e9cd85488e" + integrity sha512-QWZh9aQZvBAdRVK+Go8NiW8YNMN//OGiNqgA3iZ2sEy8imUqkRBCybXgmw2HkEYyPnn55CFoMKvnAHvV9+4B/A== dependencies: - "@microsoft/api-extractor-model" "7.17.2" + "@microsoft/api-extractor-model" "7.17.3" "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.4" + "@rushstack/node-core-library" "3.45.5" "@rushstack/rig-package" "0.3.11" - "@rushstack/ts-command-line" "4.10.10" + "@rushstack/ts-command-line" "4.11.0" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" @@ -1825,9 +1879,9 @@ fastq "^1.6.0" "@nomiclabs/hardhat-ethers@^2.0.3": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.5.tgz#131b0da1b71680d5a01569f916ae878229d326d3" - integrity sha512-A2gZAGB6kUvLx+kzM92HKuUF33F1FSe90L0TmkXkT2Hh0OKRpvWZURUSU2nghD2yC4DzfEZ3DftfeHGvZ2JTUw== + version "2.0.6" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.6.tgz#1c695263d5b46a375dcda48c248c4fba9dfe2fc2" + integrity sha512-q2Cjp20IB48rEn2NPjR1qxsIQBvFVYW9rFRCFq+bC4RUrn1Ljz3g4wM8uSlgIBZYBi2JMXxmOzFqHraczxq4Ng== "@nomiclabs/hardhat-waffle@^2.0.1": version "2.0.3" @@ -1915,14 +1969,14 @@ tslib "^2.3.1" "@openzeppelin/contracts-upgradeable@^4.4.1", "@openzeppelin/contracts-upgradeable@^4.4.2": - version "4.5.2" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.5.2.tgz#90d9e47bacfd8693bfad0ac8a394645575528d05" - integrity sha512-xgWZYaPlrEOQo3cBj97Ufiuv79SPd8Brh4GcFYhPgb6WvAq4ppz8dWKL6h+jLAK01rUqMRp/TS9AdXgAeNvCLA== + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz#1bf55f230f008554d4c6fe25eb165b85112108b0" + integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== "@openzeppelin/contracts@^4.3.3", "@openzeppelin/contracts@^4.4.2": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.5.0.tgz#3fd75d57de172b3743cdfc1206883f56430409cc" - integrity sha512-fdkzKPYMjrRiPK6K4y64e6GzULR7R7RwxSigHS8DDp7aWDeoReqsQI+cxHV1UuhAqX69L1lAaWDxenfP+xiqzA== + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" + integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== "@princjef/api-documenter@^1.0.2": version "1.0.2" @@ -2029,10 +2083,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.45.4": - version "3.45.4" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.4.tgz#a5e1246c462940d16a5acc667c1ffe460b514087" - integrity sha512-FMoEQWjK7nWAO2uFgV1eVpVhY9ZDGOdIIomi9zTej64cKJ+8/Nvu+ny0xKaUDEjw/ALftN2D2ml7L0RDpW/Z9g== +"@rushstack/node-core-library@3.45.5": + version "3.45.5" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.5.tgz#00f92143cc21c3ad94fcd81ba168a40ac8cb77f2" + integrity sha512-KbN7Hp9vH3bD3YJfv6RnVtzzTAwGYIBl7y2HQLY4WEQqRbvE3LgI78W9l9X+cTAXCX//p0EeoiUYNTFdqJrMZg== dependencies: "@types/node" "12.20.24" colors "~1.2.1" @@ -2052,10 +2106,10 @@ resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.10.10": - version "4.10.10" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.10.10.tgz#69da17b03ce57795b67ea2aabf7c976c81816078" - integrity sha512-F+MH7InPDXqX40qvvcEsnvPpmg566SBpfFqj2fcCh8RjM6AyOoWlXc8zx7giBD3ZN85NVAEjZAgrcLU0z+R2yg== +"@rushstack/ts-command-line@4.11.0": + version "4.11.0" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.0.tgz#4cd3b9f59b41aed600042936260fdaa55ca0184d" + integrity sha512-ptG9L0mjvJ5QtK11GsAFY+jGfsnqHDS6CY6Yw1xT7a9bhjfNYnf6UPwjV+pF6UgiucfNcMDNW9lkDLxvZKKxMg== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" @@ -2507,9 +2561,9 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" - integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== dependencies: "@babel/types" "^7.3.0" @@ -2541,9 +2595,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.1" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.1.tgz#c48251553e8759db9e656de3efc846954ac32304" - integrity sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA== + version "8.4.2" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" + integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2608,7 +2662,7 @@ "@types/json5@^0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== "@types/level-errors@*": version "3.0.0" @@ -2650,9 +2704,9 @@ form-data "^3.0.0" "@types/node@*": - version "17.0.25" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.25.tgz#527051f3c2f77aa52e5dc74e45a3da5fb2301448" - integrity sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w== + version "17.0.38" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.38.tgz#f8bb07c371ccb1903f3752872c89f44006132947" + integrity sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g== "@types/node@12.20.24": version "12.20.24" @@ -2660,14 +2714,14 @@ integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== "@types/node@^12.12.6": - version "12.20.48" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.48.tgz#55f70bd432b6515828c0298689776861b90ca4fa" - integrity sha512-4kxzqkrpwYtn6okJUcb2lfUu9ilnb3yhUOH6qX3nug8D2DupZ2drIkff2yJzYcNJVl3begnlcaBJ7tqiTTzjnQ== + version "12.20.54" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.54.tgz#38a3dff8c2a939553f2cdb85dcddc68be46c3c68" + integrity sha512-CFMnEPkSXWALI73t1oIWyb8QOmVrp6RruAqIx349sd+1ImaFwzlKcz55mwrx/yLyOyz1gkq/UKuNOigt27PXqg== "@types/node@^16.11.11": - version "16.11.27" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.27.tgz#5da19383bdbeda99bc0d09cfbb88cab7297ebc51" - integrity sha512-C1pD3kgLoZ56Uuy5lhfOxie4aZlA3UMGLX9rXteq4WitEZH6Rl80mwactt9QG0w0gLFlN/kLBTFnGXtDVWvWQw== + version "16.11.38" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.38.tgz#be0edd097b23eace6c471c525a74b3f98803017f" + integrity sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2682,9 +2736,9 @@ "@types/node" "*" "@types/prettier@^2.1.1", "@types/prettier@^2.1.5": - version "2.6.0" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" - integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== + version "2.6.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" + integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== "@types/resolve@1.17.1": version "1.17.1" @@ -2775,84 +2829,84 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^5.4.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.20.0.tgz#022531a639640ff3faafaf251d1ce00a2ef000a1" - integrity sha512-fapGzoxilCn3sBtC6NtXZX6+P/Hef7VDbyfGqTTpzYydwhlkevB+0vE0EnmHPVTVSy68GUncyJ/2PcrFBeCo5Q== - dependencies: - "@typescript-eslint/scope-manager" "5.20.0" - "@typescript-eslint/type-utils" "5.20.0" - "@typescript-eslint/utils" "5.20.0" - debug "^4.3.2" + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz#23d82a4f21aaafd8f69dbab7e716323bb6695cc8" + integrity sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ== + dependencies: + "@typescript-eslint/scope-manager" "5.27.0" + "@typescript-eslint/type-utils" "5.27.0" + "@typescript-eslint/utils" "5.27.0" + debug "^4.3.4" functional-red-black-tree "^1.0.1" - ignore "^5.1.8" + ignore "^5.2.0" regexpp "^3.2.0" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" "@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^5.4.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.20.0.tgz#4991c4ee0344315c2afc2a62f156565f689c8d0b" - integrity sha512-UWKibrCZQCYvobmu3/N8TWbEeo/EPQbS41Ux1F9XqPzGuV7pfg6n50ZrFo6hryynD8qOTTfLHtHjjdQtxJ0h/w== - dependencies: - "@typescript-eslint/scope-manager" "5.20.0" - "@typescript-eslint/types" "5.20.0" - "@typescript-eslint/typescript-estree" "5.20.0" - debug "^4.3.2" - -"@typescript-eslint/scope-manager@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.20.0.tgz#79c7fb8598d2942e45b3c881ced95319818c7980" - integrity sha512-h9KtuPZ4D/JuX7rpp1iKg3zOH0WNEa+ZIXwpW/KWmEFDxlA/HSfCMhiyF1HS/drTICjIbpA6OqkAhrP/zkCStg== - dependencies: - "@typescript-eslint/types" "5.20.0" - "@typescript-eslint/visitor-keys" "5.20.0" - -"@typescript-eslint/type-utils@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.20.0.tgz#151c21cbe9a378a34685735036e5ddfc00223be3" - integrity sha512-WxNrCwYB3N/m8ceyoGCgbLmuZwupvzN0rE8NBuwnl7APgjv24ZJIjkNzoFBXPRCGzLNkoU/WfanW0exvp/+3Iw== - dependencies: - "@typescript-eslint/utils" "5.20.0" - debug "^4.3.2" + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.0.tgz#62bb091ed5cf9c7e126e80021bb563dcf36b6b12" + integrity sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA== + dependencies: + "@typescript-eslint/scope-manager" "5.27.0" + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/typescript-estree" "5.27.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz#a272178f613050ed62f51f69aae1e19e870a8bbb" + integrity sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g== + dependencies: + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/visitor-keys" "5.27.0" + +"@typescript-eslint/type-utils@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz#36fd95f6747412251d79c795b586ba766cf0974b" + integrity sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g== + dependencies: + "@typescript-eslint/utils" "5.27.0" + debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.20.0.tgz#fa39c3c2aa786568302318f1cb51fcf64258c20c" - integrity sha512-+d8wprF9GyvPwtoB4CxBAR/s0rpP25XKgnOvMf/gMXYDvlUC3rPFHupdTQ/ow9vn7UDe5rX02ovGYQbv/IUCbg== +"@typescript-eslint/types@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.0.tgz#c3f44b9dda6177a9554f94a74745ca495ba9c001" + integrity sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A== -"@typescript-eslint/typescript-estree@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.20.0.tgz#ab73686ab18c8781bbf249c9459a55dc9417d6b0" - integrity sha512-36xLjP/+bXusLMrT9fMMYy1KJAGgHhlER2TqpUVDYUQg4w0q/NW/sg4UGAgVwAqb8V4zYg43KMUpM8vV2lve6w== +"@typescript-eslint/typescript-estree@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz#7965f5b553c634c5354a47dcce0b40b94611e995" + integrity sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ== dependencies: - "@typescript-eslint/types" "5.20.0" - "@typescript-eslint/visitor-keys" "5.20.0" - debug "^4.3.2" - globby "^11.0.4" + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/visitor-keys" "5.27.0" + debug "^4.3.4" + globby "^11.1.0" is-glob "^4.0.3" - semver "^7.3.5" + semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.20.0.tgz#b8e959ed11eca1b2d5414e12417fd94cae3517a5" - integrity sha512-lHONGJL1LIO12Ujyx8L8xKbwWSkoUKFSO+0wDAqGXiudWB2EO7WEUT+YZLtVbmOmSllAjLb9tpoIPwpRe5Tn6w== +"@typescript-eslint/utils@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.0.tgz#d0021cbf686467a6a9499bd0589e19665f9f7e71" + integrity sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.20.0" - "@typescript-eslint/types" "5.20.0" - "@typescript-eslint/typescript-estree" "5.20.0" + "@typescript-eslint/scope-manager" "5.27.0" + "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/typescript-estree" "5.27.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.20.0.tgz#70236b5c6b67fbaf8b2f58bf3414b76c1e826c2a" - integrity sha512-1flRpNF+0CAQkMNlTJ6L/Z5jiODG/e5+7mk6XwtPOUS3UrTz3UOiAg9jG2VtKsWI6rZQfy4C6a232QNRZTRGlg== +"@typescript-eslint/visitor-keys@5.27.0": + version "5.27.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz#97aa9a5d2f3df8215e6d3b77f9d214a24db269bd" + integrity sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA== dependencies: - "@typescript-eslint/types" "5.20.0" - eslint-visitor-keys "^3.0.0" + "@typescript-eslint/types" "5.27.0" + eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": version "1.1.2" @@ -3113,9 +3167,9 @@ acorn@^7.1.0, acorn@^7.1.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== adm-zip@^0.4.16: version "0.4.16" @@ -3125,7 +3179,7 @@ adm-zip@^0.4.16: aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== aes-js@^3.1.1, aes-js@^3.1.2: version "3.1.2" @@ -3186,11 +3240,16 @@ ajv@^8.0.0, ajv@^8.6.3, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" -ansi-colors@4.1.1, ansi-colors@^4.1.1: +ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -3206,7 +3265,7 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: ansi-regex@^2.0.0, ansi-regex@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== ansi-regex@^3.0.0: version "3.0.1" @@ -3226,7 +3285,7 @@ ansi-regex@^5.0.0, ansi-regex@^5.0.1: ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== ansi-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" @@ -3263,7 +3322,7 @@ anymatch@^3.0.3, anymatch@~3.1.2: archy@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== arg@^4.1.0: version "4.1.3" @@ -3293,7 +3352,7 @@ aria-query@^4.2.2: arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== arr-flatten@^1.1.0: version "1.1.0" @@ -3303,12 +3362,12 @@ arr-flatten@^1.1.0: arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== array-back@^1.0.3, array-back@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs= + integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== dependencies: typical "^2.6.0" @@ -3332,16 +3391,16 @@ array-back@^4.0.1, array-back@^4.0.2: array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== -array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.4.tgz#f5b493162c760f3539631f005ba2bb46acb45ba9" - integrity sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw== +array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" get-intrinsic "^1.1.1" is-string "^1.0.7" @@ -3353,7 +3412,7 @@ array-union@^2.1.0: array-unique@^0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== array.prototype.flat@^1.2.5: version "1.3.0" @@ -3365,7 +3424,7 @@ array.prototype.flat@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" -array.prototype.flatmap@^1.2.5: +array.prototype.flatmap@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== @@ -3375,6 +3434,17 @@ array.prototype.flatmap@^1.2.5: es-abstract "^1.19.2" es-shim-unscopables "^1.0.0" +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -3395,7 +3465,7 @@ asn1@~0.2.3: assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== assertion-error@^1.1.0: version "1.1.0" @@ -3405,12 +3475,12 @@ assertion-error@^1.1.0: assign-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== ast-types-flow@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== astral-regex@^1.0.0: version "1.0.0" @@ -3439,7 +3509,7 @@ async@2.6.2: async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: version "2.6.4" @@ -3451,7 +3521,7 @@ async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== asyncro@^3.0.0: version "3.0.0" @@ -3476,7 +3546,7 @@ await-semaphore@^0.1.3: aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== aws4@^1.8.0: version "1.11.0" @@ -3484,9 +3554,9 @@ aws4@^1.8.0: integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== axe-core@^4.3.5: - version "4.4.1" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.1.tgz#7dbdc25989298f9ad006645cd396782443757413" - integrity sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw== + version "4.4.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" + integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== axios@0.19.2: version "0.19.2" @@ -3503,7 +3573,7 @@ axobject-query@^2.2.0: babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== dependencies: chalk "^1.1.3" esutils "^2.0.2" @@ -3563,7 +3633,7 @@ babel-generator@^6.26.0: babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha1-zORReto1b0IgvK6KAsKzRvmlZmQ= + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== dependencies: babel-helper-explode-assignable-expression "^6.24.1" babel-runtime "^6.22.0" @@ -3572,7 +3642,7 @@ babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: babel-helper-call-delegate@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340= + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -3582,7 +3652,7 @@ babel-helper-call-delegate@^6.24.1: babel-helper-define-map@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8= + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.26.0" @@ -3592,7 +3662,7 @@ babel-helper-define-map@^6.24.1: babel-helper-explode-assignable-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha1-8luCz33BBDPFX3BZLVdGQArCLKo= + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== dependencies: babel-runtime "^6.22.0" babel-traverse "^6.24.1" @@ -3601,7 +3671,7 @@ babel-helper-explode-assignable-expression@^6.24.1: babel-helper-function-name@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha1-00dbjAPtmCQqJbSDUasYOZ01gKk= + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== dependencies: babel-helper-get-function-arity "^6.24.1" babel-runtime "^6.22.0" @@ -3612,7 +3682,7 @@ babel-helper-function-name@^6.24.1: babel-helper-get-function-arity@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0= + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -3620,7 +3690,7 @@ babel-helper-get-function-arity@^6.24.1: babel-helper-hoist-variables@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha1-HssnaJydJVE+rbyZFKc/VAi+enY= + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -3628,7 +3698,7 @@ babel-helper-hoist-variables@^6.24.1: babel-helper-optimise-call-expression@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc= + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -3636,7 +3706,7 @@ babel-helper-optimise-call-expression@^6.24.1: babel-helper-regex@^6.24.1: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI= + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== dependencies: babel-runtime "^6.26.0" babel-types "^6.26.0" @@ -3645,7 +3715,7 @@ babel-helper-regex@^6.24.1: babel-helper-remap-async-to-generator@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha1-XsWBgnrXI/7N04HxySg5BnbkVRs= + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -3656,7 +3726,7 @@ babel-helper-remap-async-to-generator@^6.24.1: babel-helper-replace-supers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha1-v22/5Dk40XNpohPKiov3S2qQqxo= + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== dependencies: babel-helper-optimise-call-expression "^6.24.1" babel-messages "^6.23.0" @@ -3668,7 +3738,7 @@ babel-helper-replace-supers@^6.24.1: babel-helpers@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI= + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -3690,7 +3760,7 @@ babel-jest@^27.5.1: babel-messages@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha1-8830cDhYA1sqKVHG7F7fbGLyYw4= + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== dependencies: babel-runtime "^6.22.0" @@ -3702,7 +3772,7 @@ babel-plugin-annotate-pure-calls@^0.4.0: babel-plugin-check-es2015-constants@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o= + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== dependencies: babel-runtime "^6.22.0" @@ -3782,22 +3852,22 @@ babel-plugin-polyfill-regenerator@^0.3.0: babel-plugin-syntax-async-functions@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU= + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== babel-plugin-syntax-exponentiation-operator@^6.8.0: version "6.13.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4= + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== babel-plugin-syntax-trailing-function-commas@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E= + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== dependencies: babel-helper-remap-async-to-generator "^6.24.1" babel-plugin-syntax-async-functions "^6.8.0" @@ -3806,21 +3876,21 @@ babel-plugin-transform-async-to-generator@^6.22.0: babel-plugin-transform-es2015-arrow-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE= + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha1-u8UbSflk1wy42OC5ToICRs46YUE= + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-block-scoping@^6.23.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8= + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== dependencies: babel-runtime "^6.26.0" babel-template "^6.26.0" @@ -3831,7 +3901,7 @@ babel-plugin-transform-es2015-block-scoping@^6.23.0: babel-plugin-transform-es2015-classes@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha1-WkxYpQyclGHlZLSyo7+ryXolhNs= + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== dependencies: babel-helper-define-map "^6.24.1" babel-helper-function-name "^6.24.1" @@ -3846,7 +3916,7 @@ babel-plugin-transform-es2015-classes@^6.23.0: babel-plugin-transform-es2015-computed-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM= + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== dependencies: babel-runtime "^6.22.0" babel-template "^6.24.1" @@ -3854,14 +3924,14 @@ babel-plugin-transform-es2015-computed-properties@^6.22.0: babel-plugin-transform-es2015-destructuring@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha1-mXux8auWf2gtKwh2/jWNYOdlxW0= + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-duplicate-keys@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha1-c+s9MQypaePvnskcU3QabxV2Qj4= + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -3869,14 +3939,14 @@ babel-plugin-transform-es2015-duplicate-keys@^6.22.0: babel-plugin-transform-es2015-for-of@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE= + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-function-name@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha1-g0yJhTvDaxrw86TF26qU/Y6sqos= + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== dependencies: babel-helper-function-name "^6.24.1" babel-runtime "^6.22.0" @@ -3885,14 +3955,14 @@ babel-plugin-transform-es2015-function-name@^6.22.0: babel-plugin-transform-es2015-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha1-T1SgLWzWbPkVKAAZox0xklN3yi4= + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ= + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== dependencies: babel-plugin-transform-es2015-modules-commonjs "^6.24.1" babel-runtime "^6.22.0" @@ -3911,7 +3981,7 @@ babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-e babel-plugin-transform-es2015-modules-systemjs@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM= + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== dependencies: babel-helper-hoist-variables "^6.24.1" babel-runtime "^6.22.0" @@ -3920,7 +3990,7 @@ babel-plugin-transform-es2015-modules-systemjs@^6.23.0: babel-plugin-transform-es2015-modules-umd@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha1-rJl+YoXNGO1hdq22B9YCNErThGg= + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== dependencies: babel-plugin-transform-es2015-modules-amd "^6.24.1" babel-runtime "^6.22.0" @@ -3929,7 +3999,7 @@ babel-plugin-transform-es2015-modules-umd@^6.23.0: babel-plugin-transform-es2015-object-super@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha1-JM72muIcuDp/hgPa0CH1cusnj40= + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== dependencies: babel-helper-replace-supers "^6.24.1" babel-runtime "^6.22.0" @@ -3937,7 +4007,7 @@ babel-plugin-transform-es2015-object-super@^6.22.0: babel-plugin-transform-es2015-parameters@^6.23.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha1-V6w1GrScrxSpfNE7CfZv3wpiXys= + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== dependencies: babel-helper-call-delegate "^6.24.1" babel-helper-get-function-arity "^6.24.1" @@ -3949,7 +4019,7 @@ babel-plugin-transform-es2015-parameters@^6.23.0: babel-plugin-transform-es2015-shorthand-properties@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha1-JPh11nIch2YbvZmkYi5R8U3jiqA= + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -3957,14 +4027,14 @@ babel-plugin-transform-es2015-shorthand-properties@^6.22.0: babel-plugin-transform-es2015-spread@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha1-1taKmfia7cRTbIGlQujdnxdG+NE= + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-sticky-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha1-AMHNsaynERLN8M9hJsLta0V8zbw= + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -3973,21 +4043,21 @@ babel-plugin-transform-es2015-sticky-regex@^6.22.0: babel-plugin-transform-es2015-template-literals@^6.22.0: version "6.22.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha1-qEs0UPfp+PH2g51taH2oS7EjbY0= + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-typeof-symbol@^6.23.0: version "6.23.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I= + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== dependencies: babel-runtime "^6.22.0" babel-plugin-transform-es2015-unicode-regex@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha1-04sS9C6nMj9yk4fxinxa4frrNek= + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== dependencies: babel-helper-regex "^6.24.1" babel-runtime "^6.22.0" @@ -3996,7 +4066,7 @@ babel-plugin-transform-es2015-unicode-regex@^6.22.0: babel-plugin-transform-exponentiation-operator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha1-KrDJx/MJj6SJB3cruBP+QejeOg4= + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== dependencies: babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" babel-plugin-syntax-exponentiation-operator "^6.8.0" @@ -4005,7 +4075,7 @@ babel-plugin-transform-exponentiation-operator@^6.22.0: babel-plugin-transform-regenerator@^6.22.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8= + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== dependencies: regenerator-transform "^0.10.0" @@ -4017,7 +4087,7 @@ babel-plugin-transform-rename-import@^2.3.0: babel-plugin-transform-strict-mode@^6.24.1: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g= + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== dependencies: babel-runtime "^6.22.0" babel-types "^6.24.1" @@ -4087,7 +4157,7 @@ babel-preset-jest@^27.5.1: babel-register@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha1-btAhFz4vy0htestFxgCahW9kcHE= + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== dependencies: babel-core "^6.26.0" babel-runtime "^6.26.0" @@ -4100,7 +4170,7 @@ babel-register@^6.26.0: babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== dependencies: core-js "^2.4.0" regenerator-runtime "^0.11.0" @@ -4108,7 +4178,7 @@ babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: babel-template@^6.24.1, babel-template@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI= + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== dependencies: babel-runtime "^6.26.0" babel-traverse "^6.26.0" @@ -4119,7 +4189,7 @@ babel-template@^6.24.1, babel-template@^6.26.0: babel-traverse@^6.24.1, babel-traverse@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4= + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== dependencies: babel-code-frame "^6.26.0" babel-messages "^6.23.0" @@ -4134,7 +4204,7 @@ babel-traverse@^6.24.1, babel-traverse@^6.26.0: babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== dependencies: babel-runtime "^6.26.0" esutils "^2.0.2" @@ -4144,7 +4214,7 @@ babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: babelify@^7.3.0: version "7.3.0" resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" - integrity sha1-qlau3nBn/XvVSWZu4W3ChQh+iOU= + integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== dependencies: babel-core "^6.0.14" object-assign "^4.0.0" @@ -4157,7 +4227,7 @@ babylon@^6.18.0: backoff@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha1-9hbtqdPktmuMp/ynn2lXIsX44m8= + integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== dependencies: precond "0.2" @@ -4199,7 +4269,7 @@ base@^0.11.1: bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== dependencies: tweetnacl "^0.14.3" @@ -4242,35 +4312,19 @@ bluebird@^3.5.0, bluebird@^3.5.2: bn.js@4.11.6: version "4.11.6" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha1-UzRK2xRhehP26N0s4okF0cC6MhU= + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" - integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== - -body-parser@1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" - integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - on-finished "~2.3.0" - qs "6.9.7" - raw-body "2.4.3" - type-is "~1.6.18" +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== -body-parser@^1.16.0: +body-parser@1.20.0, body-parser@^1.16.0: version "1.20.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== @@ -4291,7 +4345,7 @@ body-parser@^1.16.0: boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== brace-expansion@^1.1.7: version "1.1.11" @@ -4327,7 +4381,7 @@ braces@^3.0.2, braces@~3.0.2: brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-process-hrtime@^1.0.0: version "1.0.0" @@ -4401,15 +4455,15 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.5, browserslist@^4.20.2: - version "4.20.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" - integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.2" + node-releases "^2.0.3" picocolors "^1.0.0" bs-logger@0.x: @@ -4422,7 +4476,7 @@ bs-logger@0.x: bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" @@ -4455,12 +4509,12 @@ buffer-from@^1.0.0: buffer-to-arraybuffer@^0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha1-YGSkD6dutDxyOrqe+PbhIW0QURo= + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== buffer-xor@^2.0.1: version "2.0.2" @@ -4485,9 +4539,9 @@ bufferutil@^4.0.1: node-gyp-build "^4.3.0" builtin-modules@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== bytes-iec@^3.1.1: version "3.1.1" @@ -4502,14 +4556,14 @@ bytes@3.1.2: bytewise-core@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha1-P7QQx+kVWOsasiqCg0V3qmvWHUI= + integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== dependencies: typewise-core "^1.2" bytewise@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha1-HRPL/3F65xWAlKqIGzXQgbOHJT4= + integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== dependencies: bytewise-core "^1.2.2" typewise "^1.0.3" @@ -4545,7 +4599,7 @@ cacheable-request@^6.0.0: cachedown@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" - integrity sha1-1D8DbkUQaWsxJG19sx6/D3rDLRU= + integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== dependencies: abstract-leveldown "^2.4.1" lru-cache "^3.2.0" @@ -4561,14 +4615,14 @@ call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: caller-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= + integrity sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g== dependencies: callsites "^0.2.0" callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + integrity sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A== callsites@^3.0.0: version "3.1.0" @@ -4578,7 +4632,7 @@ callsites@^3.0.0: camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" @@ -4600,15 +4654,15 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001317: - version "1.0.30001332" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" - integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001332: + version "1.0.30001346" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz#e895551b46b9cc9cc9de852facd42f04839a8fbe" + integrity sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ== caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== chai@^4.3.4: version "4.3.6" @@ -4626,7 +4680,7 @@ chai@^4.3.4: chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== dependencies: ansi-styles "^2.2.1" escape-string-regexp "^1.0.2" @@ -4667,7 +4721,7 @@ char-regex@^1.0.2: chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + integrity sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg== chardet@^0.7.0: version "0.7.0" @@ -4677,17 +4731,17 @@ chardet@^0.7.0: charenc@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== checkpoint-store@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY= + integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== dependencies: functional-red-black-tree "^1.0.1" @@ -4722,9 +4776,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + version "3.3.1" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" + integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== ci-job-number@^1.2.2: version "1.2.2" @@ -4758,7 +4812,7 @@ circular-json@^0.3.1: circular@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/circular/-/circular-1.0.5.tgz#7da77af98bbde9ce4b5b358cd556b5dded2d3149" - integrity sha1-fad6+Yu96c5LWzWM1Va13e0tMUk= + integrity sha512-n4Sspha+wxUl5zeA3JYp1zFCjsLz2VfXIe2gRKNQBrIX+7iPdGcCGZOF8W8IULtllZ/aejXtySfdFFt1wy/3JQ== cjs-module-lexer@^1.0.0: version "1.2.2" @@ -4807,7 +4861,7 @@ cli-color@^1.4.0: cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== dependencies: restore-cursor "^2.0.0" @@ -4821,7 +4875,7 @@ cli-cursor@^3.1.0: cli-logger@0.5.40: version "0.5.40" resolved "https://registry.yarnpkg.com/cli-logger/-/cli-logger-0.5.40.tgz#097f0e11b072c7c698a26c47f588a29c20b48b0b" - integrity sha1-CX8OEbByx8aYomxH9YiinCC0iws= + integrity sha512-piXVCa0TLm/+A7xdVEhw7t4OSrsmJaZIekWcoGrVMY1bHtLJTXgiNzgHlKT0EVHQ14sCKWorQJazU7UWgZhXOQ== dependencies: circular "^1.0.5" cli-util "~1.1.27" @@ -4829,7 +4883,7 @@ cli-logger@0.5.40: cli-regexp@~0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/cli-regexp/-/cli-regexp-0.1.2.tgz#6bcd93b09fb2ed1025d30a1155d5997954a53512" - integrity sha1-a82TsJ+y7RAl0woRVdWZeVSlNRI= + integrity sha512-L++cAQ5g0Nu6aV56B3uaR+c7jEGSAa4WApY1ZN7XiD8niJ5jRfXE/qvMwgz3uZBG0rft4hJS75Vpz2F3mSm4Mg== cli-spinners@^1.3.1: version "1.3.1" @@ -4844,7 +4898,7 @@ cli-spinners@^2.2.0: cli-util@~1.1.27: version "1.1.27" resolved "https://registry.yarnpkg.com/cli-util/-/cli-util-1.1.27.tgz#42d69e36a040a321fc9cf851c1513cadc5093054" - integrity sha1-QtaeNqBAoyH8nPhRwVE8rcUJMFQ= + integrity sha512-Z6+zI0kIrqf9Oi+PmUm8J9AELp8bTf2vCLYseudYtdOPNJvzpNiExO95aHIm477IbPdu/8SE9Wvc/M1kJl4Anw== dependencies: cli-regexp "~0.1.0" @@ -4861,7 +4915,7 @@ cli-width@^3.0.0: cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -4888,29 +4942,29 @@ cliui@^7.0.2: clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== dependencies: mimic-response "^1.0.0" clone@2.1.2, clone@^2.0.0, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== clone@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== collect-v8-coverage@^1.0.0: version "1.0.1" @@ -4920,7 +4974,7 @@ collect-v8-coverage@^1.0.0: collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== dependencies: map-visit "^1.0.0" object-visit "^1.0.0" @@ -4942,7 +4996,7 @@ color-convert@^2.0.1: color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" @@ -5023,7 +5077,7 @@ commander@^7.2.0: commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== component-emitter@^1.2.1: version "1.3.0" @@ -5033,7 +5087,7 @@ component-emitter@^1.2.1: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.5.1: version "1.6.2" @@ -5053,7 +5107,7 @@ confusing-browser-globals@^1.0.9: contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + integrity sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== content-disposition@0.5.4: version "0.5.4" @@ -5086,9 +5140,14 @@ convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, cookie-signature@1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== -cookie@0.4.2, cookie@^0.4.1: +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.1: version "0.4.2" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== @@ -5101,20 +5160,20 @@ cookiejar@^2.1.1: copy-descriptor@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== -core-js-compat@^3.20.2, core-js-compat@^3.21.0: - version "3.22.2" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.2.tgz#eec621eb276518efcf718d0a6d9d042c3d0cad48" - integrity sha512-Fns9lU06ZJ07pdfmPMu7OnkIKGPKDzXKIiuGlSvHHapwqMUF2QnnsWwtueFZtSyZEilP0o6iUeHQwpn7LxtLUw== +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.22.8" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.8.tgz#46fa34ce1ddf742acd7f95f575f66bbb21e05d62" + integrity sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg== dependencies: - browserslist "^4.20.2" + browserslist "^4.20.3" semver "7.0.0" core-js-pure@^3.0.1, core-js-pure@^3.20.2: - version "3.22.2" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.2.tgz#c10bffdc3028d25c2aae505819a05543db61544f" - integrity sha512-Lb+/XT4WC4PaCWWtZpNPaXmjiNDUe5CJuUtbkMrIM1kb1T/jJoAIp+bkVP/r5lHzMr+ZAAF8XHp7+my6Ol0ysQ== + version "3.22.8" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.8.tgz#f2157793b58719196ccf9673cc14f3683adc0957" + integrity sha512-bOxbZIy9S5n4OVH63XaLVXZ49QKicjowDx/UELyJ68vxfCRpYsbyh/WNZNfEfAk+ekA8vSjt+gCDpvh672bc3w== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -5124,7 +5183,7 @@ core-js@^2.4.0, core-js@^2.5.0: core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== core-util-is@~1.0.0: version "1.0.3" @@ -5222,7 +5281,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.3: crypt@0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== crypto-browserify@3.12.0: version "3.12.0" @@ -5301,26 +5360,26 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.7: - version "5.2.7" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz#791e3603fb8f1b46717ac53b47e3c418e950f5f3" - integrity sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA== +cssnano-preset-default@^5.2.10: + version "5.2.10" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.10.tgz#6dfffe6cc3b13f3bb356a42c49a334a98700ef45" + integrity sha512-H8TJRhTjBKVOPltp9vr9El9I+IfYsOMhmXdK0LwdvwJcxYX9oWkY7ctacWusgPWAgQq1vt/WO8v+uqpfLnM7QA== dependencies: css-declaration-sorter "^6.2.2" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.0" - postcss-discard-comments "^5.1.1" + postcss-convert-values "^5.1.2" + postcss-discard-comments "^5.1.2" postcss-discard-duplicates "^5.1.0" postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.4" - postcss-merge-rules "^5.1.1" + postcss-merge-longhand "^5.1.5" + postcss-merge-rules "^5.1.2" postcss-minify-font-values "^5.1.0" postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.2" - postcss-minify-selectors "^5.2.0" + postcss-minify-params "^5.1.3" + postcss-minify-selectors "^5.2.1" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" postcss-normalize-positions "^5.1.0" @@ -5342,11 +5401,11 @@ cssnano-utils@^3.1.0: integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.0.6: - version "5.1.7" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.7.tgz#99858bef6c76c9240f0cdc9239570bc7db8368be" - integrity sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg== + version "5.1.10" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.10.tgz#fc6ddd9a4d7d238f320634326ed814cf0abf6e1c" + integrity sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA== dependencies: - cssnano-preset-default "^5.2.7" + cssnano-preset-default "^5.2.10" lilconfig "^2.0.3" yaml "^1.10.2" @@ -5374,6 +5433,11 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" +csv-writer@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/csv-writer/-/csv-writer-1.6.0.tgz#d0cea44b6b4d7d3baa2ecc6f3f7209233514bcf9" + integrity sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g== + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -5390,7 +5454,7 @@ damerau-levenshtein@^1.0.7: dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== dependencies: assert-plus "^1.0.0" @@ -5406,7 +5470,7 @@ data-urls@^2.0.0: debug-log@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" - integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= + integrity sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA== debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: version "2.6.9" @@ -5422,7 +5486,7 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== @@ -5453,7 +5517,7 @@ debug@^3.1.0, debug@^3.2.7: decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== decamelize@^4.0.0: version "4.0.0" @@ -5468,19 +5532,19 @@ decimal.js@^10.2.0, decimal.js@^10.2.1: decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== decompress-response@^3.2.0, decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== dependencies: mimic-response "^1.0.0" dedent@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== deep-eql@^3.0.1: version "3.0.1" @@ -5519,7 +5583,7 @@ deepmerge@^4.2.2: defaults@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== dependencies: clone "^1.0.2" @@ -5556,7 +5620,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3: +define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== @@ -5567,14 +5631,14 @@ define-properties@^1.1.3: define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== dependencies: is-descriptor "^0.1.0" define-property@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== dependencies: is-descriptor "^1.0.0" @@ -5589,7 +5653,7 @@ define-property@^2.0.2: defined@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== deglob@^2.1.0: version "2.1.1" @@ -5611,18 +5675,13 @@ delay@4.3.0: delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - des.js@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" @@ -5636,15 +5695,10 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== -destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha1-920GQ1LN9Docts5hnE7jqUdd4gg= + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== dependencies: repeating "^2.0.0" @@ -5692,7 +5746,7 @@ dir-glob@^3.0.1: doctrine@1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + integrity sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg== dependencies: esutils "^2.0.2" isarray "^1.0.0" @@ -5768,7 +5822,7 @@ dotignore@~0.1.2: duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== duplexer@^0.1.2: version "0.1.2" @@ -5778,7 +5832,7 @@ duplexer@^0.1.2: ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== dependencies: jsbn "~0.1.0" safer-buffer "^2.1.0" @@ -5786,12 +5840,12 @@ ecc-jsbn@~0.1.1: ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.84: - version "1.4.118" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974" - integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.118: + version "1.4.144" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.144.tgz#9a5d1f41452ecc65b686d529ae919248da44f406" + integrity sha512-R3RV3rU1xWwFJlSClVWDvARaOk6VUO/FubHLodIASDB3Mc2dzuWvNdfOgH9bwHUTqT79u92qw60NWfwUdzAqdg== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -5829,7 +5883,7 @@ emoji-regex@^9.2.2: encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== encoding-down@5.0.4, encoding-down@~5.0.0: version "5.0.4" @@ -5866,7 +5920,7 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" -enhanced-resolve@^5.9.2: +enhanced-resolve@^5.9.3: version "5.9.3" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== @@ -5905,17 +5959,19 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.19.1, es-abstract@^1.19.2: - version "1.19.5" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.19.5.tgz#a2cb01eb87f724e815b278b0dd0d00f36ca9a7f1" - integrity sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA== +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== dependencies: call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + function.prototype.name "^1.1.5" get-intrinsic "^1.1.1" get-symbol-description "^1.0.0" has "^1.0.3" + has-property-descriptors "^1.0.0" has-symbols "^1.0.3" internal-slot "^1.0.3" is-callable "^1.2.4" @@ -5927,9 +5983,15 @@ es-abstract@^1.19.1, es-abstract@^1.19.2: object-inspect "^1.12.0" object-keys "^1.1.1" object.assign "^4.1.2" - string.prototype.trimend "^1.0.4" - string.prototype.trimstart "^1.0.4" - unbox-primitive "^1.0.1" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-module-lexer@^0.9.0: version "0.9.3" @@ -5964,7 +6026,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@ es6-iterator@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== dependencies: d "1" es5-ext "^0.10.35" @@ -5996,7 +6058,7 @@ escalade@^3.1.1: escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" @@ -6006,7 +6068,7 @@ escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== escape-string-regexp@^2.0.0: version "2.0.0" @@ -6163,24 +6225,24 @@ eslint-plugin-react-hooks@^2.2.0: integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== eslint-plugin-react@^7.14.3: - version "7.29.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz#4717de5227f55f3801a5fd51a16a4fa22b5914d2" - integrity sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ== + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" + integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== dependencies: - array-includes "^3.1.4" - array.prototype.flatmap "^1.2.5" + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" doctrine "^2.1.0" estraverse "^5.3.0" jsx-ast-utils "^2.4.1 || ^3.0.0" minimatch "^3.1.2" object.entries "^1.1.5" object.fromentries "^2.0.5" - object.hasown "^1.1.0" + object.hasown "^1.1.1" object.values "^1.1.5" prop-types "^15.8.1" resolve "^2.0.0-next.3" semver "^6.3.0" - string.prototype.matchall "^4.0.6" + string.prototype.matchall "^4.0.7" eslint-plugin-react@~7.11.1: version "7.11.1" @@ -6238,7 +6300,7 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.0.0: +eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== @@ -6395,7 +6457,7 @@ esutils@^2.0.2: etag@~1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== eth-block-tracker@^3.0.0: version "3.0.1" @@ -6425,7 +6487,7 @@ eth-block-tracker@^4.4.2: eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha1-IprEbsqG1S4MmR58sq74P/D2i88= + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== dependencies: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" @@ -6497,7 +6559,7 @@ eth-lib@^0.1.26: eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha1-1nQdkAAQa1FRDHLbktY2VFam2l4= + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== dependencies: json-rpc-random-id "^1.0.0" xtend "^4.0.1" @@ -6524,7 +6586,7 @@ eth-sig-util@3.0.0: eth-sig-util@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha1-jZWCAsftuq6Dlwf7pvCf8ydgYhA= + integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== dependencies: ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" ethereumjs-util "^5.1.1" @@ -6580,7 +6642,7 @@ ethereum-common@0.2.0: ethereum-common@^0.0.18: version "0.0.18" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha1-L9w1dvIykDNYl26znaeDIT/5Uj8= + integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: version "0.1.3" @@ -6622,7 +6684,7 @@ ethereum-waffle@^3.4.0: ethereumjs-abi@0.6.5: version "0.6.5" resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha1-WmN+8Wq0NHP6cqKa2QhxQFs/UkE= + integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== dependencies: bn.js "^4.10.0" ethereumjs-util "^4.3.0" @@ -6761,7 +6823,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.3, ethereumjs-util@^7.1.4: +ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4: version "7.1.4" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== @@ -6855,45 +6917,45 @@ ethers@^4.0.40: xmlhttprequest "1.8.0" ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: - version "5.6.4" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.4.tgz#23629e9a7d4bc5802dfb53d4da420d738744b53c" - integrity sha512-62UIfxAQXdf67TeeOaoOoPctm5hUlYgfd0iW3wxfj7qRYKDcvvy0f+sJ3W2/Pyx77R8dblvejA8jokj+lS+ATQ== - dependencies: - "@ethersproject/abi" "5.6.1" - "@ethersproject/abstract-provider" "5.6.0" - "@ethersproject/abstract-signer" "5.6.0" - "@ethersproject/address" "5.6.0" - "@ethersproject/base64" "5.6.0" - "@ethersproject/basex" "5.6.0" - "@ethersproject/bignumber" "5.6.0" + version "5.6.8" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.8.tgz#d36b816b4896341a80a8bbd2a44e8cb6e9b98dd4" + integrity sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w== + dependencies: + "@ethersproject/abi" "5.6.3" + "@ethersproject/abstract-provider" "5.6.1" + "@ethersproject/abstract-signer" "5.6.2" + "@ethersproject/address" "5.6.1" + "@ethersproject/base64" "5.6.1" + "@ethersproject/basex" "5.6.1" + "@ethersproject/bignumber" "5.6.2" "@ethersproject/bytes" "5.6.1" - "@ethersproject/constants" "5.6.0" - "@ethersproject/contracts" "5.6.0" - "@ethersproject/hash" "5.6.0" - "@ethersproject/hdnode" "5.6.0" - "@ethersproject/json-wallets" "5.6.0" - "@ethersproject/keccak256" "5.6.0" + "@ethersproject/constants" "5.6.1" + "@ethersproject/contracts" "5.6.2" + "@ethersproject/hash" "5.6.1" + "@ethersproject/hdnode" "5.6.2" + "@ethersproject/json-wallets" "5.6.1" + "@ethersproject/keccak256" "5.6.1" "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.2" - "@ethersproject/pbkdf2" "5.6.0" + "@ethersproject/networks" "5.6.3" + "@ethersproject/pbkdf2" "5.6.1" "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.4" - "@ethersproject/random" "5.6.0" - "@ethersproject/rlp" "5.6.0" - "@ethersproject/sha2" "5.6.0" - "@ethersproject/signing-key" "5.6.0" - "@ethersproject/solidity" "5.6.0" - "@ethersproject/strings" "5.6.0" - "@ethersproject/transactions" "5.6.0" - "@ethersproject/units" "5.6.0" - "@ethersproject/wallet" "5.6.0" - "@ethersproject/web" "5.6.0" - "@ethersproject/wordlists" "5.6.0" + "@ethersproject/providers" "5.6.8" + "@ethersproject/random" "5.6.1" + "@ethersproject/rlp" "5.6.1" + "@ethersproject/sha2" "5.6.1" + "@ethersproject/signing-key" "5.6.2" + "@ethersproject/solidity" "5.6.1" + "@ethersproject/strings" "5.6.1" + "@ethersproject/transactions" "5.6.2" + "@ethersproject/units" "5.6.1" + "@ethersproject/wallet" "5.6.2" + "@ethersproject/web" "5.6.1" + "@ethersproject/wordlists" "5.6.1" ethjs-unit@0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== dependencies: bn.js "4.11.6" number-to-bn "1.7.0" @@ -6909,7 +6971,7 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: event-emitter@^0.3.5: version "0.3.5" resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk= + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== dependencies: d "1" es5-ext "~0.10.14" @@ -6983,12 +7045,12 @@ execa@^5.0.0: exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== dependencies: debug "^2.3.3" define-property "^0.2.5" @@ -7009,37 +7071,38 @@ expect@^27.5.1: jest-message-util "^27.5.1" express@^4.14.0: - version "4.17.3" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" - integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== dependencies: accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.2" + body-parser "1.20.0" content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.2" + cookie "0.5.0" cookie-signature "1.0.6" debug "2.6.9" - depd "~1.1.2" + depd "2.0.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" - finalhandler "~1.1.2" + finalhandler "1.2.0" fresh "0.5.2" + http-errors "2.0.0" merge-descriptors "1.0.1" methods "~1.1.2" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" path-to-regexp "0.1.7" proxy-addr "~2.0.7" - qs "6.9.7" + qs "6.10.3" range-parser "~1.2.1" safe-buffer "5.2.1" - send "0.17.2" - serve-static "1.14.2" + send "0.18.0" + serve-static "1.15.0" setprototypeof "1.2.0" - statuses "~1.5.0" + statuses "2.0.1" type-is "~1.6.18" utils-merge "1.0.1" vary "~1.1.2" @@ -7054,14 +7117,14 @@ ext@^1.1.2: extend-shallow@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== dependencies: is-extendable "^0.1.0" extend-shallow@^3.0.0, extend-shallow@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== dependencies: assign-symbols "^1.0.0" is-extendable "^1.0.1" @@ -7106,7 +7169,7 @@ extglob@^2.0.4: extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== extsprintf@^1.2.0: version "1.4.1" @@ -7116,7 +7179,7 @@ extsprintf@^1.2.0: fake-merkle-patricia-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha1-S4w6z7Ugr635hgsfFM2M40As3dM= + integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== dependencies: checkpoint-store "^1.1.0" @@ -7149,7 +7212,7 @@ fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== fast-safe-stringify@^2.0.6: version "2.1.1" @@ -7173,14 +7236,14 @@ fb-watchman@^2.0.0: fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha1-rjzl9zLGReq4fkroeTQUcJsjmJM= + integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== dependencies: node-fetch "~1.7.1" figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== dependencies: escape-string-regexp "^1.0.5" @@ -7194,7 +7257,7 @@ figures@^3.0.0: file-entry-cache@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= + integrity sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w== dependencies: flat-cache "^1.2.1" object-assign "^4.0.1" @@ -7209,7 +7272,7 @@ file-entry-cache@^5.0.1: fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== dependencies: extend-shallow "^2.0.1" is-number "^3.0.0" @@ -7223,17 +7286,17 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" - integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== dependencies: debug "2.6.9" encodeurl "~1.0.2" escape-html "~1.0.3" - on-finished "~2.3.0" + on-finished "2.4.1" parseurl "~1.3.3" - statuses "~1.5.0" + statuses "2.0.1" unpipe "~1.0.0" find-cache-dir@^3.3.1: @@ -7248,7 +7311,7 @@ find-cache-dir@^3.3.1: find-replace@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A= + integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== dependencies: array-back "^1.0.4" test-value "^2.1.0" @@ -7276,7 +7339,7 @@ find-up@5.0.0: find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== dependencies: path-exists "^2.0.0" pinkie-promise "^2.0.0" @@ -7284,7 +7347,7 @@ find-up@^1.0.0: find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" @@ -7350,7 +7413,7 @@ flatted@^2.0.0: flow-stoplight@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= + integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== follow-redirects@1.5.10: version "1.5.10" @@ -7360,9 +7423,9 @@ follow-redirects@1.5.10: debug "=3.1.0" follow-redirects@^1.12.1: - version "1.14.9" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.9.tgz#dd4ea157de7bfaf9ea9b3fbd85aa16951f78d8d7" - integrity sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w== + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" @@ -7374,12 +7437,12 @@ for-each@^0.3.3, for-each@~0.3.3: for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== form-data@^3.0.0: version "3.0.1" @@ -7417,14 +7480,14 @@ fp-ts@^1.0.0: fragment-cache@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== dependencies: map-cache "^0.2.2" fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1: version "8.1.0" @@ -7438,7 +7501,7 @@ fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1: fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A= + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== dependencies: graceful-fs "^4.1.2" jsonfile "^2.1.0" @@ -7484,7 +7547,7 @@ fs-minipass@^1.2.7: fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" @@ -7496,10 +7559,20 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== functions-have-names@^1.2.2: version "1.2.3" @@ -7570,7 +7643,7 @@ get-caller-file@^2.0.1, get-caller-file@^2.0.5: get-func-name@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: version "1.1.1" @@ -7594,7 +7667,7 @@ get-stdin@^6.0.0: get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" @@ -7626,12 +7699,12 @@ get-symbol-description@^1.0.0: get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== dependencies: assert-plus "^1.0.0" @@ -7647,7 +7720,7 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== -glob@7.2.0, glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: +glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== @@ -7659,6 +7732,18 @@ glob@7.2.0, glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glo once "^1.3.0" path-is-absolute "^1.0.0" +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + global@^4.4.0, global@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" @@ -7689,7 +7774,7 @@ globalyzer@0.1.0: resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== -globby@^11.0.1, globby@^11.0.4: +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: version "11.1.0" resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== @@ -7763,7 +7848,7 @@ gzip-size@^6.0.0: har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== har-validator@~5.1.3: version "5.1.5" @@ -7774,15 +7859,15 @@ har-validator@~5.1.3: har-schema "^2.0.0" hardhat@^2.7.0: - version "2.9.3" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.3.tgz#4759dc3c468c7d15f34334ca1be7d59b04e47b1e" - integrity sha512-7Vw99RbYbMZ15UzegOR/nqIYIqddZXvLwJGaX5sX4G5bydILnbjmDU6g3jMKJSiArEixS3vHAEaOs5CW1JQ3hg== - dependencies: - "@ethereumjs/block" "^3.6.0" - "@ethereumjs/blockchain" "^5.5.0" - "@ethereumjs/common" "^2.6.0" - "@ethereumjs/tx" "^3.4.0" - "@ethereumjs/vm" "^5.6.0" + version "2.9.7" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.7.tgz#b31302b089486ec1c13c5a3dff18fe71f955f33b" + integrity sha512-PVSgTlM4Mtc4HNEoISpcM6rRNAK3ngqhxUaTmSw9eCtuVmtxTK86Tqnuq4zNPmlrtcuReXry9k3LGEnk2gJgbA== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/blockchain" "^5.5.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/tx" "^3.5.1" + "@ethereumjs/vm" "^5.9.0" "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" "@sentry/node" "^5.18.1" @@ -7801,15 +7886,15 @@ hardhat@^2.7.0: env-paths "^2.2.0" ethereum-cryptography "^0.1.2" ethereumjs-abi "^0.6.8" - ethereumjs-util "^7.1.3" + ethereumjs-util "^7.1.4" find-up "^2.1.0" fp-ts "1.19.3" fs-extra "^7.0.1" - glob "^7.1.3" + glob "7.2.0" immutable "^4.0.0-rc.12" io-ts "1.10.4" lodash "^4.17.11" - merkle-patricia-tree "^4.2.2" + merkle-patricia-tree "^4.2.4" mnemonist "^0.38.0" mocha "^9.2.0" p-map "^4.0.0" @@ -7830,11 +7915,11 @@ hardhat@^2.7.0: has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== dependencies: ansi-regex "^2.0.0" -has-bigints@^1.0.1: +has-bigints@^1.0.1, has-bigints@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== @@ -7842,7 +7927,7 @@ has-bigints@^1.0.1: has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" @@ -7883,7 +7968,7 @@ has-tostringtag@^1.0.0: has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== dependencies: get-value "^2.0.3" has-values "^0.1.4" @@ -7892,7 +7977,7 @@ has-value@^0.3.1: has-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== dependencies: get-value "^2.0.6" has-values "^1.0.0" @@ -7901,12 +7986,12 @@ has-value@^1.0.0: has-values@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== has-values@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== dependencies: is-number "^3.0.0" kind-of "^4.0.0" @@ -7951,7 +8036,7 @@ he@1.2.0: heap@0.2.6: version "0.2.6" resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= + integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== highcharts@^9.2.2: version "9.3.3" @@ -7961,7 +8046,7 @@ highcharts@^9.2.2: hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" minimalistic-assert "^1.0.0" @@ -7970,7 +8055,7 @@ hmac-drbg@^1.0.1: home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha1-42w/LSyufXRqhX440Y1fMqeILbg= + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== dependencies: os-homedir "^1.0.0" os-tmpdir "^1.0.1" @@ -7997,17 +8082,6 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -http-errors@1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -8022,7 +8096,7 @@ http-errors@2.0.0: http-https@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs= + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== http-proxy-agent@^4.0.1: version "4.0.1" @@ -8036,7 +8110,7 @@ http-proxy-agent@^4.0.1: http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== dependencies: assert-plus "^1.0.0" jsprim "^1.2.2" @@ -8061,9 +8135,9 @@ human-signals@^2.1.0: integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== humanize-duration@^3.15.3: - version "3.27.1" - resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.1.tgz#2cd4ea4b03bd92184aee6d90d77a8f3d7628df69" - integrity sha512-jCVkMl+EaM80rrMrAPl96SGG4NRac53UyI1o/yAzebDntEY6K6/Fj2HOjdPg8omTqIe5Y0wPBai2q5xXrIbarA== + version "3.27.2" + resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.2.tgz#4b4e565bec098d22c9a54344e16156d1c649f160" + integrity sha512-A15OmA3FLFRnehvF4ZMocsxTZYvHq4ze7L+AgR1DeHw0xC9vMd4euInY83uqGU9/XXKNnVIEeKc1R8G8nKqtzg== husky@^7.0.4: version "7.0.4" @@ -8111,7 +8185,7 @@ ignore@^4.0.2, ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -ignore@^5.1.8, ignore@^5.2.0: +ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -8124,12 +8198,12 @@ immediate@^3.2.3: immediate@~3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== immutable@^4.0.0-rc.12: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== import-fresh@^3.0.0, import-fresh@^3.1.0: version "3.3.0" @@ -8155,7 +8229,7 @@ import-local@^3.0.2: imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== indent-string@^4.0.0: version "4.0.0" @@ -8165,7 +8239,7 @@ indent-string@^4.0.0: inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" wrappy "1" @@ -8237,7 +8311,7 @@ invariant@^2.2.2: invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== invert-kv@^2.0.0: version "2.0.0" @@ -8259,7 +8333,7 @@ ipaddr.js@1.9.1: is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== dependencies: kind-of "^3.0.2" @@ -8281,7 +8355,7 @@ is-arguments@^1.0.4: is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== is-bigint@^1.0.1: version "1.0.4" @@ -8332,7 +8406,7 @@ is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.8.1: is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== dependencies: kind-of "^3.0.2" @@ -8376,7 +8450,7 @@ is-docker@^2.0.0, is-docker@^2.1.1: is-extendable@^0.1.0, is-extendable@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== is-extendable@^1.0.1: version "1.0.1" @@ -8388,7 +8462,7 @@ is-extendable@^1.0.1: is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-finite@^1.0.0: version "1.1.0" @@ -8398,19 +8472,19 @@ is-finite@^1.0.0: is-fn@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw= + integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== dependencies: number-is-nan "^1.0.0" is-fullwidth-code-point@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== is-fullwidth-code-point@^3.0.0: version "3.0.0" @@ -8437,7 +8511,7 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== is-interactive@^1.0.0: version "1.0.0" @@ -8447,7 +8521,7 @@ is-interactive@^1.0.0: is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== is-negative-zero@^2.0.2: version "2.0.2" @@ -8464,7 +8538,7 @@ is-number-object@^1.0.4: is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== dependencies: kind-of "^3.0.2" @@ -8481,7 +8555,7 @@ is-object@^1.0.1: is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== is-plain-obj@^2.1.0: version "2.1.0" @@ -8540,7 +8614,7 @@ is-shared-array-buffer@^1.0.2: is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== is-stream@^2.0.0: version "2.0.1" @@ -8564,7 +8638,7 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== is-unicode-supported@^0.1.0: version "0.1.0" @@ -8579,7 +8653,7 @@ is-url@^1.2.4: is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== is-weakref@^1.0.2: version "1.0.2" @@ -8603,34 +8677,34 @@ is-wsl@^2.1.1, is-wsl@^2.2.0: isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== isobject@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== dependencies: isarray "1.0.0" isobject@^3.0.0, isobject@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: version "3.2.0" @@ -9168,7 +9242,7 @@ jest@^25.3.0, jest@^27.3.1: jju@~1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha1-o6vicYryQaKykE+EpiWXDzia4yo= + integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== jora@^1.0.0-beta.5: version "1.0.0-beta.6" @@ -9185,7 +9259,7 @@ jpjs@^1.2.1: js-sha3@0.5.7, js-sha3@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc= + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" @@ -9200,7 +9274,7 @@ js-sha3@0.8.0, js-sha3@^0.8.0: js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== js-yaml@4.1.0: version "4.1.0" @@ -9220,7 +9294,7 @@ js-yaml@^3.11.0, js-yaml@^3.13.1: jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== jsdom@^16.6.0: version "16.7.0" @@ -9258,7 +9332,7 @@ jsdom@^16.6.0: jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha1-RsP+yMGJKxKwgz25vHYiF226s0s= + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== jsesc@^2.5.1: version "2.5.2" @@ -9268,19 +9342,19 @@ jsesc@^2.5.1: jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== json-buffer@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== -json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== -json-parse-even-better-errors@^2.3.0: +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== @@ -9308,14 +9382,14 @@ json-rpc-engine@^5.1.3: json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" - integrity sha1-p6+cICg4tekFxyUOVH8a/3cligI= + integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== dependencies: inherits "^2.0.1" json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== json-schema-traverse@^0.4.1: version "0.4.1" @@ -9335,19 +9409,19 @@ json-schema@0.4.0: json-stable-stringify-without-jsonify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json-stable-stringify@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= + integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== dependencies: jsonify "~0.0.0" json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== json5@2.x, json5@^2.2.1: version "2.2.1" @@ -9357,7 +9431,7 @@ json5@2.x, json5@^2.2.1: json5@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== json5@^1.0.1: version "1.0.1" @@ -9369,14 +9443,14 @@ json5@^1.0.1: jsonfile@^2.1.0: version "2.4.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha1-NzaitCi4e72gzIO1P6PWM6NcKug= + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" @@ -9392,7 +9466,7 @@ jsonfile@^6.0.1: jsonify@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== jsprim@^1.2.2: version "1.4.2" @@ -9413,9 +9487,9 @@ jsx-ast-utils@^2.0.1: object.assign "^4.1.0" "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz#6ab1e52c71dfc0c0707008a91729a9491fe9f76c" - integrity sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw== + version "3.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" + integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== dependencies: array-includes "^3.1.4" object.assign "^4.1.2" @@ -9447,14 +9521,14 @@ keyv@^3.0.0: kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== dependencies: is-buffer "^1.1.5" kind-of@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== dependencies: is-buffer "^1.1.5" @@ -9478,7 +9552,7 @@ klaw-sync@^6.0.0: klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha1-QIhDO0azsbolnXh4XY6W9zugJDk= + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== optionalDependencies: graceful-fs "^4.1.9" @@ -9495,14 +9569,14 @@ language-subtag-registry@~0.3.2: language-tags@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha1-0yHbxNowuovzAk4ED6XBRmH5GTo= + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== dependencies: language-subtag-registry "~0.3.2" lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== dependencies: invert-kv "^1.0.0" @@ -9563,7 +9637,7 @@ level-iterator-stream@^2.0.3: level-iterator-stream@~1.3.0: version "1.3.1" resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0= + integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== dependencies: inherits "^2.0.1" level-errors "^1.0.3" @@ -9653,7 +9727,7 @@ level-supports@~1.0.0: level-ws@0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos= + integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== dependencies: readable-stream "~1.0.15" xtend "~2.1.1" @@ -9718,7 +9792,7 @@ leven@^3.1.0: levn@^0.3.0, levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== dependencies: prelude-ls "~1.1.2" type-check "~0.3.2" @@ -9736,7 +9810,7 @@ lines-and-columns@^1.1.6: load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -9747,7 +9821,7 @@ load-json-file@^1.0.0: load-json-file@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== dependencies: graceful-fs "^4.1.2" parse-json "^2.2.0" @@ -9757,7 +9831,7 @@ load-json-file@^2.0.0: load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== dependencies: graceful-fs "^4.1.2" parse-json "^4.0.0" @@ -9772,7 +9846,7 @@ loader-runner@^4.2.0: locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" path-exists "^3.0.0" @@ -9802,37 +9876,37 @@ locate-path@^6.0.0: lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== lodash.camelcase@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== lodash.flatmap@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= + integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== lodash.memoize@4.x, lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== lodash.merge@^4.6.2: version "4.6.2" @@ -9842,7 +9916,7 @@ lodash.merge@^4.6.2: lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== lodash@4.17.20: version "4.17.20" @@ -9872,7 +9946,7 @@ log-symbols@^3.0.0: log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== dependencies: ansi-escapes "^3.0.0" cli-cursor "^2.0.0" @@ -9881,12 +9955,12 @@ log-update@^2.3.0: looper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - integrity sha1-Zs0Md0rz1P7axTeU90LbVtqPCew= + integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== looper@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha1-LvpUw7HLq6m5Su4uWRSwvlf7t0k= + integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== loose-envify@^1.0.0, loose-envify@^1.4.0: version "1.4.0" @@ -9929,7 +10003,7 @@ lru-cache@5.1.1, lru-cache@^5.1.1: lru-cache@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - integrity sha1-cXibO39Tmb7IVl3aOKow0qCX7+4= + integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== dependencies: pseudomap "^1.0.1" @@ -9943,24 +10017,24 @@ lru-cache@^6.0.0: lru-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha1-Jzi9nw089PhEkMVzbEhpmsYyzaM= + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== dependencies: es5-ext "~0.10.2" lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0= + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== ltgt@^2.1.2, ltgt@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== ltgt@~2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" - integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= + integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== magic-string@^0.25.2, magic-string@^0.25.7: version "0.25.9" @@ -9998,12 +10072,12 @@ map-age-cleaner@^0.1.1: map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== dependencies: object-visit "^1.0.0" @@ -10038,7 +10112,7 @@ mdn-data@2.0.14: media-typer@0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== mem@^4.0.0: version "4.3.0" @@ -10052,7 +10126,7 @@ mem@^4.0.0: memdown@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha1-tOThkhdGZP+65BNhqlAPMRnv4hU= + integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== dependencies: abstract-leveldown "~2.7.1" functional-red-black-tree "^1.0.1" @@ -10102,12 +10176,12 @@ memoizee@^0.4.14: memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== merge-stream@^2.0.0: version "2.0.0" @@ -10146,7 +10220,7 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4: +merkle-patricia-tree@^4.2.4: version "4.2.4" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== @@ -10161,7 +10235,7 @@ merkle-patricia-tree@^4.2.2, merkle-patricia-tree@^4.2.4: methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== micromatch@^3.1.4: version "3.1.10" @@ -10233,7 +10307,7 @@ mimic-response@^1.0.0, mimic-response@^1.0.1: min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU= + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== dependencies: dom-walk "^0.1.0" @@ -10245,7 +10319,7 @@ minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: minimalistic-crypto-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== minimatch@4.2.1: version "4.2.1" @@ -10254,7 +10328,7 @@ minimatch@4.2.1: dependencies: brace-expansion "^1.1.7" -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.2: +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== @@ -10292,7 +10366,7 @@ mixin-deep@^1.2.0: mkdirp-promise@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE= + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== dependencies: mkdirp "*" @@ -10358,7 +10432,7 @@ mri@^1.1.0: ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== ms@2.1.2: version "2.1.2" @@ -10413,7 +10487,7 @@ multihashes@^0.4.15, multihashes@~0.4.15: mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== mute-stream@0.0.8: version "0.0.8" @@ -10423,17 +10497,17 @@ mute-stream@0.0.8: nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== nanoid@3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== -nanoid@^3.1.30, nanoid@^3.3.1: - version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" - integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== +nanoid@^3.1.30, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== nanomatch@^1.2.9: version "1.2.13" @@ -10462,7 +10536,7 @@ nanospinner@^0.4.0: natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== negotiator@0.6.3: version "0.6.3" @@ -10520,12 +10594,12 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" - integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== +node-releases@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== normalize-package-data@^2.3.2: version "2.5.0" @@ -10555,7 +10629,7 @@ normalize-url@^6.0.1: npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== dependencies: path-key "^2.0.0" @@ -10567,21 +10641,21 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: path-key "^3.0.0" nth-check@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: boolbase "^1.0.0" number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== number-to-bn@1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA= + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== dependencies: bn.js "4.11.6" strip-hex-prefix "1.0.0" @@ -10599,21 +10673,21 @@ oauth-sign@~0.9.0: object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-copy@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== dependencies: copy-descriptor "^0.1.0" define-property "^0.2.5" kind-of "^3.0.3" object-inspect@^1.12.0, object-inspect@^1.9.0, object-inspect@~1.12.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== object-is@^1.0.1: version "1.1.5" @@ -10631,12 +10705,12 @@ object-keys@^1.1.1: object-keys@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== dependencies: isobject "^3.0.0" @@ -10669,26 +10743,27 @@ object.fromentries@^2.0.5: es-abstract "^1.19.1" object.getownpropertydescriptors@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz#b223cf38e17fefb97a63c10c91df72ccb386df9e" - integrity sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw== + version "2.1.4" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== dependencies: + array.prototype.reduce "^1.0.4" call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.20.1" -object.hasown@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.0.tgz#7232ed266f34d197d15cac5880232f7a4790afe5" - integrity sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg== +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== dependencies: - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== dependencies: isobject "^3.0.1" @@ -10702,14 +10777,14 @@ object.values@^1.1.5: es-abstract "^1.19.1" obliterator@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.3.tgz#17a7840d562c7c61eb399f4905f0e4d3b22d1d3f" - integrity sha512-qN5lHhArxl/789Bp3XCpssAYy7cvOdRzxzflmGEJaiipAT2b/USr1XvKjYyssPOwQ/3KjV1e8Ed9po9rie6E6A== + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== oboe@2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY= + integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== dependencies: http-https "^1.0.0" @@ -10720,24 +10795,17 @@ on-finished@2.4.1: dependencies: ee-first "1.1.1" -on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== dependencies: mimic-fn "^1.0.0" @@ -10794,12 +10862,12 @@ ora@^4.0.3: os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== os-locale@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== dependencies: lcid "^1.0.0" @@ -10815,7 +10883,7 @@ os-locale@^3.1.0: os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-cancelable@^0.3.0: version "0.3.0" @@ -10830,12 +10898,12 @@ p-cancelable@^1.0.0: p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== p-is-promise@^2.0.0: version "2.1.0" @@ -10866,7 +10934,7 @@ p-limit@^3.0.2: p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" @@ -10901,14 +10969,14 @@ p-map@^4.0.0: p-timeout@^1.1.1: version "1.2.1" resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= + integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== dependencies: p-finally "^1.0.0" p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== p-try@^2.0.0: version "2.2.0" @@ -10941,14 +11009,14 @@ parse-headers@^2.0.0: parse-json@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== dependencies: error-ex "^1.2.0" parse-json@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== dependencies: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" @@ -10984,7 +11052,7 @@ pascal-case@^3.1.1: pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== patch-package@6.2.2: version "6.2.2" @@ -11031,14 +11099,14 @@ path-browserify@^1.0.0: path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== dependencies: pinkie-promise "^2.0.0" path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" @@ -11048,17 +11116,17 @@ path-exists@^4.0.0: path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== path-key@^3.0.0, path-key@^3.1.0: version "3.1.1" @@ -11073,12 +11141,12 @@ path-parse@^1.0.6, path-parse@^1.0.7: path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== path-type@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== dependencies: graceful-fs "^4.1.2" pify "^2.0.0" @@ -11087,7 +11155,7 @@ path-type@^1.0.0: path-type@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== dependencies: pify "^2.0.0" @@ -11115,7 +11183,7 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== picocolors@^1.0.0: version "1.0.0" @@ -11130,24 +11198,24 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatc pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== pify@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== dependencies: pinkie "^2.0.0" pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== pirates@^4.0.4: version "4.0.5" @@ -11157,7 +11225,7 @@ pirates@^4.0.4: pkg-conf@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" - integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= + integrity sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g== dependencies: find-up "^2.0.0" load-json-file "^4.0.0" @@ -11165,7 +11233,7 @@ pkg-conf@^2.0.0: pkg-config@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" - integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q= + integrity sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw== dependencies: debug-log "^1.0.0" find-root "^1.0.0" @@ -11186,7 +11254,7 @@ pluralize@^7.0.0: posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== postcss-calc@^8.2.3: version "8.2.4" @@ -11206,17 +11274,18 @@ postcss-colormin@^5.3.0: colord "^2.9.1" postcss-value-parser "^4.2.0" -postcss-convert-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz#f8d3abe40b4ce4b1470702a0706343eac17e7c10" - integrity sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g== +postcss-convert-values@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab" + integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== dependencies: + browserslist "^4.20.3" postcss-value-parser "^4.2.0" -postcss-discard-comments@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz#e90019e1a0e5b99de05f63516ce640bd0df3d369" - integrity sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ== +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== postcss-discard-duplicates@^5.1.0: version "5.1.0" @@ -11233,18 +11302,18 @@ postcss-discard-overridden@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -postcss-merge-longhand@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz#0f46f8753989a33260efc47de9a0cdc571f2ec5c" - integrity sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA== +postcss-merge-longhand@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz#b0e03bee3b964336f5f33c4fc8eacae608e91c05" + integrity sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w== dependencies: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" -postcss-merge-rules@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz#d327b221cd07540bcc8d9ff84446d8b404d00162" - integrity sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww== +postcss-merge-rules@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5" + integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== dependencies: browserslist "^4.16.6" caniuse-api "^3.0.0" @@ -11267,19 +11336,19 @@ postcss-minify-gradients@^5.1.1: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-params@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz#77e250780c64198289c954884ebe3ee4481c3b1c" - integrity sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g== +postcss-minify-params@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" + integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== dependencies: browserslist "^4.16.6" cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" -postcss-minify-selectors@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz#17c2be233e12b28ffa8a421a02fc8b839825536c" - integrity sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA== +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== dependencies: postcss-selector-parser "^6.0.5" @@ -11426,11 +11495,11 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== postcss@^8.3.5, postcss@^8.4.7: - version "8.4.12" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.12.tgz#1e7de78733b28970fa4743f7da6f3763648b1905" - integrity sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg== + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== dependencies: - nanoid "^3.3.1" + nanoid "^3.3.4" picocolors "^1.0.0" source-map-js "^1.0.2" @@ -11442,22 +11511,22 @@ postinstall-postinstall@^2.1.0: precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw= + integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== prepend-http@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== prepend-http@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== prettier-linter-helpers@^1.0.0: version "1.0.0" @@ -11508,7 +11577,7 @@ process-nextick-args@~2.0.0: process@^0.11.10: version "0.11.10" resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== progress-estimator@^0.2.2: version "0.2.2" @@ -11528,7 +11597,7 @@ progress@^2.0.0: promise-to-callback@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha1-XSp0kBC/tn2WNZj805YHRqaP7vc= + integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== dependencies: is-fn "^1.0.0" set-immediate-shim "^1.0.1" @@ -11561,12 +11630,12 @@ proxy-addr@~2.0.7: prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== pseudomap@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.28, psl@^1.1.33: version "1.8.0" @@ -11588,7 +11657,7 @@ public-encrypt@^4.0.0: pull-cat@^1.1.9: version "1.1.11" resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - integrity sha1-tkLdElXaN2pwa220+pYvX9t0wxs= + integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== pull-defer@^0.2.2: version "0.2.3" @@ -11611,7 +11680,7 @@ pull-level@^2.0.3: pull-live@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" - integrity sha1-pOzuAeMwFV6RJLu89HYfIbOPUfU= + integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== dependencies: pull-cat "^1.1.9" pull-stream "^3.4.0" @@ -11619,7 +11688,7 @@ pull-live@^1.0.1: pull-pushable@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" - integrity sha1-Xy867UethpGfAbEqLpnW8b13ZYE= + integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: version "3.6.14" @@ -11629,7 +11698,7 @@ pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: pull-window@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - integrity sha1-/DuG/uvRkgx64pdpHiP3BfiFUvA= + integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== dependencies: looper "^2.0.0" @@ -11644,12 +11713,12 @@ pump@^3.0.0: punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== punycode@2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0= + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" @@ -11663,11 +11732,6 @@ qs@6.10.3, qs@^6.7.0: dependencies: side-channel "^1.0.4" -qs@6.9.7: - version "6.9.7" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" - integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== - qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -11685,7 +11749,7 @@ query-string@^5.0.1: querystring@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== queue-microtask@^1.2.2: version "1.2.3" @@ -11712,16 +11776,6 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" - integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== - dependencies: - bytes "3.1.2" - http-errors "1.8.1" - iconv-lite "0.4.24" - unpipe "1.0.0" - raw-body@2.5.1, raw-body@^2.4.1: version "2.5.1" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" @@ -11883,7 +11937,7 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1: +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: version "1.4.3" resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== @@ -12360,7 +12414,7 @@ semver@7.3.5: dependencies: lru-cache "^6.0.0" -semver@7.x, semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@~7.3.0: +semver@7.x, semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@~7.3.0: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== @@ -12377,24 +12431,24 @@ semver@~5.4.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -send@0.17.2: - version "0.17.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" - integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== dependencies: debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" + depd "2.0.0" + destroy "1.2.0" encodeurl "~1.0.2" escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "1.8.1" + http-errors "2.0.0" mime "1.6.0" ms "2.1.3" - on-finished "~2.3.0" + on-finished "2.4.1" range-parser "~1.2.1" - statuses "~1.5.0" + statuses "2.0.1" serialize-javascript@6.0.0, serialize-javascript@^6.0.0: version "6.0.0" @@ -12410,15 +12464,15 @@ serialize-javascript@^4.0.0: dependencies: randombytes "^2.1.0" -serve-static@1.14.2: - version "1.14.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" - integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.2" + send "0.18.0" servify@^0.1.12: version "0.1.12" @@ -12719,7 +12773,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= @@ -12729,7 +12783,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: +source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -12864,11 +12918,6 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - stream-to-pull-stream@^1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" @@ -12943,7 +12992,7 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string.prototype.matchall@^4.0.6: +string.prototype.matchall@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== @@ -12958,29 +13007,31 @@ string.prototype.matchall@^4.0.6: side-channel "^1.0.4" string.prototype.trim@~1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.5.tgz#a587bcc8bfad8cb9829a577f5de30dd170c1682c" - integrity sha512-Lnh17webJVsD6ECeovpVN17RlAKjmz4rF9S+8Y45CkMc/ufVpTkU3vZIyIC7sllQ1FCvObZnnCdNs/HXTUOTlg== + version "1.2.6" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz#824960787db37a9e24711802ed0c1d1c0254f83e" + integrity sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" + define-properties "^1.1.4" + es-abstract "^1.19.5" -string.prototype.trimend@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" - integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" -string.prototype.trimstart@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" - integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== dependencies: call-bind "^1.0.2" - define-properties "^1.1.3" + define-properties "^1.1.4" + es-abstract "^1.19.5" string_decoder@^1.1.1: version "1.3.0" @@ -13252,14 +13303,14 @@ terminal-link@^2.0.0: supports-hyperlinks "^2.0.0" terser-webpack-plugin@^5.1.3: - version "5.3.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" - integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== + version "5.3.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" + integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== dependencies: + "@jridgewell/trace-mapping" "^0.3.7" jest-worker "^27.4.5" schema-utils "^3.1.1" serialize-javascript "^6.0.0" - source-map "^0.6.1" terser "^5.7.2" terser@^4.6.2: @@ -13272,13 +13323,13 @@ terser@^4.6.2: source-map-support "~0.5.12" terser@^5.7.2: - version "5.12.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.12.1.tgz#4cf2ebed1f5bceef5c83b9f60104ac4a78b49e9c" - integrity sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ== + version "5.14.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.0.tgz#eefeec9af5153f55798180ee2617f390bdd285e2" + integrity sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g== dependencies: + "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" commander "^2.20.0" - source-map "~0.7.2" source-map-support "~0.5.20" test-exclude@^6.0.0: @@ -13474,9 +13525,9 @@ truffle-plugin-verify@^0.4.0: sol-merger "3.1.0" ts-command-line-args@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.2.1.tgz#fd6913e542099012c0ffb2496126a8f38305c7d6" - integrity sha512-mnK68QA86FYzQYTSA/rxIjT/8EpKsvQw9QkawPic8I8t0gjAOw3Oa509NIRoaY1FmH7hdrncMp7t7o+vYoceNQ== + version "2.3.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" + integrity sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g== dependencies: chalk "^4.1.0" command-line-args "^5.1.1" @@ -13514,9 +13565,9 @@ ts-generator@^0.1.1: ts-essentials "^1.0.0" ts-jest@^25.3.1, ts-jest@^27.0.7: - version "27.1.4" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" - integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ== + version "27.1.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" + integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" @@ -13528,11 +13579,11 @@ ts-jest@^25.3.1, ts-jest@^27.0.7: yargs-parser "20.x" ts-node@^10.4.0: - version "10.7.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.7.0.tgz#35d503d0fab3e2baa672a0e94f4b40653c2463f5" - integrity sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A== + version "10.8.0" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.0.tgz#3ceb5ac3e67ae8025c1950626aafbdecb55d82ce" + integrity sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA== dependencies: - "@cspotcode/source-map-support" "0.7.0" + "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" @@ -13543,7 +13594,7 @@ ts-node@^10.4.0: create-require "^1.1.0" diff "^4.0.1" make-error "^1.1.1" - v8-compile-cache-lib "^3.0.0" + v8-compile-cache-lib "^3.0.1" yn "3.1.1" tsconfig-paths@^3.14.1: @@ -13754,9 +13805,9 @@ typedarray@^0.0.6: integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= typescript@^3.7.3, typescript@^4.4.4, typescript@^4.5.2, typescript@~4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.3.tgz#eefeafa6afdd31d725584c67a0eaba80f6fc6c6c" - integrity sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw== + version "4.7.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" + integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" @@ -13795,14 +13846,14 @@ ultron@~1.1.0: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -unbox-primitive@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" - integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== dependencies: - function-bind "^1.1.1" - has-bigints "^1.0.1" - has-symbols "^1.0.2" + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" underscore@1.9.1: @@ -13983,7 +14034,7 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache-lib@^3.0.0: +v8-compile-cache-lib@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== @@ -14056,9 +14107,9 @@ walker@^1.0.7: makeerror "1.0.12" watchpack@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25" - integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== dependencies: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" @@ -14369,9 +14420,9 @@ webpack-sources@^3.2.3: integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== webpack@^5.61.0: - version "5.72.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" - integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== + version "5.73.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" + integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -14382,13 +14433,13 @@ webpack@^5.61.0: acorn-import-assertions "^1.7.6" browserslist "^4.14.5" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.2" + enhanced-resolve "^5.9.3" es-module-lexer "^0.9.0" eslint-scope "5.1.1" events "^3.2.0" glob-to-regexp "^0.4.1" graceful-fs "^4.2.9" - json-parse-better-errors "^1.0.2" + json-parse-even-better-errors "^2.3.1" loader-runner "^4.2.0" mime-types "^2.1.27" neo-async "^2.6.2" @@ -14615,9 +14666,9 @@ ws@^5.1.1: async-limiter "~1.0.0" ws@^7.4.6: - version "7.5.7" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.7.tgz#9e0ac77ee50af70d58326ecff7e85eb3fa375e67" - integrity sha512-KMvVuFzpKBuiIXW3E4u3mySRO2/mCHSyZDJQM5NQ9Q9KHWHWh0NHgfbRMLLrceUK5qAL4ytALJbpRMjixFZh8A== + version "7.5.8" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" + integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== xhr-request-promise@^0.1.2: version "0.1.3" From 94a251aaf7ed2b5a79c57bc2da6cb962ab45021c Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Sat, 18 Jun 2022 20:42:05 +0000 Subject: [PATCH 002/125] RainVM 2.0 new RainVM, new sale, new VM compatible contracts, updates for script generators, templates, RainJS (JSVM), addresses and tests --- shell.nix | 1 + src/RainJS/CombineTierJS.ts | 60 +- src/RainJS/EmissionsERC20JS.ts | 60 +- src/RainJS/RainJS.ts | 196 ++-- src/RainJS/SaleJS.ts | 81 +- src/addresses.ts | 35 +- src/classes/vm.ts | 764 ++++++++------ src/contracts/emissionsERC20.ts | 84 +- src/contracts/sale.ts | 161 +-- .../combineTierScriptGenerator.ts | 106 +- .../emissionsERC20ScriptGenerator.ts | 296 +++--- .../script-generators/saleScriptGenerator.ts | 967 +++++++++++------- src/contracts/tiers/combineTier.ts | 74 +- src/utils.ts | 30 +- test/1_initSDK.test.ts | 24 +- test/2_sale.test.ts | 84 +- test/5_escrow.test.ts | 17 +- test/7_RainJS.test.ts | 368 ++++--- test/utils.ts | 1 + 19 files changed, 1929 insertions(+), 1480 deletions(-) diff --git a/shell.nix b/shell.nix index 693e0d7..4be9458 100644 --- a/shell.nix +++ b/shell.nix @@ -51,6 +51,7 @@ in pkgs.stdenv.mkDerivation { name = "shell"; buildInputs = [ + pkgs.yarn pkgs.nodejs-14_x copy-contracts generate-typechain diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts index 295c107..fcc4a95 100644 --- a/src/RainJS/CombineTierJS.ts +++ b/src/RainJS/CombineTierJS.ts @@ -1,8 +1,10 @@ import { BigNumber, Contract, Signer } from "ethers"; import { StateConfig } from "../classes/vm"; -import { CombineTier } from "../contracts/tiers/combineTier"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; - +import { + CombineTierContext, + CombineTierStorage +} from "../contracts/tiers/combineTier"; /** @@ -12,11 +14,6 @@ import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; */ export class CombineTierJS extends RainJS { - /** - * Local CombineTier Opcodes + AllstandardOps - */ - public static Opcodes = CombineTier.Opcodes; - /** * Constructor of CombineTierJS to create a instance of this class with CombineTier's local opcodes. * @see RainJS @@ -31,7 +28,9 @@ export class CombineTierJS extends RainJS { options?: { signer?: Signer, contract?: Contract, - applyOpFn?: ApplyOpFn + applyOpFn?: ApplyOpFn, + storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function + contextOpFn?: ApplyOpFn // for overriding the CombineTierJS's CONTEXT opcode function } ) { super( @@ -41,25 +40,46 @@ export class CombineTierJS extends RainJS { contract: options?.contract, applyOpFn: options?.applyOpFn } - ) + ); + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + for (let i = 0; i < CombineTierStorage.length; i++) { + if (options?.storageOpFn && options.storageOpFn[i]) { + this._STORAGE_[i] = options.storageOpFn[i]; + } + }; + for (let i = 0; i < CombineTierContext.length; i++) { + if (options?.contextOpFn && options.contextOpFn[i]) { + this._CONTEXT_[i] = options.contextOpFn[i]; + } + }; } /** - * key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes + * key/value pair of CONTEXT opcodes of the CombineTier JSVM + * the required value need to be passed to "run" method as the context array in "data" object. + * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. */ - protected readonly _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [CombineTierJS.Opcodes.ACCOUNT] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.account != undefined) { + protected _CONTEXT_: ApplyOpFn = { + [CombineTierContext.Account] : + async(state: StateJS, operand: number, data?: any) => { + if(data && data.context != undefined) { state.stack.push( - BigNumber.from(data.account) + BigNumber.from( + data.context[CombineTierContext.Account] + ) ) } - else throw new Error("Undefined account address") - } + else throw new Error("Undefined buy units") + }, } + /** + * key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) + * @remark CombineTier doesnt have any STORAGE opcode by default and in its contract level, + * however in JSVM there is the ability to pass in custom opcode functions to it + */ + protected _STORAGE_: ApplyOpFn = {}; + } \ No newline at end of file diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts index 6b08a80..d9920cd 100644 --- a/src/RainJS/EmissionsERC20JS.ts +++ b/src/RainJS/EmissionsERC20JS.ts @@ -1,8 +1,10 @@ import { BigNumber, Contract, Signer } from "ethers"; import { StateConfig } from "../classes/vm"; -import { EmissionsERC20 } from "../contracts/emissionsERC20"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; - +import { + EmissionsERC20Context, + EmissionsERC20Storage +} from "../contracts/emissionsERC20"; /** @@ -12,11 +14,6 @@ import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; */ export class EmissionsERC20JS extends RainJS { - /** - * Local EmissionsERC20 Opcodes + AllstandardOps - */ - public static Opcodes = EmissionsERC20.Opcodes; - /** * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. * @see RainJS @@ -31,7 +28,9 @@ export class EmissionsERC20JS extends RainJS { options?: { signer?: Signer, contract?: Contract, - applyOpFn?: ApplyOpFn + applyOpFn?: ApplyOpFn, + storageOpFn?: ApplyOpFn, // for overriding the EmissionsERC20's STORAGE opcode function + contextOpFn?: ApplyOpFn // for overriding the EmissionsERC20's CONTEXT opcode function } ) { super( @@ -41,25 +40,46 @@ export class EmissionsERC20JS extends RainJS { contract: options?.contract, applyOpFn: options?.applyOpFn } - ) + ); + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + for (let i = 0; i < EmissionsERC20Storage.length; i++) { + if (options?.storageOpFn && options.storageOpFn[i]) { + this._STORAGE_[i] = options.storageOpFn[i]; + } + }; + for (let i = 0; i < EmissionsERC20Context.length; i++) { + if (options?.contextOpFn && options.contextOpFn[i]) { + this._CONTEXT_[i] = options.contextOpFn[i]; + } + }; } /** - * key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes + * key/value pair of CONTEXT opcodes of the CombineTier JSVM + * the required value need to be passed to "run" method as the context array in "data" object. + * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. */ - protected readonly _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [EmissionsERC20JS.Opcodes.CLAIMANT_ACCOUNT] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.claimant_account != undefined) { + protected _CONTEXT_: ApplyOpFn = { + [EmissionsERC20Context.ClaimantAccount] : + async(state: StateJS, operand: number, data?: any) => { + if(data && data.context != undefined) { state.stack.push( - BigNumber.from(data.claimant_account) + BigNumber.from( + data.context[EmissionsERC20Context.ClaimantAccount] + ) ) } - else throw new Error("Undefined claimant account address") - } + else throw new Error("Undefined buy units") + }, } + /** + * key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) + * @remark EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, + * however in JSVM there is the ability to pass in custom opcode functions to it + */ + protected _STORAGE_: ApplyOpFn = {}; + } \ No newline at end of file diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 4446171..41a0146 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -1,5 +1,5 @@ import { BigNumber, Contract, ethers, Signer } from "ethers"; -import { arrayify } from "ethers/lib/utils"; +import { arrayify } from "../utils"; import { StateConfig, VM } from "../classes/vm"; import { ERC1155 } from "../contracts/generics/erc1155"; import { ERC20 } from "../contracts/generics/erc20"; @@ -8,7 +8,6 @@ import { ITier } from "../contracts/tiers/iTier"; import { Provider } from "../types"; - /** * @public * A type for functions to override the default opcodes functions with it. @@ -70,11 +69,6 @@ export interface StateJS { */ export class RainJS { - /** - * All of RainVM standard opcodes, i.e. AllStandardOps - */ - public static Opcodes = VM.Opcodes; - /** * The result state of the executed Rainjs. */ @@ -106,6 +100,18 @@ export class RainJS { */ public contract?: Contract; + /** + * Object that contains the CONTEXT opcode functions (i.e. local opcodes) + * the required value need to be passed to "run" method as the context array in "data" object. + * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. + */ + protected _CONTEXT_?: ApplyOpFn; + + /** + * Object that contains the STORAGE opcode functions (i.e. local opcodes) + */ + protected _STORAGE_?: ApplyOpFn; + /** * The constructor of RainJS which initiates the RainJS and also a StateJS for a RainVM script. @@ -121,6 +127,8 @@ export class RainJS { provider?: Provider, contract?: Contract, applyOpFn?: ApplyOpFn, + storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function + contextOpFn?: ApplyOpFn // for overriding the CombineTierJS's CONTEXT opcode function } ) { const stack: BigNumber[] = []; @@ -135,7 +143,7 @@ export class RainJS { }; for (let i = 0; i < state.sources.length; i++) { sources.push( - arrayify(state.sources[i]) + arrayify(state.sources[i], {allowMissingPrefix: true}) ) }; @@ -149,6 +157,11 @@ export class RainJS { this.signer = options?.signer; this.contract = options?.contract; this.provider = options?.provider ?? options?.signer?.provider; + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + this._STORAGE_ = options?.storageOpFn; + this._CONTEXT_ = options?.contextOpFn; } @@ -251,33 +264,44 @@ export class RainJS { */ protected readonly _OPCODE_: ApplyOpFn = { - [RainJS.Opcodes.SKIP] : + [VM.Opcodes.CONSTANTS] : (state: StateJS, operand: number, data?: any) => { - throw new Error("SKIP is no longer available") - }, - - [RainJS.Opcodes.VAL] : - (state: StateJS, operand: number, data?: any) => { - if (!(operand >> 7)) { + if (operand < state.constants.length) { if (state.constants[operand] != undefined) { state.stack.push(state.constants[operand]) } else throw new Error("out-of-bound constants") } else { - if (state.argumentsStack[operand & 127] != undefined) { - state.stack.push(state.argumentsStack[operand & 127]) + if (state.argumentsStack[operand - state.constants.length] != undefined) { + state.stack.push(state.argumentsStack[operand - state.constants.length]) } else throw new Error("out-of-bound arguments") } }, - [RainJS.Opcodes.DUP] : + [VM.Opcodes.STACK] : (state: StateJS, operand: number, data?: any) => { state.stack.push(state.stack[operand]); }, - [RainJS.Opcodes.ZIPMAP] : + [VM.Opcodes.CONTEXT] : + async(state: StateJS, operand: number, data?: any) => { + if (this._CONTEXT_) { + await this._CONTEXT_[operand](state, operand, data) + } + else throw new Error("no or out of bounds contexxt opcode") + }, + + [VM.Opcodes.STORAGE] : + async(state: StateJS, operand: number, data?: any) => { + if (this._STORAGE_) { + await this._STORAGE_[operand](state, operand, data) + } + else throw new Error("no or out-of-bound storage opcode") + }, + + [VM.Opcodes.ZIPMAP] : async(state: StateJS, operand: number, data?: any) => { const sourceIndex_ = operand & 7; const numberOfVals_ = (operand & 224) >> 5; @@ -346,12 +370,15 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.DEBUG] : + [VM.Opcodes.DEBUG] : (state: StateJS, operand: number, data?: any) => { - console.log(state.stack); + if (operand < 4) { + console.log(state.stack); + } + else throw new Error("out-of-bound debug operand") }, - [RainJS.Opcodes.BLOCK_NUMBER] : + [VM.Opcodes.BLOCK_NUMBER] : async(state: StateJS, operand: number, data?: any) => { if (this.provider != undefined) { state.stack.push( @@ -361,7 +388,7 @@ export class RainJS { else throw new Error("Undefined Provider") }, - [RainJS.Opcodes.BLOCK_TIMESTAMP] : + [VM.Opcodes.BLOCK_TIMESTAMP] : async(state: StateJS, operand: number, data?: any) => { if (this.provider != undefined) { state.stack.push( @@ -376,7 +403,7 @@ export class RainJS { else throw new Error("Undefined Provider") }, - [RainJS.Opcodes.SENDER] : + [VM.Opcodes.SENDER] : async(state: StateJS, operand: number, data?: any) => { if (this.signer != undefined) { state.stack.push( @@ -385,7 +412,7 @@ export class RainJS { } }, - [RainJS.Opcodes.THIS_ADDRESS] : + [VM.Opcodes.THIS_ADDRESS] : async(state: StateJS, operand: number, data?: any) => { if(this.contract != undefined) { state.stack.push( @@ -395,7 +422,7 @@ export class RainJS { else throw new Error("Undefined contract") }, - [RainJS.Opcodes.SCALE18_MUL] : + [VM.Opcodes.SCALE18_MUL] : (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); @@ -411,7 +438,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.SCALE18_DIV] : + [VM.Opcodes.SCALE18_DIV] : (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); @@ -428,7 +455,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.SCALE18] : + [VM.Opcodes.SCALE18] : (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); if (item_ != undefined) { @@ -441,7 +468,7 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.SCALEN] : + [VM.Opcodes.SCALEN] : (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); if (item_ != undefined) { @@ -454,7 +481,7 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.SCALE_BY] : + [VM.Opcodes.SCALE_BY] : (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); const operandSign_ = (operand & 255) >> 7; @@ -474,17 +501,7 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.SCALE18_ONE] : - (state: StateJS, operand: number, data?: any) => { - state.stack.push(BigNumber.from("1000000000000000000")); - }, - - [RainJS.Opcodes.SCALE18_DECIMALS] : - (state: StateJS, operand: number, data?: any) => { - state.stack.push(BigNumber.from(18)); - }, - - [RainJS.Opcodes.ADD] : + [VM.Opcodes.ADD] : (state: StateJS, operand: number, data?: any) => { let _item; let _accumulator = ethers.constants.Zero; @@ -492,13 +509,16 @@ export class RainJS { _item = state.stack.pop(); if (_item != undefined) { _accumulator = _accumulator.add(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error("max numeric range overflow") + } } else throw new Error("Undefined stack variables") } state.stack.push(_accumulator); }, - [RainJS.Opcodes.SATURATING_ADD] : + [VM.Opcodes.SATURATING_ADD] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = ethers.constants.Zero; @@ -516,7 +536,7 @@ export class RainJS { state.stack.push(_accumulator); }, - [RainJS.Opcodes.SUB] : + [VM.Opcodes.SUB] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); @@ -537,7 +557,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.SATURATING_SUB] : + [VM.Opcodes.SATURATING_SUB] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); @@ -558,7 +578,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.MUL] : + [VM.Opcodes.MUL] : (state: StateJS, operand: number, data?: any) => { let _accumulator = ethers.constants.One; let _item; @@ -566,13 +586,16 @@ export class RainJS { _item = state.stack.pop(); if (_item != undefined) { _accumulator = _accumulator.mul(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error("max numeric range overflow") + } } else throw new Error("Undefined stack variables") } state.stack.push(_accumulator); }, - [RainJS.Opcodes.SATURATING_MUL] : + [VM.Opcodes.SATURATING_MUL] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = ethers.constants.One; @@ -590,7 +613,7 @@ export class RainJS { state.stack.push(_accumulator); }, - [RainJS.Opcodes.DIV] : + [VM.Opcodes.DIV] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); @@ -608,7 +631,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.MOD] : + [VM.Opcodes.MOD] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); @@ -626,7 +649,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.EXP] : + [VM.Opcodes.EXP] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); @@ -636,6 +659,9 @@ export class RainJS { _item = items_.shift(); if (_item != undefined) { _accumulator = _accumulator.pow(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error("max numeric range overflow") + } } else throw new Error("Undefined stack variables") } @@ -644,7 +670,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.MIN] : + [VM.Opcodes.MIN] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); if (items_.length == operand) { @@ -655,7 +681,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.MAX] : + [VM.Opcodes.MAX] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); if (items_.length = operand) { @@ -666,7 +692,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.ISZERO] : + [VM.Opcodes.ISZERO] : (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); if (item_ != undefined) { @@ -679,7 +705,7 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.EAGER_IF] : + [VM.Opcodes.EAGER_IF] : (state: StateJS, operand: number, data?: any) => { const false_ = state.stack.pop(); const true_ = state.stack.pop(); @@ -692,7 +718,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.EQUAL_TO] : + [VM.Opcodes.EQUAL_TO] : (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); @@ -706,7 +732,7 @@ export class RainJS { else throw new Error("Underfined stack variables") }, - [RainJS.Opcodes.LESS_THAN] : + [VM.Opcodes.LESS_THAN] : (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); @@ -720,7 +746,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.GREATER_THAN] : + [VM.Opcodes.GREATER_THAN] : (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); @@ -734,7 +760,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.EVERY] : + [VM.Opcodes.EVERY] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _check; @@ -756,7 +782,7 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.ANY] : + [VM.Opcodes.ANY] : (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _check; @@ -778,14 +804,14 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.REPORT] : + [VM.Opcodes.REPORT] : async(state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); if (item1_ && item2_ && this.signer != undefined) { - const account_ = "0x" + item2_.toHexString().substring(2).padStart(64, "0"); + const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); const iTierContract = new ITier( - "0x" + item1_.toHexString().substring(2).padStart(64, "0"), + "0x" + item1_.toHexString().substring(2).padStart(40, "0"), this.signer ); state.stack.push( @@ -795,17 +821,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.NEVER] : - (state: StateJS, operand: number, data?: any) => { - state.stack.push(ethers.constants.MaxUint256) - }, - - [RainJS.Opcodes.ALWAYS] : - (state: StateJS, operand: number, data?: any) => { - state.stack.push(ethers.constants.Zero) - }, - - [RainJS.Opcodes.SATURATING_DIFF] : + [VM.Opcodes.SATURATING_DIFF] : (state: StateJS, operand: number, data?: any) => { const report2_ = state.stack.pop()?.toHexString().substring(2).padStart(64, "0"); const report1_ = state.stack.pop()?.toHexString().substring(2).padStart(64, "0"); @@ -831,7 +847,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE] : + [VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE] : (state: StateJS, operand: number, data?: any) => { const endTier_ = operand >> 4; const startTier_ = operand & 15; @@ -858,7 +874,7 @@ export class RainJS { else throw new Error ("Undefined stack variables") }, - [RainJS.Opcodes.SELECT_LTE] : + [VM.Opcodes.SELECT_LTE] : (state: StateJS, operand: number, data?: any) => { const length_ = operand & 31; const mode_ = (operand & 96) >> 5; @@ -949,13 +965,13 @@ export class RainJS { state.stack.push(BigNumber.from("0x" + _result)); }, - [RainJS.Opcodes.IERC20_BALANCE_OF] : + [VM.Opcodes.IERC20_BALANCE_OF] : async(state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); if (item1_ && item2_ && this.signer != undefined) { - const account_ = "0x" + item2_.toHexString().substring(2).padStart(64, "0"); - const erc20Address_ = "0x" + item1_.toHexString().substring(2).padStart(64, "0"); + const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); + const erc20Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); const erc20Contract_ = new ERC20( erc20Address_, this.signer @@ -967,11 +983,11 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.IERC20_TOTAL_SUPPLY] : + [VM.Opcodes.IERC20_TOTAL_SUPPLY] : async(state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); if (item_ && this.signer != undefined) { - const erc20Address_ = "0x" + item_.toHexString().substring(2).padStart(64, "0"); + const erc20Address_ = "0x" + item_.toHexString().substring(2).padStart(40, "0"); const erc20Contract_ = new ERC20( erc20Address_, this.signer @@ -983,13 +999,13 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.IERC721_BALANCE_OF] : + [VM.Opcodes.IERC721_BALANCE_OF] : async(state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); if (item1_ && item2_ && this.signer != undefined) { - const account_ = "0x" + item2_.toHexString().substring(2).padStart(64, "0"); - const erc721Address_ = "0x" + item1_.toHexString().substring(2).padStart(64, "0"); + const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); + const erc721Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); const erc721Contract_ = new ERC721( erc721Address_, this.signer @@ -1001,13 +1017,13 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.IERC721_OWNER_OF] : + [VM.Opcodes.IERC721_OWNER_OF] : async(state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); if (item1_ && item2_ && this.signer != undefined) { const tokenId_ = BigNumber.from(item2_); - const erc721Address_ = "0x" + item1_.toHexString().substring(2).padStart(64, "0"); + const erc721Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); const erc721Contract_ = new ERC721( erc721Address_, this.signer @@ -1019,15 +1035,15 @@ export class RainJS { else throw new Error("Undefined stack variable") }, - [RainJS.Opcodes.IERC1155_BALANCE_OF] : + [VM.Opcodes.IERC1155_BALANCE_OF] : async(state: StateJS, operand: number, data?: any) => { const item3_ = state.stack.pop(); const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); if (item1_ && item2_ && item3_ && this.signer != undefined) { const id_ = BigNumber.from(item3_); - const account_ = "0x" + item2_.toHexString().substring(2).padStart(64, "0"); - const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(64, "0"); + const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); + const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); const erc1155Contract_ = new ERC1155( erc1155Address_, this.signer @@ -1039,7 +1055,7 @@ export class RainJS { else throw new Error("Undefined stack variables") }, - [RainJS.Opcodes.IERC1155_BALANCE_OF_BATCH] : + [VM.Opcodes.IERC1155_BALANCE_OF_BATCH] : async(state: StateJS, operand: number, data?: any) => { const item3_ = state.stack.splice(-(operand + 1)); const item2_ = state.stack.splice(-(operand + 1)); @@ -1054,10 +1070,10 @@ export class RainJS { const accounts_: string[] = []; for (let i = 0; i < item2_.length; i++) { accounts_.push( - "0x" + item2_[i].toHexString().substring(2).padStart(64, "0") + "0x" + item2_[i].toHexString().substring(2).padStart(40, "0") ) }; - const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(64, "0"); + const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); const erc1155Contract_ = new ERC1155( erc1155Address_, this.signer diff --git a/src/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts index 3241dd8..aa31706 100644 --- a/src/RainJS/SaleJS.ts +++ b/src/RainJS/SaleJS.ts @@ -1,8 +1,9 @@ -import { BigNumber, Contract, Signer } from "ethers"; +import { BigNumber, Contract, Signer } from "ethers"; import { StateConfig } from "../classes/vm"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; import { ERC20 } from "../contracts/generics/erc20"; -import { Sale } from "../contracts/sale"; +import { SaleContext, SaleStorage } from "../contracts/sale"; + /** @@ -12,10 +13,6 @@ import { Sale } from "../contracts/sale"; */ export class SaleJS extends RainJS { - /** - * Local Sale's opcodes + AllstandardOps - */ - public static Opcodes = Sale.Opcodes; /** * Constructor of SaleJS to create a instance of this class with Sale's local opcodes. @@ -23,7 +20,7 @@ export class SaleJS extends RainJS { * * @param state - A regular StateConfig * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a Sale Contract and custom opcode functions) + * (a Signer, a Sale Contract and custom opcode functions, custom STORAGE/CONTEXT opcode functions) * */ constructor( @@ -31,7 +28,9 @@ export class SaleJS extends RainJS { options?: { signer?: Signer, contract?: Contract, - applyOpFn?: ApplyOpFn + applyOpFn?: ApplyOpFn, + storageOpFn?: ApplyOpFn, // for overriding the SaleJS's STORAGE opcode function + contextOpFn?: ApplyOpFn // for overriding the SaleJS's CONTEXT opcode function } ) { super( @@ -41,17 +40,28 @@ export class SaleJS extends RainJS { contract: options?.contract, applyOpFn: options?.applyOpFn } - ) - } + ); + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + for (let i = 0; i < SaleStorage.length; i++) { + if (options?.storageOpFn && options.storageOpFn[i]) { + this._STORAGE_[i] = options.storageOpFn[i]; + } + }; + for (let i = 0; i < SaleContext.length; i++) { + if (options?.contextOpFn && options.contextOpFn[i]) { + this._CONTEXT_[i] = options.contextOpFn[i]; + } + }; + }; /** - * key/value pair of opcodes and their functions for all standard opcodes + Sale local opcodes + * key/value pair of STORAGE opcodes of the sale JSVM */ - protected readonly _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [SaleJS.Opcodes.REMAINING_UNITS] : + protected _STORAGE_: ApplyOpFn = { + + [SaleStorage.RemainingUnits] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { const rTKNAddress_ = await this.contract.token(); @@ -68,7 +78,7 @@ export class SaleJS extends RainJS { else throw new Error("Undefined Signer or Sale Contract") }, - [SaleJS.Opcodes.TOTAL_RESERVE_IN] : + [SaleStorage.TotalReserveIn] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { const reserveAddress_ = await this.contract.reserve(); @@ -85,19 +95,7 @@ export class SaleJS extends RainJS { else throw new Error("Undefined Signer or Sale Contract") }, - [SaleJS.Opcodes.CURRENT_BUY_UNITS] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.current_buy_units != undefined) { - state.stack.push( - BigNumber.from( - data.current_buy_units - ) - ) - } - else throw new Error("Undefined buy units") - }, - - [SaleJS.Opcodes.TOKEN_ADDRESS] : + [SaleStorage.TokenAddress] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { state.stack.push( @@ -109,8 +107,8 @@ export class SaleJS extends RainJS { else throw new Error("Undefined Signer or Sale Contract") }, - [SaleJS.Opcodes.RESERVE_ADDRESS] : - async(state: StateJS, operand: number, data?: any) => { + [SaleStorage.ReserveAddress] : + async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { state.stack.push( BigNumber.from( @@ -121,5 +119,24 @@ export class SaleJS extends RainJS { else throw new Error("Undefined Signer or Sale Contract") }, }; + + /** + * key/value pair of CONTEXT opcodes of the sale JSVM + * the required value need to be passed to "run" method as the context array in "data" object. + * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. + */ + protected _CONTEXT_: ApplyOpFn = { + [SaleContext.CurrentBuyUnits] : + async(state: StateJS, operand: number, data?: any) => { + if(data && data.context != undefined) { + state.stack.push( + BigNumber.from( + data.context[SaleContext.CurrentBuyUnits] + ) + ) + } + else throw new Error("Undefined buy units") + }, + } } \ No newline at end of file diff --git a/src/addresses.ts b/src/addresses.ts index 73b1e45..3cfb93b 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -12,6 +12,7 @@ export type SubgraphBook = { */ export type Addresses = { [key: string]: string; + vmStateBuilder: string; redeemableERC20Factory: string; verifyFactory: string; verifyTierFactory: string; @@ -34,6 +35,7 @@ const addressBook = [ */ chainId: 1, addresses: { + vmStateBuilder: "", alwaysTier: '0x735ECdF9a79e62531BAB9240696a450F94AB79f8', combineTierFactory: '0x36983711f9C4869F0B9BEb2Cf677814bb40d41c5', erc20BalanceTierFactory: '0x50B2921A8c915A8228dA39e93AD9E9AA43fBc901', @@ -55,6 +57,7 @@ const addressBook = [ */ chainId: 5, addresses: { + vmStateBuilder: "", alwaysTier: '0x1Fcf1f92919F0E0023463234c78296E9517b56Ea', combineTierFactory: '0x34A0946CEAD3417E629B2679D05C0A24d49a1eB4', erc20BalanceTierFactory: '0xbA9Ce92a65e172ADd70A71B6E280D9941fb9185C', @@ -76,6 +79,7 @@ const addressBook = [ */ chainId: 56, addresses: { + vmStateBuilder: "", alwaysTier: '0x735ECdF9a79e62531BAB9240696a450F94AB79f8', combineTierFactory: '0x36983711f9C4869F0B9BEb2Cf677814bb40d41c5', erc20BalanceTierFactory: '0x50B2921A8c915A8228dA39e93AD9E9AA43fBc901', @@ -97,6 +101,7 @@ const addressBook = [ */ chainId: 97, addresses: { + vmStateBuilder: "", alwaysTier: '0x735ECdF9a79e62531BAB9240696a450F94AB79f8', combineTierFactory: '0x36983711f9C4869F0B9BEb2Cf677814bb40d41c5', erc20BalanceTierFactory: '0x50B2921A8c915A8228dA39e93AD9E9AA43fBc901', @@ -118,6 +123,7 @@ const addressBook = [ */ chainId: 137, addresses: { + vmStateBuilder: "", alwaysTier: '0xF81572101B3bD379ADFddCBF4d46f40268475A14', combineTierFactory: '0xaB9D00F59A8C45b8b20F060D5F7d97FdDbA2De19', erc20BalanceTierFactory: '0xcCFa697D85771B67826cB7E1F7535576fA91b6b1', @@ -139,19 +145,20 @@ const addressBook = [ */ chainId: 31337, addresses: { - alwaysTier: '0x23dB4a08f2272df049a4932a4Cc3A6Dc1002B33E', - redeemableERC20Factory: '0x5FbDB2315678afecb367f032d93F642f64180aa3', - verifyFactory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', - verifyTierFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', - erc20BalanceTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', - erc20TransferTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', - combineTierFactory: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', - erc721BalanceTierFactory: '0x0165878A594ca255338adfa4d48449f69242Eb8F', - gatedNFTFactory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', - redeemableERC20ClaimEscrow: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', - noticeBoard: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', - emissionsERC20Factory: '0x610178dA211FEF7D417bC0e6FeD39F05609AD788', - saleFactory: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', + vmStateBuilder: "0x5FbDB2315678afecb367f032d93F642f64180aa3", + alwaysTier: '0xBA12646CC07ADBe43F8bD25D83FB628D29C8A762', + redeemableERC20Factory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', + verifyFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', + verifyTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', + erc20BalanceTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', + erc20TransferTierFactory: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', + combineTierFactory: '0x0165878A594ca255338adfa4d48449f69242Eb8F', + erc721BalanceTierFactory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', + gatedNFTFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', + redeemableERC20ClaimEscrow: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', + noticeBoard: '0x610178dA211FEF7D417bC0e6FeD39F05609AD788', + emissionsERC20Factory: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', + saleFactory: '0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0', }, }, { @@ -160,6 +167,7 @@ const addressBook = [ */ chainId: 43113, addresses: { + vmStateBuilder: "", alwaysTier: '0x3f16F26C6844be3d0934EC0543039d874D45da9e', combineTierFactory: '0x4B8FC6f1f3f62099f4fb7151548b9c5226ceD76E', erc20BalanceTierFactory: '0x724007CDD1689e43c6ef55b7032b93A1cC8C02C7', @@ -181,6 +189,7 @@ const addressBook = [ */ chainId: 80001, addresses: { + vmStateBuilder: "", alwaysTier: '0x051dC03ba4d33eCC59Fb23F506Fe1e67004F142C', combineTierFactory: '0x21fC48631F0efA5EFe790b5c05929cEdc271dB43', erc20BalanceTierFactory: '0xb1C8EA6E410a71290D5C21404D3324e61912e3c6', diff --git a/src/classes/vm.ts b/src/classes/vm.ts index a0f79d0..7666531 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1,4 +1,4 @@ -import { BytesLike, BigNumberish, BigNumber, utils } from 'ethers'; +import { BytesLike, BigNumberish, utils, BigNumber, ethers } from 'ethers'; import { paddedUInt256, paddedUInt32, @@ -9,8 +9,7 @@ import { selectLteMode, selectLteLogic, callSize, - arg, - arrayify, + arrayify } from '../utils'; /** @@ -20,24 +19,26 @@ import { */ export enum AllStandardOps { /** - * @deprecated **DONT USE SKIP!** - * - * It is a skip as this is the fallback value for unset solidity bytes. - * Any additional "whitespace" in rain scripts will be noops as `0 0` is - * "skip self". The val can be used to skip additional opcodes but take - * care to not underflow the source itself. + * Copies a value either off `constants` or `arguments` to the top of + * the stack. arguments will go at the end of the constants array. */ - SKIP, + CONSTANTS, /** - * Copies a value either off `constants` or `arguments` to the top of - * the stack. The high bit of the operand specifies which, `0` for - * `constants` and `1` for `arguments`. + * Duplicates any value in the stack to the top of the stack. The operand + * specifies the index to copy from. + */ + STACK, + /** + * stacks an item of the contextual array of values of an underlying contract + * passed by caller when calling the contract's methods. operand is the index + * to access the desired item in the array. */ - VAL, + CONTEXT, /** - * Duplicates the value atoptions.index `operand_` to the top of the stack + * used as local opcodes i.e. opcodes to stack the contract's storage contents i.e. + * porperties/variables. operand determines the storage location to be stacked. */ - DUP, + STORAGE, /** * Takes N values off the stack, interprets them as an array then zips * and maps a source from `sources` over them. The source has access to @@ -84,14 +85,6 @@ export enum AllStandardOps { * Opcode to rescale an arbitrary fixed point number by some OOMs. */ SCALE_BY, - /** - * Opcode for stacking the definition of one. - */ - SCALE18_ONE, - /** - * Opcode for stacking number of fixed point decimals used. - */ - SCALE18_DECIMALS, /** * Opcode for addition. */ @@ -173,14 +166,6 @@ export enum AllStandardOps { * Opcode to call `report` on an `ITier` contract. */ REPORT, - /** - * Opcode to stack a report that has never been held for all tiers. - */ - NEVER, - /** - * Opcode to stack a report that has always been held for all tiers. - */ - ALWAYS, /** * Opcode to calculate the tierwise diff of two reports. */ @@ -237,54 +222,51 @@ export interface StateConfig { * Constants verbatim. */ constants: BigNumberish[]; +} + +/** + * Interface for accessible by vm storage's slots range available for a contract to be + * used as local opcodes. + */ +export interface StorageOpcodesRange { /** - * Sets the length of the uint256[] of the stack. + * pointer to the storage slot of the first property of properties of a contract used + * as STORAGE opcode. */ - stackLength: BigNumberish; + pointer: BigNumberish; /** - * Sets the length of the uint256[] of the arguments. + * Length of the storage opcodes of a contract, i.e. the number of local opcodes */ - argumentsLength: BigNumberish; -} + length: BigNumberish; +}; /** - * @public - * - * Everything required to evaluate and track the state of a rain script. - * As this is a struct it will be in memory when passed to `RainVM` and so - * will be modified by reference internally. This is important for gas - * efficiency; the stack, arguments and stackIndex will likely be mutated by - * the running script. + * Enum for DEBUG opcode operands */ -export interface State { + export enum Debug { /** - * Opcodes write to the stack at the stack index and can - * consume from the stack by decrementing the index and reading between the - * old and new stack index. - * IMPORANT: The stack is never zeroed out so the index must be used to - * find the "top" of the stack as the result of an `eval`. + * ABI of the current state of State */ - stackIndex: BigNumberish; + StateAbi, /** - * Stack is the general purpose runtime state that opcodes can - * read from and write to according to their functionality. + * current state of State as packed bytes */ - stack: BigNumberish[]; + StatePacked, /** - * Sources available to be executed by `eval`. - * Notably `ZIPMAP` can also select a source to execute by index. + * current state of stack */ - sources: BytesLike[]; + Stack, /** - * Constants that can be copied to the stack by index by `VAL`. + * current stack index */ - constants: BigNumberish[]; + StackIndex, /** - * `ZIPMAP` populates arguments which can be copied to the stack by `VAL`. + * length of DEBUG's valid operands */ - arguments: BigNumberish[]; + length } + /** * @public * @@ -305,6 +287,7 @@ export class VM { */ public static Opcodes = AllStandardOps; + /** * Create a VM sources to be ready to use in any call just providing the combination desired. * @@ -321,100 +304,244 @@ export class VM { /** * Combines 2 individual VM scripts * - * @remarks - please be aware if your script has DUP opcode, as DUP is relative to script and cannot be handled by this method + * @remarks - please be aware if your script has STACK opcode, as STACK is relative to script and cannot be handled by this method * and needs to be dealt with manualy before calling this method. - * + * * @param config1 - the first VM script that will be combined. (default sits at top) * @param config2 - the second VM script that will be combined. (default sits at bottom) * @param options - used for additional configuraions: * - (param) index - to identify which sources item in config1.sources the combination starts at, if not specified, it will be 0. - * - (param) numberOfSource - for specifying how many sources item to combine. + * - (param) - numberOfSources - for specifying how many sources item to combine. * - (param) position - An array representing the positions of config1 script where config2 sources * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. - * * @returns combined VM script. @see StateConfig */ - public static vmCombiner( + public static combiner( config1: StateConfig, config2: StateConfig, options?: { index?: number, - numberOfSources?: number + numberOfSources?: number, position?: number[], } ): StateConfig { - const Index = options?.index ? options.index : 0; - const NumberOfSources = options?.numberOfSources - ? options.numberOfSources - : 1; + const NumberOfSources = options?.numberOfSources != undefined ? options.numberOfSources : 1; + let sourceModify1; + let sourceModify2; const constants = [...config1.constants, ...config2.constants]; + let sources: BytesLike[]; - for (let i = 0; i < config2.sources.length; i++) { - const sourceModify = arrayify(config2.sources[i], { - allowMissingPrefix: true, - }); - for (let j = 0; j < sourceModify.length; j++) { - if (sourceModify[j] == 1) { - let argCheck = sourceModify[j + 1] >> 7; - if (!argCheck) { - sourceModify[j + 1] += config1.constants.length; - } - } - if (sourceModify[j] == 3) { - const srcIndexIncrement = - (config1.sources.length - NumberOfSources); - const srcIndex = sourceModify[j + 1] & 7; - sourceModify[j + 1] = - srcIndex < NumberOfSources - ? sourceModify[j + 1] + Index - : sourceModify[j + 1] + srcIndexIncrement; + let argCount = 0; + for (let i = 0; i < config1.sources.length; i++) { + let src = arrayify( + config1.sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < src.length; j++) { + if (src[j] == 4) { + argCount += (src[j + 1] >> 5) + 1; } j++; } - config2.sources[i] = sourceModify; } - if (options?.position && options.position.length == NumberOfSources) { - for (let i = 0; i < NumberOfSources; i++) { - const sourceModify = arrayify(config1.sources[Index + i], { + if (NumberOfSources == 0) { + for (let i = 0; i < config1.sources.length; i++) { + sourceModify1 = arrayify( + config1.sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < sourceModify1.length; j++) { + if (sourceModify1[j] == 0) { + if (sourceModify1[j + 1] >= config1.constants.length) { + sourceModify1[j + 1] += config2.constants.length + } + } + if (sourceModify1[j] == 4) { + sourceModify1[j + 1]++ + } + j++; + } + config1.sources[i] = sourceModify1; + } + for (let i = 0; i < config2.sources.length; i++) { + sourceModify2 = arrayify( + config2.sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < sourceModify2.length; j++) { + if (sourceModify2[j] == 0) { + if (sourceModify2[j + 1] < config2.constants.length) { + sourceModify2[j + 1] += config1.constants.length; + } + else { + sourceModify2[j + 1] += argCount + config1.constants.length; + } + } + if (sourceModify2[j] == 4) { + sourceModify2[j + 1] += config1.sources.length; + } + j++; + } + config2.sources[i] = sourceModify2; + } + + sources = [ + config1.sources[0], + config2.sources[0], + ...config1.sources.splice(1), + ...config2.sources.splice(1) + ]; + } + else { + const Index = options?.index ? options.index : 0; + + for (let i = 0; i < config1.sources.length; i++) { + sourceModify1 = arrayify( + config1.sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < sourceModify1.length; j++) { + if (sourceModify1[j] == 0) { + if (sourceModify1[j + 1] >= config1.constants.length) { + sourceModify1[j + 1] += config2.constants.length + } + } + j++; + } + config1.sources[i] = sourceModify1; + } + for (let i = 0; i < config2.sources.length; i++) { + sourceModify2 = arrayify(config2.sources[i], { allowMissingPrefix: true, }); - config1.sources[Index + i] = concat([ - sourceModify.subarray(0, options.position[i] * 2), - config2.sources[i], - sourceModify.subarray(options.position[i] * 2), - ]); + for (let j = 0; j < sourceModify2.length; j++) { + if (sourceModify2[j] == 0) { + if (sourceModify2[j + 1] < config2.constants.length) { + sourceModify2[j + 1] += config1.constants.length; + } + else { + sourceModify2[j + 1] += config1.constants.length + argCount; + } + } + if (sourceModify2[j] == 4) { + const srcIndexIncrement = config1.sources.length - NumberOfSources; + const srcIndex = sourceModify2[j + 1] & 7; + sourceModify2[j + 1] = + srcIndex < NumberOfSources + ? sourceModify2[j + 1] + Index + : sourceModify2[j + 1] + srcIndexIncrement; + } + j++; + } + config2.sources[i] = sourceModify2; } - } else { - for (let i = 0; i < NumberOfSources; i++) { - config1.sources[Index + i] = concat([ - config1.sources[Index + i], - config2.sources[i], - ]); + + if (options?.position && options.position.length == NumberOfSources) { + for (let i = 0; i < NumberOfSources; i++) { + const sourceModify = arrayify(config1.sources[Index + i], { + allowMissingPrefix: true, + }); + config1.sources[Index + i] = concat([ + sourceModify.subarray(0, options.position[i] * 2), + config2.sources[i], + sourceModify.subarray(options.position[i] * 2), + ]); + } + } + else { + for (let i = 0; i < NumberOfSources; i++) { + config1.sources[Index + i] = concat([ + config1.sources[Index + i], + config2.sources[i], + ]); + } } - } - config2.sources.splice(0, NumberOfSources); - const sources = [...config1.sources, ...config2.sources]; + config2.sources.splice(0, NumberOfSources); + sources = [ + ...config1.sources, + ...config2.sources + ]; + } - const finalStackLength = BigNumber.from(config1.stackLength).add( - config2.stackLength - ); - const finalArgumentsLength = BigNumber.from(config1.argumentsLength).add( - config2.argumentsLength - ); + let offset = 0; + for (let i = 0; i < sources.length; i++) { + let srcModify = arrayify( + sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < srcModify.length; j++) { + let offsetReset; + let argModify; + let opernadArr = []; + + if (srcModify[j] == 4) { + argModify = arrayify( + sources[srcModify[j + 1] & 7], + {allowMissingPrefix: true} + ); + + for (let k = 0; k < argModify.length; k++) { + if (argModify[k] == 0 && argModify[k + 1] >= constants.length) { + opernadArr.push(argModify[k + 1]); + } + k++; + } + offsetReset = opernadArr.reduce((e, m) => e < m ? e : m); + for (let k = 0; k < argModify.length; k++) { + if (argModify[k] == 0 && argModify[k + 1] >= constants.length) { + argModify[k + 1] -= offsetReset; + argModify[k + 1] += constants.length + offset; + } + k++; + } + sources[srcModify[j + 1] & 7] = argModify; + offset += (srcModify[j + 1] >> 5) + 1; + } + j++; + } + } return { constants, sources, - stackLength: finalStackLength, - argumentsLength: finalArgumentsLength, }; } + /** + * method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc + * + * @param amountConfig - amount's StateConfig, the config sitting at top and returning the first value + * @param priceConfig - price's StateConfig, the config sitting at bottom and returning the second value + * + * @returns a @see StatecConfig + */ + public static pair ( + amountConfig: StateConfig, + priceConfig: StateConfig + ) : StateConfig { + + let _stackOpcodeModify = arrayify( + priceConfig.sources[0], + {allowMissingPrefix: true} + ); + + for (let i = 0; i < _stackOpcodeModify.length; i++) { + if (_stackOpcodeModify[i] == 1) { + _stackOpcodeModify[i + 1]++; + } + i++ + } + priceConfig.sources[0] = _stackOpcodeModify; + + return VM.combiner(amountConfig, priceConfig); + } + + /** * Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final * result will be determined by the main VM script and if it fails it will be 0 by default. @@ -426,73 +553,79 @@ export class VM { * @param ownerAddress - the address that is going to be the owner of the main VM script. * @param options - used for additional configuraions: * - (param) index - to identify which sources item in config.sources the combination starts at, if not specified, it will be 0. - * - (param) numberOfSource - for specifying how many sources item to combine. * - (param) position - An array representing the positions of config script where notOwnerVar sources (if exists) * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. * - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. * * @returns a VM script. @see StateConfig */ - public static makeOwner( + public static toOwnerMaker ( config: StateConfig, ownerAddress: string, options?: { index?: number, - numberOfSources?: number, position?: number[], notOwnerVar?: StateConfig | number, } ): StateConfig { + let _result: StateConfig; const Index = options?.index ? options.index : 0; const MAKE_OWNER = (i: any) => concat([ - op(AllStandardOps.VAL, i), - op(AllStandardOps.SENDER), - op(AllStandardOps.EQUAL_TO), + op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.EQUAL_TO), ]); if (options?.notOwnerVar && typeof options.notOwnerVar === 'object') { - let _result = this.vmCombiner( + _result = this.combiner( config, options.notOwnerVar, { - index: options.index, - position: options.position, - numberOfSources: options.numberOfSources + index: Index, + position: options?.position, } ); - _result.constants.push(ownerAddress); - _result.sources[Index] = concat([ - MAKE_OWNER(_result.constants.length - 1), - _result.sources[Index], - op(AllStandardOps.EAGER_IF), - ]); - _result.stackLength = BigNumber.from(_result.stackLength).add(4); - - return _result; - - } else { + } + else { const NotOwnerVar = (options?.notOwnerVar && typeof options?.notOwnerVar == "number") ? options.notOwnerVar : 0; - const constants = [...config.constants, ownerAddress, NotOwnerVar]; - config.sources[Index] = concat([ - MAKE_OWNER(constants.length - 2), - config.sources[Index], - op(AllStandardOps.VAL, constants.length - 1), - op(AllStandardOps.EAGER_IF), - ]); - const sources = config.sources; - return { - constants, - sources, - stackLength: Number(config.stackLength) + 5, - argumentsLength: config.argumentsLength, - }; + + _result = this.combiner( + config, + { + constants: [NotOwnerVar], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 0) + ]) + ] + }, + { + index: Index, + position: options?.position + } + ); } + + _result = this.combiner( + { + constants: [ownerAddress], + sources: [MAKE_OWNER(0)] + }, + _result, + {index: Index} + ) + _result.sources[Index] = concat([ + _result.sources[Index], + op(VM.Opcodes.EAGER_IF), + ]); + + return _result; } @@ -509,7 +642,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static tierBasedDiscounter( + public static toTierDiscounter( config: StateConfig, tierAddress: string, tierDiscount: number[], @@ -535,13 +668,13 @@ export class VM { ) ); - const TIER_BASED_DIS = (i: number) => + const TIER_BASED_DIS = () => concat([ - op(VM.Opcodes.NEVER), - op(VM.Opcodes.VAL, i - 1), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 3), op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.VAL, i - 2), - op(VM.Opcodes.VAL, i - 3), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 1), op(VM.Opcodes.SENDER), op(VM.Opcodes.REPORT), op(VM.Opcodes.BLOCK_NUMBER), @@ -551,106 +684,92 @@ export class VM { ), op(VM.Opcodes.SATURATING_DIFF), ]); - - const TIER_BASED_DIS_ZIMAP = ( - i: number, - sourceIndex: number, - valSize: number - ) => + const TIER_BASED_DIS_ZIPMAP = (valSize: number) => concat([ - op(VM.Opcodes.ZIPMAP, callSize(sourceIndex, 3, valSize)), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), op(VM.Opcodes.MIN, 8), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.VAL, i - 1), + op(VM.Opcodes.CONSTANTS, 3), op(VM.Opcodes.DIV, 2), ]); - - const ACTIVATION_TIME = (i: number) => + const ACTIVATION_TIME = () => concat([ - op(VM.Opcodes.NEVER), + op(VM.Opcodes.CONSTANTS, 0), op(VM.Opcodes.BLOCK_NUMBER), op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.VAL, i - 3), + op(VM.Opcodes.CONSTANTS, 1), op(VM.Opcodes.SENDER), op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), - op(VM.Opcodes.VAL, i - 4), + op(VM.Opcodes.CONSTANTS, 4), ]); - const TIER_BASED_DIS_FN = (i: number) => concat([ - op(VM.Opcodes.VAL, i - 1), - op(VM.Opcodes.VAL, arg(0)), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANTS, i), op(VM.Opcodes.SUB, 2), ]); - - const ACTIVATION_TIME_FN = (i: number) => + const ACTIVATION_TIME_FN = () => concat([ - op(VM.Opcodes.VAL, arg(1)), - op(VM.Opcodes.VAL, arg(2)), + op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.CONSTANTS, 7), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.VAL, i - 1), - ]); - - if (options?.tierActivation && options.tierActivation.length > 7) { - const TierDiscountActivation = paddedUInt256( - BigNumber.from( - '0x' + - paddedUInt32(options.tierActivation[7]) + - paddedUInt32(options.tierActivation[6]) + - paddedUInt32(options.tierActivation[5]) + - paddedUInt32(options.tierActivation[4]) + - paddedUInt32(options.tierActivation[3]) + - paddedUInt32(options.tierActivation[2]) + - paddedUInt32(options.tierActivation[1]) + - paddedUInt32(options.tierActivation[0]) - ) - ); - const constants = [ - ...config.constants, - TierDiscountActivation, - tierAddress, - TierDiscount, - '100', - ]; - config.sources[Index] = concat([ - config.sources[Index], - TIER_BASED_DIS(constants.length), - ACTIVATION_TIME(constants.length), - TIER_BASED_DIS_ZIMAP(constants.length, config.sources.length, 2), + op(VM.Opcodes.CONSTANTS, 3), ]); - const sources = [ - ...config.sources, - concat([ - ACTIVATION_TIME_FN(constants.length), - TIER_BASED_DIS_FN(constants.length), - op(VM.Opcodes.EAGER_IF), - ]), - ]; - return { - constants, - sources, - stackLength: Number(config.stackLength) + 30, - argumentsLength: Number(config.argumentsLength) + 3, + const _discounterConfig: StateConfig = options?.tierActivation + ? { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierDiscount, + '100', + paddedUInt256( + BigNumber.from( + '0x' + + paddedUInt32(options.tierActivation[7]) + + paddedUInt32(options.tierActivation[6]) + + paddedUInt32(options.tierActivation[5]) + + paddedUInt32(options.tierActivation[4]) + + paddedUInt32(options.tierActivation[3]) + + paddedUInt32(options.tierActivation[2]) + + paddedUInt32(options.tierActivation[1]) + + paddedUInt32(options.tierActivation[0]) + ) + ), + ], + sources: [ + concat([ + TIER_BASED_DIS(), + ACTIVATION_TIME(), + TIER_BASED_DIS_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_DIS_FN(5), + op(VM.Opcodes.EAGER_IF) + ]) + ] + } : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierDiscount, + '100' + ], + sources: [ + concat([ + TIER_BASED_DIS(), + TIER_BASED_DIS_ZIPMAP(0), + ]), + TIER_BASED_DIS_FN(4) + ] }; - } else { - const constants = [...config.constants, tierAddress, TierDiscount, '100']; - config.sources[Index] = concat([ - config.sources[Index], - TIER_BASED_DIS(constants.length), - TIER_BASED_DIS_ZIMAP(constants.length, config.sources.length, 0), - ]); - const sources = [...config.sources, TIER_BASED_DIS_FN(constants.length)]; - return { - constants, - sources, - stackLength: Number(config.stackLength) + 20, - argumentsLength: Number(config.argumentsLength) + 1, - }; - } + + return VM.combiner(config, _discounterConfig, {index: Index}); } + /** * Multiply the result of a VM script based on the holding tier of a tier contract. * @@ -664,7 +783,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static tierBasedMultiplier( + public static toTierMultiplier( config: StateConfig, tierAddress: string, tierMultiplier: number[], @@ -690,10 +809,10 @@ export class VM { ) ); - const TIER_BASED_MUL = (i: number) => + const TIER_BASED_MUL = () => concat([ - op(VM.Opcodes.VAL, i - 3), - op(VM.Opcodes.VAL, i - 4), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 1), op(VM.Opcodes.SENDER), op(VM.Opcodes.REPORT), op(VM.Opcodes.BLOCK_NUMBER), @@ -702,113 +821,94 @@ export class VM { selectLte(selectLteLogic.every, selectLteMode.first, 2) ), ]); - - const TIER_BASED_MUL_ZIPMAP = ( - i: number, - sourceIndex: number, - valSize: number - ) => + const TIER_BASED_MUL_ZIPMAP = (valSize: number) => concat([ - op(VM.Opcodes.ZIPMAP, callSize(sourceIndex, 3, valSize)), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), op(VM.Opcodes.MAX, 8), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.VAL, i - 2), + op(VM.Opcodes.CONSTANTS, 3), op(VM.Opcodes.DIV, 2), ]); - - const ACTIVATION_TIME = (i: number) => + const ACTIVATION_TIME = () => concat([ - op(VM.Opcodes.NEVER), + op(VM.Opcodes.CONSTANTS, 0), op(VM.Opcodes.BLOCK_NUMBER), op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.VAL, i - 4), + op(VM.Opcodes.CONSTANTS, 1), op(VM.Opcodes.SENDER), op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), - op(VM.Opcodes.VAL, i - 5), + op(VM.Opcodes.CONSTANTS, 5), ]); - const TIER_BASED_MUL_FN = (i: number) => concat([ - op(VM.Opcodes.VAL, arg(0)), - op(VM.Opcodes.VAL, i - 1), + op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.CONSTANTS, 4), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.VAL, arg(0)), - op(VM.Opcodes.VAL, i - 2), + op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.CONSTANTS, 3), op(VM.Opcodes.EAGER_IF), ]); - - const ACTIVATION_TIME_FN = (i: number) => + const ACTIVATION_TIME_FN = () => concat([ - op(VM.Opcodes.VAL, arg(1)), - op(VM.Opcodes.VAL, arg(2)), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANTS, 8), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.VAL, i - 2), + op(VM.Opcodes.CONSTANTS, 3), ]); - if (options?.tierActivation && options.tierActivation.length > 7) { - const TierMultiplierActivation = paddedUInt256( - BigNumber.from( - '0x' + - paddedUInt32((options.tierActivation[7])) + - paddedUInt32((options.tierActivation[6])) + - paddedUInt32((options.tierActivation[5])) + - paddedUInt32((options.tierActivation[4])) + - paddedUInt32((options.tierActivation[3])) + - paddedUInt32((options.tierActivation[2])) + - paddedUInt32((options.tierActivation[1])) + - paddedUInt32((options.tierActivation[0])) - ) - ); - const constants = [ - ...config.constants, - TierMultiplierActivation, - tierAddress, - TierMultiplier, - '100', - '0xffffffff', - ]; - config.sources[Index] = concat([ - config.sources[Index], - TIER_BASED_MUL(constants.length), - ACTIVATION_TIME(constants.length), - TIER_BASED_MUL_ZIPMAP(constants.length, config.sources.length, 2), - ]); - const sources = [ - ...config.sources, - concat([ - ACTIVATION_TIME_FN(constants.length), - TIER_BASED_MUL_FN(constants.length), - op(VM.Opcodes.EAGER_IF), - ]), - ]; - return { - constants, - sources, - stackLength: Number(config.stackLength) + 30, - argumentsLength: Number(config.argumentsLength) + 3, - }; - } else { - const constants = [ - ...config.constants, - tierAddress, - TierMultiplier, - '100', - '0xffffffff', - ]; - config.sources[Index] = concat([ - config.sources[Index], - TIER_BASED_MUL(constants.length), - TIER_BASED_MUL_ZIPMAP(constants.length, config.sources.length, 0), - ]); - const sources = [...config.sources, TIER_BASED_MUL_FN(constants.length)]; - return { - constants, - sources, - stackLength: Number(config.stackLength) + 20, - argumentsLength: Number(config.argumentsLength) + 1, + const _multiplierConfig: StateConfig = options?.tierActivation + ? { + constants:[ + ethers.constants.MaxUint256, + tierAddress, + TierMultiplier, + '100', + '0xffffffff', + paddedUInt256( + BigNumber.from( + '0x' + + paddedUInt32(options.tierActivation[7]) + + paddedUInt32(options.tierActivation[6]) + + paddedUInt32(options.tierActivation[5]) + + paddedUInt32(options.tierActivation[4]) + + paddedUInt32(options.tierActivation[3]) + + paddedUInt32(options.tierActivation[2]) + + paddedUInt32(options.tierActivation[1]) + + paddedUInt32(options.tierActivation[0]) + ) + ), + ], + sources: [ + concat([ + TIER_BASED_MUL(), + ACTIVATION_TIME(), + TIER_BASED_MUL_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_MUL_FN(6), + op(VM.Opcodes.EAGER_IF) + ]) + ] + } : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierMultiplier, + '100', + '0xffffffff' + ], + sources: [ + concat([ + TIER_BASED_MUL(), + TIER_BASED_MUL_ZIPMAP(0), + ]), + TIER_BASED_MUL_FN(5) + ] }; - } + + return VM.combiner(config, _multiplierConfig, {index: Index}); } @@ -821,7 +921,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static timeSliceScripts ( + public static toTimeSlicer ( configs: StateConfig[], times: number[], inBlockNumber: boolean = false @@ -836,7 +936,7 @@ export class VM { constants: [times[i], times[i+1]], sources: [ concat([ - op(VM.Opcodes.VAL, 0), + op(VM.Opcodes.CONSTANTS, 0), inBlockNumber ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), @@ -844,25 +944,23 @@ export class VM { inBlockNumber ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.VAL, 1), + op(VM.Opcodes.CONSTANTS, 1), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.EVERY), ]) ], - stackLength: 7, - argumentsLength: 0 } }; - _result = VM.vmCombiner(SLICER(0), configs[0]); + _result = VM.combiner(SLICER(0), configs[0]); for (let i = 1; i < configs.length; i++) { if (i + 1 == configs.length) { - _result = VM.vmCombiner(_result, configs[i]) + _result = VM.combiner(_result, configs[i]) } else { - _result = VM.vmCombiner(_result, SLICER(i)) - _result = VM.vmCombiner(_result, configs[i]) + _result = VM.combiner(_result, SLICER(i)) + _result = VM.combiner(_result, configs[i]) } } for (let i = 1; i < configs.length; i++) { @@ -870,11 +968,11 @@ export class VM { _result.sources[0], op(VM.Opcodes.EAGER_IF) ]); - _result.stackLength = Number(_result.stackLength) + 1; } return _result; } else throw new Error("invalid arguments") } + } diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index 1d003b6..a3c2cec 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -1,32 +1,48 @@ +import { TierContract } from '../classes/tierContract'; +import { StateConfig, StorageOpcodesRange } from '../classes/vm'; import { - Signer, - BigNumber, - BytesLike, - BigNumberish, - ContractTransaction, -} from 'ethers'; + EmissionsERC20__factory, + EmissionsERC20Factory__factory, +} from '../typechain'; import { ERC20Config, TxOverrides, ReadTxOverrides, } from '../classes/rainContract'; -import { StateConfig, AllStandardOps } from '../classes/vm'; -import { TierContract } from '../classes/tierContract'; import { - EmissionsERC20__factory, - EmissionsERC20Factory__factory, -} from '../typechain'; + Signer, + BigNumber, + BytesLike, + BigNumberish, + ContractTransaction, +} from 'ethers'; + /** - * @public - * Type for the opcodes availables in a EmissionsERC20 instance. + * Enum for operand of the emissionsERC20's CONTEXT opcode + */ + export enum EmissionsERC20Context { + /** + * 0 or the index of the context array in the emissionsERC20 + * contract used as the operand for CONTEXT opcode. + * operand for CONTEXT opcode to stack the claimant account that report is being call for. + */ + ClaimantAccount, + /** + * length of EmissionsERC20's valid context opcodes + */ + length +} + +/** + * Enum for operand of the EmissionsERC20's STORAGE opcode */ -export type EmissionsERC20Opcodes = typeof AllStandardOps & { + export enum EmissionsERC20Storage { /** - * local opcode to put claimant account on the stack. + * length of EmissionsERC20's valid storage opcodes */ - CLAIMANT_ACCOUNT: number; -}; + length +} /** * @public @@ -59,9 +75,12 @@ export class EmissionsERC20 extends TierContract { * */ constructor(address: string, signer: Signer) { + EmissionsERC20.checkAddress(address); + super(address, signer); const _emission = EmissionsERC20__factory.connect(address, signer); + this.allowDelegatedClaims = _emission.allowDelegatedClaims; this.allowance = _emission.allowance; this.approve = _emission.approve; @@ -76,19 +95,10 @@ export class EmissionsERC20 extends TierContract { this.totalSupply = _emission.totalSupply; this.transfer = _emission.transfer; this.transferFrom = _emission.transferFrom; + this.fnPtrs = _emission.fnPtrs; + this.storageOpcodesRange = _emission.storageOpcodesRange; } - /** - * All the opcodes avaialbles in the EmissionsERC20 contract. - * - * @remarks - * This expose all the standard opcodes along with the specific opcodes of the EmissionsERC20. - */ - public static Opcodes: EmissionsERC20Opcodes = { - ...AllStandardOps, - CLAIMANT_ACCOUNT: 0 + AllStandardOps.length, - }; - /** * Deploys a new EmissionsERC20. * @@ -352,6 +362,24 @@ export class EmissionsERC20 extends TierContract { amount: BigNumberish, overrides?: TxOverrides ) => Promise; + + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param override - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + + /** + * Returns the pointer and length for emissionERC20's storage opcodes + * + * @param override - @see ReadTxOverrides + * @returns a StorageOpcodesRange + */ + public readonly storageOpcodesRange: ( + overrides?: ReadTxOverrides + ) => Promise; } /** diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index 4ceae52..88c0e8b 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -1,42 +1,66 @@ import { BigNumberish, BigNumber, Signer, ContractTransaction } from 'ethers'; +import { StateConfig, StorageOpcodesRange } from '../classes/vm'; +import { FactoryContract } from '../classes/factoryContract'; +import { RedeemableERC20 } from './redeemableERC20'; +import { ERC20 } from './generics/erc20'; +import { Sale__factory, SaleFactory__factory } from '../typechain'; import { ERC20Config, TxOverrides, ReadTxOverrides, } from '../classes/rainContract'; -import { StateConfig, VM } from '../classes/vm'; -import { FactoryContract } from '../classes/factoryContract'; -import { RedeemableERC20 } from './redeemableERC20'; -import { ERC20 } from './generics/erc20'; -import { Sale__factory, SaleFactory__factory } from '../typechain'; + /** - * @public - * Type for the opcodes availables in a CombineTier instance. + * Enum for operand of the sale's Storage Opcodes */ -export type SaleOpcodes = typeof VM.Opcodes & { +export enum SaleStorage { /** - * local opcode to stack remaining rTKN units. + * 0 or the location of the _remainingUnits property in the sale + * contract used as the operand for STORAGE opcode + * operand for STORAGE opcode to stack remaining rTKN units. */ - REMAINING_UNITS: number; + RemainingUnits, /** - * local opcode to stack total reserve taken in so far. + * 1 or the location of the _totalReserveIn property in the sale + * contract used as the operand for STORAGE opcode. + * operand for STORAGE opcode to stack total reserve taken in so far. */ - TOTAL_RESERVE_IN: number; + TotalReserveIn, /** - * local opcode to stack the rTKN units/amount of the current buy. + * 2 or the location of the _token property in the sale + * contract used as the operand for STORAGE opcode. + * operand for STORAGE opcode to stack the address of the rTKN. */ - CURRENT_BUY_UNITS: number; + TokenAddress, /** - * local opcode to stack the address of the rTKN. + * 3 or the location of the _reserve property in the sale + * contract used as the operand for STORAGE opcode. + * operand for STORAGE opcode to stack the address of the reserve token. */ - TOKEN_ADDRESS: number; + ReserveAddress, /** - * local opcode to stack the address of the reserve token. + * length of Sale's valid storage opcodes */ - RESERVE_ADDRESS: number; + length }; +/** + * Enum for operand of the sale's CONTEXT opcode + */ +export enum SaleContext { + /** + * 0 or the index of the context array in the sale + * contract used as the operand for CONTEXT opcode. + * operand for CONTEXT opcode to stack the rTKN units/amount of the current buy. + */ + CurrentBuyUnits, + /** + * length of Sale's valid context opcode + */ + length +} + /** * @public * A class for deploying and calling methods on a Sale. @@ -78,30 +102,19 @@ export class Sale extends FactoryContract { this.buy = _sale.buy; this.refund = _sale.refund; - this.calculatePrice = _sale.calculatePrice; + this.calculateBuy = _sale.calculateBuy; this.claimFees = _sale.claimFees; this.start = _sale.start; this.end = _sale.end; - this.canStart = _sale.canStart; - this.canEnd = _sale.canEnd; + this.canLive = _sale.canLive; this.saleStatus = _sale.saleStatus; this.timeout = _sale.timeout; this.reserve = _sale.reserve; this.token = _sale.token; + this.fnPtrs = _sale.fnPtrs; + this.storageOpcodesRange = _sale.storageOpcodesRange; } - /** - * All the standard and Sale Opcodes - */ - public static Opcodes: SaleOpcodes = { - ...VM.Opcodes, - REMAINING_UNITS: 0 + VM.Opcodes.length, - TOTAL_RESERVE_IN: 1 + VM.Opcodes.length, - CURRENT_BUY_UNITS: 2 + VM.Opcodes.length, - TOKEN_ADDRESS: 3 + VM.Opcodes.length, - RESERVE_ADDRESS: 4 + VM.Opcodes.length, - }; - /** * Deploys a new Sale. * @@ -213,15 +226,14 @@ export class Sale extends FactoryContract { /** * Calculates the current reserve price quoted for 1 unit of rTKN. Used internally to process `buy` * - * @param units - Amount of rTKN to quote a price for, will be available to the price script from - * OPCODE_CURRENT_BUY_UNITS. + * @param targetUnits - Amount of rTKN to quote a price for, will be available for vm as CONTEXT opcode. * @param overrides - @see ReadTxOverrides - * @returns The current price + * @returns The max units that can be bought and current price. */ - public readonly calculatePrice: ( - units: BigNumberish, + public readonly calculateBuy: ( + targetUnits: BigNumberish, overrides?: ReadTxOverrides - ) => Promise; + ) => Promise<[BigNumber, BigNumber]>; /** * After a sale ends in success all fees collected for a recipient can be cleared. If the @@ -238,8 +250,9 @@ export class Sale extends FactoryContract { ) => Promise; /** - * Start the sale (move from pending to active). - * - `canStart` MUST return true. + * Start the sale (move from pending to active). This is also done automatically + * inline with each `buy` call so is optional for anon to call outside of a purchase. + * - `canLive` MUST return true and sale status must be `Pending`. * * @param overrides - @see TxOverrides */ @@ -249,7 +262,9 @@ export class Sale extends FactoryContract { /** * End the sale (move from active to success or fail). - * - `canEnd` MUST return true. + * This is also done automatically inline with each `buy` call so is + * optional for anon to call outside of a purchase. + * - `canLive` MUST return true and sale status must be either `Active`. * * @param overrides - @see TxOverrides */ @@ -258,28 +273,19 @@ export class Sale extends FactoryContract { ) => Promise; /** - * Can the sale start? - * Evals `canStartStatePointer` to a boolean that determines whether the sale can start - * (move from pending to active). Buying from and ending the sale will both always fail - * if the sale never started. - * The sale can ONLY start if it is currently in pending status. - * + * Can the sale live? + * Evals the "can live" script. + * If a non zero value is returned then the sale can move from pending to + * active, or remain active. + * If a zero value is returned the sale can remain pending or move from + * active to a finalised status. + * An out of stock (0 remaining units) WILL ALWAYS return `false` without + * evaluating the script. + * * @param overrides - @see ReadTxOverrides * @returns true if can start the sale */ - public readonly canStart: (overrides?: ReadTxOverrides) => Promise; - - /** - * Can the sale end? - * Evals `canEndStatePointer` to a boolean that determines whether the sale can end (move - * from active to success/fail). Buying will fail if the sale has ended. If the sale is out - * of rTKN stock it can ALWAYS end and in this case will NOT eval the "can end" script. - * The sale can ONLY end if it is currently in active status. - * - * @param overrides - @see ReadTxOverrides - * @returns true if can end the sale - */ - public readonly canEnd: (overrides?: ReadTxOverrides) => Promise; + public readonly canLive: (overrides?: ReadTxOverrides) => Promise; /** * Returns the current `SaleStatus` of the sale. @@ -321,6 +327,24 @@ export class Sale extends FactoryContract { * @returns the token redeemable address */ public readonly token: (overrides?: ReadTxOverrides) => Promise; + + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param override - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + + /** + * Returns the pointer and length for sale's storage opcodes + * + * @param override - @see ReadTxOverrides + * @returns a StorageOpcodesRange + */ + public readonly storageOpcodesRange: ( + overrides?: ReadTxOverrides + ) => Promise; } /** @@ -330,18 +354,11 @@ export class Sale extends FactoryContract { */ export interface SaleConfig { /** - * State config for the script that allows a Sale to start. - */ - canStartStateConfig: StateConfig; - /** - * State config for the script that allows a Sale to end. IMPORTANT: A Sale can always end if/when its rTKN sells out, regardless - * of the result of this script. - */ - canEndStateConfig: StateConfig; - /** - * State config for the script that defines the current price quoted by a Sale. + * SateConfig that has both canLive and calculateBuy StateConfigs for a sale. + * The first item in the sources is the canLive StateConfig and the second item + * in the sources is the calculateBuy StateConfig. */ - calculatePriceStateConfig: StateConfig; + vmStateConfig: StateConfig; /** * The recipient of the proceeds of a Sale, if/when the Sale is successful. */ diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index d4314c8..51fa791 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -1,6 +1,6 @@ import { StateConfig, VM } from '../../classes/vm'; -import { BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { CombineTier } from '../tiers/combineTier'; +import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; +import { CombineTierContext } from '../tiers/combineTier'; import { Tier } from '../../classes/tierContract'; import { concat, @@ -8,7 +8,6 @@ import { selectLte, callSize, tierRange, - arg, paddedUInt32, paddedUInt256, selectLteLogic, @@ -28,8 +27,6 @@ export class CombineTierGenerator { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** * Constructor for this class @@ -42,19 +39,18 @@ export class CombineTierGenerator { this.constants = [reportVar]; this.sources = [ concat([ - op(CombineTier.Opcodes.VAL, 0), - op(CombineTier.Opcodes.ACCOUNT), - op(CombineTier.Opcodes.REPORT), + op(VM.Opcodes.CONSTANTS, 0), + op( + VM.Opcodes.CONTEXT, + CombineTierContext.Account + ), + op(VM.Opcodes.REPORT), ]) ]; - this.stackLength = 3; - this.argumentsLength = 0; } else { this.constants = reportVar.constants; this.sources = reportVar.sources; - this.stackLength = reportVar.stackLength; - this.argumentsLength = reportVar.argumentsLength; } } @@ -84,22 +80,18 @@ export class CombineTierGenerator { sources: [ concat([ number - ? op(CombineTier.Opcodes.VAL, 0) - : op(CombineTier.Opcodes.BLOCK_NUMBER), - op(CombineTier.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)) + ? op(VM.Opcodes.CONSTANTS, 0) + : op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)) ]) ], - stackLength: 2, - argumentsLength: 0 } - let _result: StateConfig = VM.vmCombiner(_buttom, _combiner); - _result = VM.vmCombiner(this, _result); + let _result: StateConfig = VM.combiner(_buttom, _combiner); + _result = VM.combiner(this, _result); this.constants = _result.constants; this.sources = _result.sources; - this.stackLength = _result.stackLength; - this.argumentsLength = _result.argumentsLength; return this; } @@ -124,24 +116,20 @@ export class CombineTierGenerator { sources: [ concat([ number - ? op(CombineTier.Opcodes.VAL, 0) - : op(CombineTier.Opcodes.BLOCK_NUMBER), + ? op(VM.Opcodes.CONSTANTS, 0) + : op(VM.Opcodes.BLOCK_NUMBER), op( - CombineTier.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(startTier, endTier) ), ]) ], - stackLength: 2, - argumentsLength: 0 }; - const _result: StateConfig = VM.vmCombiner(this, _updater); + const _result: StateConfig = VM.combiner(this, _updater); this.constants = _result.constants; this.sources = _result.sources; - this.stackLength = _result.stackLength; - this.argumentsLength = _result.argumentsLength; return this } @@ -166,20 +154,16 @@ export class CombineTierGenerator { constants: [], sources: [ concat([ - op(CombineTier.Opcodes.SATURATING_DIFF) + op(VM.Opcodes.SATURATING_DIFF) ]) ], - stackLength: 1, - argumentsLength: 0 }; - let _result: StateConfig = VM.vmCombiner(_buttom, _differ); - _result = VM.vmCombiner(this, _result); + let _result: StateConfig = VM.combiner(_buttom, _differ); + _result = VM.combiner(this, _result); this.constants = _result.constants; this.sources = _result.sources; - this.stackLength = _result.stackLength; - this.argumentsLength = _result.argumentsLength; return this; } @@ -240,35 +224,31 @@ export class CombineTierGenerator { ], sources: [ concat([ - op(CombineTier.Opcodes.VAL, 0), - op(CombineTier.Opcodes.VAL, 1), - op(CombineTier.Opcodes.ZIPMAP, callSize(1, 3, 2)), - op(CombineTier.Opcodes.ADD, 8) + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 2)), + op(VM.Opcodes.ADD, 8) ]), concat([ - op(CombineTier.Opcodes.BLOCK_NUMBER), - op(CombineTier.Opcodes.VAL, arg(0)), - op(CombineTier.Opcodes.SATURATING_SUB, 2), - op(CombineTier.Opcodes.VAL, arg(1)), - op(CombineTier.Opcodes.LESS_THAN), - op(CombineTier.Opcodes.VAL, 4), - op(CombineTier.Opcodes.VAL, 3), - op(CombineTier.Opcodes.EAGER_IF), - op(CombineTier.Opcodes.VAL, 2), - op(CombineTier.Opcodes.VAL, arg(2)), - op(CombineTier.Opcodes.EXP, 2), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.EXP, 2), ]) ], - stackLength: 15, - argumentsLength: 3 }; - _result = VM.vmCombiner(_report, _result); + _result = VM.combiner(_report, _result); this.constants = _result.constants; this.sources = _result.sources; - this.stackLength = _result.stackLength; - this.argumentsLength = _result.argumentsLength; return this; } @@ -309,28 +289,24 @@ export class BuildReport extends CombineTierGenerator { ], sources: [ concat([ - op(CombineTier.Opcodes.VAL, 0) + op(VM.Opcodes.CONSTANTS, 0) ]) ], - stackLength: 1, - argumentsLength: 0 } } else { _result = { - constants: [], + constants: [ethers.constants.MaxUint256], sources: [ concat([ - op(CombineTier.Opcodes.NEVER), - op(CombineTier.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.BLOCK_NUMBER), op( - CombineTier.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ) ]) ], - stackLength: 3, - argumentsLength: 0 } } super(_result); diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index e348c46..cb0af50 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -1,13 +1,13 @@ import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { EmissionsERC20 } from '../emissionsERC20'; +import { EmissionsERC20Context } from '../emissionsERC20'; import { Tier } from '../../classes/tierContract'; +import { VM } from '../../classes/vm'; import { concat, op, selectLte, callSize, tierRange, - arg, paddedUInt32, paddedUInt256, selectLteLogic, @@ -56,8 +56,6 @@ export class LinearEmissions { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** * Constructor for this class @@ -155,29 +153,29 @@ export class LinearEmissions { // prettier-ignore const REWARD = () => concat([ - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.MUL, 2), ]); // prettier-ignore const PROGRESS = () => concat([ - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 2), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.MIN, 2), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.MIN, 2), ]); // prettier-ignore const MULTIPLIER = () => concat([ PROGRESS(), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.ADD, 2), ]); // prettier-ignore @@ -185,18 +183,18 @@ export class LinearEmissions { concat([ REWARD(), MULTIPLIER(), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 4), - op(EmissionsERC20.Opcodes.DIV, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.DIV, 2), ]); // prettier-ignore const CURRENT_BLOCK_AS_REPORT = () => concat([ - op(EmissionsERC20.Opcodes.NEVER), - op(EmissionsERC20.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.BLOCK_NUMBER), op( - EmissionsERC20.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), ]); @@ -204,17 +202,23 @@ export class LinearEmissions { // prettier-ignore const LAST_CLAIM_REPORT = () => concat([ - op(EmissionsERC20.Opcodes.THIS_ADDRESS), - op(EmissionsERC20.Opcodes.CLAIMANT_ACCOUNT), - op(EmissionsERC20.Opcodes.REPORT), + op(VM.Opcodes.THIS_ADDRESS), + op( + VM.Opcodes.CONTEXT, + EmissionsERC20Context.ClaimantAccount + ), + op(VM.Opcodes.REPORT), ]); // prettier-ignore const TIER_REPORT = () => concat([ - op(EmissionsERC20.Opcodes.VAL, 0), - op(EmissionsERC20.Opcodes.CLAIMANT_ACCOUNT), - op(EmissionsERC20.Opcodes.REPORT), + op(VM.Opcodes.CONSTANTS, 1), + op( + VM.Opcodes.CONTEXT, + EmissionsERC20Context.ClaimantAccount + ), + op(VM.Opcodes.REPORT), ]); // prettier-ignore @@ -223,24 +227,25 @@ export class LinearEmissions { CURRENT_BLOCK_AS_REPORT(), TIER_REPORT(), LAST_CLAIM_REPORT(), - op(EmissionsERC20.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_NUMBER), op( - EmissionsERC20.Opcodes.SELECT_LTE, + VM.Opcodes.SELECT_LTE, selectLte(selectLteLogic.any, selectLteMode.max, 2) ), - op(EmissionsERC20.Opcodes.SATURATING_DIFF), + op(VM.Opcodes.SATURATING_DIFF), ]); // prettier-ignore const SOURCE = () => concat([ TIERWISE_DIFF(), - op(EmissionsERC20.Opcodes.VAL, 1), - op(EmissionsERC20.Opcodes.ZIPMAP, callSize(1, 3, 1)), - op(EmissionsERC20.Opcodes.ADD, 8), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), + op(VM.Opcodes.ADD, 8), ]); this.constants = [ + ethers.constants.MaxUint256, config.tierAddress, BASE_REWARD_PER_TIER, BLOCKS_PER_PERIOD, @@ -248,8 +253,7 @@ export class LinearEmissions { BN_ONE_REWARD, ]; this.sources = [SOURCE(), FN()]; - this.stackLength = (SOURCE().length + FN().length) / 2; - this.argumentsLength = 2 + }; } @@ -265,9 +269,6 @@ export class SequentialEmissions { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; - /** * Constructor for this class @@ -436,6 +437,7 @@ export class SequentialEmissions { ) this.constants = [ + ethers.constants.MaxUint256, config.tierAddress, PERIODIC_REWARD_PER_TIER, PERIODIC_INC_PER_TIER, @@ -450,118 +452,124 @@ export class SequentialEmissions { this.sources = [ concat([ - op(EmissionsERC20.Opcodes.NEVER), - op(EmissionsERC20.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.BLOCK_NUMBER), op( - EmissionsERC20.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), - op(EmissionsERC20.Opcodes.VAL, 0), - op(EmissionsERC20.Opcodes.CLAIMANT_ACCOUNT), - op(EmissionsERC20.Opcodes.REPORT), - op(EmissionsERC20.Opcodes.SATURATING_DIFF), - op(EmissionsERC20.Opcodes.THIS_ADDRESS), - op(EmissionsERC20.Opcodes.CLAIMANT_ACCOUNT), - op(EmissionsERC20.Opcodes.REPORT), - op(EmissionsERC20.Opcodes.VAL, 0), - op(EmissionsERC20.Opcodes.CLAIMANT_ACCOUNT), - op(EmissionsERC20.Opcodes.REPORT), - op(EmissionsERC20.Opcodes.SATURATING_DIFF), - op(EmissionsERC20.Opcodes.VAL, 1), - op(EmissionsERC20.Opcodes.VAL, 2), - op(EmissionsERC20.Opcodes.ZIPMAP, callSize(1, 3, 3)), - op(EmissionsERC20.Opcodes.ADD, 8), - op(EmissionsERC20.Opcodes.VAL, 4), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 5), - op(EmissionsERC20.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 1), + op( + VM.Opcodes.CONTEXT, + EmissionsERC20Context.ClaimantAccount + ), + op(VM.Opcodes.REPORT), + op(VM.Opcodes.SATURATING_DIFF), + op(VM.Opcodes.THIS_ADDRESS), + op( + VM.Opcodes.CONTEXT, + EmissionsERC20Context.ClaimantAccount + ), + op(VM.Opcodes.REPORT), + op(VM.Opcodes.CONSTANTS, 1), + op( + VM.Opcodes.CONTEXT, + EmissionsERC20Context.ClaimantAccount + ), + op(VM.Opcodes.REPORT), + op(VM.Opcodes.SATURATING_DIFF), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 3)), + op(VM.Opcodes.ADD, 8), + op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.DIV, 2), ]), concat([ - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, 6), - op(EmissionsERC20.Opcodes.GREATER_THAN), - op(EmissionsERC20.Opcodes.VAL, 6), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, 6), - op(EmissionsERC20.Opcodes.VAL, 7), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.ADD, 2), - op(EmissionsERC20.Opcodes.VAL, 8), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 9), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 8), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.VAL, 6), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.VAL, 6), - op(EmissionsERC20.Opcodes.VAL, 7), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.ADD, 2), - op(EmissionsERC20.Opcodes.VAL, arg(3)), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, 7), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.ADD, 2), - op(EmissionsERC20.Opcodes.VAL, 8), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 9), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.VAL, 8), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, arg(3)), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.EAGER_IF), - op(EmissionsERC20.Opcodes.VAL, arg(2)), - op(EmissionsERC20.Opcodes.VAL, arg(0)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.VAL, arg(1)), - op(EmissionsERC20.Opcodes.VAL, 3), - op(EmissionsERC20.Opcodes.DIV, 2), - op(EmissionsERC20.Opcodes.SATURATING_SUB, 2), - op(EmissionsERC20.Opcodes.MUL, 2), - op(EmissionsERC20.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 11), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 10), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 11), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 13), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 11), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 11), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 10), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 13), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANTS, 14), + op(VM.Opcodes.CONSTANTS, 11), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANTS, 12), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.ADD, 2), ]) ]; - - this.stackLength = ((this.sources[0].length + this.sources[1].length) / 2) + 25; - this. argumentsLength = 4; } } \ No newline at end of file diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index cdbd7df..52e345d 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -1,16 +1,26 @@ -import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { Sale } from '../sale'; +import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; +import { SaleContext, SaleStorage } from '../sale'; import { StateConfig, VM } from '../../classes/vm'; -import { parseUnits, concat, op } from '../../utils'; +import { parseUnits, concat, op, arrayify } from '../../utils'; /** * @public * Standard cap per wallet modes */ -export enum WalletCapMode { +export enum BuyCapMode { + /** + * minimum buy cap, i.e. cannot buy less than a specefied amount + */ min, + /** + * maximum buy cap, i.e. cannot buy more than a specefied amount + */ max, - both, + /** + * both minimum and maximum buy cap, i.e. cannot buy less than a specefied + * amount and more than another specified amount + */ + both } /** @@ -27,15 +37,13 @@ export enum WalletCapMode { * The general order for calling these methods is: * 1.applyExtraTimeDiscount * 2.applyTierDiscount - * 3.applyWalletCap * */ export class PriceCurve { + // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** * Constructor of PriceCurve class. @@ -45,8 +53,6 @@ export class PriceCurve { constructor(stateConfig: StateConfig) { this.constants = stateConfig.constants; this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; } /** @@ -71,45 +77,53 @@ export class PriceCurve { extraTimeDiscountThreshold: number, extraTimeDiscount: number ): this { - const EXTRA_TIME_DISCOUNT = (i: number) => + + let _saleDiscount: StateConfig; + + const EXTRA_TIME_DISCOUNT = () => concat([ - op(Sale.Opcodes.VAL, i - 4), - op(Sale.Opcodes.BLOCK_TIMESTAMP), - op(Sale.Opcodes.GREATER_THAN), - op(Sale.Opcodes.VAL, i - 3), - op(Sale.Opcodes.TOKEN_ADDRESS), - op(Sale.Opcodes.SENDER), - op(Sale.Opcodes.IERC20_BALANCE_OF), - op(Sale.Opcodes.GREATER_THAN), - op(Sale.Opcodes.ANY, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.STORAGE, SaleStorage.TokenAddress), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC20_BALANCE_OF), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.ANY, 2), ]); - const DISCOUNT_CONDITION_SOURCES = (i: number) => + const DISCOUNT_CONDITION_SOURCES = () => concat([ - op(Sale.Opcodes.VAL, i - 2), - op(Sale.Opcodes.MUL, 2), - op(Sale.Opcodes.VAL, i - 1), - op(Sale.Opcodes.DIV, 2), - op(Sale.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.EAGER_IF), ]); - this.constants.push( - endTimestamp, - parseUnits(extraTimeDiscountThreshold.toString()), - 100 - extraTimeDiscount, - 100 + _saleDiscount = VM.combiner( + this, + { + constants: [ + endTimestamp, + parseUnits(extraTimeDiscountThreshold.toString()), + 100 - extraTimeDiscount, + 100 + ], + sources: [EXTRA_TIME_DISCOUNT()] + }, + {position: [0]} ); - this.sources = [ - concat([ - EXTRA_TIME_DISCOUNT(this.constants.length), - ...this.sources, - op(Sale.Opcodes.DUP, 1), - DISCOUNT_CONDITION_SOURCES(this.constants.length), - ]), - ]; + _saleDiscount.sources[0] = concat([ + _saleDiscount.sources[0], + op(VM.Opcodes.STACK, 1), + DISCOUNT_CONDITION_SOURCES() + ]) - this.stackLength = Number(this.stackLength) + 20; + this.constants = _saleDiscount.constants; + this.sources = _saleDiscount.sources; return this; } @@ -119,8 +133,8 @@ export class PriceCurve { * * @param tierAddress - The Tier contract address. * @param tierDiscount - An array of each tiers' discount ranging between 0 - 99. - * @param tierActivation - (optional) An array of number of blocks for each tier that will be the required period of time for that tiered - * address to hold the tier's in order to be eligible for that tier's discount. + * @param tierActivation - (optional) An array of number of blocks for each tier that will be the required period + * of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. * * @returns this * @@ -130,203 +144,20 @@ export class PriceCurve { tierDiscount: number[], tierActivation?: (number | string)[] ): this { - const stateConfig = VM.tierBasedDiscounter( + + const _discountConfig = VM.toTierDiscounter( this, tierAddress, tierDiscount, { tierActivation } ); - this.constants = stateConfig.constants; - this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; - - return this; - } - - /** - * Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. - * With the option of applying multiplier for max cap per wallet. - * - * @param mode - The mode that determines if there is max or min cap per wallet or both. - * @param options - (optional) Additional arguments to configure the cap per wallet behaviour: - * - (param) minWalletCap - The number for min cap per wallet, addresses cannot buy less number of rTKNs than this amount. - * - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. - * - (param) tierMultiplierMode - Set true in order to apply Multiplier for max cap per wallet. - * - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. - * - (param) tierMultiplier - An array of each tiers' Multiplier value. - * - (param) tierActivation - An array of number of blocks for each tier that will be the required period of time for that tiered - * address to hold the tier's in order to be eligible for that tier's multiplier. - * - * @returns this - * - */ - public applyWalletCap( - mode: WalletCapMode, - options?: { - minWalletCap?: number; - maxWalletCap?: number; - tierMultiplierMode?: boolean; - tierAddress?: string; - tierMultiplier?: number[]; - tierActivation?: (number | string)[]; - } - ): this { - const MIN_CAP_SOURCES = (i: number) => - concat([ - op(Sale.Opcodes.VAL, i), - op(Sale.Opcodes.CURRENT_BUY_UNITS), - op(Sale.Opcodes.TOKEN_ADDRESS), - op(Sale.Opcodes.SENDER), - op(Sale.Opcodes.IERC20_BALANCE_OF), - op(Sale.Opcodes.ADD, 2), - op(Sale.Opcodes.LESS_THAN), - ]); - const MAX_CAP_SOURCES = () => - concat([ - op(Sale.Opcodes.CURRENT_BUY_UNITS), - op(Sale.Opcodes.TOKEN_ADDRESS), - op(Sale.Opcodes.SENDER), - op(Sale.Opcodes.IERC20_BALANCE_OF), - op(Sale.Opcodes.ADD, 2), - op(Sale.Opcodes.GREATER_THAN), - ]); - if (mode == WalletCapMode.min && options?.minWalletCap) { - this.constants.push( - parseUnits(options.minWalletCap.toString()).sub(1), - ethers.constants.MaxUint256 - ); - this.sources[0] = concat([ - this.sources[0], - MIN_CAP_SOURCES(this.constants.length - 2), - op(Sale.Opcodes.DUP, 0), - op(Sale.Opcodes.VAL, this.constants.length - 1), - op(Sale.Opcodes.EAGER_IF), - ]); - this.stackLength = Number(this.stackLength) + 15; + this.constants = _discountConfig.constants; + this.sources = _discountConfig.sources; - return this; - } else if (mode == WalletCapMode.max && options?.maxWalletCap) { - if ( - options.tierMultiplierMode && - options.tierAddress && - options.tierMultiplier - ) { - let maxCapConfig: StateConfig = { - constants: [parseUnits(options.maxWalletCap.toString())], - sources: [concat([op(Sale.Opcodes.VAL, 0)])], - stackLength: 1, - argumentsLength: 0, - }; - maxCapConfig = VM.tierBasedMultiplier( - maxCapConfig, - options.tierAddress, - options.tierMultiplier, - { tierActivation: options.tierActivation } - ); - maxCapConfig.constants.push(1, ethers.constants.MaxUint256); - maxCapConfig.sources[0] = concat([ - maxCapConfig.sources[0], - op(Sale.Opcodes.VAL, maxCapConfig.constants.length - 2), - op(Sale.Opcodes.ADD, 2), - MAX_CAP_SOURCES(), - op(Sale.Opcodes.DUP, 0), - op(Sale.Opcodes.VAL, maxCapConfig.constants.length - 1), - op(Sale.Opcodes.EAGER_IF), - ]); - const stateConfig = VM.vmCombiner(this, maxCapConfig); - this.constants = stateConfig.constants; - this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; - - return this; - } else { - this.constants.push( - parseUnits(options.maxWalletCap.toString()).add(1), - ethers.constants.MaxUint256 - ); - this.sources[0] = concat([ - this.sources[0], - op(Sale.Opcodes.VAL, this.constants.length - 2), - MAX_CAP_SOURCES(), - op(Sale.Opcodes.VAL, this.constants.length - 1), - op(Sale.Opcodes.EAGER_IF), - ]); - this.stackLength = Number(this.stackLength) + 10; - - return this; - } - } else if ( - mode == WalletCapMode.both && - options?.minWalletCap && - options?.maxWalletCap - ) { - if ( - options.tierMultiplierMode && - options.tierAddress && - options.tierMultiplier - ) { - let bothCapConfig: StateConfig = { - constants: [parseUnits(options.maxWalletCap.toString())], - sources: [concat([op(Sale.Opcodes.VAL, 0)])], - stackLength: 1, - argumentsLength: 0, - }; - bothCapConfig = VM.tierBasedMultiplier( - bothCapConfig, - options.tierAddress, - options.tierMultiplier, - { tierActivation: options.tierActivation } - ); - bothCapConfig.constants.push( - 1, - parseUnits(options.minWalletCap.toString()).sub(1), - ethers.constants.MaxUint256 - ); - bothCapConfig.sources[0] = concat([ - bothCapConfig.sources[0], - op(Sale.Opcodes.VAL, bothCapConfig.constants.length - 3), - op(Sale.Opcodes.ADD, 2), - MAX_CAP_SOURCES(), - MIN_CAP_SOURCES(bothCapConfig.constants.length - 2), - op(Sale.Opcodes.EVERY, 2), - op(Sale.Opcodes.DUP, 0), - op(Sale.Opcodes.VAL, bothCapConfig.constants.length - 1), - op(Sale.Opcodes.EAGER_IF), - ]); - const stateConfig = VM.vmCombiner(this, bothCapConfig); - this.constants = stateConfig.constants; - this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; - - return this; - } else { - this.constants.push( - parseUnits(options.maxWalletCap.toString()).add(1), - parseUnits(options.minWalletCap.toString()).sub(1), - ethers.constants.MaxUint256 - ); - this.sources[0] = concat([ - this.sources[0], - op(Sale.Opcodes.VAL, this.constants.length - 3), - MAX_CAP_SOURCES(), - MIN_CAP_SOURCES(this.constants.length - 2), - op(Sale.Opcodes.EVERY, 2), - op(Sale.Opcodes.DUP, 0), - op(Sale.Opcodes.VAL, this.constants.length - 1), - op(Sale.Opcodes.EAGER_IF), - ]); - this.stackLength = Number(this.stackLength) + 25; - - return this; - } - } else { - throw new Error('Invalid arguments'); - } + return this; } + } /** @@ -352,14 +183,16 @@ export class FixedPrice extends PriceCurve { constructor(price: BigNumberish, erc20decimals: number = 18) { super({ constants: [parseUnits(BigNumber.from(price).toString(), erc20decimals)], - sources: [FixedPrice.FIXED_PRICE_SOURCES()], - stackLength: 1, - argumentsLength: 0, + sources: [ + concat([ + FixedPrice.FIXED_PRICE_SOURCES() + ]) + ] }); } // fixed price script - public static FIXED_PRICE_SOURCES = () => concat([op(Sale.Opcodes.VAL, 0)]); + public static FIXED_PRICE_SOURCES = () => concat([op(VM.Opcodes.CONSTANTS, 0)]); } /** @@ -409,30 +242,32 @@ export class vLBP extends PriceCurve { startTimestamp, parseUnits((1).toString()), ], - sources: [vLBP.vLBP_SOURCES()], - stackLength: 15, - argumentsLength: 0, + sources: [ + concat([ + vLBP.vLBP_SOURCES() + ]) + ] }); } //vLBP script public static vLBP_SOURCES = () => concat([ - op(Sale.Opcodes.TOTAL_RESERVE_IN), - op(Sale.Opcodes.VAL, 0), - op(Sale.Opcodes.ADD, 2), - op(Sale.Opcodes.VAL, 1), - op(Sale.Opcodes.BLOCK_TIMESTAMP), - op(Sale.Opcodes.VAL, 3), - op(Sale.Opcodes.SATURATING_SUB, 2), - op(Sale.Opcodes.VAL, 2), - op(Sale.Opcodes.MUL, 2), - op(Sale.Opcodes.SATURATING_SUB, 2), - op(Sale.Opcodes.VAL, 4), - op(Sale.Opcodes.MAX, 2), - op(Sale.Opcodes.MUL, 2), - op(Sale.Opcodes.REMAINING_UNITS), - op(Sale.Opcodes.DIV, 2), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.MAX, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), + op(VM.Opcodes.DIV, 2), ]); } @@ -476,73 +311,82 @@ export class IncreasingPrice extends PriceCurve { parseUnits(priceChange.toFixed(5).toString()), startTimestamp, ], - sources: [IncreasingPrice.INC_PRICE_SOURCES()], - stackLength: 10, - argumentsLength: 0, + sources: [ + concat([ + IncreasingPrice.INC_PRICE_SOURCES() + ]) + ] }); } // linear increasing price script public static INC_PRICE_SOURCES = () => concat([ - op(Sale.Opcodes.BLOCK_TIMESTAMP), - op(Sale.Opcodes.VAL, 3), - op(Sale.Opcodes.SUB, 2), - op(Sale.Opcodes.VAL, 2), - op(Sale.Opcodes.MUL, 2), - op(Sale.Opcodes.VAL, 0), - op(Sale.Opcodes.ADD, 2), - op(Sale.Opcodes.VAL, 1), - op(Sale.Opcodes.MIN, 2), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.SUB, 2), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.MIN, 2), ]); } /** - * @public - A class used for creating a VM state for Sale's canEnd/StartStateConfig based on timestamp. + * @public - A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. * - * @remarks - If the VM result is greater than '0' then sale can start/end and if it is '0' it simply + * @remarks - If the VM result is greater than '0' then sale can live and if it is '0' it simply * cannot. The basic constructed object is a simple timestamp based condition for sale's - * canStart/EndStateConfig, but with using the methods in the class more complex conditions + * canLive StateConfig, but with using the methods in the class more complex conditions * can be created for how the sale's duration will work. * * @remarks - Like all the method calls, order of calling methods in this class is important in order to produce * the desired result, although calling in any order will produce a reliable result, that depends on what the * intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. * The general methods calling order in this class is: - * 1.applyExtarTime + * 1.applyExtarTime or afterMinimumRaise (one of which only) * 2.applyOwner * * @example * ```typescript - * //For generating a canStart/End StateConfig for the sale pass in the required arguments to the constructor. - * const saleType = new SaleDuration(timestamp) + * //For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. + * const saleDuration = new SaleDuration(startTimestamp, endTimestamp) * ``` */ export class SaleDurationInTimestamp { + // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** - * Constructs a new canStart/End config to be used in a Sale contract's canStart/End functions. + * Constructs a new canLive config to be used in a Sale contract's canLive functions. * - * @param timestamp - Timestamp that will be used in constructor to create a simple time based canStart/End condition. - * If the current timestamp is greater than 'timestamp' the sale can start/end and if not the sale cannot start/end. + * @param startTimestamp - Timestamp that will be used in constructor to create a simple timestamp based canLive condition. + * If the current timestamp is greater than 'startTimestamp' the sale can live (start, i.e. status from Pending to Active). + * @param endTimestamp - Timestamp that will be used in constructor to create a simple time based canLive condition. + * If the current timestamp is less than 'endTimestamp' the sale can live or in other words stay Active and if not it can end + * (i.e status from Active to Success/Fail). * */ - constructor(readonly timestamp: number) { - this.constants = [timestamp]; + constructor( + public readonly startTimestamp: number, + public readonly endTimestamp: number + ) { + this.constants = [startTimestamp, endTimestamp]; this.sources = [ concat([ - op(Sale.Opcodes.BLOCK_TIMESTAMP), - op(Sale.Opcodes.VAL, 0), - op(Sale.Opcodes.GREATER_THAN), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2) ]), ]; - this.stackLength = 3; - this.argumentsLength = 0; } /** @@ -550,7 +394,6 @@ export class SaleDurationInTimestamp { * than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). * * @remarks - If the sale has extra time discount, it is important that this method to be applied for canEndStateConfig of the sale. - * @remarks - This method is designed for sale's canEndStateConfig and should 'not' be used for canStart * @see PriceCurve.applyExtraTimeDiscount - to deploy a sale that has discount when it goes into extra time. * * @param extraTime - The amount of time (in minutes) that sale can continue for, if the extra time criteria has been met. @@ -559,32 +402,43 @@ export class SaleDurationInTimestamp { * @returns this * */ - public applyExtraTime(extraTime: number, extraTimeAmount: number): this { - const EXTRA_TIME = () => - concat([ - op(Sale.Opcodes.TOTAL_RESERVE_IN), - op(Sale.Opcodes.VAL, 2), - op(Sale.Opcodes.LESS_THAN), - op(Sale.Opcodes.EVERY, 2), - op(Sale.Opcodes.BLOCK_TIMESTAMP), - op(Sale.Opcodes.VAL, 1), - op(Sale.Opcodes.GREATER_THAN), - op(Sale.Opcodes.ANY, 2), - ]); + public applyExtraTime( + extraTime: number, + extraTimeAmount: number, + erc20decimals: number = 18 + ): this { - const ExtraTimeAmount = parseUnits(extraTimeAmount.toString()); - const ExtraTime = extraTime * 60 + this.timestamp; - this.constants.push(ExtraTime, ExtraTimeAmount); - this.sources[0] = concat([this.sources[0], EXTRA_TIME()]); - this.stackLength = Number(this.stackLength) + 10; + const ExtraTimeAmount = parseUnits(extraTimeAmount.toString(), erc20decimals); + const ExtraTime = extraTime * 60 + this.endTimestamp; + + let _extraTime: StateConfig = { + constants: [ExtraTime, ExtraTimeAmount], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), + ]) + ] + }; + + _extraTime = VM.combiner(this, _extraTime, {position: [6]}) + + this.constants = _extraTime.constants; + this.sources = _extraTime.sources; return this; } /** - * Method to apply owner to the sale's canStart and/or canEnd function. - * Sale's canStart/End functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's - * canStart/EndStateConfig, it can configured in a way that only a certain address can actually trigger the sale's start/end functions. + * Method to apply owner to the sale's canLive function. + * Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's + * canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. * * @remarks - applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get * the desired result. @@ -595,65 +449,129 @@ export class SaleDurationInTimestamp { * */ public applyOwnership(ownerAddress: string): this { - const stateConfig = VM.makeOwner(this, ownerAddress); - this.constants = stateConfig.constants; - this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; + this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); + + let src = arrayify(this.sources[0], {allowMissingPrefix: true}); + src = src.slice(0, src.length - 2); + + let _top = src.slice(0, 6); + _top = concat([ + op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.EQUAL_TO), + _top, + op(VM.Opcodes.EVERY, 2), + ]); + + let _bottom = src.slice(6); + _bottom = concat([ + op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANTS, this.constants.length - 2), + op(VM.Opcodes.CONSTANTS, this.constants.length - 1), + op(VM.Opcodes.EAGER_IF), + _bottom, + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.EVERY, 2), + ]); + + this.sources = [concat([_top, _bottom])]; return this; } + + /** + * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount + * that needs to be raiseed so the raises status becomes "success" after raise ends. + * + * @remark please note that this method should not be used with applyExtraTime as they are opossit + * of eachother and also the order of using this method along with other methods of this class is + * important + * + * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of + * sale's deployment as part of the SaleConfig + * + * @returns this + */ + public afterMinimumRaise (minimumRaise: number, erc20decimals: number = 18) : this { + const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); + + let _minimumRaise: StateConfig = { + constants: [MinimumRaise], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + ]) + ] + }; + _minimumRaise = VM.combiner(this, _minimumRaise, {position: [6]}) + + this.constants = _minimumRaise.constants; + this.sources = _minimumRaise.sources; + + return this + } } /** - * @public - A class used for creating a VM state for Sale's canEnd/StartStateConfig based on block number. + * @public - A class used for creating a VM state for Sale's canLive StateConfig based on block number. * - * @remarks - If the VM result is greater than '0' then sale can start/end and if it is '0' it simply + * @remarks - If the VM result is greater than '0' then sale can live and if it is '0' it simply * cannot. The basic constructed object is a simple block number based condition for sale's - * canStart/EndStateConfig, but with using the methods in the class more complex conditions + * canLive StateConfig, but with using the methods in the class more complex conditions * can be created for how the sale's duration will work. - * It is worth mentioning that using a timestamp based canStart/EndStateConfig is much more desireable as most f the - * PriceCurve configs are designed with timestamp, so if you want to use the block number based canStart/EndStateConfig, + * It is worth mentioning that using a timestamp based canLive StateConfig is much more desireable as most of the + * PriceCurve configs are designed with timestamp, so if you want to use the block number based canLive StateConfig, * please make sure to to match with timestamp used in PriceCurve configs. * * @remarks - Like all the method calls, order of calling methods in this class is important in order to produce * the desired result, although calling in any order will produce a reliable result, that depends on what the * intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. * The general methods calling order in this class is: - * 1.applyExtarTime + * 1.applyExtarTime or afterMinimumRaise (one of which only) * 2.applyOwner * * @example * ```typescript - * //For generating a canStart/End StateConfig for the sale pass in the required arguments to the constructor. - * const saleType = new SaleDuration(blockNumber) + * //For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. + * const saleDuration = new SaleDuration(startBlockNumber, endBlockNumber) * ``` */ export class SaleDurationInBlocks { + // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; - public stackLength: BigNumberish; - public argumentsLength: BigNumberish; /** - * Constructs a new canStart/End config to be used in a Sale contract's canStart/End functions. + * Constructs a new canLive config to be used in a Sale contract's canLive functions. * - * @param blockNumber - blockNumber that will be used in constructor to create a simple block number based canStart/End condition. - * If the current BlockNumber is greater than 'blockNumber' the sale can start/end and if not the sale cannot start/end. + * @param startBlockNumber - blockNumber that will be used in constructor to create a simple block number based canLive condition. + * If the current BlockNumber is greater than 'startBlockNumber' the sale can live (start). + * @param endBlockNumber - blockNumber that will be used in constructor to create a simple block number based canLive condition. + * If the current BlockNumber is less than 'endBlockNumber' the sale can live. * */ - constructor(readonly blockNumber: number) { - this.constants = [blockNumber - 1]; + constructor( + public readonly startBlockNumber: number, + public readonly endBlockNumber: number + ) { + this.constants = [startBlockNumber - 1, endBlockNumber - 1]; this.sources = [ concat([ - op(Sale.Opcodes.BLOCK_NUMBER), - op(Sale.Opcodes.VAL, 0), - op(Sale.Opcodes.GREATER_THAN), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), ]), ]; - this.stackLength = 3; - this.argumentsLength = 0; } /** @@ -672,34 +590,41 @@ export class SaleDurationInBlocks { */ public applyExtraTime( extraTimeBlocks: number, - extraTimeAmount: number + extraTimeAmount: number, + erc20decimals: number = 18 ): this { - const EXTRA_TIME = () => - concat([ - op(Sale.Opcodes.TOTAL_RESERVE_IN), - op(Sale.Opcodes.VAL, 2), - op(Sale.Opcodes.LESS_THAN), - op(Sale.Opcodes.EVERY, 2), - op(Sale.Opcodes.BLOCK_NUMBER), - op(Sale.Opcodes.VAL, 1), - op(Sale.Opcodes.GREATER_THAN), - op(Sale.Opcodes.ANY, 2), - ]); - - const ExtraTimeAmount = parseUnits(extraTimeAmount.toString()); - const ExtraTime = extraTimeBlocks + this.blockNumber; - this.constants.push(ExtraTime, ExtraTimeAmount); - this.sources[0] = concat([this.sources[0], EXTRA_TIME()]); - this.stackLength = Number(this.stackLength) + 10; + const ExtraTimeAmount = parseUnits(extraTimeAmount.toString(), erc20decimals); + const ExtraTime = extraTimeBlocks + this.endBlockNumber; + + let _extraTime: StateConfig = { + constants: [ExtraTime, ExtraTimeAmount], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.EVERY, 2), + ]) + ] + }; + + _extraTime = VM.combiner(this, _extraTime, {position: [6]}) + + this.constants = _extraTime.constants; + this.sources = _extraTime.sources; return this; } /** - * Method to apply owner to the sale's canStart and/or canEnd function. - * Sale's canStart/End functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's - * canStart/EndStateConfig, it can configured in a way that only a certain address can actually trigger the sale's start/end functions. + * Method to apply owner to the sale's canLive function. + * Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's + * canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. * * @remarks - applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get * the desired result. @@ -710,12 +635,344 @@ export class SaleDurationInBlocks { * */ public applyOwnership(ownerAddress: string): this { - const stateConfig = VM.makeOwner(this, ownerAddress); - this.constants = stateConfig.constants; - this.sources = stateConfig.sources; - this.stackLength = stateConfig.stackLength; - this.argumentsLength = stateConfig.argumentsLength; + this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); + + let src = arrayify(this.sources[0], {allowMissingPrefix: true}); + src = src.slice(0, src.length - 2); + + let _top = src.slice(0, 6); + _top = concat([ + op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.EQUAL_TO), + _top, + op(VM.Opcodes.EVERY, 2), + ]); + + let _bottom = src.slice(6); + _bottom = concat([ + op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANTS, this.constants.length - 2), + op(VM.Opcodes.CONSTANTS, this.constants.length - 1), + op(VM.Opcodes.EAGER_IF), + _bottom, + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.EVERY, 2), + ]); + + this.sources = [concat([_top, _bottom])]; + + return this; + } + + /** + * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount + * that needs to be raiseed so the raises status becomes "success" after raise ends. + * + * @remark please note that this method should not be used with applyExtraTime as they are opossit + * of eachother and also the order of using this method along with other methods of this class is + * important + * + * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of + * sale's deployment as part of the SaleConfig + * + * @returns this + */ + public afterMinimumRaise (minimumRaise: number, erc20decimals: number = 18) : this { + const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); + + let _minimumRaise: StateConfig = { + constants: [MinimumRaise], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + ]) + ] + }; + _minimumRaise = VM.combiner(this, _minimumRaise, {position: [6]}) + + this.constants = _minimumRaise.constants; + this.sources = _minimumRaise.sources; + + return this + } +}; + + +/** + * @public + * The fisrt piece of script in a sale's amount/price pair script which determines the amoount + * or cap that can be bought. + * + */ +export class BuyCap { + + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + /** + * Constructor for this class + * + * @param buyCapConfig - (optional) a custom StateConfig as the BuyCap (amount) script + * if not passed the current buy units (CONTEXT, 0) will be used as the amount in + * amount/price script pair for the sale. + */ + constructor (public readonly buyCapConfig?: StateConfig) { + + if (buyCapConfig != undefined) { + this.constants = buyCapConfig.constants; + this.sources = buyCapConfig.sources; + } + else { + this.constants = []; + this.sources = [ + concat([ + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits) + ]) + ] + } + } + + /** + * Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. + * With the option of applying multiplier for max cap per wallet. + * + * @param mode - The mode that determines if there is max or min cap per wallet or both. + * @param options - (optional) Additional arguments to configure the cap per wallet behaviour: + * - (param) minWalletCap - The number for min cap per wallet, addresses cannot buy less number of rTKNs than this amount. + * - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. + * - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. + * - (param) tierMultiplier - An array of each tiers' Multiplier value. + * - (param) tierActivation - An array of number of blocks for each tier that will be the required period of time for that tiered + * address to hold the tier's in order to be eligible for that tier's multiplier. + * + * @returns this + * + */ + public applyWalletCap( + mode: BuyCapMode, + options?: { + minWalletCap?: number; + maxWalletCap?: number; + tierAddress?: string; + tierMultiplier?: number[]; + tierActivation?: (number | string)[]; + } + ): this { + + const MIN_CAP_SOURCES = (i: number) => + concat([ + op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), + op(VM.Opcodes.STORAGE, SaleStorage.TokenAddress), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC20_BALANCE_OF), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.LESS_THAN), + ]); + const MAX_CAP_SOURCES = () => + concat([ + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), + op(VM.Opcodes.STORAGE, SaleStorage.TokenAddress), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC20_BALANCE_OF), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.GREATER_THAN), + ]); + + if (mode == BuyCapMode.min && options?.minWalletCap) { + let minCapConfig: StateConfig = { + constants: [parseUnits(options.minWalletCap.toString()).sub(1)], + sources: [MIN_CAP_SOURCES(0)] + }; + + minCapConfig = VM.combiner(minCapConfig, this); + minCapConfig.sources[0] = concat([ + minCapConfig.sources[0], + op(VM.Opcodes.MUL, 2) + ]); + + this.constants = minCapConfig.constants; + this.sources = minCapConfig.sources; + } + if (mode == BuyCapMode.max && options?.maxWalletCap) { + let maxCapConfig: StateConfig; + + if ( + options.tierMultiplier && + options.tierAddress + ) { + maxCapConfig = VM.toTierMultiplier( + { + constants: [ + parseUnits(options.maxWalletCap.toString()) + ], + sources: [ + concat([op(VM.Opcodes.CONSTANTS, 0)]) + ] + }, + options.tierAddress, + options.tierMultiplier, + { tierActivation: options.tierActivation } + ); + maxCapConfig = VM.combiner( + maxCapConfig, + { + constants: [1], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.ADD, 2), + MAX_CAP_SOURCES(), + ]) + ] + } + ); + maxCapConfig = VM.combiner(maxCapConfig, this); + maxCapConfig.sources[0] = concat([ + maxCapConfig.sources[0], + op(VM.Opcodes.MUL, 2) + ]); + + this.constants = maxCapConfig.constants; + this.sources = maxCapConfig.sources; + } + else { + maxCapConfig = { + constants: [parseUnits(options.maxWalletCap.toString()).add(1)], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 0), + MAX_CAP_SOURCES() + ]) + ] + } + maxCapConfig = VM.combiner(maxCapConfig, this); + maxCapConfig.sources[0] = concat([ + maxCapConfig.sources[0], + op(VM.Opcodes.MUL, 2) + ]); + + this.constants = maxCapConfig.constants; + this.sources = maxCapConfig.sources; + } + } + if ( + mode == BuyCapMode.both && + options?.minWalletCap && + options?.maxWalletCap + ) { + let bothCapConfig: StateConfig; + + if ( + options.tierMultiplier && + options.tierAddress + ) { + bothCapConfig = { + constants: [parseUnits(options.maxWalletCap.toString())], + sources: [concat([op(VM.Opcodes.CONSTANTS, 0)])] + }; + bothCapConfig = VM.toTierMultiplier( + bothCapConfig, + options.tierAddress, + options.tierMultiplier, + { tierActivation: options.tierActivation } + ); + + bothCapConfig = VM.combiner( + bothCapConfig, + { + constants: [1, parseUnits(options.minWalletCap.toString()).sub(1)], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.ADD, 2), + MAX_CAP_SOURCES(), + MIN_CAP_SOURCES(1), + op(VM.Opcodes.EVERY, 2), + ]) + ] + } + ) + + bothCapConfig = VM.combiner(bothCapConfig, this); + + bothCapConfig.sources[0] = concat([ + bothCapConfig.sources[0], + op(VM.Opcodes.MUL, 2) + ]); + + this.constants = bothCapConfig.constants; + this.sources = bothCapConfig.sources; + } + else { + bothCapConfig = { + constants: [ + parseUnits(options.maxWalletCap.toString()).add(1), + parseUnits(options.minWalletCap.toString()).sub(1) + ], + sources: [ + op(VM.Opcodes.CONSTANTS, 0), + MAX_CAP_SOURCES(), + MIN_CAP_SOURCES(1), + op(VM.Opcodes.EVERY, 2), + ] + }; + bothCapConfig = VM.combiner(bothCapConfig, this); + + bothCapConfig.sources[0] = concat([ + bothCapConfig.sources[0], + op(VM.Opcodes.MUL, 2) + ]) + + this.constants = bothCapConfig.constants; + this.sources = bothCapConfig.sources; + } + } return this; } } + +/** + * @public + * Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) + * + * @example + * ```typescript + * //For generating a sale compatible StateConfig for the sale pass in 2 individual scripts + * (can use PriceCurves and CanLive classes). + * const saleConfig = new SaleConfigBuilder(new FixedPrice, new CanLiveInTimestamp) + * ``` + */ +export class SaleScriptFrom { + + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + /** + * Constructor of this class + * + * @param canLiveScript - canLive StateConfig + * @param buyCapScript - the StateConfig for buy amount (mxUnits) + * @param calculateBuyScript - the StateConfig for price + */ + constructor ( + public readonly canLiveScript: SaleDurationInTimestamp | SaleDurationInBlocks | StateConfig, + public readonly buyCapScript: BuyCap | StateConfig, + public readonly calculateBuyScript: PriceCurve | StateConfig + ) { + let _saleConfig = VM.pair(buyCapScript, calculateBuyScript) + _saleConfig = VM.combiner(canLiveScript, _saleConfig, {numberOfSources: 0}); + + this.constants = _saleConfig.constants; + this.sources = _saleConfig.sources; + } +} \ No newline at end of file diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 82679f2..0a082b7 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -1,8 +1,8 @@ import { Signer, BytesLike, BigNumberish } from 'ethers'; import { TierContract } from '../../classes/tierContract'; -import { TxOverrides } from '../../classes/rainContract'; -import { StateConfig, AllStandardOps } from '../../classes/vm'; -import { CombineTierFactory__factory } from '../../typechain'; +import { ReadTxOverrides, TxOverrides } from '../../classes/rainContract'; +import { StateConfig, StorageOpcodesRange } from '../../classes/vm'; +import { CombineTierFactory__factory, CombineTier__factory } from '../../typechain'; /** * @public @@ -16,15 +16,30 @@ import { CombineTierFactory__factory } from '../../typechain'; export type CombineTierDeployArgs = StateConfig; /** - * @public - * Type for the opcodes availables in a CombineTier instance. + * Enum for operand of the combineTier's CONTEXT opcode */ -export type CombineTierOpcodes = typeof AllStandardOps & { + export enum CombineTierContext { + /** + * 0 or the index of the context array in the combineTier + * contract used as the operand for CONTEXT opcode. + * operand for CONTEXT opcode to stack the account that report is being call for. + */ + Account, /** - * local opcode to put tier report account on the stack + * length of CombineTier's valid context opcodes */ - ACCOUNT: number; -}; + length +} + +/** + * Enum for operand of the CombineTier's STORAGE opcode + */ +export enum CombineTierStorage { + /** + * length of CombineTier's valid storage opcodes + */ + length +} /** * @public @@ -60,6 +75,8 @@ export type CombineTierOpcodes = typeof AllStandardOps & { * ``` */ export class CombineTier extends TierContract { + protected static readonly nameBookReference: string = 'combineTierFactory'; + /** * Constructs a new CombineTier from a known address. * @@ -68,22 +85,15 @@ export class CombineTier extends TierContract { * @returns A new combineTier instance */ constructor(address: string, signer: Signer) { + CombineTier.checkAddress(address); - super(address, signer); - } - protected static readonly nameBookReference: string = 'combineTierFactory'; + super(address, signer); + const _combineTier = CombineTier__factory.connect(address, signer); - /** - * All the opcodes avaialbles in the CombineTier contract. - * - * @remarks - * This expose all the standard opcodes along with the specific opcodes of the CombineTier. - */ - public static Opcodes: CombineTierOpcodes = { - ...AllStandardOps, - ACCOUNT: 0 + AllStandardOps.length, - }; + this.fnPtrs = _combineTier.fnPtrs; + this.storageOpcodesRange = _combineTier.storageOpcodesRange; + } /** * Checks if address is registered as a child contract of this contract in a specific network. @@ -145,7 +155,7 @@ export class CombineTier extends TierContract { this.getBookAddress(await this.getChainId(signer)), signer ); - + const tx = await combineTierFactory.createChildTyped(args, overrides); const receipt = await tx.wait(); const address = this.getNewChildFromReceipt(receipt, combineTierFactory); @@ -167,4 +177,22 @@ export class CombineTier extends TierContract { ): Promise => { throw new Error('SET TIER: NOT IMPLEMENTED'); }; + + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param override - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + + /** + * Returns the pointer and length for combineTier's storage opcodes + * + * @param override - @see ReadTxOverrides + * @returns a StorageOpcodesRange + */ + public readonly storageOpcodesRange: ( + overrides?: ReadTxOverrides + ) => Promise; } diff --git a/src/utils.ts b/src/utils.ts index 05e3c5b..b1222ff 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -116,20 +116,6 @@ export const paddedUInt32 = (number: number | BytesLike | Hexable): string => { return hexlify(number).substring(2).padStart(8, '0'); }; -/** - * @public function to pack the operand for VAL opcode of ZIPMAP arguments - * - * @param valIndex - index of the ZIPMAP arguments - * - * @returns a byte size number - */ -export function arg(valIndex: number): number { - let arg = 1; - arg <<= 7; - arg += valIndex; - return arg; -} - /** * @public function to pack start/end tier range into a byte size number for the UPDATE_BLOCKS_FOR_TIER_RANGE opcode * @@ -226,18 +212,4 @@ export const replaceAt = ( const originalParsed = arrayify(original, { allowMissingPrefix: true }); originalParsed[index] = parseInt(replacement.toString()); return originalParsed; -}; - -/** - * @public function for the operand of the SKIP opcode - * @remarks - SKIP is no longer available - * - * @returns a byte size number - */ -export function skip(places: number, conditional = false): number { - let skip = conditional ? 1 : 0; - skip <<= 7; - // JS ints are already signed. - skip |= places & 0x7f; - return skip; -} +}; \ No newline at end of file diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index 407bbae..d330788 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -37,6 +37,10 @@ export let addresses: Addresses; before('Initializing and deploying contracts to hardhat network', async () => { // ⚠️ Contract Factories instances ⚠️ + const vmStateBuilderFactory = await ethers.getContractFactory( + 'AllStandardOpsStateBuilder' + ); + const RedeemableERC20FactoryFactory = await ethers.getContractFactory( 'RedeemableERC20Factory' ); @@ -80,33 +84,33 @@ before('Initializing and deploying contracts to hardhat network', async () => { const SaleFactoryFactory = await ethers.getContractFactory('SaleFactory'); // ⚠️ Deployments to hardhat test network ⚠️ + const vmStateBuilder = await vmStateBuilderFactory.deploy(); const RedeemableERC20Factory = await RedeemableERC20FactoryFactory.deploy(); const VerifyFactory = await VerifyFactoryFactory.deploy(); const VerifyTierFactory = await VerifyTierFactoryFactory.deploy(); const ERC20BalanceTierFactory = await ERC20BalanceTierFactoryFactory.deploy(); const ERC20TransferTierFactory = await ERC20TransferTierFactoryFactory.deploy(); - const CombineTierFactory = await CombineTierFactoryFactory.deploy(); + const CombineTierFactory = await CombineTierFactoryFactory.deploy(vmStateBuilder.address); const ERC721BalanceTierFactory = await ERC721BalanceTierFactoryFactory.deploy(); const GatedNFTFactory = await GatedNFTFactoryFactory.deploy(); const RedeemableERC20ClaimEscrow = await RedeemableERC20ClaimEscrowFactory.deploy(); const NoticeBoard = await NoticeBoardFactory.deploy(); - const EmissionsERC20Factory = await EmissionsERC20FactoryFactory.deploy(); + const EmissionsERC20Factory = await EmissionsERC20FactoryFactory.deploy(vmStateBuilder.address); const SaleFactory = await SaleFactoryFactory.deploy({ maximumSaleTimeout: 10000, maximumCooldownDuration: 1000, redeemableERC20Factory: RedeemableERC20Factory.address, + vmStateBuilder: vmStateBuilder.address }); // Deploying AlwaysTier - const sourceAlways = VM.createVMSources([[CombineTier.Opcodes.ALWAYS]]); + const sourceAlways = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); const alwaysArg = { sources: sourceAlways, - constants: [], - stackLength: 1, - argumentsLength: 0, + constants: [0], }; const tx = await CombineTierFactory.createChildTyped(alwaysArg); @@ -117,6 +121,7 @@ before('Initializing and deploying contracts to hardhat network', async () => { // ⚠️ Saving the addresses to our test 😅 ⚠️ addresses = { + vmStateBuilder: vmStateBuilder.address, RedeemableERC20Factory: RedeemableERC20Factory.address, VerifyFactory: VerifyFactory.address, VerifyTierFactory: VerifyTierFactory.address, @@ -142,11 +147,16 @@ describe('SDK - BookAddress', () => { ); }); - it('should get the address directly from the book', () => { + it('should get the NoticeBoard address directly from the book', () => { const address = AddressBook.getAddressesForChainId(chainId).noticeBoard; expect(address).to.be.equals(addresses.NoticeBoard); }); + it('should get the vmStatebuilder address directly from the book', () => { + const address = AddressBook.getAddressesForChainId(chainId).vmStateBuilder; + expect(address).to.be.equals(addresses.vmStateBuilder); + }); + it('should get the RedeemableERC20Factory address', () => { const address = RedeemableERC20.getBookAddress(chainId); expect(address).to.be.equals(addresses.RedeemableERC20Factory); diff --git a/test/2_sale.test.ts b/test/2_sale.test.ts index f06852a..66db38b 100644 --- a/test/2_sale.test.ts +++ b/test/2_sale.test.ts @@ -17,6 +17,8 @@ import { CombineTier, SaleDurationInTimestamp, SaleDurationInBlocks, + SaleScriptFrom, + BuyCap, } from '../src'; import { BigNumber } from 'ethers'; @@ -48,18 +50,15 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[Sale.Opcodes.VAL, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); // All configs calculated outside of deploy method const saleConfig = { - canStartStateConfig: new SaleDurationInBlocks(startBlock), - canEndStateConfig: new SaleDurationInBlocks(startBlock + saleDuration), - calculatePriceStateConfig: { - sources, - constants, - stackLength: 1, - argumentsLength: 0, - }, + vmStateConfig: new SaleScriptFrom( + new SaleDurationInBlocks(startBlock, startBlock + saleDuration), + new BuyCap(), + {sources, constants} + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -102,18 +101,15 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[Sale.Opcodes.VAL, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); // All configs calculated outside of deploy method const saleConfig = { - canStartStateConfig: new SaleDurationInBlocks(startBlock), - canEndStateConfig: new SaleDurationInBlocks(endBlock), - calculatePriceStateConfig: { - sources, - constants, - stackLength: 1, - argumentsLength: 0, - }, + vmStateConfig: new SaleScriptFrom( + new SaleDurationInBlocks(startBlock, endBlock), + new BuyCap(), + {sources, constants} + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -132,7 +128,7 @@ describe('SDK - Sale', () => { const sale = await Sale.deploy(deployer, saleConfig, redeemableConfig); expect(await sale.saleStatus()).to.be.equals(SaleStatus.Pending); - expect(await sale.canStart(), 'sale should be not ready to start').to.be + expect(await sale.canLive(), 'sale should be not ready to live').to.be .false; // Increase the blocks to start @@ -140,20 +136,20 @@ describe('SDK - Sale', () => { await Time.advanceBlock(); } - expect(await sale.canStart(), 'sale should be ready to start').to.be.true; + expect(await sale.canLive(), 'sale should be ready to live').to.be.true; // Start the sale await sale.start(); expect(await sale.saleStatus()).to.be.equals(SaleStatus.Active); - expect(await sale.canEnd(), 'sale should be not ready to end').to.be.false; + expect(await sale.canLive(), 'sale should not be ready to not live (end)').to.be.true; // Increase the blocks to end while ((await Time.currentBlock()) < endBlock) { await Time.advanceBlock(); } - expect(await sale.canEnd(), 'sale should be ready to end').to.be.true; + expect(await sale.canLive(), 'sale should be ready to not live (end)').to.be.false; await sale.end(); }); @@ -177,18 +173,15 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[Sale.Opcodes.VAL, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); // All configs calculated outside of deploy method const saleConfig = { - canStartStateConfig: new SaleDurationInTimestamp(startTimestamp), - canEndStateConfig: new SaleDurationInTimestamp(endTimestamp), - calculatePriceStateConfig: { - sources, - constants, - stackLength: 1, - argumentsLength: 0, - }, + vmStateConfig: new SaleScriptFrom( + new SaleDurationInTimestamp(startTimestamp, endTimestamp), + new BuyCap(), + {sources, constants} + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -207,24 +200,24 @@ describe('SDK - Sale', () => { const sale = await Sale.deploy(deployer, saleConfig, redeemableConfig); expect(await sale.saleStatus()).to.be.equals(SaleStatus.Pending); - expect(await sale.canStart(), 'sale should be not ready to start').to.be + expect(await sale.canLive(), 'sale should be not ready to live').to.be .false; // Increase the timestamp to start (+1 to because is AFTER timestamp) await Time.increase(startTimestamp - (await Time.currentTime()) + 1); - expect(await sale.canStart(), 'sale should be ready to start').to.be.true; + expect(await sale.canLive(), 'sale should be ready to live').to.be.true; // Start the sale await sale.start(); expect(await sale.saleStatus()).to.be.equals(SaleStatus.Active); - expect(await sale.canEnd(), 'sale should be not ready to end').to.be.false; + expect(await sale.canLive(), 'sale should not be ready to not live (end)').to.be.true; // Increase the timestamp to end (+1 to because is AFTER timestamp) await Time.increase(BigNumber.from(endTimestamp).sub(await Time.currentTime()).add(1)); - expect(await sale.canEnd(), 'sale should be ready to end').to.be.true; + expect(await sale.canLive(), 'sale should be ready to not live (end)').to.be.false; await sale.end(); }); @@ -248,18 +241,15 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[Sale.Opcodes.VAL, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); // All configs calculated outside of deploy method const saleConfig = { - canStartStateConfig: new SaleDurationInBlocks(startBlock), - canEndStateConfig: new SaleDurationInBlocks(endBlock), - calculatePriceStateConfig: { - sources, - constants, - stackLength: 1, - argumentsLength: 0, - }, + vmStateConfig: new SaleScriptFrom( + new SaleDurationInBlocks(startBlock, endBlock), + new BuyCap(), + {sources, constants} + ), recipient: recipient.address, reserve: reserve.address, cooldownDuration: 1, @@ -281,7 +271,7 @@ describe('SDK - Sale', () => { // Increase the blocks to start await Time.advanceBlock(startBlock - (await Time.currentBlock())); - expect(await sale.canStart(), 'sale should be ready to start').to.be.true; + expect(await sale.canLive(), 'sale should be ready to live').to.be.true; // Start the sale await sale.start(); @@ -294,14 +284,14 @@ describe('SDK - Sale', () => { const desiredAmount = totalTokenSupply; - expect(await sale.calculatePrice(desiredAmount)).to.be.equals(staticPrice); + expect((await sale.calculateBuy(desiredAmount))[1]).to.be.equals(staticPrice); const buyConfig = { feeRecipient: zeroAddress, fee: 0, minimumUnits: desiredAmount, desiredUnits: desiredAmount, - maximumPrice: await sale.calculatePrice(desiredAmount), + maximumPrice: (await sale.calculateBuy(desiredAmount))[1], }; await sale.connect(buyer).buy(buyConfig); diff --git a/test/5_escrow.test.ts b/test/5_escrow.test.ts index 0c9148b..fbcc244 100644 --- a/test/5_escrow.test.ts +++ b/test/5_escrow.test.ts @@ -22,6 +22,8 @@ import { SaleDurationInBlocks, AddressBook, ERC20, + SaleScriptFrom, + BuyCap, } from '../src'; import { RedeemableERC20ClaimEscrow__factory } from '../src/typechain/factories/RedeemableERC20ClaimEscrow__factory'; @@ -63,9 +65,14 @@ const deploySale = async ( // All configs calculated outside of deploy method const saleConfig = { - canStartStateConfig: new SaleDurationInBlocks(startBlock), - canEndStateConfig: new SaleDurationInBlocks(endBlock), - calculatePriceStateConfig: new FixedPrice('75', 6), + vmStateConfig: new SaleScriptFrom( + new SaleDurationInBlocks(startBlock, endBlock), + new BuyCap(), + new FixedPrice('75', 6), + ), + // canStartStateConfig: new SaleDurationInBlocks(startBlock), + // canEndStateConfig: new SaleDurationInBlocks(endBlock), + // calculatePriceStateConfig: new FixedPrice('75', 6), recipient: recipient.address, reserve: saleReserve.address, cooldownDuration: 1, @@ -162,7 +169,7 @@ describe('ClaimEscrow', () => { fee: 0, minimumUnits: desiredAmount, desiredUnits: desiredAmount, - maximumPrice: await sale.calculatePrice(desiredAmount), + maximumPrice: (await sale.calculateBuy(desiredAmount))[1], }; // Approving all the balance to sale @@ -255,7 +262,7 @@ describe('ClaimEscrow', () => { fee: 0, minimumUnits: desiredAmount, desiredUnits: desiredAmount, - maximumPrice: await sale_1.calculatePrice(desiredAmount), + maximumPrice: (await sale_1.calculateBuy(desiredAmount))[1], }; // Approving all the balance to sales diff --git a/test/7_RainJS.test.ts b/test/7_RainJS.test.ts index d076c6b..0308244 100644 --- a/test/7_RainJS.test.ts +++ b/test/7_RainJS.test.ts @@ -1,12 +1,11 @@ import { assert } from 'chai'; import { ethers } from 'hardhat'; -import { Tier, Time } from './utils'; +import { expectAsyncError, Tier, Time } from './utils'; import { BigNumber } from 'ethers'; import { op, paddedUInt32, selectLte, - arg, concat, callSize, tierRange, @@ -38,17 +37,15 @@ describe('SDK - RainJS', () => { constants: [1, 2, 3], sources: [ concat([ - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.ADD, 3), - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.ADD, 3), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.ADD, 3), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.ADD, 3), ]) - ], - stackLength: 6, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {applyOpFn}); @@ -103,13 +100,13 @@ describe('SDK - RainJS', () => { ) const constants = [val1, val2, val3]; - const v1 = op(RainJS.Opcodes.VAL, 0); - const v2 = op(RainJS.Opcodes.VAL, 1); - const v3 = op(RainJS.Opcodes.VAL, 2); + const v1 = op(VM.Opcodes.CONSTANTS, 0); + const v2 = op(VM.Opcodes.CONSTANTS, 1); + const v3 = op(VM.Opcodes.CONSTANTS, 2); - const a0 = op(RainJS.Opcodes.VAL, arg(0)); - const a1 = op(RainJS.Opcodes.VAL, arg(1)); - const a2 = op(RainJS.Opcodes.VAL, arg(2)); + const a0 = op(VM.Opcodes.CONSTANTS, 3); + const a1 = op(VM.Opcodes.CONSTANTS, 4); + const a2 = op(VM.Opcodes.CONSTANTS, 5); // zero-based counting const sourceIndex = 1; // 1 @@ -121,15 +118,15 @@ describe('SDK - RainJS', () => { v1, v2, v3, - op(RainJS.Opcodes.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - op(RainJS.Opcodes.ADD, 4), + op(VM.Opcodes.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + op(VM.Opcodes.ADD, 4), ]), concat([ // (arg0 arg1 arg2 add) a0, a1, a2, - op(RainJS.Opcodes.ADD, 3), + op(VM.Opcodes.ADD, 3), ]), ]; @@ -163,18 +160,16 @@ describe('SDK - RainJS', () => { constants: [1, 2, 3], sources: [ concat([ - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.DEBUG), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.ADD, 3), - op(RainJS.Opcodes.DEBUG), - op(RainJS.Opcodes.ADD, 2), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.DEBUG), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.ADD, 3), + op(VM.Opcodes.DEBUG), + op(VM.Opcodes.ADD, 2), ]) - ], - stackLength: 8, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -200,16 +195,14 @@ describe('SDK - RainJS', () => { constants: [1, 2, 3], sources: [ concat([ - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.ADD, 3), - op(RainJS.Opcodes.ADD, 2), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.ADD, 3), + op(VM.Opcodes.ADD, 2), ]) - ], - stackLength: 6, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -240,16 +233,14 @@ describe('SDK - RainJS', () => { constants: [500, 2, 3], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.SUB, 3), - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.SUB, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.SUB, 3), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.SUB, 2), ]) - ], - stackLength: 6, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -280,13 +271,11 @@ describe('SDK - RainJS', () => { constants: [2], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.BLOCK_TIMESTAMP), - op(RainJS.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.MUL, 2), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -317,14 +306,12 @@ describe('SDK - RainJS', () => { constants: [2, 3], sources: [ concat([ - op(RainJS.Opcodes.BLOCK_TIMESTAMP), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.DIV, 3), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.DIV, 3), ]) - ], - stackLength: 4, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -356,13 +343,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_ADD, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SATURATING_ADD, 2), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -389,13 +374,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_MUL, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SATURATING_MUL, 2), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -422,13 +405,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SATURATING_SUB, 2), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -455,13 +436,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.MOD, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.MOD, 2), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -488,13 +467,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.EXP, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.EXP, 2), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -521,13 +498,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SCALE18_MUL, 5), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SCALE18_MUL, 5), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -553,13 +528,11 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SCALE18_DIV, 10), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SCALE18_DIV, 10), ]) - ], - stackLength: 3, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -584,12 +557,10 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.SCALE18, 22), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.SCALE18, 22), ]) - ], - stackLength: 2, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -614,12 +585,10 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.SCALEN, 3), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.SCALEN, 3), ]) - ], - stackLength: 2, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -644,12 +613,10 @@ describe('SDK - RainJS', () => { ], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.SCALE_BY, 136), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.SCALE_BY, 136), ]) - ], - stackLength: 2, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -672,16 +639,14 @@ describe('SDK - RainJS', () => { constants: [10, 20, 30, 40, 50, 60], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.VAL, 3), - op(RainJS.Opcodes.VAL, 4), - op(RainJS.Opcodes.MIN, 5), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.MIN, 5), ]) - ], - stackLength: 6, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -704,17 +669,15 @@ describe('SDK - RainJS', () => { constants: [10, 20, 30, 40, 50, 60], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.VAL, 3), - op(RainJS.Opcodes.VAL, 4), - op(RainJS.Opcodes.VAL, 5), - op(RainJS.Opcodes.MAX, 6), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.MAX, 6), ]) - ], - stackLength: 7, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -737,17 +700,15 @@ describe('SDK - RainJS', () => { constants: [10, 20, 30, 35], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_SUB, 2), - op(RainJS.Opcodes.ISZERO), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.VAL, 3), - op(RainJS.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.ISZERO), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.EAGER_IF), ]) - ], - stackLength: 7, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -770,30 +731,28 @@ describe('SDK - RainJS', () => { constants: [10, 20, ethers.constants.Zero, 30, 35], sources: [ concat([ - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.SATURATING_SUB, 2), - op(RainJS.Opcodes.VAL, 2), - op(RainJS.Opcodes.EQUAL_TO), - op(RainJS.Opcodes.VAL, 3), - op(RainJS.Opcodes.VAL, 4), - op(RainJS.Opcodes.ADD, 2), - op(RainJS.Opcodes.VAL, 3), - op(RainJS.Opcodes.GREATER_THAN), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.ADD, 2), - op(RainJS.Opcodes.VAL, 4), - op(RainJS.Opcodes.LESS_THAN), - op(RainJS.Opcodes.ANY, 2), - op(RainJS.Opcodes.EVERY, 2), - op(RainJS.Opcodes.VAL, 3), - op(RainJS.Opcodes.VAL, 4), - op(RainJS.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.EVERY, 2), + op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.EAGER_IF), ]) - ], - stackLength: 20, - argumentsLength: 0 + ] } const rainJs = new RainJS(script); @@ -815,20 +774,18 @@ describe('SDK - RainJS', () => { const [signer] = await ethers.getSigners(); const script: StateConfig = { - constants: [50], + constants: [50, ethers.constants.MaxUint256], sources: [ concat([ - op(RainJS.Opcodes.NEVER), - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), - op(RainJS.Opcodes.NEVER), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), - op(RainJS.Opcodes.SATURATING_DIFF), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), + op(VM.Opcodes.SATURATING_DIFF), ]) - ], - stackLength: 7, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -852,21 +809,19 @@ describe('SDK - RainJS', () => { const [signer] = await ethers.getSigners(); const script: StateConfig = { - constants: [1000, 50], + constants: [1000, 50, ethers.constants.MaxUint256], sources: [ concat([ - op(RainJS.Opcodes.NEVER), - op(RainJS.Opcodes.VAL, 0), - op(RainJS.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.FOUR)), - op(RainJS.Opcodes.NEVER), - op(RainJS.Opcodes.VAL, 1), - op(RainJS.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.SIX)), - op(RainJS.Opcodes.BLOCK_NUMBER), - op(RainJS.Opcodes.SELECT_LTE, selectLte(selectLteLogic.any, selectLteMode.min, 2)), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.FOUR)), + op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.SIX)), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.SELECT_LTE, selectLte(selectLteLogic.any, selectLteMode.min, 2)), ]) - ], - stackLength: 7, - argumentsLength: 0 + ] } const rainJs = new RainJS(script, {signer}); @@ -888,8 +843,27 @@ describe('SDK - RainJS', () => { ); }) -}) - + it('should panic when exponention goes beyond the max numeric range (max uint256)', async () => { + + const [signer] = await ethers.getSigners(); + + const script: StateConfig = { + constants: [ethers.constants.MaxUint256.div(3), 3], + sources: [ + concat([ + op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.EXP, 2), + ]) + ] + } + const rainJs = new RainJS(script, {signer}); + await expectAsyncError( + rainJs.run(), + "max numeric range overflow" + ); + }) +}) diff --git a/test/utils.ts b/test/utils.ts index 9e55d62..e56e9e7 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -47,6 +47,7 @@ export enum SaleStatus { * **These addresses are deterministically generated with the HH signers.** */ export interface Addresses { + vmStateBuilder: string; RedeemableERC20Factory: string; VerifyFactory: string; VerifyTierFactory: string; From f676c1f592c879deb9e446fd811f273625156dcd Mon Sep 17 00:00:00 2001 From: Rouzbeh Date: Sat, 18 Jun 2022 20:53:56 +0000 Subject: [PATCH 003/125] Update shell.nix --- shell.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/shell.nix b/shell.nix index 4be9458..693e0d7 100644 --- a/shell.nix +++ b/shell.nix @@ -51,7 +51,6 @@ in pkgs.stdenv.mkDerivation { name = "shell"; buildInputs = [ - pkgs.yarn pkgs.nodejs-14_x copy-contracts generate-typechain From c0ce215784e90bdaedd5f82177a77242c88acc14 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sat, 18 Jun 2022 20:04:38 -0400 Subject: [PATCH 004/125] fix resolutions deps in lock file --- yarn.lock | 732 +++++++++++++++++++++++++++--------------------------- 1 file changed, 370 insertions(+), 362 deletions(-) diff --git a/yarn.lock b/yarn.lock index 10b1a55..709234e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,14 +31,14 @@ "@babel/highlight" "^7.16.7" "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": - version "7.17.10" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" - integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.2.tgz#87b2fcd7cce9becaa7f5acebdc4f09f3dd19d876" - integrity sha512-A8pri1YJiC5UnkdrWcmfZTJTV85b4UXTAfImGmCfYmax4TR9Cw8sDS0MOk++Gp2mE/BefVJ5nwy5yzqNJbP/DQ== + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" @@ -46,10 +46,10 @@ "@babel/helper-compilation-targets" "^7.18.2" "@babel/helper-module-transforms" "^7.18.0" "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.0" + "@babel/parser" "^7.18.5" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -285,10 +285,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.0", "@babel/parser@^7.7.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.4.tgz#6774231779dd700e0af29f6ad8d479582d7ce5ef" - integrity sha512-FDge0dFazETFcxGw/EXzOkN8uJp0PC7Qbm+Pe9T+av2zlBpOgunFHkQPPn+eRuClU73JF+98D531UgayY89tow== +"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5", "@babel/parser@^7.7.0": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": version "7.17.12" @@ -691,9 +691,9 @@ babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.4.tgz#3d6fd9868c735cce8f38d6ae3a407fb7e61e6d46" - integrity sha512-lH2UaQaHVOAeYrUUuZ8i38o76J/FnO8vu21OE+tD1MyP9lxdZoSfz+pDbWkq46GogUrdrMz3tiz/FYGB+bVThg== + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" + integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== dependencies: "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-module-transforms" "^7.18.0" @@ -718,9 +718,9 @@ "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-new-target@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.17.12.tgz#10842cd605a620944e81ea6060e9e65c265742e3" - integrity sha512-CaOtzk2fDYisbjAD4Sd1MTKGVIpRtx9bWLyj24Y/k6p4s4gQ3CqDGJauFJxt8M/LEx003d0i3klVqnN73qvK3w== + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" + integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== dependencies: "@babel/helper-plugin-utils" "^7.17.12" @@ -762,9 +762,9 @@ "@babel/helper-plugin-utils" "^7.17.12" "@babel/plugin-transform-runtime@^7.5.5": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.2.tgz#04637de1e45ae8847ff14b9beead09c33d34374d" - integrity sha512-mr1ufuRMfS52ttq+1G1PD8OJNqgcTFjq3hwn8SZ5n1x1pBhi0E36rYMdTK0TsKtApJ4lDEdfXJwtGobQMHSMPg== + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743" + integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA== dependencies: "@babel/helper-module-imports" "^7.16.7" "@babel/helper-plugin-utils" "^7.17.12" @@ -940,10 +940,10 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.2.tgz#b77a52604b5cc836a9e1e08dca01cba67a12d2e8" - integrity sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA== +"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== dependencies: "@babel/code-frame" "^7.16.7" "@babel/generator" "^7.18.2" @@ -951,12 +951,12 @@ "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.0" - "@babel/types" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": version "7.18.4" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== @@ -1112,16 +1112,16 @@ ethereumjs-util "^7.1.4" merkle-patricia-tree "^4.2.4" -"@ethereumjs/blockchain@^5.5.2": - version "5.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.2.tgz#1848abd9dc1ee56acf8cec4c84304d7f4667d027" - integrity sha512-Jz26iJmmsQtngerW6r5BDFaew/f2mObLrRZo3rskLOx1lmtMZ8+TX/vJexmivrnWgmAsTdNWhlKUYY4thPhPig== +"@ethereumjs/blockchain@^5.5.2", "@ethereumjs/blockchain@^5.5.3": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" + integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== dependencies: "@ethereumjs/block" "^3.6.2" - "@ethereumjs/common" "^2.6.3" + "@ethereumjs/common" "^2.6.4" "@ethereumjs/ethash" "^1.1.0" debug "^4.3.3" - ethereumjs-util "^7.1.4" + ethereumjs-util "^7.1.5" level-mem "^5.0.1" lru-cache "^5.1.1" semaphore-async-await "^1.5.1" @@ -1145,27 +1145,27 @@ ethereumjs-util "^7.1.1" miller-rabin "^4.0.0" -"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.1.tgz#8d941b83a602b4a89949c879615f7ea9a90e6671" - integrity sha512-xzDrTiu4sqZXUcaBxJ4n4W5FrppwxLxZB4ZDGVLtxSQR4lVuOnFR6RcUHdg1mpUhAPVrmnzLJpxaeXnPxIyhWA== +"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== dependencies: - "@ethereumjs/common" "^2.6.3" - ethereumjs-util "^7.1.4" + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" "@ethereumjs/vm@^5.9.0": - version "5.9.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.0.tgz#54e485097c6dbb42554d541ef8d84d06b7ddf12f" - integrity sha512-0IRsj4IuF8lFDWVVLc4mFOImaSX8VWF8CGm3mXHG/LLlQ/Tryy/kKXMw/bU9D+Zw03CdteW+wCGqNFS6+mPjpg== + version "5.9.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.2.tgz#e707976d507793096e449a87f0b204f614421cee" + integrity sha512-6zvH7iuMI7+74aGak6j9+GDYpV2T08vy2FL4iSK1PId7lNyjFELCAzDCSTQcVoyPoRMkZvRHy79W+djwvguMCA== dependencies: "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.2" + "@ethereumjs/blockchain" "^5.5.3" "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.1" + "@ethereumjs/tx" "^3.5.2" async-eventemitter "^0.2.4" core-js-pure "^3.0.1" debug "^4.3.3" - ethereumjs-util "^7.1.4" + ethereumjs-util "^7.1.5" functional-red-black-tree "^1.0.1" mcl-wasm "^0.7.1" merkle-patricia-tree "^4.2.4" @@ -1186,10 +1186,10 @@ "@ethersproject/properties" ">=5.0.0-beta.131" "@ethersproject/strings" ">=5.0.0-beta.130" -"@ethersproject/abi@5.6.3", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.3.tgz#2d643544abadf6e6b63150508af43475985c23db" - integrity sha512-CxKTdoZY4zDJLWXG6HzNH6znWK0M79WzzxHegDoecE3+K32pzfHOzuXg2/oGSTecZynFgpkjYXNPOqXVJlqClw== +"@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" + integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== dependencies: "@ethersproject/address" "^5.6.1" "@ethersproject/bignumber" "^5.6.2" @@ -1354,10 +1354,10 @@ resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== -"@ethersproject/networks@5.6.3", "@ethersproject/networks@^5.6.3": - version "5.6.3" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.3.tgz#3ee3ab08f315b433b50c99702eb32e0cf31f899f" - integrity sha512-QZxRH7cA5Ut9TbXwZFiCyuPchdWi87ZtVNHWZd0R6YFgYtes2jQ3+bsslJ0WdyDe0i6QumqtoYqvY3rrQFRZOQ== +"@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" + integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== dependencies: "@ethersproject/logger" "^5.6.0" @@ -1810,26 +1810,26 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@microsoft/api-extractor-model@7.17.3", "@microsoft/api-extractor-model@^7.0.28": - version "7.17.3" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.17.3.tgz#06899902ab1c10b85690232f21c1585cc158d983" - integrity sha512-ETslFxVEZTEK6mrOARxM34Ll2W/5H2aTk9Pe9dxsMCnthE8O/CaStV4WZAGsvvZKyjelSWgPVYGowxGVnwOMlQ== +"@microsoft/api-extractor-model@7.18.2", "@microsoft/api-extractor-model@^7.0.28": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.18.2.tgz#def74be8bc785beb9a6f52a0a4c0b9f8f782e587" + integrity sha512-m7MCvJrudnWyE4iuRhdmgJTdTkYLw+yN/XUp3y9sxicu5/mNdg8y4pflaM82ZbLakhfGreMlB/XgjvyGbLHwkA== dependencies: "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.5" + "@rushstack/node-core-library" "3.45.7" "@microsoft/api-extractor@^7.22.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.24.2.tgz#4abb24319fa77884dab6d807388056e9cd85488e" - integrity sha512-QWZh9aQZvBAdRVK+Go8NiW8YNMN//OGiNqgA3iZ2sEy8imUqkRBCybXgmw2HkEYyPnn55CFoMKvnAHvV9+4B/A== + version "7.25.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.25.2.tgz#365639ad7409dcc1ccdfdd9ba35db99592a41531" + integrity sha512-ITuiZqMszZE38dGqavkFFIAW/GQGfkk8ahgBqVj3j1qD4wioPTRlSidhQDCezExAhrMt/bTkuZ3woLeR0uiSsg== dependencies: - "@microsoft/api-extractor-model" "7.17.3" + "@microsoft/api-extractor-model" "7.18.2" "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.5" - "@rushstack/rig-package" "0.3.11" - "@rushstack/ts-command-line" "4.11.0" + "@rushstack/node-core-library" "3.45.7" + "@rushstack/rig-package" "0.3.12" + "@rushstack/ts-command-line" "4.11.1" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" @@ -2083,10 +2083,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.45.5": - version "3.45.5" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.5.tgz#00f92143cc21c3ad94fcd81ba168a40ac8cb77f2" - integrity sha512-KbN7Hp9vH3bD3YJfv6RnVtzzTAwGYIBl7y2HQLY4WEQqRbvE3LgI78W9l9X+cTAXCX//p0EeoiUYNTFdqJrMZg== +"@rushstack/node-core-library@3.45.7": + version "3.45.7" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.7.tgz#e959820a6db067c278c20df51503e2bc422e9349" + integrity sha512-DHfOvgPrm9X4uILlUfGgiqcobe5QGNDmqqYLM8dJ5M5fqQ9H5GwyUwBnFeRsxBo0b75RE83l41Oze+gdHKvKaA== dependencies: "@types/node" "12.20.24" colors "~1.2.1" @@ -2098,18 +2098,18 @@ timsort "~0.3.0" z-schema "~5.0.2" -"@rushstack/rig-package@0.3.11": - version "0.3.11" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.11.tgz#92a05929822610e8b42f2ad330d9ea20afae5165" - integrity sha512-uI1/g5oQPtyrT9nStoyX/xgZSLa2b+srRFaDk3r1eqC7zA5th4/bvTGl2QfV3C9NcP+coSqmk5mFJkUfH6i3Lw== +"@rushstack/rig-package@0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz#6bf2d45374ba665902bf31ec0c6e5dad55ba1b73" + integrity sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg== dependencies: resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.11.0": - version "4.11.0" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.0.tgz#4cd3b9f59b41aed600042936260fdaa55ca0184d" - integrity sha512-ptG9L0mjvJ5QtK11GsAFY+jGfsnqHDS6CY6Yw1xT7a9bhjfNYnf6UPwjV+pF6UgiucfNcMDNW9lkDLxvZKKxMg== +"@rushstack/ts-command-line@4.11.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.1.tgz#10b80960ddaed685445289807c75743e4ef0b5e9" + integrity sha512-Xo8LaQOXlNSfp+qIuIPb1tfX7b4H21ksqiMo/HbeZI5AX1klHMqKjWcEs0AqgE9huvQj6cvnCla8Eq/GDcwMIg== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" @@ -2233,9 +2233,9 @@ webpack "^5.61.0" "@solidity-parser/parser@^0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.1.tgz#179afb29f4e295a77cc141151f26b3848abc3c46" - integrity sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw== + version "0.14.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.2.tgz#2d8f2bddb217621df882ceeae7d7b42ae8664db3" + integrity sha512-10cr0s+MtRtqjEw0WFJrm2rwULN30xx7btd/v9cmqME2617/2M5MbHDkFIGIGTa7lwNw4bN9mVGfhlLzrYw8pA== dependencies: antlr4ts "^0.5.0-alpha.4" @@ -2478,24 +2478,24 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== "@typechain/ethers-v5@^2.0.0": version "2.0.0" @@ -2595,9 +2595,9 @@ "@types/estree" "*" "@types/eslint@*": - version "8.4.2" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.2.tgz#48f2ac58ab9c631cb68845c3d956b28f79fad575" - integrity sha512-Z1nseZON+GEnFjJc04sv4NSALGjhFwy6K0HXt7qsn5ArfAKtb63dXNJHf+1YW6IpOIYRBGUbu3GwJdj8DGnCjA== + version "8.4.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.3.tgz#5c92815a3838b1985c90034cd85f26f59d9d0ece" + integrity sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw== dependencies: "@types/estree" "*" "@types/json-schema" "*" @@ -2696,17 +2696,17 @@ integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== "@types/node-fetch@^2.5.5": - version "2.6.1" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.1.tgz#8f127c50481db65886800ef496f20bbf15518975" - integrity sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA== + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== dependencies: "@types/node" "*" form-data "^3.0.0" "@types/node@*": - version "17.0.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.38.tgz#f8bb07c371ccb1903f3752872c89f44006132947" - integrity sha512-5jY9RhV7c0Z4Jy09G+NIDTsCZ5G0L5n+Z+p+Y7t5VJHM30bgwzSjVtlcBxqAj+6L/swIlvtOSzr8rBk/aNyV2g== + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== "@types/node@12.20.24": version "12.20.24" @@ -2714,14 +2714,14 @@ integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== "@types/node@^12.12.6": - version "12.20.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.54.tgz#38a3dff8c2a939553f2cdb85dcddc68be46c3c68" - integrity sha512-CFMnEPkSXWALI73t1oIWyb8QOmVrp6RruAqIx349sd+1ImaFwzlKcz55mwrx/yLyOyz1gkq/UKuNOigt27PXqg== + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^16.11.11": - version "16.11.38" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.38.tgz#be0edd097b23eace6c471c525a74b3f98803017f" - integrity sha512-hjO/0K140An3GWDw2HJfq7gko3wWeznbjXgg+rzPdVzhe198hp4x2i1dgveAOEiFKd8sOilAxzoSJiVv5P/CUg== + version "16.11.41" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.41.tgz#88eb485b1bfdb4c224d878b7832239536aa2f813" + integrity sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2762,9 +2762,9 @@ "@types/node" "*" "@types/semver@^7.3.6": - version "7.3.9" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc" - integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ== + version "7.3.10" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.10.tgz#5f19ee40cbeff87d916eedc8c2bfe2305d957f73" + integrity sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw== "@types/sinon-chai@^3.2.3": version "3.2.8" @@ -2829,13 +2829,13 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^5.4.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz#23d82a4f21aaafd8f69dbab7e716323bb6695cc8" - integrity sha512-DDrIA7GXtmHXr1VCcx9HivA39eprYBIFxbQEHI6NyraRDxCGpxAFiYQAT/1Y0vh1C+o2vfBiy4IuPoXxtTZCAQ== + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz#6204ac33bdd05ab27c7f77960f1023951115d403" + integrity sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA== dependencies: - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/type-utils" "5.27.0" - "@typescript-eslint/utils" "5.27.0" + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/type-utils" "5.28.0" + "@typescript-eslint/utils" "5.28.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2844,68 +2844,68 @@ tsutils "^3.21.0" "@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^5.4.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.0.tgz#62bb091ed5cf9c7e126e80021bb563dcf36b6b12" - integrity sha512-8oGjQF46c52l7fMiPPvX4It3u3V3JipssqDfHQ2hcR0AeR8Zge+OYyKUCm5b70X72N1qXt0qgHenwN6Gc2SXZA== + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.28.0.tgz#639b101cad2bfb7ae16e69710ac95c42bd4eae33" + integrity sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA== dependencies: - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/typescript-estree" "5.27.0" + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/typescript-estree" "5.28.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.0.tgz#a272178f613050ed62f51f69aae1e19e870a8bbb" - integrity sha512-VnykheBQ/sHd1Vt0LJ1JLrMH1GzHO+SzX6VTXuStISIsvRiurue/eRkTqSrG0CexHQgKG8shyJfR4o5VYioB9g== +"@typescript-eslint/scope-manager@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" + integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w== dependencies: - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/visitor-keys" "5.27.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/visitor-keys" "5.28.0" -"@typescript-eslint/type-utils@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.0.tgz#36fd95f6747412251d79c795b586ba766cf0974b" - integrity sha512-vpTvRRchaf628Hb/Xzfek+85o//zEUotr1SmexKvTfs7czXfYjXVT/a5yDbpzLBX1rhbqxjDdr1Gyo0x1Fc64g== +"@typescript-eslint/type-utils@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" + integrity sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ== dependencies: - "@typescript-eslint/utils" "5.27.0" + "@typescript-eslint/utils" "5.28.0" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.0.tgz#c3f44b9dda6177a9554f94a74745ca495ba9c001" - integrity sha512-lY6C7oGm9a/GWhmUDOs3xAVRz4ty/XKlQ2fOLr8GAIryGn0+UBOoJDWyHer3UgrHkenorwvBnphhP+zPmzmw0A== +"@typescript-eslint/types@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" + integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== -"@typescript-eslint/typescript-estree@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.0.tgz#7965f5b553c634c5354a47dcce0b40b94611e995" - integrity sha512-QywPMFvgZ+MHSLRofLI7BDL+UczFFHyj0vF5ibeChDAJgdTV8k4xgEwF0geFhVlPc1p8r70eYewzpo6ps+9LJQ== +"@typescript-eslint/typescript-estree@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" + integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA== dependencies: - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/visitor-keys" "5.27.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/visitor-keys" "5.28.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.0.tgz#d0021cbf686467a6a9499bd0589e19665f9f7e71" - integrity sha512-nZvCrkIJppym7cIbP3pOwIkAefXOmfGPnCM0LQfzNaKxJHI6VjI8NC662uoiPlaf5f6ymkTy9C3NQXev2mdXmA== +"@typescript-eslint/utils@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" + integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.27.0" - "@typescript-eslint/types" "5.27.0" - "@typescript-eslint/typescript-estree" "5.27.0" + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/typescript-estree" "5.28.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.27.0": - version "5.27.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.0.tgz#97aa9a5d2f3df8215e6d3b77f9d214a24db269bd" - integrity sha512-46cYrteA2MrIAjv9ai44OQDUoCZyHeGIc4lsjCUX2WT6r4C+kidz1bNiR4017wHOPUythYeH+Sc7/cFP97KEAA== +"@typescript-eslint/visitor-keys@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" + integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA== dependencies: - "@typescript-eslint/types" "5.27.0" + "@typescript-eslint/types" "5.28.0" eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": @@ -4455,15 +4455,15 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3: - version "4.20.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" - integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.20.4: + version "4.20.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== dependencies: - caniuse-lite "^1.0.30001332" - electron-to-chromium "^1.4.118" + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" escalade "^3.1.1" - node-releases "^2.0.3" + node-releases "^2.0.5" picocolors "^1.0.0" bs-logger@0.x: @@ -4654,10 +4654,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001332: - version "1.0.30001346" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz#e895551b46b9cc9cc9de852facd42f04839a8fbe" - integrity sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001349: + version "1.0.30001356" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz#cbf5fe7b33f90962bfbca532212ea478d4ec9de8" + integrity sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ== caseless@~0.12.0: version "0.12.0" @@ -4776,9 +4776,9 @@ ci-info@^2.0.0: integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== ci-info@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.1.tgz#58331f6f472a25fe3a50a351ae3052936c2c7f32" - integrity sha512-SXgeMX9VwDe7iFFaEWkA5AstuER9YKqy4EhHqr4DVqkwmD9rpVimkMKWHdjn30Ja45txyjhSn63lVX69eVCckg== + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== ci-job-number@^1.2.2: version "1.2.2" @@ -5163,17 +5163,17 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.22.8" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.22.8.tgz#46fa34ce1ddf742acd7f95f575f66bbb21e05d62" - integrity sha512-pQnwg4xtuvc2Bs/5zYQPaEYYSuTxsF7LBWF0SvnVhthZo/Qe+rJpcEekrdNK5DWwDJ0gv0oI9NNX5Mppdy0ctg== + version "3.23.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b" + integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A== dependencies: - browserslist "^4.20.3" + browserslist "^4.20.4" semver "7.0.0" core-js-pure@^3.0.1, core-js-pure@^3.20.2: - version "3.22.8" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.22.8.tgz#f2157793b58719196ccf9673cc14f3683adc0957" - integrity sha512-bOxbZIy9S5n4OVH63XaLVXZ49QKicjowDx/UELyJ68vxfCRpYsbyh/WNZNfEfAk+ekA8vSjt+gCDpvh672bc3w== + version "3.23.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.1.tgz#0b27e4c3ad46178b84e790dbbb81987218ab82ad" + integrity sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -5300,10 +5300,10 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -css-declaration-sorter@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz#bfd2f6f50002d6a3ae779a87d3a0c5d5b10e0f02" - integrity sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg== +css-declaration-sorter@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14" + integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== css-loader@^6.5.0: version "6.7.1" @@ -5360,12 +5360,12 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^5.2.10: - version "5.2.10" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.10.tgz#6dfffe6cc3b13f3bb356a42c49a334a98700ef45" - integrity sha512-H8TJRhTjBKVOPltp9vr9El9I+IfYsOMhmXdK0LwdvwJcxYX9oWkY7ctacWusgPWAgQq1vt/WO8v+uqpfLnM7QA== +cssnano-preset-default@^5.2.12: + version "5.2.12" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97" + integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== dependencies: - css-declaration-sorter "^6.2.2" + css-declaration-sorter "^6.3.0" cssnano-utils "^3.1.0" postcss-calc "^8.2.3" postcss-colormin "^5.3.0" @@ -5374,7 +5374,7 @@ cssnano-preset-default@^5.2.10: postcss-discard-duplicates "^5.1.0" postcss-discard-empty "^5.1.1" postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.5" + postcss-merge-longhand "^5.1.6" postcss-merge-rules "^5.1.2" postcss-minify-font-values "^5.1.0" postcss-minify-gradients "^5.1.1" @@ -5382,14 +5382,14 @@ cssnano-preset-default@^5.2.10: postcss-minify-selectors "^5.2.1" postcss-normalize-charset "^5.1.0" postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.0" - postcss-normalize-repeat-style "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" postcss-normalize-string "^5.1.0" postcss-normalize-timing-functions "^5.1.0" postcss-normalize-unicode "^5.1.0" postcss-normalize-url "^5.1.0" postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.1" + postcss-ordered-values "^5.1.3" postcss-reduce-initial "^5.1.0" postcss-reduce-transforms "^5.1.0" postcss-svgo "^5.1.0" @@ -5401,11 +5401,11 @@ cssnano-utils@^3.1.0: integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== cssnano@^5.0.6: - version "5.1.10" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.10.tgz#fc6ddd9a4d7d238f320634326ed814cf0abf6e1c" - integrity sha512-ACpnRgDg4m6CZD/+8SgnLcGCgy6DDGdkMbOawwdvVxNietTNLe/MtWcenp6qT0PRt5wzhGl6/cjMWCdhKXC9QA== + version "5.1.12" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.12.tgz#bcd0b64d6be8692de79332c501daa7ece969816c" + integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== dependencies: - cssnano-preset-default "^5.2.10" + cssnano-preset-default "^5.2.12" lilconfig "^2.0.3" yaml "^1.10.2" @@ -5842,10 +5842,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.118: - version "1.4.144" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.144.tgz#9a5d1f41452ecc65b686d529ae919248da44f406" - integrity sha512-R3RV3rU1xWwFJlSClVWDvARaOk6VUO/FubHLodIASDB3Mc2dzuWvNdfOgH9bwHUTqT79u92qw60NWfwUdzAqdg== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.147: + version "1.4.161" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz#49cb5b35385bfee6cc439d0a04fbba7a7a7f08a1" + integrity sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -6823,10 +6823,10 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4: - version "7.1.4" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.4.tgz#a6885bcdd92045b06f596c7626c3e89ab3312458" - integrity sha512-p6KmuPCX4mZIqsQzXfmSx9Y0l2hqf+VkAiwSisW3UKUFdk8ZkAt+AYaor83z2nSi6CU2zSsXMlD80hAbNEGM0A== +ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== dependencies: "@types/bn.js" "^5.1.0" bn.js "^5.1.2" @@ -6917,11 +6917,11 @@ ethers@^4.0.40: xmlhttprequest "1.8.0" ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: - version "5.6.8" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.8.tgz#d36b816b4896341a80a8bbd2a44e8cb6e9b98dd4" - integrity sha512-YxIGaltAOdvBFPZwIkyHnXbW40f1r8mHUgapW6dxkO+6t7H6wY8POUn0Kbxrd/N7I4hHxyi7YCddMAH/wmho2w== + version "5.6.9" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" + integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== dependencies: - "@ethersproject/abi" "5.6.3" + "@ethersproject/abi" "5.6.4" "@ethersproject/abstract-provider" "5.6.1" "@ethersproject/abstract-signer" "5.6.2" "@ethersproject/address" "5.6.1" @@ -6936,7 +6936,7 @@ ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: "@ethersproject/json-wallets" "5.6.1" "@ethersproject/keccak256" "5.6.1" "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.3" + "@ethersproject/networks" "5.6.4" "@ethersproject/pbkdf2" "5.6.1" "@ethersproject/properties" "5.6.0" "@ethersproject/providers" "5.6.8" @@ -7646,13 +7646,13 @@ get-func-name@^2.0.0: integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== dependencies: function-bind "^1.1.1" has "^1.0.3" - has-symbols "^1.0.1" + has-symbols "^1.0.3" get-package-type@^0.1.0: version "0.1.0" @@ -7859,9 +7859,9 @@ har-validator@~5.1.3: har-schema "^2.0.0" hardhat@^2.7.0: - version "2.9.7" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.7.tgz#b31302b089486ec1c13c5a3dff18fe71f955f33b" - integrity sha512-PVSgTlM4Mtc4HNEoISpcM6rRNAK3ngqhxUaTmSw9eCtuVmtxTK86Tqnuq4zNPmlrtcuReXry9k3LGEnk2gJgbA== + version "2.9.9" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" + integrity sha512-Qv7SXnRc0zq1kGXruNnSKpP3eFccXMR5Qv6GVX9hBIJ5efN0PflKPq92aQ5Cv3jrjJeRevLznWZVz7bttXhVfw== dependencies: "@ethereumjs/block" "^3.6.2" "@ethereumjs/blockchain" "^5.5.2" @@ -7908,7 +7908,7 @@ hardhat@^2.7.0: stacktrace-parser "^0.1.10" "true-case-path" "^2.2.1" tsort "0.0.1" - undici "^4.14.1" + undici "^5.4.0" uuid "^8.3.2" ws "^7.4.6" @@ -8396,7 +8396,7 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" -is-core-module@^2.1.0, is-core-module@^2.2.0, is-core-module@^2.8.1: +is-core-module@^2.1.0, is-core-module@^2.8.1, is-core-module@^2.9.0: version "2.9.0" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== @@ -10596,7 +10596,7 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.3: +node-releases@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== @@ -11302,10 +11302,10 @@ postcss-discard-overridden@^5.1.0: resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== -postcss-merge-longhand@^5.1.5: - version "5.1.5" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.5.tgz#b0e03bee3b964336f5f33c4fc8eacae608e91c05" - integrity sha512-NOG1grw9wIO+60arKa2YYsrbgvP6tp+jqc7+ZD5/MalIw234ooH2C6KlR6FEn4yle7GqZoBxSK1mLBE9KPur6w== +postcss-merge-longhand@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce" + integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== dependencies: postcss-value-parser "^4.2.0" stylehacks "^5.1.0" @@ -11392,17 +11392,17 @@ postcss-normalize-display-values@^5.1.0: dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-positions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz#902a7cb97cf0b9e8b1b654d4a43d451e48966458" - integrity sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ== +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== dependencies: postcss-value-parser "^4.2.0" -postcss-normalize-repeat-style@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz#f6d6fd5a54f51a741cc84a37f7459e60ef7a6398" - integrity sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw== +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== dependencies: postcss-value-parser "^4.2.0" @@ -11443,10 +11443,10 @@ postcss-normalize-whitespace@^5.1.1: dependencies: postcss-value-parser "^4.2.0" -postcss-ordered-values@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz#0b41b610ba02906a3341e92cab01ff8ebc598adb" - integrity sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw== +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== dependencies: cssnano-utils "^3.1.0" postcss-value-parser "^4.2.0" @@ -11541,9 +11541,9 @@ prettier@^1.19.1: integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== prettier@^2.1.2, prettier@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" - integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== pretty-format@^25.2.1, pretty-format@^25.5.0: version "25.5.0" @@ -11725,13 +11725,20 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qs@6.10.3, qs@^6.7.0: +qs@6.10.3: version "6.10.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== dependencies: side-channel "^1.0.4" +qs@^6.7.0: + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + dependencies: + side-channel "^1.0.4" + qs@~6.5.2: version "6.5.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" @@ -11799,7 +11806,7 @@ react-is@^17.0.1: read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== dependencies: find-up "^1.0.0" read-pkg "^1.0.0" @@ -11807,7 +11814,7 @@ read-pkg-up@^1.0.1: read-pkg-up@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== dependencies: find-up "^2.0.0" read-pkg "^2.0.0" @@ -11815,7 +11822,7 @@ read-pkg-up@^2.0.0: read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== dependencies: load-json-file "^1.0.0" normalize-package-data "^2.3.2" @@ -11824,7 +11831,7 @@ read-pkg@^1.0.0: read-pkg@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== dependencies: load-json-file "^2.0.0" normalize-package-data "^2.3.2" @@ -11833,7 +11840,7 @@ read-pkg@^2.0.0: readable-stream@^1.0.33: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -11865,7 +11872,7 @@ readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.4.0, readable readable-stream@~1.0.15: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== dependencies: core-util-is "~1.0.0" inherits "~2.0.1" @@ -11882,7 +11889,7 @@ readdirp@~3.6.0: rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== dependencies: resolve "^1.1.6" @@ -11959,7 +11966,7 @@ regexpp@^3.2.0: regexpu-core@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA= + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== dependencies: regenerate "^1.2.1" regjsgen "^0.2.0" @@ -11980,7 +11987,7 @@ regexpu-core@^5.0.1: regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc= + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== regjsgen@^0.6.0: version "0.6.0" @@ -11990,7 +11997,7 @@ regjsgen@^0.6.0: regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw= + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== dependencies: jsesc "~0.5.0" @@ -12009,12 +12016,12 @@ repeat-element@^1.1.2: repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== repeating@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== dependencies: is-finite "^1.0.0" @@ -12047,12 +12054,12 @@ request@^2.79.0, request@^2.85.0: require-directory@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^1.1.0: version "1.2.1" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" @@ -12062,7 +12069,7 @@ require-from-string@^2.0.0, require-from-string@^2.0.2: require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== require-main-filename@^2.0.0: version "2.0.0" @@ -12072,7 +12079,7 @@ require-main-filename@^2.0.0: require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= + integrity sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w== dependencies: caller-path "^0.1.0" resolve-from "^1.0.0" @@ -12087,7 +12094,7 @@ resolve-cwd@^3.0.0: resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + integrity sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg== resolve-from@^4.0.0: version "4.0.0" @@ -12102,7 +12109,7 @@ resolve-from@^5.0.0: resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== resolve.exports@^1.1.0: version "1.1.0" @@ -12117,21 +12124,22 @@ resolve@1.17.0, resolve@~1.17.0: path-parse "^1.0.6" resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.6.0, resolve@^1.8.1, resolve@~1.22.0: - version "1.22.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" - integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== dependencies: - is-core-module "^2.8.1" + is-core-module "^2.9.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0" resolve@^2.0.0-next.3: - version "2.0.0-next.3" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.3.tgz#d41016293d4a8586a39ca5d9b5f15cbea1f55e46" - integrity sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q== + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" resolve@~1.19.0: version "1.19.0" @@ -12144,14 +12152,14 @@ resolve@~1.19.0: responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== dependencies: lowercase-keys "^1.0.0" restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== dependencies: onetime "^2.0.0" signal-exit "^3.0.2" @@ -12167,7 +12175,7 @@ restore-cursor@^3.1.0: resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha1-8ej0YeQGS6Oegq883CqMiT0HZ1k= + integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== dependencies: through "~2.3.4" @@ -12321,7 +12329,7 @@ safe-event-emitter@^1.0.1: safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== dependencies: ret "~0.1.10" @@ -12369,7 +12377,7 @@ scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: scryptsy@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha1-oyJfpLJST4AnAHYeKFW987LZIWM= + integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== dependencies: pbkdf2 "^3.0.3" @@ -12390,7 +12398,7 @@ seedrandom@3.0.1: semaphore-async-await@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" - integrity sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo= + integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" @@ -12488,12 +12496,12 @@ servify@^0.1.12: set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== set-immediate-shim@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E= + integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" @@ -12508,12 +12516,12 @@ set-value@^2.0.0, set-value@^2.0.1: setimmediate@1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48= + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.2.0: version "1.2.0" @@ -12531,7 +12539,7 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" @@ -12545,7 +12553,7 @@ shebang-command@^2.0.0: shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== shebang-regex@^3.0.0: version "3.0.0" @@ -12610,7 +12618,7 @@ size-limit@^6.0.4: slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== slash@^2.0.0: version "2.0.0" @@ -12776,7 +12784,7 @@ source-map-url@^0.4.0: source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" @@ -12784,9 +12792,9 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== sourcemap-codec@^1.4.8: version "1.4.8" @@ -12829,7 +12837,7 @@ split-string@^3.0.1, split-string@^3.0.2: sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== sshpk@^1.7.0: version "1.17.0" @@ -12908,7 +12916,7 @@ standardx@3.0.0: static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== dependencies: define-property "^0.2.5" object-copy "^0.1.0" @@ -12929,7 +12937,7 @@ stream-to-pull-stream@^1.7.1: strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== string-argv@~0.3.1: version "0.3.1" @@ -12960,7 +12968,7 @@ string-length@^4.0.1: string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== dependencies: code-point-at "^1.0.0" is-fullwidth-code-point "^1.0.0" @@ -13043,7 +13051,7 @@ string_decoder@^1.1.1: string_decoder@~0.10.x: version "0.10.31" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== string_decoder@~1.1.1: version "1.1.1" @@ -13055,14 +13063,14 @@ string_decoder@~1.1.1: strip-ansi@^3.0.0, strip-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== dependencies: ansi-regex "^2.0.0" strip-ansi@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== dependencies: ansi-regex "^3.0.0" @@ -13083,14 +13091,14 @@ strip-ansi@^6.0.0, strip-ansi@^6.0.1: strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== dependencies: is-utf8 "^0.2.0" strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== strip-bom@^4.0.0: version "4.0.0" @@ -13100,7 +13108,7 @@ strip-bom@^4.0.0: strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== strip-final-newline@^2.0.0: version "2.0.0" @@ -13110,7 +13118,7 @@ strip-final-newline@^2.0.0: strip-hex-prefix@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha1-DF8VX+8RUTczd96du1iNoFUA428= + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== dependencies: is-hex-prefixed "1.0.0" @@ -13122,7 +13130,7 @@ strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1. strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== style-loader@^3.3.1: version "3.3.1" @@ -13147,7 +13155,7 @@ supports-color@8.1.1, supports-color@^8.0.0: supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== supports-color@^5.3.0: version "5.5.0" @@ -13216,7 +13224,7 @@ swarm-js@^0.1.40: symbol-observable@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + integrity sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw== symbol-tree@^3.2.4: version "3.2.4" @@ -13323,9 +13331,9 @@ terser@^4.6.2: source-map-support "~0.5.12" terser@^5.7.2: - version "5.14.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.0.tgz#eefeec9af5153f55798180ee2617f390bdd285e2" - integrity sha512-JC6qfIEkPBd9j1SMO3Pfn+A6w2kQV54tv+ABQLgZr7dA3k/DL/OBoYSWxzVpZev3J+bUHXfr55L8Mox7AaNo6g== + version "5.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" + integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -13344,7 +13352,7 @@ test-exclude@^6.0.0: test-value@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha1-Edpv9nDzRxpztiXKTz/c97t0gpE= + integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== dependencies: array-back "^1.0.3" typical "^2.6.0" @@ -13357,7 +13365,7 @@ testrpc@0.0.1: text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== throat@^6.0.1: version "6.0.1" @@ -13375,12 +13383,12 @@ through2@^2.0.3: through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== timers-ext@^0.1.5, timers-ext@^0.1.7: version "0.1.7" @@ -13393,7 +13401,7 @@ timers-ext@^0.1.5, timers-ext@^0.1.7: timsort@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== tiny-glob@^0.2.6: version "0.2.9" @@ -13425,17 +13433,17 @@ tmpl@1.0.5: to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== to-fast-properties@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== dependencies: kind-of "^3.0.2" @@ -13447,7 +13455,7 @@ to-readable-stream@^1.0.0: to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== dependencies: is-number "^3.0.0" repeat-string "^1.6.1" @@ -13501,12 +13509,12 @@ tr46@^2.1.0: tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM= + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== "true-case-path@^2.2.1": version "2.2.1" @@ -13579,9 +13587,9 @@ ts-jest@^25.3.1, ts-jest@^27.0.7: yargs-parser "20.x" ts-node@^10.4.0: - version "10.8.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.0.tgz#3ceb5ac3e67ae8025c1950626aafbdecb55d82ce" - integrity sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA== + version "10.8.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.1.tgz#ea2bd3459011b52699d7e88daa55a45a1af4f066" + integrity sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" @@ -13687,7 +13695,7 @@ tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1: tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" - integrity sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y= + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== tsutils@^3.21.0: version "3.21.0" @@ -13699,7 +13707,7 @@ tsutils@^3.21.0: tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== dependencies: safe-buffer "^5.0.1" @@ -13711,7 +13719,7 @@ tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: tweetnacl@^0.14.3, tweetnacl@~0.14.0: version "0.14.5" resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== tweetnacl@^1.0.0, tweetnacl@^1.0.3: version "1.0.3" @@ -13721,7 +13729,7 @@ tweetnacl@^1.0.0, tweetnacl@^1.0.3: type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== dependencies: prelude-ls "~1.1.2" @@ -13802,34 +13810,34 @@ typedarray-to-buffer@^3.1.5: typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript@^3.7.3, typescript@^4.4.4, typescript@^4.5.2, typescript@~4.6.3: - version "4.7.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.2.tgz#1f9aa2ceb9af87cca227813b4310fff0b51593c4" - integrity sha512-Mamb1iX2FDUpcTRzltPxgWMKy3fhg0TN378ylbktPGPK/99KbDtMQ4W1hwgsbPAsG3a0xKa1vmw4VKZQbkvz5A== + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha1-l+uRgFx/VdL5QXSPpQ0xXZke8ZU= + integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== typewise@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha1-EGeTZUCvl5N8xdz5kiSG6fooRlE= + integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== dependencies: typewise-core "^1.2.0" typewiselite@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" - integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= + integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== typical@^2.6.0, typical@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0= + integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== typical@^4.0.0: version "4.0.0" @@ -13861,10 +13869,10 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undici@^4.14.1: - version "4.16.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" - integrity sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw== +undici@^5.4.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" + integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -13902,7 +13910,7 @@ union-value@^1.0.0: uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" @@ -13922,12 +13930,12 @@ unorm@^1.3.3: unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== unset-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== dependencies: has-value "^0.3.1" isobject "^3.0.0" @@ -13942,36 +13950,36 @@ uri-js@^4.2.2: urix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== url-parse-lax@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== dependencies: prepend-http "^1.0.1" url-parse-lax@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== dependencies: prepend-http "^2.0.0" url-set-query@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk= + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== url-to-options@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== dependencies: punycode "1.3.2" querystring "0.2.0" @@ -13996,7 +14004,7 @@ utf8@3.0.0, utf8@^3.0.0: util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== util.promisify@^1.0.0: version "1.1.1" @@ -14012,12 +14020,12 @@ util.promisify@^1.0.0: utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== uuid@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w= + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== uuid@3.3.2: version "3.3.2" @@ -14074,12 +14082,12 @@ varint@^5.0.0: vary@^1, vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== dependencies: assert-plus "^1.0.0" core-util-is "1.0.2" @@ -14117,7 +14125,7 @@ watchpack@^2.3.1: wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== dependencies: defaults "^1.0.3" @@ -14402,7 +14410,7 @@ web3@1.2.11: webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^5.0.0: version "5.0.0" @@ -14493,7 +14501,7 @@ whatwg-mimetype@^2.3.0: whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" @@ -14521,12 +14529,12 @@ which-boxed-primitive@^1.0.2: which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== which@2.0.2, which@^2.0.1: version "2.0.2" @@ -14552,7 +14560,7 @@ widest-line@^3.1.0: window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU= + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== word-wrap@~1.2.3: version "1.2.3" @@ -14575,7 +14583,7 @@ workerpool@6.2.0: wrap-ansi@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== dependencies: string-width "^1.0.1" strip-ansi "^3.0.1" @@ -14583,7 +14591,7 @@ wrap-ansi@^2.0.0: wrap-ansi@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== dependencies: string-width "^2.1.1" strip-ansi "^4.0.0" @@ -14618,7 +14626,7 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== write-file-atomic@^3.0.0: version "3.0.3" @@ -14640,7 +14648,7 @@ write@1.0.3: write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + integrity sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA== dependencies: mkdirp "^0.5.1" @@ -14693,7 +14701,7 @@ xhr-request@^1.0.1, xhr-request@^1.1.0: xhr2-cookies@1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg= + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== dependencies: cookiejar "^2.1.1" @@ -14720,7 +14728,7 @@ xmlchars@^2.2.0: xmlhttprequest@1.8.0: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw= + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" @@ -14730,7 +14738,7 @@ xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: xtend@~2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= + integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== dependencies: object-keys "~0.4.0" @@ -14752,7 +14760,7 @@ y18n@^5.0.5: yaeti@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc= + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: version "3.1.1" @@ -14790,7 +14798,7 @@ yargs-parser@^13.1.0: yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ= + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== dependencies: camelcase "^3.0.0" lodash.assign "^4.0.6" @@ -14838,7 +14846,7 @@ yargs@16.2.0, yargs@^16.2.0: yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha1-wMQpJMpKqmsObaFznfshZDn53cA= + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== dependencies: cliui "^3.2.0" decamelize "^1.1.1" @@ -14856,9 +14864,9 @@ yargs@^4.7.1: yargs-parser "^2.4.1" yarn@^1.22.5: - version "1.22.18" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.18.tgz#05b822ade8c672987bab8858635145da0850f78a" - integrity sha512-oFffv6Jp2+BTUBItzx1Z0dpikTX+raRdqupfqzeMKnoh7WD6RuPAxcqDkMUy9vafJkrB0YaV708znpuMhEBKGQ== + version "1.22.19" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== yn@3.1.1: version "3.1.1" From 54c5fde61d87ebccb4dff74365fdc17c70aae528 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 01:25:57 -0400 Subject: [PATCH 005/125] remove lock file --- yarn.lock | 14890 ---------------------------------------------------- 1 file changed, 14890 deletions(-) delete mode 100644 yarn.lock diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 709234e..0000000 --- a/yarn.lock +++ /dev/null @@ -1,14890 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@0xsequence/create3@https://github.com/0xsequence/create3.git": - version "3.0.0" - resolved "https://github.com/0xsequence/create3.git#acc4703a21ec1d71dc2a99db088c4b1f467530fd" - dependencies: - csv-writer "^1.6.0" - -"@0xsequence/sstore2@github:0xsequence/sstore2": - version "1.1.0" - resolved "https://codeload.github.com/0xsequence/sstore2/tar.gz/0a28fe61b6e81de9a05b462a24b9f4ba8c70d5b7" - dependencies: - "@0xsequence/create3" "https://github.com/0xsequence/create3.git" - csv-writer "^1.6.0" - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== - dependencies: - "@babel/highlight" "^7.16.7" - -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" - integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== - -"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" - integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.5" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.5" - "@babel/types" "^7.18.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== - dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" - jsesc "^2.5.1" - -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" - integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== - dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.20.2" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" - integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" - integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" - -"@babel/helper-define-polyfill-provider@^0.0.3": - version "0.0.3" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz#df9da66285b884ce66417abdd0b6ca91198149bd" - integrity sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ== - dependencies: - "@babel/helper-compilation-targets" "^7.10.4" - "@babel/helper-module-imports" "^7.10.4" - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/traverse" "^7.11.5" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-define-polyfill-provider@^0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" - integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== - dependencies: - "@babel/helper-compilation-targets" "^7.13.0" - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.13.0" - "@babel/traverse" "^7.13.0" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" - integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5", "@babel/parser@^7.7.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" - integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" - integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" - integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - -"@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" - integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" - integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" - integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" - integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" - integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" - integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" - integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" - integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== - dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.17.12" - -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" - integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" - integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" - integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" - integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" - integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" - integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" - integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" - integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" - -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-block-scoping@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" - integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-classes@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" - integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.18.2" - "@babel/helper-split-export-declaration" "^7.16.7" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" - integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-destructuring@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" - integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-duplicate-keys@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" - integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-for-of@^7.18.1": - version "7.18.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" - integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== - dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-literals@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" - integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-modules-amd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" - integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" - integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== - dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-identifier" "^7.16.7" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" - integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== - dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" - integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-new-target@^7.17.12": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" - integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - -"@babel/plugin-transform-parameters@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" - integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-regenerator@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" - integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" - integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-runtime@^7.5.5": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743" - integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - semver "^6.3.0" - -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" - integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-template-literals@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" - integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-typeof-symbol@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" - integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/preset-env@^7.11.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" - integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== - dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-async-generator-functions" "^7.17.12" - "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.18.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.17.12" - "@babel/plugin-proposal-json-strings" "^7.17.12" - "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.18.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-private-methods" "^7.17.12" - "@babel/plugin-proposal-private-property-in-object" "^7.17.12" - "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.17.12" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.17.12" - "@babel/plugin-transform-async-to-generator" "^7.17.12" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.17.12" - "@babel/plugin-transform-classes" "^7.17.12" - "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.18.0" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.17.12" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.18.1" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.17.12" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.18.0" - "@babel/plugin-transform-modules-commonjs" "^7.18.2" - "@babel/plugin-transform-modules-systemjs" "^7.18.0" - "@babel/plugin-transform-modules-umd" "^7.18.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" - "@babel/plugin-transform-new-target" "^7.17.12" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.17.12" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.18.0" - "@babel/plugin-transform-reserved-words" "^7.17.12" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.17.12" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.18.2" - "@babel/plugin-transform-typeof-symbol" "^7.17.12" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.2" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/runtime-corejs3@^7.10.2": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" - integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== - dependencies: - core-js-pure "^3.20.2" - regenerator-runtime "^0.13.4" - -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" - integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" - integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.5" - "@babel/types" "^7.18.4" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@beehiveinnovation/balancer-core@0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@beehiveinnovation/balancer-core/-/balancer-core-0.0.7.tgz#4e2d3c7d2d27c26051e6153444df028568067886" - integrity sha512-BvaST8WKnaMKus4B7bii+3pQkV2o1dJ/O0ibrjOsHSGKMruDGpe7rp8UFqjfQCmtIVohIRGX0eXyDrUiXNCX0Q== - dependencies: - decimal.js "^10.2.0" - ganache-cli "^6.7.0" - global "^4.4.0" - -"@beehiveinnovation/configurable-rights-pool@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@beehiveinnovation/configurable-rights-pool/-/configurable-rights-pool-0.0.1.tgz#e7c2a4a80771636703be2a34e51fccf1fc2a0373" - integrity sha512-12lNX2I7STxYpHhdgnvrp6mHQh7iDD4ZMnTpEL0/rHt4KUfeexRCXReVCH5jWmmaVEmyLe7+197wzukllUaW4w== - dependencies: - "@truffle/hdwallet-provider" "^1.0.43" - decimal.js "^10.2.0" - dotenv "^8.2.0" - ethers "^4.0.40" - ganache-cli "^6.7.0" - truffle-plugin-verify "^0.4.0" - yarn "^1.22.5" - -"@beehiveinnovation/rain-protocol@beehive-innovation/rain-protocol#develop": - version "0.0.16" - resolved "https://codeload.github.com/beehive-innovation/rain-protocol/tar.gz/760e43f0ccc6b51b858c09e3e64f4409d09d1d4f" - dependencies: - "@beehiveinnovation/balancer-core" "0.0.7" - "@beehiveinnovation/configurable-rights-pool" "0.0.1" - "@openzeppelin/contracts" "^4.3.3" - "@openzeppelin/contracts-upgradeable" "^4.4.1" - -"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#af9a3f638d8084d96cbf6898c035920544647879": - version "0.0.16" - resolved "git+https://github.com/beehive-innovation/rain-protocol.git#af9a3f638d8084d96cbf6898c035920544647879" - dependencies: - "@openzeppelin/contracts" "^4.3.3" - "@openzeppelin/contracts-upgradeable" "^4.4.1" - -"@beehiveinnovation/rain-statusfi@git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258": - version "0.0.1" - resolved "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258" - dependencies: - "@beehiveinnovation/rain-protocol" beehive-innovation/rain-protocol#develop - "@openzeppelin/contracts" "^4.4.2" - "@openzeppelin/contracts-upgradeable" "^4.4.2" - base64-sol "^1.1.0" - -"@cspotcode/source-map-support@^0.8.0": - version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" - integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== - dependencies: - "@jridgewell/trace-mapping" "0.3.9" - -"@discoveryjs/json-ext@^0.5.5": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - -"@discoveryjs/natural-compare@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@discoveryjs/natural-compare/-/natural-compare-1.0.0.tgz#4dbb2f31128e532ec2242220cff614bd53f52fe3" - integrity sha512-Pq35vJMxLZq4whZhyaMGO/89mmFee2+6NojaXD2bNo+7CxI6P7C1tncgQ0CM60+WueRMr8uFDKSX/8KitImCQg== - -"@ensdomains/ens@^0.4.4": - version "0.4.5" - resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" - integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== - dependencies: - bluebird "^3.5.2" - eth-ens-namehash "^2.0.8" - solc "^0.4.20" - testrpc "0.0.1" - web3-utils "^1.0.0-beta.31" - -"@ensdomains/resolver@^0.2.4": - version "0.2.4" - resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" - integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== - -"@ethereum-waffle/chai@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.4.tgz#16c4cc877df31b035d6d92486dfdf983df9138ff" - integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== - dependencies: - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.5.2" - -"@ethereum-waffle/compiler@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz#d568ee0f6029e68b5c645506079fbf67d0dfcf19" - integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== - dependencies: - "@resolver-engine/imports" "^0.3.3" - "@resolver-engine/imports-fs" "^0.3.3" - "@typechain/ethers-v5" "^2.0.0" - "@types/mkdirp" "^0.5.2" - "@types/node-fetch" "^2.5.5" - ethers "^5.0.1" - mkdirp "^0.5.1" - node-fetch "^2.6.1" - solc "^0.6.3" - ts-generator "^0.1.1" - typechain "^3.0.0" - -"@ethereum-waffle/ens@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.4.4.tgz#db97ea2c9decbb70b9205d53de2ccbd6f3182ba1" - integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== - dependencies: - "@ensdomains/ens" "^0.4.4" - "@ensdomains/resolver" "^0.2.4" - ethers "^5.5.2" - -"@ethereum-waffle/mock-contract@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz#fc6ffa18813546f4950a69f5892d4dd54b2c685a" - integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== - dependencies: - "@ethersproject/abi" "^5.5.0" - ethers "^5.5.2" - -"@ethereum-waffle/provider@^3.4.4": - version "3.4.4" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.4.4.tgz#398fc1f7eb91cc2df7d011272eacba8af0c7fffb" - integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== - dependencies: - "@ethereum-waffle/ens" "^3.4.4" - ethers "^5.5.2" - ganache-core "^2.13.2" - patch-package "^6.2.2" - postinstall-postinstall "^2.1.0" - -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" - integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== - dependencies: - "@ethereumjs/common" "^2.6.3" - "@ethereumjs/tx" "^3.5.1" - ethereumjs-util "^7.1.4" - merkle-patricia-tree "^4.2.4" - -"@ethereumjs/blockchain@^5.5.2", "@ethereumjs/blockchain@^5.5.3": - version "5.5.3" - resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" - integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/ethash" "^1.1.0" - debug "^4.3.3" - ethereumjs-util "^7.1.5" - level-mem "^5.0.1" - lru-cache "^5.1.1" - semaphore-async-await "^1.5.1" - -"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" - integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== - dependencies: - crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" - -"@ethereumjs/ethash@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" - integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== - dependencies: - "@ethereumjs/block" "^3.5.0" - "@types/levelup" "^4.3.0" - buffer-xor "^2.0.1" - ethereumjs-util "^7.1.1" - miller-rabin "^4.0.0" - -"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": - version "3.5.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" - integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== - dependencies: - "@ethereumjs/common" "^2.6.4" - ethereumjs-util "^7.1.5" - -"@ethereumjs/vm@^5.9.0": - version "5.9.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.2.tgz#e707976d507793096e449a87f0b204f614421cee" - integrity sha512-6zvH7iuMI7+74aGak6j9+GDYpV2T08vy2FL4iSK1PId7lNyjFELCAzDCSTQcVoyPoRMkZvRHy79W+djwvguMCA== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.3" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.2" - async-eventemitter "^0.2.4" - core-js-pure "^3.0.1" - debug "^4.3.3" - ethereumjs-util "^7.1.5" - functional-red-black-tree "^1.0.1" - mcl-wasm "^0.7.1" - merkle-patricia-tree "^4.2.4" - rustbn.js "~0.2.0" - -"@ethersproject/abi@5.0.0-beta.153": - version "5.0.0-beta.153" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" - integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== - dependencies: - "@ethersproject/address" ">=5.0.0-beta.128" - "@ethersproject/bignumber" ">=5.0.0-beta.130" - "@ethersproject/bytes" ">=5.0.0-beta.129" - "@ethersproject/constants" ">=5.0.0-beta.128" - "@ethersproject/hash" ">=5.0.0-beta.128" - "@ethersproject/keccak256" ">=5.0.0-beta.127" - "@ethersproject/logger" ">=5.0.0-beta.129" - "@ethersproject/properties" ">=5.0.0-beta.131" - "@ethersproject/strings" ">=5.0.0-beta.130" - -"@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" - integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== - dependencies: - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" - integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.3" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/web" "^5.6.1" - -"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" - integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/address@5.6.1", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" - integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/rlp" "^5.6.1" - -"@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" - integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - -"@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" - integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - -"@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" - integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - bn.js "^5.2.1" - -"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" - integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/constants@5.6.1", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" - integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - -"@ethersproject/contracts@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" - integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== - dependencies: - "@ethersproject/abi" "^5.6.3" - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/transactions" "^5.6.2" - -"@ethersproject/hash@5.6.1", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" - integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" - integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/basex" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/wordlists" "^5.6.1" - -"@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" - integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== - dependencies: - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hdnode" "^5.6.2" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/pbkdf2" "^5.6.1" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" - integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== - dependencies: - "@ethersproject/bytes" "^5.6.1" - js-sha3 "0.8.0" - -"@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" - integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== - -"@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": - version "5.6.4" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" - integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" - integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/sha2" "^5.6.1" - -"@ethersproject/properties@5.6.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.6.0": - version "5.6.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" - integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== - dependencies: - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/providers@5.6.8": - version "5.6.8" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" - integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/base64" "^5.6.1" - "@ethersproject/basex" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/networks" "^5.6.3" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/rlp" "^5.6.1" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/web" "^5.6.1" - bech32 "1.1.4" - ws "7.4.6" - -"@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" - integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" - integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" - integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - hash.js "1.1.7" - -"@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" - integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - bn.js "^5.2.1" - elliptic "6.5.4" - hash.js "1.1.7" - -"@ethersproject/solidity@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" - integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/sha2" "^5.6.1" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/strings@5.6.1", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" - integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" - integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== - dependencies: - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/rlp" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - -"@ethersproject/units@5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" - integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== - dependencies: - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/constants" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - -"@ethersproject/wallet@5.6.2": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" - integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== - dependencies: - "@ethersproject/abstract-provider" "^5.6.1" - "@ethersproject/abstract-signer" "^5.6.2" - "@ethersproject/address" "^5.6.1" - "@ethersproject/bignumber" "^5.6.2" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/hdnode" "^5.6.2" - "@ethersproject/json-wallets" "^5.6.1" - "@ethersproject/keccak256" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/random" "^5.6.1" - "@ethersproject/signing-key" "^5.6.2" - "@ethersproject/transactions" "^5.6.2" - "@ethersproject/wordlists" "^5.6.1" - -"@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" - integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== - dependencies: - "@ethersproject/base64" "^5.6.1" - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": - version "5.6.1" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" - integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== - dependencies: - "@ethersproject/bytes" "^5.6.1" - "@ethersproject/hash" "^5.6.1" - "@ethersproject/logger" "^5.6.0" - "@ethersproject/properties" "^5.6.0" - "@ethersproject/strings" "^5.6.1" - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - -"@jest/console@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" - integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - jest-message-util "^25.5.0" - jest-util "^25.5.0" - slash "^3.0.0" - -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" - -"@jest/test-result@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" - integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== - dependencies: - "@jest/console" "^25.5.0" - "@jest/types" "^25.5.0" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^25.5.0": - version "25.5.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" - integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" - "@types/yargs" "^15.0.0" - chalk "^3.0.0" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^3.0.0" - "@types/node" "*" - "@types/yargs" "^16.0.0" - chalk "^4.0.0" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== - -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== - -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== - -"@jridgewell/trace-mapping@0.3.9": - version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" - integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@metamask/eth-sig-util@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" - integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^6.2.1" - ethjs-util "^0.1.6" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.1" - -"@microsoft/api-extractor-model@7.18.2", "@microsoft/api-extractor-model@^7.0.28": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.18.2.tgz#def74be8bc785beb9a6f52a0a4c0b9f8f782e587" - integrity sha512-m7MCvJrudnWyE4iuRhdmgJTdTkYLw+yN/XUp3y9sxicu5/mNdg8y4pflaM82ZbLakhfGreMlB/XgjvyGbLHwkA== - dependencies: - "@microsoft/tsdoc" "0.14.1" - "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.7" - -"@microsoft/api-extractor@^7.22.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.25.2.tgz#365639ad7409dcc1ccdfdd9ba35db99592a41531" - integrity sha512-ITuiZqMszZE38dGqavkFFIAW/GQGfkk8ahgBqVj3j1qD4wioPTRlSidhQDCezExAhrMt/bTkuZ3woLeR0uiSsg== - dependencies: - "@microsoft/api-extractor-model" "7.18.2" - "@microsoft/tsdoc" "0.14.1" - "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.7" - "@rushstack/rig-package" "0.3.12" - "@rushstack/ts-command-line" "4.11.1" - colors "~1.2.1" - lodash "~4.17.15" - resolve "~1.17.0" - semver "~7.3.0" - source-map "~0.6.1" - typescript "~4.6.3" - -"@microsoft/tsdoc-config@~0.16.1": - version "0.16.1" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz#4de11976c1202854c4618f364bf499b4be33e657" - integrity sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ== - dependencies: - "@microsoft/tsdoc" "0.14.1" - ajv "~6.12.6" - jju "~1.4.0" - resolve "~1.19.0" - -"@microsoft/tsdoc@0.14.1": - version "0.14.1" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd" - integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw== - -"@microsoft/tsdoc@^0.12.8": - version "0.12.24" - resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz#30728e34ebc90351dd3aff4e18d038eed2c3e098" - integrity sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg== - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@nomiclabs/hardhat-ethers@^2.0.3": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.6.tgz#1c695263d5b46a375dcda48c248c4fba9dfe2fc2" - integrity sha512-q2Cjp20IB48rEn2NPjR1qxsIQBvFVYW9rFRCFq+bC4RUrn1Ljz3g4wM8uSlgIBZYBi2JMXxmOzFqHraczxq4Ng== - -"@nomiclabs/hardhat-waffle@^2.0.1": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1" - integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== - dependencies: - "@types/sinon-chai" "^3.2.3" - "@types/web3" "1.0.19" - -"@oclif/command@^1.5.10": - version "1.8.16" - resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" - integrity sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w== - dependencies: - "@oclif/config" "^1.18.2" - "@oclif/errors" "^1.3.5" - "@oclif/help" "^1.0.1" - "@oclif/parser" "^3.8.6" - debug "^4.1.1" - semver "^7.3.2" - -"@oclif/config@1.18.2": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe" - integrity sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA== - dependencies: - "@oclif/errors" "^1.3.3" - "@oclif/parser" "^3.8.0" - debug "^4.1.1" - globby "^11.0.1" - is-wsl "^2.1.1" - tslib "^2.0.0" - -"@oclif/config@^1.12.8", "@oclif/config@^1.18.2": - version "1.18.3" - resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.3.tgz#ddfc144fdab66b1658c2f1b3478fa7fbfd317e79" - integrity sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA== - dependencies: - "@oclif/errors" "^1.3.5" - "@oclif/parser" "^3.8.0" - debug "^4.1.1" - globby "^11.0.1" - is-wsl "^2.1.1" - tslib "^2.3.1" - -"@oclif/errors@1.3.5", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c" - integrity sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ== - dependencies: - clean-stack "^3.0.0" - fs-extra "^8.1" - indent-string "^4.0.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -"@oclif/help@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.1.tgz#fd96a3dd9fb2314479e6c8584c91b63754a7dff5" - integrity sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw== - dependencies: - "@oclif/config" "1.18.2" - "@oclif/errors" "1.3.5" - chalk "^4.1.2" - indent-string "^4.0.0" - lodash "^4.17.21" - string-width "^4.2.0" - strip-ansi "^6.0.0" - widest-line "^3.1.0" - wrap-ansi "^6.2.0" - -"@oclif/linewrap@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" - integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== - -"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.6": - version "3.8.7" - resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.7.tgz#236d48db05d0b00157d3b42d31f9dac7550d2a7c" - integrity sha512-b11xBmIUK+LuuwVGJpFs4LwQN2xj2cBWj2c4z1FtiXGrJ85h9xV6q+k136Hw0tGg1jQoRXuvuBnqQ7es7vO9/Q== - dependencies: - "@oclif/errors" "^1.3.5" - "@oclif/linewrap" "^1.0.0" - chalk "^4.1.0" - tslib "^2.3.1" - -"@openzeppelin/contracts-upgradeable@^4.4.1", "@openzeppelin/contracts-upgradeable@^4.4.2": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz#1bf55f230f008554d4c6fe25eb165b85112108b0" - integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== - -"@openzeppelin/contracts@^4.3.3", "@openzeppelin/contracts@^4.4.2": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" - integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== - -"@princjef/api-documenter@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@princjef/api-documenter/-/api-documenter-1.0.2.tgz#06ee97f1c7617ea9798c96f004be43d1d4d6b8e2" - integrity sha512-jZiOVphVt46z3FYbIWRJdRcgDaF6zjj1TSt6yJZdnZ1w0WYW93EeyjElS7HqLs911snsnvLf7nRFHgxfxLewjQ== - dependencies: - "@microsoft/api-extractor-model" "^7.0.28" - "@microsoft/tsdoc" "^0.12.8" - "@oclif/command" "^1.5.10" - "@oclif/config" "^1.12.8" - fs-extra "^7.0.1" - -"@resolver-engine/core@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" - integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== - dependencies: - debug "^3.1.0" - is-url "^1.2.4" - request "^2.85.0" - -"@resolver-engine/fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.3.3.tgz#fbf83fa0c4f60154a82c817d2fe3f3b0c049a973" - integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== - dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - -"@resolver-engine/imports-fs@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz#4085db4b8d3c03feb7a425fbfcf5325c0d1e6c1b" - integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== - dependencies: - "@resolver-engine/fs" "^0.3.3" - "@resolver-engine/imports" "^0.3.3" - debug "^3.1.0" - -"@resolver-engine/imports@^0.3.3": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.3.3.tgz#badfb513bb3ff3c1ee9fd56073e3144245588bcc" - integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== - dependencies: - "@resolver-engine/core" "^0.3.3" - debug "^3.1.0" - hosted-git-info "^2.6.0" - path-browserify "^1.0.0" - url "^0.11.0" - -"@rollup/plugin-babel@^5.1.0": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" - integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== - dependencies: - "@babel/helper-module-imports" "^7.10.4" - "@rollup/pluginutils" "^3.1.0" - -"@rollup/plugin-commonjs@^11.0.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" - integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== - dependencies: - "@rollup/pluginutils" "^3.0.8" - commondir "^1.0.1" - estree-walker "^1.0.1" - glob "^7.1.2" - is-reference "^1.1.2" - magic-string "^0.25.2" - resolve "^1.11.0" - -"@rollup/plugin-json@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" - integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== - dependencies: - "@rollup/pluginutils" "^3.0.8" - -"@rollup/plugin-node-resolve@^9.0.0": - version "9.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" - integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - "@types/resolve" "1.17.1" - builtin-modules "^3.1.0" - deepmerge "^4.2.2" - is-module "^1.0.0" - resolve "^1.17.0" - -"@rollup/plugin-replace@^2.2.1": - version "2.4.2" - resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" - integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - magic-string "^0.25.7" - -"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" - integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== - dependencies: - "@types/estree" "0.0.39" - estree-walker "^1.0.1" - picomatch "^2.2.2" - -"@rushstack/node-core-library@3.45.7": - version "3.45.7" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.7.tgz#e959820a6db067c278c20df51503e2bc422e9349" - integrity sha512-DHfOvgPrm9X4uILlUfGgiqcobe5QGNDmqqYLM8dJ5M5fqQ9H5GwyUwBnFeRsxBo0b75RE83l41Oze+gdHKvKaA== - dependencies: - "@types/node" "12.20.24" - colors "~1.2.1" - fs-extra "~7.0.1" - import-lazy "~4.0.0" - jju "~1.4.0" - resolve "~1.17.0" - semver "~7.3.0" - timsort "~0.3.0" - z-schema "~5.0.2" - -"@rushstack/rig-package@0.3.12": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz#6bf2d45374ba665902bf31ec0c6e5dad55ba1b73" - integrity sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg== - dependencies: - resolve "~1.17.0" - strip-json-comments "~3.1.1" - -"@rushstack/ts-command-line@4.11.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.1.tgz#10b80960ddaed685445289807c75743e4ef0b5e9" - integrity sha512-Xo8LaQOXlNSfp+qIuIPb1tfX7b4H21ksqiMo/HbeZI5AX1klHMqKjWcEs0AqgE9huvQj6cvnCla8Eq/GDcwMIg== - dependencies: - "@types/argparse" "1.0.38" - argparse "~1.0.9" - colors "~1.2.1" - string-argv "~0.3.1" - -"@sentry/core@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" - integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/hub@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" - integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== - dependencies: - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/minimal@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" - integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sentry/node@^5.18.1": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" - integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== - dependencies: - "@sentry/core" "5.30.0" - "@sentry/hub" "5.30.0" - "@sentry/tracing" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - cookie "^0.4.1" - https-proxy-agent "^5.0.0" - lru_map "^0.3.3" - tslib "^1.9.3" - -"@sentry/tracing@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" - integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== - dependencies: - "@sentry/hub" "5.30.0" - "@sentry/minimal" "5.30.0" - "@sentry/types" "5.30.0" - "@sentry/utils" "5.30.0" - tslib "^1.9.3" - -"@sentry/types@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" - integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== - -"@sentry/utils@5.30.0": - version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" - integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== - dependencies: - "@sentry/types" "5.30.0" - tslib "^1.9.3" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" - integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@size-limit/file@6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@size-limit/file/-/file-6.0.4.tgz#64681f0e0ec93d69b1d99f0a40bbbcdd2fb7def6" - integrity sha512-SoGUUNEHsZJTDlw6znuMbR0z6apr/NmeEXSFT6iB6gUPyOHIdFtFJpvWeS1vijC7OFQhWHskedB6nBJ6L+bd+A== - dependencies: - semver "7.3.5" - -"@size-limit/preset-small-lib@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@size-limit/preset-small-lib/-/preset-small-lib-6.0.4.tgz#707863bee82c7412b2e7201c301db1de793e7158" - integrity sha512-eMay+Hv/ufJyCUX/pFXa30AiYsjrT/Tjw1G7h7CCNKulbEjAY2rAiEsCQkm+rCNnYoPUgOsWhMYy908J23Qb6Q== - dependencies: - "@size-limit/file" "6.0.4" - "@size-limit/webpack" "6.0.4" - -"@size-limit/webpack@6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@size-limit/webpack/-/webpack-6.0.4.tgz#2e23b6a3efb11cb081fb65394d05f218c7051270" - integrity sha512-51rvLztZcvT+Qc5g8FusyC8ZDcpVg7+O1a4hfO2K2XMZV8CFguRN//xMwQXv5q6I1ImUQeyURyiCXIQD24qJYQ== - dependencies: - "@statoscope/webpack-plugin" "^5.17.0" - css-loader "^6.5.0" - css-minimizer-webpack-plugin "^3.0.2" - escape-string-regexp "^4.0.0" - mkdirp "^1.0.4" - nanoid "^3.1.30" - style-loader "^3.3.1" - webpack "^5.61.0" - -"@solidity-parser/parser@^0.14.1": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.2.tgz#2d8f2bddb217621df882ceeae7d7b42ae8664db3" - integrity sha512-10cr0s+MtRtqjEw0WFJrm2rwULN30xx7btd/v9cmqME2617/2M5MbHDkFIGIGTa7lwNw4bN9mVGfhlLzrYw8pA== - dependencies: - antlr4ts "^0.5.0-alpha.4" - -"@statoscope/extensions@5.14.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@statoscope/extensions/-/extensions-5.14.1.tgz#b7c32b39de447da76b9fa2daada61b2f699754e6" - integrity sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw== - -"@statoscope/helpers@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.19.0.tgz#02f8101643a0fd9b706eb59eafac4448c7d97db9" - integrity sha512-EFD7XqZZxtZJZlaWznAYIOrqECYHqobXxa0EADtn/mIToUrsL9g/bnkBMl28KX6zy07QcDt9gLmp5s+5GDJCoQ== - dependencies: - "@types/archy" "^0.0.32" - "@types/semver" "^7.3.6" - archy "~1.0.0" - jora "^1.0.0-beta.5" - semver "^7.3.5" - -"@statoscope/report-writer@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@statoscope/report-writer/-/report-writer-5.20.0.tgz#18329ca8b194660087cdd2cbd996883a845be5d4" - integrity sha512-/QwHWzRoOCpcJkZYoTb1kuMaLoDxJpo/VteSNbhOOyCwK/74oAPAsSgbGz52T6bHAn6zkMqrSEJFJMVbYeWAJw== - dependencies: - "@discoveryjs/json-ext" "^0.5.5" - -"@statoscope/stats-extension-compressed@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.19.0.tgz#1a5b22416db344b9e7f5cc2ddbb08ec2c57436e8" - integrity sha512-CVV6dDi0vo5wDzXOuTmwydeHyjE/i56TUfA+S3llVLsxasMc6udtkLBKUfCQkbAUTJlYJcY8yUR6fH7SfiqOZw== - dependencies: - "@statoscope/helpers" "5.19.0" - gzip-size "^6.0.0" - -"@statoscope/stats-extension-custom-reports@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.19.0.tgz#6d7be7000f8c50a84c75044d466ac21aba0f3cce" - integrity sha512-RoOyVPZSYsk1MF/yvryuD0mNlc88OCSyr32EXTpqxlK1w0w/7SxxLtDHpSbKoMxdMrYHxvi32apjoNh03BsD+Q== - dependencies: - "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.19.0" - "@statoscope/stats" "5.14.1" - "@statoscope/types" "5.14.1" - -"@statoscope/stats-extension-package-info@5.19.3": - version "5.19.3" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.19.3.tgz#9ec60dc8e36ac6f23a0a9a9e0fbc813d6354f07f" - integrity sha512-KUvzAkNiw1vNUY2i5IoSVnf6pIyiK3BWHOkmw94SCPWA+BXizwGbGIn6qyW/A4BI1icZvnuE4Gcrtyg0zML0KA== - dependencies: - "@statoscope/helpers" "5.19.0" - -"@statoscope/stats-extension-stats-validation-result@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.19.0.tgz#ab430fe1c64272f3a7fed3585c7d404bac5fb0de" - integrity sha512-9pNmSooDvhUNF5OJyOrmiKjEo+WaCKZhjmZX592uX653JeKr1xTwDxjSWgWyPKkkeyvMHw2T2CjB+WM8Rd/FmA== - dependencies: - "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.19.0" - "@statoscope/stats" "5.14.1" - "@statoscope/types" "5.14.1" - -"@statoscope/stats@5.14.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@statoscope/stats/-/stats-5.14.1.tgz#728656629bc06aa4bf5634398662ac05287793d5" - integrity sha512-Kz7kCKuT6DXaqAPfyTwp27xHMDUna9o6UlRSQXXBZ8Yyk7eYYvTNw+5ffRyqivL9IOzD7FQYDQ6VUBHh0UfyDw== - -"@statoscope/types@5.14.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@statoscope/types/-/types-5.14.1.tgz#4cc3da44f6a63d4318c50a75efe89f97d512ac8b" - integrity sha512-vIo7aq2E71AC3y3mdnZqA5aupYUaEIHuPD2gUG0bAA8zTXH7YICk7nRkuxx7xnCBhTZTXAgvtF8hgQ35K4N8oQ== - dependencies: - "@statoscope/stats" "5.14.1" - -"@statoscope/webpack-model@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.20.1.tgz#b749d75ab179cdd0933e9022a426766e1070659c" - integrity sha512-3I8fccxQiikQqoLq9K0A/qLedNehGwifpcJtXGC8YuIXJVAGU1BVudjBSveqgaVyiSdw3RKJB9TU6lsf6BGoQw== - dependencies: - "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.19.0" - "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.19.0" - "@statoscope/stats-extension-custom-reports" "5.19.0" - "@statoscope/stats-extension-package-info" "5.19.3" - "@statoscope/stats-extension-stats-validation-result" "5.19.0" - "@statoscope/types" "5.14.1" - ajv "^8.6.3" - md5 "^2.3.0" - -"@statoscope/webpack-plugin@^5.17.0": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.20.1.tgz#4e967087265b1db08c5b5e93364930cf83a464c5" - integrity sha512-H4RsRnsEPnbKtC3/OuvhFzAolw8TwKOw0RVso8brlh2a5WLddWikFGUl1/KRQqKB45R3q1e4rnTPe+MVAVwAVA== - dependencies: - "@discoveryjs/json-ext" "^0.5.5" - "@statoscope/report-writer" "5.20.0" - "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.19.0" - "@statoscope/stats-extension-custom-reports" "5.19.0" - "@statoscope/types" "5.14.1" - "@statoscope/webpack-model" "5.20.1" - "@statoscope/webpack-stats-extension-compressed" "5.20.1" - "@statoscope/webpack-stats-extension-package-info" "5.20.1" - "@statoscope/webpack-ui" "5.20.1" - open "^8.2.1" - -"@statoscope/webpack-stats-extension-compressed@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.20.1.tgz#e5929e1ebf1687baff15957d4dd0154c578b5017" - integrity sha512-UpvC2sKzFDBgetoyF4D8EyUqoPNHwIlUSewRwyqA0pdUYgNPNv8jGdNeLSLBDP7DORXaWDu1cFAf2Feal+d4OQ== - dependencies: - "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.19.0" - "@statoscope/webpack-model" "5.20.1" - -"@statoscope/webpack-stats-extension-package-info@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.20.1.tgz#6f69f21328994b23437b5d76f082fc246daeb385" - integrity sha512-pHGEe1vgyaOk5U9QRpHyRLgV+Ju8SnvPxHGl1BSsle1YJv7ksW6gkatEN95ySaPFcVGp+YOMacjAf1mHQ+0I/g== - dependencies: - "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-package-info" "5.19.3" - "@statoscope/webpack-model" "5.20.1" - -"@statoscope/webpack-ui@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.20.1.tgz#b8e596a6725c826a1be86e3af2d029611fb68284" - integrity sha512-C/6yOuYYdaHEe3BWUavkJAu8BoXLiRzRxq01z1FolT6V3btr2ILnCHdhNOtkIJt5wbTFnmtxCbMsx4RK49gq2g== - dependencies: - "@statoscope/types" "5.14.1" - highcharts "^9.2.2" - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@truffle/hdwallet-provider@^1.0.43": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz#5cfa8bc67c2a30b3943d3dab78f74c6a191cde02" - integrity sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A== - dependencies: - "@ethereumjs/common" "^2.4.0" - "@ethereumjs/tx" "^3.3.0" - "@trufflesuite/web3-provider-engine" "15.0.14" - eth-sig-util "^3.0.1" - ethereum-cryptography "^0.1.3" - ethereum-protocol "^1.0.1" - ethereumjs-util "^6.1.0" - ethereumjs-wallet "^1.0.1" - -"@trufflesuite/eth-json-rpc-filters@^4.1.2-1": - version "4.1.2-1" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz#61ab78c52e98a883e5cf086925b34a30297b1824" - integrity sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ== - dependencies: - "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-0" - await-semaphore "^0.1.3" - eth-query "^2.1.2" - json-rpc-engine "^5.1.3" - lodash.flatmap "^4.5.0" - safe-event-emitter "^1.0.1" - -"@trufflesuite/eth-json-rpc-infura@^4.0.3-0": - version "4.0.3-0" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz#6d22122937cf60ec9d21a02351c101fdc608c4fe" - integrity sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw== - dependencies: - "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" - cross-fetch "^2.1.1" - eth-json-rpc-errors "^1.0.1" - json-rpc-engine "^5.1.3" - -"@trufflesuite/eth-json-rpc-middleware@^4.4.2-0", "@trufflesuite/eth-json-rpc-middleware@^4.4.2-1": - version "4.4.2-1" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz#8c3638ed8a7ed89a1e5e71407de068a65bef0df2" - integrity sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA== - dependencies: - "@trufflesuite/eth-sig-util" "^1.4.2" - btoa "^1.2.1" - clone "^2.1.1" - eth-json-rpc-errors "^1.0.1" - eth-query "^2.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.7" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.6.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^5.1.3" - json-stable-stringify "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -"@trufflesuite/eth-sig-util@^1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz#b529e2f38ac08e652116f48981132a26242a4f08" - integrity sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^5.1.1" - -"@trufflesuite/web3-provider-engine@15.0.14": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz#8f9696f434585cc0ab2e57c312090c1f138bc471" - integrity sha512-6/LoWvNMxYf0oaYzJldK2a9AdnkAdIeJhHW4nuUBAeO29eK9xezEaEYQ0ph1QRTaICxGxvn+1Azp4u8bQ8NEZw== - dependencies: - "@ethereumjs/tx" "^3.3.0" - "@trufflesuite/eth-json-rpc-filters" "^4.1.2-1" - "@trufflesuite/eth-json-rpc-infura" "^4.0.3-0" - "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" - "@trufflesuite/eth-sig-util" "^1.4.2" - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^4.4.2" - eth-json-rpc-errors "^2.0.2" - ethereumjs-block "^1.2.2" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@tsconfig/node10@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" - integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== - -"@tsconfig/node12@^1.0.7": - version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" - integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== - -"@tsconfig/node14@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" - integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== - -"@tsconfig/node16@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" - integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== - -"@typechain/ethers-v5@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" - integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== - dependencies: - ethers "^5.0.2" - -"@typechain/ethers-v5@^8.0.5": - version "8.0.5" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-8.0.5.tgz#d469420e9a73deb7fa076cde9edb45d713dd1b8c" - integrity sha512-ntpj4cS3v4WlDu+hSKSyj9A3o1tKtWC30RX1gobeYymZColeJiUemC1Kgfa0MWGmInm5CKxoHVhEvYVgPOZn1A== - dependencies: - lodash "^4.17.15" - ts-essentials "^7.0.1" - -"@typechain/hardhat@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-3.1.0.tgz#88bd9e9d55e30fbece6fbb34c03ecd40a8b2013a" - integrity sha512-C6Be6l+vTpao19PvMH2CB/lhL1TRLkhdPkvQCF/zqkY1e+0iqY2Bb9Jd3PTt6I8QvMm89ZDerrCJC9927ZHmlg== - dependencies: - fs-extra "^9.1.0" - -"@types/abstract-leveldown@*": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#f055979a99f7654e84d6b8e6267419e9c4cfff87" - integrity sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ== - -"@types/archy@^0.0.32": - version "0.0.32" - resolved "https://registry.yarnpkg.com/@types/archy/-/archy-0.0.32.tgz#8b572741dad9172dfbf289397af1bb41296d3e40" - integrity sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg== - -"@types/argparse@1.0.38": - version "1.0.38" - resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" - integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== - -"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": - version "7.1.19" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" - integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.4" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" - integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.1" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" - integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" - integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== - dependencies: - "@babel/types" "^7.3.0" - -"@types/bn.js@*", "@types/bn.js@^5.1.0": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" - integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== - dependencies: - "@types/node" "*" - -"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": - version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" - integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== - dependencies: - "@types/node" "*" - -"@types/chai@*", "@types/chai@^4.2.22": - version "4.3.1" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" - integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== - -"@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "8.4.3" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.3.tgz#5c92815a3838b1985c90034cd85f26f59d9d0ece" - integrity sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== - -"@types/estree@0.0.39": - version "0.0.39" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" - integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== - -"@types/graceful-fs@^4.1.2": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" - integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== - -"@types/istanbul-lib-report@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" - integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^1.1.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" - integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== - dependencies: - "@types/istanbul-lib-coverage" "*" - "@types/istanbul-lib-report" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" - integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^25.2.1": - version "25.2.3" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" - integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== - dependencies: - jest-diff "^25.2.1" - pretty-format "^25.2.1" - -"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== - -"@types/level-errors@*": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" - integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== - -"@types/levelup@^4.3.0": - version "4.3.3" - resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" - integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== - dependencies: - "@types/abstract-leveldown" "*" - "@types/level-errors" "*" - "@types/node" "*" - -"@types/lru-cache@^5.1.0": - version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" - integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== - -"@types/mkdirp@^0.5.2": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" - integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== - dependencies: - "@types/node" "*" - -"@types/mocha@^9.0.0": - version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" - integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== - -"@types/node-fetch@^2.5.5": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" - integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== - dependencies: - "@types/node" "*" - form-data "^3.0.0" - -"@types/node@*": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== - -"@types/node@12.20.24": - version "12.20.24" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" - integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== - -"@types/node@^12.12.6": - version "12.20.55" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" - integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== - -"@types/node@^16.11.11": - version "16.11.41" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.41.tgz#88eb485b1bfdb4c224d878b7832239536aa2f813" - integrity sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -"@types/pbkdf2@^3.0.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" - integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== - dependencies: - "@types/node" "*" - -"@types/prettier@^2.1.1", "@types/prettier@^2.1.5": - version "2.6.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" - integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== - -"@types/resolve@1.17.1": - version "1.17.1" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" - integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== - dependencies: - "@types/node" "*" - -"@types/resolve@^0.0.8": - version "0.0.8" - resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" - integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== - dependencies: - "@types/node" "*" - -"@types/secp256k1@^4.0.1": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" - integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== - dependencies: - "@types/node" "*" - -"@types/semver@^7.3.6": - version "7.3.10" - resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.10.tgz#5f19ee40cbeff87d916eedc8c2bfe2305d957f73" - integrity sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw== - -"@types/sinon-chai@^3.2.3": - version "3.2.8" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc" - integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g== - dependencies: - "@types/chai" "*" - "@types/sinon" "*" - -"@types/sinon@*": - version "10.0.11" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.11.tgz#8245827b05d3fc57a6601bd35aee1f7ad330fc42" - integrity sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g== - dependencies: - "@types/sinonjs__fake-timers" "*" - -"@types/sinonjs__fake-timers@*": - version "8.1.2" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" - integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== - -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== - -"@types/stack-utils@^2.0.0": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" - integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== - -"@types/underscore@*": - version "1.11.4" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" - integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== - -"@types/web3@1.0.19": - version "1.0.19" - resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.19.tgz#46b85d91d398ded9ab7c85a5dd57cb33ac558924" - integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== - dependencies: - "@types/bn.js" "*" - "@types/underscore" "*" - -"@types/yargs-parser@*": - version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" - integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== - -"@types/yargs@^15.0.0": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" - integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^5.4.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz#6204ac33bdd05ab27c7f77960f1023951115d403" - integrity sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA== - dependencies: - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/type-utils" "5.28.0" - "@typescript-eslint/utils" "5.28.0" - debug "^4.3.4" - functional-red-black-tree "^1.0.1" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^5.4.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.28.0.tgz#639b101cad2bfb7ae16e69710ac95c42bd4eae33" - integrity sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA== - dependencies: - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/typescript-estree" "5.28.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" - integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w== - dependencies: - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/visitor-keys" "5.28.0" - -"@typescript-eslint/type-utils@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" - integrity sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ== - dependencies: - "@typescript-eslint/utils" "5.28.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" - integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== - -"@typescript-eslint/typescript-estree@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" - integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA== - dependencies: - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/visitor-keys" "5.28.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" - integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/typescript-estree" "5.28.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" - integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA== - dependencies: - "@typescript-eslint/types" "5.28.0" - eslint-visitor-keys "^3.3.0" - -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - -"@vishalkale15107/rain-protocol@git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b": - version "0.0.16" - resolved "git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b" - dependencies: - "@beehiveinnovation/balancer-core" "0.0.7" - "@beehiveinnovation/configurable-rights-pool" "0.0.1" - "@openzeppelin/contracts" "^4.3.3" - "@openzeppelin/contracts-upgradeable" "^4.4.1" - -"@webassemblyjs/ast@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" - integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - -"@webassemblyjs/floating-point-hex-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" - integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== - -"@webassemblyjs/helper-api-error@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" - integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== - -"@webassemblyjs/helper-buffer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" - integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== - -"@webassemblyjs/helper-numbers@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" - integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" - integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== - -"@webassemblyjs/helper-wasm-section@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" - integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - -"@webassemblyjs/ieee754@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" - integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" - integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== - -"@webassemblyjs/wasm-edit@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" - integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/helper-wasm-section" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-opt" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - "@webassemblyjs/wast-printer" "1.11.1" - -"@webassemblyjs/wasm-gen@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" - integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wasm-opt@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" - integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-buffer" "1.11.1" - "@webassemblyjs/wasm-gen" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - -"@webassemblyjs/wasm-parser@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" - integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ieee754" "1.11.1" - "@webassemblyjs/leb128" "1.11.1" - "@webassemblyjs/utf8" "1.11.1" - -"@webassemblyjs/wast-printer@1.11.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" - integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== - dependencies: - "@webassemblyjs/ast" "1.11.1" - "@xtuc/long" "4.2.2" - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - -"@yarnpkg/lockfile@^1.1.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" - integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== - -abab@^2.0.3, abab@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" - integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abstract-leveldown@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" - integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: - version "2.7.2" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" - integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" - integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" - integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -abstract-leveldown@~2.6.0: - version "2.6.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" - integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== - dependencies: - xtend "~4.0.0" - -abstract-leveldown@~6.2.1: - version "6.2.3" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" - integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== - dependencies: - buffer "^5.5.0" - immediate "^3.2.3" - level-concat-iterator "~2.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -accepts@~1.3.8: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-import-assertions@^1.7.6: - version "1.8.0" - resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" - integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== - -acorn-jsx@^5.0.0, acorn-jsx@^5.2.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== - -acorn@^6.0.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - -acorn@^7.1.0, acorn@^7.1.1: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== - -acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - -adm-zip@^0.4.16: - version "0.4.16" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" - integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== - -aes-js@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" - integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== - -aes-js@^3.1.1, aes-js@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" - integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv-formats@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" - integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== - dependencies: - ajv "^8.0.0" - -ajv-keywords@^3.0.0, ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv-keywords@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" - integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== - dependencies: - fast-deep-equal "^3.1.3" - -ajv@^6.0.1, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.5.0, ajv@~6.12.6: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^8.0.0, ajv@^8.6.3, ajv@^8.8.0: - version "8.11.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" - integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== - dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" - -ansi-colors@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-colors@^4.1.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" - integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== - -ansi-escapes@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^2.0.0, ansi-regex@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - -ansi-regex@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" - integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== - -ansi-regex@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" - integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== - -ansi-regex@^5.0.0, ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -antlr4ts@^0.5.0-alpha.3, antlr4ts@^0.5.0-alpha.4: - version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" - integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== - -anymatch@^3.0.3, anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -archy@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== - -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== - -argparse@^1.0.7, argparse@~1.0.9: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -aria-query@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" - integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== - dependencies: - "@babel/runtime" "^7.10.2" - "@babel/runtime-corejs3" "^7.10.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== - -array-back@^1.0.3, array-back@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" - integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== - dependencies: - typical "^2.6.0" - -array-back@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" - integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== - dependencies: - typical "^2.6.1" - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -array-flatten@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" - integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== - -array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-includes@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== - -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.flatmap@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" - integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -array.prototype.reduce@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" - integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.7" - -asn1.js@^5.2.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" - integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - safer-buffer "^2.1.0" - -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== - dependencies: - safer-buffer "~2.1.0" - -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== - -assertion-error@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" - integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== - -ast-types-flow@^0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" - integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: - version "0.2.4" - resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" - integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== - dependencies: - async "^2.4.0" - -async-limiter@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" - integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== - -async@2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" - integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== - dependencies: - lodash "^4.17.11" - -async@^1.4.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== - -async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: - version "2.6.4" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" - integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== - dependencies: - lodash "^4.17.14" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -asyncro@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" - integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== - -at-least-node@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" - integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -await-semaphore@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" - integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== - -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== - -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== - -axe-core@^4.3.5: - version "4.4.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" - integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== - -axios@0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - -axobject-query@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" - integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-core@^6.0.14, babel-core@^6.26.0: - version "6.26.3" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" - integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== - dependencies: - babel-code-frame "^6.26.0" - babel-generator "^6.26.0" - babel-helpers "^6.24.1" - babel-messages "^6.23.0" - babel-register "^6.26.0" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - convert-source-map "^1.5.1" - debug "^2.6.9" - json5 "^0.5.1" - lodash "^4.17.4" - minimatch "^3.0.4" - path-is-absolute "^1.0.1" - private "^0.1.8" - slash "^1.0.0" - source-map "^0.5.7" - -babel-eslint@^10.0.3: - version "10.1.0" - resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" - integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.0" - "@babel/traverse" "^7.7.0" - "@babel/types" "^7.7.0" - eslint-visitor-keys "^1.0.0" - resolve "^1.12.0" - -babel-generator@^6.26.0: - version "6.26.1" - resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" - integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== - dependencies: - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - detect-indent "^4.0.0" - jsesc "^1.3.0" - lodash "^4.17.4" - source-map "^0.5.7" - trim-right "^1.0.1" - -babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" - integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== - dependencies: - babel-helper-explode-assignable-expression "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-call-delegate@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" - integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-define-map@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" - integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-explode-assignable-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" - integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== - dependencies: - babel-runtime "^6.22.0" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-hoist-variables@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" - integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-optimise-call-expression@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" - integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-helper-regex@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" - integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== - dependencies: - babel-runtime "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-helper-remap-async-to-generator@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" - integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-replace-supers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" - integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== - dependencies: - babel-helper-optimise-call-expression "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helpers@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" - integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-annotate-pure-calls@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz#78aa00fd878c4fcde4d49f3da397fcf5defbcce8" - integrity sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA== - -babel-plugin-check-es2015-constants@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" - integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-dev-expression@^0.2.1: - version "0.2.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.3.tgz#8aaf52155dfb063ed4ddec6280456fbc256fead4" - integrity sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw== - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-macros@^2.6.1: - version "2.8.0" - resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" - integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== - dependencies: - "@babel/runtime" "^7.7.2" - cosmiconfig "^6.0.0" - resolve "^1.12.0" - -babel-plugin-polyfill-corejs2@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" - integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== - dependencies: - "@babel/compat-data" "^7.13.11" - "@babel/helper-define-polyfill-provider" "^0.3.1" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" - integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz#588641af9a2cb4e299b1400c47672a4a104d2459" - integrity sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.0.3" - -babel-plugin-polyfill-regenerator@^0.3.0: - version "0.3.1" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" - integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.1" - -babel-plugin-syntax-async-functions@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" - integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== - -babel-plugin-syntax-exponentiation-operator@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" - integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== - -babel-plugin-syntax-trailing-function-commas@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" - integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== - -babel-plugin-transform-async-to-generator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" - integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== - dependencies: - babel-helper-remap-async-to-generator "^6.24.1" - babel-plugin-syntax-async-functions "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-arrow-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" - integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" - integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-block-scoping@^6.23.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" - integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== - dependencies: - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - lodash "^4.17.4" - -babel-plugin-transform-es2015-classes@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" - integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== - dependencies: - babel-helper-define-map "^6.24.1" - babel-helper-function-name "^6.24.1" - babel-helper-optimise-call-expression "^6.24.1" - babel-helper-replace-supers "^6.24.1" - babel-messages "^6.23.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-computed-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" - integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== - dependencies: - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-destructuring@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" - integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-duplicate-keys@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" - integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-for-of@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" - integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-function-name@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" - integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" - integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" - integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== - dependencies: - babel-plugin-transform-es2015-modules-commonjs "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: - version "6.26.2" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" - integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== - dependencies: - babel-plugin-transform-strict-mode "^6.24.1" - babel-runtime "^6.26.0" - babel-template "^6.26.0" - babel-types "^6.26.0" - -babel-plugin-transform-es2015-modules-systemjs@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" - integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== - dependencies: - babel-helper-hoist-variables "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-modules-umd@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" - integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== - dependencies: - babel-plugin-transform-es2015-modules-amd "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - -babel-plugin-transform-es2015-object-super@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" - integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== - dependencies: - babel-helper-replace-supers "^6.24.1" - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-parameters@^6.23.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" - integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== - dependencies: - babel-helper-call-delegate "^6.24.1" - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-shorthand-properties@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" - integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-spread@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" - integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-sticky-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" - integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-plugin-transform-es2015-template-literals@^6.22.0: - version "6.22.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" - integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-typeof-symbol@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" - integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== - dependencies: - babel-runtime "^6.22.0" - -babel-plugin-transform-es2015-unicode-regex@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" - integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== - dependencies: - babel-helper-regex "^6.24.1" - babel-runtime "^6.22.0" - regexpu-core "^2.0.0" - -babel-plugin-transform-exponentiation-operator@^6.22.0: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" - integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== - dependencies: - babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" - babel-plugin-syntax-exponentiation-operator "^6.8.0" - babel-runtime "^6.22.0" - -babel-plugin-transform-regenerator@^6.22.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" - integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== - dependencies: - regenerator-transform "^0.10.0" - -babel-plugin-transform-rename-import@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-rename-import/-/babel-plugin-transform-rename-import-2.3.0.tgz#5d9d645f937b0ca5c26a24b2510a06277b6ffd9b" - integrity sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ== - -babel-plugin-transform-strict-mode@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" - integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-env@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" - integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== - dependencies: - babel-plugin-check-es2015-constants "^6.22.0" - babel-plugin-syntax-trailing-function-commas "^6.22.0" - babel-plugin-transform-async-to-generator "^6.22.0" - babel-plugin-transform-es2015-arrow-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" - babel-plugin-transform-es2015-block-scoping "^6.23.0" - babel-plugin-transform-es2015-classes "^6.23.0" - babel-plugin-transform-es2015-computed-properties "^6.22.0" - babel-plugin-transform-es2015-destructuring "^6.23.0" - babel-plugin-transform-es2015-duplicate-keys "^6.22.0" - babel-plugin-transform-es2015-for-of "^6.23.0" - babel-plugin-transform-es2015-function-name "^6.22.0" - babel-plugin-transform-es2015-literals "^6.22.0" - babel-plugin-transform-es2015-modules-amd "^6.22.0" - babel-plugin-transform-es2015-modules-commonjs "^6.23.0" - babel-plugin-transform-es2015-modules-systemjs "^6.23.0" - babel-plugin-transform-es2015-modules-umd "^6.23.0" - babel-plugin-transform-es2015-object-super "^6.22.0" - babel-plugin-transform-es2015-parameters "^6.23.0" - babel-plugin-transform-es2015-shorthand-properties "^6.22.0" - babel-plugin-transform-es2015-spread "^6.22.0" - babel-plugin-transform-es2015-sticky-regex "^6.22.0" - babel-plugin-transform-es2015-template-literals "^6.22.0" - babel-plugin-transform-es2015-typeof-symbol "^6.23.0" - babel-plugin-transform-es2015-unicode-regex "^6.22.0" - babel-plugin-transform-exponentiation-operator "^6.22.0" - babel-plugin-transform-regenerator "^6.22.0" - browserslist "^3.2.6" - invariant "^2.2.2" - semver "^5.3.0" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - -babel-register@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" - integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== - dependencies: - babel-core "^6.26.0" - babel-runtime "^6.26.0" - core-js "^2.5.0" - home-or-tmp "^2.0.0" - lodash "^4.17.4" - mkdirp "^0.5.1" - source-map-support "^0.4.15" - -babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1, babel-template@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babelify@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" - integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== - dependencies: - babel-core "^6.0.14" - object-assign "^4.0.0" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - -backoff@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" - integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== - dependencies: - precond "0.2" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base-x@^3.0.2, base-x@^3.0.8: - version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" - integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== - dependencies: - safe-buffer "^5.0.1" - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -base64-sol@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/base64-sol/-/base64-sol-1.1.0.tgz#39c3c91a35790b6eb3b8e73114b46bacf0fc2865" - integrity sha512-mksLxtFyBcXd3LYK5UxyMj29YR//zoaeXpJaKRbnLQC0E99oCJl7VpKaJDXWAuTvnhxBU9XNYzhxSL8umsrxWg== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== - dependencies: - tweetnacl "^0.14.3" - -bech32@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" - integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== - -bignumber.js@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" - integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bip39@2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" - integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== - dependencies: - create-hash "^1.1.0" - pbkdf2 "^3.0.9" - randombytes "^2.0.1" - safe-buffer "^5.0.1" - unorm "^1.3.3" - -blakejs@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" - integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== - -bluebird@^3.5.0, bluebird@^3.5.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -bn.js@4.11.6: - version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" - integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" - integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== - -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - -body-parser@1.20.0, body-parser@^1.16.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" - integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== - dependencies: - bytes "3.1.2" - content-type "~1.0.4" - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - http-errors "2.0.0" - iconv-lite "0.4.24" - on-finished "2.4.1" - qs "6.10.3" - raw-body "2.5.1" - type-is "~1.6.18" - unpipe "1.0.0" - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -braces@^3.0.2, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -brorand@^1.0.1, brorand@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" - integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browser-stdout@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" - integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== - -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" - integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== - dependencies: - buffer-xor "^1.0.3" - cipher-base "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.3" - inherits "^2.0.1" - safe-buffer "^5.0.1" - -browserify-cipher@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" - integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" - integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" - integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== - dependencies: - bn.js "^5.0.0" - randombytes "^2.0.1" - -browserify-sign@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" - integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== - dependencies: - bn.js "^5.1.1" - browserify-rsa "^4.0.1" - create-hash "^1.2.0" - create-hmac "^1.1.7" - elliptic "^6.5.3" - inherits "^2.0.4" - parse-asn1 "^5.1.5" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -browserslist@^3.2.6: - version "3.2.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" - integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== - dependencies: - caniuse-lite "^1.0.30000844" - electron-to-chromium "^1.3.47" - -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.20.4: - version "4.20.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" - integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== - dependencies: - caniuse-lite "^1.0.30001349" - electron-to-chromium "^1.4.147" - escalade "^3.1.1" - node-releases "^2.0.5" - picocolors "^1.0.0" - -bs-logger@0.x: - version "0.2.6" - resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" - integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== - dependencies: - fast-json-stable-stringify "2.x" - -bs58@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" - integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== - dependencies: - base-x "^3.0.2" - -bs58check@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" - integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== - dependencies: - bs58 "^4.0.0" - create-hash "^1.1.0" - safe-buffer "^5.1.2" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer-to-arraybuffer@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" - integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== - -buffer-xor@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" - integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== - -buffer-xor@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" - integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== - dependencies: - safe-buffer "^5.1.1" - -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" - -bufferutil@^4.0.1: - version "4.0.6" - resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" - integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== - dependencies: - node-gyp-build "^4.3.0" - -builtin-modules@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" - integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== - -bytes-iec@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/bytes-iec/-/bytes-iec-3.1.1.tgz#94cd36bf95c2c22a82002c247df8772d1d591083" - integrity sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA== - -bytes@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -bytewise-core@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" - integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== - dependencies: - typewise-core "^1.2" - -bytewise@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" - integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== - dependencies: - bytewise-core "^1.2.2" - typewise "^1.0.3" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -cachedown@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" - integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== - dependencies: - abstract-leveldown "^2.4.1" - lru-cache "^3.2.0" - -call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -caller-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" - integrity sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g== - dependencies: - callsites "^0.2.0" - -callsites@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" - integrity sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" - integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.0.0, camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - -caniuse-api@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" - integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== - dependencies: - browserslist "^4.0.0" - caniuse-lite "^1.0.0" - lodash.memoize "^4.1.2" - lodash.uniq "^4.5.0" - -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001349: - version "1.0.30001356" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz#cbf5fe7b33f90962bfbca532212ea478d4ec9de8" - integrity sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ== - -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== - -chai@^4.3.4: - version "4.3.6" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" - integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== - dependencies: - assertion-error "^1.1.0" - check-error "^1.0.2" - deep-eql "^3.0.1" - get-func-name "^2.0.0" - loupe "^2.3.1" - pathval "^1.1.1" - type-detect "^4.0.5" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chardet@^0.4.0: - version "0.4.2" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" - integrity sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg== - -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -charenc@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - -check-error@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" - integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== - -checkpoint-store@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" - integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== - dependencies: - functional-red-black-tree "^1.0.1" - -chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== - -ci-job-number@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/ci-job-number/-/ci-job-number-1.2.2.tgz#f4e5918fcaeeda95b604f214be7d7d4a961fe0c0" - integrity sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA== - -cids@^0.7.1: - version "0.7.5" - resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" - integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== - dependencies: - buffer "^5.5.0" - class-is "^1.1.0" - multibase "~0.6.0" - multicodec "^1.0.0" - multihashes "~0.4.15" - -cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" - integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - -circular@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/circular/-/circular-1.0.5.tgz#7da77af98bbde9ce4b5b358cd556b5dded2d3149" - integrity sha512-n4Sspha+wxUl5zeA3JYp1zFCjsLz2VfXIe2gRKNQBrIX+7iPdGcCGZOF8W8IULtllZ/aejXtySfdFFt1wy/3JQ== - -cjs-module-lexer@^1.0.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" - integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== - -class-is@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" - integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -clean-stack@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" - integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== - dependencies: - escape-string-regexp "4.0.0" - -cli-color@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" - integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== - dependencies: - ansi-regex "^2.1.1" - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - memoizee "^0.4.14" - timers-ext "^0.1.5" - -cli-cursor@^2.0.0, cli-cursor@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" - integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== - dependencies: - restore-cursor "^2.0.0" - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-logger@0.5.40: - version "0.5.40" - resolved "https://registry.yarnpkg.com/cli-logger/-/cli-logger-0.5.40.tgz#097f0e11b072c7c698a26c47f588a29c20b48b0b" - integrity sha512-piXVCa0TLm/+A7xdVEhw7t4OSrsmJaZIekWcoGrVMY1bHtLJTXgiNzgHlKT0EVHQ14sCKWorQJazU7UWgZhXOQ== - dependencies: - circular "^1.0.5" - cli-util "~1.1.27" - -cli-regexp@~0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-regexp/-/cli-regexp-0.1.2.tgz#6bcd93b09fb2ed1025d30a1155d5997954a53512" - integrity sha512-L++cAQ5g0Nu6aV56B3uaR+c7jEGSAa4WApY1ZN7XiD8niJ5jRfXE/qvMwgz3uZBG0rft4hJS75Vpz2F3mSm4Mg== - -cli-spinners@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" - integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== - -cli-spinners@^2.2.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== - -cli-util@~1.1.27: - version "1.1.27" - resolved "https://registry.yarnpkg.com/cli-util/-/cli-util-1.1.27.tgz#42d69e36a040a321fc9cf851c1513cadc5093054" - integrity sha512-Z6+zI0kIrqf9Oi+PmUm8J9AELp8bTf2vCLYseudYtdOPNJvzpNiExO95aHIm477IbPdu/8SE9Wvc/M1kJl4Anw== - dependencies: - cli-regexp "~0.1.0" - -cli-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== - -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== - -cliui@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" - integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - wrap-ansi "^2.0.0" - -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== - dependencies: - mimic-response "^1.0.0" - -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colord@^2.9.1: - version "2.9.2" - resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" - integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== - -colors@~1.2.1: - version "1.2.5" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" - integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== - -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -command-exists@^1.2.8: - version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" - integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== - -command-line-args@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" - integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== - dependencies: - array-back "^2.0.0" - find-replace "^1.0.3" - typical "^2.6.1" - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" - integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== - -commander@^2.20.0, commander@^2.20.3: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== - -component-emitter@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -concat-stream@^1.5.1: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -confusing-browser-globals@^1.0.9: - version "1.0.11" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" - integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== - -contains-path@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" - integrity sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== - -content-disposition@0.5.4: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-hash@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" - integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== - dependencies: - cids "^0.7.1" - multicodec "^0.5.5" - multihashes "^0.4.15" - -content-type@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" - integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== - -convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -cookie-signature@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" - integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== - -cookie@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" - integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== - -cookie@^0.4.1: - version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" - integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== - -cookiejar@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== - -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b" - integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A== - dependencies: - browserslist "^4.20.4" - semver "7.0.0" - -core-js-pure@^3.0.1, core-js-pure@^3.20.2: - version "3.23.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.1.tgz#0b27e4c3ad46178b84e790dbbb81987218ab82ad" - integrity sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg== - -core-js@^2.4.0, core-js@^2.5.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== - -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cors@^2.8.1: - version "2.8.5" - resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" - integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== - dependencies: - object-assign "^4" - vary "^1" - -cosmiconfig@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" - integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.1.0" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.7.2" - -crc-32@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" - integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== - -create-ecdh@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" - integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== - dependencies: - bn.js "^4.1.0" - elliptic "^6.5.3" - -create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" - integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== - dependencies: - cipher-base "^1.0.1" - inherits "^2.0.1" - md5.js "^1.3.4" - ripemd160 "^2.0.1" - sha.js "^2.4.0" - -create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" - integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== - dependencies: - cipher-base "^1.0.3" - create-hash "^1.1.0" - inherits "^2.0.1" - ripemd160 "^2.0.0" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== - -cross-fetch@^2.1.0, cross-fetch@^2.1.1: - version "2.2.6" - resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" - integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== - dependencies: - node-fetch "^2.6.7" - whatwg-fetch "^2.0.4" - -cross-spawn@^6.0.0, cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== - dependencies: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" - -cross-spawn@^7.0.0, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypt@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - -crypto-browserify@3.12.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - -css-declaration-sorter@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14" - integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== - -css-loader@^6.5.0: - version "6.7.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.7" - postcss-modules-extract-imports "^3.0.0" - postcss-modules-local-by-default "^4.0.0" - postcss-modules-scope "^3.0.0" - postcss-modules-values "^4.0.0" - postcss-value-parser "^4.2.0" - semver "^7.3.5" - -css-minimizer-webpack-plugin@^3.0.2: - version "3.4.1" - resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" - integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== - dependencies: - cssnano "^5.0.6" - jest-worker "^27.0.2" - postcss "^8.3.5" - schema-utils "^4.0.0" - serialize-javascript "^6.0.0" - source-map "^0.6.1" - -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -cssnano-preset-default@^5.2.12: - version "5.2.12" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97" - integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== - dependencies: - css-declaration-sorter "^6.3.0" - cssnano-utils "^3.1.0" - postcss-calc "^8.2.3" - postcss-colormin "^5.3.0" - postcss-convert-values "^5.1.2" - postcss-discard-comments "^5.1.2" - postcss-discard-duplicates "^5.1.0" - postcss-discard-empty "^5.1.1" - postcss-discard-overridden "^5.1.0" - postcss-merge-longhand "^5.1.6" - postcss-merge-rules "^5.1.2" - postcss-minify-font-values "^5.1.0" - postcss-minify-gradients "^5.1.1" - postcss-minify-params "^5.1.3" - postcss-minify-selectors "^5.2.1" - postcss-normalize-charset "^5.1.0" - postcss-normalize-display-values "^5.1.0" - postcss-normalize-positions "^5.1.1" - postcss-normalize-repeat-style "^5.1.1" - postcss-normalize-string "^5.1.0" - postcss-normalize-timing-functions "^5.1.0" - postcss-normalize-unicode "^5.1.0" - postcss-normalize-url "^5.1.0" - postcss-normalize-whitespace "^5.1.1" - postcss-ordered-values "^5.1.3" - postcss-reduce-initial "^5.1.0" - postcss-reduce-transforms "^5.1.0" - postcss-svgo "^5.1.0" - postcss-unique-selectors "^5.1.1" - -cssnano-utils@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" - integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== - -cssnano@^5.0.6: - version "5.1.12" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.12.tgz#bcd0b64d6be8692de79332c501daa7ece969816c" - integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== - dependencies: - cssnano-preset-default "^5.2.12" - lilconfig "^2.0.3" - yaml "^1.10.2" - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -csv-writer@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/csv-writer/-/csv-writer-1.6.0.tgz#d0cea44b6b4d7d3baa2ecc6f3f7209233514bcf9" - integrity sha512-NOx7YDFWEsM/fTRAJjRpPp8t+MKRVvniAg9wQlUKx20MFrPs73WLJhFf5iteqrxNYnsy924K3Iroh3yNHeYd2g== - -d@1, d@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" - integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== - dependencies: - es5-ext "^0.10.50" - type "^1.0.1" - -damerau-levenshtein@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" - integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== - -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== - dependencies: - assert-plus "^1.0.0" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug-log@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" - integrity sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.1.0, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -decamelize@^1.1.1, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== - -decamelize@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" - integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== - -decimal.js@^10.2.0, decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== - -decompress-response@^3.2.0, decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== - dependencies: - mimic-response "^1.0.0" - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== - -deep-eql@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" - integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== - dependencies: - type-detect "^4.0.0" - -deep-equal@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" - integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== - dependencies: - is-arguments "^1.0.4" - is-date-object "^1.0.1" - is-regex "^1.0.4" - object-is "^1.0.1" - object-keys "^1.1.1" - regexp.prototype.flags "^1.2.0" - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@~0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== - dependencies: - clone "^1.0.2" - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -deferred-leveldown@~1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" - integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== - dependencies: - abstract-leveldown "~2.6.0" - -deferred-leveldown@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" - integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== - dependencies: - abstract-leveldown "~5.0.0" - inherits "^2.0.3" - -deferred-leveldown@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" - integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== - dependencies: - abstract-leveldown "~6.2.1" - inherits "^2.0.3" - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-properties@^1.1.3, define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -defined@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" - integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== - -deglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" - integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== - dependencies: - find-root "^1.0.0" - glob "^7.0.5" - ignore "^3.0.9" - pkg-config "^1.1.0" - run-parallel "^1.1.2" - uniq "^1.0.1" - -delay@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-4.3.0.tgz#efeebfb8f545579cb396b3a722443ec96d14c50e" - integrity sha512-Lwaf3zVFDMBop1yDuFZ19F9WyGcZcGacsbdlZtWjQmM50tOcMntm1njF/Nb/Vjij3KaSvCF+sEYGKrrjObu2NA== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -des.js@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" - integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== - dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -destroy@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-indent@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" - integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== - dependencies: - repeating "^2.0.0" - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -diffie-hellman@^5.0.0: - version "5.0.3" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" - integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" - integrity sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg== - dependencies: - esutils "^2.0.2" - isarray "^1.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -dom-serializer@^1.0.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" - integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -dom-walk@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" - integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" - integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -domhandler@^4.2.0, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - -dotignore@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" - integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== - dependencies: - minimatch "^3.0.4" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== - -duplexer@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" - integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== - -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== - dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.147: - version "1.4.161" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz#49cb5b35385bfee6cc439d0a04fbba7a7a7f08a1" - integrity sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A== - -elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== - dependencies: - bn.js "^4.11.9" - brorand "^1.1.0" - hash.js "^1.0.0" - hmac-drbg "^1.0.1" - inherits "^2.0.4" - minimalistic-assert "^1.0.1" - minimalistic-crypto-utils "^1.0.1" - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" - integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -encoding-down@5.0.4, encoding-down@~5.0.0: - version "5.0.4" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" - integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== - dependencies: - abstract-leveldown "^5.0.0" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - xtend "^4.0.1" - -encoding-down@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" - integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== - dependencies: - abstract-leveldown "^6.2.1" - inherits "^2.0.3" - level-codec "^9.0.0" - level-errors "^2.0.0" - -encoding@^0.1.11: - version "0.1.13" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" - integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== - dependencies: - iconv-lite "^0.6.2" - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enhanced-resolve@^5.9.3: - version "5.9.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" - integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - -enquirer@^2.3.0, enquirer@^2.3.4: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -env-paths@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" - integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== - -errno@~0.1.1: - version "0.1.8" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" - integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== - dependencies: - prr "~1.0.1" - -error-ex@^1.2.0, error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-array-method-boxes-properly@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" - integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== - -es-module-lexer@^0.9.0: - version "0.9.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" - integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: - version "0.10.61" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" - integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== - dependencies: - es6-iterator "^2.0.3" - es6-symbol "^3.1.3" - next-tick "^1.1.0" - -es6-iterator@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-symbol@^3.1.1, es6-symbol@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" - integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== - dependencies: - d "^1.0.1" - ext "^1.1.2" - -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^6.0.0: - version "6.15.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" - integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== - dependencies: - get-stdin "^6.0.0" - -eslint-config-react-app@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" - integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== - dependencies: - confusing-browser-globals "^1.0.9" - -eslint-config-standard-jsx@6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" - integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== - -eslint-config-standard@12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" - integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== - -eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.2.0, eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-es@^1.3.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" - integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== - dependencies: - eslint-utils "^1.4.2" - regexpp "^2.0.1" - -eslint-plugin-flowtype@^3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" - integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== - dependencies: - lodash "^4.17.15" - -eslint-plugin-import@^2.18.2: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-import@~2.14.0: - version "2.14.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" - integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== - dependencies: - contains-path "^0.1.0" - debug "^2.6.8" - doctrine "1.5.0" - eslint-import-resolver-node "^0.3.1" - eslint-module-utils "^2.2.0" - has "^1.0.1" - lodash "^4.17.4" - minimatch "^3.0.3" - read-pkg-up "^2.0.0" - resolve "^1.6.0" - -eslint-plugin-jsx-a11y@^6.2.3: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== - dependencies: - "@babel/runtime" "^7.16.3" - aria-query "^4.2.2" - array-includes "^3.1.4" - ast-types-flow "^0.0.7" - axe-core "^4.3.5" - axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" - emoji-regex "^9.2.2" - has "^1.0.3" - jsx-ast-utils "^3.2.1" - language-tags "^1.0.5" - minimatch "^3.0.4" - -eslint-plugin-node@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" - integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== - dependencies: - eslint-plugin-es "^1.3.1" - eslint-utils "^1.3.1" - ignore "^4.0.2" - minimatch "^3.0.4" - resolve "^1.8.1" - semver "^5.5.0" - -eslint-plugin-prettier@^3.1.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" - integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-plugin-promise@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" - integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== - -eslint-plugin-react-hooks@^2.2.0: - version "2.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" - integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== - -eslint-plugin-react@^7.14.3: - version "7.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" - integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== - dependencies: - array-includes "^3.1.5" - array.prototype.flatmap "^1.3.0" - doctrine "^2.1.0" - estraverse "^5.3.0" - jsx-ast-utils "^2.4.1 || ^3.0.0" - minimatch "^3.1.2" - object.entries "^1.1.5" - object.fromentries "^2.0.5" - object.hasown "^1.1.1" - object.values "^1.1.5" - prop-types "^15.8.1" - resolve "^2.0.0-next.3" - semver "^6.3.0" - string.prototype.matchall "^4.0.7" - -eslint-plugin-react@~7.11.1: - version "7.11.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" - integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== - dependencies: - array-includes "^3.0.3" - doctrine "^2.1.0" - has "^1.0.3" - jsx-ast-utils "^2.0.1" - prop-types "^15.6.2" - -eslint-plugin-standard@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz#021211a9f077e63a6847e7bb9ab4247327ac8e0c" - integrity sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA== - -eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== - dependencies: - esrecurse "^4.1.0" - estraverse "^4.1.1" - -eslint-utils@^1.3.1, eslint-utils@^1.4.2, eslint-utils@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^6.1.0: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" - integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== - dependencies: - "@babel/code-frame" "^7.0.0" - ajv "^6.10.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^4.0.1" - doctrine "^3.0.0" - eslint-scope "^5.0.0" - eslint-utils "^1.4.3" - eslint-visitor-keys "^1.1.0" - espree "^6.1.2" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - inquirer "^7.0.0" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.14" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.3" - progress "^2.0.0" - regexpp "^2.0.1" - semver "^6.1.2" - strip-ansi "^5.2.0" - strip-json-comments "^3.0.1" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -eslint@~5.4.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" - integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== - dependencies: - ajv "^6.5.0" - babel-code-frame "^6.26.0" - chalk "^2.1.0" - cross-spawn "^6.0.5" - debug "^3.1.0" - doctrine "^2.1.0" - eslint-scope "^4.0.0" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^4.0.0" - esquery "^1.0.1" - esutils "^2.0.2" - file-entry-cache "^2.0.0" - functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" - ignore "^4.0.2" - imurmurhash "^0.1.4" - inquirer "^5.2.0" - is-resolvable "^1.1.0" - js-yaml "^3.11.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.5" - minimatch "^3.0.4" - mkdirp "^0.5.1" - natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" - pluralize "^7.0.0" - progress "^2.0.0" - regexpp "^2.0.0" - require-uncached "^1.0.3" - semver "^5.5.0" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" - table "^4.0.3" - text-table "^0.2.0" - -espree@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" - integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== - dependencies: - acorn "^6.0.2" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" - -espree@^6.1.2: - version "6.2.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" - integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== - dependencies: - acorn "^7.1.1" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.1.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.0.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.1.0, esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - -estree-walker@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" - integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== - -eth-block-tracker@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" - integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== - dependencies: - eth-query "^2.1.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.3" - ethjs-util "^0.1.3" - json-rpc-engine "^3.6.0" - pify "^2.3.0" - tape "^4.6.3" - -eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== - dependencies: - "@babel/plugin-transform-runtime" "^7.5.5" - "@babel/runtime" "^7.5.5" - eth-query "^2.1.0" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" - integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== - dependencies: - idna-uts46-hx "^2.3.1" - js-sha3 "^0.5.7" - -eth-json-rpc-errors@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" - integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-errors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" - integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-infura@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" - integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== - dependencies: - cross-fetch "^2.1.1" - eth-json-rpc-middleware "^1.5.0" - json-rpc-engine "^3.4.0" - json-rpc-error "^2.0.0" - -eth-json-rpc-middleware@^1.5.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" - integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== - dependencies: - async "^2.5.0" - eth-query "^2.1.2" - eth-tx-summary "^3.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.3" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.1.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^3.6.0" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - tape "^4.6.3" - -eth-lib@0.2.8: - version "0.2.8" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" - integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - xhr-request-promise "^0.1.2" - -eth-lib@^0.1.26: - version "0.1.29" - resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" - integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== - dependencies: - bn.js "^4.11.6" - elliptic "^6.4.0" - nano-json-stream-parser "^0.1.2" - servify "^0.1.12" - ws "^3.0.0" - xhr-request-promise "^0.1.2" - -eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" - integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== - dependencies: - json-rpc-random-id "^1.0.0" - xtend "^4.0.1" - -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-sig-util@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" - integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - -eth-sig-util@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" - integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== - dependencies: - ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" - ethereumjs-util "^5.1.1" - -eth-sig-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.1.tgz#8753297c83a3f58346bd13547b59c4b2cd110c96" - integrity sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.0" - -eth-tx-summary@^3.1.2: - version "3.2.4" - resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" - integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== - dependencies: - async "^2.1.2" - clone "^2.0.0" - concat-stream "^1.5.1" - end-of-stream "^1.1.0" - eth-query "^2.0.2" - ethereumjs-block "^1.4.1" - ethereumjs-tx "^1.1.1" - ethereumjs-util "^5.0.1" - ethereumjs-vm "^2.6.0" - through2 "^2.0.3" - -ethashjs@~0.0.7: - version "0.0.8" - resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" - integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== - dependencies: - async "^2.1.2" - buffer-xor "^2.0.1" - ethereumjs-util "^7.0.2" - miller-rabin "^4.0.0" - -ethereum-bloom-filters@^1.0.6: - version "1.0.10" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" - integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== - dependencies: - js-sha3 "^0.8.0" - -ethereum-common@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" - integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== - -ethereum-common@^0.0.18: - version "0.0.18" - resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" - integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== - -ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" - integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== - dependencies: - "@types/pbkdf2" "^3.0.0" - "@types/secp256k1" "^4.0.1" - blakejs "^1.1.0" - browserify-aes "^1.2.0" - bs58check "^2.1.2" - create-hash "^1.2.0" - create-hmac "^1.1.7" - hash.js "^1.1.7" - keccak "^3.0.0" - pbkdf2 "^3.0.17" - randombytes "^2.1.0" - safe-buffer "^5.1.2" - scrypt-js "^3.0.0" - secp256k1 "^4.0.1" - setimmediate "^1.0.5" - -ethereum-protocol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" - integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== - -ethereum-waffle@^3.4.0: - version "3.4.4" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" - integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== - dependencies: - "@ethereum-waffle/chai" "^3.4.4" - "@ethereum-waffle/compiler" "^3.4.4" - "@ethereum-waffle/mock-contract" "^3.4.4" - "@ethereum-waffle/provider" "^3.4.4" - ethers "^5.0.1" - -ethereumjs-abi@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" - integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== - dependencies: - bn.js "^4.10.0" - ethereumjs-util "^4.3.0" - -ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: - version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" - integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": - version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" - dependencies: - bn.js "^4.11.8" - ethereumjs-util "^6.0.0" - -ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" - integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== - dependencies: - ethereumjs-util "^6.0.0" - rlp "^2.2.1" - safe-buffer "^5.1.1" - -ethereumjs-account@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" - integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== - dependencies: - ethereumjs-util "^5.0.0" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" - integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== - dependencies: - async "^2.0.1" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.1" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: - version "1.7.1" - resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" - integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== - dependencies: - async "^2.0.1" - ethereum-common "0.2.0" - ethereumjs-tx "^1.2.2" - ethereumjs-util "^5.0.0" - merkle-patricia-tree "^2.1.2" - -ethereumjs-blockchain@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" - integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== - dependencies: - async "^2.6.1" - ethashjs "~0.0.7" - ethereumjs-block "~2.2.2" - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.1.0" - flow-stoplight "^1.0.0" - level-mem "^3.0.1" - lru-cache "^5.1.1" - rlp "^2.2.2" - semaphore "^1.1.0" - -ethereumjs-common@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" - integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== - -ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: - version "1.5.2" - resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" - integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== - -ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" - integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== - dependencies: - ethereumjs-common "^1.5.0" - ethereumjs-util "^6.0.0" - -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" - integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== - dependencies: - ethereum-common "^0.0.18" - ethereumjs-util "^5.0.0" - -ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.3" - -ethereumjs-util@^4.3.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" - integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== - dependencies: - bn.js "^4.8.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - rlp "^2.0.0" - -ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" - integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - elliptic "^6.5.2" - ethereum-cryptography "^0.1.3" - ethjs-util "^0.1.3" - rlp "^2.0.0" - safe-buffer "^5.1.1" - -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: - version "7.1.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" - integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== - dependencies: - "@types/bn.js" "^5.1.0" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - rlp "^2.2.4" - -ethereumjs-vm@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" - integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - core-js-pure "^3.0.1" - ethereumjs-account "^3.0.0" - ethereumjs-block "^2.2.2" - ethereumjs-blockchain "^4.0.3" - ethereumjs-common "^1.5.0" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^6.2.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - util.promisify "^1.0.0" - -ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" - integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== - dependencies: - async "^2.1.2" - async-eventemitter "^0.2.2" - ethereumjs-account "^2.0.3" - ethereumjs-block "~2.2.0" - ethereumjs-common "^1.1.0" - ethereumjs-util "^6.0.0" - fake-merkle-patricia-tree "^1.0.1" - functional-red-black-tree "^1.0.1" - merkle-patricia-tree "^2.3.2" - rustbn.js "~0.2.0" - safe-buffer "^5.1.1" - -ethereumjs-wallet@0.6.5: - version "0.6.5" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" - integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== - dependencies: - aes-js "^3.1.1" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^6.0.0" - randombytes "^2.0.6" - safe-buffer "^5.1.2" - scryptsy "^1.2.1" - utf8 "^3.0.0" - uuid "^3.3.2" - -ethereumjs-wallet@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz#2c000504b4c71e8f3782dabe1113d192522e99b6" - integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== - dependencies: - aes-js "^3.1.2" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^7.1.2" - randombytes "^2.1.0" - scrypt-js "^3.0.1" - utf8 "^3.0.0" - uuid "^8.3.2" - -ethers@^4.0.40: - version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - dependencies: - aes-js "3.0.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - -ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: - version "5.6.9" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" - integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== - dependencies: - "@ethersproject/abi" "5.6.4" - "@ethersproject/abstract-provider" "5.6.1" - "@ethersproject/abstract-signer" "5.6.2" - "@ethersproject/address" "5.6.1" - "@ethersproject/base64" "5.6.1" - "@ethersproject/basex" "5.6.1" - "@ethersproject/bignumber" "5.6.2" - "@ethersproject/bytes" "5.6.1" - "@ethersproject/constants" "5.6.1" - "@ethersproject/contracts" "5.6.2" - "@ethersproject/hash" "5.6.1" - "@ethersproject/hdnode" "5.6.2" - "@ethersproject/json-wallets" "5.6.1" - "@ethersproject/keccak256" "5.6.1" - "@ethersproject/logger" "5.6.0" - "@ethersproject/networks" "5.6.4" - "@ethersproject/pbkdf2" "5.6.1" - "@ethersproject/properties" "5.6.0" - "@ethersproject/providers" "5.6.8" - "@ethersproject/random" "5.6.1" - "@ethersproject/rlp" "5.6.1" - "@ethersproject/sha2" "5.6.1" - "@ethersproject/signing-key" "5.6.2" - "@ethersproject/solidity" "5.6.1" - "@ethersproject/strings" "5.6.1" - "@ethersproject/transactions" "5.6.2" - "@ethersproject/units" "5.6.1" - "@ethersproject/wallet" "5.6.2" - "@ethersproject/web" "5.6.1" - "@ethersproject/wordlists" "5.6.1" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== - dependencies: - bn.js "4.11.6" - number-to-bn "1.7.0" - -ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" - integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== - dependencies: - is-hex-prefixed "1.0.0" - strip-hex-prefix "1.0.0" - -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" - integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== - -events@^3.0.0, events@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" - integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" - integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== - dependencies: - md5.js "^1.3.4" - safe-buffer "^5.1.1" - -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.0.3: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== - dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - -express@^4.14.0: - version "4.18.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" - integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== - dependencies: - accepts "~1.3.8" - array-flatten "1.1.1" - body-parser "1.20.0" - content-disposition "0.5.4" - content-type "~1.0.4" - cookie "0.5.0" - cookie-signature "1.0.6" - debug "2.6.9" - depd "2.0.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.2.0" - fresh "0.5.2" - http-errors "2.0.0" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "2.4.1" - parseurl "~1.3.3" - path-to-regexp "0.1.7" - proxy-addr "~2.0.7" - qs "6.10.3" - range-parser "~1.2.1" - safe-buffer "5.2.1" - send "0.18.0" - serve-static "1.15.0" - setprototypeof "1.2.0" - statuses "2.0.1" - type-is "~1.6.18" - utils-merge "1.0.1" - vary "~1.1.2" - -ext@^1.1.2: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" - integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== - dependencies: - type "^2.5.0" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -external-editor@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" - integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== - dependencies: - chardet "^0.4.0" - iconv-lite "^0.4.17" - tmp "^0.0.33" - -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== - -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== - -fake-merkle-patricia-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" - integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== - dependencies: - checkpoint-store "^1.1.0" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -fetch-ponyfill@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" - integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== - dependencies: - node-fetch "~1.7.1" - -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== - dependencies: - escape-string-regexp "^1.0.5" - -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== - dependencies: - escape-string-regexp "^1.0.5" - -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w== - dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" - -file-entry-cache@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" - integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== - dependencies: - flat-cache "^2.0.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -finalhandler@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" - integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "2.4.1" - parseurl "~1.3.3" - statuses "2.0.1" - unpipe "~1.0.0" - -find-cache-dir@^3.3.1: - version "3.3.2" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" - integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-replace@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" - integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== - dependencies: - array-back "^1.0.4" - test-value "^2.1.0" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -find-root@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" - integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== - -find-up@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -find-up@^2.0.0, find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-yarn-workspace-root@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" - integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== - dependencies: - fs-extra "^4.0.3" - micromatch "^3.1.4" - -find-yarn-workspace-root@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" - integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== - dependencies: - micromatch "^4.0.2" - -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== - dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" - -flat-cache@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" - integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== - dependencies: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -flow-stoplight@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" - integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.12.1: - version "1.15.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" - integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== - -for-each@^0.3.3, for-each@~0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" - integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== - dependencies: - is-callable "^1.1.3" - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== - -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fp-ts@1.19.3: - version "1.19.3" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" - integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== - -fp-ts@^1.0.0: - version "1.19.5" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" - integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^0.30.0: - version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" - integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^2.1.0" - klaw "^1.0.0" - path-is-absolute "^1.0.0" - rimraf "^2.2.8" - -fs-extra@^4.0.2, fs-extra@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" - integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^7.0.0, fs-extra@^7.0.1, fs-extra@~7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" - integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== - dependencies: - graceful-fs "^4.1.2" - jsonfile "^4.0.0" - universalify "^0.1.0" - -fs-extra@^9.0.0, fs-extra@^9.1.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" - integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== - dependencies: - at-least-node "^1.0.0" - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== - -fsevents@^2.3.2, fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -ganache-cli@^6.7.0: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" - integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== - dependencies: - ethereumjs-util "6.2.1" - source-map-support "0.5.12" - yargs "13.2.4" - -ganache-core@^2.13.2: - version "2.13.2" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" - integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== - dependencies: - abstract-leveldown "3.0.0" - async "2.6.2" - bip39 "2.5.0" - cachedown "1.0.0" - clone "2.1.2" - debug "3.2.6" - encoding-down "5.0.4" - eth-sig-util "3.0.0" - ethereumjs-abi "0.6.8" - ethereumjs-account "3.0.0" - ethereumjs-block "2.2.2" - ethereumjs-common "1.5.0" - ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.1" - ethereumjs-vm "4.2.0" - heap "0.2.6" - keccak "3.0.1" - level-sublevel "6.6.4" - levelup "3.1.1" - lodash "4.17.20" - lru-cache "5.1.1" - merkle-patricia-tree "3.0.0" - patch-package "6.2.2" - seedrandom "3.0.1" - source-map-support "0.5.12" - tmp "0.1.0" - web3-provider-engine "14.2.1" - websocket "1.0.32" - optionalDependencies: - ethereumjs-wallet "0.6.5" - web3 "1.2.11" - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" - integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== - -get-caller-file@^2.0.1, get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-func-name@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" - integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" - integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.3" - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" - integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== - -get-stream@^4.0.0, get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.0.0, get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== - dependencies: - assert-plus "^1.0.0" - -glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global@^4.4.0, global@~4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" - integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== - dependencies: - min-document "^2.19.0" - process "^0.11.10" - -globals@^11.1.0, globals@^11.7.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - -globalyzer@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" - integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== - -globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -globrex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" - integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== - -got@9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -got@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" - integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== - dependencies: - decompress-response "^3.2.0" - duplexer3 "^0.1.4" - get-stream "^3.0.0" - is-plain-obj "^1.1.0" - is-retry-allowed "^1.0.0" - is-stream "^1.0.0" - isurl "^1.0.0-alpha5" - lowercase-keys "^1.0.0" - p-cancelable "^0.3.0" - p-timeout "^1.1.1" - safe-buffer "^5.0.1" - timed-out "^4.0.0" - url-parse-lax "^1.0.0" - url-to-options "^1.0.1" - -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - -gzip-size@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" - integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== - dependencies: - duplexer "^0.1.2" - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== - dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" - -hardhat@^2.7.0: - version "2.9.9" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" - integrity sha512-Qv7SXnRc0zq1kGXruNnSKpP3eFccXMR5Qv6GVX9hBIJ5efN0PflKPq92aQ5Cv3jrjJeRevLznWZVz7bttXhVfw== - dependencies: - "@ethereumjs/block" "^3.6.2" - "@ethereumjs/blockchain" "^5.5.2" - "@ethereumjs/common" "^2.6.4" - "@ethereumjs/tx" "^3.5.1" - "@ethereumjs/vm" "^5.9.0" - "@ethersproject/abi" "^5.1.2" - "@metamask/eth-sig-util" "^4.0.0" - "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.14.1" - "@types/bn.js" "^5.1.0" - "@types/lru-cache" "^5.1.0" - abort-controller "^3.0.0" - adm-zip "^0.4.16" - aggregate-error "^3.0.0" - ansi-escapes "^4.3.0" - chalk "^2.4.2" - chokidar "^3.4.0" - ci-info "^2.0.0" - debug "^4.1.1" - enquirer "^2.3.0" - env-paths "^2.2.0" - ethereum-cryptography "^0.1.2" - ethereumjs-abi "^0.6.8" - ethereumjs-util "^7.1.4" - find-up "^2.1.0" - fp-ts "1.19.3" - fs-extra "^7.0.1" - glob "7.2.0" - immutable "^4.0.0-rc.12" - io-ts "1.10.4" - lodash "^4.17.11" - merkle-patricia-tree "^4.2.4" - mnemonist "^0.38.0" - mocha "^9.2.0" - p-map "^4.0.0" - qs "^6.7.0" - raw-body "^2.4.1" - resolve "1.17.0" - semver "^6.3.0" - slash "^3.0.0" - solc "0.7.3" - source-map-support "^0.5.13" - stacktrace-parser "^0.1.10" - "true-case-path" "^2.2.1" - tsort "0.0.1" - undici "^5.4.0" - uuid "^8.3.2" - ws "^7.4.6" - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - -has-bigints@^1.0.1, has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbol-support-x@^1.4.1: - version "1.4.2" - resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" - integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== - -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-to-string-tag-x@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" - integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== - dependencies: - has-symbol-support-x "^1.4.1" - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -has@^1.0.1, has@^1.0.3, has@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hash-base@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" - integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== - dependencies: - inherits "^2.0.4" - readable-stream "^3.6.0" - safe-buffer "^5.2.0" - -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - -hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -he@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -heap@0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" - integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== - -highcharts@^9.2.2: - version "9.3.3" - resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-9.3.3.tgz#ae62178de788fd7934431aa26b8e250b8073c541" - integrity sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg== - -hmac-drbg@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" - integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== - dependencies: - hash.js "^1.0.3" - minimalistic-assert "^1.0.0" - minimalistic-crypto-utils "^1.0.1" - -home-or-tmp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" - integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.1" - -hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-errors@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-https@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" - integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -http-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== - dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -humanize-duration@^3.15.3: - version "3.27.2" - resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.2.tgz#4b4e565bec098d22c9a54344e16156d1c649f160" - integrity sha512-A15OmA3FLFRnehvF4ZMocsxTZYvHq4ze7L+AgR1DeHw0xC9vMd4euInY83uqGU9/XXKNnVIEeKc1R8G8nKqtzg== - -husky@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" - integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== - -iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -iconv-lite@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" - integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== - dependencies: - safer-buffer ">= 2.1.2 < 3.0.0" - -icss-utils@^5.0.0, icss-utils@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" - integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== - -idna-uts46-hx@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" - integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== - dependencies: - punycode "2.1.0" - -ieee754@^1.1.13: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^3.0.9: - version "3.3.10" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" - integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== - -ignore@^4.0.2, ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -immediate@^3.2.3: - version "3.3.0" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" - integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== - -immediate@~3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" - integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== - -immutable@^4.0.0-rc.12: - version "4.1.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" - integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== - -import-fresh@^3.0.0, import-fresh@^3.1.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@~4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" - integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== - -import-local@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" - integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -inquirer@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" - integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== - dependencies: - ansi-escapes "^3.0.0" - chalk "^2.0.0" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^2.1.0" - figures "^2.0.0" - lodash "^4.3.0" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^5.5.2" - string-width "^2.1.0" - strip-ansi "^4.0.0" - through "^2.3.6" - -inquirer@^7.0.0: - version "7.3.3" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" - integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== - dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.19" - mute-stream "0.0.8" - run-async "^2.4.0" - rxjs "^6.6.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -invariant@^2.2.2: - version "2.2.4" - resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" - integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== - dependencies: - loose-envify "^1.0.0" - -invert-kv@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" - integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== - -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - -io-ts@1.10.4: - version "1.10.4" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" - integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== - dependencies: - fp-ts "^1.0.0" - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arguments@^1.0.4: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" - integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-buffer@^1.1.5, is-buffer@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.1.0, is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-date-object@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" - integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== - dependencies: - has-tostringtag "^1.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-finite@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" - integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== - -is-fn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" - integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-function@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" - integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== - -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-hex-prefixed@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" - integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== - -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" - integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" - integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== - dependencies: - kind-of "^3.0.2" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" - integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== - -is-plain-obj@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" - integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== - -is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-reference@^1.1.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" - integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== - dependencies: - "@types/estree" "*" - -is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-resolvable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" - integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== - -is-retry-allowed@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" - integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-string@^1.0.5, is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2, is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0, is-typedarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-url@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" - integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.1.1, is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" - integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== - -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== - -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" - integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -isurl@^1.0.0-alpha5: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" - integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== - dependencies: - has-to-string-tag-x "^1.2.0" - is-object "^1.0.1" - -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^25.2.1: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" - integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== - dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.5.0" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-message-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" - integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.5.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" - graceful-fs "^4.2.4" - micromatch "^4.0.2" - slash "^3.0.0" - stack-utils "^1.0.1" - -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" - integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== - -jest-regex-util@^25.2.1: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== - -jest-regex-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== - dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" - -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__traverse" "^7.0.4" - "@types/prettier" "^2.1.5" - babel-preset-current-node-syntax "^1.0.0" - chalk "^4.0.0" - expect "^27.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" - integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== - dependencies: - "@jest/types" "^25.5.0" - chalk "^3.0.0" - graceful-fs "^4.2.4" - is-ci "^2.0.0" - make-dir "^3.0.0" - -jest-util@^27.0.0, jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" - -jest-watch-typeahead@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz#903dba6112f22daae7e90b0a271853f7ff182008" - integrity sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ== - dependencies: - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-regex-util "^25.2.1" - jest-watcher "^25.2.4" - slash "^3.0.0" - string-length "^3.1.0" - strip-ansi "^6.0.0" - -jest-watcher@^25.2.4: - version "25.5.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" - integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== - dependencies: - "@jest/test-result" "^25.5.0" - "@jest/types" "^25.5.0" - ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.5.0" - string-length "^3.1.0" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" - -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== - dependencies: - merge-stream "^2.0.0" - supports-color "^6.1.0" - -jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^25.3.0, jest@^27.3.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== - dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -jju@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" - integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== - -jora@^1.0.0-beta.5: - version "1.0.0-beta.6" - resolved "https://registry.yarnpkg.com/jora/-/jora-1.0.0-beta.6.tgz#c2dfa27773421279ba0c7eed452c2fe17dba8537" - integrity sha512-2FkqL/aVGKpZAYPwaElAV8x8P34E9NfxWCNl8VjimTfiftEjRb5xohNuosUyDMg2ukdn3iXKm2I6rNF7UQKM7A== - dependencies: - "@discoveryjs/natural-compare" "^1.0.0" - -jpjs@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jpjs/-/jpjs-1.2.1.tgz#f343833de8838a5beba1f42d5a219be0114c44b7" - integrity sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw== - -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== - -js-sha3@0.8.0, js-sha3@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== - -js-yaml@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -js-yaml@^3.11.0, js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" - integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== - -json-parse-better-errors@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - -json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: - version "3.8.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" - integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== - dependencies: - async "^2.0.1" - babel-preset-env "^1.7.0" - babelify "^7.3.0" - json-rpc-error "^2.0.0" - promise-to-callback "^1.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-engine@^5.1.3: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-error@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" - integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== - dependencies: - inherits "^2.0.1" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" - integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== - -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== - dependencies: - jsonify "~0.0.0" - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== - -json5@2.x, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -jsonfile@^2.1.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" - integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== - dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" - -jsx-ast-utils@^2.0.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" - integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== - dependencies: - array-includes "^3.1.1" - object.assign "^4.1.0" - -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" - integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== - dependencies: - array-includes "^3.1.4" - object.assign "^4.1.2" - -keccak@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -keccak@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" - integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - readable-stream "^3.6.0" - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw-sync@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" - integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== - dependencies: - graceful-fs "^4.1.11" - -klaw@^1.0.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" - integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== - optionalDependencies: - graceful-fs "^4.1.9" - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== - -language-tags@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" - integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== - dependencies: - language-subtag-registry "~0.3.2" - -lcid@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" - integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== - dependencies: - invert-kv "^1.0.0" - -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - -level-codec@^9.0.0: - version "9.0.2" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" - integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== - dependencies: - buffer "^5.6.0" - -level-codec@~7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" - integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== - -level-concat-iterator@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" - integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== - -level-errors@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" - integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== - dependencies: - errno "~0.1.1" - -level-errors@^2.0.0, level-errors@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" - integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== - dependencies: - errno "~0.1.1" - -level-errors@~1.0.3: - version "1.0.5" - resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" - integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== - dependencies: - errno "~0.1.1" - -level-iterator-stream@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" - integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.5" - xtend "^4.0.0" - -level-iterator-stream@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" - integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== - dependencies: - inherits "^2.0.1" - level-errors "^1.0.3" - readable-stream "^1.0.33" - xtend "^4.0.0" - -level-iterator-stream@~3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" - integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== - dependencies: - inherits "^2.0.1" - readable-stream "^2.3.6" - xtend "^4.0.0" - -level-iterator-stream@~4.0.0: - version "4.0.2" - resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" - integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== - dependencies: - inherits "^2.0.4" - readable-stream "^3.4.0" - xtend "^4.0.2" - -level-mem@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" - integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== - dependencies: - level-packager "~4.0.0" - memdown "~3.0.0" - -level-mem@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" - integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== - dependencies: - level-packager "^5.0.3" - memdown "^5.0.0" - -level-packager@^5.0.3: - version "5.1.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" - integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== - dependencies: - encoding-down "^6.3.0" - levelup "^4.3.2" - -level-packager@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" - integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== - dependencies: - encoding-down "~5.0.0" - levelup "^3.0.0" - -level-post@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" - integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== - dependencies: - ltgt "^2.1.2" - -level-sublevel@6.6.4: - version "6.6.4" - resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" - integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== - dependencies: - bytewise "~1.1.0" - level-codec "^9.0.0" - level-errors "^2.0.0" - level-iterator-stream "^2.0.3" - ltgt "~2.1.1" - pull-defer "^0.2.2" - pull-level "^2.0.3" - pull-stream "^3.6.8" - typewiselite "~1.0.0" - xtend "~4.0.0" - -level-supports@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" - integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== - dependencies: - xtend "^4.0.2" - -level-ws@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" - integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== - dependencies: - readable-stream "~1.0.15" - xtend "~2.1.1" - -level-ws@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" - integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== - dependencies: - inherits "^2.0.3" - readable-stream "^2.2.8" - xtend "^4.0.1" - -level-ws@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" - integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== - dependencies: - inherits "^2.0.3" - readable-stream "^3.1.0" - xtend "^4.0.1" - -levelup@3.1.1, levelup@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" - integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== - dependencies: - deferred-leveldown "~4.0.0" - level-errors "~2.0.0" - level-iterator-stream "~3.0.0" - xtend "~4.0.0" - -levelup@^1.2.1: - version "1.3.9" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" - integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== - dependencies: - deferred-leveldown "~1.2.1" - level-codec "~7.0.0" - level-errors "~1.0.3" - level-iterator-stream "~1.3.0" - prr "~1.0.1" - semver "~5.4.1" - xtend "~4.0.0" - -levelup@^4.3.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" - integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== - dependencies: - deferred-leveldown "~5.3.0" - level-errors "~2.0.0" - level-iterator-stream "~4.0.0" - level-supports "~1.0.0" - xtend "~4.0.0" - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.3.0, levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lilconfig@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" - integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - strip-bom "^3.0.0" - -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - -loader-runner@^4.2.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" - integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.assign@^4.0.3, lodash.assign@^4.0.6: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" - integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== - -lodash.flatmap@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== - -lodash.get@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" - integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.memoize@4.x, lodash.memoize@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" - integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.uniq@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" - integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== - -lodash@4.17.20: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.7.0, lodash@~4.17.15: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - -log-update@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" - integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== - dependencies: - ansi-escapes "^3.0.0" - cli-cursor "^2.0.0" - wrap-ansi "^3.0.1" - -looper@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" - integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== - -looper@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" - integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== - -loose-envify@^1.0.0, loose-envify@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -loupe@^2.3.1: - version "2.3.4" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" - integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== - dependencies: - get-func-name "^2.0.0" - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -lru-cache@5.1.1, lru-cache@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" - integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== - dependencies: - yallist "^3.0.2" - -lru-cache@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" - integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== - dependencies: - pseudomap "^1.0.1" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - -lru_map@^0.3.3: - version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" - integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== - -ltgt@^2.1.2, ltgt@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" - integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== - -ltgt@~2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" - integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== - -magic-string@^0.25.2, magic-string@^0.25.7: - version "0.25.9" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" - integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== - dependencies: - sourcemap-codec "^1.4.8" - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -make-error@1.x, make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== - -makeerror@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" - integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== - dependencies: - tmpl "1.0.5" - -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== - dependencies: - object-visit "^1.0.0" - -mcl-wasm@^0.7.1: - version "0.7.9" - resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" - integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== - -md5.js@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" - integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - safe-buffer "^5.1.2" - -md5@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" - integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== - dependencies: - charenc "0.0.2" - crypt "0.0.2" - is-buffer "~1.1.6" - -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - -memdown@^1.0.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" - integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== - dependencies: - abstract-leveldown "~2.7.1" - functional-red-black-tree "^1.0.1" - immediate "^3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memdown@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" - integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== - dependencies: - abstract-leveldown "~6.2.1" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.2.0" - -memdown@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" - integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== - dependencies: - abstract-leveldown "~5.0.0" - functional-red-black-tree "~1.0.1" - immediate "~3.2.3" - inherits "~2.0.1" - ltgt "~2.2.0" - safe-buffer "~5.1.1" - -memoizee@^0.4.14: - version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - -memorystream@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" - integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== - -merge-descriptors@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" - integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -merkle-patricia-tree@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" - integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== - dependencies: - async "^1.4.2" - ethereumjs-util "^5.0.0" - level-ws "0.0.0" - levelup "^1.2.1" - memdown "^1.0.0" - readable-stream "^2.0.0" - rlp "^2.0.0" - semaphore ">=1.0.1" - -merkle-patricia-tree@^4.2.4: - version "4.2.4" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" - integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== - dependencies: - "@types/levelup" "^4.3.0" - ethereumjs-util "^7.1.4" - level-mem "^5.0.1" - level-ws "^2.0.0" - readable-stream "^3.6.0" - semaphore-async-await "^1.5.1" - -methods@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -micromatch@^3.1.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -micromatch@^4.0.2, micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mimic-fn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" - integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== - -mimic-fn@^2.0.0, mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -min-document@^2.19.0: - version "2.19.0" - resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" - integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== - dependencies: - dom-walk "^0.1.0" - -minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimalistic-crypto-utils@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" - integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== - -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp-promise@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" - integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== - dependencies: - mkdirp "*" - -mkdirp@*, mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.6" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" - integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== - dependencies: - minimist "^1.2.6" - -mnemonist@^0.38.0: - version "0.38.5" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" - integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== - dependencies: - obliterator "^2.0.0" - -mocha@^9.2.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" - -mock-fs@^4.1.0: - version "4.14.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" - integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== - -mri@^1.1.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" - integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@2.1.3, ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multibase@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" - integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multibase@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" - integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== - dependencies: - base-x "^3.0.8" - buffer "^5.5.0" - -multicodec@^0.5.5: - version "0.5.7" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" - integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== - dependencies: - varint "^5.0.0" - -multicodec@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" - integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== - dependencies: - buffer "^5.6.0" - varint "^5.0.0" - -multihashes@^0.4.15, multihashes@~0.4.15: - version "0.4.21" - resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" - integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== - dependencies: - buffer "^5.5.0" - multibase "^0.7.0" - varint "^5.0.0" - -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -nano-json-stream-parser@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" - integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== - -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== - -nanoid@^3.1.30, nanoid@^3.3.4: - version "3.3.4" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" - integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -nanospinner@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/nanospinner/-/nanospinner-0.4.0.tgz#f544f71fb990423528b8f6dd6c26134cf9f21659" - integrity sha512-FhxiB9PcEztMw6XfQDSLJBMlmN4n7B2hl/oiK4Hy9479r1+df0i2099DgcEx+m6yBfBJVUuKpILvP8fM3rK3Sw== - dependencies: - picocolors "^1.0.0" - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -neo-async@^2.6.2: - version "2.6.2" - resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" - integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== - -next-tick@1, next-tick@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" - integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== - -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.1, node-fetch@^2.6.7: - version "2.6.7" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" - integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== - dependencies: - whatwg-url "^5.0.0" - -node-fetch@~1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" - -node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== - -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== - -normalize-package-data@^2.3.2: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nth-check@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== - -number-to-bn@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" - integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== - dependencies: - bn.js "4.11.6" - strip-hex-prefix "1.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.12.0, object-inspect@^1.9.0, object-inspect@~1.12.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-is@^1.0.1: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" - integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - -object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object-keys@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" - integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== - dependencies: - isobject "^3.0.0" - -object.assign@^4.1.0, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.entries@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" - integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.fromentries@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" - integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -object.getownpropertydescriptors@^2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" - integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== - dependencies: - array.prototype.reduce "^1.0.4" - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.20.1" - -object.hasown@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" - integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== - dependencies: - define-properties "^1.1.4" - es-abstract "^1.19.5" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== - dependencies: - isobject "^3.0.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -obliterator@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" - integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== - -oboe@2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" - integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== - dependencies: - http-https "^1.0.0" - -on-finished@2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" - integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== - dependencies: - mimic-fn "^1.0.0" - -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -open@^7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== - dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" - -open@^8.2.1: - version "8.4.0" - resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" - integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -optionator@^0.8.1, optionator@^0.8.2, optionator@^0.8.3: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -ora@^4.0.3: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" - integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== - dependencies: - chalk "^3.0.0" - cli-cursor "^3.1.0" - cli-spinners "^2.2.0" - is-interactive "^1.0.0" - log-symbols "^3.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== - -os-locale@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" - integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== - dependencies: - lcid "^1.0.0" - -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - -os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== - -p-cancelable@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" - integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== - -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== - -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0, p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" - integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== - dependencies: - aggregate-error "^3.0.0" - -p-timeout@^1.1.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" - integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== - dependencies: - p-finally "^1.0.0" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-asn1@^5.0.0, parse-asn1@^5.1.5: - version "5.1.6" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" - integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== - dependencies: - asn1.js "^5.2.0" - browserify-aes "^1.0.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" - safe-buffer "^5.1.1" - -parse-headers@^2.0.0: - version "2.0.5" - resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" - integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== - dependencies: - error-ex "^1.2.0" - -parse-json@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" - integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== - dependencies: - error-ex "^1.3.1" - json-parse-better-errors "^1.0.1" - -parse-json@^5.0.0, parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== - -patch-package@6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" - integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^1.2.1" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -patch-package@^6.2.2: - version "6.4.7" - resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" - integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== - dependencies: - "@yarnpkg/lockfile" "^1.1.0" - chalk "^2.4.2" - cross-spawn "^6.0.5" - find-yarn-workspace-root "^2.0.0" - fs-extra "^7.0.1" - is-ci "^2.0.0" - klaw-sync "^6.0.0" - minimist "^1.2.0" - open "^7.4.2" - rimraf "^2.6.3" - semver "^5.6.0" - slash "^2.0.0" - tmp "^0.0.33" - -path-browserify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== - dependencies: - pinkie-promise "^2.0.0" - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== - -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== - -path-key@^2.0.0, path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-to-regexp@0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" - integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" - integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== - dependencies: - pify "^2.0.0" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -pathval@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" - integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== - -pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" - integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== - dependencies: - create-hash "^1.1.2" - create-hmac "^1.1.4" - ripemd160 "^2.0.1" - safe-buffer "^5.0.1" - sha.js "^2.4.8" - -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.0.0, pify@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== - -pirates@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-conf@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" - integrity sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g== - dependencies: - find-up "^2.0.0" - load-json-file "^4.0.0" - -pkg-config@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" - integrity sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw== - dependencies: - debug-log "^1.0.0" - find-root "^1.0.0" - xtend "^4.0.1" - -pkg-dir@^4.1.0, pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== - -postcss-calc@^8.2.3: - version "8.2.4" - resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" - integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== - dependencies: - postcss-selector-parser "^6.0.9" - postcss-value-parser "^4.2.0" - -postcss-colormin@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" - integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - colord "^2.9.1" - postcss-value-parser "^4.2.0" - -postcss-convert-values@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab" - integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== - dependencies: - browserslist "^4.20.3" - postcss-value-parser "^4.2.0" - -postcss-discard-comments@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" - integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== - -postcss-discard-duplicates@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" - integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== - -postcss-discard-empty@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" - integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== - -postcss-discard-overridden@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" - integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== - -postcss-merge-longhand@^5.1.6: - version "5.1.6" - resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce" - integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== - dependencies: - postcss-value-parser "^4.2.0" - stylehacks "^5.1.0" - -postcss-merge-rules@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5" - integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - cssnano-utils "^3.1.0" - postcss-selector-parser "^6.0.5" - -postcss-minify-font-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" - integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-minify-gradients@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" - integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== - dependencies: - colord "^2.9.1" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-params@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" - integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== - dependencies: - browserslist "^4.16.6" - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-minify-selectors@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" - integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-modules-extract-imports@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" - integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== - -postcss-modules-local-by-default@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" - integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^6.0.2" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" - integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-modules-values@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" - integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== - dependencies: - icss-utils "^5.0.0" - -postcss-normalize-charset@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" - integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== - -postcss-normalize-display-values@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" - integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-positions@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" - integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-repeat-style@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" - integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-string@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" - integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-timing-functions@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" - integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-normalize-unicode@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" - integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== - dependencies: - browserslist "^4.16.6" - postcss-value-parser "^4.2.0" - -postcss-normalize-url@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" - integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== - dependencies: - normalize-url "^6.0.1" - postcss-value-parser "^4.2.0" - -postcss-normalize-whitespace@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" - integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-ordered-values@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" - integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== - dependencies: - cssnano-utils "^3.1.0" - postcss-value-parser "^4.2.0" - -postcss-reduce-initial@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" - integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== - dependencies: - browserslist "^4.16.6" - caniuse-api "^3.0.0" - -postcss-reduce-transforms@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" - integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== - dependencies: - postcss-value-parser "^4.2.0" - -postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: - version "6.0.10" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" - integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-svgo@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" - integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== - dependencies: - postcss-value-parser "^4.2.0" - svgo "^2.7.0" - -postcss-unique-selectors@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" - integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== - dependencies: - postcss-selector-parser "^6.0.5" - -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.3.5, postcss@^8.4.7: - version "8.4.14" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" - integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== - dependencies: - nanoid "^3.3.4" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -postinstall-postinstall@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" - integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== - -precond@0.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" - integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== - -prepend-http@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" - integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^1.19.1: - version "1.19.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" - integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== - -prettier@^2.1.2, prettier@^2.6.2: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty-format@^25.2.1, pretty-format@^25.5.0: - version "25.5.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" - integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== - dependencies: - "@jest/types" "^25.5.0" - ansi-regex "^5.0.0" - ansi-styles "^4.0.0" - react-is "^16.12.0" - -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -private@^0.1.6, private@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" - integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== - -progress-estimator@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/progress-estimator/-/progress-estimator-0.2.2.tgz#1c3947a5782ea56e40c8fccc290ac7ceeb1b91cb" - integrity sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA== - dependencies: - chalk "^2.4.1" - cli-spinners "^1.3.1" - humanize-duration "^3.15.3" - log-update "^2.3.0" - -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -promise-to-callback@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" - integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== - dependencies: - is-fn "^1.0.0" - set-immediate-shim "^1.0.1" - -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - -prop-types@^15.6.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - -proxy-addr@~2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -prr@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" - integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== - -pseudomap@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== - -psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -public-encrypt@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" - integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - safe-buffer "^5.1.2" - -pull-cat@^1.1.9: - version "1.1.11" - resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" - integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== - -pull-defer@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" - integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== - -pull-level@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" - integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== - dependencies: - level-post "^1.0.7" - pull-cat "^1.1.9" - pull-live "^1.0.1" - pull-pushable "^2.0.0" - pull-stream "^3.4.0" - pull-window "^2.1.4" - stream-to-pull-stream "^1.7.1" - -pull-live@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" - integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== - dependencies: - pull-cat "^1.1.9" - pull-stream "^3.4.0" - -pull-pushable@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" - integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== - -pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: - version "3.6.14" - resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" - integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== - -pull-window@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" - integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== - dependencies: - looper "^2.0.0" - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" - integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== - -punycode@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" - integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -qs@6.10.3: - version "6.10.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" - integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== - dependencies: - side-channel "^1.0.4" - -qs@^6.7.0: - version "6.10.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== - dependencies: - side-channel "^1.0.4" - -qs@~6.5.2: - version "6.5.3" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" - integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== - -query-string@^5.0.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" - integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== - dependencies: - decode-uri-component "^0.2.0" - object-assign "^4.1.0" - strict-uri-encode "^1.0.0" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" - integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@2.5.1, raw-body@^2.4.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" - integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -react-is@^16.12.0, react-is@^16.13.1: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== - -react-is@^17.0.1: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" - integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" - integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== - dependencies: - find-up "^2.0.0" - read-pkg "^2.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" - integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== - dependencies: - load-json-file "^2.0.0" - normalize-package-data "^2.3.2" - path-type "^2.0.0" - -readable-stream@^1.0.33: - version "1.1.14" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" - integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-stream@~1.0.15: - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== - dependencies: - resolve "^1.1.6" - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== - dependencies: - regenerate "^1.4.2" - -regenerate@^1.2.1, regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-transform@^0.10.0: - version "0.10.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" - integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== - dependencies: - babel-runtime "^6.18.0" - babel-types "^6.19.0" - private "^0.1.6" - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^2.0.0, regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" - integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== - dependencies: - regenerate "^1.2.1" - regjsgen "^0.2.0" - regjsparser "^0.1.4" - -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" - integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== - -regjsparser@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" - integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== - dependencies: - jsesc "~0.5.0" - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== - dependencies: - is-finite "^1.0.0" - -request@^2.79.0, request@^2.85.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== - dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== - -require-from-string@^1.1.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" - integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== - -require-from-string@^2.0.0, require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== - -require-main-filename@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" - integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -require-uncached@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" - integrity sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w== - dependencies: - caller-path "^0.1.0" - resolve-from "^1.0.0" - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" - integrity sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg== - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== - -resolve.exports@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" - integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== - -resolve@1.17.0, resolve@~1.17.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" - integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.6.0, resolve@^1.8.1, resolve@~1.22.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^2.0.0-next.3: - version "2.0.0-next.4" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" - integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@~1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== - dependencies: - lowercase-keys "^1.0.0" - -restore-cursor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" - integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== - dependencies: - onetime "^2.0.0" - signal-exit "^3.0.2" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -resumer@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" - integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== - dependencies: - through "~2.3.4" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@2.6.3, rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -rimraf@^2.2.8, rimraf@^2.6.3: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -ripemd160@^2.0.0, ripemd160@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" - integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== - dependencies: - hash-base "^3.0.0" - inherits "^2.0.1" - -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: - version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" - integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== - dependencies: - bn.js "^5.2.0" - -rollup-plugin-sourcemaps@^0.6.2: - version "0.6.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" - integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== - dependencies: - "@rollup/pluginutils" "^3.0.9" - source-map-resolve "^0.6.0" - -rollup-plugin-terser@^5.1.2: - version "5.3.1" - resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" - integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== - dependencies: - "@babel/code-frame" "^7.5.5" - jest-worker "^24.9.0" - rollup-pluginutils "^2.8.2" - serialize-javascript "^4.0.0" - terser "^4.6.2" - -rollup-plugin-typescript2@^0.27.3: - version "0.27.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz#cd9455ac026d325b20c5728d2cc54a08a771b68b" - integrity sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg== - dependencies: - "@rollup/pluginutils" "^3.1.0" - find-cache-dir "^3.3.1" - fs-extra "8.1.0" - resolve "1.17.0" - tslib "2.0.1" - -rollup-pluginutils@^2.8.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - -rollup@^1.32.1: - version "1.32.1" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" - integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== - dependencies: - "@types/estree" "*" - "@types/node" "*" - acorn "^7.1.0" - -run-async@^2.2.0, run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.2, run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rustbn.js@~0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" - integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== - -rxjs@^5.5.2: - version "5.5.12" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" - integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== - dependencies: - symbol-observable "1.0.1" - -rxjs@^6.6.0: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== - dependencies: - tslib "^1.9.0" - -sade@^1.4.2: - version "1.8.1" - resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" - integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== - dependencies: - mri "^1.1.0" - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-event-emitter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" - integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== - dependencies: - events "^3.0.0" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -schema-utils@^3.1.0, schema-utils@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" - integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== - dependencies: - "@types/json-schema" "^7.0.8" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - -schema-utils@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" - integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== - dependencies: - "@types/json-schema" "^7.0.9" - ajv "^8.8.0" - ajv-formats "^2.1.1" - ajv-keywords "^5.0.0" - -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - -scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" - integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== - -scryptsy@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" - integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== - dependencies: - pbkdf2 "^3.0.3" - -secp256k1@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" - integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== - dependencies: - elliptic "^6.5.4" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -seedrandom@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" - integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== - -semaphore-async-await@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" - integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== - -semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" - integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== - dependencies: - lru-cache "^6.0.0" - -semver@7.x, semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@~7.3.0: - version "7.3.7" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" - integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== - dependencies: - lru-cache "^6.0.0" - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@~5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" - integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== - -send@0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" - integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== - dependencies: - debug "2.6.9" - depd "2.0.0" - destroy "1.2.0" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "2.0.0" - mime "1.6.0" - ms "2.1.3" - on-finished "2.4.1" - range-parser "~1.2.1" - statuses "2.0.1" - -serialize-javascript@6.0.0, serialize-javascript@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== - dependencies: - randombytes "^2.1.0" - -serialize-javascript@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== - dependencies: - randombytes "^2.1.0" - -serve-static@1.15.0: - version "1.15.0" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" - integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.18.0" - -servify@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" - integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== - dependencies: - body-parser "^1.16.0" - cors "^2.8.1" - express "^4.14.0" - request "^2.79.0" - xhr "^2.3.3" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== - -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha.js@^2.4.0, sha.js@^2.4.8: - version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" - integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== - dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== - dependencies: - shebang-regex "^1.0.0" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.3: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-concat@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" - integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== - -simple-get@^2.7.0: - version "2.8.2" - resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" - integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== - dependencies: - decompress-response "^3.3.0" - once "^1.3.1" - simple-concat "^1.0.0" - -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - -size-limit@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-6.0.4.tgz#f3345206d8c25485d0d31ea41622761a3a1aad93" - integrity sha512-zo/9FrXzetvZGFJnd1LC4mR9GvirElALlerMY3EOwEGdW7Lwgl2WT0hTRC2559ZR2PGfRpnXEgAFkayGAJOebg== - dependencies: - bytes-iec "^3.1.1" - chokidar "^3.5.2" - ci-job-number "^1.2.2" - globby "^11.0.4" - lilconfig "^2.0.3" - nanospinner "^0.4.0" - picocolors "^1.0.0" - -slash@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" - integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== - dependencies: - is-fullwidth-code-point "^2.0.0" - -slice-ansi@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" - integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sol-merger@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/sol-merger/-/sol-merger-3.1.0.tgz#547b282a616d106c0fa8869e0a275fd7db0213d8" - integrity sha512-4/JELeFlB8bcyqttRZ7pE/EGpevft9Q7IPjMaKLKMrj1exmdyt+1qSfuSXxueFXRZQxSd21u6DjEedDkOtQ5yQ== - dependencies: - antlr4ts "^0.5.0-alpha.3" - cli-color "^1.4.0" - commander "^4.0.1" - debug "^4.1.1" - fs-extra "^8.0.1" - glob "^7.1.2" - strip-json-comments "^3.0.1" - -solc@0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" - integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - follow-redirects "^1.12.1" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - -solc@^0.4.20: - version "0.4.26" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" - integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - -solc@^0.6.3: - version "0.6.12" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" - integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== - dependencies: - command-exists "^1.2.8" - commander "3.0.2" - fs-extra "^0.30.0" - js-sha3 "0.8.0" - memorystream "^0.3.1" - require-from-string "^2.0.0" - semver "^5.5.0" - tmp "0.0.33" - -source-map-js@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-resolve@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" - integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - -source-map-support@0.5.12: - version "0.5.12" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" - integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.4.15: - version "0.4.18" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" - integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== - dependencies: - source-map "^0.5.6" - -source-map-support@^0.5.13, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6, source-map@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.4" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" - integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== - -sourcemap-codec@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.11" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" - integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== - -sshpk@^1.7.0: - version "1.17.0" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" - integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== - dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" - -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - -stack-utils@^1.0.1: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" - integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== - dependencies: - escape-string-regexp "^2.0.0" - -stack-utils@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -stacktrace-parser@^0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" - integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== - dependencies: - type-fest "^0.7.1" - -standard-engine@^9.0.0, standard-engine@~9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" - integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== - dependencies: - deglob "^2.1.0" - get-stdin "^6.0.0" - minimist "^1.1.0" - pkg-conf "^2.0.0" - -standard@^12.0.1: - version "12.0.1" - resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" - integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== - dependencies: - eslint "~5.4.0" - eslint-config-standard "12.0.0" - eslint-config-standard-jsx "6.0.2" - eslint-plugin-import "~2.14.0" - eslint-plugin-node "~7.0.1" - eslint-plugin-promise "~4.0.0" - eslint-plugin-react "~7.11.1" - eslint-plugin-standard "~4.0.0" - standard-engine "~9.0.0" - -standardx@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/standardx/-/standardx-3.0.0.tgz#98f3e59df3ed51ec2a86a67108e6a00580e03dce" - integrity sha512-Ks1eQAm/wyejwJHvP7/pVMgbscwdgsXQTaJ5K0j9PCEEhU7KQpA8/CgMs+pAdIsblZNMRdHNXtRcmla/Rrg0wg== - dependencies: - standard "^12.0.1" - standard-engine "^9.0.0" - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -stream-to-pull-stream@^1.7.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" - integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== - dependencies: - looper "^3.0.0" - pull-stream "^3.2.3" - -strict-uri-encode@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" - integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== - -string-argv@~0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" - integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== - dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" - -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -string-width@^2.1.0, string-width@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0, string-width@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string.prototype.matchall@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" - integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - get-intrinsic "^1.1.1" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - regexp.prototype.flags "^1.4.1" - side-channel "^1.0.4" - -string.prototype.trim@~1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz#824960787db37a9e24711802ed0c1d1c0254f83e" - integrity sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== - dependencies: - is-utf8 "^0.2.0" - -strip-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-hex-prefix@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" - integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== - dependencies: - is-hex-prefixed "1.0.0" - -strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - -style-loader@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" - integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== - -stylehacks@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" - integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== - dependencies: - browserslist "^4.16.6" - postcss-selector-parser "^6.0.4" - -supports-color@8.1.1, supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" - integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -svgo@^2.7.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - -swarm-js@^0.1.40: - version "0.1.40" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" - integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== - dependencies: - bluebird "^3.5.0" - buffer "^5.0.5" - eth-lib "^0.1.26" - fs-extra "^4.0.2" - got "^7.1.0" - mime-types "^2.1.16" - mkdirp-promise "^5.0.1" - mock-fs "^4.1.0" - setimmediate "^1.0.5" - tar "^4.0.2" - xhr-request "^1.0.1" - -symbol-observable@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" - integrity sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw== - -symbol-tree@^3.2.4: - version "3.2.4" - resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" - integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -table@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" - integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== - dependencies: - ajv "^6.0.1" - ajv-keywords "^3.0.0" - chalk "^2.1.0" - lodash "^4.17.4" - slice-ansi "1.0.0" - string-width "^2.1.1" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" - integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== - -tape@^4.6.3: - version "4.15.1" - resolved "https://registry.yarnpkg.com/tape/-/tape-4.15.1.tgz#88fb662965a11f9be1bddb04c11662d7eceb129e" - integrity sha512-k7F5pyr91n9D/yjSJwbLLYDCrTWXxMSXbbmHX2n334lSIc2rxeXyFkaBv4UuUd2gBYMrAOalPutAiCxC6q1qbw== - dependencies: - call-bind "~1.0.2" - deep-equal "~1.1.1" - defined "~1.0.0" - dotignore "~0.1.2" - for-each "~0.3.3" - glob "~7.2.0" - has "~1.0.3" - inherits "~2.0.4" - is-regex "~1.1.4" - minimist "~1.2.6" - object-inspect "~1.12.0" - resolve "~1.22.0" - resumer "~0.0.0" - string.prototype.trim "~1.2.5" - through "~2.3.8" - -tar@^4.0.2: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== - dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" - -terminal-link@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" - integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -terser-webpack-plugin@^5.1.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" - integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== - dependencies: - "@jridgewell/trace-mapping" "^0.3.7" - jest-worker "^27.4.5" - schema-utils "^3.1.1" - serialize-javascript "^6.0.0" - terser "^5.7.2" - -terser@^4.6.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^5.7.2: - version "5.14.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" - integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -test-value@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" - integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== - dependencies: - array-back "^1.0.3" - typical "^2.6.0" - -testrpc@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" - integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -through2@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" - integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== - dependencies: - readable-stream "~2.3.6" - xtend "~4.0.1" - -through@^2.3.6, through@~2.3.4, through@~2.3.8: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== - -timed-out@^4.0.0, timed-out@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" - integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== - -timers-ext@^0.1.5, timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - -timsort@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== - -tiny-glob@^0.2.6: - version "0.2.9" - resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" - integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== - dependencies: - globalyzer "0.1.0" - globrex "^0.1.2" - -tmp@0.0.33, tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~1.0.2" - -tmp@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" - integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== - dependencies: - rimraf "^2.6.3" - -tmpl@1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== - dependencies: - kind-of "^3.0.2" - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tough-cookie@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" - integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.1.2" - -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -trim-right@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" - integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== - -"true-case-path@^2.2.1": - version "2.2.1" - resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" - integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== - -truffle-plugin-verify@^0.4.0: - version "0.4.6" - resolved "https://registry.yarnpkg.com/truffle-plugin-verify/-/truffle-plugin-verify-0.4.6.tgz#3805c58f68a651905579588a6dda48ab764f7790" - integrity sha512-s+wjeTFThgMET+ZS6GFszpWY8iUe2rp1CT3c4BjFW4lcjauQ9uVSWZElWgAib7ACwmsczKyWiLEPZ8vVSy4hTw== - dependencies: - axios "0.19.2" - cli-logger "0.5.40" - delay "4.3.0" - querystring "0.2.0" - sol-merger "3.1.0" - -ts-command-line-args@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" - integrity sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -ts-essentials@^1.0.0: - version "1.0.4" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" - integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== - -ts-essentials@^6.0.3: - version "6.0.7" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" - integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== - -ts-essentials@^7.0.1: - version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" - integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== - -ts-generator@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" - integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== - dependencies: - "@types/mkdirp" "^0.5.2" - "@types/prettier" "^2.1.1" - "@types/resolve" "^0.0.8" - chalk "^2.4.1" - glob "^7.1.2" - mkdirp "^0.5.1" - prettier "^2.1.2" - resolve "^1.8.1" - ts-essentials "^1.0.0" - -ts-jest@^25.3.1, ts-jest@^27.0.7: - version "27.1.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" - integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== - dependencies: - bs-logger "0.x" - fast-json-stable-stringify "2.x" - jest-util "^27.0.0" - json5 "2.x" - lodash.memoize "4.x" - make-error "1.x" - semver "7.x" - yargs-parser "20.x" - -ts-node@^10.4.0: - version "10.8.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.1.tgz#ea2bd3459011b52699d7e88daa55a45a1af4f066" - integrity sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g== - dependencies: - "@cspotcode/source-map-support" "^0.8.0" - "@tsconfig/node10" "^1.0.7" - "@tsconfig/node12" "^1.0.7" - "@tsconfig/node14" "^1.0.0" - "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - v8-compile-cache-lib "^3.0.1" - yn "3.1.1" - -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tsdx@^0.14.1: - version "0.14.1" - resolved "https://registry.yarnpkg.com/tsdx/-/tsdx-0.14.1.tgz#8771d509b6fc523ad971bae3a63ebe3a88355ab3" - integrity sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w== - dependencies: - "@babel/core" "^7.4.4" - "@babel/helper-module-imports" "^7.0.0" - "@babel/parser" "^7.11.5" - "@babel/plugin-proposal-class-properties" "^7.4.4" - "@babel/preset-env" "^7.11.0" - "@babel/traverse" "^7.11.5" - "@rollup/plugin-babel" "^5.1.0" - "@rollup/plugin-commonjs" "^11.0.0" - "@rollup/plugin-json" "^4.0.0" - "@rollup/plugin-node-resolve" "^9.0.0" - "@rollup/plugin-replace" "^2.2.1" - "@types/jest" "^25.2.1" - "@typescript-eslint/eslint-plugin" "^2.12.0" - "@typescript-eslint/parser" "^2.12.0" - ansi-escapes "^4.2.1" - asyncro "^3.0.0" - babel-eslint "^10.0.3" - babel-plugin-annotate-pure-calls "^0.4.0" - babel-plugin-dev-expression "^0.2.1" - babel-plugin-macros "^2.6.1" - babel-plugin-polyfill-regenerator "^0.0.4" - babel-plugin-transform-rename-import "^2.3.0" - camelcase "^6.0.0" - chalk "^4.0.0" - enquirer "^2.3.4" - eslint "^6.1.0" - eslint-config-prettier "^6.0.0" - eslint-config-react-app "^5.2.1" - eslint-plugin-flowtype "^3.13.0" - eslint-plugin-import "^2.18.2" - eslint-plugin-jsx-a11y "^6.2.3" - eslint-plugin-prettier "^3.1.0" - eslint-plugin-react "^7.14.3" - eslint-plugin-react-hooks "^2.2.0" - execa "^4.0.3" - fs-extra "^9.0.0" - jest "^25.3.0" - jest-watch-typeahead "^0.5.0" - jpjs "^1.2.1" - lodash.merge "^4.6.2" - ora "^4.0.3" - pascal-case "^3.1.1" - prettier "^1.19.1" - progress-estimator "^0.2.2" - regenerator-runtime "^0.13.7" - rollup "^1.32.1" - rollup-plugin-sourcemaps "^0.6.2" - rollup-plugin-terser "^5.1.2" - rollup-plugin-typescript2 "^0.27.3" - sade "^1.4.2" - semver "^7.1.1" - shelljs "^0.8.3" - tiny-glob "^0.2.6" - ts-jest "^25.3.1" - tslib "^1.9.3" - typescript "^3.7.3" - -tslib@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" - integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== - -tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - -tsort@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" - integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== - dependencies: - safe-buffer "^5.0.1" - -tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: - version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" - integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== - -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== - -tweetnacl@^1.0.0, tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.7.1: - version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" - integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -type-is@~1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -type@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" - integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== - -type@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" - integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== - -typechain@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-3.0.0.tgz#d5a47700831f238e43f7429b987b4bb54849b92e" - integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== - dependencies: - command-line-args "^4.0.7" - debug "^4.1.1" - fs-extra "^7.0.0" - js-sha3 "^0.8.0" - lodash "^4.17.15" - ts-essentials "^6.0.3" - ts-generator "^0.1.1" - -typechain@^6.0.2: - version "6.1.0" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-6.1.0.tgz#462a35f555accf870689d1ba5698749108d0ce81" - integrity sha512-GGfkK0p3fUgz8kYxjSS4nKcWXE0Lo+teHTetghousIK5njbNoYNDlwn91QIyD181L3fVqlTvBE0a/q3AZmjNfw== - dependencies: - "@types/prettier" "^2.1.1" - debug "^4.1.1" - fs-extra "^7.0.0" - glob "^7.1.6" - js-sha3 "^0.8.0" - lodash "^4.17.15" - mkdirp "^1.0.4" - prettier "^2.1.2" - ts-command-line-args "^2.2.0" - ts-essentials "^7.0.1" - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== - -typescript@^3.7.3, typescript@^4.4.4, typescript@^4.5.2, typescript@~4.6.3: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -typewise-core@^1.2, typewise-core@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" - integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== - -typewise@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" - integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== - dependencies: - typewise-core "^1.2.0" - -typewiselite@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" - integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== - -typical@^2.6.0, typical@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" - integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -ultron@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" - integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -underscore@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" - integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== - -undici@^5.4.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" - integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -uniq@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" - integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== - -universalify@^0.1.0, universalify@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unorm@^1.3.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" - integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== - -unpipe@1.0.0, unpipe@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== - -url-parse-lax@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" - integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== - dependencies: - prepend-http "^1.0.1" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== - dependencies: - prepend-http "^2.0.0" - -url-set-query@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" - integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== - -url-to-options@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" - integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== - -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" - integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== - dependencies: - punycode "1.3.2" - querystring "0.2.0" - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -utf-8-validate@^5.0.2: - version "5.0.9" - resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" - integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== - dependencies: - node-gyp-build "^4.3.0" - -utf8@3.0.0, utf8@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" - integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== - -util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -util.promisify@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" - integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - for-each "^0.3.3" - has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.1" - -utils-merge@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" - integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== - -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== - -uuid@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" - integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== - -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -v8-compile-cache-lib@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" - integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== - -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - -v8-to-istanbul@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" - integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== - dependencies: - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^1.6.0" - source-map "^0.7.3" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -validator@^13.7.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" - integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== - -varint@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" - integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== - -vary@^1, vary@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== - dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" - integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== - dependencies: - makeerror "1.0.12" - -watchpack@^2.3.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" - integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== - dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== - dependencies: - defaults "^1.0.3" - -web3-bzz@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" - integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== - dependencies: - "@types/node" "^12.12.6" - got "9.6.0" - swarm-js "^0.1.40" - underscore "1.9.1" - -web3-core-helpers@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" - integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.11" - web3-utils "1.2.11" - -web3-core-method@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" - integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-utils "1.2.11" - -web3-core-promievent@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" - integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== - dependencies: - eventemitter3 "4.0.4" - -web3-core-requestmanager@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" - integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.11" - web3-providers-http "1.2.11" - web3-providers-ipc "1.2.11" - web3-providers-ws "1.2.11" - -web3-core-subscriptions@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" - integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-core@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" - integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-requestmanager "1.2.11" - web3-utils "1.2.11" - -web3-eth-abi@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" - integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== - dependencies: - "@ethersproject/abi" "5.0.0-beta.153" - underscore "1.9.1" - web3-utils "1.2.11" - -web3-eth-accounts@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" - integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== - dependencies: - crypto-browserify "3.12.0" - eth-lib "0.2.8" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-js "^3.0.1" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-eth-contract@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" - integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-promievent "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-utils "1.2.11" - -web3-eth-ens@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" - integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== - dependencies: - content-hash "^2.5.2" - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-promievent "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-contract "1.2.11" - web3-utils "1.2.11" - -web3-eth-iban@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" - integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== - dependencies: - bn.js "^4.11.9" - web3-utils "1.2.11" - -web3-eth-personal@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" - integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== - dependencies: - "@types/node" "^12.12.6" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-eth@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" - integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== - dependencies: - underscore "1.9.1" - web3-core "1.2.11" - web3-core-helpers "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-eth-abi "1.2.11" - web3-eth-accounts "1.2.11" - web3-eth-contract "1.2.11" - web3-eth-ens "1.2.11" - web3-eth-iban "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-utils "1.2.11" - -web3-net@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" - integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-utils "1.2.11" - -web3-provider-engine@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" - integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^3.0.0" - eth-json-rpc-infura "^3.1.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - -web3-providers-http@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" - integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== - dependencies: - web3-core-helpers "1.2.11" - xhr2-cookies "1.1.0" - -web3-providers-ipc@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" - integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - -web3-providers-ws@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" - integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.2.11" - websocket "^1.0.31" - -web3-shh@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" - integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== - dependencies: - web3-core "1.2.11" - web3-core-method "1.2.11" - web3-core-subscriptions "1.2.11" - web3-net "1.2.11" - -web3-utils@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== - dependencies: - bn.js "^4.11.9" - eth-lib "0.2.8" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" - -web3-utils@^1.0.0-beta.31: - version "1.7.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.3.tgz#b214d05f124530d8694ad364509ac454d05f207c" - integrity sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg== - dependencies: - bn.js "^4.11.9" - ethereum-bloom-filters "^1.0.6" - ethereumjs-util "^7.1.0" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - utf8 "3.0.0" - -web3@1.2.11: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" - integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== - dependencies: - web3-bzz "1.2.11" - web3-core "1.2.11" - web3-eth "1.2.11" - web3-eth-personal "1.2.11" - web3-net "1.2.11" - web3-shh "1.2.11" - web3-utils "1.2.11" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -webpack-sources@^3.2.3: - version "3.2.3" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" - integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== - -webpack@^5.61.0: - version "5.73.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" - integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== - dependencies: - "@types/eslint-scope" "^3.7.3" - "@types/estree" "^0.0.51" - "@webassemblyjs/ast" "1.11.1" - "@webassemblyjs/wasm-edit" "1.11.1" - "@webassemblyjs/wasm-parser" "1.11.1" - acorn "^8.4.1" - acorn-import-assertions "^1.7.6" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.9.3" - es-module-lexer "^0.9.0" - eslint-scope "5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.9" - json-parse-even-better-errors "^2.3.1" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.1.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.3" - watchpack "^2.3.1" - webpack-sources "^3.2.3" - -websocket@1.0.32: - version "1.0.32" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" - integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -websocket@^1.0.31: - version "1.0.34" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" - integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== - dependencies: - bufferutil "^4.0.1" - debug "^2.2.0" - es5-ext "^0.10.50" - typedarray-to-buffer "^3.1.5" - utf-8-validate "^5.0.2" - yaeti "^0.0.6" - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-fetch@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" - integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -whatwg-url@^8.0.0, whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which-module@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" - integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - -which@2.0.2, which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -window-size@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" - integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== - -word-wrap@~1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== - -wrap-ansi@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" - integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== - dependencies: - string-width "^1.0.1" - strip-ansi "^3.0.1" - -wrap-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" - integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== - dependencies: - string-width "^2.1.1" - strip-ansi "^4.0.0" - -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -write@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" - integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== - dependencies: - mkdirp "^0.5.1" - -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA== - dependencies: - mkdirp "^0.5.1" - -ws@7.4.6: - version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" - integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== - -ws@^3.0.0: - version "3.3.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" - integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== - dependencies: - async-limiter "~1.0.0" - safe-buffer "~5.1.0" - ultron "~1.1.0" - -ws@^5.1.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" - integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== - dependencies: - async-limiter "~1.0.0" - -ws@^7.4.6: - version "7.5.8" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" - integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== - -xhr-request-promise@^0.1.2: - version "0.1.3" - resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" - integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== - dependencies: - xhr-request "^1.1.0" - -xhr-request@^1.0.1, xhr-request@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" - integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== - dependencies: - buffer-to-arraybuffer "^0.0.5" - object-assign "^4.1.1" - query-string "^5.0.1" - simple-get "^2.7.0" - timed-out "^4.0.1" - url-set-query "^1.0.0" - xhr "^2.0.4" - -xhr2-cookies@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" - integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== - dependencies: - cookiejar "^2.1.1" - -xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.6.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" - integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== - dependencies: - global "~4.4.0" - is-function "^1.0.1" - parse-headers "^2.0.0" - xtend "^4.0.0" - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== - -xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" - integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== - -xtend@~2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" - integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== - dependencies: - object-keys "~0.4.0" - -y18n@^3.2.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" - integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - -yaeti@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" - integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== - -yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.2, yaml@^1.7.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@20.x, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs-parser@^13.1.0: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" - integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== - dependencies: - camelcase "^3.0.0" - lodash.assign "^4.0.6" - -yargs-unparser@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" - integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== - dependencies: - camelcase "^6.0.0" - decamelize "^4.0.0" - flat "^5.0.2" - is-plain-obj "^2.1.0" - -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" - -yargs@16.2.0, yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^4.7.1: - version "4.8.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" - integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== - dependencies: - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - lodash.assign "^4.0.3" - os-locale "^1.4.0" - read-pkg-up "^1.0.1" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^1.0.1" - which-module "^1.0.0" - window-size "^0.2.0" - y18n "^3.2.1" - yargs-parser "^2.4.1" - -yarn@^1.22.5: - version "1.22.19" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" - integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== - -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -z-schema@~5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.3.tgz#68fafb9b735fc7f3c89eabb3e5a6353b4d7b4935" - integrity sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw== - dependencies: - lodash.get "^4.4.2" - lodash.isequal "^4.5.0" - validator "^13.7.0" - optionalDependencies: - commander "^2.20.3" From 34f6ea88b75629cbbf12346a0d55217d676ccf19 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 02:19:11 -0400 Subject: [PATCH 006/125] new commit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eb2e62c..a73ef7d 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,7 @@ ], "devDependencies": { "@0xsequence/sstore2": "github:0xsequence/sstore2", - "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#af9a3f638d8084d96cbf6898c035920544647879", + "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c", "@beehiveinnovation/rain-statusfi": "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", From 984dcc3d6b4bc0c69a7dac788e830e57187f9e4b Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 12:42:47 -0400 Subject: [PATCH 007/125] remove 0xsequence/sstore2 dep --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index a73ef7d..09c3637 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ } ], "devDependencies": { - "@0xsequence/sstore2": "github:0xsequence/sstore2", "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c", "@beehiveinnovation/rain-statusfi": "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258", "@microsoft/api-extractor": "^7.22.2", From ee3f54365bafbe7945a39a24388ded1d6bbfcaf9 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 13:33:43 -0400 Subject: [PATCH 008/125] removing old contracts --- package.json | 2 - shell.nix | 3 - yarn.lock | 14872 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 14872 insertions(+), 5 deletions(-) create mode 100644 yarn.lock diff --git a/package.json b/package.json index 09c3637..01c15ad 100644 --- a/package.json +++ b/package.json @@ -50,7 +50,6 @@ ], "devDependencies": { "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c", - "@beehiveinnovation/rain-statusfi": "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", "@nomiclabs/hardhat-waffle": "^2.0.1", @@ -61,7 +60,6 @@ "@types/chai": "^4.2.22", "@types/mocha": "^9.0.0", "@types/node": "^16.11.11", - "@vishalkale15107/rain-protocol": "git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b", "chai": "^4.3.4", "ethereum-waffle": "^3.4.0", "hardhat": "^2.7.0", diff --git a/shell.nix b/shell.nix index 693e0d7..7326a24 100644 --- a/shell.nix +++ b/shell.nix @@ -31,9 +31,6 @@ let copy-contracts = pkgs.writeShellScriptBin "copy-contracts" '' mkdir -p contracts && cp -r node_modules/@beehiveinnovation/rain-protocol/contracts . - mkdir -p contracts/rain-statusfi && cp node_modules/@beehiveinnovation/rain-statusfi/contracts/*.sol contracts/rain-statusfi - mkdir -p contracts/tier && cp node_modules/@vishalkale15107/rain-protocol/contracts/tier/ERC721BalanceTier*.sol contracts/tier - mkdir -p contracts/test && cp node_modules/@vishalkale15107/rain-protocol/contracts/test/ReserveNFT.sol contracts/test hardhat compile --no-typechain ''; diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..ec600d7 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,14872 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" + integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== + +"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.8.0": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" + integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helpers" "^7.18.2" + "@babel/parser" "^7.18.5" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.5" + "@babel/types" "^7.18.4" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" + integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== + dependencies: + "@babel/types" "^7.18.2" + "@jridgewell/gen-mapping" "^0.3.0" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" + integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" + integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-validator-option" "^7.16.7" + browserslist "^4.20.2" + semver "^6.3.0" + +"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" + integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + +"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" + integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + regexpu-core "^5.0.1" + +"@babel/helper-define-polyfill-provider@^0.0.3": + version "0.0.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz#df9da66285b884ce66417abdd0b6ca91198149bd" + integrity sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ== + dependencies: + "@babel/helper-compilation-targets" "^7.10.4" + "@babel/helper-module-imports" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/traverse" "^7.11.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-define-polyfill-provider@^0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz#52411b445bdb2e676869e5a74960d2d3826d2665" + integrity sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA== + dependencies: + "@babel/helper-compilation-targets" "^7.13.0" + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/traverse" "^7.13.0" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" + integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== + +"@babel/helper-explode-assignable-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" + integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": + version "7.17.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" + integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/types" "^7.17.0" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-member-expression-to-functions@^7.17.7": + version "7.17.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" + integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== + dependencies: + "@babel/types" "^7.17.0" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-module-transforms@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" + integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.0" + "@babel/types" "^7.18.0" + +"@babel/helper-optimise-call-expression@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" + integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" + integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== + +"@babel/helper-remap-async-to-generator@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" + integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-wrap-function" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" + integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== + dependencies: + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-member-expression-to-functions" "^7.17.7" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" + integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== + dependencies: + "@babel/types" "^7.18.2" + +"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" + integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== + dependencies: + "@babel/types" "^7.16.0" + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== + +"@babel/helper-validator-option@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" + integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== + +"@babel/helper-wrap-function@^7.16.8": + version "7.16.8" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" + integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== + dependencies: + "@babel/helper-function-name" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.16.8" + "@babel/types" "^7.16.8" + +"@babel/helpers@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" + integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.18.2" + "@babel/types" "^7.18.2" + +"@babel/highlight@^7.16.7": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" + integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5", "@babel/parser@^7.7.0": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" + integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" + integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" + integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + +"@babel/plugin-proposal-async-generator-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" + integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" + integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-class-static-block@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" + integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" + integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" + integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" + integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" + integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" + integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" + integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" + integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.17.12" + +"@babel/plugin-proposal-optional-catch-binding@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" + integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" + integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" + integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-proposal-private-property-in-object@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" + integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-create-class-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" + integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" + integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" + integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-arrow-functions@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" + integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-async-to-generator@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" + integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-remap-async-to-generator" "^7.16.8" + +"@babel/plugin-transform-block-scoped-functions@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" + integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-block-scoping@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" + integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-classes@^7.17.12": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" + integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-optimise-call-expression" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-replace-supers" "^7.18.2" + "@babel/helper-split-export-declaration" "^7.16.7" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" + integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-destructuring@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" + integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" + integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-duplicate-keys@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" + integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-exponentiation-operator@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" + integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-for-of@^7.18.1": + version "7.18.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" + integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" + integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== + dependencies: + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-literals@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" + integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-member-expression-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" + integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-modules-amd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" + integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" + integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-simple-access" "^7.18.2" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.18.0": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" + integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== + dependencies: + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-identifier" "^7.16.7" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" + integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== + dependencies: + "@babel/helper-module-transforms" "^7.18.0" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" + integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.17.12" + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-new-target@^7.17.12": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" + integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-object-super@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" + integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-replace-supers" "^7.16.7" + +"@babel/plugin-transform-parameters@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" + integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-property-literals@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" + integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-regenerator@^7.18.0": + version "7.18.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" + integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + regenerator-transform "^0.15.0" + +"@babel/plugin-transform-reserved-words@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" + integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-runtime@^7.5.5": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743" + integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA== + dependencies: + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.17.12" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" + integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-spread@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" + integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + +"@babel/plugin-transform-sticky-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" + integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-template-literals@^7.18.2": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" + integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-typeof-symbol@^7.17.12": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" + integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== + dependencies: + "@babel/helper-plugin-utils" "^7.17.12" + +"@babel/plugin-transform-unicode-escapes@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" + integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== + dependencies: + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/plugin-transform-unicode-regex@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" + integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + +"@babel/preset-env@^7.11.0": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" + integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== + dependencies: + "@babel/compat-data" "^7.17.10" + "@babel/helper-compilation-targets" "^7.18.2" + "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-validator-option" "^7.16.7" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-async-generator-functions" "^7.17.12" + "@babel/plugin-proposal-class-properties" "^7.17.12" + "@babel/plugin-proposal-class-static-block" "^7.18.0" + "@babel/plugin-proposal-dynamic-import" "^7.16.7" + "@babel/plugin-proposal-export-namespace-from" "^7.17.12" + "@babel/plugin-proposal-json-strings" "^7.17.12" + "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" + "@babel/plugin-proposal-numeric-separator" "^7.16.7" + "@babel/plugin-proposal-object-rest-spread" "^7.18.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" + "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/plugin-proposal-private-methods" "^7.17.12" + "@babel/plugin-proposal-private-property-in-object" "^7.17.12" + "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.17.12" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-transform-arrow-functions" "^7.17.12" + "@babel/plugin-transform-async-to-generator" "^7.17.12" + "@babel/plugin-transform-block-scoped-functions" "^7.16.7" + "@babel/plugin-transform-block-scoping" "^7.17.12" + "@babel/plugin-transform-classes" "^7.17.12" + "@babel/plugin-transform-computed-properties" "^7.17.12" + "@babel/plugin-transform-destructuring" "^7.18.0" + "@babel/plugin-transform-dotall-regex" "^7.16.7" + "@babel/plugin-transform-duplicate-keys" "^7.17.12" + "@babel/plugin-transform-exponentiation-operator" "^7.16.7" + "@babel/plugin-transform-for-of" "^7.18.1" + "@babel/plugin-transform-function-name" "^7.16.7" + "@babel/plugin-transform-literals" "^7.17.12" + "@babel/plugin-transform-member-expression-literals" "^7.16.7" + "@babel/plugin-transform-modules-amd" "^7.18.0" + "@babel/plugin-transform-modules-commonjs" "^7.18.2" + "@babel/plugin-transform-modules-systemjs" "^7.18.0" + "@babel/plugin-transform-modules-umd" "^7.18.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" + "@babel/plugin-transform-new-target" "^7.17.12" + "@babel/plugin-transform-object-super" "^7.16.7" + "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-property-literals" "^7.16.7" + "@babel/plugin-transform-regenerator" "^7.18.0" + "@babel/plugin-transform-reserved-words" "^7.17.12" + "@babel/plugin-transform-shorthand-properties" "^7.16.7" + "@babel/plugin-transform-spread" "^7.17.12" + "@babel/plugin-transform-sticky-regex" "^7.16.7" + "@babel/plugin-transform-template-literals" "^7.18.2" + "@babel/plugin-transform-typeof-symbol" "^7.17.12" + "@babel/plugin-transform-unicode-escapes" "^7.16.7" + "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.2" + babel-plugin-polyfill-corejs2 "^0.3.0" + babel-plugin-polyfill-corejs3 "^0.5.0" + babel-plugin-polyfill-regenerator "^0.3.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.5" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" + integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime-corejs3@^7.10.2": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" + integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== + dependencies: + core-js-pure "^3.20.2" + regenerator-runtime "^0.13.4" + +"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.18.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" + integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.16.7", "@babel/template@^7.3.3": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + +"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" + integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.18.2" + "@babel/helper-environment-visitor" "^7.18.2" + "@babel/helper-function-name" "^7.17.9" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.18.5" + "@babel/types" "^7.18.4" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.18.4" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" + integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@beehiveinnovation/balancer-core@0.0.7": + version "0.0.7" + resolved "https://registry.yarnpkg.com/@beehiveinnovation/balancer-core/-/balancer-core-0.0.7.tgz#4e2d3c7d2d27c26051e6153444df028568067886" + integrity sha512-BvaST8WKnaMKus4B7bii+3pQkV2o1dJ/O0ibrjOsHSGKMruDGpe7rp8UFqjfQCmtIVohIRGX0eXyDrUiXNCX0Q== + dependencies: + decimal.js "^10.2.0" + ganache-cli "^6.7.0" + global "^4.4.0" + +"@beehiveinnovation/configurable-rights-pool@0.0.1": + version "0.0.1" + resolved "https://registry.yarnpkg.com/@beehiveinnovation/configurable-rights-pool/-/configurable-rights-pool-0.0.1.tgz#e7c2a4a80771636703be2a34e51fccf1fc2a0373" + integrity sha512-12lNX2I7STxYpHhdgnvrp6mHQh7iDD4ZMnTpEL0/rHt4KUfeexRCXReVCH5jWmmaVEmyLe7+197wzukllUaW4w== + dependencies: + "@truffle/hdwallet-provider" "^1.0.43" + decimal.js "^10.2.0" + dotenv "^8.2.0" + ethers "^4.0.40" + ganache-cli "^6.7.0" + truffle-plugin-verify "^0.4.0" + yarn "^1.22.5" + +"@beehiveinnovation/rain-protocol@beehive-innovation/rain-protocol#develop": + version "0.0.16" + resolved "https://codeload.github.com/beehive-innovation/rain-protocol/tar.gz/760e43f0ccc6b51b858c09e3e64f4409d09d1d4f" + dependencies: + "@beehiveinnovation/balancer-core" "0.0.7" + "@beehiveinnovation/configurable-rights-pool" "0.0.1" + "@openzeppelin/contracts" "^4.3.3" + "@openzeppelin/contracts-upgradeable" "^4.4.1" + +"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c": + version "0.0.16" + resolved "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c" + dependencies: + "@openzeppelin/contracts" "^4.3.3" + "@openzeppelin/contracts-upgradeable" "^4.4.1" + +"@beehiveinnovation/rain-statusfi@git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258": + version "0.0.1" + resolved "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258" + dependencies: + "@beehiveinnovation/rain-protocol" beehive-innovation/rain-protocol#develop + "@openzeppelin/contracts" "^4.4.2" + "@openzeppelin/contracts-upgradeable" "^4.4.2" + base64-sol "^1.1.0" + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@discoveryjs/json-ext@^0.5.5": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@discoveryjs/natural-compare@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@discoveryjs/natural-compare/-/natural-compare-1.0.0.tgz#4dbb2f31128e532ec2242220cff614bd53f52fe3" + integrity sha512-Pq35vJMxLZq4whZhyaMGO/89mmFee2+6NojaXD2bNo+7CxI6P7C1tncgQ0CM60+WueRMr8uFDKSX/8KitImCQg== + +"@ensdomains/ens@^0.4.4": + version "0.4.5" + resolved "https://registry.yarnpkg.com/@ensdomains/ens/-/ens-0.4.5.tgz#e0aebc005afdc066447c6e22feb4eda89a5edbfc" + integrity sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw== + dependencies: + bluebird "^3.5.2" + eth-ens-namehash "^2.0.8" + solc "^0.4.20" + testrpc "0.0.1" + web3-utils "^1.0.0-beta.31" + +"@ensdomains/resolver@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" + integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== + +"@ethereum-waffle/chai@^3.4.4": + version "3.4.4" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.4.4.tgz#16c4cc877df31b035d6d92486dfdf983df9138ff" + integrity sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g== + dependencies: + "@ethereum-waffle/provider" "^3.4.4" + ethers "^5.5.2" + +"@ethereum-waffle/compiler@^3.4.4": + version "3.4.4" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz#d568ee0f6029e68b5c645506079fbf67d0dfcf19" + integrity sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ== + dependencies: + "@resolver-engine/imports" "^0.3.3" + "@resolver-engine/imports-fs" "^0.3.3" + "@typechain/ethers-v5" "^2.0.0" + "@types/mkdirp" "^0.5.2" + "@types/node-fetch" "^2.5.5" + ethers "^5.0.1" + mkdirp "^0.5.1" + node-fetch "^2.6.1" + solc "^0.6.3" + ts-generator "^0.1.1" + typechain "^3.0.0" + +"@ethereum-waffle/ens@^3.4.4": + version "3.4.4" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.4.4.tgz#db97ea2c9decbb70b9205d53de2ccbd6f3182ba1" + integrity sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg== + dependencies: + "@ensdomains/ens" "^0.4.4" + "@ensdomains/resolver" "^0.2.4" + ethers "^5.5.2" + +"@ethereum-waffle/mock-contract@^3.4.4": + version "3.4.4" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz#fc6ffa18813546f4950a69f5892d4dd54b2c685a" + integrity sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA== + dependencies: + "@ethersproject/abi" "^5.5.0" + ethers "^5.5.2" + +"@ethereum-waffle/provider@^3.4.4": + version "3.4.4" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.4.4.tgz#398fc1f7eb91cc2df7d011272eacba8af0c7fffb" + integrity sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g== + dependencies: + "@ethereum-waffle/ens" "^3.4.4" + ethers "^5.5.2" + ganache-core "^2.13.2" + patch-package "^6.2.2" + postinstall-postinstall "^2.1.0" + +"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2": + version "3.6.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" + integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== + dependencies: + "@ethereumjs/common" "^2.6.3" + "@ethereumjs/tx" "^3.5.1" + ethereumjs-util "^7.1.4" + merkle-patricia-tree "^4.2.4" + +"@ethereumjs/blockchain@^5.5.2", "@ethereumjs/blockchain@^5.5.3": + version "5.5.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz#aa49a6a04789da6b66b5bcbb0d0b98efc369f640" + integrity sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/ethash" "^1.1.0" + debug "^4.3.3" + ethereumjs-util "^7.1.5" + level-mem "^5.0.1" + lru-cache "^5.1.1" + semaphore-async-await "^1.5.1" + +"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": + version "2.6.4" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" + integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== + dependencies: + crc-32 "^1.2.0" + ethereumjs-util "^7.1.4" + +"@ethereumjs/ethash@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/ethash/-/ethash-1.1.0.tgz#7c5918ffcaa9cb9c1dc7d12f77ef038c11fb83fb" + integrity sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA== + dependencies: + "@ethereumjs/block" "^3.5.0" + "@types/levelup" "^4.3.0" + buffer-xor "^2.0.1" + ethereumjs-util "^7.1.1" + miller-rabin "^4.0.0" + +"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" + integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== + dependencies: + "@ethereumjs/common" "^2.6.4" + ethereumjs-util "^7.1.5" + +"@ethereumjs/vm@^5.9.0": + version "5.9.2" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.2.tgz#e707976d507793096e449a87f0b204f614421cee" + integrity sha512-6zvH7iuMI7+74aGak6j9+GDYpV2T08vy2FL4iSK1PId7lNyjFELCAzDCSTQcVoyPoRMkZvRHy79W+djwvguMCA== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/blockchain" "^5.5.3" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/tx" "^3.5.2" + async-eventemitter "^0.2.4" + core-js-pure "^3.0.1" + debug "^4.3.3" + ethereumjs-util "^7.1.5" + functional-red-black-tree "^1.0.1" + mcl-wasm "^0.7.1" + merkle-patricia-tree "^4.2.4" + rustbn.js "~0.2.0" + +"@ethersproject/abi@5.0.0-beta.153": + version "5.0.0-beta.153" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" + integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== + dependencies: + "@ethersproject/address" ">=5.0.0-beta.128" + "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/constants" ">=5.0.0-beta.128" + "@ethersproject/hash" ">=5.0.0-beta.128" + "@ethersproject/keccak256" ">=5.0.0-beta.127" + "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/properties" ">=5.0.0-beta.131" + "@ethersproject/strings" ">=5.0.0-beta.130" + +"@ethersproject/abi@5.6.4", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.6.3": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.6.4.tgz#f6e01b6ed391a505932698ecc0d9e7a99ee60362" + integrity sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" + integrity sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.3" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" + +"@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" + integrity sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/address@5.6.1", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + +"@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" + integrity sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + +"@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" + integrity sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + +"@ethersproject/bignumber@5.6.2", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.6.2.tgz#72a0717d6163fab44c47bcc82e0c550ac0315d66" + integrity sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" + integrity sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/constants@5.6.1", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" + integrity sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + +"@ethersproject/contracts@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" + integrity sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g== + dependencies: + "@ethersproject/abi" "^5.6.3" + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/transactions" "^5.6.2" + +"@ethersproject/hash@5.6.1", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.6.1.tgz#224572ea4de257f05b4abf8ae58b03a67e99b0f4" + integrity sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" + integrity sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" + +"@ethersproject/json-wallets@5.6.1", "@ethersproject/json-wallets@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz#3f06ba555c9c0d7da46756a12ac53483fe18dd91" + integrity sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ== + dependencies: + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/pbkdf2" "^5.6.1" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.6.1", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.6.1.tgz#b867167c9b50ba1b1a92bccdd4f2d6bd168a91cc" + integrity sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" + integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== + +"@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": + version "5.6.4" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" + integrity sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" + integrity sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + +"@ethersproject/properties@5.6.0", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.6.0": + version "5.6.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.6.0.tgz#38904651713bc6bdd5bdd1b0a4287ecda920fa04" + integrity sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg== + dependencies: + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/providers@5.6.8": + version "5.6.8" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" + integrity sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/base64" "^5.6.1" + "@ethersproject/basex" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/networks" "^5.6.3" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/web" "^5.6.1" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/random@5.6.1", "@ethersproject/random@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.6.1.tgz#66915943981bcd3e11bbd43733f5c3ba5a790255" + integrity sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/rlp@5.6.1", "@ethersproject/rlp@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.6.1.tgz#df8311e6f9f24dcb03d59a2bac457a28a4fe2bd8" + integrity sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" + integrity sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.6.2", "@ethersproject/signing-key@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.6.2.tgz#8a51b111e4d62e5a62aee1da1e088d12de0614a3" + integrity sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + +"@ethersproject/solidity@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" + integrity sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/sha2" "^5.6.1" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/strings@5.6.1", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.6.1.tgz#dbc1b7f901db822b5cafd4ebf01ca93c373f8952" + integrity sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" + integrity sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q== + dependencies: + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + +"@ethersproject/units@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" + integrity sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/constants" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + +"@ethersproject/wallet@5.6.2": + version "5.6.2" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.6.2.tgz#cd61429d1e934681e413f4bc847a5f2f87e3a03c" + integrity sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg== + dependencies: + "@ethersproject/abstract-provider" "^5.6.1" + "@ethersproject/abstract-signer" "^5.6.2" + "@ethersproject/address" "^5.6.1" + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/hdnode" "^5.6.2" + "@ethersproject/json-wallets" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/random" "^5.6.1" + "@ethersproject/signing-key" "^5.6.2" + "@ethersproject/transactions" "^5.6.2" + "@ethersproject/wordlists" "^5.6.1" + +"@ethersproject/web@5.6.1", "@ethersproject/web@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.6.1.tgz#6e2bd3ebadd033e6fe57d072db2b69ad2c9bdf5d" + integrity sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA== + dependencies: + "@ethersproject/base64" "^5.6.1" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" + integrity sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw== + dependencies: + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/hash" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/properties" "^5.6.0" + "@ethersproject/strings" "^5.6.1" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.5.0.tgz#770800799d510f37329c508a9edd0b7b447d9abb" + integrity sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + jest-message-util "^25.5.0" + jest-util "^25.5.0" + slash "^3.0.0" + +"@jest/console@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" + integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + +"@jest/core@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" + integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/reporters" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.8.1" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^27.5.1" + jest-config "^27.5.1" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-resolve-dependencies "^27.5.1" + jest-runner "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + jest-watcher "^27.5.1" + micromatch "^4.0.4" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" + integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== + dependencies: + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + +"@jest/fake-timers@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" + integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== + dependencies: + "@jest/types" "^27.5.1" + "@sinonjs/fake-timers" "^8.0.1" + "@types/node" "*" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +"@jest/globals@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" + integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/types" "^27.5.1" + expect "^27.5.1" + +"@jest/reporters@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" + integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.2" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-haste-map "^27.5.1" + jest-resolve "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + slash "^3.0.0" + source-map "^0.6.0" + string-length "^4.0.1" + terminal-link "^2.0.0" + v8-to-istanbul "^8.1.0" + +"@jest/source-map@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" + integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== + dependencies: + callsites "^3.0.0" + graceful-fs "^4.2.9" + source-map "^0.6.0" + +"@jest/test-result@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.5.0.tgz#139a043230cdeffe9ba2d8341b27f2efc77ce87c" + integrity sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A== + dependencies: + "@jest/console" "^25.5.0" + "@jest/types" "^25.5.0" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-result@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" + integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== + dependencies: + "@jest/console" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" + integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== + dependencies: + "@jest/test-result" "^27.5.1" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-runtime "^27.5.1" + +"@jest/transform@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" + integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== + dependencies: + "@babel/core" "^7.1.0" + "@jest/types" "^27.5.1" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-regex-util "^27.5.1" + jest-util "^27.5.1" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + source-map "^0.6.1" + write-file-atomic "^3.0.0" + +"@jest/types@^25.5.0": + version "25.5.0" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.5.0.tgz#4d6a4793f7b9599fc3680877b856a97dbccf2a9d" + integrity sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^1.1.1" + "@types/yargs" "^15.0.0" + chalk "^3.0.0" + +"@jest/types@^27.5.1": + version "27.5.1" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" + integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" + integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.0.3": + version "3.0.7" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" + integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + +"@jridgewell/set-array@^1.0.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" + integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== + +"@jridgewell/source-map@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" + integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.4.13" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" + integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@microsoft/api-extractor-model@7.18.2", "@microsoft/api-extractor-model@^7.0.28": + version "7.18.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.18.2.tgz#def74be8bc785beb9a6f52a0a4c0b9f8f782e587" + integrity sha512-m7MCvJrudnWyE4iuRhdmgJTdTkYLw+yN/XUp3y9sxicu5/mNdg8y4pflaM82ZbLakhfGreMlB/XgjvyGbLHwkA== + dependencies: + "@microsoft/tsdoc" "0.14.1" + "@microsoft/tsdoc-config" "~0.16.1" + "@rushstack/node-core-library" "3.45.7" + +"@microsoft/api-extractor@^7.22.2": + version "7.25.2" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.25.2.tgz#365639ad7409dcc1ccdfdd9ba35db99592a41531" + integrity sha512-ITuiZqMszZE38dGqavkFFIAW/GQGfkk8ahgBqVj3j1qD4wioPTRlSidhQDCezExAhrMt/bTkuZ3woLeR0uiSsg== + dependencies: + "@microsoft/api-extractor-model" "7.18.2" + "@microsoft/tsdoc" "0.14.1" + "@microsoft/tsdoc-config" "~0.16.1" + "@rushstack/node-core-library" "3.45.7" + "@rushstack/rig-package" "0.3.12" + "@rushstack/ts-command-line" "4.11.1" + colors "~1.2.1" + lodash "~4.17.15" + resolve "~1.17.0" + semver "~7.3.0" + source-map "~0.6.1" + typescript "~4.6.3" + +"@microsoft/tsdoc-config@~0.16.1": + version "0.16.1" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz#4de11976c1202854c4618f364bf499b4be33e657" + integrity sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ== + dependencies: + "@microsoft/tsdoc" "0.14.1" + ajv "~6.12.6" + jju "~1.4.0" + resolve "~1.19.0" + +"@microsoft/tsdoc@0.14.1": + version "0.14.1" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz#155ef21065427901994e765da8a0ba0eaae8b8bd" + integrity sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw== + +"@microsoft/tsdoc@^0.12.8": + version "0.12.24" + resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz#30728e34ebc90351dd3aff4e18d038eed2c3e098" + integrity sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomiclabs/hardhat-ethers@^2.0.3": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.6.tgz#1c695263d5b46a375dcda48c248c4fba9dfe2fc2" + integrity sha512-q2Cjp20IB48rEn2NPjR1qxsIQBvFVYW9rFRCFq+bC4RUrn1Ljz3g4wM8uSlgIBZYBi2JMXxmOzFqHraczxq4Ng== + +"@nomiclabs/hardhat-waffle@^2.0.1": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1" + integrity sha512-049PHSnI1CZq6+XTbrMbMv5NaL7cednTfPenx02k3cEh8wBMLa6ys++dBETJa6JjfwgA9nBhhHQ173LJv6k2Pg== + dependencies: + "@types/sinon-chai" "^3.2.3" + "@types/web3" "1.0.19" + +"@oclif/command@^1.5.10": + version "1.8.16" + resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" + integrity sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w== + dependencies: + "@oclif/config" "^1.18.2" + "@oclif/errors" "^1.3.5" + "@oclif/help" "^1.0.1" + "@oclif/parser" "^3.8.6" + debug "^4.1.1" + semver "^7.3.2" + +"@oclif/config@1.18.2": + version "1.18.2" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.2.tgz#5bfe74a9ba6a8ca3dceb314a81bd9ce2e15ebbfe" + integrity sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA== + dependencies: + "@oclif/errors" "^1.3.3" + "@oclif/parser" "^3.8.0" + debug "^4.1.1" + globby "^11.0.1" + is-wsl "^2.1.1" + tslib "^2.0.0" + +"@oclif/config@^1.12.8", "@oclif/config@^1.18.2": + version "1.18.3" + resolved "https://registry.yarnpkg.com/@oclif/config/-/config-1.18.3.tgz#ddfc144fdab66b1658c2f1b3478fa7fbfd317e79" + integrity sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA== + dependencies: + "@oclif/errors" "^1.3.5" + "@oclif/parser" "^3.8.0" + debug "^4.1.1" + globby "^11.0.1" + is-wsl "^2.1.1" + tslib "^2.3.1" + +"@oclif/errors@1.3.5", "@oclif/errors@^1.3.3", "@oclif/errors@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@oclif/errors/-/errors-1.3.5.tgz#a1e9694dbeccab10fe2fe15acb7113991bed636c" + integrity sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ== + dependencies: + clean-stack "^3.0.0" + fs-extra "^8.1" + indent-string "^4.0.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +"@oclif/help@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@oclif/help/-/help-1.0.1.tgz#fd96a3dd9fb2314479e6c8584c91b63754a7dff5" + integrity sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw== + dependencies: + "@oclif/config" "1.18.2" + "@oclif/errors" "1.3.5" + chalk "^4.1.2" + indent-string "^4.0.0" + lodash "^4.17.21" + string-width "^4.2.0" + strip-ansi "^6.0.0" + widest-line "^3.1.0" + wrap-ansi "^6.2.0" + +"@oclif/linewrap@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@oclif/linewrap/-/linewrap-1.0.0.tgz#aedcb64b479d4db7be24196384897b5000901d91" + integrity sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw== + +"@oclif/parser@^3.8.0", "@oclif/parser@^3.8.6": + version "3.8.7" + resolved "https://registry.yarnpkg.com/@oclif/parser/-/parser-3.8.7.tgz#236d48db05d0b00157d3b42d31f9dac7550d2a7c" + integrity sha512-b11xBmIUK+LuuwVGJpFs4LwQN2xj2cBWj2c4z1FtiXGrJ85h9xV6q+k136Hw0tGg1jQoRXuvuBnqQ7es7vO9/Q== + dependencies: + "@oclif/errors" "^1.3.5" + "@oclif/linewrap" "^1.0.0" + chalk "^4.1.0" + tslib "^2.3.1" + +"@openzeppelin/contracts-upgradeable@^4.4.1", "@openzeppelin/contracts-upgradeable@^4.4.2": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz#1bf55f230f008554d4c6fe25eb165b85112108b0" + integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== + +"@openzeppelin/contracts@^4.3.3", "@openzeppelin/contracts@^4.4.2": + version "4.6.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" + integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== + +"@princjef/api-documenter@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@princjef/api-documenter/-/api-documenter-1.0.2.tgz#06ee97f1c7617ea9798c96f004be43d1d4d6b8e2" + integrity sha512-jZiOVphVt46z3FYbIWRJdRcgDaF6zjj1TSt6yJZdnZ1w0WYW93EeyjElS7HqLs911snsnvLf7nRFHgxfxLewjQ== + dependencies: + "@microsoft/api-extractor-model" "^7.0.28" + "@microsoft/tsdoc" "^0.12.8" + "@oclif/command" "^1.5.10" + "@oclif/config" "^1.12.8" + fs-extra "^7.0.1" + +"@resolver-engine/core@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" + integrity sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ== + dependencies: + debug "^3.1.0" + is-url "^1.2.4" + request "^2.85.0" + +"@resolver-engine/fs@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@resolver-engine/fs/-/fs-0.3.3.tgz#fbf83fa0c4f60154a82c817d2fe3f3b0c049a973" + integrity sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ== + dependencies: + "@resolver-engine/core" "^0.3.3" + debug "^3.1.0" + +"@resolver-engine/imports-fs@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz#4085db4b8d3c03feb7a425fbfcf5325c0d1e6c1b" + integrity sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA== + dependencies: + "@resolver-engine/fs" "^0.3.3" + "@resolver-engine/imports" "^0.3.3" + debug "^3.1.0" + +"@resolver-engine/imports@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@resolver-engine/imports/-/imports-0.3.3.tgz#badfb513bb3ff3c1ee9fd56073e3144245588bcc" + integrity sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q== + dependencies: + "@resolver-engine/core" "^0.3.3" + debug "^3.1.0" + hosted-git-info "^2.6.0" + path-browserify "^1.0.0" + url "^0.11.0" + +"@rollup/plugin-babel@^5.1.0": + version "5.3.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283" + integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q== + dependencies: + "@babel/helper-module-imports" "^7.10.4" + "@rollup/pluginutils" "^3.1.0" + +"@rollup/plugin-commonjs@^11.0.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" + integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-json@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz#39bd0034ce9126b39c1699695f440b4b7d2b62e6" + integrity sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.17.0" + +"@rollup/plugin-replace@^2.2.1": + version "2.4.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" + integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + magic-string "^0.25.7" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.0.9", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@rushstack/node-core-library@3.45.7": + version "3.45.7" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.7.tgz#e959820a6db067c278c20df51503e2bc422e9349" + integrity sha512-DHfOvgPrm9X4uILlUfGgiqcobe5QGNDmqqYLM8dJ5M5fqQ9H5GwyUwBnFeRsxBo0b75RE83l41Oze+gdHKvKaA== + dependencies: + "@types/node" "12.20.24" + colors "~1.2.1" + fs-extra "~7.0.1" + import-lazy "~4.0.0" + jju "~1.4.0" + resolve "~1.17.0" + semver "~7.3.0" + timsort "~0.3.0" + z-schema "~5.0.2" + +"@rushstack/rig-package@0.3.12": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz#6bf2d45374ba665902bf31ec0c6e5dad55ba1b73" + integrity sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg== + dependencies: + resolve "~1.17.0" + strip-json-comments "~3.1.1" + +"@rushstack/ts-command-line@4.11.1": + version "4.11.1" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.1.tgz#10b80960ddaed685445289807c75743e4ef0b5e9" + integrity sha512-Xo8LaQOXlNSfp+qIuIPb1tfX7b4H21ksqiMo/HbeZI5AX1klHMqKjWcEs0AqgE9huvQj6cvnCla8Eq/GDcwMIg== + dependencies: + "@types/argparse" "1.0.38" + argparse "~1.0.9" + colors "~1.2.1" + string-argv "~0.3.1" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@sinonjs/commons@^1.7.0": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" + integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@size-limit/file@6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@size-limit/file/-/file-6.0.4.tgz#64681f0e0ec93d69b1d99f0a40bbbcdd2fb7def6" + integrity sha512-SoGUUNEHsZJTDlw6znuMbR0z6apr/NmeEXSFT6iB6gUPyOHIdFtFJpvWeS1vijC7OFQhWHskedB6nBJ6L+bd+A== + dependencies: + semver "7.3.5" + +"@size-limit/preset-small-lib@^6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@size-limit/preset-small-lib/-/preset-small-lib-6.0.4.tgz#707863bee82c7412b2e7201c301db1de793e7158" + integrity sha512-eMay+Hv/ufJyCUX/pFXa30AiYsjrT/Tjw1G7h7CCNKulbEjAY2rAiEsCQkm+rCNnYoPUgOsWhMYy908J23Qb6Q== + dependencies: + "@size-limit/file" "6.0.4" + "@size-limit/webpack" "6.0.4" + +"@size-limit/webpack@6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@size-limit/webpack/-/webpack-6.0.4.tgz#2e23b6a3efb11cb081fb65394d05f218c7051270" + integrity sha512-51rvLztZcvT+Qc5g8FusyC8ZDcpVg7+O1a4hfO2K2XMZV8CFguRN//xMwQXv5q6I1ImUQeyURyiCXIQD24qJYQ== + dependencies: + "@statoscope/webpack-plugin" "^5.17.0" + css-loader "^6.5.0" + css-minimizer-webpack-plugin "^3.0.2" + escape-string-regexp "^4.0.0" + mkdirp "^1.0.4" + nanoid "^3.1.30" + style-loader "^3.3.1" + webpack "^5.61.0" + +"@solidity-parser/parser@^0.14.1": + version "0.14.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.2.tgz#2d8f2bddb217621df882ceeae7d7b42ae8664db3" + integrity sha512-10cr0s+MtRtqjEw0WFJrm2rwULN30xx7btd/v9cmqME2617/2M5MbHDkFIGIGTa7lwNw4bN9mVGfhlLzrYw8pA== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@statoscope/extensions@5.14.1": + version "5.14.1" + resolved "https://registry.yarnpkg.com/@statoscope/extensions/-/extensions-5.14.1.tgz#b7c32b39de447da76b9fa2daada61b2f699754e6" + integrity sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw== + +"@statoscope/helpers@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.19.0.tgz#02f8101643a0fd9b706eb59eafac4448c7d97db9" + integrity sha512-EFD7XqZZxtZJZlaWznAYIOrqECYHqobXxa0EADtn/mIToUrsL9g/bnkBMl28KX6zy07QcDt9gLmp5s+5GDJCoQ== + dependencies: + "@types/archy" "^0.0.32" + "@types/semver" "^7.3.6" + archy "~1.0.0" + jora "^1.0.0-beta.5" + semver "^7.3.5" + +"@statoscope/report-writer@5.20.0": + version "5.20.0" + resolved "https://registry.yarnpkg.com/@statoscope/report-writer/-/report-writer-5.20.0.tgz#18329ca8b194660087cdd2cbd996883a845be5d4" + integrity sha512-/QwHWzRoOCpcJkZYoTb1kuMaLoDxJpo/VteSNbhOOyCwK/74oAPAsSgbGz52T6bHAn6zkMqrSEJFJMVbYeWAJw== + dependencies: + "@discoveryjs/json-ext" "^0.5.5" + +"@statoscope/stats-extension-compressed@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.19.0.tgz#1a5b22416db344b9e7f5cc2ddbb08ec2c57436e8" + integrity sha512-CVV6dDi0vo5wDzXOuTmwydeHyjE/i56TUfA+S3llVLsxasMc6udtkLBKUfCQkbAUTJlYJcY8yUR6fH7SfiqOZw== + dependencies: + "@statoscope/helpers" "5.19.0" + gzip-size "^6.0.0" + +"@statoscope/stats-extension-custom-reports@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.19.0.tgz#6d7be7000f8c50a84c75044d466ac21aba0f3cce" + integrity sha512-RoOyVPZSYsk1MF/yvryuD0mNlc88OCSyr32EXTpqxlK1w0w/7SxxLtDHpSbKoMxdMrYHxvi32apjoNh03BsD+Q== + dependencies: + "@statoscope/extensions" "5.14.1" + "@statoscope/helpers" "5.19.0" + "@statoscope/stats" "5.14.1" + "@statoscope/types" "5.14.1" + +"@statoscope/stats-extension-package-info@5.19.3": + version "5.19.3" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.19.3.tgz#9ec60dc8e36ac6f23a0a9a9e0fbc813d6354f07f" + integrity sha512-KUvzAkNiw1vNUY2i5IoSVnf6pIyiK3BWHOkmw94SCPWA+BXizwGbGIn6qyW/A4BI1icZvnuE4Gcrtyg0zML0KA== + dependencies: + "@statoscope/helpers" "5.19.0" + +"@statoscope/stats-extension-stats-validation-result@5.19.0": + version "5.19.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.19.0.tgz#ab430fe1c64272f3a7fed3585c7d404bac5fb0de" + integrity sha512-9pNmSooDvhUNF5OJyOrmiKjEo+WaCKZhjmZX592uX653JeKr1xTwDxjSWgWyPKkkeyvMHw2T2CjB+WM8Rd/FmA== + dependencies: + "@statoscope/extensions" "5.14.1" + "@statoscope/helpers" "5.19.0" + "@statoscope/stats" "5.14.1" + "@statoscope/types" "5.14.1" + +"@statoscope/stats@5.14.1": + version "5.14.1" + resolved "https://registry.yarnpkg.com/@statoscope/stats/-/stats-5.14.1.tgz#728656629bc06aa4bf5634398662ac05287793d5" + integrity sha512-Kz7kCKuT6DXaqAPfyTwp27xHMDUna9o6UlRSQXXBZ8Yyk7eYYvTNw+5ffRyqivL9IOzD7FQYDQ6VUBHh0UfyDw== + +"@statoscope/types@5.14.1": + version "5.14.1" + resolved "https://registry.yarnpkg.com/@statoscope/types/-/types-5.14.1.tgz#4cc3da44f6a63d4318c50a75efe89f97d512ac8b" + integrity sha512-vIo7aq2E71AC3y3mdnZqA5aupYUaEIHuPD2gUG0bAA8zTXH7YICk7nRkuxx7xnCBhTZTXAgvtF8hgQ35K4N8oQ== + dependencies: + "@statoscope/stats" "5.14.1" + +"@statoscope/webpack-model@5.20.1": + version "5.20.1" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.20.1.tgz#b749d75ab179cdd0933e9022a426766e1070659c" + integrity sha512-3I8fccxQiikQqoLq9K0A/qLedNehGwifpcJtXGC8YuIXJVAGU1BVudjBSveqgaVyiSdw3RKJB9TU6lsf6BGoQw== + dependencies: + "@statoscope/extensions" "5.14.1" + "@statoscope/helpers" "5.19.0" + "@statoscope/stats" "5.14.1" + "@statoscope/stats-extension-compressed" "5.19.0" + "@statoscope/stats-extension-custom-reports" "5.19.0" + "@statoscope/stats-extension-package-info" "5.19.3" + "@statoscope/stats-extension-stats-validation-result" "5.19.0" + "@statoscope/types" "5.14.1" + ajv "^8.6.3" + md5 "^2.3.0" + +"@statoscope/webpack-plugin@^5.17.0": + version "5.20.1" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.20.1.tgz#4e967087265b1db08c5b5e93364930cf83a464c5" + integrity sha512-H4RsRnsEPnbKtC3/OuvhFzAolw8TwKOw0RVso8brlh2a5WLddWikFGUl1/KRQqKB45R3q1e4rnTPe+MVAVwAVA== + dependencies: + "@discoveryjs/json-ext" "^0.5.5" + "@statoscope/report-writer" "5.20.0" + "@statoscope/stats" "5.14.1" + "@statoscope/stats-extension-compressed" "5.19.0" + "@statoscope/stats-extension-custom-reports" "5.19.0" + "@statoscope/types" "5.14.1" + "@statoscope/webpack-model" "5.20.1" + "@statoscope/webpack-stats-extension-compressed" "5.20.1" + "@statoscope/webpack-stats-extension-package-info" "5.20.1" + "@statoscope/webpack-ui" "5.20.1" + open "^8.2.1" + +"@statoscope/webpack-stats-extension-compressed@5.20.1": + version "5.20.1" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.20.1.tgz#e5929e1ebf1687baff15957d4dd0154c578b5017" + integrity sha512-UpvC2sKzFDBgetoyF4D8EyUqoPNHwIlUSewRwyqA0pdUYgNPNv8jGdNeLSLBDP7DORXaWDu1cFAf2Feal+d4OQ== + dependencies: + "@statoscope/stats" "5.14.1" + "@statoscope/stats-extension-compressed" "5.19.0" + "@statoscope/webpack-model" "5.20.1" + +"@statoscope/webpack-stats-extension-package-info@5.20.1": + version "5.20.1" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.20.1.tgz#6f69f21328994b23437b5d76f082fc246daeb385" + integrity sha512-pHGEe1vgyaOk5U9QRpHyRLgV+Ju8SnvPxHGl1BSsle1YJv7ksW6gkatEN95ySaPFcVGp+YOMacjAf1mHQ+0I/g== + dependencies: + "@statoscope/stats" "5.14.1" + "@statoscope/stats-extension-package-info" "5.19.3" + "@statoscope/webpack-model" "5.20.1" + +"@statoscope/webpack-ui@5.20.1": + version "5.20.1" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.20.1.tgz#b8e596a6725c826a1be86e3af2d029611fb68284" + integrity sha512-C/6yOuYYdaHEe3BWUavkJAu8BoXLiRzRxq01z1FolT6V3btr2ILnCHdhNOtkIJt5wbTFnmtxCbMsx4RK49gq2g== + dependencies: + "@statoscope/types" "5.14.1" + highcharts "^9.2.2" + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + +"@truffle/hdwallet-provider@^1.0.43": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz#5cfa8bc67c2a30b3943d3dab78f74c6a191cde02" + integrity sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A== + dependencies: + "@ethereumjs/common" "^2.4.0" + "@ethereumjs/tx" "^3.3.0" + "@trufflesuite/web3-provider-engine" "15.0.14" + eth-sig-util "^3.0.1" + ethereum-cryptography "^0.1.3" + ethereum-protocol "^1.0.1" + ethereumjs-util "^6.1.0" + ethereumjs-wallet "^1.0.1" + +"@trufflesuite/eth-json-rpc-filters@^4.1.2-1": + version "4.1.2-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz#61ab78c52e98a883e5cf086925b34a30297b1824" + integrity sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ== + dependencies: + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-0" + await-semaphore "^0.1.3" + eth-query "^2.1.2" + json-rpc-engine "^5.1.3" + lodash.flatmap "^4.5.0" + safe-event-emitter "^1.0.1" + +"@trufflesuite/eth-json-rpc-infura@^4.0.3-0": + version "4.0.3-0" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz#6d22122937cf60ec9d21a02351c101fdc608c4fe" + integrity sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw== + dependencies: + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" + cross-fetch "^2.1.1" + eth-json-rpc-errors "^1.0.1" + json-rpc-engine "^5.1.3" + +"@trufflesuite/eth-json-rpc-middleware@^4.4.2-0", "@trufflesuite/eth-json-rpc-middleware@^4.4.2-1": + version "4.4.2-1" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz#8c3638ed8a7ed89a1e5e71407de068a65bef0df2" + integrity sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA== + dependencies: + "@trufflesuite/eth-sig-util" "^1.4.2" + btoa "^1.2.1" + clone "^2.1.1" + eth-json-rpc-errors "^1.0.1" + eth-query "^2.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.7" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.6.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^5.1.3" + json-stable-stringify "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +"@trufflesuite/eth-sig-util@^1.4.2": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz#b529e2f38ac08e652116f48981132a26242a4f08" + integrity sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^5.1.1" + +"@trufflesuite/web3-provider-engine@15.0.14": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz#8f9696f434585cc0ab2e57c312090c1f138bc471" + integrity sha512-6/LoWvNMxYf0oaYzJldK2a9AdnkAdIeJhHW4nuUBAeO29eK9xezEaEYQ0ph1QRTaICxGxvn+1Azp4u8bQ8NEZw== + dependencies: + "@ethereumjs/tx" "^3.3.0" + "@trufflesuite/eth-json-rpc-filters" "^4.1.2-1" + "@trufflesuite/eth-json-rpc-infura" "^4.0.3-0" + "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" + "@trufflesuite/eth-sig-util" "^1.4.2" + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^4.4.2" + eth-json-rpc-errors "^2.0.2" + ethereumjs-block "^1.2.2" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tsconfig/node10@^1.0.7": + version "1.0.9" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e" + integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ== + +"@typechain/ethers-v5@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz#cd3ca1590240d587ca301f4c029b67bfccd08810" + integrity sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw== + dependencies: + ethers "^5.0.2" + +"@typechain/ethers-v5@^8.0.5": + version "8.0.5" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-8.0.5.tgz#d469420e9a73deb7fa076cde9edb45d713dd1b8c" + integrity sha512-ntpj4cS3v4WlDu+hSKSyj9A3o1tKtWC30RX1gobeYymZColeJiUemC1Kgfa0MWGmInm5CKxoHVhEvYVgPOZn1A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-3.1.0.tgz#88bd9e9d55e30fbece6fbb34c03ecd40a8b2013a" + integrity sha512-C6Be6l+vTpao19PvMH2CB/lhL1TRLkhdPkvQCF/zqkY1e+0iqY2Bb9Jd3PTt6I8QvMm89ZDerrCJC9927ZHmlg== + dependencies: + fs-extra "^9.1.0" + +"@types/abstract-leveldown@*": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#f055979a99f7654e84d6b8e6267419e9c4cfff87" + integrity sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ== + +"@types/archy@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/archy/-/archy-0.0.32.tgz#8b572741dad9172dfbf289397af1bb41296d3e40" + integrity sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg== + +"@types/argparse@1.0.38": + version "1.0.38" + resolved "https://registry.yarnpkg.com/@types/argparse/-/argparse-1.0.38.tgz#a81fd8606d481f873a3800c6ebae4f1d768a56a9" + integrity sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA== + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14": + version "7.1.19" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460" + integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.6.4" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7" + integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.1" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969" + integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== + dependencies: + "@babel/types" "^7.3.0" + +"@types/bn.js@*", "@types/bn.js@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== + dependencies: + "@types/node" "*" + +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.5": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/chai@*", "@types/chai@^4.2.22": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" + integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== + +"@types/eslint-scope@^3.7.3": + version "3.7.3" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" + integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "8.4.3" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.3.tgz#5c92815a3838b1985c90034cd85f26f59d9d0ece" + integrity sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*", "@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/graceful-fs@^4.1.2": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" + integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" + integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + +"@types/istanbul-lib-report@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#c14c24f18ea8190c118ee7562b7ff99a36552686" + integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz#e875cc689e47bce549ec81f3df5e6f6f11cfaeb2" + integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw== + dependencies: + "@types/istanbul-lib-coverage" "*" + "@types/istanbul-lib-report" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz#9153fe98bba2bd565a63add9436d6f0d7f8468ff" + integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jest@^25.2.1": + version "25.2.3" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-25.2.3.tgz#33d27e4c4716caae4eced355097a47ad363fdcaf" + integrity sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw== + dependencies: + jest-diff "^25.2.1" + pretty-format "^25.2.1" + +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/level-errors@*": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/level-errors/-/level-errors-3.0.0.tgz#15c1f4915a5ef763b51651b15e90f6dc081b96a8" + integrity sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ== + +"@types/levelup@^4.3.0": + version "4.3.3" + resolved "https://registry.yarnpkg.com/@types/levelup/-/levelup-4.3.3.tgz#4dc2b77db079b1cf855562ad52321aa4241b8ef4" + integrity sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA== + dependencies: + "@types/abstract-leveldown" "*" + "@types/level-errors" "*" + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/mkdirp@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-0.5.2.tgz#503aacfe5cc2703d5484326b1b27efa67a339c1f" + integrity sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg== + dependencies: + "@types/node" "*" + +"@types/mocha@^9.0.0": + version "9.1.1" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== + +"@types/node-fetch@^2.5.5": + version "2.6.2" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.6.2.tgz#d1a9c5fd049d9415dce61571557104dec3ec81da" + integrity sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + +"@types/node@*": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + +"@types/node@12.20.24": + version "12.20.24" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" + integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== + +"@types/node@^12.12.6": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/node@^16.11.11": + version "16.11.41" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.41.tgz#88eb485b1bfdb4c224d878b7832239536aa2f813" + integrity sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/pbkdf2@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1", "@types/prettier@^2.1.5": + version "2.6.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" + integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== + +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + +"@types/resolve@^0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@types/secp256k1@^4.0.1": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== + dependencies: + "@types/node" "*" + +"@types/semver@^7.3.6": + version "7.3.10" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.10.tgz#5f19ee40cbeff87d916eedc8c2bfe2305d957f73" + integrity sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw== + +"@types/sinon-chai@^3.2.3": + version "3.2.8" + resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.8.tgz#5871d09ab50d671d8e6dd72e9073f8e738ac61dc" + integrity sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g== + dependencies: + "@types/chai" "*" + "@types/sinon" "*" + +"@types/sinon@*": + version "10.0.11" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.11.tgz#8245827b05d3fc57a6601bd35aee1f7ad330fc42" + integrity sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g== + dependencies: + "@types/sinonjs__fake-timers" "*" + +"@types/sinonjs__fake-timers@*": + version "8.1.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz#bf2e02a3dbd4aecaf95942ecd99b7402e03fad5e" + integrity sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA== + +"@types/stack-utils@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" + integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== + +"@types/stack-utils@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" + integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== + +"@types/underscore@*": + version "1.11.4" + resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" + integrity sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg== + +"@types/web3@1.0.19": + version "1.0.19" + resolved "https://registry.yarnpkg.com/@types/web3/-/web3-1.0.19.tgz#46b85d91d398ded9ab7c85a5dd57cb33ac558924" + integrity sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A== + dependencies: + "@types/bn.js" "*" + "@types/underscore" "*" + +"@types/yargs-parser@*": + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== + +"@types/yargs@^15.0.0": + version "15.0.14" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.14.tgz#26d821ddb89e70492160b66d10a0eb6df8f6fb06" + integrity sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ== + dependencies: + "@types/yargs-parser" "*" + +"@types/yargs@^16.0.0": + version "16.0.4" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" + integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^5.4.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz#6204ac33bdd05ab27c7f77960f1023951115d403" + integrity sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA== + dependencies: + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/type-utils" "5.28.0" + "@typescript-eslint/utils" "5.28.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^5.4.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.28.0.tgz#639b101cad2bfb7ae16e69710ac95c42bd4eae33" + integrity sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA== + dependencies: + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/typescript-estree" "5.28.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" + integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w== + dependencies: + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/visitor-keys" "5.28.0" + +"@typescript-eslint/type-utils@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" + integrity sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ== + dependencies: + "@typescript-eslint/utils" "5.28.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" + integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== + +"@typescript-eslint/typescript-estree@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" + integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA== + dependencies: + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/visitor-keys" "5.28.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" + integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/typescript-estree" "5.28.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" + integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA== + dependencies: + "@typescript-eslint/types" "5.28.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +"@vishalkale15107/rain-protocol@git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b": + version "0.0.16" + resolved "git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b" + dependencies: + "@beehiveinnovation/balancer-core" "0.0.7" + "@beehiveinnovation/configurable-rights-pool" "0.0.1" + "@openzeppelin/contracts" "^4.3.3" + "@openzeppelin/contracts-upgradeable" "^4.4.1" + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/helper-wasm-section" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-opt" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + "@webassemblyjs/wast-printer" "1.11.1" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-buffer" "1.11.1" + "@webassemblyjs/wasm-gen" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + +"@webassemblyjs/wasm-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + "@webassemblyjs/ieee754" "1.11.1" + "@webassemblyjs/leb128" "1.11.1" + "@webassemblyjs/utf8" "1.11.1" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abab@^2.0.3, abab@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abstract-leveldown@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz#5cb89f958a44f526779d740d1440e743e0c30a57" + integrity sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^2.4.1, abstract-leveldown@~2.7.1: + version "2.7.2" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz#87a44d7ebebc341d59665204834c8b7e0932cc93" + integrity sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^5.0.0, abstract-leveldown@~5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz#f7128e1f86ccabf7d2893077ce5d06d798e386c6" + integrity sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@^6.2.1: + version "6.3.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz#d25221d1e6612f820c35963ba4bd739928f6026a" + integrity sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +abstract-leveldown@~2.6.0: + version "2.6.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz#1c5e8c6a5ef965ae8c35dfb3a8770c476b82c4b8" + integrity sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA== + dependencies: + xtend "~4.0.0" + +abstract-leveldown@~6.2.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.7.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9" + integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw== + +acorn-jsx@^5.0.0, acorn-jsx@^5.2.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^6.0.2: + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== + +acorn@^7.1.0, acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@^3.1.1, aes-js@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" + integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.0.0, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@^6.0.1, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.5.0, ajv@~6.12.6: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.0, ajv@^8.6.3, ajv@^8.8.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^2.0.0, ansi-regex@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== + +ansi-regex@^5.0.0, ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +antlr4ts@^0.5.0-alpha.3, antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +archy@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw== + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7, argparse@~1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b" + integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA== + dependencies: + "@babel/runtime" "^7.10.2" + "@babel/runtime-corejs3" "^7.10.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA== + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q== + +array-back@^1.0.3, array-back@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-1.0.4.tgz#644ba7f095f7ffcf7c43b5f0dc39d3c1f03c063b" + integrity sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw== + dependencies: + typical "^2.6.0" + +array-back@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-2.0.0.tgz#6877471d51ecc9c9bfa6136fb6c7d5fe69748022" + integrity sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw== + dependencies: + typical "^2.6.1" + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.4, array-includes@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" + integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + get-intrinsic "^1.1.1" + is-string "^1.0.7" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ== + +array.prototype.flat@^1.2.5: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" + integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz#a7e8ed4225f4788a70cd910abcf0791e76a5534f" + integrity sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-shim-unscopables "^1.0.0" + +array.prototype.reduce@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f" + integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.2" + es-array-method-boxes-properly "^1.0.0" + is-string "^1.0.7" + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== + +ast-types-flow@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-eventemitter@^0.2.2, async-eventemitter@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/async-eventemitter/-/async-eventemitter-0.2.4.tgz#f5e7c8ca7d3e46aab9ec40a292baf686a0bafaca" + integrity sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw== + dependencies: + async "^2.4.0" + +async-limiter@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" + integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== + +async@2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.2.tgz#18330ea7e6e313887f5d2f2a904bac6fe4dd5381" + integrity sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg== + dependencies: + lodash "^4.17.11" + +async@^1.4.2: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== + dependencies: + lodash "^4.17.14" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +asyncro@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/asyncro/-/asyncro-3.0.0.tgz#3c7a732e263bc4a42499042f48d7d858e9c0134e" + integrity sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +await-semaphore@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" + integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== + +axe-core@^4.3.5: + version "4.4.2" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" + integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== + +axios@0.19.2: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +axobject-query@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" + integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA== + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +babel-core@^6.0.14, babel-core@^6.26.0: + version "6.26.3" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" + integrity sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA== + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.1" + debug "^2.6.9" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.8" + slash "^1.0.0" + source-map "^0.5.7" + +babel-eslint@^10.0.3: + version "10.1.0" + resolved "https://registry.yarnpkg.com/babel-eslint/-/babel-eslint-10.1.0.tgz#6968e568a910b78fb3779cdd8b6ac2f479943232" + integrity sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg== + dependencies: + "@babel/code-frame" "^7.0.0" + "@babel/parser" "^7.7.0" + "@babel/traverse" "^7.7.0" + "@babel/types" "^7.7.0" + eslint-visitor-keys "^1.0.0" + resolve "^1.12.0" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + integrity sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA== + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + integrity sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q== + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + integrity sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ== + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + integrity sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + integrity sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ== + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + integrity sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + integrity sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + integrity sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg== + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + integrity sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + integrity sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw== + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + integrity sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ== + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" + integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== + dependencies: + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-annotate-pure-calls@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz#78aa00fd878c4fcde4d49f3da397fcf5defbcce8" + integrity sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA== + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + integrity sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-dev-expression@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.3.tgz#8aaf52155dfb063ed4ddec6280456fbc256fead4" + integrity sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw== + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" + integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-macros@^2.6.1: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== + dependencies: + "@babel/runtime" "^7.7.2" + cosmiconfig "^6.0.0" + resolve "^1.12.0" + +babel-plugin-polyfill-corejs2@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" + integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== + dependencies: + "@babel/compat-data" "^7.13.11" + "@babel/helper-define-polyfill-provider" "^0.3.1" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.0: + version "0.5.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" + integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz#588641af9a2cb4e299b1400c47672a4a104d2459" + integrity sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.0.3" + +babel-plugin-polyfill-regenerator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" + integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.1" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + integrity sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw== + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + integrity sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ== + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + integrity sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ== + +babel-plugin-transform-async-to-generator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + integrity sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw== + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + integrity sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + integrity sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.23.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + integrity sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw== + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + integrity sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag== + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + integrity sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw== + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + integrity sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + integrity sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + integrity sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + integrity sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg== + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + integrity sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.22.0, babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + integrity sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA== + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.23.0, babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.2" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz#58a793863a9e7ca870bdc5a881117ffac27db6f3" + integrity sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q== + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + integrity sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg== + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + integrity sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw== + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + integrity sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA== + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.23.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + integrity sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ== + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + integrity sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + integrity sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + integrity sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ== + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + integrity sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + integrity sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw== + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + integrity sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ== + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.22.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + integrity sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ== + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-regenerator@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + integrity sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg== + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-rename-import@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-rename-import/-/babel-plugin-transform-rename-import-2.3.0.tgz#5d9d645f937b0ca5c26a24b2510a06277b6ffd9b" + integrity sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ== + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + integrity sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw== + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.8.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" + +babel-preset-env@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" + integrity sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg== + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-to-generator "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.23.0" + babel-plugin-transform-es2015-classes "^6.23.0" + babel-plugin-transform-es2015-computed-properties "^6.22.0" + babel-plugin-transform-es2015-destructuring "^6.23.0" + babel-plugin-transform-es2015-duplicate-keys "^6.22.0" + babel-plugin-transform-es2015-for-of "^6.23.0" + babel-plugin-transform-es2015-function-name "^6.22.0" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.22.0" + babel-plugin-transform-es2015-modules-commonjs "^6.23.0" + babel-plugin-transform-es2015-modules-systemjs "^6.23.0" + babel-plugin-transform-es2015-modules-umd "^6.23.0" + babel-plugin-transform-es2015-object-super "^6.22.0" + babel-plugin-transform-es2015-parameters "^6.23.0" + babel-plugin-transform-es2015-shorthand-properties "^6.22.0" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.22.0" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.23.0" + babel-plugin-transform-es2015-unicode-regex "^6.22.0" + babel-plugin-transform-exponentiation-operator "^6.22.0" + babel-plugin-transform-regenerator "^6.22.0" + browserslist "^3.2.6" + invariant "^2.2.2" + semver "^5.3.0" + +babel-preset-jest@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" + integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== + dependencies: + babel-plugin-jest-hoist "^27.5.1" + babel-preset-current-node-syntax "^1.0.0" + +babel-register@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + integrity sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A== + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babelify@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/babelify/-/babelify-7.3.0.tgz#aa56aede7067fd7bd549666ee16dc285087e88e5" + integrity sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA== + dependencies: + babel-core "^6.0.14" + object-assign "^4.0.0" + +babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +backoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" + integrity sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA== + dependencies: + precond "0.2" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2, base-x@^3.0.8: + version "3.0.9" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== + dependencies: + safe-buffer "^5.0.1" + +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base64-sol@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/base64-sol/-/base64-sol-1.1.0.tgz#39c3c91a35790b6eb3b8e73114b46bacf0fc2865" + integrity sha512-mksLxtFyBcXd3LYK5UxyMj29YR//zoaeXpJaKRbnLQC0E99oCJl7VpKaJDXWAuTvnhxBU9XNYzhxSL8umsrxWg== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +bignumber.js@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bip39@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" + integrity sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA== + dependencies: + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + safe-buffer "^5.0.1" + unorm "^1.3.3" + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bluebird@^3.5.0, bluebird@^3.5.2: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.8.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +body-parser@1.20.0, body-parser@^1.16.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5" + integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg== + dependencies: + bytes "3.1.2" + content-type "~1.0.4" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.10.3" + raw-body "2.5.1" + type-is "~1.6.18" + unpipe "1.0.0" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browser-stdout@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.1.tgz#eaf4add46dd54be3bb3b36c0cf15abbeba7956c3" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^3.2.6: + version "3.2.8" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" + integrity sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ== + dependencies: + caniuse-lite "^1.0.30000844" + electron-to-chromium "^1.3.47" + +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.20.4: + version "4.20.4" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" + integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== + dependencies: + caniuse-lite "^1.0.30001349" + electron-to-chromium "^1.4.147" + escalade "^3.1.1" + node-releases "^2.0.5" + picocolors "^1.0.0" + +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-to-arraybuffer@^0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz#6064a40fa76eb43c723aba9ef8f6e1216d10511a" + integrity sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +buffer-xor@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-2.0.2.tgz#34f7c64f04c777a1f8aac5e661273bb9dd320289" + integrity sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ== + dependencies: + safe-buffer "^5.1.1" + +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.6" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.6.tgz#ebd6c67c7922a0e902f053e5d8be5ec850e48433" + integrity sha512-jduaYOYtnio4aIAyc6UbvPCVcgq7nYpVnucyxr6eCYg/Woad9Hf/oxxBRDnGGjPfjUm6j5O/uBWhIu4iLebFaw== + dependencies: + node-gyp-build "^4.3.0" + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +bytes-iec@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bytes-iec/-/bytes-iec-3.1.1.tgz#94cd36bf95c2c22a82002c247df8772d1d591083" + integrity sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +bytewise-core@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bytewise-core/-/bytewise-core-1.2.3.tgz#3fb410c7e91558eb1ab22a82834577aa6bd61d42" + integrity sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA== + dependencies: + typewise-core "^1.2" + +bytewise@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/bytewise/-/bytewise-1.1.0.tgz#1d13cbff717ae7158094aa881b35d081b387253e" + integrity sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ== + dependencies: + bytewise-core "^1.2.2" + typewise "^1.0.3" + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +cachedown@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/cachedown/-/cachedown-1.0.0.tgz#d43f036e4510696b31246d7db31ebf0f7ac32d15" + integrity sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ== + dependencies: + abstract-leveldown "^2.4.1" + lru-cache "^3.2.0" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +caller-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" + integrity sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g== + dependencies: + callsites "^0.2.0" + +callsites@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" + integrity sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001349: + version "1.0.30001356" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz#cbf5fe7b33f90962bfbca532212ea478d4ec9de8" + integrity sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chai@^4.3.4: + version "4.3.6" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" + integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" + integrity sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +checkpoint-store@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/checkpoint-store/-/checkpoint-store-1.1.0.tgz#04e4cb516b91433893581e6d4601a78e9552ea06" + integrity sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg== + dependencies: + functional-red-black-tree "^1.0.1" + +chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chrome-trace-event@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" + integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +ci-info@^3.2.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" + integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== + +ci-job-number@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ci-job-number/-/ci-job-number-1.2.2.tgz#f4e5918fcaeeda95b604f214be7d7d4a961fe0c0" + integrity sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA== + +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +circular-json@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" + integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +circular@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/circular/-/circular-1.0.5.tgz#7da77af98bbde9ce4b5b358cd556b5dded2d3149" + integrity sha512-n4Sspha+wxUl5zeA3JYp1zFCjsLz2VfXIe2gRKNQBrIX+7iPdGcCGZOF8W8IULtllZ/aejXtySfdFFt1wy/3JQ== + +cjs-module-lexer@^1.0.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" + integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== + +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +clean-stack@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-3.0.1.tgz#155bf0b2221bf5f4fba89528d24c5953f17fe3a8" + integrity sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg== + dependencies: + escape-string-regexp "4.0.0" + +cli-color@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" + integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== + dependencies: + ansi-regex "^2.1.1" + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + memoizee "^0.4.14" + timers-ext "^0.1.5" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw== + dependencies: + restore-cursor "^2.0.0" + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-logger@0.5.40: + version "0.5.40" + resolved "https://registry.yarnpkg.com/cli-logger/-/cli-logger-0.5.40.tgz#097f0e11b072c7c698a26c47f588a29c20b48b0b" + integrity sha512-piXVCa0TLm/+A7xdVEhw7t4OSrsmJaZIekWcoGrVMY1bHtLJTXgiNzgHlKT0EVHQ14sCKWorQJazU7UWgZhXOQ== + dependencies: + circular "^1.0.5" + cli-util "~1.1.27" + +cli-regexp@~0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-regexp/-/cli-regexp-0.1.2.tgz#6bcd93b09fb2ed1025d30a1155d5997954a53512" + integrity sha512-L++cAQ5g0Nu6aV56B3uaR+c7jEGSAa4WApY1ZN7XiD8niJ5jRfXE/qvMwgz3uZBG0rft4hJS75Vpz2F3mSm4Mg== + +cli-spinners@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cli-spinners@^2.2.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + +cli-util@~1.1.27: + version "1.1.27" + resolved "https://registry.yarnpkg.com/cli-util/-/cli-util-1.1.27.tgz#42d69e36a040a321fc9cf851c1513cadc5093054" + integrity sha512-Z6+zI0kIrqf9Oi+PmUm8J9AELp8bTf2vCLYseudYtdOPNJvzpNiExO95aHIm477IbPdu/8SE9Wvc/M1kJl4Anw== + dependencies: + cli-regexp "~0.1.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + dependencies: + mimic-response "^1.0.0" + +clone@2.1.2, clone@^2.0.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA== + +collect-v8-coverage@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" + integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw== + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.2" + resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" + integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== + +colors@~1.2.1: + version "1.2.5" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" + integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-4.0.7.tgz#f8d1916ecb90e9e121eda6428e41300bfb64cc46" + integrity sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA== + dependencies: + array-back "^2.0.0" + find-replace "^1.0.3" + typical "^2.6.1" + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== + +commander@^2.20.0, commander@^2.20.3: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" + integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.5.1: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +confusing-browser-globals@^1.0.9: + version "1.0.11" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" + integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.6.0, convert-source-map@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" + integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +cookiejar@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.23.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b" + integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A== + dependencies: + browserslist "^4.20.4" + semver "7.0.0" + +core-js-pure@^3.0.1, core-js-pure@^3.20.2: + version "3.23.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.1.tgz#0b27e4c3ad46178b84e790dbbb81987218ab82ad" + integrity sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg== + +core-js@^2.4.0, core-js@^2.5.0: + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@^2.8.1: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +crc-32@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +cross-fetch@^2.1.0, cross-fetch@^2.1.1: + version "2.2.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.6.tgz#2ef0bb39a24ac034787965c457368a28730e220a" + integrity sha512-9JZz+vXCmfKUZ68zAptS7k4Nu8e2qcibe7WVZYps7sAgk5R8GYTc+T1WR0v1rlP9HxgARmOX1UTIJZFytajpNA== + dependencies: + node-fetch "^2.6.7" + whatwg-fetch "^2.0.4" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +crypto-browserify@3.12.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-declaration-sorter@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz#72ebd995c8f4532ff0036631f7365cce9759df14" + integrity sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og== + +css-loader@^6.5.0: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.7" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + postcss-value-parser "^4.2.0" + semver "^7.3.5" + +css-minimizer-webpack-plugin@^3.0.2: + version "3.4.1" + resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f" + integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q== + dependencies: + cssnano "^5.0.6" + jest-worker "^27.0.2" + postcss "^8.3.5" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + source-map "^0.6.1" + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.12: + version "5.2.12" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz#ebe6596ec7030e62c3eb2b3c09f533c0644a9a97" + integrity sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew== + dependencies: + css-declaration-sorter "^6.3.0" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.0" + postcss-convert-values "^5.1.2" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.6" + postcss-merge-rules "^5.1.2" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.3" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.0" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.0" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.6: + version "5.1.12" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.12.tgz#bcd0b64d6be8692de79332c501daa7ece969816c" + integrity sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ== + dependencies: + cssnano-preset-default "^5.2.12" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cssom@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" + integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +d@1, d@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" + integrity sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA== + dependencies: + es5-ext "^0.10.50" + type "^1.0.1" + +damerau-levenshtein@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== + dependencies: + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" + +debug-log@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" + integrity sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decimal.js@^10.2.0, decimal.js@^10.2.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-equal@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA== + dependencies: + clone "^1.0.2" + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +deferred-leveldown@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz#3acd2e0b75d1669924bc0a4b642851131173e1eb" + integrity sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA== + dependencies: + abstract-leveldown "~2.6.0" + +deferred-leveldown@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz#0b0570087827bf480a23494b398f04c128c19a20" + integrity sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww== + dependencies: + abstract-leveldown "~5.0.0" + inherits "^2.0.3" + +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== + dependencies: + abstract-leveldown "~6.2.1" + inherits "^2.0.3" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.1.3, define-properties@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" + integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== + dependencies: + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA== + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA== + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +defined@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" + integrity sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ== + +deglob@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" + integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== + dependencies: + find-root "^1.0.0" + glob "^7.0.5" + ignore "^3.0.9" + pkg-config "^1.1.0" + run-parallel "^1.1.2" + uniq "^1.0.1" + +delay@4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/delay/-/delay-4.3.0.tgz#efeebfb8f545579cb396b3a722443ec96d14c50e" + integrity sha512-Lwaf3zVFDMBop1yDuFZ19F9WyGcZcGacsbdlZtWjQmM50tOcMntm1njF/Nb/Vjij3KaSvCF+sEYGKrrjObu2NA== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" + integrity sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A== + dependencies: + repeating "^2.0.0" + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +diff-sequences@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" + integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg== + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dotenv@^8.2.0: + version "8.6.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== + +dotignore@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" + integrity sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw== + dependencies: + minimatch "^3.0.4" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== + +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.147: + version "1.4.161" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz#49cb5b35385bfee6cc439d0a04fbba7a7a7f08a1" + integrity sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A== + +elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emittery@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" + integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encoding-down@5.0.4, encoding-down@~5.0.0: + version "5.0.4" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-5.0.4.tgz#1e477da8e9e9d0f7c8293d320044f8b2cd8e9614" + integrity sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw== + dependencies: + abstract-leveldown "^5.0.0" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + xtend "^4.0.1" + +encoding-down@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/encoding-down/-/encoding-down-6.3.0.tgz#b1c4eb0e1728c146ecaef8e32963c549e76d082b" + integrity sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw== + dependencies: + abstract-leveldown "^6.2.1" + inherits "^2.0.3" + level-codec "^9.0.0" + level-errors "^2.0.0" + +encoding@^0.1.11: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enhanced-resolve@^5.9.3: + version "5.9.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" + integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +enquirer@^2.3.0, enquirer@^2.3.4: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +errno@~0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.1: + version "1.20.1" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" + integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + function.prototype.name "^1.1.5" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-property-descriptors "^1.0.0" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-weakref "^1.0.2" + object-inspect "^1.12.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + regexp.prototype.flags "^1.4.3" + string.prototype.trimend "^1.0.5" + string.prototype.trimstart "^1.0.5" + unbox-primitive "^1.0.2" + +es-array-method-boxes-properly@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e" + integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-shim-unscopables@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" + integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== + dependencies: + has "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: + version "0.10.61" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" + integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^6.0.0: + version "6.15.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz#7f93f6cb7d45a92f1537a70ecc06366e1ac6fed9" + integrity sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw== + dependencies: + get-stdin "^6.0.0" + +eslint-config-react-app@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz#698bf7aeee27f0cea0139eaef261c7bf7dd623df" + integrity sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ== + dependencies: + confusing-browser-globals "^1.0.9" + +eslint-config-standard-jsx@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" + integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== + +eslint-config-standard@12.0.0: + version "12.0.0" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" + integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== + +eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" + integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== + dependencies: + debug "^3.2.7" + resolve "^1.20.0" + +eslint-module-utils@^2.2.0, eslint-module-utils@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" + integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== + dependencies: + debug "^3.2.7" + find-up "^2.1.0" + +eslint-plugin-es@^1.3.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz#12acae0f4953e76ba444bfd1b2271081ac620998" + integrity sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA== + dependencies: + eslint-utils "^1.4.2" + regexpp "^2.0.1" + +eslint-plugin-flowtype@^3.13.0: + version "3.13.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz#e241ebd39c0ce519345a3f074ec1ebde4cf80f2c" + integrity sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw== + dependencies: + lodash "^4.17.15" + +eslint-plugin-import@^2.18.2: + version "2.26.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" + integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== + dependencies: + array-includes "^3.1.4" + array.prototype.flat "^1.2.5" + debug "^2.6.9" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.6" + eslint-module-utils "^2.7.3" + has "^1.0.3" + is-core-module "^2.8.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.values "^1.1.5" + resolve "^1.22.0" + tsconfig-paths "^3.14.1" + +eslint-plugin-import@~2.14.0: + version "2.14.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" + integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== + dependencies: + contains-path "^0.1.0" + debug "^2.6.8" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.1" + eslint-module-utils "^2.2.0" + has "^1.0.1" + lodash "^4.17.4" + minimatch "^3.0.3" + read-pkg-up "^2.0.0" + resolve "^1.6.0" + +eslint-plugin-jsx-a11y@^6.2.3: + version "6.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" + integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== + dependencies: + "@babel/runtime" "^7.16.3" + aria-query "^4.2.2" + array-includes "^3.1.4" + ast-types-flow "^0.0.7" + axe-core "^4.3.5" + axobject-query "^2.2.0" + damerau-levenshtein "^1.0.7" + emoji-regex "^9.2.2" + has "^1.0.3" + jsx-ast-utils "^3.2.1" + language-tags "^1.0.5" + minimatch "^3.0.4" + +eslint-plugin-node@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" + integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== + dependencies: + eslint-plugin-es "^1.3.1" + eslint-utils "^1.3.1" + ignore "^4.0.2" + minimatch "^3.0.4" + resolve "^1.8.1" + semver "^5.5.0" + +eslint-plugin-prettier@^3.1.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz#e9ddb200efb6f3d05ffe83b1665a716af4a387e5" + integrity sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-promise@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" + integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== + +eslint-plugin-react-hooks@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz#4ef5930592588ce171abeb26f400c7fbcbc23cd0" + integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== + +eslint-plugin-react@^7.14.3: + version "7.30.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" + integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== + dependencies: + array-includes "^3.1.5" + array.prototype.flatmap "^1.3.0" + doctrine "^2.1.0" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.5" + object.fromentries "^2.0.5" + object.hasown "^1.1.1" + object.values "^1.1.5" + prop-types "^15.8.1" + resolve "^2.0.0-next.3" + semver "^6.3.0" + string.prototype.matchall "^4.0.7" + +eslint-plugin-react@~7.11.1: + version "7.11.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" + integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== + dependencies: + array-includes "^3.0.3" + doctrine "^2.1.0" + has "^1.0.3" + jsx-ast-utils "^2.0.1" + prop-types "^15.6.2" + +eslint-plugin-standard@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz#021211a9f077e63a6847e7bb9ab4247327ac8e0c" + integrity sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA== + +eslint-scope@5.1.1, eslint-scope@^5.0.0, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1, eslint-utils@^1.4.2, eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^6.1.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +eslint@~5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" + integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== + dependencies: + ajv "^6.5.0" + babel-code-frame "^6.26.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^3.1.0" + doctrine "^2.1.0" + eslint-scope "^4.0.0" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^4.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^2.0.0" + functional-red-black-tree "^1.0.1" + glob "^7.1.2" + globals "^11.7.0" + ignore "^4.0.2" + imurmurhash "^0.1.4" + inquirer "^5.2.0" + is-resolvable "^1.1.0" + js-yaml "^3.11.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.5" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.2" + path-is-inside "^1.0.2" + pluralize "^7.0.0" + progress "^2.0.0" + regexpp "^2.0.0" + require-uncached "^1.0.3" + semver "^5.5.0" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^4.0.3" + text-table "^0.2.0" + +espree@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" + integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== + dependencies: + acorn "^6.0.2" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +espree@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0, esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +eth-block-tracker@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz#95cd5e763c7293e0b1b2790a2a39ac2ac188a5e1" + integrity sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug== + dependencies: + eth-query "^2.1.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.3" + ethjs-util "^0.1.3" + json-rpc-engine "^3.6.0" + pify "^2.3.0" + tape "^4.6.3" + +eth-block-tracker@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + dependencies: + "@babel/plugin-transform-runtime" "^7.5.5" + "@babel/runtime" "^7.5.5" + eth-query "^2.1.0" + json-rpc-random-id "^1.0.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" + integrity sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw== + dependencies: + idna-uts46-hx "^2.3.1" + js-sha3 "^0.5.7" + +eth-json-rpc-errors@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" + integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-json-rpc-errors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" + integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-json-rpc-infura@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" + integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== + dependencies: + cross-fetch "^2.1.1" + eth-json-rpc-middleware "^1.5.0" + json-rpc-engine "^3.4.0" + json-rpc-error "^2.0.0" + +eth-json-rpc-middleware@^1.5.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" + integrity sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q== + dependencies: + async "^2.5.0" + eth-query "^2.1.2" + eth-tx-summary "^3.1.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.3" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.1.0" + fetch-ponyfill "^4.0.0" + json-rpc-engine "^3.6.0" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + tape "^4.6.3" + +eth-lib@0.2.8: + version "0.2.8" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" + integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + xhr-request-promise "^0.1.2" + +eth-lib@^0.1.26: + version "0.1.29" + resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.1.29.tgz#0c11f5060d42da9f931eab6199084734f4dbd1d9" + integrity sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ== + dependencies: + bn.js "^4.11.6" + elliptic "^6.4.0" + nano-json-stream-parser "^0.1.2" + servify "^0.1.12" + ws "^3.0.0" + xhr-request-promise "^0.1.2" + +eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/eth-query/-/eth-query-2.1.2.tgz#d6741d9000106b51510c72db92d6365456a6da5e" + integrity sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA== + dependencies: + json-rpc-random-id "^1.0.0" + xtend "^4.0.1" + +eth-rpc-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-sig-util@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" + integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== + dependencies: + buffer "^5.2.1" + elliptic "^6.4.0" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" + +eth-sig-util@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-1.4.2.tgz#8d958202c7edbaae839707fba6f09ff327606210" + integrity sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw== + dependencies: + ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" + ethereumjs-util "^5.1.1" + +eth-sig-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.1.tgz#8753297c83a3f58346bd13547b59c4b2cd110c96" + integrity sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.0" + +eth-tx-summary@^3.1.2: + version "3.2.4" + resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" + integrity sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg== + dependencies: + async "^2.1.2" + clone "^2.0.0" + concat-stream "^1.5.1" + end-of-stream "^1.1.0" + eth-query "^2.0.2" + ethereumjs-block "^1.4.1" + ethereumjs-tx "^1.1.1" + ethereumjs-util "^5.0.1" + ethereumjs-vm "^2.6.0" + through2 "^2.0.3" + +ethashjs@~0.0.7: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ethashjs/-/ethashjs-0.0.8.tgz#227442f1bdee409a548fb04136e24c874f3aa6f9" + integrity sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw== + dependencies: + async "^2.1.2" + buffer-xor "^2.0.1" + ethereumjs-util "^7.0.2" + miller-rabin "^4.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.0.10" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz#3ca07f4aed698e75bd134584850260246a5fed8a" + integrity sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA== + dependencies: + js-sha3 "^0.8.0" + +ethereum-common@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" + integrity sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA== + +ethereum-common@^0.0.18: + version "0.0.18" + resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" + integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== + +ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-protocol@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" + integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== + +ethereum-waffle@^3.4.0: + version "3.4.4" + resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" + integrity sha512-PA9+jCjw4WC3Oc5ocSMBj5sXvueWQeAbvCA+hUlb6oFgwwKyq5ka3bWQ7QZcjzIX+TdFkxP4IbFmoY2D8Dkj9Q== + dependencies: + "@ethereum-waffle/chai" "^3.4.4" + "@ethereum-waffle/compiler" "^3.4.4" + "@ethereum-waffle/mock-contract" "^3.4.4" + "@ethereum-waffle/provider" "^3.4.4" + ethers "^5.0.1" + +ethereumjs-abi@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz#5a637ef16ab43473fa72a29ad90871405b3f5241" + integrity sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g== + dependencies: + bn.js "^4.10.0" + ethereumjs-util "^4.3.0" + +ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": + version "0.6.8" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0" + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-account@3.0.0, ethereumjs-account@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz#728f060c8e0c6e87f1e987f751d3da25422570a9" + integrity sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA== + dependencies: + ethereumjs-util "^6.0.0" + rlp "^2.2.1" + safe-buffer "^5.1.1" + +ethereumjs-account@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz#eeafc62de544cb07b0ee44b10f572c9c49e00a84" + integrity sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA== + dependencies: + ethereumjs-util "^5.0.0" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-block@2.2.2, ethereumjs-block@^2.2.2, ethereumjs-block@~2.2.0, ethereumjs-block@~2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz#c7654be7e22df489fda206139ecd63e2e9c04965" + integrity sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg== + dependencies: + async "^2.0.1" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-block@^1.2.2, ethereumjs-block@^1.4.1, ethereumjs-block@^1.6.0: + version "1.7.1" + resolved "https://registry.yarnpkg.com/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz#78b88e6cc56de29a6b4884ee75379b6860333c3f" + integrity sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg== + dependencies: + async "^2.0.1" + ethereum-common "0.2.0" + ethereumjs-tx "^1.2.2" + ethereumjs-util "^5.0.0" + merkle-patricia-tree "^2.1.2" + +ethereumjs-blockchain@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz#30f2228dc35f6dcf94423692a6902604ae34960f" + integrity sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ== + dependencies: + async "^2.6.1" + ethashjs "~0.0.7" + ethereumjs-block "~2.2.2" + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.1.0" + flow-stoplight "^1.0.0" + level-mem "^3.0.1" + lru-cache "^5.1.1" + rlp "^2.2.2" + semaphore "^1.1.0" + +ethereumjs-common@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz#d3e82fc7c47c0cef95047f431a99485abc9bb1cd" + integrity sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ== + +ethereumjs-common@^1.1.0, ethereumjs-common@^1.3.2, ethereumjs-common@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz#2065dbe9214e850f2e955a80e650cb6999066979" + integrity sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA== + +ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz#5dfe7688bf177b45c9a23f86cf9104d47ea35fed" + integrity sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw== + dependencies: + ethereumjs-common "^1.5.0" + ethereumjs-util "^6.0.0" + +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" + integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== + dependencies: + ethereum-common "^0.0.18" + ethereumjs-util "^5.0.0" + +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^4.3.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" + integrity sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w== + dependencies: + bn.js "^4.8.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + rlp "^2.0.0" + +ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereumjs-util@^5.1.2, ethereumjs-util@^5.1.3, ethereumjs-util@^5.1.5, ethereumjs-util@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz#a833f0e5fca7e5b361384dc76301a721f537bf65" + integrity sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "^0.1.3" + rlp "^2.0.0" + safe-buffer "^5.1.1" + +ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethereumjs-vm@4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" + integrity sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + core-js-pure "^3.0.1" + ethereumjs-account "^3.0.0" + ethereumjs-block "^2.2.2" + ethereumjs-blockchain "^4.0.3" + ethereumjs-common "^1.5.0" + ethereumjs-tx "^2.1.2" + ethereumjs-util "^6.2.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + util.promisify "^1.0.0" + +ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz#76243ed8de031b408793ac33907fb3407fe400c6" + integrity sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw== + dependencies: + async "^2.1.2" + async-eventemitter "^0.2.2" + ethereumjs-account "^2.0.3" + ethereumjs-block "~2.2.0" + ethereumjs-common "^1.1.0" + ethereumjs-util "^6.0.0" + fake-merkle-patricia-tree "^1.0.1" + functional-red-black-tree "^1.0.1" + merkle-patricia-tree "^2.3.2" + rustbn.js "~0.2.0" + safe-buffer "^5.1.1" + +ethereumjs-wallet@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" + integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== + dependencies: + aes-js "^3.1.1" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^6.0.0" + randombytes "^2.0.6" + safe-buffer "^5.1.2" + scryptsy "^1.2.1" + utf8 "^3.0.0" + uuid "^3.3.2" + +ethereumjs-wallet@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz#2c000504b4c71e8f3782dabe1113d192522e99b6" + integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== + dependencies: + aes-js "^3.1.2" + bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" + ethereumjs-util "^7.1.2" + randombytes "^2.1.0" + scrypt-js "^3.0.1" + utf8 "^3.0.0" + uuid "^8.3.2" + +ethers@^4.0.40: + version "4.0.49" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== + dependencies: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + +ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: + version "5.6.9" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" + integrity sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA== + dependencies: + "@ethersproject/abi" "5.6.4" + "@ethersproject/abstract-provider" "5.6.1" + "@ethersproject/abstract-signer" "5.6.2" + "@ethersproject/address" "5.6.1" + "@ethersproject/base64" "5.6.1" + "@ethersproject/basex" "5.6.1" + "@ethersproject/bignumber" "5.6.2" + "@ethersproject/bytes" "5.6.1" + "@ethersproject/constants" "5.6.1" + "@ethersproject/contracts" "5.6.2" + "@ethersproject/hash" "5.6.1" + "@ethersproject/hdnode" "5.6.2" + "@ethersproject/json-wallets" "5.6.1" + "@ethersproject/keccak256" "5.6.1" + "@ethersproject/logger" "5.6.0" + "@ethersproject/networks" "5.6.4" + "@ethersproject/pbkdf2" "5.6.1" + "@ethersproject/properties" "5.6.0" + "@ethersproject/providers" "5.6.8" + "@ethersproject/random" "5.6.1" + "@ethersproject/rlp" "5.6.1" + "@ethersproject/sha2" "5.6.1" + "@ethersproject/signing-key" "5.6.2" + "@ethersproject/solidity" "5.6.1" + "@ethersproject/strings" "5.6.1" + "@ethersproject/transactions" "5.6.2" + "@ethersproject/units" "5.6.1" + "@ethersproject/wallet" "5.6.2" + "@ethersproject/web" "5.6.1" + "@ethersproject/wordlists" "5.6.1" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +events@^3.0.0, events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.3: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA== + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expect@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" + integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== + dependencies: + "@jest/types" "^27.5.1" + jest-get-type "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + +express@^4.14.0: + version "4.18.1" + resolved "https://registry.yarnpkg.com/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf" + integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.0" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.5.0" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.2.0" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.1" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.7" + proxy-addr "~2.0.7" + qs "6.10.3" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.18.0" + serve-static "1.15.0" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.1.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.6.0.tgz#3871d50641e874cc172e2b53f919842d19db4c52" + integrity sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg== + dependencies: + type "^2.5.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q== + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fake-merkle-patricia-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz#4b8c3acfb520afadf9860b1f14cd8ce3402cddd3" + integrity sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA== + dependencies: + checkpoint-store "^1.1.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-safe-stringify@^2.0.6: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +fb-watchman@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" + integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== + dependencies: + bser "2.1.1" + +fetch-ponyfill@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" + integrity sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g== + dependencies: + node-fetch "~1.7.1" + +figures@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA== + dependencies: + escape-string-regexp "^1.0.5" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" + integrity sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w== + dependencies: + flat-cache "^1.2.1" + object-assign "^4.0.1" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ== + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32" + integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg== + dependencies: + debug "2.6.9" + encodeurl "~1.0.2" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-replace@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-1.0.3.tgz#b88e7364d2d9c959559f388c66670d6130441fa0" + integrity sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA== + dependencies: + array-back "^1.0.4" + test-value "^2.1.0" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-root@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA== + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== + dependencies: + fs-extra "^4.0.3" + micromatch "^3.1.4" + +find-yarn-workspace-root@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz#f47fb8d239c900eb78179aa81b66673eac88f7bd" + integrity sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ== + dependencies: + micromatch "^4.0.2" + +flat-cache@^1.2.1: + version "1.3.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" + integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== + dependencies: + circular-json "^0.3.1" + graceful-fs "^4.1.2" + rimraf "~2.6.2" + write "^0.2.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flow-stoplight@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" + integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +follow-redirects@^1.12.1: + version "1.15.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" + integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA== + +for-each@^0.3.3, for-each@~0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ== + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA== + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^0.30.0: + version "0.30.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^2.1.0" + klaw "^1.0.0" + path-is-absolute "^1.0.0" + rimraf "^2.2.8" + +fs-extra@^4.0.2, fs-extra@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1, fs-extra@~7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.0, fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +function.prototype.name@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" + integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.0" + functions-have-names "^1.2.2" + +functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +ganache-cli@^6.7.0: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" + integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== + dependencies: + ethereumjs-util "6.2.1" + source-map-support "0.5.12" + yargs "13.2.4" + +ganache-core@^2.13.2: + version "2.13.2" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" + integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== + dependencies: + abstract-leveldown "3.0.0" + async "2.6.2" + bip39 "2.5.0" + cachedown "1.0.0" + clone "2.1.2" + debug "3.2.6" + encoding-down "5.0.4" + eth-sig-util "3.0.0" + ethereumjs-abi "0.6.8" + ethereumjs-account "3.0.0" + ethereumjs-block "2.2.2" + ethereumjs-common "1.5.0" + ethereumjs-tx "2.1.2" + ethereumjs-util "6.2.1" + ethereumjs-vm "4.2.0" + heap "0.2.6" + keccak "3.0.1" + level-sublevel "6.6.4" + levelup "3.1.1" + lodash "4.17.20" + lru-cache "5.1.1" + merkle-patricia-tree "3.0.0" + patch-package "6.2.2" + seedrandom "3.0.1" + source-map-support "0.5.12" + tmp "0.1.0" + web3-provider-engine "14.2.1" + websocket "1.0.32" + optionalDependencies: + ethereumjs-wallet "0.6.5" + web3 "1.2.11" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598" + integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.3" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-stdin@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" + integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== + +get-stream@^4.0.0, get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@~7.2.0: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global@^4.4.0, global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + +globals@^11.1.0, globals@^11.7.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globals@^9.18.0: + version "9.18.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" + integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== + +globalyzer@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globalyzer/-/globalyzer-0.1.0.tgz#cb76da79555669a1519d5a8edf093afaa0bf1465" + integrity sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q== + +globby@^11.0.1, globby@^11.0.4, globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +globrex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/globrex/-/globrex-0.1.2.tgz#dd5d9ec826232730cd6793a5e33a9302985e6098" + integrity sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg== + +got@9.6.0: + version "9.6.0" + resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +got@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +hardhat@^2.7.0: + version "2.9.9" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" + integrity sha512-Qv7SXnRc0zq1kGXruNnSKpP3eFccXMR5Qv6GVX9hBIJ5efN0PflKPq92aQ5Cv3jrjJeRevLznWZVz7bttXhVfw== + dependencies: + "@ethereumjs/block" "^3.6.2" + "@ethereumjs/blockchain" "^5.5.2" + "@ethereumjs/common" "^2.6.4" + "@ethereumjs/tx" "^3.5.1" + "@ethereumjs/vm" "^5.9.0" + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@sentry/node" "^5.18.1" + "@solidity-parser/parser" "^0.14.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + chalk "^2.4.2" + chokidar "^3.4.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^0.1.2" + ethereumjs-abi "^0.6.8" + ethereumjs-util "^7.1.4" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "7.2.0" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + lodash "^4.17.11" + merkle-patricia-tree "^4.2.4" + mnemonist "^0.38.0" + mocha "^9.2.0" + p-map "^4.0.0" + qs "^6.7.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + slash "^3.0.0" + solc "0.7.3" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + "true-case-path" "^2.2.1" + tsort "0.0.1" + undici "^5.4.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" + integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + dependencies: + get-intrinsic "^1.1.1" + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q== + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw== + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ== + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ== + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.1, has@^1.0.3, has@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +heap@0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" + integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== + +highcharts@^9.2.2: + version "9.3.3" + resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-9.3.3.tgz#ae62178de788fd7934431aa26b8e250b8073c541" + integrity sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + integrity sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-https@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/http-https/-/http-https-1.0.0.tgz#2f908dd5f1db4068c058cd6e6d4ce392c913389b" + integrity sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg== + +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +humanize-duration@^3.15.3: + version "3.27.2" + resolved "https://registry.yarnpkg.com/humanize-duration/-/humanize-duration-3.27.2.tgz#4b4e565bec098d22c9a54344e16156d1c649f160" + integrity sha512-A15OmA3FLFRnehvF4ZMocsxTZYvHq4ze7L+AgR1DeHw0xC9vMd4euInY83uqGU9/XXKNnVIEeKc1R8G8nKqtzg== + +husky@^7.0.4: + version "7.0.4" + resolved "https://registry.yarnpkg.com/husky/-/husky-7.0.4.tgz#242048245dc49c8fb1bf0cc7cfb98dd722531535" + integrity sha512-vbaCKN2QLtP/vD4yvs6iz6hBEo6wkSzs8HpRah1Z6aGmF2KW5PdYuAd7uX5a+OyBZHBhd+TFLqgjUgytQr4RvQ== + +iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +idna-uts46-hx@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz#a1dc5c4df37eee522bf66d969cc980e00e8711f9" + integrity sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA== + dependencies: + punycode "2.1.0" + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore@^3.0.9: + version "3.3.10" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.2, ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg== + +immutable@^4.0.0-rc.12: + version "4.1.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef" + integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ== + +import-fresh@^3.0.0, import-fresh@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@~4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-4.0.0.tgz#e8eb627483a0a43da3c03f3e35548be5cb0cc153" + integrity sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw== + +import-local@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4" + integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inquirer@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +inquirer@^7.0.0: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== + +invert-kv@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" + integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A== + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.1.0, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg== + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-fn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fn/-/is-fn-1.0.0.tgz#9543d5de7bcf5b08a22ec8a20bae6e286d510d8c" + integrity sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg== + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw== + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg== + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-promise@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-reference@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.0.4, is-regex@^1.1.4, is-regex@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-resolvable@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" + integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.1.1, is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA== + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" + integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" + integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jest-changed-files@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" + integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== + dependencies: + "@jest/types" "^27.5.1" + execa "^5.0.0" + throat "^6.0.1" + +jest-circus@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" + integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + throat "^6.0.1" + +jest-cli@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" + integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== + dependencies: + "@jest/core" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + prompts "^2.0.1" + yargs "^16.2.0" + +jest-config@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" + integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== + dependencies: + "@babel/core" "^7.8.0" + "@jest/test-sequencer" "^27.5.1" + "@jest/types" "^27.5.1" + babel-jest "^27.5.1" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.1" + graceful-fs "^4.2.9" + jest-circus "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-get-type "^27.5.1" + jest-jasmine2 "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runner "^27.5.1" + jest-util "^27.5.1" + jest-validate "^27.5.1" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^27.5.1" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^25.2.1: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.5.0.tgz#1dd26ed64f96667c068cef026b677dfa01afcfa9" + integrity sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A== + dependencies: + chalk "^3.0.0" + diff-sequences "^25.2.6" + jest-get-type "^25.2.6" + pretty-format "^25.5.0" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-docblock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" + integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== + dependencies: + detect-newline "^3.0.0" + +jest-each@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" + integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + jest-get-type "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + +jest-environment-jsdom@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" + integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + jsdom "^16.6.0" + +jest-environment-node@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" + integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + jest-mock "^27.5.1" + jest-util "^27.5.1" + +jest-get-type@^25.2.6: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" + integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-haste-map@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" + integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== + dependencies: + "@jest/types" "^27.5.1" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^27.5.1" + jest-serializer "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + micromatch "^4.0.4" + walker "^1.0.7" + optionalDependencies: + fsevents "^2.3.2" + +jest-jasmine2@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" + integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + expect "^27.5.1" + is-generator-fn "^2.0.0" + jest-each "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-runtime "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + pretty-format "^27.5.1" + throat "^6.0.1" + +jest-leak-detector@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" + integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== + dependencies: + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-message-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.5.0.tgz#ea11d93204cc7ae97456e1d8716251185b8880ea" + integrity sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA== + dependencies: + "@babel/code-frame" "^7.0.0" + "@jest/types" "^25.5.0" + "@types/stack-utils" "^1.0.1" + chalk "^3.0.0" + graceful-fs "^4.2.4" + micromatch "^4.0.2" + slash "^3.0.0" + stack-utils "^1.0.1" + +jest-message-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" + integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^27.5.1" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^27.5.1" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" + integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^25.2.1: + version "25.2.6" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" + integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== + +jest-regex-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" + integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== + +jest-resolve-dependencies@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" + integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== + dependencies: + "@jest/types" "^27.5.1" + jest-regex-util "^27.5.1" + jest-snapshot "^27.5.1" + +jest-resolve@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" + integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== + dependencies: + "@jest/types" "^27.5.1" + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-pnp-resolver "^1.2.2" + jest-util "^27.5.1" + jest-validate "^27.5.1" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" + integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== + dependencies: + "@jest/console" "^27.5.1" + "@jest/environment" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.8.1" + graceful-fs "^4.2.9" + jest-docblock "^27.5.1" + jest-environment-jsdom "^27.5.1" + jest-environment-node "^27.5.1" + jest-haste-map "^27.5.1" + jest-leak-detector "^27.5.1" + jest-message-util "^27.5.1" + jest-resolve "^27.5.1" + jest-runtime "^27.5.1" + jest-util "^27.5.1" + jest-worker "^27.5.1" + source-map-support "^0.5.6" + throat "^6.0.1" + +jest-runtime@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" + integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== + dependencies: + "@jest/environment" "^27.5.1" + "@jest/fake-timers" "^27.5.1" + "@jest/globals" "^27.5.1" + "@jest/source-map" "^27.5.1" + "@jest/test-result" "^27.5.1" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^27.5.1" + jest-message-util "^27.5.1" + jest-mock "^27.5.1" + jest-regex-util "^27.5.1" + jest-resolve "^27.5.1" + jest-snapshot "^27.5.1" + jest-util "^27.5.1" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-serializer@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" + integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.9" + +jest-snapshot@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" + integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== + dependencies: + "@babel/core" "^7.7.2" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.0.0" + "@jest/transform" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^27.5.1" + graceful-fs "^4.2.9" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + jest-haste-map "^27.5.1" + jest-matcher-utils "^27.5.1" + jest-message-util "^27.5.1" + jest-util "^27.5.1" + natural-compare "^1.4.0" + pretty-format "^27.5.1" + semver "^7.3.2" + +jest-util@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.5.0.tgz#31c63b5d6e901274d264a4fec849230aa3fa35b0" + integrity sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA== + dependencies: + "@jest/types" "^25.5.0" + chalk "^3.0.0" + graceful-fs "^4.2.4" + is-ci "^2.0.0" + make-dir "^3.0.0" + +jest-util@^27.0.0, jest-util@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" + integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== + dependencies: + "@jest/types" "^27.5.1" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" + integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== + dependencies: + "@jest/types" "^27.5.1" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^27.5.1" + leven "^3.1.0" + pretty-format "^27.5.1" + +jest-watch-typeahead@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz#903dba6112f22daae7e90b0a271853f7ff182008" + integrity sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-regex-util "^25.2.1" + jest-watcher "^25.2.4" + slash "^3.0.0" + string-length "^3.1.0" + strip-ansi "^6.0.0" + +jest-watcher@^25.2.4: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.5.0.tgz#d6110d101df98badebe435003956fd4a465e8456" + integrity sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q== + dependencies: + "@jest/test-result" "^25.5.0" + "@jest/types" "^25.5.0" + ansi-escapes "^4.2.1" + chalk "^3.0.0" + jest-util "^25.5.0" + string-length "^3.1.0" + +jest-watcher@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" + integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== + dependencies: + "@jest/test-result" "^27.5.1" + "@jest/types" "^27.5.1" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + jest-util "^27.5.1" + string-length "^4.0.1" + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@^25.3.0, jest@^27.3.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" + integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== + dependencies: + "@jest/core" "^27.5.1" + import-local "^3.0.2" + jest-cli "^27.5.1" + +jju@~1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" + integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== + +jora@^1.0.0-beta.5: + version "1.0.0-beta.6" + resolved "https://registry.yarnpkg.com/jora/-/jora-1.0.0-beta.6.tgz#c2dfa27773421279ba0c7eed452c2fe17dba8537" + integrity sha512-2FkqL/aVGKpZAYPwaElAV8x8P34E9NfxWCNl8VjimTfiftEjRb5xohNuosUyDMg2ukdn3iXKm2I6rNF7UQKM7A== + dependencies: + "@discoveryjs/natural-compare" "^1.0.0" + +jpjs@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/jpjs/-/jpjs-1.2.1.tgz#f343833de8838a5beba1f42d5a219be0114c44b7" + integrity sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw== + +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== + +js-yaml@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +js-yaml@^3.11.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsdom@^16.6.0: + version "16.7.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" + integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== + dependencies: + abab "^2.0.5" + acorn "^8.2.4" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.3.0" + data-urls "^2.0.0" + decimal.js "^10.2.1" + domexception "^2.0.1" + escodegen "^2.0.0" + form-data "^3.0.0" + html-encoding-sniffer "^2.0.1" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" + whatwg-encoding "^1.0.5" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.5.0" + ws "^7.4.6" + xml-name-validator "^3.0.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + integrity sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA== + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: + version "3.8.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz#9d4ff447241792e1d0a232f6ef927302bb0c62a9" + integrity sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA== + dependencies: + async "^2.0.1" + babel-preset-env "^1.7.0" + babelify "^7.3.0" + json-rpc-error "^2.0.0" + promise-to-callback "^1.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-engine@^5.1.3: + version "5.4.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" + integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== + dependencies: + eth-rpc-errors "^3.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-error@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" + integrity sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug== + dependencies: + inherits "^2.0.1" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" + integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stable-stringify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" + integrity sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg== + dependencies: + jsonify "~0.0.0" + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@2.x, json5@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + +json5@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw== + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +jsonfile@^2.1.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonify@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" + integrity sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +jsx-ast-utils@^2.0.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz#1114a4c1209481db06c690c2b4f488cc665f657e" + integrity sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w== + dependencies: + array-includes "^3.1.1" + object.assign "^4.1.0" + +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" + integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== + dependencies: + array-includes "^3.1.4" + object.assign "^4.1.2" + +keccak@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +keccak@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.2.tgz#4c2c6e8c54e04f2670ee49fa734eb9da152206e0" + integrity sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ== + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw== + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + +klaw@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== + optionalDependencies: + graceful-fs "^4.1.9" + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +language-subtag-registry@~0.3.2: + version "0.3.21" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" + integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + +language-tags@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a" + integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ== + dependencies: + language-subtag-registry "~0.3.2" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw== + dependencies: + invert-kv "^1.0.0" + +lcid@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" + integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== + dependencies: + invert-kv "^2.0.0" + +level-codec@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" + integrity sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ== + dependencies: + buffer "^5.6.0" + +level-codec@~7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-7.0.1.tgz#341f22f907ce0f16763f24bddd681e395a0fb8a7" + integrity sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ== + +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== + +level-errors@^1.0.3: + version "1.1.2" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.1.2.tgz#4399c2f3d3ab87d0625f7e3676e2d807deff404d" + integrity sha512-Sw/IJwWbPKF5Ai4Wz60B52yj0zYeqzObLh8k1Tk88jVmD51cJSKWSYpRyhVIvFzZdvsPqlH5wfhp/yxdsaQH4w== + dependencies: + errno "~0.1.1" + +level-errors@^2.0.0, level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== + dependencies: + errno "~0.1.1" + +level-errors@~1.0.3: + version "1.0.5" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-1.0.5.tgz#83dbfb12f0b8a2516bdc9a31c4876038e227b859" + integrity sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig== + dependencies: + errno "~0.1.1" + +level-iterator-stream@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz#ccfff7c046dcf47955ae9a86f46dfa06a31688b4" + integrity sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig== + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.5" + xtend "^4.0.0" + +level-iterator-stream@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz#e43b78b1a8143e6fa97a4f485eb8ea530352f2ed" + integrity sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw== + dependencies: + inherits "^2.0.1" + level-errors "^1.0.3" + readable-stream "^1.0.33" + xtend "^4.0.0" + +level-iterator-stream@~3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz#2c98a4f8820d87cdacab3132506815419077c730" + integrity sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g== + dependencies: + inherits "^2.0.1" + readable-stream "^2.3.6" + xtend "^4.0.0" + +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" + +level-mem@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-3.0.1.tgz#7ce8cf256eac40f716eb6489654726247f5a89e5" + integrity sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg== + dependencies: + level-packager "~4.0.0" + memdown "~3.0.0" + +level-mem@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/level-mem/-/level-mem-5.0.1.tgz#c345126b74f5b8aa376dc77d36813a177ef8251d" + integrity sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg== + dependencies: + level-packager "^5.0.3" + memdown "^5.0.0" + +level-packager@^5.0.3: + version "5.1.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-5.1.1.tgz#323ec842d6babe7336f70299c14df2e329c18939" + integrity sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ== + dependencies: + encoding-down "^6.3.0" + levelup "^4.3.2" + +level-packager@~4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/level-packager/-/level-packager-4.0.1.tgz#7e7d3016af005be0869bc5fa8de93d2a7f56ffe6" + integrity sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q== + dependencies: + encoding-down "~5.0.0" + levelup "^3.0.0" + +level-post@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/level-post/-/level-post-1.0.7.tgz#19ccca9441a7cc527879a0635000f06d5e8f27d0" + integrity sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew== + dependencies: + ltgt "^2.1.2" + +level-sublevel@6.6.4: + version "6.6.4" + resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-6.6.4.tgz#f7844ae893919cd9d69ae19d7159499afd5352ba" + integrity sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA== + dependencies: + bytewise "~1.1.0" + level-codec "^9.0.0" + level-errors "^2.0.0" + level-iterator-stream "^2.0.3" + ltgt "~2.1.1" + pull-defer "^0.2.2" + pull-level "^2.0.3" + pull-stream "^3.6.8" + typewiselite "~1.0.0" + xtend "~4.0.0" + +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + dependencies: + xtend "^4.0.2" + +level-ws@0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-0.0.0.tgz#372e512177924a00424b0b43aef2bb42496d228b" + integrity sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw== + dependencies: + readable-stream "~1.0.15" + xtend "~2.1.1" + +level-ws@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-1.0.0.tgz#19a22d2d4ac57b18cc7c6ecc4bd23d899d8f603b" + integrity sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q== + dependencies: + inherits "^2.0.3" + readable-stream "^2.2.8" + xtend "^4.0.1" + +level-ws@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-ws/-/level-ws-2.0.0.tgz#207a07bcd0164a0ec5d62c304b4615c54436d339" + integrity sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA== + dependencies: + inherits "^2.0.3" + readable-stream "^3.1.0" + xtend "^4.0.1" + +levelup@3.1.1, levelup@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-3.1.1.tgz#c2c0b3be2b4dc316647c53b42e2f559e232d2189" + integrity sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg== + dependencies: + deferred-leveldown "~4.0.0" + level-errors "~2.0.0" + level-iterator-stream "~3.0.0" + xtend "~4.0.0" + +levelup@^1.2.1: + version "1.3.9" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-1.3.9.tgz#2dbcae845b2bb2b6bea84df334c475533bbd82ab" + integrity sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ== + dependencies: + deferred-leveldown "~1.2.1" + level-codec "~7.0.0" + level-errors "~1.0.3" + level-iterator-stream "~1.3.0" + prr "~1.0.1" + semver "~5.4.1" + xtend "~4.0.0" + +levelup@^4.3.2: + version "4.4.0" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== + dependencies: + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lilconfig@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" + integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.assign@^4.0.3, lodash.assign@^4.0.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" + integrity sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.flatmap@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" + integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== + +lodash.get@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.memoize@4.x, lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.7.0, lodash@~4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + +log-update@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" + integrity sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg== + dependencies: + ansi-escapes "^3.0.0" + cli-cursor "^2.0.0" + wrap-ansi "^3.0.1" + +looper@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" + integrity sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ== + +looper@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/looper/-/looper-3.0.0.tgz#2efa54c3b1cbaba9b94aee2e5914b0be57fbb749" + integrity sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg== + +loose-envify@^1.0.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loupe@^2.3.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" + integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== + dependencies: + get-func-name "^2.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@5.1.1, lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-3.2.0.tgz#71789b3b7f5399bec8565dda38aa30d2a097efee" + integrity sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow== + dependencies: + pseudomap "^1.0.1" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" + integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== + dependencies: + es5-ext "~0.10.2" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +ltgt@^2.1.2, ltgt@~2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA== + +ltgt@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" + integrity sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw== + +magic-string@^0.25.2, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +map-age-cleaner@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg== + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w== + dependencies: + object-visit "^1.0.0" + +mcl-wasm@^0.7.1: + version "0.7.9" + resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" + integrity sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +mem@^4.0.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" + integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== + dependencies: + map-age-cleaner "^0.1.1" + mimic-fn "^2.0.0" + p-is-promise "^2.0.0" + +memdown@^1.0.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" + integrity sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w== + dependencies: + abstract-leveldown "~2.7.1" + functional-red-black-tree "^1.0.1" + immediate "^3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + +memdown@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-5.1.0.tgz#608e91a9f10f37f5b5fe767667a8674129a833cb" + integrity sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw== + dependencies: + abstract-leveldown "~6.2.1" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.2.0" + +memdown@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/memdown/-/memdown-3.0.0.tgz#93aca055d743b20efc37492e9e399784f2958309" + integrity sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA== + dependencies: + abstract-leveldown "~5.0.0" + functional-red-black-tree "~1.0.1" + immediate "~3.2.3" + inherits "~2.0.1" + ltgt "~2.2.0" + safe-buffer "~5.1.1" + +memoizee@^0.4.14: + version "0.4.15" + resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" + integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== + dependencies: + d "^1.0.1" + es5-ext "^0.10.53" + es6-weak-map "^2.0.3" + event-emitter "^0.3.5" + is-promise "^2.2.2" + lru-queue "^0.1.0" + next-tick "^1.1.0" + timers-ext "^0.1.7" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge-descriptors@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" + integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +merkle-patricia-tree@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" + integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== + dependencies: + async "^2.6.1" + ethereumjs-util "^5.2.0" + level-mem "^3.0.1" + level-ws "^1.0.0" + readable-stream "^3.0.6" + rlp "^2.0.0" + semaphore ">=1.0.1" + +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" + integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== + dependencies: + async "^1.4.2" + ethereumjs-util "^5.0.0" + level-ws "0.0.0" + levelup "^1.2.1" + memdown "^1.0.0" + readable-stream "^2.0.0" + rlp "^2.0.0" + semaphore ">=1.0.1" + +merkle-patricia-tree@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz#ff988d045e2bf3dfa2239f7fabe2d59618d57413" + integrity sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w== + dependencies: + "@types/levelup" "^4.3.0" + ethereumjs-util "^7.1.4" + level-mem "^5.0.1" + level-ws "^2.0.0" + readable-stream "^3.6.0" + semaphore-async-await "^1.5.1" + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^3.1.4: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.2, micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.16, mime-types@^2.1.27, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-fn@^2.0.0, mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +minimatch@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" + integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mkdirp-promise@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz#e9b8f68e552c68a9c1713b84883f7a1dd039b8a1" + integrity sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w== + dependencies: + mkdirp "*" + +mkdirp@*, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mkdirp@^0.5.1, mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^9.2.0: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.3" + debug "4.3.3" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.2.0" + growl "1.10.5" + he "1.2.0" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" + ms "2.1.3" + nanoid "3.3.1" + serialize-javascript "6.0.0" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + workerpool "6.2.0" + yargs "16.2.0" + yargs-parser "20.2.4" + yargs-unparser "2.0.0" + +mock-fs@^4.1.0: + version "4.14.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" + integrity sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw== + +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + +mute-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nano-json-stream-parser@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" + integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== + +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== + +nanoid@^3.1.30, nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +nanospinner@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/nanospinner/-/nanospinner-0.4.0.tgz#f544f71fb990423528b8f6dd6c26134cf9f21659" + integrity sha512-FhxiB9PcEztMw6XfQDSLJBMlmN4n7B2hl/oiK4Hy9479r1+df0i2099DgcEx+m6yBfBJVUuKpILvP8fM3rK3Sw== + dependencies: + picocolors "^1.0.0" + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@1, next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-fetch@^2.6.1, node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-fetch@~1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" + integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== + dependencies: + encoding "^0.1.11" + is-stream "^1.0.1" + +node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" + integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" + integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0, npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ== + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.12.0, object-inspect@^1.9.0, object-inspect@~1.12.0: + version "1.12.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" + integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" + integrity sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA== + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.0, object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.entries@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.5.tgz#e1acdd17c4de2cd96d5a08487cfb9db84d881861" + integrity sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.fromentries@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.5.tgz#7b37b205109c21e741e605727fe8b0ad5fa08251" + integrity sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +object.getownpropertydescriptors@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" + integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== + dependencies: + array.prototype.reduce "^1.0.4" + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.20.1" + +object.hasown@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.1.tgz#ad1eecc60d03f49460600430d97f23882cf592a3" + integrity sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A== + dependencies: + define-properties "^1.1.4" + es-abstract "^1.19.5" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ== + dependencies: + isobject "^3.0.1" + +object.values@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" + integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + +obliterator@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== + +oboe@2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.4.tgz#20c88cdb0c15371bb04119257d4fdd34b0aa49f6" + integrity sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ== + dependencies: + http-https "^1.0.0" + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ== + dependencies: + mimic-fn "^1.0.0" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@^7.4.2: + version "7.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== + dependencies: + is-docker "^2.0.0" + is-wsl "^2.1.1" + +open@^8.2.1: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.8.1, optionator@^0.8.2, optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ora@^4.0.3: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" + integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ== + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g== + dependencies: + lcid "^1.0.0" + +os-locale@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" + integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== + dependencies: + execa "^1.0.0" + lcid "^2.0.0" + mem "^4.0.0" + +os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-is-promise@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" + integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0, p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw== + +patch-package@6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" + integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + +patch-package@^6.2.2: + version "6.4.7" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.4.7.tgz#2282d53c397909a0d9ef92dae3fdeb558382b148" + integrity sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^2.0.0" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + open "^7.4.2" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + +path-browserify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ== + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" + integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg== + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pirates@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" + integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== + +pkg-conf@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" + integrity sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g== + dependencies: + find-up "^2.0.0" + load-json-file "^4.0.0" + +pkg-config@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" + integrity sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw== + dependencies: + debug-log "^1.0.0" + find-root "^1.0.0" + xtend "^4.0.1" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" + integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg== + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a" + integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz#31586df4e184c2e8890e8b34a0b9355313f503ab" + integrity sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g== + dependencies: + browserslist "^4.20.3" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-merge-longhand@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz#f378a8a7e55766b7b644f48e5d8c789ed7ed51ce" + integrity sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.0" + +postcss-merge-rules@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz#7049a14d4211045412116d79b751def4484473a5" + integrity sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz#ac41a6465be2db735099bbd1798d85079a6dc1f9" + integrity sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg== + dependencies: + browserslist "^4.16.6" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c" + integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz#3d23aede35e160089a285e27bf715de11dc9db75" + integrity sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ== + dependencies: + browserslist "^4.16.6" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz#fc31659ea6e85c492fb2a7b545370c215822c5d6" + integrity sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw== + dependencies: + browserslist "^4.16.6" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.3.5, postcss@^8.4.7: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + +precond@0.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" + integrity sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + integrity sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^1.19.1: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +prettier@^2.1.2, prettier@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" + integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== + +pretty-format@^25.2.1, pretty-format@^25.5.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.5.0.tgz#7873c1d774f682c34b8d48b6743a2bf2ac55791a" + integrity sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ== + dependencies: + "@jest/types" "^25.5.0" + ansi-regex "^5.0.0" + ansi-styles "^4.0.0" + react-is "^16.12.0" + +pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +private@^0.1.6, private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +progress-estimator@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/progress-estimator/-/progress-estimator-0.2.2.tgz#1c3947a5782ea56e40c8fccc290ac7ceeb1b91cb" + integrity sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA== + dependencies: + chalk "^2.4.1" + cli-spinners "^1.3.1" + humanize-duration "^3.15.3" + log-update "^2.3.0" + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise-to-callback@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/promise-to-callback/-/promise-to-callback-1.0.0.tgz#5d2a749010bfb67d963598fcd3960746a68feef7" + integrity sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA== + dependencies: + is-fn "^1.0.0" + set-immediate-shim "^1.0.1" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +pseudomap@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== + +psl@^1.1.28, psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pull-cat@^1.1.9: + version "1.1.11" + resolved "https://registry.yarnpkg.com/pull-cat/-/pull-cat-1.1.11.tgz#b642dd1255da376a706b6db4fa962f5fdb74c31b" + integrity sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg== + +pull-defer@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/pull-defer/-/pull-defer-0.2.3.tgz#4ee09c6d9e227bede9938db80391c3dac489d113" + integrity sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA== + +pull-level@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pull-level/-/pull-level-2.0.4.tgz#4822e61757c10bdcc7cf4a03af04c92734c9afac" + integrity sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg== + dependencies: + level-post "^1.0.7" + pull-cat "^1.1.9" + pull-live "^1.0.1" + pull-pushable "^2.0.0" + pull-stream "^3.4.0" + pull-window "^2.1.4" + stream-to-pull-stream "^1.7.1" + +pull-live@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/pull-live/-/pull-live-1.0.1.tgz#a4ecee01e330155e9124bbbcf4761f21b38f51f5" + integrity sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA== + dependencies: + pull-cat "^1.1.9" + pull-stream "^3.4.0" + +pull-pushable@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/pull-pushable/-/pull-pushable-2.2.0.tgz#5f2f3aed47ad86919f01b12a2e99d6f1bd776581" + integrity sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg== + +pull-stream@^3.2.3, pull-stream@^3.4.0, pull-stream@^3.6.8: + version "3.6.14" + resolved "https://registry.yarnpkg.com/pull-stream/-/pull-stream-3.6.14.tgz#529dbd5b86131f4a5ed636fdf7f6af00781357ee" + integrity sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew== + +pull-window@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/pull-window/-/pull-window-2.1.4.tgz#fc3b86feebd1920c7ae297691e23f705f88552f0" + integrity sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg== + dependencies: + looper "^2.0.0" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" + integrity sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw== + +punycode@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.0.tgz#5f863edc89b96db09074bad7947bf09056ca4e7d" + integrity sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@6.10.3: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + +qs@^6.7.0: + version "6.10.5" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" + integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + dependencies: + side-channel "^1.0.4" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.0.6, randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.1, raw-body@^2.4.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^16.12.0, react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A== + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ== + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^1.0.33: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.6, readable-stream@^3.1.0, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.15: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +regenerate-unicode-properties@^10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" + integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.2.1, regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.7: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + integrity sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q== + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" + +regenerator-transform@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" + integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== + dependencies: + "@babel/runtime" "^7.8.4" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.1, regexp.prototype.flags@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" + integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + functions-have-names "^1.2.2" + +regexpp@^2.0.0, regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + integrity sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ== + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regexpu-core@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" + integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.0.1" + regjsgen "^0.6.0" + regjsparser "^0.8.2" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.0.0" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + integrity sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g== + +regjsgen@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" + integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + integrity sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw== + dependencies: + jsesc "~0.5.0" + +regjsparser@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" + integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== + dependencies: + jsesc "~0.5.0" + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w== + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" + integrity sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A== + dependencies: + is-finite "^1.0.0" + +request@^2.79.0, request@^2.85.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" + integrity sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q== + +require-from-string@^2.0.0, require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require-uncached@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" + integrity sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w== + dependencies: + caller-path "^0.1.0" + resolve-from "^1.0.0" + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" + integrity sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg== + +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + +resolve@1.17.0, resolve@~1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.6.0, resolve@^1.8.1, resolve@~1.22.0: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.3: + version "2.0.0-next.4" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660" + integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@~1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q== + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +resumer@~0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" + integrity sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w== + dependencies: + through "~2.3.4" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@2.6.3, rimraf@~2.6.2: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^2.2.8, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +rollup-plugin-sourcemaps@^0.6.2: + version "0.6.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz#bf93913ffe056e414419607f1d02780d7ece84ed" + integrity sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw== + dependencies: + "@rollup/pluginutils" "^3.0.9" + source-map-resolve "^0.6.0" + +rollup-plugin-terser@^5.1.2: + version "5.3.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz#8c650062c22a8426c64268548957463bf981b413" + integrity sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^4.0.0" + terser "^4.6.2" + +rollup-plugin-typescript2@^0.27.3: + version "0.27.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz#cd9455ac026d325b20c5728d2cc54a08a771b68b" + integrity sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + find-cache-dir "^3.3.1" + fs-extra "8.1.0" + resolve "1.17.0" + tslib "2.0.1" + +rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.32.1: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +run-async@^2.2.0, run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.2, run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rustbn.js@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" + integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== + +rxjs@^5.5.2: + version "5.5.12" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" + integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== + dependencies: + symbol-observable "1.0.1" + +rxjs@^6.6.0: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +sade@^1.4.2: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-event-emitter@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz#5b692ef22329ed8f69fdce607e50ca734f6f20af" + integrity sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg== + dependencies: + events "^3.0.0" + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg== + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +schema-utils@^3.1.0, schema-utils@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281" + integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7" + integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.8.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.0.0" + +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +scryptsy@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" + integrity sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw== + dependencies: + pbkdf2 "^3.0.3" + +secp256k1@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== + dependencies: + elliptic "^6.5.4" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +seedrandom@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" + integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== + +semaphore-async-await@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz#857bef5e3644601ca4b9570b87e9df5ca12974fa" + integrity sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg== + +semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" + integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@7.3.5: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +semver@7.x, semver@^7.1.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@~7.3.0: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@~5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== + +send@0.18.0: + version "0.18.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be" + integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@6.0.0, serialize-javascript@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== + dependencies: + randombytes "^2.1.0" + +serialize-javascript@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" + integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== + dependencies: + randombytes "^2.1.0" + +serve-static@1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540" + integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.18.0" + +servify@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/servify/-/servify-0.1.12.tgz#142ab7bee1f1d033b66d0707086085b17c06db95" + integrity sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw== + dependencies: + body-parser "^1.16.0" + cors "^2.8.1" + express "^4.14.0" + request "^2.79.0" + xhr "^2.3.3" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-immediate-shim@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" + integrity sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.7.0: + version "2.8.2" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.2.tgz#5708fb0919d440657326cd5fe7d2599d07705019" + integrity sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +size-limit@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-6.0.4.tgz#f3345206d8c25485d0d31ea41622761a3a1aad93" + integrity sha512-zo/9FrXzetvZGFJnd1LC4mR9GvirElALlerMY3EOwEGdW7Lwgl2WT0hTRC2559ZR2PGfRpnXEgAFkayGAJOebg== + dependencies: + bytes-iec "^3.1.1" + chokidar "^3.5.2" + ci-job-number "^1.2.2" + globby "^11.0.4" + lilconfig "^2.0.3" + nanospinner "^0.4.0" + picocolors "^1.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + integrity sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" + integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== + dependencies: + is-fullwidth-code-point "^2.0.0" + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sol-merger@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/sol-merger/-/sol-merger-3.1.0.tgz#547b282a616d106c0fa8869e0a275fd7db0213d8" + integrity sha512-4/JELeFlB8bcyqttRZ7pE/EGpevft9Q7IPjMaKLKMrj1exmdyt+1qSfuSXxueFXRZQxSd21u6DjEedDkOtQ5yQ== + dependencies: + antlr4ts "^0.5.0-alpha.3" + cli-color "^1.4.0" + commander "^4.0.1" + debug "^4.1.1" + fs-extra "^8.0.1" + glob "^7.1.2" + strip-json-comments "^3.0.1" + +solc@0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + follow-redirects "^1.12.1" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +solc@^0.4.20: + version "0.4.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.26.tgz#5390a62a99f40806b86258c737c1cf653cc35cb5" + integrity sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA== + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + +solc@^0.6.3: + version "0.6.12" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.6.12.tgz#48ac854e0c729361b22a7483645077f58cba080e" + integrity sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + fs-extra "^0.30.0" + js-sha3 "0.8.0" + memorystream "^0.3.1" + require-from-string "^2.0.0" + semver "^5.5.0" + tmp "0.0.33" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-resolve@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2" + integrity sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + +source-map-support@0.5.12: + version "0.5.12" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" + integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.13, source-map-support@^0.5.6, source-map-support@~0.5.12, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@^0.7.3: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.11" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz#50c0d8c40a14ec1bf449bae69a0ea4685a9d9f95" + integrity sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" + integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stack-utils@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.5.tgz#a19b0b01947e0029c8e451d5d61a498f5bb1471b" + integrity sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ== + dependencies: + escape-string-regexp "^2.0.0" + +stack-utils@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" + integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== + dependencies: + escape-string-regexp "^2.0.0" + +stacktrace-parser@^0.1.10: + version "0.1.10" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +standard-engine@^9.0.0, standard-engine@~9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" + integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== + dependencies: + deglob "^2.1.0" + get-stdin "^6.0.0" + minimist "^1.1.0" + pkg-conf "^2.0.0" + +standard@^12.0.1: + version "12.0.1" + resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" + integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== + dependencies: + eslint "~5.4.0" + eslint-config-standard "12.0.0" + eslint-config-standard-jsx "6.0.2" + eslint-plugin-import "~2.14.0" + eslint-plugin-node "~7.0.1" + eslint-plugin-promise "~4.0.0" + eslint-plugin-react "~7.11.1" + eslint-plugin-standard "~4.0.0" + standard-engine "~9.0.0" + +standardx@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/standardx/-/standardx-3.0.0.tgz#98f3e59df3ed51ec2a86a67108e6a00580e03dce" + integrity sha512-Ks1eQAm/wyejwJHvP7/pVMgbscwdgsXQTaJ5K0j9PCEEhU7KQpA8/CgMs+pAdIsblZNMRdHNXtRcmla/Rrg0wg== + dependencies: + standard "^12.0.1" + standard-engine "^9.0.0" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g== + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +stream-to-pull-stream@^1.7.1: + version "1.7.3" + resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" + integrity sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg== + dependencies: + looper "^3.0.0" + pull-stream "^3.2.3" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ== + +string-argv@~0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-length@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" + integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== + dependencies: + astral-regex "^1.0.0" + strip-ansi "^5.2.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw== + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^2.1.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0, string-width@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz#8e6ecb0d8a1fb1fda470d81acecb2dba057a481d" + integrity sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + es-abstract "^1.19.1" + get-intrinsic "^1.1.1" + has-symbols "^1.0.3" + internal-slot "^1.0.3" + regexp.prototype.flags "^1.4.1" + side-channel "^1.0.4" + +string.prototype.trim@~1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.6.tgz#824960787db37a9e24711802ed0c1d1c0254f83e" + integrity sha512-8lMR2m+U0VJTPp6JjvJTtGyc4FIGq9CdRt7O9p6T0e6K4vjU+OP+SQJpbe/SBmRcCUIvNUnjsbmY6lnMp8MhsQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimend@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" + integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string.prototype.trimstart@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" + integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + es-abstract "^1.19.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ== + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g== + dependencies: + is-utf8 "^0.2.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + +style-loader@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" + integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ== + +stylehacks@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.0.tgz#a40066490ca0caca04e96c6b02153ddc39913520" + integrity sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q== + dependencies: + browserslist "^4.16.6" + postcss-selector-parser "^6.0.4" + +supports-color@8.1.1, supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== + dependencies: + bluebird "^3.5.0" + buffer "^5.0.5" + eth-lib "^0.1.26" + fs-extra "^4.0.2" + got "^7.1.0" + mime-types "^2.1.16" + mkdirp-promise "^5.0.1" + mock-fs "^4.1.0" + setimmediate "^1.0.5" + tar "^4.0.2" + xhr-request "^1.0.1" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + integrity sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" + integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== + dependencies: + ajv "^6.0.1" + ajv-keywords "^3.0.0" + chalk "^2.1.0" + lodash "^4.17.4" + slice-ansi "1.0.0" + string-width "^2.1.1" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +tape@^4.6.3: + version "4.15.1" + resolved "https://registry.yarnpkg.com/tape/-/tape-4.15.1.tgz#88fb662965a11f9be1bddb04c11662d7eceb129e" + integrity sha512-k7F5pyr91n9D/yjSJwbLLYDCrTWXxMSXbbmHX2n334lSIc2rxeXyFkaBv4UuUd2gBYMrAOalPutAiCxC6q1qbw== + dependencies: + call-bind "~1.0.2" + deep-equal "~1.1.1" + defined "~1.0.0" + dotignore "~0.1.2" + for-each "~0.3.3" + glob "~7.2.0" + has "~1.0.3" + inherits "~2.0.4" + is-regex "~1.1.4" + minimist "~1.2.6" + object-inspect "~1.12.0" + resolve "~1.22.0" + resumer "~0.0.0" + string.prototype.trim "~1.2.5" + through "~2.3.8" + +tar@^4.0.2: + version "4.4.19" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== + dependencies: + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" + integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.7.2" + +terser@^4.6.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +terser@^5.7.2: + version "5.14.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" + integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +test-value@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/test-value/-/test-value-2.1.0.tgz#11da6ff670f3471a73b625ca4f3fdcf7bb748291" + integrity sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w== + dependencies: + array-back "^1.0.3" + typical "^2.6.0" + +testrpc@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/testrpc/-/testrpc-0.0.1.tgz#83e2195b1f5873aec7be1af8cbe6dcf39edb7aed" + integrity sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +throat@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" + integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== + +through2@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.6, through@~2.3.4, through@~2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" + integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== + +timers-ext@^0.1.5, timers-ext@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" + integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== + dependencies: + es5-ext "~0.10.46" + next-tick "1" + +timsort@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" + integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== + +tiny-glob@^0.2.6: + version "0.2.9" + resolved "https://registry.yarnpkg.com/tiny-glob/-/tiny-glob-0.2.9.tgz#2212d441ac17928033b110f8b3640683129d31e2" + integrity sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg== + dependencies: + globalyzer "0.1.0" + globrex "^0.1.2" + +tmp@0.0.33, tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg== + dependencies: + kind-of "^3.0.2" + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg== + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" + integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== + dependencies: + punycode "^2.1.1" + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw== + +"true-case-path@^2.2.1": + version "2.2.1" + resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" + integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== + +truffle-plugin-verify@^0.4.0: + version "0.4.6" + resolved "https://registry.yarnpkg.com/truffle-plugin-verify/-/truffle-plugin-verify-0.4.6.tgz#3805c58f68a651905579588a6dda48ab764f7790" + integrity sha512-s+wjeTFThgMET+ZS6GFszpWY8iUe2rp1CT3c4BjFW4lcjauQ9uVSWZElWgAib7ACwmsczKyWiLEPZ8vVSy4hTw== + dependencies: + axios "0.19.2" + cli-logger "0.5.40" + delay "4.3.0" + querystring "0.2.0" + sol-merger "3.1.0" + +ts-command-line-args@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" + integrity sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-1.0.4.tgz#ce3b5dade5f5d97cf69889c11bf7d2da8555b15a" + integrity sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ== + +ts-essentials@^6.0.3: + version "6.0.7" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-6.0.7.tgz#5f4880911b7581a873783740ce8b94da163d18a6" + integrity sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw== + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-generator@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ts-generator/-/ts-generator-0.1.1.tgz#af46f2fb88a6db1f9785977e9590e7bcd79220ab" + integrity sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ== + dependencies: + "@types/mkdirp" "^0.5.2" + "@types/prettier" "^2.1.1" + "@types/resolve" "^0.0.8" + chalk "^2.4.1" + glob "^7.1.2" + mkdirp "^0.5.1" + prettier "^2.1.2" + resolve "^1.8.1" + ts-essentials "^1.0.0" + +ts-jest@^25.3.1, ts-jest@^27.0.7: + version "27.1.5" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.5.tgz#0ddf1b163fbaae3d5b7504a1e65c914a95cff297" + integrity sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^27.0.0" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "20.x" + +ts-node@^10.4.0: + version "10.8.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.1.tgz#ea2bd3459011b52699d7e88daa55a45a1af4f066" + integrity sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" + integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tsdx@^0.14.1: + version "0.14.1" + resolved "https://registry.yarnpkg.com/tsdx/-/tsdx-0.14.1.tgz#8771d509b6fc523ad971bae3a63ebe3a88355ab3" + integrity sha512-keHmFdCL2kx5nYFlBdbE3639HQ2v9iGedAFAajobrUTH2wfX0nLPdDhbHv+GHLQZqf0c5ur1XteE8ek/+Eyj5w== + dependencies: + "@babel/core" "^7.4.4" + "@babel/helper-module-imports" "^7.0.0" + "@babel/parser" "^7.11.5" + "@babel/plugin-proposal-class-properties" "^7.4.4" + "@babel/preset-env" "^7.11.0" + "@babel/traverse" "^7.11.5" + "@rollup/plugin-babel" "^5.1.0" + "@rollup/plugin-commonjs" "^11.0.0" + "@rollup/plugin-json" "^4.0.0" + "@rollup/plugin-node-resolve" "^9.0.0" + "@rollup/plugin-replace" "^2.2.1" + "@types/jest" "^25.2.1" + "@typescript-eslint/eslint-plugin" "^2.12.0" + "@typescript-eslint/parser" "^2.12.0" + ansi-escapes "^4.2.1" + asyncro "^3.0.0" + babel-eslint "^10.0.3" + babel-plugin-annotate-pure-calls "^0.4.0" + babel-plugin-dev-expression "^0.2.1" + babel-plugin-macros "^2.6.1" + babel-plugin-polyfill-regenerator "^0.0.4" + babel-plugin-transform-rename-import "^2.3.0" + camelcase "^6.0.0" + chalk "^4.0.0" + enquirer "^2.3.4" + eslint "^6.1.0" + eslint-config-prettier "^6.0.0" + eslint-config-react-app "^5.2.1" + eslint-plugin-flowtype "^3.13.0" + eslint-plugin-import "^2.18.2" + eslint-plugin-jsx-a11y "^6.2.3" + eslint-plugin-prettier "^3.1.0" + eslint-plugin-react "^7.14.3" + eslint-plugin-react-hooks "^2.2.0" + execa "^4.0.3" + fs-extra "^9.0.0" + jest "^25.3.0" + jest-watch-typeahead "^0.5.0" + jpjs "^1.2.1" + lodash.merge "^4.6.2" + ora "^4.0.3" + pascal-case "^3.1.1" + prettier "^1.19.1" + progress-estimator "^0.2.2" + regenerator-runtime "^0.13.7" + rollup "^1.32.1" + rollup-plugin-sourcemaps "^0.6.2" + rollup-plugin-terser "^5.1.2" + rollup-plugin-typescript2 "^0.27.3" + sade "^1.4.2" + semver "^7.1.1" + shelljs "^0.8.3" + tiny-glob "^0.2.6" + ts-jest "^25.3.1" + tslib "^1.9.3" + typescript "^3.7.3" + +tslib@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.1.tgz#410eb0d113e5b6356490eec749603725b021b43e" + integrity sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ== + +tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.0.3, tslib@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl-util@^0.15.0, tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +tweetnacl@^1.0.0, tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.6.0.tgz#3ca6099af5981d36ca86b78442973694278a219f" + integrity sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ== + +typechain@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-3.0.0.tgz#d5a47700831f238e43f7429b987b4bb54849b92e" + integrity sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg== + dependencies: + command-line-args "^4.0.7" + debug "^4.1.1" + fs-extra "^7.0.0" + js-sha3 "^0.8.0" + lodash "^4.17.15" + ts-essentials "^6.0.3" + ts-generator "^0.1.1" + +typechain@^6.0.2: + version "6.1.0" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-6.1.0.tgz#462a35f555accf870689d1ba5698749108d0ce81" + integrity sha512-GGfkK0p3fUgz8kYxjSS4nKcWXE0Lo+teHTetghousIK5njbNoYNDlwn91QIyD181L3fVqlTvBE0a/q3AZmjNfw== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.1.1" + fs-extra "^7.0.0" + glob "^7.1.6" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.1.2" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@^3.7.3, typescript@^4.4.4, typescript@^4.5.2, typescript@~4.6.3: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== + +typewise-core@^1.2, typewise-core@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" + integrity sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg== + +typewise@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typewise/-/typewise-1.0.3.tgz#1067936540af97937cc5dcf9922486e9fa284651" + integrity sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ== + dependencies: + typewise-core "^1.2.0" + +typewiselite@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" + integrity sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw== + +typical@^2.6.0, typical@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/typical/-/typical-2.6.1.tgz#5c080e5d661cbbe38259d2e70a3c7253e873881d" + integrity sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +ultron@~1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" + integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +underscore@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" + integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== + +undici@^5.4.0: + version "5.5.1" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" + integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" + integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" + integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" + integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA== + +universalify@^0.1.0, universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unorm@^1.3.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ== + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg== + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA== + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +url-set-query@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339" + integrity sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg== + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A== + +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ== + dependencies: + punycode "1.3.2" + querystring "0.2.0" + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +utf-8-validate@^5.0.2: + version "5.0.9" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.9.tgz#ba16a822fbeedff1a58918f2a6a6b36387493ea3" + integrity sha512-Yek7dAy0v3Kl0orwMlvi7TPtiCNrdfHNd7Gcc/pLq4BLXqfAmd0J7OWMizUQnTTJsyjKn02mU7anqwfmUP4J8Q== + dependencies: + node-gyp-build "^4.3.0" + +utf8@3.0.0, utf8@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +util.promisify@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + for-each "^0.3.3" + has-symbols "^1.0.1" + object.getownpropertydescriptors "^2.1.1" + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== + +uuid@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8-to-istanbul@^8.1.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed" + integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^1.6.0" + source-map "^0.7.3" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== + +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== + dependencies: + xml-name-validator "^3.0.0" + +walker@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.3.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d" + integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +web3-bzz@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" + integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== + dependencies: + "@types/node" "^12.12.6" + got "9.6.0" + swarm-js "^0.1.40" + underscore "1.9.1" + +web3-core-helpers@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" + integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.11" + web3-utils "1.2.11" + +web3-core-method@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" + integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-utils "1.2.11" + +web3-core-promievent@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" + integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== + dependencies: + eventemitter3 "4.0.4" + +web3-core-requestmanager@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" + integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.11" + web3-providers-http "1.2.11" + web3-providers-ipc "1.2.11" + web3-providers-ws "1.2.11" + +web3-core-subscriptions@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" + integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-core@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" + integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-requestmanager "1.2.11" + web3-utils "1.2.11" + +web3-eth-abi@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" + integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== + dependencies: + "@ethersproject/abi" "5.0.0-beta.153" + underscore "1.9.1" + web3-utils "1.2.11" + +web3-eth-accounts@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" + integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== + dependencies: + crypto-browserify "3.12.0" + eth-lib "0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-eth-contract@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" + integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-utils "1.2.11" + +web3-eth-ens@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" + integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-contract "1.2.11" + web3-utils "1.2.11" + +web3-eth-iban@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" + integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== + dependencies: + bn.js "^4.11.9" + web3-utils "1.2.11" + +web3-eth-personal@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" + integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== + dependencies: + "@types/node" "^12.12.6" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-eth@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" + integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== + dependencies: + underscore "1.9.1" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-accounts "1.2.11" + web3-eth-contract "1.2.11" + web3-eth-ens "1.2.11" + web3-eth-iban "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-net@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" + integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" + +web3-provider-engine@14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" + integrity sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^3.0.0" + eth-json-rpc-infura "^3.1.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-rpc-error "^2.0.0" + json-stable-stringify "^1.0.1" + promise-to-callback "^1.0.0" + readable-stream "^2.2.9" + request "^2.85.0" + semaphore "^1.0.3" + ws "^5.1.1" + xhr "^2.2.0" + xtend "^4.0.1" + +web3-providers-http@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" + integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== + dependencies: + web3-core-helpers "1.2.11" + xhr2-cookies "1.1.0" + +web3-providers-ipc@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" + integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + +web3-providers-ws@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" + integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.2.11" + websocket "^1.0.31" + +web3-shh@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" + integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== + dependencies: + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-net "1.2.11" + +web3-utils@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" + integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== + dependencies: + bn.js "^4.11.9" + eth-lib "0.2.8" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + +web3-utils@^1.0.0-beta.31: + version "1.7.3" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.3.tgz#b214d05f124530d8694ad364509ac454d05f207c" + integrity sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg== + dependencies: + bn.js "^4.11.9" + ethereum-bloom-filters "^1.0.6" + ethereumjs-util "^7.1.0" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +web3@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" + integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== + dependencies: + web3-bzz "1.2.11" + web3-core "1.2.11" + web3-eth "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-shh "1.2.11" + web3-utils "1.2.11" + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== + +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack@^5.61.0: + version "5.73.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" + integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== + dependencies: + "@types/eslint-scope" "^3.7.3" + "@types/estree" "^0.0.51" + "@webassemblyjs/ast" "1.11.1" + "@webassemblyjs/wasm-edit" "1.11.1" + "@webassemblyjs/wasm-parser" "1.11.1" + acorn "^8.4.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.9.3" + es-module-lexer "^0.9.0" + eslint-scope "5.1.1" + events "^3.2.0" + glob-to-regexp "^0.4.1" + graceful-fs "^4.2.9" + json-parse-even-better-errors "^2.3.1" + loader-runner "^4.2.0" + mime-types "^2.1.27" + neo-async "^2.6.2" + schema-utils "^3.1.0" + tapable "^2.1.1" + terser-webpack-plugin "^5.1.3" + watchpack "^2.3.1" + webpack-sources "^3.2.3" + +websocket@1.0.32: + version "1.0.32" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" + integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +websocket@^1.0.31: + version "1.0.34" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.34.tgz#2bdc2602c08bf2c82253b730655c0ef7dcab3111" + integrity sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.50" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-encoding@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" + integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== + dependencies: + iconv-lite "0.4.24" + +whatwg-fetch@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" + integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== + +whatwg-mimetype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" + integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +whatwg-url@^8.0.0, whatwg-url@^8.5.0: + version "8.7.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" + integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== + dependencies: + lodash "^4.7.0" + tr46 "^2.1.0" + webidl-conversions "^6.1.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which@2.0.2, which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +window-size@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" + integrity sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw== + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw== + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" + integrity sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA== + dependencies: + mkdirp "^0.5.1" + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@^3.0.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" + integrity sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA== + dependencies: + async-limiter "~1.0.0" + safe-buffer "~5.1.0" + ultron "~1.1.0" + +ws@^5.1.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-5.2.3.tgz#05541053414921bc29c63bee14b8b0dd50b07b3d" + integrity sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA== + dependencies: + async-limiter "~1.0.0" + +ws@^7.4.6: + version "7.5.8" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" + integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== + +xhr-request-promise@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz#2d5f4b16d8c6c893be97f1a62b0ed4cf3ca5f96c" + integrity sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg== + dependencies: + xhr-request "^1.1.0" + +xhr-request@^1.0.1, xhr-request@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" + integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== + dependencies: + buffer-to-arraybuffer "^0.0.5" + object-assign "^4.1.1" + query-string "^5.0.1" + simple-get "^2.7.0" + timed-out "^4.0.1" + url-set-query "^1.0.0" + xhr "^2.0.4" + +xhr2-cookies@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz#7d77449d0999197f155cb73b23df72505ed89d48" + integrity sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g== + dependencies: + cookiejar "^2.1.1" + +xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-name-validator@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" + integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== + +xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" + integrity sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ== + dependencies: + object-keys "~0.4.0" + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.0, yallist@^3.0.2, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2, yaml@^1.7.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@20.x, yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^13.1.0: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" + integrity sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA== + dependencies: + camelcase "^3.0.0" + lodash.assign "^4.0.6" + +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@13.2.4: + version "13.2.4" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" + integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + os-locale "^3.1.0" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.0" + +yargs@16.2.0, yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^4.7.1: + version "4.8.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" + integrity sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA== + dependencies: + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + lodash.assign "^4.0.3" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.1" + which-module "^1.0.0" + window-size "^0.2.0" + y18n "^3.2.1" + yargs-parser "^2.4.1" + +yarn@^1.22.5: + version "1.22.19" + resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" + integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +z-schema@~5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/z-schema/-/z-schema-5.0.3.tgz#68fafb9b735fc7f3c89eabb3e5a6353b4d7b4935" + integrity sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw== + dependencies: + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^13.7.0" + optionalDependencies: + commander "^2.20.3" From c48ad3dd2e5b3a4db6838a210ada17ced6b6fc6b Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 16:28:53 -0400 Subject: [PATCH 009/125] fix some type errors --- src/RainJS/RainJS.ts | 2 +- src/classes/tierContract.ts | 43 +- src/contracts/gatednft.ts | 534 ---------- src/contracts/redeemableERC20.ts | 82 +- src/contracts/tiers/erc20BalanceTier.ts | 412 ++++---- src/contracts/tiers/erc20TransferTier.ts | 243 ----- src/contracts/tiers/erc721BalanceTier.ts | 201 ---- src/contracts/verify.ts | 19 +- src/index.ts | 4 - src/typechain/CombineTier.ts | 192 ++-- src/typechain/CombineTierFactory.ts | 24 +- src/typechain/ERC165Upgradeable.ts | 106 -- src/typechain/ERC20BalanceTier.ts | 255 ----- src/typechain/ERC20BalanceTierFactory.ts | 209 ---- ...etadataUpgradeable.ts => ERC20Snapshot.ts} | 471 ++++----- src/typechain/ERC20TransferTier.ts | 255 ----- src/typechain/ERC20TransferTierFactory.ts | 209 ---- src/typechain/ERC721BalanceTier.ts | 268 ----- src/typechain/ERC721BalanceTierFactory.ts | 190 ---- src/typechain/EmissionsERC20.ts | 168 ++-- src/typechain/FixedPointMathTest.ts | 248 +++++ src/typechain/GatedNFT.ts | 948 ------------------ src/typechain/GatedNFTFactory.ts | 252 ----- src/typechain/IERC165Upgradeable.ts | 95 -- src/typechain/IERC4626.ts | 591 +++++++++++ src/typechain/IERC721ReceiverUpgradeable.ts | 113 --- src/typechain/IERC721Upgradeable.ts | 480 --------- src/typechain/ITier.ts | 153 --- src/typechain/ITierV2.ts | 142 +++ src/typechain/OwnableUpgradeable.ts | 167 --- src/typechain/Phased.ts | 131 ++- src/typechain/PhasedScheduleTest.ts | 137 ++- src/typechain/PhasedTest.ts | 155 ++- src/typechain/ReadOnlyTier.ts | 151 --- src/typechain/ReadWriteTier.ts | 360 ++++++- src/typechain/RedeemableERC20.ts | 145 ++- src/typechain/ReserveNFT.ts | 643 ------------ ...deable.ts => ReserveTokenERC20Snapshot.ts} | 510 +++++----- src/typechain/Stake.ts | 94 +- src/typechain/TierReportTest.ts | 167 +-- src/typechain/TierV2.ts | 176 ++++ .../{IERC2981Upgradeable.ts => TierV2Test.ts} | 107 +- src/typechain/ValueTier.ts | 100 -- src/typechain/ValueTierTest.ts | 169 ---- src/typechain/Verify.ts | 28 +- src/typechain/VerifyTier.ts | 143 +-- .../AllStandardOpsStateBuilder__factory.ts | 2 +- .../factories/AllStandardOpsTest__factory.ts | 2 +- src/typechain/factories/Bytecode__factory.ts | 2 +- .../factories/CombineTierFactory__factory.ts | 30 +- .../factories/CombineTier__factory.ts | 148 ++- src/typechain/factories/Cooldown__factory.ts | 2 +- .../factories/ERC165Upgradeable__factory.ts | 58 -- .../ERC20BalanceTierFactory__factory.ts | 190 ---- .../factories/ERC20BalanceTier__factory.ts | 255 ----- .../factories/ERC20PulleeTest__factory.ts | 2 +- ...__factory.ts => ERC20Snapshot__factory.ts} | 253 +++-- .../ERC20TransferTierFactory__factory.ts | 190 ---- .../factories/ERC20TransferTier__factory.ts | 255 ----- .../ERC721BalanceTierFactory__factory.ts | 177 ---- .../factories/ERC721BalanceTier__factory.ts | 268 ----- .../factories/ERC721Upgradeable__factory.ts | 404 -------- .../EmissionsERC20Factory__factory.ts | 2 +- .../factories/EmissionsERC20__factory.ts | 140 ++- .../factories/FixedPointMathTest__factory.ts | 181 ++++ .../factories/FnPtrsTest__factory.ts | 2 +- .../factories/GatedNFTFactory__factory.ts | 233 ----- src/typechain/factories/GatedNFT__factory.ts | 747 -------------- .../factories/IERC165Upgradeable__factory.ts | 45 - src/typechain/factories/IERC4626__factory.ts | 413 ++++++++ .../IERC721ReceiverUpgradeable__factory.ts | 64 -- .../factories/IERC721Upgradeable__factory.ts | 311 ------ ...deable__factory.ts => ITierV2__factory.ts} | 60 +- .../OrderBookStateBuilder__factory.ts | 2 +- src/typechain/factories/OrderBook__factory.ts | 2 +- .../factories/OwnableUpgradeable__factory.ts | 91 -- .../factories/PhasedScheduleTest__factory.ts | 64 +- .../factories/PhasedTest__factory.ts | 66 +- src/typechain/factories/Phased__factory.ts | 64 +- .../factories/ReadOnlyTier__factory.ts | 102 -- .../factories/ReadWriteTier__factory.ts | 224 ++++- ...eemableERC20ClaimEscrowWrapper__factory.ts | 2 +- .../RedeemableERC20ClaimEscrow__factory.ts | 2 +- .../RedeemableERC20Factory__factory.ts | 2 +- .../RedeemableERC20Reentrant__factory.ts | 2 +- .../factories/RedeemableERC20__factory.ts | 66 +- .../factories/ReserveNFT__factory.ts | 469 --------- .../ReserveTokenERC20Snapshot__factory.ts | 429 ++++++++ src/typechain/factories/SSTORE2__factory.ts | 2 +- .../factories/SaleFactory__factory.ts | 2 +- .../factories/SaleReentrant__factory.ts | 2 +- src/typechain/factories/Sale__factory.ts | 2 +- .../factories/StackHeightTest__factory.ts | 2 +- .../factories/StakeFactory__factory.ts | 2 +- src/typechain/factories/Stake__factory.ts | 58 +- .../factories/TierReportTest__factory.ts | 36 +- .../factories/TierV2Test__factory.ts | 130 +++ .../{ITier__factory.ts => TierV2__factory.ts} | 81 +- .../factories/VMStateBuilder__factory.ts | 2 +- .../factories/ValueTierTest__factory.ts | 174 ---- src/typechain/factories/ValueTier__factory.ts | 111 -- .../factories/VerifyCallbackTest__factory.ts | 2 +- .../factories/VerifyFactory__factory.ts | 2 +- .../factories/VerifyTierFactory__factory.ts | 2 +- .../factories/VerifyTier__factory.ts | 81 +- src/typechain/factories/Verify__factory.ts | 8 +- src/typechain/hardhat.d.ts | 301 ++---- src/typechain/index.ts | 76 +- yarn.lock | 674 +------------ 109 files changed, 5284 insertions(+), 12781 deletions(-) delete mode 100644 src/contracts/gatednft.ts delete mode 100644 src/contracts/tiers/erc20TransferTier.ts delete mode 100644 src/contracts/tiers/erc721BalanceTier.ts delete mode 100644 src/typechain/ERC165Upgradeable.ts delete mode 100644 src/typechain/ERC20BalanceTier.ts delete mode 100644 src/typechain/ERC20BalanceTierFactory.ts rename src/typechain/{IERC721MetadataUpgradeable.ts => ERC20Snapshot.ts} (55%) delete mode 100644 src/typechain/ERC20TransferTier.ts delete mode 100644 src/typechain/ERC20TransferTierFactory.ts delete mode 100644 src/typechain/ERC721BalanceTier.ts delete mode 100644 src/typechain/ERC721BalanceTierFactory.ts create mode 100644 src/typechain/FixedPointMathTest.ts delete mode 100644 src/typechain/GatedNFT.ts delete mode 100644 src/typechain/GatedNFTFactory.ts delete mode 100644 src/typechain/IERC165Upgradeable.ts create mode 100644 src/typechain/IERC4626.ts delete mode 100644 src/typechain/IERC721ReceiverUpgradeable.ts delete mode 100644 src/typechain/IERC721Upgradeable.ts delete mode 100644 src/typechain/ITier.ts create mode 100644 src/typechain/ITierV2.ts delete mode 100644 src/typechain/OwnableUpgradeable.ts delete mode 100644 src/typechain/ReadOnlyTier.ts delete mode 100644 src/typechain/ReserveNFT.ts rename src/typechain/{ERC721Upgradeable.ts => ReserveTokenERC20Snapshot.ts} (53%) create mode 100644 src/typechain/TierV2.ts rename src/typechain/{IERC2981Upgradeable.ts => TierV2Test.ts} (55%) delete mode 100644 src/typechain/ValueTier.ts delete mode 100644 src/typechain/ValueTierTest.ts delete mode 100644 src/typechain/factories/ERC165Upgradeable__factory.ts delete mode 100644 src/typechain/factories/ERC20BalanceTierFactory__factory.ts delete mode 100644 src/typechain/factories/ERC20BalanceTier__factory.ts rename src/typechain/factories/{IERC721MetadataUpgradeable__factory.ts => ERC20Snapshot__factory.ts} (69%) delete mode 100644 src/typechain/factories/ERC20TransferTierFactory__factory.ts delete mode 100644 src/typechain/factories/ERC20TransferTier__factory.ts delete mode 100644 src/typechain/factories/ERC721BalanceTierFactory__factory.ts delete mode 100644 src/typechain/factories/ERC721BalanceTier__factory.ts delete mode 100644 src/typechain/factories/ERC721Upgradeable__factory.ts create mode 100644 src/typechain/factories/FixedPointMathTest__factory.ts delete mode 100644 src/typechain/factories/GatedNFTFactory__factory.ts delete mode 100644 src/typechain/factories/GatedNFT__factory.ts delete mode 100644 src/typechain/factories/IERC165Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC4626__factory.ts delete mode 100644 src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721Upgradeable__factory.ts rename src/typechain/factories/{IERC2981Upgradeable__factory.ts => ITierV2__factory.ts} (55%) delete mode 100644 src/typechain/factories/OwnableUpgradeable__factory.ts delete mode 100644 src/typechain/factories/ReadOnlyTier__factory.ts delete mode 100644 src/typechain/factories/ReserveNFT__factory.ts create mode 100644 src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts create mode 100644 src/typechain/factories/TierV2Test__factory.ts rename src/typechain/factories/{ITier__factory.ts => TierV2__factory.ts} (50%) delete mode 100644 src/typechain/factories/ValueTierTest__factory.ts delete mode 100644 src/typechain/factories/ValueTier__factory.ts diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 41a0146..a57ee4b 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -815,7 +815,7 @@ export class RainJS { this.signer ); state.stack.push( - await iTierContract.report(account_) + await iTierContract.report(account_,) ); } else throw new Error("Undefined stack variables") diff --git a/src/classes/tierContract.ts b/src/classes/tierContract.ts index 1eb6067..83c4001 100644 --- a/src/classes/tierContract.ts +++ b/src/classes/tierContract.ts @@ -1,13 +1,7 @@ -import { - Signer, - BigNumber, - BytesLike, - BigNumberish, - ContractTransaction, -} from 'ethers'; -import { TxOverrides, ReadTxOverrides } from './rainContract'; +import { Signer, BigNumber, BigNumberish } from 'ethers'; +import { ReadTxOverrides } from './rainContract'; import { FactoryContract } from './factoryContract'; -import { ITier__factory } from '../typechain'; +import { ITierV2__factory } from '../typechain'; import { paddedUInt256 } from '../utils'; /** @@ -62,9 +56,9 @@ export enum Tier { export abstract class TierContract extends FactoryContract { constructor(address: string, signer: Signer) { super(address, signer); - const tier = ITier__factory.connect(address, signer); + const tier = ITierV2__factory.connect(address, signer); this.report = tier.report; - this.setTier = tier.setTier; + this.reportTimeForTier = tier.reportTimeForTier; } /** {@inheritDoc Tier} */ @@ -85,30 +79,19 @@ export abstract class TierContract extends FactoryContract { */ public readonly report: ( account: string, + context: BigNumberish[], overrides?: ReadTxOverrides ) => Promise; - /** - * Updates the tier of an account. - * - * @remarks - * Users can set their own tier by calling `setTier` if is this option available on the Tier contract. - * ITier like BalanceTier does not allow this. - * - * @param account - Account to change the tier for. - * @param endTier - Tier after the change. - * @param data - Arbitrary input to disambiguate ownership - * @param overrides - @see TxOverrides - * @returns The report blocks encoded as a uint256. - */ - public readonly setTier: ( + public readonly reportTimeForTier: ( account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ) => Promise; + tier: BigNumberish, + context: BigNumberish[], + overrides?: ReadTxOverrides + ) => Promise; /** + * @deprecated * Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. * Tier 0 is that a address has never interact with the Tier Contract. * @@ -117,7 +100,7 @@ export abstract class TierContract extends FactoryContract { * @returns current tier level of the account */ public async currentTier(account: string, block?: number): Promise { - const currentTier = await this.report(account); + const currentTier = await this.report(account, []); const againstBlock = block ? block : await this.signer.provider?.getBlockNumber(); diff --git a/src/contracts/gatednft.ts b/src/contracts/gatednft.ts deleted file mode 100644 index e9fa36d..0000000 --- a/src/contracts/gatednft.ts +++ /dev/null @@ -1,534 +0,0 @@ -import { GatedNFT__factory, GatedNFTFactory__factory } from '../typechain'; -import { - BigNumberish, - BigNumber, - BytesLike, - Signer, - ContractTransaction, -} from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; -import { FactoryContract } from '../classes/factoryContract'; - -/** - * @public - * //TODO: Add doc - */ -export class GatedNFT extends FactoryContract { - protected static readonly nameBookReference: string = 'gatedNFTFactory'; - - /** - * Constructs a new GatedNFT from a known address. - * - * @param address - The address of the GatedNFT contract - * @param signer - An ethers.js Signer - * @returns A new GatedNFT instance - * - */ - constructor(address: string, signer: Signer) { - GatedNFT.checkAddress(address); - super(address, signer); - const _gatedNFT = GatedNFT__factory.connect(address, signer); - - this.tier = _gatedNFT.tier; - this.tokenURI = _gatedNFT.tokenURI; - this._royaltyInfo = _gatedNFT.royaltyInfo; - this.updateRoyaltyRecipient = _gatedNFT.updateRoyaltyRecipient; - this.name = _gatedNFT.name; - this.symbol = _gatedNFT.symbol; - this.totalSupply = _gatedNFT.totalSupply; - this.mint = _gatedNFT.mint; - this.ownerOf = _gatedNFT.ownerOf; - this.balanceOf = _gatedNFT.balanceOf; - this.approve = _gatedNFT.approve; - this.getApproved = _gatedNFT.getApproved; - this.isApprovedForAll = _gatedNFT.isApprovedForAll; - this.setApprovalForAll = _gatedNFT.setApprovalForAll; - this.transferFrom = _gatedNFT.transferFrom; - - this.safeTransferFrom = - _gatedNFT['safeTransferFrom(address,address,uint256)']; - - this.safeTransferFromWithData = - _gatedNFT['safeTransferFrom(address,address,uint256,bytes)']; - - this.owner = _gatedNFT.owner; - this.renounceOwnership = _gatedNFT.renounceOwnership; - this.transferOwnership = _gatedNFT.transferOwnership; - this.supportsInterface = _gatedNFT.supportsInterface; - } - - /** - * Deploys a new GatedNFT. - * - * @param signer - An ethers.js Signer - * @param args - Arguments for deploying a GatedNFT @see GatedNFTDeployArguments - * @param overrides - @see TxOverrides - * @returns A new GatedNFT instance - * - */ - public static deploy = async ( - signer: Signer, - args: GatedNFTDeployArguments, - overrides: TxOverrides = {} - ): Promise => { - const gatedNFTFactory = GatedNFTFactory__factory.connect( - this.getBookAddress(await this.getChainId(signer)), - signer - ); - - const { - config, - tier, - minimumStatus, - maxPerAddress, - transferrable, - maxMintable, - royaltyRecipient, - royaltyBPS, - } = args; - - const tx = await gatedNFTFactory.createChildTyped( - config, - tier, - minimumStatus, - maxPerAddress, - transferrable, - maxMintable, - royaltyRecipient, - royaltyBPS, - overrides - ); - const receipt = await tx.wait(); - const address = this.getNewChildFromReceipt(receipt, gatedNFTFactory); - return new GatedNFT(address, signer); - }; - - public readonly connect = (signer: Signer): GatedNFT => { - return new GatedNFT(this.address, signer); - }; - - /** - * Checks if address is registered as a child contract of this GatedNFTFactory on a specific network - * - * @param signer - An ethers.js Signer - * @param maybeChild - Address to check registration for. - * @returns `true` if address was deployed by this contract factory, otherwise `false` - */ - public static isChild = async ( - signer: Signer, - maybeChild: string - ): Promise => { - return await this._isChild(signer, maybeChild); - }; - - /** - * Tier contract to compare statuses against on transfer. - * - * @param overrides - @see ReadTxOverrides - * @returns The tier contract address - */ - public readonly tier: (overrides?: ReadTxOverrides) => Promise; - - /** - * Returns the Uniform Resource Identifier (URI) for `tokenId` token. - * - * @param tokenId - `tokenId` must exist. - * @param overrides - @see ReadTxOverrides - * @returns The token URI - */ - public readonly tokenURI: ( - tokenId: BigNumberish, - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any - * unit of exchange. The royalty amount is denominated and should be payed in that same unit of exchange. - * - * @param salePrice - the sale price that will be use as based to calculate hor much royalty is owed - * @param overrides - @see ReadTxOverrides - * @returns The royaltyRecipient and the royaltyAmount - */ - public readonly royaltyInfo = async ( - salePrice: BigNumberish, - overrides: ReadTxOverrides = {} - ): Promise => { - return this._royaltyInfo(0, salePrice, overrides); - }; - - private readonly _royaltyInfo: ( - arg0: BigNumberish, - salePrice: BigNumberish, - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Update the royalty recipient. Requires the caller to be the current recipient - * - * @param royaltyRecipient - The new recipient. Cannot be a zero address - * @param overrides - @see TxOverrides - */ - public readonly updateRoyaltyRecipient: ( - royaltyRecipient: string, - overrides?: TxOverrides - ) => Promise; - - /** - * Returns the token collection name. - * - * @param overrides - @see ReadTxOverrides - * @returns The name of the GatedNFT - */ - public readonly name: (overrides?: ReadTxOverrides) => Promise; - - /** - * Returns the token collection symbol. - * - * @param overrides - @see ReadTxOverrides - * @returns The symbol of the GatedNFT - */ - public readonly symbol: (overrides?: ReadTxOverrides) => Promise; - - /** - * Returns the total amount of tokens stored by the contract. - * - * @param overrides - @see ReadTxOverrides - * @returns the amount of tokens minted - */ - public readonly totalSupply: ( - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Mint a token and transfers it to `to`. - * - * Requirements: - * - `to` should have the required tier - * - `to` should not exhausted his allowance - * - * @param to - The address that will get the token minted - * @param overrides - @see TxOverrides - */ - public readonly mint: ( - to: string, - overrides?: TxOverrides - ) => Promise; - - /** - * Returns the owner of the `tokenId` token. - * - * Requirements: - * - * - `tokenId` must exist. - * - * @param tokenId - ID of tokens to get the owner - * @param overrides - @see ReadTxOverrides - * @returns the owner address of the token - */ - public readonly ownerOf: ( - tokenId: BigNumberish, - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Returns the number of tokens in `owner`'s account. - * - * @param owner - owner address to get the balance - * @param overrides - @see ReadTxOverrides - * @returns Amount of tokens that the owner have - */ - public readonly balanceOf: ( - owner: string, - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Gives permission to `to` to transfer `tokenId` token to another account. - * The approval is cleared when the token is transferred. - * - * Only a single account can be approved at a time, so approving the zero address clears previous approvals. - * - * Requirements: - * - * - The caller must own the token or be an approved operator. - * - `tokenId` must exist. - * - * @param to - account address that will be approved - * @param tokenId - ID of the token that will be approve to use - * @param overrides - @see TxOverrides - */ - public readonly approve: ( - to: string, - tokenId: BigNumberish, - overrides?: TxOverrides - ) => Promise; - - /** - * Returns the account approved for `tokenId` token. - * - * Requirements: - * - * - `tokenId` must exist. - * - * @param tokenId - ID of the token to get what address is approved to use it - * @param overrides - @see ReadTxOverrides - * @returns The address that is approve to use the token - */ - public readonly getApproved: ( - tokenId: BigNumberish, - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Returns if the `operator` is allowed to manage all of the assets of `owner`. - * - * @param owner - address that hold the tokens - * @param operator - address to check if it is approved to use all the tokens of the owner - * @param overrides - @see ReadTxOverrides - * @returns true if operator has approved for all - */ - public readonly isApprovedForAll: ( - owner: string, - operator: string, - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Approve or remove `operator` as an operator for the caller. - * Operators can call `transferFrom()` or `safeTransferFrom()` for any token owned by the caller. - * - * Requirements: - * - * - The `operator` cannot be the caller. - * - * @param operator - address to approve/denied use all the token of the caller - * @param approved - boolean to specify if operator is allowed to use the token - * @param overrides - @see TxOverrides - */ - public readonly setApprovalForAll: ( - operator: string, - approved: boolean, - overrides?: TxOverrides - ) => Promise; - - /** - * Transfers `tokenId` token from `from` to `to`. - * - * WARNING: Usage of this method is discouraged, use `safeTransferFrom()` whenever possible. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must be owned by `from`. - * - If the caller is not `from`, it must be approved to move this token by either `approve()` or `setApprovalForAll()`. - * - * @param from - address that have the token to transfer - * @param to - address that will receive the token - * @param tokenId - ID of token that will be transfer - * @param overrides - @see TxOverrides - */ - public readonly transferFrom: ( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: TxOverrides - ) => Promise; - - /** - * Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients - * are aware of the ERC721 protocol to prevent tokens from being forever locked. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If the caller is not `from`, it must be have been allowed to move this token by either approve() or setApprovalForAll(). - * - If `to` refers to a smart contract, it must implement `IERC721Receiver-onERC721Received`, which is called upon a safe transfer. - * - * @param from - address that have the token to transfer - * @param to - address that will receive the token - * @param tokenId - ID of token that will be transfer - * @param overrides - @see TxOverrides - */ - public readonly safeTransferFrom: ( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: TxOverrides - ) => Promise; - - /** - * Safely transfers `tokenId` token from `from` to `to`. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If the caller is not `from`, it must be approved to move this token by either approve() or setApprovalForAll(). - * - If `to` refers to a smart contract, it must implement `IERC721Receiver-onERC721Received`, which is called upon a safe transfer. - * - * @param from - address that have the token to transfer - * @param to - address that will receive the token - * @param tokenId - ID of token that will be transfer - * @param data - extra data for onERC721Received - * @param overrides - @see TxOverrides - */ - public readonly safeTransferFromWithData: ( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ) => Promise; - - /** - * Returns the address of the current owner. - * - * @param overrides - @see ReadTxOverrides - * @returns current owner address of the contract - */ - public readonly owner: (overrides?: ReadTxOverrides) => Promise; - - /** - * Leaves the contract without owner. It will not be possible to call - * `onlyOwner` functions anymore. Can only be called by the current owner. - * - * NOTE: Renouncing ownership will leave the contract without an owner, - * thereby removing any functionality that is only available to the owner. - * - * @param overrides - @see TxOverrides - */ - public readonly renounceOwnership: ( - overrides?: TxOverrides - ) => Promise; - - /** - * Transfers ownership of the contract to a new account (`newOwner`). - * Can only be called by the current owner. - * - * @param newOwner - address of the new owner - * @param overrides - @see TxOverrides - */ - public readonly transferOwnership: ( - newOwner: string, - overrides?: TxOverrides - ) => Promise; - - /** - * Returns true if this contract implements the interface defined by - * `interfaceId`. See the corresponding - * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] - * to learn more about how these ids are created. - * - * @param interfaceId - interfaceId that will be checked if it is supported - * @param overrides - @see ReadTxOverrides - * @returns true if the contract support the inerfaceId - */ - public readonly supportsInterface: ( - interfaceId: BytesLike, - overrides?: ReadTxOverrides - ) => Promise; -} - -/** - * @public - * Determine the status about how the GatedNFT contract will handle the transfers - */ -export enum Transferrable { - /** - * Transfer not supported - */ - NonTransferrable, - /** - * Transfer supported - */ - Transferrable, - /** - * Address required a specific tier - */ - TierGatedTransferrable, -} - -/** - * @public - * Configuration of the basic information that will be added to the ERC721 NFT - */ -export interface GatedConfig { - /** - * Name of the token as defined by Open Zeppelin ERC721 - */ - name: string; - /** - * Symbol of the token as defined by Open Zeppelin ERC721 - */ - symbol: string; - /** - * Description that will contain the GatedNFT - */ - description: string; - /** - * An animation url of the NFT - */ - animationUrl: string; - /** - * An image url of the NFT - */ - imageUrl: string; - /** - * The hash of the NFT animation - */ - animationHash: BytesLike; - /** - * The hash of the NFT image - */ - imageHash: BytesLike; -} - -/** - * @public - */ -export interface GatedNFTDeployArguments { - /** - * Configuration of the basic information that will be added to the ERC721 NFT - */ - config: GatedConfig; - /** - * Tier contract to compare statuses against on any transaction. - */ - tier: string; - /** - * Minimum tier required for mints and transfers. Can be '0'. - */ - minimumStatus: BigNumberish; - /** - * Maximun of mint that is allowed per address - */ - maxPerAddress: BigNumberish; - /** - * Determine the status about how the GatedNFT contract will handle the transfers - */ - transferrable: Transferrable; - /** - * Maximun of tokens that will be mint in the contract - */ - maxMintable: BigNumberish; - /** - * The royalty recipient - */ - royaltyRecipient: string; - /** - * The royalty BPS - */ - royaltyBPS: BigNumberish; -} - -/** - * @public - */ -export interface RoyaltyInfo { - receiver: string; - royaltyAmount: BigNumber; -} diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index 0fcf44d..fdd78ec 100644 --- a/src/contracts/redeemableERC20.ts +++ b/src/contracts/redeemableERC20.ts @@ -65,7 +65,6 @@ export class RedeemableERC20 extends FactoryContract { this.allowance = _redeemable.allowance; this.approve = _redeemable.approve; this.balanceOf = _redeemable.balanceOf; - this.blockNumberForPhase = _redeemable.blockNumberForPhase; this.burn = _redeemable.burn; this.burnFrom = _redeemable.burnFrom; this.currentPhase = _redeemable.currentPhase; @@ -80,11 +79,12 @@ export class RedeemableERC20 extends FactoryContract { this.name = _redeemable.name; this.minimumTier = _redeemable.minimumTier; this.newTreasuryAsset = _redeemable.newTreasuryAsset; - this.phaseAtBlockNumber = _redeemable.phaseAtBlockNumber; - this.phaseBlocks = _redeemable.phaseBlocks; + this.phaseAtTime = _redeemable.phaseAtTime; + this.phaseTimes = _redeemable.phaseTimes; this.redeem = _redeemable.redeem; this.symbol = _redeemable.symbol; this.tier = _redeemable.tier; + this.timeForPhase = _redeemable.timeForPhase; this.totalSupply = _redeemable.totalSupply; this.transfer = _redeemable.transfer; this.transferFrom = _redeemable.transferFrom; @@ -177,22 +177,6 @@ export class RedeemableERC20 extends FactoryContract { overrides?: ReadTxOverrides ) => Promise; - /** - * Pure function to reduce an array of phase blocks and phase to a specific block number. - * `Phase.ZERO` will always return block `0`. - * Every other phase will map to a block number in `phaseBlocks`. - * - * @param phaseBlocks - Fixed array of phase blocks to compare against. - * @param phase - Determine the relevant block number for this phase. - * @param overrides - @see ReadTxOverrides - * @returns The block number for the phase according to `phaseBlocks_`. - */ - public readonly blockNumberForPhase: ( - phaseBlocks: BigNumberish[], - phase: BigNumberish, - overrides?: ReadTxOverrides - ) => Promise; - /** * Destroys `amount` tokens from the caller, reducing the total supply. * Emits a `Transfer` event with `to` set to the zero address. @@ -390,35 +374,30 @@ export class RedeemableERC20 extends FactoryContract { ) => Promise; /** - * Pure function to reduce an array of phase blocks and block number to a specific `Phase`. - * - * The phase will be the highest attained even if several phases have the same block number. - * - * If every phase block is after the block number then `0` is returned. - * - * If every phase block is before the block number then `MAX_PHASE` is returned. - * - * @param phaseBlocks - Fixed array of phase blocks to compare against. - * @param blockNumber - Determine the relevant phase relative to this block number. - * @param overrides - @see ReadTxOverrides - * @returns the phase relative to the block number and phase blocks list. - */ - public readonly phaseAtBlockNumber: ( - phaseBlocks: BigNumberish[], - blockNumber: BigNumberish, + * Pure function to reduce an array of phase times and block timestamp to + * a specific `Phase`. + * The phase will be the highest attained even if several phases have the + * same timestamp. + * If every phase block is after the timestamp then `0` is returned. + * If every phase block is before the timestamp then `MAX_PHASE` is + * returned. + * @param phaseTimes_ - Fixed array of phase times to compare against. + * @param timestamp_ - Determine the relevant phase relative to this time. + * @return phase_ The "current" phase relative to the timestamp and phase + * times list. + */ + public readonly phaseAtTime: ( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: ReadTxOverrides ) => Promise; /** - * Get a phaseBlock - * - * @param index - The index to get the phaseBlock. There are 8 phases. The index - * should be between 0 and 7. - * @param overrides - @see ReadTxOverrides - * @returns the phase block + * 8 phases each as 32 bits to fit a single 32 byte word. + * @param arg0 - The index */ - public readonly phaseBlocks: ( - index: BigNumberish, + public readonly phaseTimes: ( + arg0: BigNumberish, overrides?: ReadTxOverrides ) => Promise; @@ -469,6 +448,23 @@ export class RedeemableERC20 extends FactoryContract { */ public readonly tier: (overrides?: ReadTxOverrides) => Promise; + /** + * Pure function to reduce an array of phase times and phase to a + * specific timestamp. + * `Phase.ZERO` will always return block `0`. + * Every other phase will map to a time in `phaseTimes_`. + * + * @param phaseTimes_ - Fixed array of phase blocks to compare against. + * @param phase_ - Determine the relevant block number for this phase. + * @return timestamp_ The timestamp for the phase according to + * `phaseTimes_`. + */ + public readonly timeForPhase: ( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: ReadTxOverrides + ) => Promise; + /** * Returns the amount of tokens in existence. * diff --git a/src/contracts/tiers/erc20BalanceTier.ts b/src/contracts/tiers/erc20BalanceTier.ts index e4f15b2..16c5c1b 100644 --- a/src/contracts/tiers/erc20BalanceTier.ts +++ b/src/contracts/tiers/erc20BalanceTier.ts @@ -1,206 +1,206 @@ -import { Signer, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; -import { - ERC20BalanceTier__factory, - ERC20BalanceTierFactory__factory, - IERC20__factory, -} from '../../typechain'; - -/** - * @public - * A class for deploying and calling methods on a ERC20BalanceTier. - * - * @remarks - * This class provides an easy way to deploy ERC20BalanceTiers using Rain's canonical factories, - * and methods for interacting with an already deployed ERC20BalanceTier. - * - * The `ERC20BalanceTier` simply checks the current balance of an erc20 against tier values. - * As the current balance is always read from the erc20 contract directly there is no historical - * block data. - * - * @example - * ```typescript - * import { ERC20BalanceTier } from 'rain-sdk' - * - * // To deploy a new ERC20BalanceTier, pass an ethers.js Signer and the config for the ERC20BalanceTier. - * const newTier = await ERC20BalanceTier.deploy(signer, ERC20BalanceTierArgs); - * - * // To connect to an existing ERC20BalanceTier just pass the tier address, token address and an ethers.js Signer. - * const existingTier = new ERC20BalanceTier(address, signer[, tokenAddress]); - * - * // Once you have a ERC20BalanceTier, you can call the smart contract methods: - * const tierValues = await existingTier.tierValues(); - * ``` - * - */ -export class ERC20BalanceTier extends TierContract { - protected static readonly nameBookReference: string = - 'erc20BalanceTierFactory'; - - /** - * Constructs a new ERC20BalanceTier from a known address. - * - * @param address - The address of the ERC20BalanceTier contract - * @param signer - An ethers.js Signer - * @returns A new ERC20BalanceTier instance - * - */ - constructor(address: string, signer: Signer, tokenAddress: string = '') { - ERC20BalanceTier.checkAddress(address); - super(address, signer); - const _erc20balanceTier = ERC20BalanceTier__factory.connect( - address, - signer - ); - this.tierValues = _erc20balanceTier.tierValues; - this.token = tokenAddress; - } - - /** - * ERC20 Token address that track the Tier - */ - public readonly token: string; - - /** - * Deploys a new ERC20BalanceTier. - * - * @param signer - An ethers.js Signer - * @param args - Arguments for deploying a ERC20BalanceTier @see ERC20BalanceTierDeployArgs - * @param overrides - @see TxOverrides - * @returns A new ERC20BalanceTier instance - */ - public static deploy = async ( - signer: Signer, - args: ERC20BalanceTierDeployArgs, - overrides: TxOverrides = {} - ): Promise => { - const erc20BalanceTierFactory = ERC20BalanceTierFactory__factory.connect( - this.getBookAddress(await this.getChainId(signer)), - signer - ); - - const tx = await erc20BalanceTierFactory.createChildTyped(args, overrides); - const receipt = await tx.wait(); - const address = this.getNewChildFromReceipt( - receipt, - erc20BalanceTierFactory - ); - return new ERC20BalanceTier(address, signer, args.erc20); - }; - - public readonly connect = (signer: Signer): ERC20BalanceTier => { - return new ERC20BalanceTier(this.address, signer, this.token); - }; - - /** - * Get a new instance with the token address provided. - * - * This method must be used if the token address is not provided in construction moment. The class use - * this address to make calculations related with the Tier. The token address provided should be the - * same that the Tier is using to work correctly. - * @param tokenAddress - The ERC20 token address related to the tier - * @returns A new instance with the token address ready to use the helper methods - */ - public readonly addTokenAddress = ( - tokenAddress: string - ): ERC20BalanceTier => { - return new ERC20BalanceTier(this.address, this.signer, tokenAddress); - }; - - /** - * Checks if address is registered as a child contract of this contract in a specific network. - * - * @remarks - * The methods require a signer that will be used to call to the Factory Contract and ask if the - * address provided is a child. Also it is necessary to get the current Chain ID using the provider - * in the signer. - * - * @param signer - An ethers.js Signer - * @param maybeChild - Address to check registration for. - * @returns `true` if address was deployed by this contract factory, otherwise `false` - */ - public static isChild = async ( - signer: Signer, - maybeChild: string - ): Promise => { - return await this._isChild(signer, maybeChild); - }; - - /** - * Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`. - * - * Take in mind: - * - If the `desired level` is higher than the current level, the amount returned will be the amount - * needed to obtain or transfer to the `account`. - * - If the `desired level` is lower than the current level, the amount returned will be the amount - * needed to remove or transfer out of the `account`. - * - If already have the `desired` tier, will return 0 - * - * @param desiredLevel - the tier level desired to get - * @param account - (optional) the account address to calculate. If not provided will use the signer of - * the instance - * @returns The amount t - */ - public async amountToTier( - account: string, - desiredLevel: number - ): Promise { - if (!this.token) { - throw new Error( - 'Missing ERC20 Token address in the instance. Please, use addTokenAddress' - ); - } - - const token = IERC20__factory.connect(this.token, this.signer); - const values = await this.tierValues(); - - const amountDestiny = desiredLevel - ? values[desiredLevel - 1] - : BigNumber.from(0); - - const amountOrigin = await token.balanceOf( - account || (await this.signer.getAddress()) - ); - - return amountDestiny.sub(amountOrigin).abs(); - } - - /** - * It is NOT implemented in BalanceTiers. Always will throw an error - */ - public readonly setTier = async ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ): Promise => { - throw new Error('SET TIER: NOT IMPLEMENTED'); - }; - - /** - * Complements the default solidity accessor for `tierValues`. Returns all the values in a - * listrather than requiring an index be specified. - * - * @param overrides - @see ReadTxOverrides - * @returns The immutable `tierValues[8]`. - */ - public readonly tierValues: ( - overrides?: ReadTxOverrides - ) => Promise; -} - -/** - * @public - * Constructor config for ERC20BalanceTier - */ -export interface ERC20BalanceTierDeployArgs { - /** - * The erc20 token contract to check the balance of at `report` time - */ - erc20: string; - /** - * 8 values corresponding to minimum erc20 balances for tier 1 through tier 8 - */ - tierValues: BigNumberish[]; -} +// import { Signer, BigNumberish, BigNumber, BytesLike } from 'ethers'; +// import { TierContract } from '../../classes/tierContract'; +// import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; +// import { +// ERC20BalanceTier__factory, +// ERC20BalanceTierFactory__factory, +// IERC20__factory, +// } from '../../typechain'; + +// /** +// * @public +// * A class for deploying and calling methods on a ERC20BalanceTier. +// * +// * @remarks +// * This class provides an easy way to deploy ERC20BalanceTiers using Rain's canonical factories, +// * and methods for interacting with an already deployed ERC20BalanceTier. +// * +// * The `ERC20BalanceTier` simply checks the current balance of an erc20 against tier values. +// * As the current balance is always read from the erc20 contract directly there is no historical +// * block data. +// * +// * @example +// * ```typescript +// * import { ERC20BalanceTier } from 'rain-sdk' +// * +// * // To deploy a new ERC20BalanceTier, pass an ethers.js Signer and the config for the ERC20BalanceTier. +// * const newTier = await ERC20BalanceTier.deploy(signer, ERC20BalanceTierArgs); +// * +// * // To connect to an existing ERC20BalanceTier just pass the tier address, token address and an ethers.js Signer. +// * const existingTier = new ERC20BalanceTier(address, signer[, tokenAddress]); +// * +// * // Once you have a ERC20BalanceTier, you can call the smart contract methods: +// * const tierValues = await existingTier.tierValues(); +// * ``` +// * +// */ +// export class ERC20BalanceTier extends TierContract { +// protected static readonly nameBookReference: string = +// 'erc20BalanceTierFactory'; + +// /** +// * Constructs a new ERC20BalanceTier from a known address. +// * +// * @param address - The address of the ERC20BalanceTier contract +// * @param signer - An ethers.js Signer +// * @returns A new ERC20BalanceTier instance +// * +// */ +// constructor(address: string, signer: Signer, tokenAddress: string = '') { +// ERC20BalanceTier.checkAddress(address); +// super(address, signer); +// const _erc20balanceTier = ERC20BalanceTier__factory.connect( +// address, +// signer +// ); +// this.tierValues = _erc20balanceTier.tierValues; +// this.token = tokenAddress; +// } + +// /** +// * ERC20 Token address that track the Tier +// */ +// public readonly token: string; + +// /** +// * Deploys a new ERC20BalanceTier. +// * +// * @param signer - An ethers.js Signer +// * @param args - Arguments for deploying a ERC20BalanceTier @see ERC20BalanceTierDeployArgs +// * @param overrides - @see TxOverrides +// * @returns A new ERC20BalanceTier instance +// */ +// public static deploy = async ( +// signer: Signer, +// args: ERC20BalanceTierDeployArgs, +// overrides: TxOverrides = {} +// ): Promise => { +// const erc20BalanceTierFactory = ERC20BalanceTierFactory__factory.connect( +// this.getBookAddress(await this.getChainId(signer)), +// signer +// ); + +// const tx = await erc20BalanceTierFactory.createChildTyped(args, overrides); +// const receipt = await tx.wait(); +// const address = this.getNewChildFromReceipt( +// receipt, +// erc20BalanceTierFactory +// ); +// return new ERC20BalanceTier(address, signer, args.erc20); +// }; + +// public readonly connect = (signer: Signer): ERC20BalanceTier => { +// return new ERC20BalanceTier(this.address, signer, this.token); +// }; + +// /** +// * Get a new instance with the token address provided. +// * +// * This method must be used if the token address is not provided in construction moment. The class use +// * this address to make calculations related with the Tier. The token address provided should be the +// * same that the Tier is using to work correctly. +// * @param tokenAddress - The ERC20 token address related to the tier +// * @returns A new instance with the token address ready to use the helper methods +// */ +// public readonly addTokenAddress = ( +// tokenAddress: string +// ): ERC20BalanceTier => { +// return new ERC20BalanceTier(this.address, this.signer, tokenAddress); +// }; + +// /** +// * Checks if address is registered as a child contract of this contract in a specific network. +// * +// * @remarks +// * The methods require a signer that will be used to call to the Factory Contract and ask if the +// * address provided is a child. Also it is necessary to get the current Chain ID using the provider +// * in the signer. +// * +// * @param signer - An ethers.js Signer +// * @param maybeChild - Address to check registration for. +// * @returns `true` if address was deployed by this contract factory, otherwise `false` +// */ +// public static isChild = async ( +// signer: Signer, +// maybeChild: string +// ): Promise => { +// return await this._isChild(signer, maybeChild); +// }; + +// /** +// * Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`. +// * +// * Take in mind: +// * - If the `desired level` is higher than the current level, the amount returned will be the amount +// * needed to obtain or transfer to the `account`. +// * - If the `desired level` is lower than the current level, the amount returned will be the amount +// * needed to remove or transfer out of the `account`. +// * - If already have the `desired` tier, will return 0 +// * +// * @param desiredLevel - the tier level desired to get +// * @param account - (optional) the account address to calculate. If not provided will use the signer of +// * the instance +// * @returns The amount t +// */ +// public async amountToTier( +// account: string, +// desiredLevel: number +// ): Promise { +// if (!this.token) { +// throw new Error( +// 'Missing ERC20 Token address in the instance. Please, use addTokenAddress' +// ); +// } + +// const token = IERC20__factory.connect(this.token, this.signer); +// const values = await this.tierValues(); + +// const amountDestiny = desiredLevel +// ? values[desiredLevel - 1] +// : BigNumber.from(0); + +// const amountOrigin = await token.balanceOf( +// account || (await this.signer.getAddress()) +// ); + +// return amountDestiny.sub(amountOrigin).abs(); +// } + +// /** +// * It is NOT implemented in BalanceTiers. Always will throw an error +// */ +// public readonly setTier = async ( +// account: string, +// endTier: BigNumberish, +// data: BytesLike, +// overrides?: TxOverrides +// ): Promise => { +// throw new Error('SET TIER: NOT IMPLEMENTED'); +// }; + +// /** +// * Complements the default solidity accessor for `tierValues`. Returns all the values in a +// * listrather than requiring an index be specified. +// * +// * @param overrides - @see ReadTxOverrides +// * @returns The immutable `tierValues[8]`. +// */ +// public readonly tierValues: ( +// overrides?: ReadTxOverrides +// ) => Promise; +// } + +// /** +// * @public +// * Constructor config for ERC20BalanceTier +// */ +// export interface ERC20BalanceTierDeployArgs { +// /** +// * The erc20 token contract to check the balance of at `report` time +// */ +// erc20: string; +// /** +// * 8 values corresponding to minimum erc20 balances for tier 1 through tier 8 +// */ +// tierValues: BigNumberish[]; +// } diff --git a/src/contracts/tiers/erc20TransferTier.ts b/src/contracts/tiers/erc20TransferTier.ts deleted file mode 100644 index ded5e59..0000000 --- a/src/contracts/tiers/erc20TransferTier.ts +++ /dev/null @@ -1,243 +0,0 @@ -import { - Signer, - BytesLike, - BigNumber, - BigNumberish, - ContractTransaction, -} from 'ethers'; -import { TierContract } from '../../classes/tierContract'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; -import { - ERC20TransferTier__factory, - ERC20TransferTierFactory__factory, - IERC20__factory, -} from '../../typechain'; - -/** - * @public - * A class for deploying and calling methods on a ERC20TransferTier. - * - * @remarks - * This class provides an easy way to deploy ERC20TransferTiers using Rain's canonical factories, and methods for - * interacting with an already deployed ERC20TransferTier. - * - * The `ERC20TransferTier` takes ownership of an erc20 balance by transferring erc20 token to itself. The - * `msg.sender` must pay the difference on upgrade; the tiered address receives refunds on downgrade. This - * allows users to "gift" tiers to each other. As the transfer is a state changing event we can track - * historical block times. - * - * As the tiered address moves up/down tiers it sends/receives the value difference between its current tier - * only.The user is required to preapprove enough erc20 to cover the tier change or they will fail and lose gas. - * - * In addition to the standard accounting it requires that users transfer erc20 tokens to achieve a tier. - * Data is ignored, the only requirement is that the user has approved sufficient balance to gain the next tier. - * The 8 values for gainable tiers and erc20 contract must be set upon construction and are immutable. - * - * `⚠️ WARNING:` If a user sends erc20 tokens directly to the contract without calling `setTier` the FUNDS ARE LOST. ⚠️ - * - * @example - * ```typescript - * import { ERC20TransferTier } from 'rain-sdk' - * - * // To deploy a new ERC20TransferTier, pass an ethers.js Signer and the config for the ERC20TransferTier. - * const newTier = await ERC20TransferTier.deploy(signer, ERC20TransferTierConfigArgs); - * - * // To connect to an existing ERC20TransferTier just pass the tier address, token address and an ethers.js Signer. - * const existingTier = new ERC20TransferTier(address, tokenAddress, signer); - * - * // Once you have a ERC20TransferTier, you can call the smart contract methods: - * const tierValues = await existingTier.tierValues(); - * ``` - * - */ -export class ERC20TransferTier extends TierContract { - protected static readonly nameBookReference: string = - 'erc20TransferTierFactory'; - - /** - * Constructs a new ERC20TransferTier from a known address. - * - * @param address - The address of the ERC20TransferTier contract - * @param signer - An ethers.js Signer - * @returns A new ERC20TransferTier instance - * - */ - constructor(address: string, signer: Signer, tokenAddress: string = '') { - ERC20TransferTier.checkAddress(address); - super(address, signer); - const _erc20TransferTier = ERC20TransferTier__factory.connect( - address, - signer - ); - this.tierValues = _erc20TransferTier.tierValues; - this.token = tokenAddress; - } - - /** - * The ERC20 Token address that holds the Tier. - */ - public readonly token: string; - - /** - * Deploys a new ERC20TransferTier. - * - * @param signer - An ethers.js Signer - * @param args - Arguments for deploying a ERC20TransferTier @see ERC20TransferTierDeployArgs - * @param overrides - @see TxOverrides - * @returns A new ERC20TransferTier instance - * - */ - public static async deploy( - signer: Signer, - args: ERC20TransferTierDeployArgs, - overrides: TxOverrides = {} - ): Promise { - const erc20TransferTierFactory = ERC20TransferTierFactory__factory.connect( - this.getBookAddress(await this.getChainId(signer)), - signer - ); - - const tx = await erc20TransferTierFactory.createChildTyped(args, overrides); - const receipt = await tx.wait(); - const address = this.getNewChildFromReceipt( - receipt, - erc20TransferTierFactory - ); - return new ERC20TransferTier(address, signer, args.erc20); - } - - public readonly connect = (signer: Signer): ERC20TransferTier => { - return new ERC20TransferTier(this.address, signer, this.token); - }; - - /** - * Get a new instance with the token address provided. - * - * This method must be used if the token address is not provided in construction moment. The class use - * this address to make calculations related with the Tier. The token address provided should be the - * same that the Tier is using to work correctly. - * @param tokenAddress - The ERC20 token address related to the tier - * @returns A new instance with the token address ready to use the helper methods - */ - public readonly addTokenAddress = ( - tokenAddress: string - ): ERC20TransferTier => { - return new ERC20TransferTier(this.address, this.signer, tokenAddress); - }; - - /** - * Checks if address is registered as a child contract of this ERC20TransferTierFactory on a specific network - * - * @param signer - An ethers.js Signer - * @param maybeChild - Address to check registration for. - * @returns `true` if address was deployed by this contract factory, otherwise `false` - */ - public static isChild = async ( - signer: Signer, - maybeChild: string - ): Promise => { - return await this._isChild(signer, maybeChild); - }; - - /** - * Calculate how much amount of the token needed transfer to the tier contract or how much tokens the - * `account` will get back to reach the `desiredLevel`. - * - * @remarks - * Take in mind: - * - If the `account` directly send tokens to the ERC20TransferTier contract, those tokens are lost. All - * the calcualtions are make it with the tokens transfered by the account with setTier method. - * - If the `desired level` is higher than the current level, the amount returned will be the amount - * needed to obtain tier. - * - If the `desired level` is lower than the current level, the amount returned will be the amount - * that will get back. - * - If already have the `desired` tier, will return 0. - * - * @param desiredLevel - the tier level desired to get - * @param account - (optional) the account address to calculate. If not provided will use the signer of - * the instance - * @returns The amount t - */ - public async amountToTier( - account: string, - desiredLevel: number - ): Promise { - if (!this.token) { - throw new Error( - 'Missing ERC20 Token address in the instance. Please, use addTokenAddress' - ); - } - - const values = await this.tierValues(); - const currentTier = await this.currentTier( - account || (await this.signer.getAddress()) - ); - - const amountDestiny = desiredLevel - ? values[desiredLevel - 1] - : BigNumber.from(0); - - const amountOrigin = currentTier - ? values[currentTier - 1] - : BigNumber.from(0); - - return amountDestiny.sub(amountOrigin).abs(); - } - - public async approveTokenForTier( - amount: BigNumberish, - overrides: ReadTxOverrides = {} - ): Promise { - const token = IERC20__factory.connect(this.token, this.signer); - return await token.approve(this.address, amount, overrides); - } - - /** - * Complements the default solidity accessor for `tierValues`. Returns all the values in a - * listrather than requiring an index be specified. - * - * @param overrides - @see ReadTxOverrides - * @returns The immutable `tierValues[8]`. - */ - public readonly tierValues: ( - overrides?: ReadTxOverrides - ) => Promise; - - /** - * Updates the tier of an account tansfering balances of erc20 from/to the tiered account according - * to the difference in values. - * - * @remarks - * Users can set their own tier by calling `setTier`. - * - * Any failure to transfer in/out will rollback the tier change. The tiered account - * must ensure sufficient approvals before attempting to set a new tier. This throw - * an error if the user attempts to return to the ZERO tier. - * - * @param account - Account to change the tier for. - * @param endTier - Tier after the change. - * @param data - Arbitrary input to disambiguate ownership - * @param overrides - @see TxOverrides - */ - public declare readonly setTier: ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ) => Promise; -} - -/** - * @public - * Constructor config for ERC20TransferTier - */ -export interface ERC20TransferTierDeployArgs { - /** - * The erc20 token contract to transfer balances from/to during `setTier` - */ - erc20: string; - /** - * 8 values corresponding to minimum erc20 balances for tiers ONE through EIGHT - */ - tierValues: BigNumberish[]; -} diff --git a/src/contracts/tiers/erc721BalanceTier.ts b/src/contracts/tiers/erc721BalanceTier.ts deleted file mode 100644 index a84d970..0000000 --- a/src/contracts/tiers/erc721BalanceTier.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { Signer, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; -import { - ERC721BalanceTier__factory, - ERC721BalanceTierFactory__factory, - IERC721__factory, -} from '../../typechain'; - -/** - * @public - * A class for deploying and calling methods on a ERC721BalanceTier. - * The `ERC721BalanceTier` simply checks the current balance of an erc721 against tier values. - * As the current balance is always read from the erc721contract directly there is no historical - * block data. - * - * @remarks - * This class provides an easy way to deploy ERC721BalanceTiers using Rain's canonical factories, - * and methods for interacting with an already deployed ERC721BalanceTier. - * - * @example - * ```typescript - * import { ERC721BalanceTier } from 'rain-sdk' - * - * // To deploy a new ERC721BalanceTier, pass an ethers.js Signer and the config for the ERC721BalanceTier. - * const newTier = await ERC721BalanceTier.deploy(signer, ERC721BalanceTierConfigArgs); - * - * // To connect to an existing ERC721BalanceTier just pass the address and an ethers.js Signer. - * const existingTier = new ERC721BalanceTier(address, signer); - * - * // Once you have a ERC721BalanceTier, you can call the smart contract methods: - * const tierValues = await existingTier.tierValues(); - * ``` - * - */ -export class ERC721BalanceTier extends TierContract { - protected static readonly nameBookReference: string = - 'erc721BalanceTierFactory'; - - /** - * Constructs a new ERC721BalanceTier from a known address. - * - * @param address - The address of the ERC721BalanceTier contract - * @param signer - An ethers.js Signer - * @returns A new ERC721BalanceTier instance - * - */ - constructor(address: string, signer: Signer, tokenAddress: string = '') { - ERC721BalanceTier.checkAddress(address); - super(address, signer); - const _erc721BalanceTier = ERC721BalanceTier__factory.connect( - address, - signer - ); - this.tierValues = _erc721BalanceTier.tierValues; - this.token = tokenAddress; - } - - /** - * ERC721 Token address that track the Tier - */ - public readonly token: string; - - /** - * Deploys a new ERC721BalanceTier. - * - * @param signer - An ethers.js Signer - * @param args - Arguments for deploying a ERC721BalanceTier @see ERC721BalanceTierDeployArgs - * @param overrides - @see TxOverrides - * @returns A new ERC721BalanceTier instance - * - */ - public static deploy = async ( - signer: Signer, - args: ERC721BalanceTierDeployArgs, - overrides: TxOverrides = {} - ): Promise => { - const erc721BalanceTierFactory = ERC721BalanceTierFactory__factory.connect( - this.getBookAddress(await this.getChainId(signer)), - signer - ); - - const tx = await erc721BalanceTierFactory.createChildTyped(args, overrides); - const receipt = await tx.wait(); - const address = this.getNewChildFromReceipt( - receipt, - erc721BalanceTierFactory - ); - return new ERC721BalanceTier(address, signer, args.erc721); - }; - - public readonly connect = (signer: Signer): ERC721BalanceTier => { - return new ERC721BalanceTier(this.address, signer, this.token); - }; - - /** - * Get a new instance with the token address provided. - * - * This method must be used if the token address is not provided in construction moment. The class use - * this address to make calculations related with the Tier. The token address provided should be the - * same that the Tier is using to work correctly. - * @param tokenAddress - The ERC721 token address related to the tier - * @returns A new instance with the token address ready to use the helper methods - */ - public readonly addTokenAddress = ( - tokenAddress: string - ): ERC721BalanceTier => { - return new ERC721BalanceTier(this.address, this.signer, tokenAddress); - }; - - /** - * Checks if address is registered as a child contract of this ERC721BalanceTierFactory on a specific network - * - * @param signer - An ethers.js Signer - * @param maybeChild - Address to check registration for. - * @returns `true` if address was deployed by this contract factory, otherwise `false` - */ - public static isChild = async ( - signer: Signer, - maybeChild: string - ): Promise => { - return await this._isChild(signer, maybeChild); - }; - - /** - * Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`. - * - * Take in mind: - * - If the `desired level` is higher than the current level, the amount returned will be the amount - * needed to obtain or transfer to the `account`. - * - If the `desired level` is lower than the current level, the amount returned will be the amount - * needed to remove or transfer out of the `account`. - * - If already have the `desired` tier, will return 0 - * - * @param desiredLevel - the tier level desired to get - * @param account - (optional) the account address to calculate. If not provided will use the signer of - * the instance - * @returns The amount t - */ - public async amountToTier( - account: string, - desiredLevel: number, - ): Promise { - if (!this.token) { - throw new Error( - 'Missing ER721 Token address in the instance. Please, use addTokenAddress' - ); - } - - const token = IERC721__factory.connect(this.token, this.signer); - const values = await this.tierValues(); - - const amountDestiny = desiredLevel - ? values[desiredLevel - 1] - : BigNumber.from(0); - - const amountOrigin = await token.balanceOf( - account || (await this.signer.getAddress()) - ); - - return amountDestiny.sub(amountOrigin).abs(); - } - - /** - * It is NOT implemented in BalanceTiers. Always will throw an error - */ - public readonly setTier = async ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ): Promise => { - throw new Error('SET TIER: NOT IMPLEMENTED'); - }; - - /** - * Complements the default solidity accessor for `tierValues`. Returns all the values in a - * listrather than requiring an index be specified. - * - * @param overrides - @see ReadTxOverrides - * @returns The immutable `tierValues[8]`. - */ - public readonly tierValues: ( - overrides?: ReadTxOverrides - ) => Promise; -} - -/** - * @public - * Constructor config for ERC721BalanceTier - */ -export interface ERC721BalanceTierDeployArgs { - /** - * The erc721 token contract to check the balance of at `report` time - */ - erc721: string; - /** - * 8 values corresponding to minimum erc721 balances for tier 1 through tier 8 - */ - tierValues: BigNumberish[]; -} diff --git a/src/contracts/verify.ts b/src/contracts/verify.ts index 6e08d94..c9b5adb 100644 --- a/src/contracts/verify.ts +++ b/src/contracts/verify.ts @@ -94,7 +94,7 @@ export class Verify extends FactoryContract { this.requestBan = _verify.requestBan; this.requestRemove = _verify.requestRemove; this.state = _verify.state; - this.statusAtBlock = _verify.statusAtBlock; + this.statusAtTime = _verify.statusAtTime; this.hasRole = _verify.hasRole; this.getRoleAdmin = _verify.getRoleAdmin; @@ -345,19 +345,16 @@ export class Verify extends FactoryContract { ) => Promise; /** - * Derives a single `Status` from a `State` and a reference block number. - * - * @param state - The raw `State` to reduce into a `Status`. - * @param blockNumber - The block number to compare `State` against. - * @param overrides - @see ReadTxOverrides - * @returns A `BigNumber` that represent the `status` in `blockNumber`. + * Derives a single `Status` from a `State` and a reference timestamp. + * @param state_ - The raw `State` to reduce into a `Status`. + * @param timestamp_ - The timestamp to compare `State` against. + * @return status_ The status in `State` given `timestamp_`. */ - public readonly statusAtBlock: ( - state: VerifyState, - blockNumber: BigNumberish, + public readonly statusAtTime: ( + state_: VerifyState, + timestamp_: BigNumberish, overrides?: ReadTxOverrides ) => Promise; - /** * Check if an `account` have a determined `role` in the Verify Contract. * diff --git a/src/index.ts b/src/index.ts index 3e763c0..383aefc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -9,7 +9,6 @@ export * from './classes/vm'; export * from './addresses'; export * from './contracts/emissionsERC20'; -export * from './contracts/gatednft'; export * from './contracts/noticeBoard'; export * from './contracts/redeemableERC20'; export * from './contracts/redeemableERC20ClaimEscrow'; @@ -27,9 +26,6 @@ export * from './RainJS/SaleJS'; export * from './contracts/tiers/iTier'; export * from './contracts/tiers/combineTier'; -export * from './contracts/tiers/erc20BalanceTier'; -export * from './contracts/tiers/erc20TransferTier'; -export * from './contracts/tiers/erc721BalanceTier'; export * from './contracts/tiers/verifyTier'; export * from './contracts/generics/erc20'; diff --git a/src/typechain/CombineTier.ts b/src/typechain/CombineTier.ts index cd11f59..8751b7e 100644 --- a/src/typechain/CombineTier.ts +++ b/src/typechain/CombineTier.ts @@ -27,6 +27,16 @@ export type StateConfigStructOutput = [string[], BigNumber[]] & { constants: BigNumber[]; }; +export type CombineTierConfigStruct = { + combinedTiersLength: BigNumberish; + sourceConfig: StateConfigStruct; +}; + +export type CombineTierConfigStructOutput = [ + BigNumber, + StateConfigStructOutput +] & { combinedTiersLength: BigNumber; sourceConfig: StateConfigStructOutput }; + export type StorageOpcodesRangeStruct = { pointer: BigNumberish; length: BigNumberish; @@ -40,61 +50,70 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface CombineTierInterface extends utils.Interface { functions: { "fnPtrs()": FunctionFragment; - "initialize((bytes[],uint256[]))": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; + "initialize((uint256,(bytes[],uint256[])))": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "storageOpcodesRange()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; }; encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", - values: [StateConfigStruct] + values: [CombineTierConfigStruct] ): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] ): string; encodeFunctionData( functionFragment: "storageOpcodesRange", values?: undefined ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "storageOpcodesRange", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; events: { + "Initialize(address,tuple)": EventFragment; "Initialized(uint8)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } -export type InitializedEvent = TypedEvent<[number], { version: number }>; +export type InitializeEvent = TypedEvent< + [string, CombineTierConfigStructOutput], + { sender: string; config: CombineTierConfigStructOutput } +>; -export type InitializedEventFilter = TypedEventFilter; +export type InitializeEventFilter = TypedEventFilter; -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; +export type InitializedEvent = TypedEvent<[number], { version: number }>; -export type TierChangeEventFilter = TypedEventFilter; +export type InitializedEventFilter = TypedEventFilter; export interface CombineTier extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; @@ -126,128 +145,161 @@ export interface CombineTier extends BaseContract { fnPtrs(overrides?: CallOverrides): Promise<[string]>; initialize( - sourceConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { report_: BigNumber }>; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise<[void]>; + ): Promise<[BigNumber] & { time_: BigNumber }>; storageOpcodesRange( overrides?: CallOverrides ): Promise<[StorageOpcodesRangeStructOutput]>; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; }; fnPtrs(overrides?: CallOverrides): Promise; initialize( - sourceConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + callStatic: { fnPtrs(overrides?: CallOverrides): Promise; initialize( - sourceConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: CallOverrides ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; }; filters: { + "Initialize(address,tuple)"( + sender?: null, + config?: null + ): InitializeEventFilter; + Initialize(sender?: null, config?: null): InitializeEventFilter; + "Initialized(uint8)"(version?: null): InitializedEventFilter; Initialized(version?: null): InitializedEventFilter; - - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; }; estimateGas: { fnPtrs(overrides?: CallOverrides): Promise; initialize( - sourceConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; storageOpcodesRange(overrides?: CallOverrides): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; }; populateTransaction: { fnPtrs(overrides?: CallOverrides): Promise; initialize( - sourceConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; report( account_: string, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; }; } diff --git a/src/typechain/CombineTierFactory.ts b/src/typechain/CombineTierFactory.ts index a693b55..78ee479 100644 --- a/src/typechain/CombineTierFactory.ts +++ b/src/typechain/CombineTierFactory.ts @@ -27,10 +27,20 @@ export type StateConfigStructOutput = [string[], BigNumber[]] & { constants: BigNumber[]; }; +export type CombineTierConfigStruct = { + combinedTiersLength: BigNumberish; + sourceConfig: StateConfigStruct; +}; + +export type CombineTierConfigStructOutput = [ + BigNumber, + StateConfigStructOutput +] & { combinedTiersLength: BigNumber; sourceConfig: StateConfigStructOutput }; + export interface CombineTierFactoryInterface extends utils.Interface { functions: { "createChild(bytes)": FunctionFragment; - "createChildTyped((bytes[],uint256[]))": FunctionFragment; + "createChildTyped((uint256,(bytes[],uint256[])))": FunctionFragment; "implementation()": FunctionFragment; "isChild(address)": FunctionFragment; }; @@ -41,7 +51,7 @@ export interface CombineTierFactoryInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "createChildTyped", - values: [StateConfigStruct] + values: [CombineTierConfigStruct] ): string; encodeFunctionData( functionFragment: "implementation", @@ -119,7 +129,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - stateConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -134,7 +144,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - stateConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -146,7 +156,7 @@ export interface CombineTierFactory extends BaseContract { createChild(data_: BytesLike, overrides?: CallOverrides): Promise; createChildTyped( - stateConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: CallOverrides ): Promise; @@ -179,7 +189,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - stateConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -195,7 +205,7 @@ export interface CombineTierFactory extends BaseContract { ): Promise; createChildTyped( - stateConfig_: StateConfigStruct, + config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/ERC165Upgradeable.ts deleted file mode 100644 index 1846fc0..0000000 --- a/src/typechain/ERC165Upgradeable.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ERC165UpgradeableInterface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: { - "Initialized(uint8)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; -} - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface ERC165Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC165UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - }; - - estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/ERC20BalanceTier.ts b/src/typechain/ERC20BalanceTier.ts deleted file mode 100644 index a709916..0000000 --- a/src/typechain/ERC20BalanceTier.ts +++ /dev/null @@ -1,255 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC20BalanceTierConfigStruct = { - erc20: string; - tierValues: BigNumberish[]; -}; - -export type ERC20BalanceTierConfigStructOutput = [string, BigNumber[]] & { - erc20: string; - tierValues: BigNumber[]; -}; - -export interface ERC20BalanceTierInterface extends utils.Interface { - functions: { - "initialize((address,uint256[8]))": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; - "tierValues()": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "initialize", - values: [ERC20BalanceTierConfigStruct] - ): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; - encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "tierValues", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tierValues", data: BytesLike): Result; - - events: { - "Initialize(address,address)": EventFragment; - "InitializeValueTier(address,address)": EventFragment; - "Initialized(uint8)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; -} - -export type InitializeEvent = TypedEvent< - [string, string], - { sender: string; erc20: string } ->; - -export type InitializeEventFilter = TypedEventFilter; - -export type InitializeValueTierEvent = TypedEvent< - [string, string], - { sender: string; pointer: string } ->; - -export type InitializeValueTierEventFilter = - TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - -export interface ERC20BalanceTier extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20BalanceTierInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - initialize( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise<[void]>; - - tierValues( - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { tierValues_: BigNumber[] }>; - }; - - initialize( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - - callStatic: { - initialize( - config_: ERC20BalanceTierConfigStruct, - overrides?: CallOverrides - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; - - filters: { - "Initialize(address,address)"( - sender?: null, - erc20?: null - ): InitializeEventFilter; - Initialize(sender?: null, erc20?: null): InitializeEventFilter; - - "InitializeValueTier(address,address)"( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - InitializeValueTier( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - }; - - estimateGas: { - initialize( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - initialize( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report( - account_: string, - overrides?: CallOverrides - ): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/ERC20BalanceTierFactory.ts b/src/typechain/ERC20BalanceTierFactory.ts deleted file mode 100644 index 3b04954..0000000 --- a/src/typechain/ERC20BalanceTierFactory.ts +++ /dev/null @@ -1,209 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC20BalanceTierConfigStruct = { - erc20: string; - tierValues: BigNumberish[]; -}; - -export type ERC20BalanceTierConfigStructOutput = [string, BigNumber[]] & { - erc20: string; - tierValues: BigNumber[]; -}; - -export interface ERC20BalanceTierFactoryInterface extends utils.Interface { - functions: { - "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256[8]))": FunctionFragment; - "implementation()": FunctionFragment; - "isChild(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "createChild", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "createChildTyped", - values: [ERC20BalanceTierConfigStruct] - ): string; - encodeFunctionData( - functionFragment: "implementation", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "isChild", values: [string]): string; - - decodeFunctionResult( - functionFragment: "createChild", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createChildTyped", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "implementation", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; - - events: { - "Implementation(address,address)": EventFragment; - "NewChild(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; - getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; -} - -export type ImplementationEvent = TypedEvent< - [string, string], - { sender: string; implementation: string } ->; - -export type ImplementationEventFilter = TypedEventFilter; - -export type NewChildEvent = TypedEvent< - [string, string], - { sender: string; child: string } ->; - -export type NewChildEventFilter = TypedEventFilter; - -export interface ERC20BalanceTierFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20BalanceTierFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise<[string]>; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; - }; - - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - - callStatic: { - createChild(data_: BytesLike, overrides?: CallOverrides): Promise; - - createChildTyped( - config_: ERC20BalanceTierConfigStruct, - overrides?: CallOverrides - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "Implementation(address,address)"( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - Implementation( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - - "NewChild(address,address)"( - sender?: null, - child?: null - ): NewChildEventFilter; - NewChild(sender?: null, child?: null): NewChildEventFilter; - }; - - estimateGas: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild( - maybeChild_: string, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC721MetadataUpgradeable.ts b/src/typechain/ERC20Snapshot.ts similarity index 55% rename from src/typechain/IERC721MetadataUpgradeable.ts rename to src/typechain/ERC20Snapshot.ts index 1121973..0712e53 100644 --- a/src/typechain/IERC721MetadataUpgradeable.ts +++ b/src/typechain/ERC20Snapshot.ts @@ -17,88 +17,91 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface IERC721MetadataUpgradeableInterface extends utils.Interface { +export interface ERC20SnapshotInterface extends utils.Interface { functions: { + "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; + "balanceOfAt(address,uint256)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; + "totalSupply()": FunctionFragment; + "totalSupplyAt(uint256)": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; }; + encodeFunctionData( + functionFragment: "allowance", + values: [string, string] + ): string; encodeFunctionData( functionFragment: "approve", values: [string, BigNumberish] ): string; encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] + functionFragment: "balanceOfAt", + values: [string, BigNumberish] ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] + functionFragment: "decreaseAllowance", + values: [string, BigNumberish] ): string; encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] + functionFragment: "increaseAllowance", + values: [string, BigNumberish] ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] + functionFragment: "totalSupply", + values?: undefined ): string; encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] + functionFragment: "totalSupplyAt", + values: [BigNumberish] ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] + functionFragment: "transfer", + values: [string, BigNumberish] ): string; encodeFunctionData( functionFragment: "transferFrom", values: [string, string, BigNumberish] ): string; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "getApproved", + functionFragment: "balanceOfAt", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "isApprovedForAll", + functionFragment: "decreaseAllowance", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "safeTransferFrom", + functionFragment: "increaseAllowance", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "setApprovalForAll", + functionFragment: "totalSupply", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "supportsInterface", + functionFragment: "totalSupplyAt", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; decodeFunctionResult( functionFragment: "transferFrom", data: BytesLike @@ -106,42 +109,39 @@ export interface IERC721MetadataUpgradeableInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; + "Snapshot(uint256)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } export type ApprovalEvent = TypedEvent< [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } + { owner: string; spender: string; value: BigNumber } >; export type ApprovalEventFilter = TypedEventFilter; -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; +export type SnapshotEvent = TypedEvent<[BigNumber], { id: BigNumber }>; -export type ApprovalForAllEventFilter = TypedEventFilter; +export type SnapshotEventFilter = TypedEventFilter; export type TransferEvent = TypedEvent< [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } + { from: string; to: string; value: BigNumber } >; export type TransferEventFilter = TypedEventFilter; -export interface IERC721MetadataUpgradeable extends BaseContract { +export interface ERC20Snapshot extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: IERC721MetadataUpgradeableInterface; + interface: ERC20SnapshotInterface; queryFilter( event: TypedEventFilter, @@ -163,368 +163,329 @@ export interface IERC721MetadataUpgradeable extends BaseContract { removeListener: OnEvent; functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( + allowance( owner: string, + spender: string, overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; + ): Promise<[BigNumber]>; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: string }>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - ownerOf( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; + ): Promise<[BigNumber]>; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + decimals(overrides?: CallOverrides): Promise<[number]>; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - _approved: boolean, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; + name(overrides?: CallOverrides): Promise<[string]>; symbol(overrides?: CallOverrides): Promise<[string]>; - tokenURI( - tokenId: BigNumberish, + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise<[string]>; + ): Promise<[BigNumber]>; + + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; + allowance( + owner: string, + spender: string, + overrides?: CallOverrides + ): Promise; + approve( - to: string, - tokenId: BigNumberish, + spender: string, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - balanceOf(owner: string, overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - getApproved( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; + decimals(overrides?: CallOverrides): Promise; - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - _approved: boolean, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; callStatic: { + allowance( + owner: string, + spender: string, + overrides?: CallOverrides + ): Promise; + approve( - to: string, - tokenId: BigNumberish, + spender: string, + amount: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - balanceOf(owner: string, overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - getApproved( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - isApprovedForAll( - owner: string, - operator: string, + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: CallOverrides ): Promise; - name(overrides?: CallOverrides): Promise; + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: CallOverrides + ): Promise; - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + name(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; + symbol(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; + totalSupply(overrides?: CallOverrides): Promise; - setApprovalForAll( - operator: string, - _approved: boolean, + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - supportsInterface( - interfaceId: BytesLike, + transfer( + to: string, + amount: BigNumberish, overrides?: CallOverrides ): Promise; - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; }; filters: { "Approval(address,address,uint256)"( owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null + spender?: string | null, + value?: null ): ApprovalEventFilter; Approval( owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null + spender?: string | null, + value?: null ): ApprovalEventFilter; - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; + "Snapshot(uint256)"(id?: null): SnapshotEventFilter; + Snapshot(id?: null): SnapshotEventFilter; "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, - tokenId?: BigNumberish | null + value?: null ): TransferEventFilter; Transfer( from?: string | null, to?: string | null, - tokenId?: BigNumberish | null + value?: null ): TransferEventFilter; }; estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, + allowance( + owner: string, + spender: string, overrides?: CallOverrides ): Promise; - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - name(overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - ownerOf( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + decimals(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - _approved: boolean, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI( - tokenId: BigNumberish, + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( + allowance( owner: string, + spender: string, overrides?: CallOverrides ): Promise; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - isApprovedForAll( - owner: string, - operator: string, + balanceOf( + account: string, overrides?: CallOverrides ): Promise; - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + decimals(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - _approved: boolean, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; + name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI( - tokenId: BigNumberish, + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; diff --git a/src/typechain/ERC20TransferTier.ts b/src/typechain/ERC20TransferTier.ts deleted file mode 100644 index 3eabeec..0000000 --- a/src/typechain/ERC20TransferTier.ts +++ /dev/null @@ -1,255 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC20TransferTierConfigStruct = { - erc20: string; - tierValues: BigNumberish[]; -}; - -export type ERC20TransferTierConfigStructOutput = [string, BigNumber[]] & { - erc20: string; - tierValues: BigNumber[]; -}; - -export interface ERC20TransferTierInterface extends utils.Interface { - functions: { - "initialize((address,uint256[8]))": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; - "tierValues()": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "initialize", - values: [ERC20TransferTierConfigStruct] - ): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; - encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "tierValues", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tierValues", data: BytesLike): Result; - - events: { - "Initialize(address,address)": EventFragment; - "InitializeValueTier(address,address)": EventFragment; - "Initialized(uint8)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; -} - -export type InitializeEvent = TypedEvent< - [string, string], - { sender: string; erc20: string } ->; - -export type InitializeEventFilter = TypedEventFilter; - -export type InitializeValueTierEvent = TypedEvent< - [string, string], - { sender: string; pointer: string } ->; - -export type InitializeValueTierEventFilter = - TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - -export interface ERC20TransferTier extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20TransferTierInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - initialize( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - setTier( - account_: string, - endTier_: BigNumberish, - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - tierValues( - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { tierValues_: BigNumber[] }>; - }; - - initialize( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - account_: string, - endTier_: BigNumberish, - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - - callStatic: { - initialize( - config_: ERC20TransferTierConfigStruct, - overrides?: CallOverrides - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - account_: string, - endTier_: BigNumberish, - data_: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; - - filters: { - "Initialize(address,address)"( - sender?: null, - erc20?: null - ): InitializeEventFilter; - Initialize(sender?: null, erc20?: null): InitializeEventFilter; - - "InitializeValueTier(address,address)"( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - InitializeValueTier( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - }; - - estimateGas: { - initialize( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - account_: string, - endTier_: BigNumberish, - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - initialize( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report( - account_: string, - overrides?: CallOverrides - ): Promise; - - setTier( - account_: string, - endTier_: BigNumberish, - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/ERC20TransferTierFactory.ts b/src/typechain/ERC20TransferTierFactory.ts deleted file mode 100644 index a5362ab..0000000 --- a/src/typechain/ERC20TransferTierFactory.ts +++ /dev/null @@ -1,209 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC20TransferTierConfigStruct = { - erc20: string; - tierValues: BigNumberish[]; -}; - -export type ERC20TransferTierConfigStructOutput = [string, BigNumber[]] & { - erc20: string; - tierValues: BigNumber[]; -}; - -export interface ERC20TransferTierFactoryInterface extends utils.Interface { - functions: { - "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256[8]))": FunctionFragment; - "implementation()": FunctionFragment; - "isChild(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "createChild", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "createChildTyped", - values: [ERC20TransferTierConfigStruct] - ): string; - encodeFunctionData( - functionFragment: "implementation", - values?: undefined - ): string; - encodeFunctionData(functionFragment: "isChild", values: [string]): string; - - decodeFunctionResult( - functionFragment: "createChild", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createChildTyped", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "implementation", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; - - events: { - "Implementation(address,address)": EventFragment; - "NewChild(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; - getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; -} - -export type ImplementationEvent = TypedEvent< - [string, string], - { sender: string; implementation: string } ->; - -export type ImplementationEventFilter = TypedEventFilter; - -export type NewChildEvent = TypedEvent< - [string, string], - { sender: string; child: string } ->; - -export type NewChildEventFilter = TypedEventFilter; - -export interface ERC20TransferTierFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC20TransferTierFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise<[string]>; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; - }; - - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - - callStatic: { - createChild(data_: BytesLike, overrides?: CallOverrides): Promise; - - createChildTyped( - config_: ERC20TransferTierConfigStruct, - overrides?: CallOverrides - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "Implementation(address,address)"( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - Implementation( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - - "NewChild(address,address)"( - sender?: null, - child?: null - ): NewChildEventFilter; - NewChild(sender?: null, child?: null): NewChildEventFilter; - }; - - estimateGas: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC20TransferTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - implementation(overrides?: CallOverrides): Promise; - - isChild( - maybeChild_: string, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/ERC721BalanceTier.ts b/src/typechain/ERC721BalanceTier.ts deleted file mode 100644 index 3f71077..0000000 --- a/src/typechain/ERC721BalanceTier.ts +++ /dev/null @@ -1,268 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC721BalanceTierConfigStruct = { - erc721: string; - tierValues: BigNumberish[]; -}; - -export type ERC721BalanceTierConfigStructOutput = [string, BigNumber[]] & { - erc721: string; - tierValues: BigNumber[]; -}; - -export interface ERC721BalanceTierInterface extends utils.Interface { - functions: { - "erc721()": FunctionFragment; - "initialize((address,uint256[8]))": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; - "tierValues()": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "erc721", values?: undefined): string; - encodeFunctionData( - functionFragment: "initialize", - values: [ERC721BalanceTierConfigStruct] - ): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; - encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "tierValues", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "erc721", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tierValues", data: BytesLike): Result; - - events: { - "Initialize(address,address)": EventFragment; - "InitializeValueTier(address,address)": EventFragment; - "Initialized(uint8)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; -} - -export type InitializeEvent = TypedEvent< - [string, string], - { sender: string; erc721: string } ->; - -export type InitializeEventFilter = TypedEventFilter; - -export type InitializeValueTierEvent = TypedEvent< - [string, string], - { sender: string; pointer: string } ->; - -export type InitializeValueTierEventFilter = - TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - -export interface ERC721BalanceTier extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC721BalanceTierInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - erc721(overrides?: CallOverrides): Promise<[string]>; - - initialize( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise<[void]>; - - tierValues( - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { tierValues_: BigNumber[] }>; - }; - - erc721(overrides?: CallOverrides): Promise; - - initialize( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - - callStatic: { - erc721(overrides?: CallOverrides): Promise; - - initialize( - config_: ERC721BalanceTierConfigStruct, - overrides?: CallOverrides - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; - - filters: { - "Initialize(address,address)"( - sender?: null, - erc721?: null - ): InitializeEventFilter; - Initialize(sender?: null, erc721?: null): InitializeEventFilter; - - "InitializeValueTier(address,address)"( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - InitializeValueTier( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - }; - - estimateGas: { - erc721(overrides?: CallOverrides): Promise; - - initialize( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report(account_: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - erc721(overrides?: CallOverrides): Promise; - - initialize( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - report( - account_: string, - overrides?: CallOverrides - ): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - tierValues(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/ERC721BalanceTierFactory.ts b/src/typechain/ERC721BalanceTierFactory.ts deleted file mode 100644 index 91518d5..0000000 --- a/src/typechain/ERC721BalanceTierFactory.ts +++ /dev/null @@ -1,190 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ERC721BalanceTierConfigStruct = { - erc721: string; - tierValues: BigNumberish[]; -}; - -export type ERC721BalanceTierConfigStructOutput = [string, BigNumber[]] & { - erc721: string; - tierValues: BigNumber[]; -}; - -export interface ERC721BalanceTierFactoryInterface extends utils.Interface { - functions: { - "createChild(bytes)": FunctionFragment; - "createChildTyped((address,uint256[8]))": FunctionFragment; - "isChild(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "createChild", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "createChildTyped", - values: [ERC721BalanceTierConfigStruct] - ): string; - encodeFunctionData(functionFragment: "isChild", values: [string]): string; - - decodeFunctionResult( - functionFragment: "createChild", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createChildTyped", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; - - events: { - "Implementation(address,address)": EventFragment; - "NewChild(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; - getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; -} - -export type ImplementationEvent = TypedEvent< - [string, string], - { sender: string; implementation: string } ->; - -export type ImplementationEventFilter = TypedEventFilter; - -export type NewChildEvent = TypedEvent< - [string, string], - { sender: string; child: string } ->; - -export type NewChildEventFilter = TypedEventFilter; - -export interface ERC721BalanceTierFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC721BalanceTierFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; - }; - - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - - callStatic: { - createChild(data_: BytesLike, overrides?: CallOverrides): Promise; - - createChildTyped( - config_: ERC721BalanceTierConfigStruct, - overrides?: CallOverrides - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "Implementation(address,address)"( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - Implementation( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - - "NewChild(address,address)"( - sender?: null, - child?: null - ): NewChildEventFilter; - NewChild(sender?: null, child?: null): NewChildEventFilter; - }; - - estimateGas: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ERC721BalanceTierConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild( - maybeChild_: string, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/EmissionsERC20.ts b/src/typechain/EmissionsERC20.ts index 5a7f199..4753ddd 100644 --- a/src/typechain/EmissionsERC20.ts +++ b/src/typechain/EmissionsERC20.ts @@ -81,9 +81,10 @@ export interface EmissionsERC20Interface extends utils.Interface { "increaseAllowance(address,uint256)": FunctionFragment; "initialize((bool,(string,string,address,uint256),(bytes[],uint256[])))": FunctionFragment; "name()": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "storageOpcodesRange()": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -126,15 +127,22 @@ export interface EmissionsERC20Interface extends utils.Interface { values: [EmissionsERC20ConfigStruct] ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] ): string; encodeFunctionData( functionFragment: "storageOpcodesRange", values?: undefined ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( functionFragment: "totalSupply", @@ -174,11 +182,18 @@ export interface EmissionsERC20Interface extends utils.Interface { decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "storageOpcodesRange", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -193,9 +208,8 @@ export interface EmissionsERC20Interface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "Claim(address,address,bytes)": EventFragment; - "Initialize(address,bool)": EventFragment; + "Initialize(address,tuple)": EventFragment; "Initialized(uint8)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; @@ -203,7 +217,6 @@ export interface EmissionsERC20Interface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Claim"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -222,8 +235,8 @@ export type ClaimEvent = TypedEvent< export type ClaimEventFilter = TypedEventFilter; export type InitializeEvent = TypedEvent< - [string, boolean], - { sender: string; allowDelegatedClaims: boolean } + [string, EmissionsERC20ConfigStructOutput], + { sender: string; config: EmissionsERC20ConfigStructOutput } >; export type InitializeEventFilter = TypedEventFilter; @@ -232,19 +245,6 @@ export type InitializedEvent = TypedEvent<[number], { version: number }>; export type InitializedEventFilter = TypedEventFilter; -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - export type TransferEvent = TypedEvent< [string, string, BigNumber], { from: string; to: string; value: BigNumber } @@ -329,19 +329,28 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise<[string]>; - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides - ): Promise<[void]>; + ): Promise<[BigNumber]>; storageOpcodesRange( overrides?: CallOverrides ): Promise<[StorageOpcodesRangeStructOutput]>; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + symbol(overrides?: CallOverrides): Promise<[string]>; totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; @@ -410,19 +419,28 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -491,19 +509,28 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -541,33 +568,15 @@ export interface EmissionsERC20 extends BaseContract { ): ClaimEventFilter; Claim(sender?: null, claimant?: null, data?: null): ClaimEventFilter; - "Initialize(address,bool)"( - sender?: null, - allowDelegatedClaims?: null - ): InitializeEventFilter; - Initialize( + "Initialize(address,tuple)"( sender?: null, - allowDelegatedClaims?: null + config?: null ): InitializeEventFilter; + Initialize(sender?: null, config?: null): InitializeEventFilter; "Initialized(uint8)"(version?: null): InitializedEventFilter; Initialized(version?: null): InitializedEventFilter; - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, @@ -631,17 +640,26 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides ): Promise; storageOpcodesRange(overrides?: CallOverrides): Promise; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -718,13 +736,14 @@ export interface EmissionsERC20 extends BaseContract { report( account_: string, + arg1: BigNumberish[], overrides?: CallOverrides ): Promise; - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, + reportTimeForTier( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -732,6 +751,11 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; diff --git a/src/typechain/FixedPointMathTest.ts b/src/typechain/FixedPointMathTest.ts new file mode 100644 index 0000000..7bf943b --- /dev/null +++ b/src/typechain/FixedPointMathTest.ts @@ -0,0 +1,248 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface FixedPointMathTestInterface extends utils.Interface { + functions: { + "fixedPointDiv(uint256,uint256)": FunctionFragment; + "fixedPointMul(uint256,uint256)": FunctionFragment; + "scale18(uint256,uint256)": FunctionFragment; + "scaleBy(uint256,int8)": FunctionFragment; + "scaleN(uint256,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "fixedPointDiv", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "fixedPointMul", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "scale18", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "scaleBy", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "scaleN", + values: [BigNumberish, BigNumberish] + ): string; + + decodeFunctionResult( + functionFragment: "fixedPointDiv", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "fixedPointMul", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "scale18", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "scaleBy", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "scaleN", data: BytesLike): Result; + + events: {}; +} + +export interface FixedPointMathTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FixedPointMathTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + fixedPointDiv( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + fixedPointMul( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + scale18( + a_: BigNumberish, + aDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + scaleBy( + a_: BigNumberish, + scaleBy_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + scaleN( + a_: BigNumberish, + targetDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + }; + + fixedPointDiv( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fixedPointMul( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scale18( + a_: BigNumberish, + aDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleBy( + a_: BigNumberish, + scaleBy_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleN( + a_: BigNumberish, + targetDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + callStatic: { + fixedPointDiv( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fixedPointMul( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scale18( + a_: BigNumberish, + aDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleBy( + a_: BigNumberish, + scaleBy_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleN( + a_: BigNumberish, + targetDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + fixedPointDiv( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fixedPointMul( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scale18( + a_: BigNumberish, + aDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleBy( + a_: BigNumberish, + scaleBy_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleN( + a_: BigNumberish, + targetDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + fixedPointDiv( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fixedPointMul( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scale18( + a_: BigNumberish, + aDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleBy( + a_: BigNumberish, + scaleBy_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + scaleN( + a_: BigNumberish, + targetDecimals_: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/GatedNFT.ts b/src/typechain/GatedNFT.ts deleted file mode 100644 index d24ff61..0000000 --- a/src/typechain/GatedNFT.ts +++ /dev/null @@ -1,948 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ConfigStruct = { - name: string; - symbol: string; - description: string; - animationUrl: string; - imageUrl: string; - animationHash: BytesLike; - imageHash: BytesLike; -}; - -export type ConfigStructOutput = [ - string, - string, - string, - string, - string, - string, - string -] & { - name: string; - symbol: string; - description: string; - animationUrl: string; - imageUrl: string; - animationHash: string; - imageHash: string; -}; - -export interface GatedNFTInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "initialize(address,(string,string,string,string,string,bytes32,bytes32),address,uint256,uint256,uint8,uint256,address,uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "mint(address)": FunctionFragment; - "name()": FunctionFragment; - "owner()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "royaltyInfo(uint256,uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tier()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - "updateRoyaltyRecipient(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "initialize", - values: [ - string, - ConfigStruct, - string, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - string, - BigNumberish - ] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "mint", values: [string]): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "royaltyInfo", - values: [BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData(functionFragment: "tier", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "updateRoyaltyRecipient", - values: [string] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "royaltyInfo", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tier", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "updateRoyaltyRecipient", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "CreatedGatedNFT(address,address,tuple,address,uint256,uint256,uint8,uint256,address,uint256)": EventFragment; - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - "UpdatedRoyaltyRecipient(address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "CreatedGatedNFT"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; - getEvent(nameOrSignatureOrTopic: "UpdatedRoyaltyRecipient"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type CreatedGatedNFTEvent = TypedEvent< - [ - string, - string, - ConfigStructOutput, - string, - BigNumber, - BigNumber, - number, - BigNumber, - string, - BigNumber - ], - { - contractAddress: string; - creator: string; - config: ConfigStructOutput; - tier: string; - minimumStatus: BigNumber; - maxPerAddress: BigNumber; - transferrable: number; - maxMintable: BigNumber; - royaltyRecipient: string; - royaltyBPS: BigNumber; - } ->; - -export type CreatedGatedNFTEventFilter = TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export type UpdatedRoyaltyRecipientEvent = TypedEvent< - [string], - { royaltyRecipient: string } ->; - -export type UpdatedRoyaltyRecipientEventFilter = - TypedEventFilter; - -export interface GatedNFT extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatedNFTInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - initialize( - owner_: string, - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - mint( - to: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - owner(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - royaltyInfo( - arg0: BigNumberish, - salePrice_: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tier(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateRoyaltyRecipient( - royaltyRecipient_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - initialize( - owner_: string, - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - mint( - to: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - royaltyInfo( - arg0: BigNumberish, - salePrice_: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tier(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateRoyaltyRecipient( - royaltyRecipient_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - initialize( - owner_: string, - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - mint(to: string, overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - royaltyInfo( - arg0: BigNumberish, - salePrice_: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tier(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: CallOverrides - ): Promise; - - updateRoyaltyRecipient( - royaltyRecipient_: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "CreatedGatedNFT(address,address,tuple,address,uint256,uint256,uint8,uint256,address,uint256)"( - contractAddress?: null, - creator?: null, - config?: null, - tier?: null, - minimumStatus?: null, - maxPerAddress?: null, - transferrable?: null, - maxMintable?: null, - royaltyRecipient?: null, - royaltyBPS?: null - ): CreatedGatedNFTEventFilter; - CreatedGatedNFT( - contractAddress?: null, - creator?: null, - config?: null, - tier?: null, - minimumStatus?: null, - maxPerAddress?: null, - transferrable?: null, - maxMintable?: null, - royaltyRecipient?: null, - royaltyBPS?: null - ): CreatedGatedNFTEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - - "UpdatedRoyaltyRecipient(address)"( - royaltyRecipient?: null - ): UpdatedRoyaltyRecipientEventFilter; - UpdatedRoyaltyRecipient( - royaltyRecipient?: null - ): UpdatedRoyaltyRecipientEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - initialize( - owner_: string, - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - mint( - to: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - royaltyInfo( - arg0: BigNumberish, - salePrice_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tier(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateRoyaltyRecipient( - royaltyRecipient_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - initialize( - owner_: string, - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS_: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - mint( - to: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - owner(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - royaltyInfo( - arg0: BigNumberish, - salePrice_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tier(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - updateRoyaltyRecipient( - royaltyRecipient_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/GatedNFTFactory.ts b/src/typechain/GatedNFTFactory.ts deleted file mode 100644 index 8fa9148..0000000 --- a/src/typechain/GatedNFTFactory.ts +++ /dev/null @@ -1,252 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export type ConfigStruct = { - name: string; - symbol: string; - description: string; - animationUrl: string; - imageUrl: string; - animationHash: BytesLike; - imageHash: BytesLike; -}; - -export type ConfigStructOutput = [ - string, - string, - string, - string, - string, - string, - string -] & { - name: string; - symbol: string; - description: string; - animationUrl: string; - imageUrl: string; - animationHash: string; - imageHash: string; -}; - -export interface GatedNFTFactoryInterface extends utils.Interface { - functions: { - "createChild(bytes)": FunctionFragment; - "createChildTyped((string,string,string,string,string,bytes32,bytes32),address,uint256,uint256,uint8,uint256,address,uint256)": FunctionFragment; - "isChild(address)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "createChild", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "createChildTyped", - values: [ - ConfigStruct, - string, - BigNumberish, - BigNumberish, - BigNumberish, - BigNumberish, - string, - BigNumberish - ] - ): string; - encodeFunctionData(functionFragment: "isChild", values: [string]): string; - - decodeFunctionResult( - functionFragment: "createChild", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "createChildTyped", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; - - events: { - "Implementation(address,address)": EventFragment; - "NewChild(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; - getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; -} - -export type ImplementationEvent = TypedEvent< - [string, string], - { sender: string; implementation: string } ->; - -export type ImplementationEventFilter = TypedEventFilter; - -export type NewChildEvent = TypedEvent< - [string, string], - { sender: string; child: string } ->; - -export type NewChildEventFilter = TypedEventFilter; - -export interface GatedNFTFactory extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: GatedNFTFactoryInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; - }; - - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - - callStatic: { - createChild(data_: BytesLike, overrides?: CallOverrides): Promise; - - createChildTyped( - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - filters: { - "Implementation(address,address)"( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - Implementation( - sender?: null, - implementation?: null - ): ImplementationEventFilter; - - "NewChild(address,address)"( - sender?: null, - child?: null - ): NewChildEventFilter; - NewChild(sender?: null, child?: null): NewChildEventFilter; - }; - - estimateGas: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild(maybeChild_: string, overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - createChild( - data_: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - createChildTyped( - config_: ConfigStruct, - tier_: string, - minimumStatus_: BigNumberish, - maxPerAddress_: BigNumberish, - transferrable_: BigNumberish, - maxMintable_: BigNumberish, - royaltyRecipient_: string, - royaltyBPS: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - isChild( - maybeChild_: string, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC165Upgradeable.ts b/src/typechain/IERC165Upgradeable.ts deleted file mode 100644 index 1e55fb4..0000000 --- a/src/typechain/IERC165Upgradeable.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC165UpgradeableInterface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC165Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC165UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC4626.ts b/src/typechain/IERC4626.ts new file mode 100644 index 0000000..f752235 --- /dev/null +++ b/src/typechain/IERC4626.ts @@ -0,0 +1,591 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC4626Interface extends utils.Interface { + functions: { + "asset()": FunctionFragment; + "convertToAssets(uint256)": FunctionFragment; + "convertToShares(uint256)": FunctionFragment; + "deposit(uint256,address)": FunctionFragment; + "maxDeposit(address)": FunctionFragment; + "maxMint(address)": FunctionFragment; + "maxRedeem(address)": FunctionFragment; + "maxWithdraw(address)": FunctionFragment; + "mint(uint256,address)": FunctionFragment; + "previewDeposit(uint256)": FunctionFragment; + "previewMint(uint256)": FunctionFragment; + "previewRedeem(uint256)": FunctionFragment; + "previewWithdraw(uint256)": FunctionFragment; + "redeem(uint256,address,address)": FunctionFragment; + "totalAssets()": FunctionFragment; + "withdraw(uint256,address,address)": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "asset", values?: undefined): string; + encodeFunctionData( + functionFragment: "convertToAssets", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "convertToShares", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "deposit", + values: [BigNumberish, string] + ): string; + encodeFunctionData(functionFragment: "maxDeposit", values: [string]): string; + encodeFunctionData(functionFragment: "maxMint", values: [string]): string; + encodeFunctionData(functionFragment: "maxRedeem", values: [string]): string; + encodeFunctionData(functionFragment: "maxWithdraw", values: [string]): string; + encodeFunctionData( + functionFragment: "mint", + values: [BigNumberish, string] + ): string; + encodeFunctionData( + functionFragment: "previewDeposit", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "previewMint", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "previewRedeem", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "previewWithdraw", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "redeem", + values: [BigNumberish, string, string] + ): string; + encodeFunctionData( + functionFragment: "totalAssets", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [BigNumberish, string, string] + ): string; + + decodeFunctionResult(functionFragment: "asset", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "convertToAssets", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "convertToShares", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "maxDeposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "maxMint", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "maxRedeem", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "maxWithdraw", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "previewDeposit", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "previewMint", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "previewRedeem", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "previewWithdraw", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalAssets", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + + events: { + "Deposit(address,address,uint256,uint256)": EventFragment; + "Withdraw(address,address,address,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdraw"): EventFragment; +} + +export type DepositEvent = TypedEvent< + [string, string, BigNumber, BigNumber], + { caller: string; owner: string; assets: BigNumber; shares: BigNumber } +>; + +export type DepositEventFilter = TypedEventFilter; + +export type WithdrawEvent = TypedEvent< + [string, string, string, BigNumber, BigNumber], + { + caller: string; + receiver: string; + owner: string; + assets: BigNumber; + shares: BigNumber; + } +>; + +export type WithdrawEventFilter = TypedEventFilter; + +export interface IERC4626 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC4626Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + asset( + overrides?: CallOverrides + ): Promise<[string] & { assetTokenAddress: string }>; + + convertToAssets( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { assets: BigNumber }>; + + convertToShares( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { shares: BigNumber }>; + + deposit( + assets: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxDeposit( + receiver: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { maxAssets: BigNumber }>; + + maxMint( + receiver: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { maxShares: BigNumber }>; + + maxRedeem( + owner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { maxShares: BigNumber }>; + + maxWithdraw( + owner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { maxAssets: BigNumber }>; + + mint( + shares: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + previewDeposit( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { shares: BigNumber }>; + + previewMint( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { assets: BigNumber }>; + + previewRedeem( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { assets: BigNumber }>; + + previewWithdraw( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { shares: BigNumber }>; + + redeem( + shares: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + totalAssets( + overrides?: CallOverrides + ): Promise<[BigNumber] & { totalManagedAssets: BigNumber }>; + + withdraw( + assets: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + asset(overrides?: CallOverrides): Promise; + + convertToAssets( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + convertToShares( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + deposit( + assets: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxDeposit(receiver: string, overrides?: CallOverrides): Promise; + + maxMint(receiver: string, overrides?: CallOverrides): Promise; + + maxRedeem(owner: string, overrides?: CallOverrides): Promise; + + maxWithdraw(owner: string, overrides?: CallOverrides): Promise; + + mint( + shares: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + previewDeposit( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewMint( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewRedeem( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewWithdraw( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + redeem( + shares: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + withdraw( + assets: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + asset(overrides?: CallOverrides): Promise; + + convertToAssets( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + convertToShares( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + deposit( + assets: BigNumberish, + receiver: string, + overrides?: CallOverrides + ): Promise; + + maxDeposit(receiver: string, overrides?: CallOverrides): Promise; + + maxMint(receiver: string, overrides?: CallOverrides): Promise; + + maxRedeem(owner: string, overrides?: CallOverrides): Promise; + + maxWithdraw(owner: string, overrides?: CallOverrides): Promise; + + mint( + shares: BigNumberish, + receiver: string, + overrides?: CallOverrides + ): Promise; + + previewDeposit( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewMint( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewRedeem( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewWithdraw( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + redeem( + shares: BigNumberish, + receiver: string, + owner: string, + overrides?: CallOverrides + ): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + withdraw( + assets: BigNumberish, + receiver: string, + owner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Deposit(address,address,uint256,uint256)"( + caller?: string | null, + owner?: string | null, + assets?: null, + shares?: null + ): DepositEventFilter; + Deposit( + caller?: string | null, + owner?: string | null, + assets?: null, + shares?: null + ): DepositEventFilter; + + "Withdraw(address,address,address,uint256,uint256)"( + caller?: string | null, + receiver?: string | null, + owner?: string | null, + assets?: null, + shares?: null + ): WithdrawEventFilter; + Withdraw( + caller?: string | null, + receiver?: string | null, + owner?: string | null, + assets?: null, + shares?: null + ): WithdrawEventFilter; + }; + + estimateGas: { + asset(overrides?: CallOverrides): Promise; + + convertToAssets( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + convertToShares( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + deposit( + assets: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxDeposit(receiver: string, overrides?: CallOverrides): Promise; + + maxMint(receiver: string, overrides?: CallOverrides): Promise; + + maxRedeem(owner: string, overrides?: CallOverrides): Promise; + + maxWithdraw(owner: string, overrides?: CallOverrides): Promise; + + mint( + shares: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + previewDeposit( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewMint( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewRedeem( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewWithdraw( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + redeem( + shares: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + withdraw( + assets: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + asset(overrides?: CallOverrides): Promise; + + convertToAssets( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + convertToShares( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + deposit( + assets: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + maxDeposit( + receiver: string, + overrides?: CallOverrides + ): Promise; + + maxMint( + receiver: string, + overrides?: CallOverrides + ): Promise; + + maxRedeem( + owner: string, + overrides?: CallOverrides + ): Promise; + + maxWithdraw( + owner: string, + overrides?: CallOverrides + ): Promise; + + mint( + shares: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + previewDeposit( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewMint( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewRedeem( + shares: BigNumberish, + overrides?: CallOverrides + ): Promise; + + previewWithdraw( + assets: BigNumberish, + overrides?: CallOverrides + ): Promise; + + redeem( + shares: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + withdraw( + assets: BigNumberish, + receiver: string, + owner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC721ReceiverUpgradeable.ts b/src/typechain/IERC721ReceiverUpgradeable.ts deleted file mode 100644 index d9fb87d..0000000 --- a/src/typechain/IERC721ReceiverUpgradeable.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721ReceiverUpgradeableInterface extends utils.Interface { - functions: { - "onERC721Received(address,address,uint256,bytes)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "onERC721Received", - values: [string, string, BigNumberish, BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "onERC721Received", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC721ReceiverUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721ReceiverUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC721Upgradeable.ts b/src/typechain/IERC721Upgradeable.ts deleted file mode 100644 index e4a1bd5..0000000 --- a/src/typechain/IERC721Upgradeable.ts +++ /dev/null @@ -1,480 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721UpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: string }>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/ITier.ts b/src/typechain/ITier.ts deleted file mode 100644 index 30684b1..0000000 --- a/src/typechain/ITier.ts +++ /dev/null @@ -1,153 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ITierInterface extends utils.Interface { - functions: { - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "report", values: [string]): string; - encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] - ): string; - - decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; - - events: { - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; -} - -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - -export interface ITier extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ITierInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - report(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - setTier( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - report(account: string, overrides?: CallOverrides): Promise; - - setTier( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - report(account: string, overrides?: CallOverrides): Promise; - - setTier( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - }; - - estimateGas: { - report(account: string, overrides?: CallOverrides): Promise; - - setTier( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - report( - account: string, - overrides?: CallOverrides - ): Promise; - - setTier( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/ITierV2.ts b/src/typechain/ITierV2.ts new file mode 100644 index 0000000..7e12a77 --- /dev/null +++ b/src/typechain/ITierV2.ts @@ -0,0 +1,142 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface ITierV2Interface extends utils.Interface { + functions: { + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] + ): string; + + decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ITierV2 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ITierV2Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { report: BigNumber }>; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { time: BigNumber }>; + }; + + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + callStatic: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/OwnableUpgradeable.ts b/src/typechain/OwnableUpgradeable.ts deleted file mode 100644 index a703651..0000000 --- a/src/typechain/OwnableUpgradeable.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface OwnableUpgradeableInterface extends utils.Interface { - functions: { - "owner()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [string] - ): string; - - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - - events: { - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; -} - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface OwnableUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: OwnableUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - owner(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( - newOwner: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - }; - - estimateGas: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/Phased.ts b/src/typechain/Phased.ts index e082153..f85c729 100644 --- a/src/typechain/Phased.ts +++ b/src/typechain/Phased.ts @@ -17,43 +17,40 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface PhasedInterface extends utils.Interface { functions: { - "blockNumberForPhase(uint32[8],uint256)": FunctionFragment; "currentPhase()": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; + "phaseAtTime(uint32[8],uint256)": FunctionFragment; + "phaseTimes(uint256)": FunctionFragment; + "timeForPhase(uint32[8],uint256)": FunctionFragment; }; - encodeFunctionData( - functionFragment: "blockNumberForPhase", - values: [BigNumberish[], BigNumberish] - ): string; encodeFunctionData( functionFragment: "currentPhase", values?: undefined ): string; encodeFunctionData( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", values: [BigNumberish[], BigNumberish] ): string; encodeFunctionData( - functionFragment: "phaseBlocks", + functionFragment: "phaseTimes", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "timeForPhase", + values: [BigNumberish[], BigNumberish] + ): string; - decodeFunctionResult( - functionFragment: "blockNumberForPhase", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "currentPhase", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "phaseTimes", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "phaseBlocks", + functionFragment: "timeForPhase", data: BytesLike ): Result; @@ -66,7 +63,7 @@ export interface PhasedInterface extends utils.Interface { export type PhaseScheduledEvent = TypedEvent< [string, BigNumber, BigNumber], - { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } + { sender: string; newPhase: BigNumber; scheduledTime: BigNumber } >; export type PhaseScheduledEventFilter = TypedEventFilter; @@ -98,112 +95,114 @@ export interface Phased extends BaseContract { removeListener: OnEvent; functions: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, + currentPhase( overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { phase_: BigNumber }>; - currentPhase(overrides?: CallOverrides): Promise<[BigNumber]>; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { phase_: BigNumber }>; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise<[number]>; + + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp_: BigNumber }>; }; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, + currentPhase(overrides?: CallOverrides): Promise; + + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - currentPhase(overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; - callStatic: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, + currentPhase(overrides?: CallOverrides): Promise; + + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - currentPhase(overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, overrides?: CallOverrides ): Promise; - - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; }; filters: { "PhaseScheduled(address,uint256,uint256)"( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; PhaseScheduled( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; }; estimateGas: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; - }; - populateTransaction: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], + timeForPhase( + phaseTimes_: BigNumberish[], phase_: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; + }; + populateTransaction: { currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; + + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; } diff --git a/src/typechain/PhasedScheduleTest.ts b/src/typechain/PhasedScheduleTest.ts index f5c17e5..cea41cd 100644 --- a/src/typechain/PhasedScheduleTest.ts +++ b/src/typechain/PhasedScheduleTest.ts @@ -19,52 +19,49 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface PhasedScheduleTestInterface extends utils.Interface { functions: { - "blockNumberForPhase(uint32[8],uint256)": FunctionFragment; "currentPhase()": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; + "phaseAtTime(uint32[8],uint256)": FunctionFragment; + "phaseTimes(uint256)": FunctionFragment; "testScheduleNextPhase()": FunctionFragment; + "timeForPhase(uint32[8],uint256)": FunctionFragment; }; - encodeFunctionData( - functionFragment: "blockNumberForPhase", - values: [BigNumberish[], BigNumberish] - ): string; encodeFunctionData( functionFragment: "currentPhase", values?: undefined ): string; encodeFunctionData( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", values: [BigNumberish[], BigNumberish] ): string; encodeFunctionData( - functionFragment: "phaseBlocks", + functionFragment: "phaseTimes", values: [BigNumberish] ): string; encodeFunctionData( functionFragment: "testScheduleNextPhase", values?: undefined ): string; + encodeFunctionData( + functionFragment: "timeForPhase", + values: [BigNumberish[], BigNumberish] + ): string; - decodeFunctionResult( - functionFragment: "blockNumberForPhase", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "currentPhase", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "phaseTimes", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "phaseBlocks", + functionFragment: "testScheduleNextPhase", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "testScheduleNextPhase", + functionFragment: "timeForPhase", data: BytesLike ): Result; @@ -77,7 +74,7 @@ export interface PhasedScheduleTestInterface extends utils.Interface { export type PhaseScheduledEvent = TypedEvent< [string, BigNumber, BigNumber], - { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } + { sender: string; newPhase: BigNumber; scheduledTime: BigNumber } >; export type PhaseScheduledEventFilter = TypedEventFilter; @@ -109,21 +106,17 @@ export interface PhasedScheduleTest extends BaseContract { removeListener: OnEvent; functions: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, + currentPhase( overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { phase_: BigNumber }>; - currentPhase(overrides?: CallOverrides): Promise<[BigNumber]>; - - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { phase_: BigNumber }>; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise<[number]>; @@ -131,77 +124,77 @@ export interface PhasedScheduleTest extends BaseContract { testScheduleNextPhase( overrides?: Overrides & { from?: string | Promise } ): Promise; - }; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp_: BigNumber }>; + }; currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; testScheduleNextPhase( overrides?: Overrides & { from?: string | Promise } ): Promise; - callStatic: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + callStatic: { currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; testScheduleNextPhase(overrides?: CallOverrides): Promise; + + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; filters: { "PhaseScheduled(address,uint256,uint256)"( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; PhaseScheduled( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; }; estimateGas: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; @@ -209,24 +202,24 @@ export interface PhasedScheduleTest extends BaseContract { testScheduleNextPhase( overrides?: Overrides & { from?: string | Promise } ): Promise; - }; - populateTransaction: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], + timeForPhase( + phaseTimes_: BigNumberish[], phase_: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; + }; + populateTransaction: { currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; @@ -234,5 +227,11 @@ export interface PhasedScheduleTest extends BaseContract { testScheduleNextPhase( overrides?: Overrides & { from?: string | Promise } ): Promise; + + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; } diff --git a/src/typechain/PhasedTest.ts b/src/typechain/PhasedTest.ts index d1f5fa9..3ef5f73 100644 --- a/src/typechain/PhasedTest.ts +++ b/src/typechain/PhasedTest.ts @@ -19,32 +19,28 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface PhasedTestInterface extends utils.Interface { functions: { - "blockNumberForPhase(uint32[8],uint256)": FunctionFragment; "condition()": FunctionFragment; "currentPhase()": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; + "phaseAtTime(uint32[8],uint256)": FunctionFragment; + "phaseTimes(uint256)": FunctionFragment; "runsOnlyAtLeastPhase(uint256)": FunctionFragment; "runsOnlyPhase(uint256)": FunctionFragment; "testScheduleNextPhase(uint256)": FunctionFragment; + "timeForPhase(uint32[8],uint256)": FunctionFragment; "toggleCondition()": FunctionFragment; }; - encodeFunctionData( - functionFragment: "blockNumberForPhase", - values: [BigNumberish[], BigNumberish] - ): string; encodeFunctionData(functionFragment: "condition", values?: undefined): string; encodeFunctionData( functionFragment: "currentPhase", values?: undefined ): string; encodeFunctionData( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", values: [BigNumberish[], BigNumberish] ): string; encodeFunctionData( - functionFragment: "phaseBlocks", + functionFragment: "phaseTimes", values: [BigNumberish] ): string; encodeFunctionData( @@ -59,28 +55,25 @@ export interface PhasedTestInterface extends utils.Interface { functionFragment: "testScheduleNextPhase", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "timeForPhase", + values: [BigNumberish[], BigNumberish] + ): string; encodeFunctionData( functionFragment: "toggleCondition", values?: undefined ): string; - decodeFunctionResult( - functionFragment: "blockNumberForPhase", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "condition", data: BytesLike): Result; decodeFunctionResult( functionFragment: "currentPhase", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "phaseBlocks", + functionFragment: "phaseAtTime", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "phaseTimes", data: BytesLike): Result; decodeFunctionResult( functionFragment: "runsOnlyAtLeastPhase", data: BytesLike @@ -93,6 +86,10 @@ export interface PhasedTestInterface extends utils.Interface { functionFragment: "testScheduleNextPhase", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "timeForPhase", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "toggleCondition", data: BytesLike @@ -107,7 +104,7 @@ export interface PhasedTestInterface extends utils.Interface { export type PhaseScheduledEvent = TypedEvent< [string, BigNumber, BigNumber], - { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } + { sender: string; newPhase: BigNumber; scheduledTime: BigNumber } >; export type PhaseScheduledEventFilter = TypedEventFilter; @@ -139,23 +136,19 @@ export interface PhasedTest extends BaseContract { removeListener: OnEvent; functions: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - condition(overrides?: CallOverrides): Promise<[boolean]>; - currentPhase(overrides?: CallOverrides): Promise<[BigNumber]>; + currentPhase( + overrides?: CallOverrides + ): Promise<[BigNumber] & { phase_: BigNumber }>; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { phase_: BigNumber }>; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise<[number]>; @@ -171,32 +164,32 @@ export interface PhasedTest extends BaseContract { ): Promise<[boolean]>; testScheduleNextPhase( - phaseBlock_: BigNumberish, + timestamp_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp_: BigNumber }>; + toggleCondition( overrides?: Overrides & { from?: string | Promise } ): Promise; }; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - condition(overrides?: CallOverrides): Promise; currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; runsOnlyAtLeastPhase( phase_: BigNumberish, @@ -209,32 +202,32 @@ export interface PhasedTest extends BaseContract { ): Promise; testScheduleNextPhase( - phaseBlock_: BigNumberish, + timestamp_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + toggleCondition( overrides?: Overrides & { from?: string | Promise } ): Promise; callStatic: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - condition(overrides?: CallOverrides): Promise; currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; runsOnlyAtLeastPhase( phase_: BigNumberish, @@ -247,10 +240,16 @@ export interface PhasedTest extends BaseContract { ): Promise; testScheduleNextPhase( - phaseBlock_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + toggleCondition(overrides?: CallOverrides): Promise; }; @@ -258,33 +257,27 @@ export interface PhasedTest extends BaseContract { "PhaseScheduled(address,uint256,uint256)"( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; PhaseScheduled( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; }; estimateGas: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - condition(overrides?: CallOverrides): Promise; currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; @@ -300,33 +293,33 @@ export interface PhasedTest extends BaseContract { ): Promise; testScheduleNextPhase( - phaseBlock_: BigNumberish, + timestamp_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + toggleCondition( overrides?: Overrides & { from?: string | Promise } ): Promise; }; populateTransaction: { - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - condition(overrides?: CallOverrides): Promise; currentPhase(overrides?: CallOverrides): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; @@ -342,10 +335,16 @@ export interface PhasedTest extends BaseContract { ): Promise; testScheduleNextPhase( - phaseBlock_: BigNumberish, + timestamp_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + toggleCondition( overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/ReadOnlyTier.ts b/src/typechain/ReadOnlyTier.ts deleted file mode 100644 index 79d8f25..0000000 --- a/src/typechain/ReadOnlyTier.ts +++ /dev/null @@ -1,151 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ReadOnlyTierInterface extends utils.Interface { - functions: { - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "report", values: [string]): string; - encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] - ): string; - - decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; - - events: { - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; -} - -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - -export interface ReadOnlyTier extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReadOnlyTierInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - report(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise<[void]>; - }; - - report(account: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - report(account: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - }; - - estimateGas: { - report(account: string, overrides?: CallOverrides): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - report( - account: string, - overrides?: CallOverrides - ): Promise; - - setTier( - arg0: string, - arg1: BigNumberish, - arg2: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/ReadWriteTier.ts b/src/typechain/ReadWriteTier.ts index b55d3b0..f5d5a53 100644 --- a/src/typechain/ReadWriteTier.ts +++ b/src/typechain/ReadWriteTier.ts @@ -19,18 +19,84 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface ReadWriteTierInterface extends utils.Interface { functions: { - "report(address)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "setTier(address,uint256,bytes)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "tierAtTimeFromReport(uint256,uint256)": FunctionFragment; + "truncateTiersAbove(uint256,uint256)": FunctionFragment; + "updateReportWithTierAtTime(uint256,uint256,uint256,uint256)": FunctionFragment; + "updateTimeAtTier(uint256,uint256,uint256)": FunctionFragment; + "updateTimesForTierRange(uint256,uint256,uint256,uint256)": FunctionFragment; }; - encodeFunctionData(functionFragment: "report", values: [string]): string; + encodeFunctionData( + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] + ): string; encodeFunctionData( functionFragment: "setTier", values: [string, BigNumberish, BytesLike] ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "tierAtTimeFromReport", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "truncateTiersAbove", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateReportWithTierAtTime", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateTimeAtTier", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "updateTimesForTierRange", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + ): string; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tierAtTimeFromReport", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "truncateTiersAbove", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateReportWithTierAtTime", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateTimeAtTier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "updateTimesForTierRange", + data: BytesLike + ): Result; events: { "TierChange(address,address,uint256,uint256,bytes)": EventFragment; @@ -79,7 +145,24 @@ export interface ReadWriteTier extends BaseContract { removeListener: OnEvent; functions: { - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "reportTimeForTier(address,uint256,uint256[])"( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp_: BigNumber }>; setTier( account_: string, @@ -87,9 +170,66 @@ export interface ReadWriteTier extends BaseContract { data_: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + tierAtTimeFromReport( + report_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { tier_: BigNumber }>; + + truncateTiersAbove( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + updateReportWithTierAtTime( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { updatedReport_: BigNumber }>; + + updateTimeAtTier( + report_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { updatedReport_: BigNumber }>; + + updateTimesForTierRange( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { updatedReport_: BigNumber }>; }; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(address,uint256,uint256[])"( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; setTier( account_: string, @@ -98,8 +238,65 @@ export interface ReadWriteTier extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + + tierAtTimeFromReport( + report_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + truncateTiersAbove( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateReportWithTierAtTime( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimeAtTier( + report_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimesForTierRange( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + callStatic: { - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(address,uint256,uint256[])"( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; setTier( account_: string, @@ -107,6 +304,46 @@ export interface ReadWriteTier extends BaseContract { data_: BytesLike, overrides?: CallOverrides ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + + tierAtTimeFromReport( + report_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + truncateTiersAbove( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateReportWithTierAtTime( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimeAtTier( + report_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimesForTierRange( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; filters: { @@ -127,7 +364,24 @@ export interface ReadWriteTier extends BaseContract { }; estimateGas: { - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(address,uint256,uint256[])"( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; setTier( account_: string, @@ -135,11 +389,65 @@ export interface ReadWriteTier extends BaseContract { data_: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + + tierAtTimeFromReport( + report_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + truncateTiersAbove( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateReportWithTierAtTime( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimeAtTier( + report_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimesForTierRange( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; populateTransaction: { report( account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(address,uint256,uint256[])"( + account_: string, + tier_: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + "reportTimeForTier(uint256,uint256)"( + report_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -149,5 +457,45 @@ export interface ReadWriteTier extends BaseContract { data_: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + + tierAtTimeFromReport( + report_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + truncateTiersAbove( + report_: BigNumberish, + tier_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateReportWithTierAtTime( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimeAtTier( + report_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + updateTimesForTierRange( + report_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; } diff --git a/src/typechain/RedeemableERC20.ts b/src/typechain/RedeemableERC20.ts index 891431c..45eddb5 100644 --- a/src/typechain/RedeemableERC20.ts +++ b/src/typechain/RedeemableERC20.ts @@ -58,7 +58,6 @@ export interface RedeemableERC20Interface extends utils.Interface { "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; - "blockNumberForPhase(uint32[8],uint256)": FunctionFragment; "burn(uint256)": FunctionFragment; "burnFrom(address,uint256)": FunctionFragment; "currentPhase()": FunctionFragment; @@ -74,11 +73,12 @@ export interface RedeemableERC20Interface extends utils.Interface { "minimumTier()": FunctionFragment; "name()": FunctionFragment; "newTreasuryAsset(address)": FunctionFragment; - "phaseAtBlockNumber(uint32[8],uint256)": FunctionFragment; - "phaseBlocks(uint256)": FunctionFragment; + "phaseAtTime(uint32[8],uint256)": FunctionFragment; + "phaseTimes(uint256)": FunctionFragment; "redeem(address[],uint256)": FunctionFragment; "symbol()": FunctionFragment; "tier()": FunctionFragment; + "timeForPhase(uint32[8],uint256)": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; @@ -93,10 +93,6 @@ export interface RedeemableERC20Interface extends utils.Interface { values: [string, BigNumberish] ): string; encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "blockNumberForPhase", - values: [BigNumberish[], BigNumberish] - ): string; encodeFunctionData(functionFragment: "burn", values: [BigNumberish]): string; encodeFunctionData( functionFragment: "burnFrom", @@ -140,11 +136,11 @@ export interface RedeemableERC20Interface extends utils.Interface { values: [string] ): string; encodeFunctionData( - functionFragment: "phaseAtBlockNumber", + functionFragment: "phaseAtTime", values: [BigNumberish[], BigNumberish] ): string; encodeFunctionData( - functionFragment: "phaseBlocks", + functionFragment: "phaseTimes", values: [BigNumberish] ): string; encodeFunctionData( @@ -153,6 +149,10 @@ export interface RedeemableERC20Interface extends utils.Interface { ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData(functionFragment: "tier", values?: undefined): string; + encodeFunctionData( + functionFragment: "timeForPhase", + values: [BigNumberish[], BigNumberish] + ): string; encodeFunctionData( functionFragment: "totalSupply", values?: undefined @@ -169,10 +169,6 @@ export interface RedeemableERC20Interface extends utils.Interface { decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "blockNumberForPhase", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; decodeFunctionResult(functionFragment: "burnFrom", data: BytesLike): Result; decodeFunctionResult( @@ -213,16 +209,17 @@ export interface RedeemableERC20Interface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "phaseAtBlockNumber", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "phaseBlocks", + functionFragment: "phaseAtTime", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "phaseTimes", data: BytesLike): Result; decodeFunctionResult(functionFragment: "redeem", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult(functionFragment: "tier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "timeForPhase", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "totalSupply", data: BytesLike @@ -276,7 +273,7 @@ export type InitializedEventFilter = TypedEventFilter; export type PhaseScheduledEvent = TypedEvent< [string, BigNumber, BigNumber], - { sender: string; newPhase: BigNumber; scheduledBlock: BigNumber } + { sender: string; newPhase: BigNumber; scheduledTime: BigNumber } >; export type PhaseScheduledEventFilter = TypedEventFilter; @@ -362,12 +359,6 @@ export interface RedeemableERC20 extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - burn( amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } @@ -379,7 +370,9 @@ export interface RedeemableERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - currentPhase(overrides?: CallOverrides): Promise<[BigNumber]>; + currentPhase( + overrides?: CallOverrides + ): Promise<[BigNumber] & { phase_: BigNumber }>; decimals(overrides?: CallOverrides): Promise<[number]>; @@ -434,13 +427,13 @@ export interface RedeemableERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { phase_: BigNumber }>; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise<[number]>; @@ -455,6 +448,12 @@ export interface RedeemableERC20 extends BaseContract { tier(overrides?: CallOverrides): Promise<[string]>; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { timestamp_: BigNumber }>; + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; transfer( @@ -485,12 +484,6 @@ export interface RedeemableERC20 extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - burn( amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } @@ -554,13 +547,13 @@ export interface RedeemableERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; redeem( treasuryAssets_: string[], @@ -572,6 +565,12 @@ export interface RedeemableERC20 extends BaseContract { tier(overrides?: CallOverrides): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -602,12 +601,6 @@ export interface RedeemableERC20 extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - burn(amount: BigNumberish, overrides?: CallOverrides): Promise; burnFrom( @@ -665,13 +658,13 @@ export interface RedeemableERC20 extends BaseContract { overrides?: CallOverrides ): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks(arg0: BigNumberish, overrides?: CallOverrides): Promise; + phaseTimes(arg0: BigNumberish, overrides?: CallOverrides): Promise; redeem( treasuryAssets_: string[], @@ -683,6 +676,12 @@ export interface RedeemableERC20 extends BaseContract { tier(overrides?: CallOverrides): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -723,12 +722,12 @@ export interface RedeemableERC20 extends BaseContract { "PhaseScheduled(address,uint256,uint256)"( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; PhaseScheduled( sender?: null, newPhase?: null, - scheduledBlock?: null + scheduledTime?: null ): PhaseScheduledEventFilter; "Receiver(address,address)"( @@ -789,12 +788,6 @@ export interface RedeemableERC20 extends BaseContract { balanceOf(account: string, overrides?: CallOverrides): Promise; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - burn( amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } @@ -861,13 +854,13 @@ export interface RedeemableERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; @@ -882,6 +875,12 @@ export interface RedeemableERC20 extends BaseContract { tier(overrides?: CallOverrides): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( @@ -916,12 +915,6 @@ export interface RedeemableERC20 extends BaseContract { overrides?: CallOverrides ): Promise; - blockNumberForPhase( - phaseBlocks_: BigNumberish[], - phase_: BigNumberish, - overrides?: CallOverrides - ): Promise; - burn( amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } @@ -988,13 +981,13 @@ export interface RedeemableERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - phaseAtBlockNumber( - phaseBlocks_: BigNumberish[], - blockNumber_: BigNumberish, + phaseAtTime( + phaseTimes_: BigNumberish[], + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - phaseBlocks( + phaseTimes( arg0: BigNumberish, overrides?: CallOverrides ): Promise; @@ -1009,6 +1002,12 @@ export interface RedeemableERC20 extends BaseContract { tier(overrides?: CallOverrides): Promise; + timeForPhase( + phaseTimes_: BigNumberish[], + phase_: BigNumberish, + overrides?: CallOverrides + ): Promise; + totalSupply(overrides?: CallOverrides): Promise; transfer( diff --git a/src/typechain/ReserveNFT.ts b/src/typechain/ReserveNFT.ts deleted file mode 100644 index 5f1c30e..0000000 --- a/src/typechain/ReserveNFT.ts +++ /dev/null @@ -1,643 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ReserveNFTInterface extends utils.Interface { - functions: { - "addFreezable(address)": FunctionFragment; - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "freezables(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "maxSupply()": FunctionFragment; - "mint(address,uint256)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "totalSupply()": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "addFreezable", - values: [string] - ): string; - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData(functionFragment: "freezables", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "maxSupply", values?: undefined): string; - encodeFunctionData( - functionFragment: "mint", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "totalSupply", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult( - functionFragment: "addFreezable", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "freezables", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "maxSupply", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "totalSupply", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ReserveNFT extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ReserveNFTInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - freezables(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - maxSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - mint( - _address: string, - _amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - freezables(arg0: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - mint( - _address: string, - _amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - addFreezable(account_: string, overrides?: CallOverrides): Promise; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - freezables(arg0: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - mint( - _address: string, - _amount: BigNumberish, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - freezables(arg0: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - mint( - _address: string, - _amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - addFreezable( - account_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - freezables( - arg0: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - maxSupply(overrides?: CallOverrides): Promise; - - mint( - _address: string, - _amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/ERC721Upgradeable.ts b/src/typechain/ReserveTokenERC20Snapshot.ts similarity index 53% rename from src/typechain/ERC721Upgradeable.ts rename to src/typechain/ReserveTokenERC20Snapshot.ts index 06721a3..66f458e 100644 --- a/src/typechain/ERC721Upgradeable.ts +++ b/src/typechain/ReserveTokenERC20Snapshot.ts @@ -17,88 +17,106 @@ import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface ERC721UpgradeableInterface extends utils.Interface { +export interface ReserveTokenERC20SnapshotInterface extends utils.Interface { functions: { + "DECIMALS()": FunctionFragment; + "TOTAL_SUPPLY()": FunctionFragment; + "allowance(address,address)": FunctionFragment; "approve(address,uint256)": FunctionFragment; "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; + "balanceOfAt(address,uint256)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; + "snapshot()": FunctionFragment; "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; + "totalSupply()": FunctionFragment; + "totalSupplyAt(uint256)": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; "transferFrom(address,address,uint256)": FunctionFragment; }; + encodeFunctionData(functionFragment: "DECIMALS", values?: undefined): string; encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] + functionFragment: "TOTAL_SUPPLY", + values?: undefined ): string; encodeFunctionData( - functionFragment: "isApprovedForAll", + functionFragment: "allowance", values: [string, string] ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] + functionFragment: "approve", + values: [string, BigNumberish] ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] + functionFragment: "balanceOfAt", + values: [string, BigNumberish] ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] + functionFragment: "decreaseAllowance", + values: [string, BigNumberish] ): string; encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] + functionFragment: "increaseAllowance", + values: [string, BigNumberish] ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "snapshot", values?: undefined): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( - functionFragment: "tokenURI", + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "totalSupplyAt", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [string, BigNumberish] + ): string; encodeFunctionData( functionFragment: "transferFrom", values: [string, string, BigNumberish] ): string; + decodeFunctionResult(functionFragment: "DECIMALS", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "TOTAL_SUPPLY", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "getApproved", + functionFragment: "balanceOfAt", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "isApprovedForAll", + functionFragment: "decreaseAllowance", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "safeTransferFrom", + functionFragment: "increaseAllowance", data: BytesLike ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "snapshot", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "setApprovalForAll", + functionFragment: "totalSupply", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "supportsInterface", + functionFragment: "totalSupplyAt", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; decodeFunctionResult( functionFragment: "transferFrom", data: BytesLike @@ -106,48 +124,39 @@ export interface ERC721UpgradeableInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Initialized(uint8)": EventFragment; + "Snapshot(uint256)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Snapshot"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } export type ApprovalEvent = TypedEvent< [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } + { owner: string; spender: string; value: BigNumber } >; export type ApprovalEventFilter = TypedEventFilter; -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; +export type SnapshotEvent = TypedEvent<[BigNumber], { id: BigNumber }>; -export type InitializedEventFilter = TypedEventFilter; +export type SnapshotEventFilter = TypedEventFilter; export type TransferEvent = TypedEvent< [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } + { from: string; to: string; value: BigNumber } >; export type TransferEventFilter = TypedEventFilter; -export interface ERC721Upgradeable extends BaseContract { +export interface ReserveTokenERC20Snapshot extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: ERC721UpgradeableInterface; + interface: ReserveTokenERC20SnapshotInterface; queryFilter( event: TypedEventFilter, @@ -169,368 +178,367 @@ export interface ERC721Upgradeable extends BaseContract { removeListener: OnEvent; functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + DECIMALS(overrides?: CallOverrides): Promise<[BigNumber]>; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; + TOTAL_SUPPLY(overrides?: CallOverrides): Promise<[BigNumber]>; - isApprovedForAll( + allowance( owner: string, - operator: string, + spender: string, overrides?: CallOverrides - ): Promise<[boolean]>; + ): Promise<[BigNumber]>; - name(overrides?: CallOverrides): Promise<[string]>; + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; - ownerOf( - tokenId: BigNumberish, + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise<[string]>; + ): Promise<[BigNumber]>; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + name(overrides?: CallOverrides): Promise<[string]>; + + snapshot( overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - symbol(overrides?: CallOverrides): Promise<[string]>; - tokenURI( - tokenId: BigNumberish, + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise<[string]>; + ): Promise<[BigNumber]>; + + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; + DECIMALS(overrides?: CallOverrides): Promise; + + TOTAL_SUPPLY(overrides?: CallOverrides): Promise; + + allowance( + owner: string, + spender: string, + overrides?: CallOverrides + ): Promise; + approve( - to: string, - tokenId: BigNumberish, + spender: string, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - balanceOf(owner: string, overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - getApproved( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + decimals(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + name(overrides?: CallOverrides): Promise; + + snapshot( overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - symbol(overrides?: CallOverrides): Promise; - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; + DECIMALS(overrides?: CallOverrides): Promise; - balanceOf(owner: string, overrides?: CallOverrides): Promise; + TOTAL_SUPPLY(overrides?: CallOverrides): Promise; - getApproved( - tokenId: BigNumberish, + allowance( + owner: string, + spender: string, overrides?: CallOverrides - ): Promise; + ): Promise; - isApprovedForAll( - owner: string, - operator: string, + approve( + spender: string, + amount: BigNumberish, overrides?: CallOverrides ): Promise; - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: CallOverrides - ): Promise; + decimals(overrides?: CallOverrides): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; - supportsInterface( - interfaceId: BytesLike, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: CallOverrides ): Promise; + name(overrides?: CallOverrides): Promise; + + snapshot(overrides?: CallOverrides): Promise; + symbol(overrides?: CallOverrides): Promise; - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transfer( + to: string, + amount: BigNumberish, + overrides?: CallOverrides + ): Promise; transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: CallOverrides - ): Promise; + ): Promise; }; filters: { "Approval(address,address,uint256)"( owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null + spender?: string | null, + value?: null ): ApprovalEventFilter; Approval( owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null + spender?: string | null, + value?: null ): ApprovalEventFilter; - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; + "Snapshot(uint256)"(id?: null): SnapshotEventFilter; + Snapshot(id?: null): SnapshotEventFilter; "Transfer(address,address,uint256)"( from?: string | null, to?: string | null, - tokenId?: BigNumberish | null + value?: null ): TransferEventFilter; Transfer( from?: string | null, to?: string | null, - tokenId?: BigNumberish | null + value?: null ): TransferEventFilter; }; estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + DECIMALS(overrides?: CallOverrides): Promise; - balanceOf(owner: string, overrides?: CallOverrides): Promise; + TOTAL_SUPPLY(overrides?: CallOverrides): Promise; - getApproved( - tokenId: BigNumberish, + allowance( + owner: string, + spender: string, overrides?: CallOverrides ): Promise; - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - name(overrides?: CallOverrides): Promise; + balanceOf(account: string, overrides?: CallOverrides): Promise; - ownerOf( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + decimals(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides + name(overrides?: CallOverrides): Promise; + + snapshot( + overrides?: Overrides & { from?: string | Promise } ): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI( - tokenId: BigNumberish, + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + DECIMALS(overrides?: CallOverrides): Promise; - balanceOf( + TOTAL_SUPPLY(overrides?: CallOverrides): Promise; + + allowance( owner: string, + spender: string, overrides?: CallOverrides ): Promise; - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } ): Promise; - isApprovedForAll( - owner: string, - operator: string, + balanceOf( + account: string, overrides?: CallOverrides ): Promise; - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, + balanceOfAt( + account: string, + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + decimals(overrides?: CallOverrides): Promise; - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - setApprovalForAll( - operator: string, - approved: boolean, + increaseAllowance( + spender: string, + addedValue: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides + name(overrides?: CallOverrides): Promise; + + snapshot( + overrides?: Overrides & { from?: string | Promise } ): Promise; symbol(overrides?: CallOverrides): Promise; - tokenURI( - tokenId: BigNumberish, + totalSupply(overrides?: CallOverrides): Promise; + + totalSupplyAt( + snapshotId: BigNumberish, overrides?: CallOverrides ): Promise; + transfer( + to: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + transferFrom( from: string, to: string, - tokenId: BigNumberish, + amount: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; diff --git a/src/typechain/Stake.ts b/src/typechain/Stake.ts index 386cbd7..aafb860 100644 --- a/src/typechain/Stake.ts +++ b/src/typechain/Stake.ts @@ -42,7 +42,9 @@ export interface StakeInterface extends utils.Interface { "increaseAllowance(address,uint256)": FunctionFragment; "initialize((address,uint256,string,string))": FunctionFragment; "name()": FunctionFragment; - "report(address,bytes)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; "transfer(address,uint256)": FunctionFragment; @@ -79,7 +81,15 @@ export interface StakeInterface extends utils.Interface { encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData( functionFragment: "report", - values: [string, BytesLike] + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] ): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( @@ -115,6 +125,14 @@ export interface StakeInterface extends utils.Interface { decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( functionFragment: "totalSupply", @@ -234,9 +252,21 @@ export interface Stake extends BaseContract { report( account_: string, - data_: BytesLike, + context_: BigNumberish[], overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { report_: BigNumber }>; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { time_: BigNumber }>; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; symbol(overrides?: CallOverrides): Promise<[string]>; @@ -303,10 +333,22 @@ export interface Stake extends BaseContract { report( account_: string, - data_: BytesLike, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -369,10 +411,22 @@ export interface Stake extends BaseContract { report( account_: string, - data_: BytesLike, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + symbol(overrides?: CallOverrides): Promise; totalSupply(overrides?: CallOverrides): Promise; @@ -469,7 +523,19 @@ export interface Stake extends BaseContract { report( account_: string, - data_: BytesLike, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; @@ -542,7 +608,19 @@ export interface Stake extends BaseContract { report( account_: string, - data_: BytesLike, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; diff --git a/src/typechain/TierReportTest.ts b/src/typechain/TierReportTest.ts index 5a0db64..14cdb01 100644 --- a/src/typechain/TierReportTest.ts +++ b/src/typechain/TierReportTest.ts @@ -17,20 +17,20 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface TierReportTestInterface extends utils.Interface { functions: { - "tierAtBlockFromReport(uint256,uint256)": FunctionFragment; - "tierBlock(uint256,uint256)": FunctionFragment; + "reportTimeForTier(uint256,uint256)": FunctionFragment; + "tierAtTimeFromReport(uint256,uint256)": FunctionFragment; "truncateTiersAbove(uint256,uint256)": FunctionFragment; - "updateBlockAtTier(uint256,uint256,uint256)": FunctionFragment; - "updateBlocksForTierRange(uint256,uint256,uint256,uint256)": FunctionFragment; - "updateReportWithTierAtBlock(uint256,uint256,uint256,uint256)": FunctionFragment; + "updateReportWithTierAtTime(uint256,uint256,uint256,uint256)": FunctionFragment; + "updateTimeAtTier(uint256,uint256,uint256)": FunctionFragment; + "updateTimesForTierRange(uint256,uint256,uint256,uint256)": FunctionFragment; }; encodeFunctionData( - functionFragment: "tierAtBlockFromReport", + functionFragment: "reportTimeForTier", values: [BigNumberish, BigNumberish] ): string; encodeFunctionData( - functionFragment: "tierBlock", + functionFragment: "tierAtTimeFromReport", values: [BigNumberish, BigNumberish] ): string; encodeFunctionData( @@ -38,37 +38,40 @@ export interface TierReportTestInterface extends utils.Interface { values: [BigNumberish, BigNumberish] ): string; encodeFunctionData( - functionFragment: "updateBlockAtTier", - values: [BigNumberish, BigNumberish, BigNumberish] + functionFragment: "updateReportWithTierAtTime", + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] ): string; encodeFunctionData( - functionFragment: "updateBlocksForTierRange", - values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] + functionFragment: "updateTimeAtTier", + values: [BigNumberish, BigNumberish, BigNumberish] ): string; encodeFunctionData( - functionFragment: "updateReportWithTierAtBlock", + functionFragment: "updateTimesForTierRange", values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish] ): string; decodeFunctionResult( - functionFragment: "tierAtBlockFromReport", + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tierAtTimeFromReport", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "tierBlock", data: BytesLike): Result; decodeFunctionResult( functionFragment: "truncateTiersAbove", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "updateBlockAtTier", + functionFragment: "updateReportWithTierAtTime", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "updateBlocksForTierRange", + functionFragment: "updateTimeAtTier", data: BytesLike ): Result; decodeFunctionResult( - functionFragment: "updateReportWithTierAtBlock", + functionFragment: "updateTimesForTierRange", data: BytesLike ): Result; @@ -102,15 +105,15 @@ export interface TierReportTest extends BaseContract { removeListener: OnEvent; functions: { - tierAtBlockFromReport( + reportTimeForTier( report_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise<[BigNumber]>; - tierBlock( + tierAtTimeFromReport( report_: BigNumberish, - tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise<[BigNumber]>; @@ -120,39 +123,39 @@ export interface TierReportTest extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber]>; - updateBlockAtTier( + updateReportWithTierAtTime( report_: BigNumberish, - tier_: BigNumberish, - blockNumber_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise<[BigNumber]>; - updateBlocksForTierRange( + updateTimeAtTier( report_: BigNumberish, - startTier_: BigNumberish, - endTier_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise<[BigNumber]>; - updateReportWithTierAtBlock( + updateTimesForTierRange( report_: BigNumberish, startTier_: BigNumberish, endTier_: BigNumberish, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise<[BigNumber]>; }; - tierAtBlockFromReport( + reportTimeForTier( report_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise; - tierBlock( + tierAtTimeFromReport( report_: BigNumberish, - tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -162,39 +165,39 @@ export interface TierReportTest extends BaseContract { overrides?: CallOverrides ): Promise; - updateBlockAtTier( + updateReportWithTierAtTime( report_: BigNumberish, - tier_: BigNumberish, - blockNumber_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateBlocksForTierRange( + updateTimeAtTier( report_: BigNumberish, - startTier_: BigNumberish, - endTier_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateReportWithTierAtBlock( + updateTimesForTierRange( report_: BigNumberish, startTier_: BigNumberish, endTier_: BigNumberish, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; callStatic: { - tierAtBlockFromReport( + reportTimeForTier( report_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise; - tierBlock( + tierAtTimeFromReport( report_: BigNumberish, - tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -204,26 +207,26 @@ export interface TierReportTest extends BaseContract { overrides?: CallOverrides ): Promise; - updateBlockAtTier( + updateReportWithTierAtTime( report_: BigNumberish, - tier_: BigNumberish, - blockNumber_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateBlocksForTierRange( + updateTimeAtTier( report_: BigNumberish, - startTier_: BigNumberish, - endTier_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateReportWithTierAtBlock( + updateTimesForTierRange( report_: BigNumberish, startTier_: BigNumberish, endTier_: BigNumberish, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; }; @@ -231,15 +234,15 @@ export interface TierReportTest extends BaseContract { filters: {}; estimateGas: { - tierAtBlockFromReport( + reportTimeForTier( report_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise; - tierBlock( + tierAtTimeFromReport( report_: BigNumberish, - tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -249,40 +252,40 @@ export interface TierReportTest extends BaseContract { overrides?: CallOverrides ): Promise; - updateBlockAtTier( + updateReportWithTierAtTime( report_: BigNumberish, - tier_: BigNumberish, - blockNumber_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateBlocksForTierRange( + updateTimeAtTier( report_: BigNumberish, - startTier_: BigNumberish, - endTier_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateReportWithTierAtBlock( + updateTimesForTierRange( report_: BigNumberish, startTier_: BigNumberish, endTier_: BigNumberish, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; }; populateTransaction: { - tierAtBlockFromReport( + reportTimeForTier( report_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, overrides?: CallOverrides ): Promise; - tierBlock( + tierAtTimeFromReport( report_: BigNumberish, - tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -292,26 +295,26 @@ export interface TierReportTest extends BaseContract { overrides?: CallOverrides ): Promise; - updateBlockAtTier( + updateReportWithTierAtTime( report_: BigNumberish, - tier_: BigNumberish, - blockNumber_: BigNumberish, + startTier_: BigNumberish, + endTier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateBlocksForTierRange( + updateTimeAtTier( report_: BigNumberish, - startTier_: BigNumberish, - endTier_: BigNumberish, - blockNumber_: BigNumberish, + tier_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; - updateReportWithTierAtBlock( + updateTimesForTierRange( report_: BigNumberish, startTier_: BigNumberish, endTier_: BigNumberish, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; }; diff --git a/src/typechain/TierV2.ts b/src/typechain/TierV2.ts new file mode 100644 index 0000000..919aed1 --- /dev/null +++ b/src/typechain/TierV2.ts @@ -0,0 +1,176 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface TierV2Interface extends utils.Interface { + functions: { + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface TierV2 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: TierV2Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { report: BigNumber }>; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber] & { time: BigNumber }>; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + report( + account: string, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + account: string, + tier: BigNumberish, + context: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/IERC2981Upgradeable.ts b/src/typechain/TierV2Test.ts similarity index 55% rename from src/typechain/IERC2981Upgradeable.ts rename to src/typechain/TierV2Test.ts index b8e7e21..71cfa9b 100644 --- a/src/typechain/IERC2981Upgradeable.ts +++ b/src/typechain/TierV2Test.ts @@ -15,23 +15,29 @@ import { FunctionFragment, Result } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export interface IERC2981UpgradeableInterface extends utils.Interface { +export interface TierV2TestInterface extends utils.Interface { functions: { - "royaltyInfo(uint256,uint256)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "supportsInterface(bytes4)": FunctionFragment; }; encodeFunctionData( - functionFragment: "royaltyInfo", - values: [BigNumberish, BigNumberish] + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] ): string; encodeFunctionData( functionFragment: "supportsInterface", values: [BytesLike] ): string; + decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "royaltyInfo", + functionFragment: "reportTimeForTier", data: BytesLike ): Result; decodeFunctionResult( @@ -42,12 +48,12 @@ export interface IERC2981UpgradeableInterface extends utils.Interface { events: {}; } -export interface IERC2981Upgradeable extends BaseContract { +export interface TierV2Test extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: IERC2981UpgradeableInterface; + interface: TierV2TestInterface; queryFilter( event: TypedEventFilter, @@ -69,44 +75,59 @@ export interface IERC2981Upgradeable extends BaseContract { removeListener: OnEvent; functions: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, + report( + arg0: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + reportTimeForTier( + arg0: string, + arg1: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; + ): Promise<[BigNumber]>; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise<[boolean]>; }; - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, + report( + arg0: string, + arg1: BigNumberish[], overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; + ): Promise; + + reportTimeForTier( + arg0: string, + arg1: BigNumberish, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; callStatic: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, + report( + arg0: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + arg0: string, + arg1: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; + ): Promise; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; @@ -114,27 +135,41 @@ export interface IERC2981Upgradeable extends BaseContract { filters: {}; estimateGas: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, + report( + arg0: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + arg0: string, + arg1: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides ): Promise; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; populateTransaction: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, + report( + arg0: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + reportTimeForTier( + arg0: string, + arg1: BigNumberish, + arg2: BigNumberish[], overrides?: CallOverrides ): Promise; supportsInterface( - interfaceId: BytesLike, + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; diff --git a/src/typechain/ValueTier.ts b/src/typechain/ValueTier.ts deleted file mode 100644 index f2a0daa..0000000 --- a/src/typechain/ValueTier.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ValueTierInterface extends utils.Interface { - functions: { - "tierValues()": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "tierValues", - values?: undefined - ): string; - - decodeFunctionResult(functionFragment: "tierValues", data: BytesLike): Result; - - events: { - "InitializeValueTier(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; -} - -export type InitializeValueTierEvent = TypedEvent< - [string, string], - { sender: string; pointer: string } ->; - -export type InitializeValueTierEventFilter = - TypedEventFilter; - -export interface ValueTier extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ValueTierInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - tierValues( - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { tierValues_: BigNumber[] }>; - }; - - tierValues(overrides?: CallOverrides): Promise; - - callStatic: { - tierValues(overrides?: CallOverrides): Promise; - }; - - filters: { - "InitializeValueTier(address,address)"( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - InitializeValueTier( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - }; - - estimateGas: { - tierValues(overrides?: CallOverrides): Promise; - }; - - populateTransaction: { - tierValues(overrides?: CallOverrides): Promise; - }; -} diff --git a/src/typechain/ValueTierTest.ts b/src/typechain/ValueTierTest.ts deleted file mode 100644 index 5e73071..0000000 --- a/src/typechain/ValueTierTest.ts +++ /dev/null @@ -1,169 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ValueTierTestInterface extends utils.Interface { - functions: { - "tierValues()": FunctionFragment; - "wrappedTierToValue(uint256)": FunctionFragment; - "wrappedValueToTier(uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "tierValues", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "wrappedTierToValue", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "wrappedValueToTier", - values: [BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "tierValues", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "wrappedTierToValue", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "wrappedValueToTier", - data: BytesLike - ): Result; - - events: { - "InitializeValueTier(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "InitializeValueTier"): EventFragment; -} - -export type InitializeValueTierEvent = TypedEvent< - [string, string], - { sender: string; pointer: string } ->; - -export type InitializeValueTierEventFilter = - TypedEventFilter; - -export interface ValueTierTest extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ValueTierTestInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - tierValues( - overrides?: CallOverrides - ): Promise<[BigNumber[]] & { tierValues_: BigNumber[] }>; - - wrappedTierToValue( - tier_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - - wrappedValueToTier( - value_: BigNumberish, - overrides?: CallOverrides - ): Promise<[BigNumber]>; - }; - - tierValues(overrides?: CallOverrides): Promise; - - wrappedTierToValue( - tier_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - wrappedValueToTier( - value_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - callStatic: { - tierValues(overrides?: CallOverrides): Promise; - - wrappedTierToValue( - tier_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - wrappedValueToTier( - value_: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "InitializeValueTier(address,address)"( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - InitializeValueTier( - sender?: null, - pointer?: null - ): InitializeValueTierEventFilter; - }; - - estimateGas: { - tierValues(overrides?: CallOverrides): Promise; - - wrappedTierToValue( - tier_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - wrappedValueToTier( - value_: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - tierValues(overrides?: CallOverrides): Promise; - - wrappedTierToValue( - tier_: BigNumberish, - overrides?: CallOverrides - ): Promise; - - wrappedValueToTier( - value_: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/Verify.ts b/src/typechain/Verify.ts index 56b9d24..419d365 100644 --- a/src/typechain/Verify.ts +++ b/src/typechain/Verify.ts @@ -67,7 +67,7 @@ export interface VerifyInterface extends utils.Interface { "requestRemove((address,bytes)[])": FunctionFragment; "revokeRole(bytes32,address)": FunctionFragment; "state(address)": FunctionFragment; - "statusAtBlock((uint32,uint32,uint32),uint256)": FunctionFragment; + "statusAtTime((uint32,uint32,uint32),uint256)": FunctionFragment; "supportsInterface(bytes4)": FunctionFragment; }; @@ -142,7 +142,7 @@ export interface VerifyInterface extends utils.Interface { ): string; encodeFunctionData(functionFragment: "state", values: [string]): string; encodeFunctionData( - functionFragment: "statusAtBlock", + functionFragment: "statusAtTime", values: [StateStruct, BigNumberish] ): string; encodeFunctionData( @@ -197,7 +197,7 @@ export interface VerifyInterface extends utils.Interface { decodeFunctionResult(functionFragment: "revokeRole", data: BytesLike): Result; decodeFunctionResult(functionFragment: "state", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "statusAtBlock", + functionFragment: "statusAtTime", data: BytesLike ): Result; decodeFunctionResult( @@ -421,11 +421,11 @@ export interface Verify extends BaseContract { overrides?: CallOverrides ): Promise<[StateStructOutput]>; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides - ): Promise<[BigNumber]>; + ): Promise<[BigNumber] & { status_: BigNumber }>; supportsInterface( interfaceId: BytesLike, @@ -520,9 +520,9 @@ export interface Verify extends BaseContract { overrides?: CallOverrides ): Promise; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -613,9 +613,9 @@ export interface Verify extends BaseContract { overrides?: CallOverrides ): Promise; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -787,9 +787,9 @@ export interface Verify extends BaseContract { state(account_: string, overrides?: CallOverrides): Promise; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; @@ -892,9 +892,9 @@ export interface Verify extends BaseContract { overrides?: CallOverrides ): Promise; - statusAtBlock( + statusAtTime( state_: StateStruct, - blockNumber_: BigNumberish, + timestamp_: BigNumberish, overrides?: CallOverrides ): Promise; diff --git a/src/typechain/VerifyTier.ts b/src/typechain/VerifyTier.ts index d92bd02..d2712bf 100644 --- a/src/typechain/VerifyTier.ts +++ b/src/typechain/VerifyTier.ts @@ -20,30 +20,43 @@ import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; export interface VerifyTierInterface extends utils.Interface { functions: { "initialize(address)": FunctionFragment; - "report(address)": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; + "report(address,uint256[])": FunctionFragment; + "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; }; encodeFunctionData(functionFragment: "initialize", values: [string]): string; - encodeFunctionData(functionFragment: "report", values: [string]): string; encodeFunctionData( - functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] + functionFragment: "report", + values: [string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "reportTimeForTier", + values: [string, BigNumberish, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] ): string; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "setTier", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "reportTimeForTier", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; events: { "Initialize(address,address)": EventFragment; "Initialized(uint8)": EventFragment; - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } export type InitializeEvent = TypedEvent< @@ -57,19 +70,6 @@ export type InitializedEvent = TypedEvent<[number], { version: number }>; export type InitializedEventFilter = TypedEventFilter; -export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], - { - sender: string; - account: string; - startTier: BigNumber; - endTier: BigNumber; - data: string; - } ->; - -export type TierChangeEventFilter = TypedEventFilter; - export interface VerifyTier extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; @@ -102,14 +102,23 @@ export interface VerifyTier extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise<[BigNumber]>; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; - setTier( - arg0: string, + reportTimeForTier( + account_: string, arg1: BigNumberish, - arg2: BytesLike, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides - ): Promise<[void]>; + ): Promise<[boolean]>; }; initialize( @@ -117,26 +126,44 @@ export interface VerifyTier extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, + reportTimeForTier( + account_: string, arg1: BigNumberish, - arg2: BytesLike, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides - ): Promise; + ): Promise; callStatic: { initialize(verify_: string, overrides?: CallOverrides): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, + reportTimeForTier( + account_: string, arg1: BigNumberish, - arg2: BytesLike, + arg2: BigNumberish[], overrides?: CallOverrides - ): Promise; + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, + overrides?: CallOverrides + ): Promise; }; filters: { @@ -148,21 +175,6 @@ export interface VerifyTier extends BaseContract { "Initialized(uint8)"(version?: null): InitializedEventFilter; Initialized(version?: null): InitializedEventFilter; - - "TierChange(address,address,uint256,uint256,bytes)"( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; - TierChange( - sender?: null, - account?: null, - startTier?: null, - endTier?: null, - data?: null - ): TierChangeEventFilter; }; estimateGas: { @@ -171,12 +183,21 @@ export interface VerifyTier extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - report(account_: string, overrides?: CallOverrides): Promise; + report( + account_: string, + arg1: BigNumberish[], + overrides?: CallOverrides + ): Promise; - setTier( - arg0: string, + reportTimeForTier( + account_: string, arg1: BigNumberish, - arg2: BytesLike, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; @@ -189,13 +210,19 @@ export interface VerifyTier extends BaseContract { report( account_: string, + arg1: BigNumberish[], overrides?: CallOverrides ): Promise; - setTier( - arg0: string, + reportTimeForTier( + account_: string, arg1: BigNumberish, - arg2: BytesLike, + arg2: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId_: BytesLike, overrides?: CallOverrides ): Promise; }; diff --git a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts index 045ff15..f1319f8 100644 --- a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts +++ b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts @@ -233,7 +233,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b6200007960201b62000bf11760201c565b6001600160a01b03166080526200004b62000020620000ee565b6001600160a01b031660a0526200060e565b6060620000746200010560201b62000c7c1760201c565b905090565b600080620000b383604051602001620000939190620005ac565b604051602081830303815290604052620002ca60201b62000df31760201c565b90508051602082016000f091506001600160a01b038216620000e85760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000074620002f860201b62000e1f1760201c565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200047d831b62000f8817811660e083018190526101008301819052610120830181905261014083015262000483831b62000f8e1781166101608301819052610180830181905262000489841b62000f941782166101a084018190526101c084018190526101e084018190526200048f851b62000f9a178316610200850181905261022085018190526102408501819052610260850181905261028085018190526102a085018190526102c085018190526102e085018190526103008501819052610320850181905261034085018190526103608501829052620004d6861b6200100917841661038086018190526103a086018490526103c086018490526103e086018490526104008601829052610420860191909152610440850183905261046085018390526104808501839052620004dc861b6200100f1784166104a08601526104c085018390526104e085019190915261050084018290526105208401919091526105408301526200052590921b620010821790911661056080830191909152815290565b6060815182604051602001620002e2929190620005c8565b6040516020818303038152906040529050919050565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000489831b62000f9417811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526101c083018190526101e08301819052610200830181905261022083018190526102408301819052610260830181905261028083018190526102a083018190526102c083018190526102e08301819052610300830181905261032083018190526103408301819052610360830181905261038083018190526103a083018190526103c083018190526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083018190526105408301526200048f90921b62000f9a1790911661056080830191909152815290565b50600090565b50600290565b50600190565b6000808211620004d25760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5090565b50600390565b6000601f8216806200051f5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620004c9565b92915050565b6000808211620005645760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620004c9565b5060020260010190565b6000815160005b8181101562000591576020818501810151868301520162000575565b81811115620005a1576000828601525b509290920192915050565b600081526000620005c160018301846200056e565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b6005820152600062000606600e8301846200056e565b949350505050565b60805160a051611e7f62000634600039600061083d015260006108100152611e7f6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e9146102005780639b0bc34914610215578063a46c2a311461022857600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611983565b6103a1565b60405161008c9190611aa1565b60405180910390f35b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f9460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610f9a61056080830191909152815261007f565b61021361020e366004611af2565b61079c565b005b61007f610223366004611b42565b610aa0565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f8860e0820181905261010082018190526101208201819052610140820152610f8e61016082018190526101808201819052610f946101a083018190526101c083018190526101e08301819052610f9a610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840182905261100961038085018190526103a085018490526103c085018490526103e08501849052610400850182905261042085019190915261044084018390526104608401839052610480840183905261100f6104a08501526104c084018390526104e0840191909152610500830182905261052083019190915261054082015261108261056080830191909152815261007f565b606060006103ae856110f7565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa1580156103fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104209190611ba6565b60200151905060008060005b86518110156105c4578387828151811061044857610448611bf5565b602002602001015160a0018181525050600285518161046957610469611c24565b0487828151811061047c5761047c611bf5565b602002602001015160c00181815250506104af888883815181106104a2576104a2611bf5565b602002602001015161079c565b6104df8782815181106104c4576104c4611bf5565b6020026020010151608001518461123590919063ffffffff16565b92506105118782815181106104f6576104f6611bf5565b6020026020010151606001518361123590919063ffffffff16565b915086818151811061052557610525611bf5565b60200260200101516020015187828151811061054357610543611bf5565b60200260200101516040015110156105bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161042c565b506000828860200151510167ffffffffffffffff8111156105e7576105e7611652565b604051908082528060200260200182016040528015610610578160200160208202803683370190505b50905060005b886020015151811015610666578860200151818151811061063957610639611bf5565b602002602001015182828151811061065357610653611bf5565b6020908102919091010152600101610616565b5087515160009067ffffffffffffffff81111561068557610685611652565b6040519080825280602002602001820160405280156106b857816020015b60608152602001906001900390816106a35790505b50905060005b895151811015610714576106ef878b6000015183815181106106e2576106e2611bf5565b6020026020010151610aa0565b82828151811061070157610701611bf5565b60209081029190910101526001016106be565b5061078c6040518060a00160405280600081526020018567ffffffffffffffff81111561074357610743611652565b60405190808252806020026020018201604052801561076c578160200160208202803683370190505b5081526020018381526020018481526020018b602001515181525061124c565b96505050505050505b9392505050565b80518251518110610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016105b3565b60006108347f0000000000000000000000000000000000000000000000000000000000000000611389565b905060006108617f0000000000000000000000000000000000000000000000000000000000000000611389565b905060008080600080602088026020018a5101519050805193505b83851015610a25576002850194508481015180601e1a935080601f1a925050600683101561094057826108d05789602001515189608001510182106108c057600080fd5b6040890180516001019052610927565b60018314156108e957886040015182106108c057600080fd5b6002831415610902576040890180516001019052610927565b6003831415610927578860a00151821061091b57600080fd5b60408901805160010190525b600483141561093b5761093b8a8a846113b7565b610a08565b8860c0015183106109ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016105b3565b6020838102888101820151908801909101516109cc8463ffffffff8416565b60408c018051919091039081905260608c01516109e891611235565b60608c01526109fa8463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610a1b91611235565b60608a015261087c565b606089015160ff1015610a94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016105b3565b50505050505050505050565b80516060906002810615610b10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016105b3565b60006002600383020467ffffffffffffffff811115610b3157610b31611652565b6040519080825280601f01601f191660200182016040528015610b5b576020820181803683370190505b509050600660018381018160005b82821015610be35781890151601f1a6002830615610bc55785811015610b9757600182019181908801602101535b858110610bc557600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610bd65780826020018801535b5060019182019101610b69565b509398975050505050505050565b600080610c1c83604051602001610c089190611c53565b604051602081830303815290604052610df3565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610c76576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f8860e0820181905261010082018190526101208201819052610140820152610f8e61016082018190526101808201819052610f946101a083018190526101c083018190526101e08301819052610f9a610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840182905261100961038085018190526103a085018490526103c085018490526103e08501849052610400850182905261042085019190915261044084018390526104608401839052610480840183905261100f6104a08501526104c084018390526104e0840191909152610500830182905261052083019190915261054082015261108261056082810191909152815290565b6060815182604051602001610e09929190611c79565b6040516020818303038152906040529050919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610f9460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610f9a61056082810191909152815290565b50600090565b50600290565b50600190565b6000808211611005576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105b3565b5090565b50600390565b6000601f82168061107c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016105b3565b92915050565b60008082116110ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105b3565b5060020260010190565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261112b9116611389565b905080516000141561107c576111d86111d38473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015611188573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526111ce9190810190611d10565b611456565b610bf1565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001692909116919091179055610795836110f7565b6000818310156112455781610795565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112989190611d87565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112d49291602001611dbd565b604051602081830303815290604052905060005b85604001515181101561138057818660400151828151811061130c5761130c611bf5565b60200260200101515160001b8760400151838151811061132e5761132e611bf5565b602002602001015160405160200161134893929190611de3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016112e8565b50949350505050565b606061107c8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611560565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114019190611235565b606084015260808301516114159082611235565b60808401528251600783168085526001600385811c161b919060005b8381101561144b57611443888861079c565b600101611431565b505090935250505050565b6060602082518161146957611469611c24565b06156114d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016105b3565b600060108351816114e4576114e4611c24565b0467ffffffffffffffff8111156114fd576114fd611652565b6040519080825280601f01601f191660200182016040528015611527576020820181803683370190505b509050600060025b845182101561155757808301805160208488018101519091179091529091019060020161152f565b50909392505050565b6060833b8061157f575050604080516020810190915260008152610795565b8084111561159d575050604080516020810190915260008152610795565b838310156115e8576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016105b3565b83830384820360008282106115fd57826115ff565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611650611e1a565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156116a4576116a4611652565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116f1576116f1611652565b604052919050565b600067ffffffffffffffff82111561171357611713611652565b5060051b60200190565b600067ffffffffffffffff82111561173757611737611652565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261177457600080fd5b81356117876117828261171d565b6116aa565b81815284602083860101111561179c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126117ca57600080fd5b813560206117da611782836116f9565b82815260059290921b840181019181810190868411156117f957600080fd5b8286015b8481101561181457803583529183019183016117fd565b509695505050505050565b60006040828403121561183157600080fd5b611839611681565b9050813567ffffffffffffffff8082111561185357600080fd5b818401915084601f83011261186757600080fd5b81356020611877611782836116f9565b82815260059290921b8401810191818101908884111561189657600080fd5b8286015b848110156118ce578035868111156118b25760008081fd5b6118c08b86838b0101611763565b84525091830191830161189a565b50865250858101359350828411156118e557600080fd5b6118f1878588016117b9565b818601525050505092915050565b600060e0828403121561191157600080fd5b60405160e0810181811067ffffffffffffffff8211171561193457611934611652565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561199857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146119bc57600080fd5b925060208481013567ffffffffffffffff808211156119da57600080fd5b6119e68883890161181f565b945060408701359150808211156119fc57600080fd5b508501601f81018713611a0e57600080fd5b8035611a1c611782826116f9565b81815260e0918202830184019184820191908a841115611a3b57600080fd5b938501935b83851015611a6157611a528b866118ff565b83529384019391850191611a40565b5080955050505050509250925092565b60005b83811015611a8c578181015183820152602001611a74565b83811115611a9b576000848401525b50505050565b6020815260008251806020840152611ac0816040850160208701611a71565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b0657600080fd5b823567ffffffffffffffff811115611b1d57600080fd5b611b298582860161181f565b925050611b3984602085016118ff565b90509250929050565b60008060408385031215611b5557600080fd5b823567ffffffffffffffff80821115611b6d57600080fd5b611b7986838701611763565b93506020850135915080821115611b8f57600080fd5b50611b9c85828601611763565b9150509250929050565b600060408284031215611bb857600080fd5b6040516040810181811067ffffffffffffffff82111715611bdb57611bdb611652565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251611c6c816001850160208701611a71565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d0281600e850160208701611a71565b91909101600e019392505050565b600060208284031215611d2257600080fd5b815167ffffffffffffffff811115611d3957600080fd5b8201601f81018413611d4a57600080fd5b8051611d586117828261171d565b818152856020838501011115611d6d57600080fd5b611d7e826020830160208601611a71565b95945050505050565b815160009082906020808601845b83811015611db157815185529382019390820190600101611d95565b50929695505050505050565b82815260008251611dd5816020850160208701611a71565b919091016020019392505050565b60008451611df5818460208901611a71565b82018481528351611e0d816020808501908801611a71565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea26469706673582212200b846496cb432f503e4f2d2392004a6c60c8cb72c7fa88e23b4b40c8c989a31364736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b6200007960201b62000c201760201c565b6001600160a01b03166080526200004b62000020620000ee565b6001600160a01b031660a0526200065b565b6060620000746200010560201b62000cab1760201c565b905090565b600080620000b383604051602001620000939190620005f9565b604051602081830303815290604052620002f460201b62000e391760201c565b90508051602082016000f091506001600160a01b038216620000e85760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060620000746200032260201b62000e651760201c565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004be831b62000fe617811660e08301819052620004c4841b62000fec1782166101008401819052620004ca851b62000ff217831661012085018190526101408501839052610160850183905261018085018390526101a08501819052620004d0861b62000ff81784166101c08601526200051d861b6200106d1784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e0850182905262000523861b6200107317841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084015262000566841b620010e21782166105408401526200056c841b620010e817821661056084015261058083018190526200057290931b620010ee17166105a08201526105c08082019290925290815290565b60608151826040516020016200030c92919062000615565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004c4831b62000fec17811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526200052390931b6200107317166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005135760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005625760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064016200050a565b5090565b60020190565b60030190565b6000601f821680620005b55760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b60448201526064016200050a565b92915050565b6000815160005b81811015620005de5760208185018101518683015201620005c2565b81811115620005ee576000828601525b509290920192915050565b6000815260006200060e6001830184620005bb565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b6005820152600062000653600e830184620005bb565b949350505050565b60805160a051611ee962000681600039600061086c0152600061083f0152611ee96000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e9146102185780639b0bc3491461022d578063a46c2a311461024057600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a3660046119ed565b6103d0565b60405161008c9190611b0b565b60405180910390f35b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c080830191909152815261007f565b61022b610226366004611b5c565b6107cb565b005b61007f61023b366004611bac565b610acf565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c080830191909152815261007f565b606060006103dd85611161565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c10565b60200151905060008060005b86518110156105f3578387828151811061047757610477611c5f565b602002602001015160a0018181525050600285518161049857610498611c8e565b048782815181106104ab576104ab611c5f565b602002602001015160c00181815250506104de888883815181106104d1576104d1611c5f565b60200260200101516107cb565b61050e8782815181106104f3576104f3611c5f565b6020026020010151608001518461129f90919063ffffffff16565b925061054087828151811061052557610525611c5f565b6020026020010151606001518361129f90919063ffffffff16565b915086818151811061055457610554611c5f565b60200260200101516020015187828151811061057257610572611c5f565b60200260200101516040015110156105eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161045b565b506000828860200151510167ffffffffffffffff811115610616576106166116bc565b60405190808252806020026020018201604052801561063f578160200160208202803683370190505b50905060005b886020015151811015610695578860200151818151811061066857610668611c5f565b602002602001015182828151811061068257610682611c5f565b6020908102919091010152600101610645565b5087515160009067ffffffffffffffff8111156106b4576106b46116bc565b6040519080825280602002602001820160405280156106e757816020015b60608152602001906001900390816106d25790505b50905060005b8951518110156107435761071e878b60000151838151811061071157610711611c5f565b6020026020010151610acf565b82828151811061073057610730611c5f565b60209081029190910101526001016106ed565b506107bb6040518060a00160405280600081526020018567ffffffffffffffff811115610772576107726116bc565b60405190808252806020026020018201604052801561079b578160200160208202803683370190505b5081526020018381526020018481526020018b60200151518152506112b6565b96505050505050505b9392505050565b80518251518110610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016105e2565b60006108637f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060006108907f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060008080600080602088026020018a5101519050805193505b83851015610a54576002850194508481015180601e1a935080601f1a925050600683101561096f57826108ff5789602001515189608001510182106108ef57600080fd5b6040890180516001019052610956565b600183141561091857886040015182106108ef57600080fd5b6002831415610931576040890180516001019052610956565b6003831415610956578860a00151821061094a57600080fd5b60408901805160010190525b600483141561096a5761096a8a8a84611421565b610a37565b8860c0015183106109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016105e2565b6020838102888101820151908801909101516109fb8463ffffffff8416565b60408c018051919091039081905260608c0151610a179161129f565b60608c0152610a298463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610a4a9161129f565b60608a01526108ab565b606089015160ff1015610ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016105e2565b50505050505050505050565b80516060906002810615610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016105e2565b60006002600383020467ffffffffffffffff811115610b6057610b606116bc565b6040519080825280601f01601f191660200182016040528015610b8a576020820181803683370190505b509050600660018381018160005b82821015610c125781890151601f1a6002830615610bf45785811015610bc657600182019181908801602101535b858110610bf457600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610c055780826020018801535b5060019182019101610b98565b509398975050505050505050565b600080610c4b83604051602001610c379190611cbd565b604051602081830303815290604052610e39565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610ca5576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c082810191909152815290565b6060815182604051602001610e4f929190611ce3565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b6000808211611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5060020260010190565b50600090565b60008082116110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5090565b60020190565b60030190565b6000601f82168061115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016105e2565b92915050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261119591166113f3565b905080516000141561115b5761124261123d8473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112389190810190611d7a565b6114c0565b610c20565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556107c483611161565b6000818310156112af57816107c4565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113029190611df1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261133e9291602001611e27565b604051602081830303815290604052905060005b8560400151518110156113ea57818660400151828151811061137657611376611c5f565b60200260200101515160001b8760400151838151811061139857611398611c5f565b60200260200101516040516020016113b293929190611e4d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611352565b50949350505050565b606061115b8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115ca565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c918290030191829052606084015160019091019161146b919061129f565b6060840152608083015161147f908261129f565b60808401528251600783168085526001600385811c161b919060005b838110156114b5576114ad88886107cb565b60010161149b565b505090935250505050565b606060208251816114d3576114d3611c8e565b061561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016105e2565b6000601083518161154e5761154e611c8e565b0467ffffffffffffffff811115611567576115676116bc565b6040519080825280601f01601f191660200182016040528015611591576020820181803683370190505b509050600060025b84518210156115c1578083018051602084880181015190911790915290910190600201611599565b50909392505050565b6060833b806115e95750506040805160208101909152600081526107c4565b808411156116075750506040805160208101909152600081526107c4565b83831015611652576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016105e2565b83830384820360008282106116675782611669565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6116ba611e84565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561170e5761170e6116bc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175b5761175b6116bc565b604052919050565b600067ffffffffffffffff82111561177d5761177d6116bc565b5060051b60200190565b600067ffffffffffffffff8211156117a1576117a16116bc565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117de57600080fd5b81356117f16117ec82611787565b611714565b81815284602083860101111561180657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261183457600080fd5b813560206118446117ec83611763565b82815260059290921b8401810191818101908684111561186357600080fd5b8286015b8481101561187e5780358352918301918301611867565b509695505050505050565b60006040828403121561189b57600080fd5b6118a36116eb565b9050813567ffffffffffffffff808211156118bd57600080fd5b818401915084601f8301126118d157600080fd5b813560206118e16117ec83611763565b82815260059290921b8401810191818101908884111561190057600080fd5b8286015b848110156119385780358681111561191c5760008081fd5b61192a8b86838b01016117cd565b845250918301918301611904565b508652508581013593508284111561194f57600080fd5b61195b87858801611823565b818601525050505092915050565b600060e0828403121561197b57600080fd5b60405160e0810181811067ffffffffffffffff8211171561199e5761199e6116bc565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a0257600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a2657600080fd5b925060208481013567ffffffffffffffff80821115611a4457600080fd5b611a5088838901611889565b94506040870135915080821115611a6657600080fd5b508501601f81018713611a7857600080fd5b8035611a866117ec82611763565b81815260e0918202830184019184820191908a841115611aa557600080fd5b938501935b83851015611acb57611abc8b86611969565b83529384019391850191611aaa565b5080955050505050509250925092565b60005b83811015611af6578181015183820152602001611ade565b83811115611b05576000848401525b50505050565b6020815260008251806020840152611b2a816040850160208701611adb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b7057600080fd5b823567ffffffffffffffff811115611b8757600080fd5b611b9385828601611889565b925050611ba38460208501611969565b90509250929050565b60008060408385031215611bbf57600080fd5b823567ffffffffffffffff80821115611bd757600080fd5b611be3868387016117cd565b93506020850135915080821115611bf957600080fd5b50611c06858286016117cd565b9150509250929050565b600060408284031215611c2257600080fd5b6040516040810181811067ffffffffffffffff82111715611c4557611c456116bc565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251611cd6816001850160208701611adb565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d6c81600e850160208701611adb565b91909101600e019392505050565b600060208284031215611d8c57600080fd5b815167ffffffffffffffff811115611da357600080fd5b8201601f81018413611db457600080fd5b8051611dc26117ec82611787565b818152856020838501011115611dd757600080fd5b611de8826020830160208601611adb565b95945050505050565b815160009082906020808601845b83811015611e1b57815185529382019390820190600101611dff565b50929695505050505050565b82815260008251611e3f816020850160208701611adb565b919091016020019392505050565b60008451611e5f818460208901611adb565b82018481528351611e77816020808501908801611adb565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220ce1a57e4e6cb9e647683791fbbb78f613d293fc7533f5275542177db2df3e3d664736f6c634300080a0033"; type AllStandardOpsStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/AllStandardOpsTest__factory.ts b/src/typechain/factories/AllStandardOpsTest__factory.ts index 5086f4b..9a6b801 100644 --- a/src/typechain/factories/AllStandardOpsTest__factory.ts +++ b/src/typechain/factories/AllStandardOpsTest__factory.ts @@ -198,7 +198,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b50604051620037f5380380620037f583398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a05161373f620000b6600039600061065701526000610693015261373f6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063f2cd6c081461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612b7f565b6102d3565b005b6100aa61051e565b6040516100b79190612c50565b60405180910390f35b6100a06100ce366004612c63565b610579565b6100db6107d9565b6040519081526020016100b7565b6100a061080e565b6100f96109b6565b6040516100b79190612d18565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526115a460e08201526115af6101008201526115ba6101208201526115c56101408201526115d06101608201526116436101808201526116a96101a08201526116e96101c082015261171d6101e08201526117516102008201526117986102208201526117f561024082015261182e61026082015261186c6102808201526118be6102a082015261191b6102c082015261194f6102e08201526119836103008201526119b56103208201526119e7610340820152611a19610360820152611a46610380820152611aa16103a0820152611af76103c0820152611b4e6103e0820152611ba5610400820152611bd9610420820152611c03610440820152611cea610460820152611d46610480820152611dc26104a0820152611e7c6104c08201819052611f266104e0830152610500820152611fa66105208201526120ae6105408201526121cc61056080830191909152815290516100b79190612dee565b6000815160206102e39190612e30565b67ffffffffffffffff8111156102fb576102fb612add565b6040519080825280601f01601f191660200182016040528015610325576020820181803683370190505b50905060005b825181101561037d57600083828151811061034857610348612e6d565b6020026020010151905060008260206103619190612e30565b840160200191909152508061037581612e9c565b91505061032b565b5060005a60008054919250906103a89073ffffffffffffffffffffffffffffffffffffffff16610b97565b905060005a905060005a905060006103bf84610bcb565b905060005a905060005a90506103d788846000610d37565b5060005a90506104276040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a6104229190612ed5565b611013565b60408051808201909152600b81527f6465636f6465206761733a0000000000000000000000000000000000000000006020820152610469906104228588612ed5565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526104ab906104228385612ed5565b8351600590815560208086015180518793926104cc9260069291019061295a565b50604082015180516104e89160028401916020909101906129a5565b506060820151805161050491600384019160209091019061295a565b506080820151816004015590505050505050505050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561056f57602002820191906000526020600020905b81548152602001906001019080831161055b575b5050505050905090565b60005a90506105be6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b61061f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105df579050509050818160008151811061064857610648612e6d565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016106d293929190613060565b6000604051808303816000875af11580156106f1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261073791908101906131c3565b905060005a90506107836040518060400160405280600d81526020017f6e6577207374617465206761730000000000000000000000000000000000000081525082876104229190612ed5565b61078c826110a8565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050505050565b6005546000906006906107ee90600190612ed5565b815481106107fe576107fe612e6d565b9060005260206000200154905090565b60005a60008054919250906108389073ffffffffffffffffffffffffffffffffffffffff16610b97565b905060005a905060005a9050600061084f84610bcb565b905060005a905060005a905061087660405180602001604052806000815250846000610d37565b5060005a90506108c16040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a6104229190612ed5565b60408051808201909152600b81527f6465636f6465206761733a0000000000000000000000000000000000000000006020820152610903906104228588612ed5565b60408051808201909152600881527f72756e206761733a0000000000000000000000000000000000000000000000006020820152610945906104228385612ed5565b8351600590815560208086015180518793926109669260069291019061295a565b50604082015180516109829160028401916020909101906129a5565b506060820151805161099e91600384019160209091019061295a565b50608082015181600401559050505050505050505050565b6109e86040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a4e57602002820191906000526020600020905b815481526020019060010190808311610a3a575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b28578382906000526020600020018054610a9b9061326c565b80601f0160208091040260200160405190810160405280929190818152602001828054610ac79061326c565b8015610b145780601f10610ae957610100808354040283529160200191610b14565b820191906000526020600020905b815481529060010190602001808311610af757829003601f168201915b505050505081526020019060010190610a7c565b50505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610b7f57602002820191906000526020600020905b815481526020019060010190808311610b6b575b50505050508152602001600482015481525050905090565b6060610bc58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611133565b92915050565b610bfd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610c2f6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610c6357610c63612add565b604051908082528060200260200182016040528015610c8c578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610cc357610cc3612add565b604051908082528060200260200182016040528015610cec578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610d26578160208202602001840152815160200182019150600181019050610cff565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ff9576003890198508886015180601f1a975061ffff8160081c169850506006881015610f715787610dba57866020028401518252602082019150610f84565b6001881415610dd757602087028301518252602082019150610f84565b6002881415610e69578c518760200210610e52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d01518252602082019150610f84565b6003881415610eb2576000610ea0604080518082018252600080825260209182015281518083019092526001825260039082015290565b51880154835250602090910190610f84565b6004881415610ece57610ec78d8d848a61121b565b9150610f84565b606087610efc578c604051602001610ee69190612d18565b6040516020818303038152906040529050610f5b565b6001881415610f1557610f0e8d611388565b9050610f5b565b6002881415610f31576020808e0151604051610ee692016132ba565b6003881415610f5b578c516040805160208101929092520160405160208183030381529060405290505b805115610f6b57610f6b816114c5565b50610f84565b87610f80888463ffffffff8416565b9250505b60208c0151518c511115610ff4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610e49565b610d75565b6020838303048c52509750505050505050505b9392505050565b6110a4828260405160240161102992919061331f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052611557565b5050565b6000806110d3836040516020016110bf9190613341565b604051602081830303815290604052611578565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661112d576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061115257505060408051602081019091526000815261100c565b8084111561117057505060408051602081019091526000815261100c565b838310156111bb576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610e49565b83830384820360008282106111d057826111d2565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261125a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006112a5565b826001141561127e57506fffffffffffffffffffffffffffffffff905060806112a5565b826002141561129a575067ffffffffffffffff905060406112a5565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156112c8576112c8612add565b6040519080825280602002602001820160405280156112f1578160200160208202803683370190505b50905060208082019083028a03815b8b821015611318578151815260209182019101611300565b505060608b015160808c015160209081029091010160005b6101008110156113765760208502830182845b8281101561135f578051841c8a16825260209182019101611343565b50505061136d8e8e8b610d37565b9b508501611330565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113d491906132ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526114109291602001613367565b604051602081830303815290604052905060005b8560400151518110156114bc57818660400151828151811061144857611448612e6d565b60200260200101515160001b8760400151838151811061146a5761146a612e6d565b60200260200101516040516020016114849392919061338d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611424565b50949350505050565b611554816040516024016114d99190612dee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611557565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606081518260405160200161158e9291906133c4565b6040516020818303038152906040529050919050565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361163682611630858a6123c9565b9061244a565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611636826116a3858a6123c9565b90612469565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116dd82876123c9565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116dd828761247e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116dd82876124dc565b600060208302820380516000602083015b8581101561178a578051830191508282101561177d57600080fd5b9091508190602001611762565b505081526020019392505050565b6020828102820380516000928201835b85821080156117d657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561178a575080516020909101906117ee8382612527565b92506117a8565b600060208302820380516000602083015b8581101561178a578051830391508282111561182157600080fd5b9091508190602001611806565b6020828102820380516000928201835b858210801561184d5750826000105b1561178a575080516020909101906118658382612563565b925061183e565b60006020830282038051600080602084015b868110156118af5783156118a75780519250828402915082848304146118a357600080fd5b8193505b60200161187e565b50505081526020019392505050565b6020828102820380516000928201835b85821080156118fc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561178a575080516020909101906119148382612579565b92506118ce565b600060208302820380516000602083015b8581101561178a57805191508161194257600080fd5b918190049160200161192c565b600060208302820380516000602083015b8581101561178a57805191508161197657600080fd5b9181900691602001611960565b6020828102820380516000928201835b8582101561178a575080516020909101906119ae818461357b565b9250611993565b6020828102820380516000928201835b8582101561178a57508051828110156119dc578092505b6020820191506119c5565b6020828102820380516000928201835b8582101561178a5750805182811115611a0e578092505b6020820191506119f7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015611bce578051611bc65760008252611bce565b602001611baf565b506020019392505050565b6000602083028203805b83811015611bce5780518015611bfa578252611bce565b50602001611be3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015611cc6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116369190613587565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361163683836125a8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085611db385858585612607565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115611df057611df0612add565b604051908082528060200260200182016040528015611e19578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015611e5557815181602001860152602082019150602081019050611e33565b50505190506000611e68838389896126ad565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401611ca9565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f82573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116dd9190613587565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208b91906135a0565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa15801561219a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121be9190613587565b909452509395945050505050565b60008060008467ffffffffffffffff8111156121ea576121ea612add565b604051908082528060200260200182016040528015612213578160200160208202803683370190505b50905060008567ffffffffffffffff81111561223157612231612add565b60405190808252806020026020018201604052801561225a578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156122af578251815260209283019201612297565b5050602088028101602084015b818310156122d45782518152602092830192016122bc565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061232e90879087906004016135d6565b600060405180830381865afa15801561234b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526123919190810190613639565b9050846020820160208a0281015b808210156123ba57815183526020928301929091019061239f565b50909998505050505050505050565b60008082601214156123de5783915050610bc5565b826012111561240a575060128290036123f881600a61357b565b6124029085612e30565b915050610bc5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161243981600a61357b565b61240290856136bf565b5092915050565b6000670de0b6b3a764000061245f8385612e30565b61100c91906136bf565b60008161245f670de0b6b3a764000085612e30565b60008060128314156124935783915050610bc5565b82601211156124ad5750601282900361243981600a61357b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016123f881600a61357b565b600081810b6124ec575081610bc5565b60008260000b13156125145761250382600a6136fa565b61250d9084612e30565b9050610bc5565b60ff60008390031661243981600a61357b565b6000828201838110612539578061255b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161257357600061100c565b50900390565b60008261258857506000610bc5565b8282028284828161259b5761259b6132f0565b041415612539578061255b565b60008060015b600881116125ff5760006125c286836127fd565b905060006125d086846127fd565b905060006125de8383612563565b90506125ee8560018603836128aa565b945050600190920191506125ae9050565b509392505050565b6000826008811115612675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e49565b6000855b858110156126a15763ffffffff6020820290811b199890981685891b17979150600101612679565b50959695505050505050565b835160009081908190819060015b600881116127ef576000925082876126f457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6126f8565b5060005b60005b838110156127ad576127268c828151811061271857612718612e6d565b6020026020010151846127fd565b95508a861161277857886127455761273e8683612934565b915061276f565b60018914156127585761273e868361294a565b600289148015612766575084155b1561276f578591505b600194506127a5565b896127a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506127ad565b6001016126fb565b50836127d657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6127e48660018403836128aa565b9550506001016126bb565b509298975050505050505050565b600081600881111561286b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e49565b826128795760009150612443565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e49565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310612943578161100c565b5090919050565b600081831015612943578161100c565b828054828255906000526020600020908101928215612995579160200282015b8281111561299557825182559160200191906001019061297a565b506129a19291506129fe565b5090565b8280548282559060005260206000209081019282156129f2579160200282015b828111156129f257825180516129e2918491602090910190612a13565b50916020019190600101906129c5565b506129a1929150612a86565b5b808211156129a157600081556001016129ff565b828054612a1f9061326c565b90600052602060002090601f016020900481019282612a415760008555612995565b82601f10612a5a57805160ff1916838001178555612995565b82800160010185558215612995579182018281111561299557825182559160200191906001019061297a565b808211156129a1576000612a9a8282612aa3565b50600101612a86565b508054612aaf9061326c565b6000825580601f10612abf575050565b601f01602090049060005260206000209081019061155491906129fe565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612b5357612b53612add565b604052919050565b600067ffffffffffffffff821115612b7557612b75612add565b5060051b60200190565b60006020808385031215612b9257600080fd5b823567ffffffffffffffff811115612ba957600080fd5b8301601f81018513612bba57600080fd5b8035612bcd612bc882612b5b565b612b0c565b81815260059190911b82018301908381019087831115612bec57600080fd5b928401925b82841015612c0a57833582529284019290840190612bf1565b979650505050505050565b600081518084526020808501945080840160005b83811015612c4557815187529582019590820190600101612c29565b509495945050505050565b60208152600061100c6020830184612c15565b600060208284031215612c7557600080fd5b813567ffffffffffffffff811115612c8c57600080fd5b82016040818503121561100c57600080fd5b60005b83811015612cb9578181015183820152602001612ca1565b83811115612cc8576000848401525b50505050565b60008151808452612ce6816020860160208601612c9e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a06040850152612d3d60c0850182612c15565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015612db65784878303018452612da4828751612cce565b95880195938801939150600101612d8a565b5060608a01519650838982030160808a0152612dd28188612c15565b9650505050505050608084015160a08401528091505092915050565b60208152600061100c6020830184612cce565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612e6857612e68612e01565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612ece57612ece612e01565b5060010190565b600082821015612ee757612ee7612e01565b500390565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612f2157600080fd5b830160208101925035905067ffffffffffffffff811115612f4157600080fd5b8060051b3603831315612f5357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612fd557600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015612c4557815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101613006565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a083016130918687612eec565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561315b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261311257600080fd5b8501803567ffffffffffffffff81111561312b57600080fd5b80360387131561313a57600080fd5b61314788828b8501612f5a565b9750505091860191908601906001016130b1565b505050505061316c82870187612eec565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526131a3828483612fa3565b9250505082810360408401526131b98185612ff2565b9695505050505050565b6000602082840312156131d557600080fd5b815167ffffffffffffffff808211156131ed57600080fd5b818401915084601f83011261320157600080fd5b81518181111561321357613213612add565b61324460207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612b0c565b915080825285602082850101111561325b57600080fd5b6114bc816020840160208601612c9e565b600181811c9082168061328057607f821691505b6020821081141561112d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b838110156132e4578151855293820193908201906001016132c8565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6040815260006133326040830185612cce565b90508260208301529392505050565b600081526000825161335a816001850160208701612c9e565b9190910160010192915050565b8281526000825161337f816020850160208701612c9e565b919091016020019392505050565b6000845161339f818460208901612c9e565b820184815283516133b7816020808501908801612c9e565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161344d81600e850160208701612c9e565b91909101600e019392505050565b600181815b808511156134b457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561349a5761349a612e01565b808516156134a757918102915b93841c9390800290613460565b509250929050565b6000826134cb57506001610bc5565b816134d857506000610bc5565b81600181146134ee57600281146134f857613514565b6001915050610bc5565b60ff84111561350957613509612e01565b50506001821b610bc5565b5060208310610133831016604e8410600b8410161715613537575081810a610bc5565b613541838361345b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561357357613573612e01565b029392505050565b600061100c83836134bc565b60006020828403121561359957600080fd5b5051919050565b6000602082840312156135b257600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461100c57600080fd5b604080825283519082018190526000906020906060840190828701845b8281101561362557815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016135f3565b505050838103828501526131b98186612c15565b6000602080838503121561364c57600080fd5b825167ffffffffffffffff81111561366357600080fd5b8301601f8101851361367457600080fd5b8051613682612bc882612b5b565b81815260059190911b820183019083810190878311156136a157600080fd5b928401925b82841015612c0a578351825292840192908401906136a6565b6000826136f5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061100c60ff8416836134bc56fea2646970667358221220fb95a974c7a7384dbafd4480676193952fb4a2ba95d42f187f5ce47e91f2c04664736f6c634300080a0033"; + "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b5060405162003b3138038062003b3183398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a051613a7b620000b66000396000610672015260006106ae0152613a7b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063f2cd6c081461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612e4e565b6102ee565b005b6100aa610539565b6040516100b79190612f1f565b60405180910390f35b6100a06100ce366004612f32565b610594565b6100db6107f4565b6040519081526020016100b7565b6100a0610829565b6100f96109d1565b6040516100b79190612fe7565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526115bf60e082018190526116b361010083015261173f610120830152611860610140830152610160820152611909610180820152611a116101a0820152611ae56101c0820152611ce26101e0820152611ced610200820152611cf8610220820152611d03610240820152611d0e610260820152611d42610280820152611da86102a0820152611e0e6102c0820152611e426102e0820152611e76610300820152611eab610320820152611f06610340820152611f5c610360820152611f85610380820152611fdc6103a08201526120096103c08201526120606103e08201526120cb61040082015261212861042082015261216661044082015261219f6104608201526121d36104808201526122056104a08201526122376104c08201526122696104e082015261229d6105008201526122ef6105208201526123286105408201526123da6105608201526125076105808201526125636105a082015261261d6105c080830191909152815290516100b791906130bd565b6000815160206102fe91906130ff565b67ffffffffffffffff81111561031657610316612dac565b6040519080825280601f01601f191660200182016040528015610340576020820181803683370190505b50905060005b82518110156103985760008382815181106103635761036361313c565b60200260200101519050600082602061037c91906130ff565b84016020019190915250806103908161316b565b915050610346565b5060005a60008054919250906103c39073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a905060006103da84610be6565b905060005a905060005a90506103f288846000610d52565b5060005a90506104426040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b61102e565b60408051808201909152600b81527f6465636f6465206761733a00000000000000000000000000000000000000000060208201526104849061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526104c69061043d83856131a4565b8351600590815560208086015180518793926104e792600692910190612c29565b5060408201518051610503916002840191602090910190612c74565b506060820151805161051f916003840191602090910190612c29565b506080820151816004015590505050505050505050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561058a57602002820191906000526020600020905b815481526020019060010190808311610576575b5050505050905090565b60005a90506105d96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b61063a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105fa57905050905081816000815181106106635761066361313c565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016106ed9392919061332f565b6000604051808303816000875af115801561070c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107529190810190613492565b905060005a905061079e6040518060400160405280600d81526020017f6e65772073746174652067617300000000000000000000000000000000000000815250828761043d91906131a4565b6107a7826110c3565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050505050565b600554600090600690610809906001906131a4565b815481106108195761081961313c565b9060005260206000200154905090565b60005a60008054919250906108539073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a9050600061086a84610be6565b905060005a905060005a905061089160405180602001604052806000815250846000610d52565b5060005a90506108dc6040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b60408051808201909152600b81527f6465636f6465206761733a000000000000000000000000000000000000000000602082015261091e9061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526109609061043d83856131a4565b83516005908155602080860151805187939261098192600692910190612c29565b506040820151805161099d916002840191602090910190612c74565b50606082015180516109b9916003840191602090910190612c29565b50608082015181600401559050505050505050505050565b610a036040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b815481526020019060010190808311610a55575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b43578382906000526020600020018054610ab69061353b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae29061353b565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b50505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610b9a57602002820191906000526020600020905b815481526020019060010190808311610b86575b50505050508152602001600482015481525050905090565b6060610be08260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61114e565b92915050565b610c186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610c4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610c7e57610c7e612dac565b604051908082528060200260200182016040528015610ca7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610cde57610cde612dac565b604051908082528060200260200182016040528015610d07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610d41578160208202602001840152815160200182019150600181019050610d1a565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611014576003890198508886015180601f1a975061ffff8160081c169850506006881015610f8c5787610dd557866020028401518252602082019150610f9f565b6001881415610df257602087028301518252602082019150610f9f565b6002881415610e84578c518760200210610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d01518252602082019150610f9f565b6003881415610ecd576000610ebb604080518082018252600080825260209182015281518083019092526001825260039082015290565b51880154835250602090910190610f9f565b6004881415610ee957610ee28d8d848a611236565b9150610f9f565b606087610f17578c604051602001610f019190612fe7565b6040516020818303038152906040529050610f76565b6001881415610f3057610f298d6113a3565b9050610f76565b6002881415610f4c576020808e0151604051610f019201613589565b6003881415610f76578c516040805160208101929092520160405160208183030381529060405290505b805115610f8657610f86816114e0565b50610f9f565b87610f9b888463ffffffff8416565b9250505b60208c0151518c51111561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610e64565b610d90565b6020838303048c52509750505050505050505b9392505050565b6110bf82826040516024016110449291906135ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052611572565b5050565b6000806110ee836040516020016110da9190613610565b604051602081830303815290604052611593565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611148576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061116d575050604080516020810190915260008152611027565b8084111561118b575050604080516020810190915260008152611027565b838310156111d6576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610e64565b83830384820360008282106111eb57826111ed565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261127557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006112c0565b826001141561129957506fffffffffffffffffffffffffffffffff905060806112c0565b82600214156112b5575067ffffffffffffffff905060406112c0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156112e3576112e3612dac565b60405190808252806020026020018201604052801561130c578160200160208202803683370190505b50905060208082019083028a03815b8b82101561133357815181526020918201910161131b565b505060608b015160808c015160209081029091010160005b6101008110156113915760208502830182845b8281101561137a578051841c8a1682526020918201910161135e565b5050506113888e8e8b610d52565b9b50850161134b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113ef9190613589565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261142b9291602001613636565b604051602081830303815290604052905060005b8560400151518110156114d75781866040015182815181106114635761146361313c565b60200260200101515160001b876040015183815181106114855761148561313c565b602002602001015160405160200161149f9392919061365c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161143f565b50949350505050565b61156f816040516024016114f491906130bd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611572565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016115a9929190613693565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a6919061372a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611733919061372a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611852919061372a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611665565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190613743565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401611811565b60008060008467ffffffffffffffff811115611b0357611b03612dac565b604051908082528060200260200182016040528015611b2c578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b4a57611b4a612dac565b604051908082528060200260200182016040528015611b73578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611bc8578251815260209283019201611bb0565b5050602088028101602084015b81831015611bed578251815260209283019201611bd5565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c479087908790600401613779565b600060405180830381865afa158015611c64573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611caa91908101906137dc565b9050846020820160208a0281015b80821015611cd3578151835260209283019290910190611cb8565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612699565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611da2858a612699565b9061271a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611e08858a612699565b90612739565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611733828761274e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612799565b6000602083028203805b83811015611ea05780518015611e97578252611ea0565b50602001611e80565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611ea0578051611f7d5760008252611ea0565b602001611f66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561209e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906120b683826127f7565b9250612070565b505081526020019392505050565b6020828102820380516000928201835b858210801561210957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906121218382612833565b92506120db565b6020828102820380516000928201835b85821080156121475750826000105b156120bd5750805160209091019061215f8382612862565b9250612138565b600060208302820380516000602083015b858110156120bd578051830191508282101561219257600080fd5b9091508190602001612177565b600060208302820380516000602083015b858110156120bd5780519150816121c657600080fd5b91819004916020016121b0565b6020828102820380516000928201835b858210156120bd575080516020909101906121fe8184613982565b92506121e3565b6020828102820380516000928201835b858210156120bd575080518281111561222c578092505b602082019150612215565b6020828102820380516000928201835b858210156120bd575080518281101561225e578092505b602082019150612247565b600060208302820380516000602083015b858110156120bd57805191508161229057600080fd5b918190069160200161227a565b60006020830282038051600080602084015b868110156122e05783156122d85780519250828402915082848304146122d457600080fd5b8193505b6020016122af565b50505081526020019392505050565b600060208302820380516000602083015b858110156120bd578051830391508282111561231b57600080fd5b9091508190602001612300565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490611811908690869060040161398e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906124b3908790879087906004016139bd565b602060405180830381865afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f4919061372a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a68383612878565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561259157612591612dac565b6040519080825280602002602001820160405280156125ba578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125f6578151816020018601526020820191506020810190506125d4565b50505190506000612609838389896128d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561268a85858585612a27565b90955250949695505050505050565b60008082601214156126ae5783915050610be0565b82601211156126da575060128290036126c881600a613982565b6126d290856130ff565b915050610be0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270981600a613982565b6126d290856139fb565b5092915050565b60008161272f670de0b6b3a7640000856130ff565b61102791906139fb565b6000670de0b6b3a764000061272f83856130ff565b600081810b61275e575081610be0565b60008260000b13156127865761277582600a613a36565b61277f90846130ff565b9050610be0565b60ff60008390031661270981600a613982565b60008060128314156127ae5783915050610be0565b82601211156127c85750601282900361270981600a613982565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c881600a613982565b6000828201838110612809578061282b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261284257506000610be0565b82820282848281612855576128556135bf565b041415612809578061282b565b6000818311612872576000611027565b50900390565b60008060015b600881116128cf5760006128928683612acd565b905060006128a08684612acd565b905060006128ae8383612862565b90506128be856001860383612b7a565b9450506001909201915061287e9050565b509392505050565b835160009081908190819060015b60088111612a195760009250828761291e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612922565b5060005b60005b838110156129d7576129508c82815181106129425761294261313c565b602002602001015184612acd565b95508a86116129a2578861296f576129688683612c03565b9150612999565b6001891415612982576129688683612c19565b600289148015612990575084155b15612999578591505b600194506129cf565b896129cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129d7565b600101612925565b5083612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a0e866001840383612b7a565b9550506001016128e5565b509298975050505050505050565b6000826008811115612a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b6000855b85811015612ac15763ffffffff6020820290811b199890981685891b17979150600101612a99565b50959695505050505050565b6000816008811115612b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b82612b495760009150612713565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c125781611027565b5090919050565b600081831015612c125781611027565b828054828255906000526020600020908101928215612c64579160200282015b82811115612c64578251825591602001919060010190612c49565b50612c70929150612ccd565b5090565b828054828255906000526020600020908101928215612cc1579160200282015b82811115612cc15782518051612cb1918491602090910190612ce2565b5091602001919060010190612c94565b50612c70929150612d55565b5b80821115612c705760008155600101612cce565b828054612cee9061353b565b90600052602060002090601f016020900481019282612d105760008555612c64565b82601f10612d2957805160ff1916838001178555612c64565b82800160010185558215612c645791820182811115612c64578251825591602001919060010190612c49565b80821115612c70576000612d698282612d72565b50600101612d55565b508054612d7e9061353b565b6000825580601f10612d8e575050565b601f01602090049060005260206000209081019061156f9190612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2257612e22612dac565b604052919050565b600067ffffffffffffffff821115612e4457612e44612dac565b5060051b60200190565b60006020808385031215612e6157600080fd5b823567ffffffffffffffff811115612e7857600080fd5b8301601f81018513612e8957600080fd5b8035612e9c612e9782612e2a565b612ddb565b81815260059190911b82018301908381019087831115612ebb57600080fd5b928401925b82841015612ed957833582529284019290840190612ec0565b979650505050505050565b600081518084526020808501945080840160005b83811015612f1457815187529582019590820190600101612ef8565b509495945050505050565b6020815260006110276020830184612ee4565b600060208284031215612f4457600080fd5b813567ffffffffffffffff811115612f5b57600080fd5b82016040818503121561102757600080fd5b60005b83811015612f88578181015183820152602001612f70565b83811115612f97576000848401525b50505050565b60008151808452612fb5816020860160208601612f6d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a0604085015261300c60c0850182612ee4565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156130855784878303018452613073828751612f9d565b95880195938801939150600101613059565b5060608a01519650838982030160808a01526130a18188612ee4565b9650505050505050608084015160a08401528091505092915050565b6020815260006110276020830184612f9d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613137576131376130d0565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561319d5761319d6130d0565b5060010190565b6000828210156131b6576131b66130d0565b500390565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131f057600080fd5b830160208101925035905067ffffffffffffffff81111561321057600080fd5b8060051b360383131561322257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156132a457600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015612f1457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016132d5565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161336086876131bb565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561342a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126133e157600080fd5b8501803567ffffffffffffffff8111156133fa57600080fd5b80360387131561340957600080fd5b61341688828b8501613229565b975050509186019190860190600101613380565b505050505061343b828701876131bb565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613472828483613272565b92505050828103604084015261348881856132c1565b9695505050505050565b6000602082840312156134a457600080fd5b815167ffffffffffffffff808211156134bc57600080fd5b818401915084601f8301126134d057600080fd5b8151818111156134e2576134e2612dac565b61351360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ddb565b915080825285602082850101111561352a57600080fd5b6114d7816020840160208601612f6d565b600181811c9082168061354f57607f821691505b60208210811415611148577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b838110156135b357815185529382019390820190600101613597565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6040815260006136016040830185612f9d565b90508260208301529392505050565b6000815260008251613629816001850160208701612f6d565b9190910160010192915050565b8281526000825161364e816020850160208701612f6d565b919091016020019392505050565b6000845161366e818460208901612f6d565b82018481528351613686816020808501908801612f6d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161371c81600e850160208701612f6d565b91909101600e019392505050565b60006020828403121561373c57600080fd5b5051919050565b60006020828403121561375557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461102757600080fd5b604080825283519082018190526000906020906060840190828701845b828110156137c857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613796565b505050838103828501526134888186612ee4565b600060208083850312156137ef57600080fd5b825167ffffffffffffffff81111561380657600080fd5b8301601f8101851361381757600080fd5b8051613825612e9782612e2a565b81815260059190911b8201830190838101908783111561384457600080fd5b928401925b82841015612ed957835182529284019290840190613849565b600181815b808511156138bb57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138a1576138a16130d0565b808516156138ae57918102915b93841c9390800290613867565b509250929050565b6000826138d257506001610be0565b816138df57506000610be0565b81600181146138f557600281146138ff5761391b565b6001915050610be0565b60ff841115613910576139106130d0565b50506001821b610be0565b5060208310610133831016604e8410600b841016171561393e575081810a610be0565b6139488383613862565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397a5761397a6130d0565b029392505050565b600061102783836138c3565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061282b6040830184612ee4565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006139f26060830184612ee4565b95945050505050565b600082613a31577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061102760ff8416836138c356fea2646970667358221220a7b4d3cb5ef17a13b3b0948cd49b465e7346109971c9ac801e0485428c80047264736f6c634300080a0033"; type AllStandardOpsTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Bytecode__factory.ts b/src/typechain/factories/Bytecode__factory.ts index 4a4d417..63f653c 100644 --- a/src/typechain/factories/Bytecode__factory.ts +++ b/src/typechain/factories/Bytecode__factory.ts @@ -30,7 +30,7 @@ const _abi = [ ]; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fe4d91aea5f0bdf1697c40ea47b8540670e8d729e48a81806f77b0cfdd235ce464736f6c634300080a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204736a7f37e98c81c256a2d8699ddfed82d2a5ad247e6e18b74f03f080daa87cc64736f6c634300080a0033"; type BytecodeConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/CombineTierFactory__factory.ts b/src/typechain/factories/CombineTierFactory__factory.ts index cfc0188..911224c 100644 --- a/src/typechain/factories/CombineTierFactory__factory.ts +++ b/src/typechain/factories/CombineTierFactory__factory.ts @@ -82,18 +82,30 @@ const _abi = [ { components: [ { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", + internalType: "uint256", + name: "combinedTiersLength", + type: "uint256", }, { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "sourceConfig", + type: "tuple", }, ], - internalType: "struct StateConfig", - name: "stateConfig_", + internalType: "struct CombineTierConfig", + name: "config_", type: "tuple", }, ], @@ -143,7 +155,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b50604051613f1d380380613f1d83398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b61315f80610dbe83390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610c99610125600039600081816093015261037a0152610c996000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063f462237c146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee919061070c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906108a7565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108ba565b92915050565b60008061037183850185610a0d565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f4e75d77e00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690634e75d77e906103f3908590600401610b82565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201604081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b8060051b360383131561066d57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ef57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006020808352606083016107218586610606565b6040848701528281845260808701905060808260051b88010193508260005b838110156107ea577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107a157600080fd5b8501803567ffffffffffffffff8111156107ba57600080fd5b8036038713156107c957600080fd5b6107d688828b8501610674565b975050509186019190860190600101610740565b50505050506107fb82860186610606565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08583030160408601526108328284836106bd565b9695505050505050565b6000815180845260005b8181101561086257602081850181015186830182015201610846565b81811115610874576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd602083018461083c565b6000602082840312156108cc57600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610929576109296108d7565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610976576109766108d7565b604052919050565b600067ffffffffffffffff821115610998576109986108d7565b5060051b60200190565b600082601f8301126109b357600080fd5b813560206109c86109c38361097e565b61092f565b82815260059290921b840181019181810190868411156109e757600080fd5b8286015b84811015610a0257803583529183019183016109eb565b509695505050505050565b60006020808385031215610a2057600080fd5b823567ffffffffffffffff80821115610a3857600080fd5b81850191506040808388031215610a4e57600080fd5b610a56610906565b833583811115610a6557600080fd5b8401601f81018913610a7657600080fd5b8035610a846109c38261097e565b81815260059190911b8201870190878101908b831115610aa357600080fd5b8884015b83811015610b4b57803588811115610abf5760008081fd5b8501603f81018e13610ad15760008081fd5b8a81013589811115610ae557610ae56108d7565b610b158c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161092f565b8181528f8a838501011115610b2a5760008081fd5b818a84018e83013760009181018d0191909152845250918901918901610aa7565b50845250505083850135915082821115610b6457600080fd5b610b70888386016109a2565b85820152809550505050505092915050565b6000602080835260608301845160408386015281815180845260808701915060808160051b8801019350848301925060005b81811015610c00577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80888603018352610bee85855161083c565b94509285019291850191600101610bb4565b50505050848201518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016040860152805180835290830191600091908401905b80831015610a025783518252928401926001929092019190840190610c4356fea26469706673582212200e2af05464fed9c522e31ae4eb7d58fa547dad4a98d53f46cc5cd0c38da80bc364736f6c634300080a003360c06040523480156200001157600080fd5b506040516200315f3803806200315f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516130bd620000a2600039600061039d015260006103d901526130bd6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e0419ae311610050578063e0419ae314610094578063e053ea31146100d1578063f2cd6c08146100f257600080fd5b80634e75d77e1461006c5780638a200fff14610081575b600080fd5b61007f61007a366004612502565b610283565b005b61007f61008f36600461255f565b610532565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100e46100df3660046125e8565b610599565b6040519081526020016100c8565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261112b60e082015261113661010082015261114161012082015261114c6101408201526111576101608201526111ca6101808201526112306101a08201526112706101c08201526112a46101e08201526112d861020082015261131f61022082015261137c6102408201526113b56102608201526113f36102808201526114456102a08201526114a26102c08201526114d66102e082015261150a61030082015261153c61032082015261156e6103408201526115a06103608201526115cd6103808201526116286103a082015261167e6103c08201526116d56103e082015261172c61040082015261176061042082015261178a6104408201526118716104608201526118cd6104808201526119496104a0820152611a036104c08201819052611aad6104e0830152610500820152611b2d610520820152611c35610540820152611d5361056080830191909152815290516100c8919061267f565b600061028f6001610654565b905080156102c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103046040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6103656040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610325579050509050818160008151811061038e5761038e6126c1565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016104189392919061286f565b6000604051808303816000875af1158015610437573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261047d9190810190612a21565b9050610488816107da565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050801561052e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000806105cf6105ca600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610865565b610899565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff85166020820181905290915061061e82846000610a05565b506020830151835161063290600190612af9565b81518110610642576106426126c1565b60200260200101519350505050919050565b60008054610100900460ff161561070b578160ff1660011480156106775750303b155b610703576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b506000919050565b60005460ff8084169116106107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610805836040516020016107f19190612b10565b604051602081830303815290604052610cdb565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661085f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606108938260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d07565b92915050565b6108cb6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6108fd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561093157610931612692565b60405190808252806020026020018201604052801561095a578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561099157610991612692565b6040519080825280602002602001820160405280156109ba578160200160208202803683370190505b5090506020870151602002604001870160005b848110156109f45781602082026020018401528151602001820191506001810190506109cd565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610cc1576003890198508886015180601f1a975061ffff8160081c169850506006881015610c395787610a8857866020028401518252602082019150610c4c565b6001881415610aa557602087028301518252602082019150610c4c565b6002881415610b32578c518760200210610b1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610590565b866020026020018d01518252602082019150610c4c565b6003881415610b7a576000610b686040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610c4c565b6004881415610b9657610b8f8d8d848a610def565b9150610c4c565b606087610bc4578c604051602001610bae9190612b66565b6040516020818303038152906040529050610c23565b6001881415610bdd57610bd68d610f5c565b9050610c23565b6002881415610bf9576020808e0151604051610bae9201612c3c565b6003881415610c23578c516040805160208101929092520160405160208183030381529060405290505b805115610c3357610c3381611099565b50610c4c565b87610c48888463ffffffff8416565b9250505b60208c0151518c511115610cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610590565b610a43565b6020838303048c52509750505050505050505b9392505050565b6060815182604051602001610cf1929190612ca1565b6040516020818303038152906040529050919050565b6060833b80610d26575050604080516020810190915260008152610cd4565b80841115610d44575050604080516020810190915260008152610cd4565b83831015610d8f576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610590565b8383038482036000828210610da45782610da6565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082610e2e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100610e79565b8260011415610e5257506fffffffffffffffffffffffffffffffff90506080610e79565b8260021415610e6e575067ffffffffffffffff90506040610e79565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115610e9c57610e9c612692565b604051908082528060200260200182016040528015610ec5578160200160208202803683370190505b50905060208082019083028a03815b8b821015610eec578151815260209182019101610ed4565b505060608b015160808c015160209081029091010160005b610100811015610f4a5760208502830182845b82811015610f33578051841c8a16825260209182019101610f17565b505050610f418e8e8b610a05565b9b508501610f04565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610fa89190612c3c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fe49291602001612d38565b604051602081830303815290604052905060005b85604001515181101561109057818660400151828151811061101c5761101c6126c1565b60200260200101515160001b8760400151838151811061103e5761103e6126c1565b602002602001015160405160200161105893929190612d5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610ff8565b50949350505050565b611128816040516024016110ad919061267f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611f50565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd826111b7858a611f71565b90611ff2565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8261122a858a611f71565b90612011565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287611f71565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612026565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612084565b600060208302820380516000602083015b85811015611311578051830191508282101561130457600080fd5b90915081906020016112e9565b505081526020019392505050565b6020828102820380516000928201835b858210801561135d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061137583826120cf565b925061132f565b600060208302820380516000602083015b8581101561131157805183039150828211156113a857600080fd5b909150819060200161138d565b6020828102820380516000928201835b85821080156113d45750826000105b15611311575080516020909101906113ec838261210b565b92506113c5565b60006020830282038051600080602084015b8681101561143657831561142e57805192508284029150828483041461142a57600080fd5b8193505b602001611405565b50505081526020019392505050565b6020828102820380516000928201835b858210801561148357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061149b8382612121565b9250611455565b600060208302820380516000602083015b858110156113115780519150816114c957600080fd5b91819004916020016114b3565b600060208302820380516000602083015b858110156113115780519150816114fd57600080fd5b91819006916020016114e7565b6020828102820380516000928201835b85821015611311575080516020909101906115358184612eb5565b925061151a565b6020828102820380516000928201835b858210156113115750805182811015611563578092505b60208201915061154c565b6020828102820380516000928201835b858210156113115750805182811115611595578092505b60208201915061157e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561175557805161174d5760008252611755565b602001611736565b506020019392505050565b6000602083028203805b838110156117555780518015611781578252611755565b5060200161176a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8383612150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561193a858585856121af565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561197757611977612692565b6040519080825280602002602001820160405280156119a0578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156119dc578151816020018601526020820191506020810190506119ba565b505051905060006119ef83838989612255565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401611830565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112649190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190612eda565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612ec1565b909452509395945050505050565b60008060008467ffffffffffffffff811115611d7157611d71612692565b604051908082528060200260200182016040528015611d9a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611db857611db8612692565b604051908082528060200260200182016040528015611de1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611e36578251815260209283019201611e1e565b5050602088028101602084015b81831015611e5b578251815260209283019201611e43565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611eb59087908790600401612ef7565b600060405180830381865afa158015611ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f189190810190612f5a565b9050846020820160208a0281015b80821015611f41578151835260209283019290910190611f26565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415611f865783915050610893565b8260121115611fb257506012829003611fa081600a612eb5565b611faa9085613000565b915050610893565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fe181600a612eb5565b611faa908561303d565b5092915050565b6000670de0b6b3a76400006120078385613000565b610cd4919061303d565b600081612007670de0b6b3a764000085613000565b600080601283141561203b5783915050610893565b826012111561205557506012829003611fe181600a612eb5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fa081600a612eb5565b600081810b612094575081610893565b60008260000b13156120bc576120ab82600a613078565b6120b59084613000565b9050610893565b60ff600083900316611fe181600a612eb5565b60008282018381106120e15780612103565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161211b576000610cd4565b50900390565b60008261213057506000610893565b8282028284828161214357612143612c72565b0414156120e15780612103565b60008060015b600881116121a757600061216a86836123a5565b9050600061217886846123a5565b90506000612186838361210b565b9050612196856001860383612452565b945050600190920191506121569050565b509392505050565b600082600881111561221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b6000855b858110156122495763ffffffff6020820290811b199890981685891b17979150600101612221565b50959695505050505050565b835160009081908190819060015b600881116123975760009250828761229c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6122a0565b5060005b60005b83811015612355576122ce8c82815181106122c0576122c06126c1565b6020026020010151846123a5565b95508a861161232057886122ed576122e686836124dc565b9150612317565b6001891415612300576122e686836124f2565b60028914801561230e575084155b15612317578591505b6001945061234d565b8961234d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612355565b6001016122a3565b508361237e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61238c866001840383612452565b955050600101612263565b509298975050505050505050565b6000816008811115612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b826124215760009150611feb565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156124c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b505060209190910290811b63ffffffff90911b19919091161790565b60008183106124eb5781610cd4565b5090919050565b6000818310156124eb5781610cd4565b60006020828403121561251457600080fd5b813567ffffffffffffffff81111561252b57600080fd5b820160408185031215610cd457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461112857600080fd5b6000806000806060858703121561257557600080fd5b84356125808161253d565b935060208501359250604085013567ffffffffffffffff808211156125a457600080fd5b818701915087601f8301126125b857600080fd5b8135818111156125c757600080fd5b8860208285010111156125d957600080fd5b95989497505060200194505050565b6000602082840312156125fa57600080fd5b8135610cd48161253d565b60005b83811015612620578181015183820152602001612608565b8381111561262f576000848401525b50505050565b6000815180845261264d816020860160208601612605565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cd46020830184612635565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261272557600080fd5b830160208101925035905067ffffffffffffffff81111561274557600080fd5b8060051b360383131561275757600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156127d957600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561286457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e0909601959082019060010161280a565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a083016128a086876126f0565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561296a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261292157600080fd5b8501803567ffffffffffffffff81111561293a57600080fd5b80360387131561294957600080fd5b61295688828b850161275e565b9750505091860191908601906001016128c0565b505050505061297b828701876126f0565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526129b28284836127a7565b9250505082810360408401526129c881856127f6565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a1957612a19612692565b604052919050565b600060208284031215612a3357600080fd5b815167ffffffffffffffff80821115612a4b57600080fd5b818401915084601f830112612a5f57600080fd5b815181811115612a7157612a71612692565b612aa260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016129d2565b9150808252856020828501011115612ab957600080fd5b611090816020840160208601612605565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b0b57612b0b612aca565b500390565b6000815260008251612b29816001850160208701612605565b9190910160010192915050565b600081518084526020808501945080840160005b8381101561286457815187529582019590820190600101612b4a565b600060208083528351818401528084015160a06040850152612b8b60c0850182612b36565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015612c045784878303018452612bf2828751612635565b95880195938801939150600101612bd8565b5060608a01519650838982030160808a0152612c208188612b36565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015612c6657815185529382019390820190600101612c4a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251612d2a81600e850160208701612605565b91909101600e019392505050565b82815260008251612d50816020850160208701612605565b919091016020019392505050565b60008451612d70818460208901612605565b82018481528351612d88816020808501908801612605565b0160200195945050505050565b600181815b80851115612dee57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612dd457612dd4612aca565b80851615612de157918102915b93841c9390800290612d9a565b509250929050565b600082612e0557506001610893565b81612e1257506000610893565b8160018114612e285760028114612e3257612e4e565b6001915050610893565b60ff841115612e4357612e43612aca565b50506001821b610893565b5060208310610133831016604e8410600b8410161715612e71575081810a610893565b612e7b8383612d95565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612ead57612ead612aca565b029392505050565b6000610cd48383612df6565b600060208284031215612ed357600080fd5b5051919050565b600060208284031215612eec57600080fd5b8151610cd48161253d565b604080825283519082018190526000906020906060840190828701845b82811015612f4657815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612f14565b505050838103828501526129c88186612b36565b60006020808385031215612f6d57600080fd5b825167ffffffffffffffff80821115612f8557600080fd5b818501915085601f830112612f9957600080fd5b815181811115612fab57612fab612692565b8060051b9150612fbc8483016129d2565b8181529183018401918481019088841115612fd657600080fd5b938501935b83851015612ff457845182529385019390850190612fdb565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303857613038612aca565b500290565b600082613073577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610cd460ff841683612df656fea264697066735822122041537cb6c3dbf36bee56a657067d6d66b6fc2100d1fb411b7c7343b5f2eda25364736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b50604051614a73380380614a7383398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b613c2c80610e4783390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610d226101256000396000818160a501526103790152610d226000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062e44217146100505780632ea72a491461008d5780635c60da1b146100a0578063fc91a897146100c7575b600080fd5b61006361005e36600461050f565b610110565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006361009b366004610551565b6101b3565b6100637f000000000000000000000000000000000000000000000000000000000000000081565b6101006100d53660046105e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610084565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a498360405160200161013f919061070b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016a91906108eb565b6020604051808303816000875af1158015610189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ad91906108fe565b92915050565b600060026000541415610227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102388484610361565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021e565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037083850185610a51565b9050600061039d7f000000000000000000000000000000000000000000000000000000000000000061042d565b6040517fa225543b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a225543b906103f2908590600401610bfa565b600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021e565b919050565b60006020828403121561052157600080fd5b813567ffffffffffffffff81111561053857600080fd5b82016040818503121561054a57600080fd5b9392505050565b6000806020838503121561056457600080fd5b823567ffffffffffffffff8082111561057c57600080fd5b818501915085601f83011261059057600080fd5b81358181111561059f57600080fd5b8660208285010111156105b157600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e557600080fd5b50565b6000602082840312156105fa57600080fd5b813561054a816105c3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063a57600080fd5b830160208101925035905067ffffffffffffffff81111561065a57600080fd5b8060051b360383131561066c57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ee57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006020808352833581840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261074c57600080fd5b604084810152840160a084016107628280610605565b604060608801528281845260c08801905060c08260051b89010193508260005b8381101561082c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107e357600080fd5b8501803567ffffffffffffffff8111156107fc57600080fd5b80360387131561080b57600080fd5b61081888828c8501610673565b975050509187019190870190600101610782565b505050505061083d83830183610605565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08582030160808601526108768184846106bc565b9695505050505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054a6020830184610880565b60006020828403121561091057600080fd5b815161054a816105c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561096d5761096d61091b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ba576109ba61091b565b604052919050565b600067ffffffffffffffff8211156109dc576109dc61091b565b5060051b60200190565b600082601f8301126109f757600080fd5b81356020610a0c610a07836109c2565b610973565b82815260059290921b84018101918181019086841115610a2b57600080fd5b8286015b84811015610a465780358352918301918301610a2f565b509695505050505050565b60006020808385031215610a6457600080fd5b823567ffffffffffffffff80821115610a7c57600080fd5b9084019060408287031215610a9057600080fd5b610a9861094a565b823581528383013582811115610aad57600080fd5b929092019160408388031215610ac257600080fd5b610aca61094a565b833583811115610ad957600080fd5b8401601f81018913610aea57600080fd5b8035610af8610a07826109c2565b81815260059190911b8201870190878101908b831115610b1757600080fd5b8884015b83811015610bc157803588811115610b335760008081fd5b8501603f81018e13610b455760008081fd5b8a81013589811115610b5957610b5961091b565b610b898c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610973565b8181528f6040838501011115610b9f5760008081fd5b81604084018e83013760009181018d0191909152845250918901918901610b1b565b5084525050508385013583811115610bd857600080fd5b610be4898287016109e6565b8287015250938101939093525090949350505050565b600060208083528351818401528084015160408085015260a0840181516040606087015281815180845260c08801915060c08160051b8901019350858301925060005b81811015610c89577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40898603018352610c77858551610880565b94509286019291860191600101610c3d565b50505050908201518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0016080860152805180835290830191600091908401905b80831015610a465783518252928401926001929092019190840190610ccc56fea2646970667358221220705a5f17db6f25a3aab4bbc1613bff6ef4d33bc2692a8c03b293555c0844b10a64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162003c2c38038062003c2c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613b8a620000a260003960006105cb015260006106070152613b8a6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612ca8565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612dae565b610365565b604051908152602001610096565b6100d36100ce366004612e59565b610459565b005b6100b26100e3366004612e94565b610898565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261161d60e0820181905261171161010083015261179d6101208301526118be610140830152610160820152611967610180820152611a6f6101a0820152611b436101c0820152611d406101e0820152611d4b610200820152611d56610220820152611d61610240820152611d6c610260820152611da0610280820152611e066102a0820152611e6c6102c0820152611ea06102e0820152611ed4610300820152611f09610320820152611f64610340820152611fba610360820152611fe361038082015261203a6103a08201526120676103c08201526120be6103e08201526121296104008201526121866104208201526121c46104408201526121fd6104608201526122316104808201526122636104a08201526122956104c08201526122c76104e08201526122fb61050082015261234d6105208201526123866105408201526124386105608201526125656105808201526125c16105a082015261267b6105c080830191909152815290516100969190612f9a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b6109be565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612fe3565b604051602081830303815290604052905061042381836000610b2a565b506020820151825161043790600190613038565b815181106104475761044761304f565b60200260200101519250505092915050565b60006104656001610e00565b9050801561049a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104da6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b6105746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610534579050509050828160008151811061059d5761059d61304f565b602002602001018190525081816001815181106105bc576105bc61304f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f0000000000000000000000000000000000000000000000000000000000000000888060200190610636919061307e565b856040518463ffffffff1660e01b8152600401610655939291906132c1565b6000604051808303816000875af1158015610674573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106ba9190810190613372565b90506106c581610f86565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156107f35761077661072b602089018961307e565b61073990602081019061341b565b838181106107495761074961304f565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000611011565b6107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064015b60405180910390fd5b806107eb81613483565b915050610712565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833876040516108259291906134bc565b60405180910390a150505050801561089457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806108c9610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016108fe929190613539565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093b93929160200161357e565b604051602081830303815290604052905061095881836001610b2a565b506020820151825161096c90600190613038565b8151811061097c5761097c61304f565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61102d565b6109f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610a226040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610a5657610a56612d0c565b604051908082528060200260200182016040528015610a7f578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610ab657610ab6612d0c565b604051908082528060200260200182016040528015610adf578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610b19578160208202602001840152815160200182019150600181019050610af2565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610de6576003890198508886015180601f1a975061ffff8160081c169850506006881015610d5e5787610bad57866020028401518252602082019150610d71565b6001881415610bca57602087028301518252602082019150610d71565b6002881415610c57578c518760200210610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107d8565b866020026020018d01518252602082019150610d71565b6003881415610c9f576000610c8d6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610d71565b6004881415610cbb57610cb48d8d848a611115565b9150610d71565b606087610ce9578c604051602001610cd391906135e6565b6040516020818303038152906040529050610d48565b6001881415610d0257610cfb8d611282565b9050610d48565b6002881415610d1e576020808e0151604051610cd39201612fad565b6003881415610d48578c516040805160208101929092520160405160208183030381529060405290505b805115610d5857610d58816113bf565b50610d71565b87610d6d888463ffffffff8416565b9250505b60208c0151518c511115610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107d8565b610b68565b6020838303048c52509750505050505050505b9392505050565b60008054610100900460ff1615610eb7578160ff166001148015610e235750303b155b610eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b506000919050565b60005460ff808416911610610f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610fb183604051602001610f9d91906136eb565b604051602081830303815290604052611451565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661100b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600061101c8361147d565b8015610df95750610df983836114e1565b6060833b8061104c575050604080516020810190915260008152610df9565b8084111561106a575050604080516020810190915260008152610df9565b838310156110b5576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107d8565b83830384820360008282106110ca57826110cc565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261115457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061119f565b826001141561117857506fffffffffffffffffffffffffffffffff9050608061119f565b8260021415611194575067ffffffffffffffff9050604061119f565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111c2576111c2612d0c565b6040519080825280602002602001820160405280156111eb578160200160208202803683370190505b50905060208082019083028a03815b8b8210156112125781518152602091820191016111fa565b505060608b015160808c015160209081029091010160005b6101008110156112705760208502830182845b82811015611259578051841c8a1682526020918201910161123d565b5050506112678e8e8b610b2a565b9b50850161122a565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112ce9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261130a9291602001612fe3565b604051602081830303815290604052905060005b8560400151518110156113b65781866040015182815181106113425761134261304f565b60200260200101515160001b876040015183815181106113645761136461304f565b602002602001015160405160200161137e93929190613711565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161131e565b50949350505050565b61144e816040516024016113d39190612f9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526126f7565b50565b6060815182604051602001611467929190613748565b6040516020818303038152906040529050919050565b60006114a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006114e1565b801561035f57506114da827fffffffff000000000000000000000000000000000000000000000000000000006114e1565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061159b9086906137df565b6000604051808303818686fa925050503d80600081146115d7576040519150601f19603f3d011682016040523d82523d6000602084013e6115dc565b606091505b50915091506020815110156115f7576000935050505061035f565b81801561161357508080602001905181019061161391906137f1565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190613813565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117919190613813565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190613813565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016116c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061382c565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161186f565b60008060008467ffffffffffffffff811115611b6157611b61612d0c565b604051908082528060200260200182016040528015611b8a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611ba857611ba8612d0c565b604051908082528060200260200182016040528015611bd1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c26578251815260209283019201611c0e565b5050602088028101602084015b81831015611c4b578251815260209283019201611c33565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611ca59087908790600401613849565b600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d0891908101906138ac565b9050846020820160208a0281015b80821015611d31578151835260209283019290910190611d16565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612718565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e00858a612718565b90612799565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e66858a612718565b906127b8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261179182876127cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612818565b6000602083028203805b83811015611efe5780518015611ef5578252611efe565b50602001611ede565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611efe578051611fdb5760008252611efe565b602001611fc4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156120fc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b575080516020909101906121148382612876565b92506120ce565b505081526020019392505050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b5750805160209091019061217f83826128b2565b9250612139565b6020828102820380516000928201835b85821080156121a55750826000105b1561211b575080516020909101906121bd83826128e1565b9250612196565b600060208302820380516000602083015b8581101561211b57805183019150828210156121f057600080fd5b90915081906020016121d5565b600060208302820380516000602083015b8581101561211b57805191508161222457600080fd5b918190049160200161220e565b6020828102820380516000928201835b8582101561211b5750805160209091019061225c8184613a5d565b9250612241565b6020828102820380516000928201835b8582101561211b575080518281111561228a578092505b602082019150612273565b6020828102820380516000928201835b8582101561211b57508051828110156122bc578092505b6020820191506122a5565b600060208302820380516000602083015b8581101561211b5780519150816122ee57600080fd5b91819006916020016122d8565b60006020830282038051600080602084015b8681101561233e57831561233657805192508284029150828483041461233257600080fd5b8193505b60200161230d565b50505081526020019392505050565b600060208302820380516000602083015b8581101561211b578051830391508282111561237957600080fd5b909150819060200161235e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061186f9086908690600401613a69565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061251190879087908790600401613a98565b602060405180830381865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125529190613813565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170483836128f7565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156125ef576125ef612d0c565b604051908082528060200260200182016040528015612618578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561265457815181602001860152602082019150602081019050612632565b5050519050600061266783838989612956565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856126e885858585612aa6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561272d578391505061035f565b82601211156127595750601282900361274781600a613a5d565b6127519085613acd565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161278881600a613a5d565b6127519085613b0a565b5092915050565b6000816127ae670de0b6b3a764000085613acd565b610df99190613b0a565b6000670de0b6b3a76400006127ae8385613acd565b600081810b6127dd57508161035f565b60008260000b1315612805576127f482600a613b45565b6127fe9084613acd565b905061035f565b60ff60008390031661278881600a613a5d565b600080601283141561282d578391505061035f565b82601211156128475750601282900361278881600a613a5d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161274781600a613a5d565b600082820183811061288857806128aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826128c15750600061035f565b828202828482816128d4576128d46136bc565b04141561288857806128aa565b60008183116128f1576000610df9565b50900390565b60008060015b6008811161294e5760006129118683612b4c565b9050600061291f8684612b4c565b9050600061292d83836128e1565b905061293d856001860383612bf9565b945050600190920191506128fd9050565b509392505050565b835160009081908190819060015b60088111612a985760009250828761299d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6129a1565b5060005b60005b83811015612a56576129cf8c82815181106129c1576129c161304f565b602002602001015184612b4c565b95508a8611612a2157886129ee576129e78683612c82565b9150612a18565b6001891415612a01576129e78683612c98565b600289148015612a0f575084155b15612a18578591505b60019450612a4e565b89612a4e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a56565b6001016129a4565b5083612a7f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a8d866001840383612bf9565b955050600101612964565b509298975050505050505050565b6000826008811115612b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b6000855b85811015612b405763ffffffff6020820290811b199890981685891b17979150600101612b18565b50959695505050505050565b6000816008811115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b82612bc85760009150612792565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c915781610df9565b5090919050565b600081831015612c915781610df9565b600060208284031215612cba57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610df957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461144e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d8257612d82612d0c565b604052919050565b600067ffffffffffffffff821115612da457612da4612d0c565b5060051b60200190565b60008060408385031215612dc157600080fd5b8235612dcc81612cea565b915060208381013567ffffffffffffffff811115612de957600080fd5b8401601f81018613612dfa57600080fd5b8035612e0d612e0882612d8a565b612d3b565b81815260059190911b82018301908381019088831115612e2c57600080fd5b928401925b82841015612e4a57833582529284019290840190612e31565b80955050505050509250929050565b600060208284031215612e6b57600080fd5b813567ffffffffffffffff811115612e8257600080fd5b820160408185031215610df957600080fd5b60008060008060608587031215612eaa57600080fd5b8435612eb581612cea565b935060208501359250604085013567ffffffffffffffff80821115612ed957600080fd5b818701915087601f830112612eed57600080fd5b813581811115612efc57600080fd5b8860208260051b8501011115612f1157600080fd5b95989497505060200194505050565b60005b83811015612f3b578181015183820152602001612f23565b83811115612f4a576000848401525b50505050565b60008151808452612f68816020860160208601612f20565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610df96020830184612f50565b815160009082906020808601845b83811015612fd757815185529382019390820190600101612fbb565b50929695505050505050565b82815260008251612ffb816020850160208701612f20565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561304a5761304a613009565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126130b257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f157600080fd5b830160208101925035905067ffffffffffffffff81111561311157600080fd5b8060051b360383131561312357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156131a557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016131d283846130bc565b604086528281845260608701905060608260051b88010193508260005b8381101561329c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261325057600080fd5b85018035602067ffffffffffffffff82111561326b57600080fd5b81360388131561327a57600080fd5b613287898383860161312a565b985094850194939093019250506001016131ef565b50505050506132ae60208401846130bc565b8583036020870152611613838284613173565b6000606073ffffffffffffffffffffffffffffffffffffffff86168352602081818501526132f1828501876131c2565b84810360408681019190915286518083528388019284019060005b81811015613362578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161330c565b50909a9950505050505050505050565b60006020828403121561338457600080fd5b815167ffffffffffffffff8082111561339c57600080fd5b818401915084601f8301126133b057600080fd5b8151818111156133c2576133c2612d0c565b6133f360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612d3b565b915080825285602082850101111561340a57600080fd5b6113b6816020840160208601612f20565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261345057600080fd5b83018035915067ffffffffffffffff82111561346b57600080fd5b6020019150600581901b360382131561312357600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134b5576134b5613009565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261351a57600080fd5b60406060840152613530608084018583016131c2565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561356857600080fd5b8260051b80858437600092019182525092915050565b8381528260208201526000825161359c816040850160208701612f20565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135db578151875295820195908201906001016135bf565b509495945050505050565b600060208083528351818401528084015160a0604085015261360b60c08501826135ab565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156136845784878303018452613672828751612f50565b95880195938801939150600101613658565b5060608a01519650838982030160808a01526136a081886135ab565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613704816001850160208701612f20565b9190910160010192915050565b60008451613723818460208901612f20565b8201848152835161373b816020808501908801612f20565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516137d181600e850160208701612f20565b91909101600e019392505050565b600082516130b2818460208701612f20565b60006020828403121561380357600080fd5b81518015158114610df957600080fd5b60006020828403121561382557600080fd5b5051919050565b60006020828403121561383e57600080fd5b8151610df981612cea565b604080825283519082018190526000906020906060840190828701845b8281101561389857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613866565b5050508381038285015261161381866135ab565b600060208083850312156138bf57600080fd5b825167ffffffffffffffff8111156138d657600080fd5b8301601f810185136138e757600080fd5b80516138f5612e0882612d8a565b81815260059190911b8201830190838101908783111561391457600080fd5b928401925b8284101561393257835182529284019290840190613919565b979650505050505050565b600181815b8085111561399657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397c5761397c613009565b8085161561398957918102915b93841c9390800290613942565b509250929050565b6000826139ad5750600161035f565b816139ba5750600061035f565b81600181146139d057600281146139da576139f6565b600191505061035f565b60ff8411156139eb576139eb613009565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613a19575081810a61035f565b613a23838361393d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613a5557613a55613009565b029392505050565b6000610df9838361399e565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128aa60408301846135ab565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061353060608301846135ab565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b0557613b05613009565b500290565b600082613b40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610df960ff84168361399e56fea2646970667358221220a37f2cb5d78269361959ff85181f07b524e2e4ebabc0768aad4edd04082b53e364736f6c634300080a0033"; type CombineTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/CombineTier__factory.ts b/src/typechain/factories/CombineTier__factory.ts index 4e1e3d0..6019bee 100644 --- a/src/typechain/factories/CombineTier__factory.ts +++ b/src/typechain/factories/CombineTier__factory.ts @@ -43,19 +43,6 @@ const _abi = [ name: "WriteError", type: "error", }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, { anonymous: false, inputs: [ @@ -66,31 +53,50 @@ const _abi = [ type: "address", }, { + components: [ + { + internalType: "uint256", + name: "combinedTiersLength", + type: "uint256", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "sourceConfig", + type: "tuple", + }, + ], indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", + internalType: "struct CombineTierConfig", + name: "config", + type: "tuple", }, + ], + name: "Initialize", + type: "event", + }, + { + anonymous: false, + inputs: [ { indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", + internalType: "uint8", + name: "version", + type: "uint8", }, ], - name: "TierChange", + name: "Initialized", type: "event", }, { @@ -111,18 +117,30 @@ const _abi = [ { components: [ { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", + internalType: "uint256", + name: "combinedTiersLength", + type: "uint256", }, { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "sourceConfig", + type: "tuple", }, ], - internalType: "struct StateConfig", - name: "sourceConfig_", + internalType: "struct CombineTierConfig", + name: "config_", type: "tuple", }, ], @@ -138,12 +156,17 @@ const _abi = [ name: "account_", type: "address", }, + { + internalType: "uint256[]", + name: "context_", + type: "uint256[]", + }, ], name: "report", outputs: [ { internalType: "uint256", - name: "", + name: "report_", type: "uint256", }, ], @@ -154,23 +177,29 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "account_", type: "address", }, { internalType: "uint256", - name: "", + name: "tier_", type: "uint256", }, { - internalType: "bytes", - name: "", - type: "bytes", + internalType: "uint256[]", + name: "context_", + type: "uint256[]", }, ], - name: "setTier", - outputs: [], - stateMutability: "pure", + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "time_", + type: "uint256", + }, + ], + stateMutability: "view", type: "function", }, { @@ -198,10 +227,29 @@ const _abi = [ stateMutability: "pure", type: "function", }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200315f3803806200315f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516130bd620000a2600039600061039d015260006103d901526130bd6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063e0419ae311610050578063e0419ae314610094578063e053ea31146100d1578063f2cd6c08146100f257600080fd5b80634e75d77e1461006c5780638a200fff14610081575b600080fd5b61007f61007a366004612502565b610283565b005b61007f61008f36600461255f565b610532565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100e46100df3660046125e8565b610599565b6040519081526020016100c8565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261112b60e082015261113661010082015261114161012082015261114c6101408201526111576101608201526111ca6101808201526112306101a08201526112706101c08201526112a46101e08201526112d861020082015261131f61022082015261137c6102408201526113b56102608201526113f36102808201526114456102a08201526114a26102c08201526114d66102e082015261150a61030082015261153c61032082015261156e6103408201526115a06103608201526115cd6103808201526116286103a082015261167e6103c08201526116d56103e082015261172c61040082015261176061042082015261178a6104408201526118716104608201526118cd6104808201526119496104a0820152611a036104c08201819052611aad6104e0830152610500820152611b2d610520820152611c35610540820152611d5361056080830191909152815290516100c8919061267f565b600061028f6001610654565b905080156102c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6103046040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6103656040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610325579050509050818160008151811061038e5761038e6126c1565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016104189392919061286f565b6000604051808303816000875af1158015610437573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261047d9190810190612a21565b9050610488816107da565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050801561052e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000806105cf6105ca600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610865565b610899565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff85166020820181905290915061061e82846000610a05565b506020830151835161063290600190612af9565b81518110610642576106426126c1565b60200260200101519350505050919050565b60008054610100900460ff161561070b578160ff1660011480156106775750303b155b610703576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b506000919050565b60005460ff8084169116106107a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610805836040516020016107f19190612b10565b604051602081830303815290604052610cdb565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661085f576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606108938260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610d07565b92915050565b6108cb6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6108fd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561093157610931612692565b60405190808252806020026020018201604052801561095a578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561099157610991612692565b6040519080825280602002602001820160405280156109ba578160200160208202803683370190505b5090506020870151602002604001870160005b848110156109f45781602082026020018401528151602001820191506001810190506109cd565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610cc1576003890198508886015180601f1a975061ffff8160081c169850506006881015610c395787610a8857866020028401518252602082019150610c4c565b6001881415610aa557602087028301518252602082019150610c4c565b6002881415610b32578c518760200210610b1b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610590565b866020026020018d01518252602082019150610c4c565b6003881415610b7a576000610b686040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610c4c565b6004881415610b9657610b8f8d8d848a610def565b9150610c4c565b606087610bc4578c604051602001610bae9190612b66565b6040516020818303038152906040529050610c23565b6001881415610bdd57610bd68d610f5c565b9050610c23565b6002881415610bf9576020808e0151604051610bae9201612c3c565b6003881415610c23578c516040805160208101929092520160405160208183030381529060405290505b805115610c3357610c3381611099565b50610c4c565b87610c48888463ffffffff8416565b9250505b60208c0151518c511115610cbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610590565b610a43565b6020838303048c52509750505050505050505b9392505050565b6060815182604051602001610cf1929190612ca1565b6040516020818303038152906040529050919050565b6060833b80610d26575050604080516020810190915260008152610cd4565b80841115610d44575050604080516020810190915260008152610cd4565b83831015610d8f576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610590565b8383038482036000828210610da45782610da6565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082610e2e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100610e79565b8260011415610e5257506fffffffffffffffffffffffffffffffff90506080610e79565b8260021415610e6e575067ffffffffffffffff90506040610e79565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115610e9c57610e9c612692565b604051908082528060200260200182016040528015610ec5578160200160208202803683370190505b50905060208082019083028a03815b8b821015610eec578151815260209182019101610ed4565b505060608b015160808c015160209081029091010160005b610100811015610f4a5760208502830182845b82811015610f33578051841c8a16825260209182019101610f17565b505050610f418e8e8b610a05565b9b508501610f04565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610fa89190612c3c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610fe49291602001612d38565b604051602081830303815290604052905060005b85604001515181101561109057818660400151828151811061101c5761101c6126c1565b60200260200101515160001b8760400151838151811061103e5761103e6126c1565b602002602001015160405160200161105893929190612d5e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610ff8565b50949350505050565b611128816040516024016110ad919061267f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611f50565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd826111b7858a611f71565b90611ff2565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8261122a858a611f71565b90612011565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287611f71565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612026565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826112648287612084565b600060208302820380516000602083015b85811015611311578051830191508282101561130457600080fd5b90915081906020016112e9565b505081526020019392505050565b6020828102820380516000928201835b858210801561135d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061137583826120cf565b925061132f565b600060208302820380516000602083015b8581101561131157805183039150828211156113a857600080fd5b909150819060200161138d565b6020828102820380516000928201835b85821080156113d45750826000105b15611311575080516020909101906113ec838261210b565b92506113c5565b60006020830282038051600080602084015b8681101561143657831561142e57805192508284029150828483041461142a57600080fd5b8193505b602001611405565b50505081526020019392505050565b6020828102820380516000928201835b858210801561148357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156113115750805160209091019061149b8382612121565b9250611455565b600060208302820380516000602083015b858110156113115780519150816114c957600080fd5b91819004916020016114b3565b600060208302820380516000602083015b858110156113115780519150816114fd57600080fd5b91819006916020016114e7565b6020828102820380516000928201835b85821015611311575080516020909101906115358184612eb5565b925061151a565b6020828102820380516000928201835b858210156113115750805182811015611563578092505b60208201915061154c565b6020828102820380516000928201835b858210156113115750805182811115611595578092505b60208201915061157e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561175557805161174d5760008252611755565b602001611736565b506020019392505050565b6000602083028203805b838110156117555780518015611781578252611755565b5060200161176a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa15801561184d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111bd9190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836111bd8383612150565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561193a858585856121af565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561197757611977612692565b6040519080825280602002602001820160405280156119a0578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156119dc578151816020018601526020820191506020810190506119ba565b505051905060006119ef83838989612255565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401611830565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b09573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112649190612ec1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611bee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c129190612eda565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612ec1565b909452509395945050505050565b60008060008467ffffffffffffffff811115611d7157611d71612692565b604051908082528060200260200182016040528015611d9a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611db857611db8612692565b604051908082528060200260200182016040528015611de1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611e36578251815260209283019201611e1e565b5050602088028101602084015b81831015611e5b578251815260209283019201611e43565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611eb59087908790600401612ef7565b600060405180830381865afa158015611ed2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f189190810190612f5a565b9050846020820160208a0281015b80821015611f41578151835260209283019290910190611f26565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415611f865783915050610893565b8260121115611fb257506012829003611fa081600a612eb5565b611faa9085613000565b915050610893565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fe181600a612eb5565b611faa908561303d565b5092915050565b6000670de0b6b3a76400006120078385613000565b610cd4919061303d565b600081612007670de0b6b3a764000085613000565b600080601283141561203b5783915050610893565b826012111561205557506012829003611fe181600a612eb5565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201611fa081600a612eb5565b600081810b612094575081610893565b60008260000b13156120bc576120ab82600a613078565b6120b59084613000565b9050610893565b60ff600083900316611fe181600a612eb5565b60008282018381106120e15780612103565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600081831161211b576000610cd4565b50900390565b60008261213057506000610893565b8282028284828161214357612143612c72565b0414156120e15780612103565b60008060015b600881116121a757600061216a86836123a5565b9050600061217886846123a5565b90506000612186838361210b565b9050612196856001860383612452565b945050600190920191506121569050565b509392505050565b600082600881111561221d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b6000855b858110156122495763ffffffff6020820290811b199890981685891b17979150600101612221565b50959695505050505050565b835160009081908190819060015b600881116123975760009250828761229c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6122a0565b5060005b60005b83811015612355576122ce8c82815181106122c0576122c06126c1565b6020026020010151846123a5565b95508a861161232057886122ed576122e686836124dc565b9150612317565b6001891415612300576122e686836124f2565b60028914801561230e575084155b15612317578591505b6001945061234d565b8961234d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612355565b6001016122a3565b508361237e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61238c866001840383612452565b955050600101612263565b509298975050505050505050565b6000816008811115612413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b826124215760009150611feb565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156124c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610590565b505060209190910290811b63ffffffff90911b19919091161790565b60008183106124eb5781610cd4565b5090919050565b6000818310156124eb5781610cd4565b60006020828403121561251457600080fd5b813567ffffffffffffffff81111561252b57600080fd5b820160408185031215610cd457600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461112857600080fd5b6000806000806060858703121561257557600080fd5b84356125808161253d565b935060208501359250604085013567ffffffffffffffff808211156125a457600080fd5b818701915087601f8301126125b857600080fd5b8135818111156125c757600080fd5b8860208285010111156125d957600080fd5b95989497505060200194505050565b6000602082840312156125fa57600080fd5b8135610cd48161253d565b60005b83811015612620578181015183820152602001612608565b8381111561262f576000848401525b50505050565b6000815180845261264d816020860160208601612605565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610cd46020830184612635565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261272557600080fd5b830160208101925035905067ffffffffffffffff81111561274557600080fd5b8060051b360383131561275757600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156127d957600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561286457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e0909601959082019060010161280a565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a083016128a086876126f0565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561296a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261292157600080fd5b8501803567ffffffffffffffff81111561293a57600080fd5b80360387131561294957600080fd5b61295688828b850161275e565b9750505091860191908601906001016128c0565b505050505061297b828701876126f0565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08583030160808601526129b28284836127a7565b9250505082810360408401526129c881856127f6565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612a1957612a19612692565b604052919050565b600060208284031215612a3357600080fd5b815167ffffffffffffffff80821115612a4b57600080fd5b818401915084601f830112612a5f57600080fd5b815181811115612a7157612a71612692565b612aa260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016129d2565b9150808252856020828501011115612ab957600080fd5b611090816020840160208601612605565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612b0b57612b0b612aca565b500390565b6000815260008251612b29816001850160208701612605565b9190910160010192915050565b600081518084526020808501945080840160005b8381101561286457815187529582019590820190600101612b4a565b600060208083528351818401528084015160a06040850152612b8b60c0850182612b36565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015612c045784878303018452612bf2828751612635565b95880195938801939150600101612bd8565b5060608a01519650838982030160808a0152612c208188612b36565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015612c6657815185529382019390820190600101612c4a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251612d2a81600e850160208701612605565b91909101600e019392505050565b82815260008251612d50816020850160208701612605565b919091016020019392505050565b60008451612d70818460208901612605565b82018481528351612d88816020808501908801612605565b0160200195945050505050565b600181815b80851115612dee57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612dd457612dd4612aca565b80851615612de157918102915b93841c9390800290612d9a565b509250929050565b600082612e0557506001610893565b81612e1257506000610893565b8160018114612e285760028114612e3257612e4e565b6001915050610893565b60ff841115612e4357612e43612aca565b50506001821b610893565b5060208310610133831016604e8410600b8410161715612e71575081810a610893565b612e7b8383612d95565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612ead57612ead612aca565b029392505050565b6000610cd48383612df6565b600060208284031215612ed357600080fd5b5051919050565b600060208284031215612eec57600080fd5b8151610cd48161253d565b604080825283519082018190526000906020906060840190828701845b82811015612f4657815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612f14565b505050838103828501526129c88186612b36565b60006020808385031215612f6d57600080fd5b825167ffffffffffffffff80821115612f8557600080fd5b818501915085601f830112612f9957600080fd5b815181811115612fab57612fab612692565b8060051b9150612fbc8483016129d2565b8181529183018401918481019088841115612fd657600080fd5b938501935b83851015612ff457845182529385019390850190612fdb565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561303857613038612aca565b500290565b600082613073577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610cd460ff841683612df656fea264697066735822122041537cb6c3dbf36bee56a657067d6d66b6fc2100d1fb411b7c7343b5f2eda25364736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162003c2c38038062003c2c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613b8a620000a260003960006105cb015260006106070152613b8a6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612ca8565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612dae565b610365565b604051908152602001610096565b6100d36100ce366004612e59565b610459565b005b6100b26100e3366004612e94565b610898565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261161d60e0820181905261171161010083015261179d6101208301526118be610140830152610160820152611967610180820152611a6f6101a0820152611b436101c0820152611d406101e0820152611d4b610200820152611d56610220820152611d61610240820152611d6c610260820152611da0610280820152611e066102a0820152611e6c6102c0820152611ea06102e0820152611ed4610300820152611f09610320820152611f64610340820152611fba610360820152611fe361038082015261203a6103a08201526120676103c08201526120be6103e08201526121296104008201526121866104208201526121c46104408201526121fd6104608201526122316104808201526122636104a08201526122956104c08201526122c76104e08201526122fb61050082015261234d6105208201526123866105408201526124386105608201526125656105808201526125c16105a082015261267b6105c080830191909152815290516100969190612f9a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b6109be565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612fe3565b604051602081830303815290604052905061042381836000610b2a565b506020820151825161043790600190613038565b815181106104475761044761304f565b60200260200101519250505092915050565b60006104656001610e00565b9050801561049a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104da6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b6105746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610534579050509050828160008151811061059d5761059d61304f565b602002602001018190525081816001815181106105bc576105bc61304f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f0000000000000000000000000000000000000000000000000000000000000000888060200190610636919061307e565b856040518463ffffffff1660e01b8152600401610655939291906132c1565b6000604051808303816000875af1158015610674573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106ba9190810190613372565b90506106c581610f86565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156107f35761077661072b602089018961307e565b61073990602081019061341b565b838181106107495761074961304f565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000611011565b6107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064015b60405180910390fd5b806107eb81613483565b915050610712565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833876040516108259291906134bc565b60405180910390a150505050801561089457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806108c9610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016108fe929190613539565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093b93929160200161357e565b604051602081830303815290604052905061095881836001610b2a565b506020820151825161096c90600190613038565b8151811061097c5761097c61304f565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61102d565b6109f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610a226040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610a5657610a56612d0c565b604051908082528060200260200182016040528015610a7f578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610ab657610ab6612d0c565b604051908082528060200260200182016040528015610adf578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610b19578160208202602001840152815160200182019150600181019050610af2565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610de6576003890198508886015180601f1a975061ffff8160081c169850506006881015610d5e5787610bad57866020028401518252602082019150610d71565b6001881415610bca57602087028301518252602082019150610d71565b6002881415610c57578c518760200210610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107d8565b866020026020018d01518252602082019150610d71565b6003881415610c9f576000610c8d6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610d71565b6004881415610cbb57610cb48d8d848a611115565b9150610d71565b606087610ce9578c604051602001610cd391906135e6565b6040516020818303038152906040529050610d48565b6001881415610d0257610cfb8d611282565b9050610d48565b6002881415610d1e576020808e0151604051610cd39201612fad565b6003881415610d48578c516040805160208101929092520160405160208183030381529060405290505b805115610d5857610d58816113bf565b50610d71565b87610d6d888463ffffffff8416565b9250505b60208c0151518c511115610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107d8565b610b68565b6020838303048c52509750505050505050505b9392505050565b60008054610100900460ff1615610eb7578160ff166001148015610e235750303b155b610eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b506000919050565b60005460ff808416911610610f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610fb183604051602001610f9d91906136eb565b604051602081830303815290604052611451565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661100b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600061101c8361147d565b8015610df95750610df983836114e1565b6060833b8061104c575050604080516020810190915260008152610df9565b8084111561106a575050604080516020810190915260008152610df9565b838310156110b5576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107d8565b83830384820360008282106110ca57826110cc565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261115457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061119f565b826001141561117857506fffffffffffffffffffffffffffffffff9050608061119f565b8260021415611194575067ffffffffffffffff9050604061119f565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111c2576111c2612d0c565b6040519080825280602002602001820160405280156111eb578160200160208202803683370190505b50905060208082019083028a03815b8b8210156112125781518152602091820191016111fa565b505060608b015160808c015160209081029091010160005b6101008110156112705760208502830182845b82811015611259578051841c8a1682526020918201910161123d565b5050506112678e8e8b610b2a565b9b50850161122a565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112ce9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261130a9291602001612fe3565b604051602081830303815290604052905060005b8560400151518110156113b65781866040015182815181106113425761134261304f565b60200260200101515160001b876040015183815181106113645761136461304f565b602002602001015160405160200161137e93929190613711565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161131e565b50949350505050565b61144e816040516024016113d39190612f9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526126f7565b50565b6060815182604051602001611467929190613748565b6040516020818303038152906040529050919050565b60006114a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006114e1565b801561035f57506114da827fffffffff000000000000000000000000000000000000000000000000000000006114e1565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061159b9086906137df565b6000604051808303818686fa925050503d80600081146115d7576040519150601f19603f3d011682016040523d82523d6000602084013e6115dc565b606091505b50915091506020815110156115f7576000935050505061035f565b81801561161357508080602001905181019061161391906137f1565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190613813565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117919190613813565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190613813565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016116c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061382c565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161186f565b60008060008467ffffffffffffffff811115611b6157611b61612d0c565b604051908082528060200260200182016040528015611b8a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611ba857611ba8612d0c565b604051908082528060200260200182016040528015611bd1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c26578251815260209283019201611c0e565b5050602088028101602084015b81831015611c4b578251815260209283019201611c33565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611ca59087908790600401613849565b600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d0891908101906138ac565b9050846020820160208a0281015b80821015611d31578151835260209283019290910190611d16565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612718565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e00858a612718565b90612799565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e66858a612718565b906127b8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261179182876127cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612818565b6000602083028203805b83811015611efe5780518015611ef5578252611efe565b50602001611ede565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611efe578051611fdb5760008252611efe565b602001611fc4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156120fc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b575080516020909101906121148382612876565b92506120ce565b505081526020019392505050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b5750805160209091019061217f83826128b2565b9250612139565b6020828102820380516000928201835b85821080156121a55750826000105b1561211b575080516020909101906121bd83826128e1565b9250612196565b600060208302820380516000602083015b8581101561211b57805183019150828210156121f057600080fd5b90915081906020016121d5565b600060208302820380516000602083015b8581101561211b57805191508161222457600080fd5b918190049160200161220e565b6020828102820380516000928201835b8582101561211b5750805160209091019061225c8184613a5d565b9250612241565b6020828102820380516000928201835b8582101561211b575080518281111561228a578092505b602082019150612273565b6020828102820380516000928201835b8582101561211b57508051828110156122bc578092505b6020820191506122a5565b600060208302820380516000602083015b8581101561211b5780519150816122ee57600080fd5b91819006916020016122d8565b60006020830282038051600080602084015b8681101561233e57831561233657805192508284029150828483041461233257600080fd5b8193505b60200161230d565b50505081526020019392505050565b600060208302820380516000602083015b8581101561211b578051830391508282111561237957600080fd5b909150819060200161235e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061186f9086908690600401613a69565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061251190879087908790600401613a98565b602060405180830381865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125529190613813565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170483836128f7565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156125ef576125ef612d0c565b604051908082528060200260200182016040528015612618578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561265457815181602001860152602082019150602081019050612632565b5050519050600061266783838989612956565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856126e885858585612aa6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561272d578391505061035f565b82601211156127595750601282900361274781600a613a5d565b6127519085613acd565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161278881600a613a5d565b6127519085613b0a565b5092915050565b6000816127ae670de0b6b3a764000085613acd565b610df99190613b0a565b6000670de0b6b3a76400006127ae8385613acd565b600081810b6127dd57508161035f565b60008260000b1315612805576127f482600a613b45565b6127fe9084613acd565b905061035f565b60ff60008390031661278881600a613a5d565b600080601283141561282d578391505061035f565b82601211156128475750601282900361278881600a613a5d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161274781600a613a5d565b600082820183811061288857806128aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826128c15750600061035f565b828202828482816128d4576128d46136bc565b04141561288857806128aa565b60008183116128f1576000610df9565b50900390565b60008060015b6008811161294e5760006129118683612b4c565b9050600061291f8684612b4c565b9050600061292d83836128e1565b905061293d856001860383612bf9565b945050600190920191506128fd9050565b509392505050565b835160009081908190819060015b60088111612a985760009250828761299d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6129a1565b5060005b60005b83811015612a56576129cf8c82815181106129c1576129c161304f565b602002602001015184612b4c565b95508a8611612a2157886129ee576129e78683612c82565b9150612a18565b6001891415612a01576129e78683612c98565b600289148015612a0f575084155b15612a18578591505b60019450612a4e565b89612a4e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a56565b6001016129a4565b5083612a7f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a8d866001840383612bf9565b955050600101612964565b509298975050505050505050565b6000826008811115612b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b6000855b85811015612b405763ffffffff6020820290811b199890981685891b17979150600101612b18565b50959695505050505050565b6000816008811115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b82612bc85760009150612792565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c915781610df9565b5090919050565b600081831015612c915781610df9565b600060208284031215612cba57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610df957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461144e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d8257612d82612d0c565b604052919050565b600067ffffffffffffffff821115612da457612da4612d0c565b5060051b60200190565b60008060408385031215612dc157600080fd5b8235612dcc81612cea565b915060208381013567ffffffffffffffff811115612de957600080fd5b8401601f81018613612dfa57600080fd5b8035612e0d612e0882612d8a565b612d3b565b81815260059190911b82018301908381019088831115612e2c57600080fd5b928401925b82841015612e4a57833582529284019290840190612e31565b80955050505050509250929050565b600060208284031215612e6b57600080fd5b813567ffffffffffffffff811115612e8257600080fd5b820160408185031215610df957600080fd5b60008060008060608587031215612eaa57600080fd5b8435612eb581612cea565b935060208501359250604085013567ffffffffffffffff80821115612ed957600080fd5b818701915087601f830112612eed57600080fd5b813581811115612efc57600080fd5b8860208260051b8501011115612f1157600080fd5b95989497505060200194505050565b60005b83811015612f3b578181015183820152602001612f23565b83811115612f4a576000848401525b50505050565b60008151808452612f68816020860160208601612f20565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610df96020830184612f50565b815160009082906020808601845b83811015612fd757815185529382019390820190600101612fbb565b50929695505050505050565b82815260008251612ffb816020850160208701612f20565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561304a5761304a613009565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126130b257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f157600080fd5b830160208101925035905067ffffffffffffffff81111561311157600080fd5b8060051b360383131561312357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156131a557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016131d283846130bc565b604086528281845260608701905060608260051b88010193508260005b8381101561329c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261325057600080fd5b85018035602067ffffffffffffffff82111561326b57600080fd5b81360388131561327a57600080fd5b613287898383860161312a565b985094850194939093019250506001016131ef565b50505050506132ae60208401846130bc565b8583036020870152611613838284613173565b6000606073ffffffffffffffffffffffffffffffffffffffff86168352602081818501526132f1828501876131c2565b84810360408681019190915286518083528388019284019060005b81811015613362578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161330c565b50909a9950505050505050505050565b60006020828403121561338457600080fd5b815167ffffffffffffffff8082111561339c57600080fd5b818401915084601f8301126133b057600080fd5b8151818111156133c2576133c2612d0c565b6133f360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612d3b565b915080825285602082850101111561340a57600080fd5b6113b6816020840160208601612f20565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261345057600080fd5b83018035915067ffffffffffffffff82111561346b57600080fd5b6020019150600581901b360382131561312357600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134b5576134b5613009565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261351a57600080fd5b60406060840152613530608084018583016131c2565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561356857600080fd5b8260051b80858437600092019182525092915050565b8381528260208201526000825161359c816040850160208701612f20565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135db578151875295820195908201906001016135bf565b509495945050505050565b600060208083528351818401528084015160a0604085015261360b60c08501826135ab565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156136845784878303018452613672828751612f50565b95880195938801939150600101613658565b5060608a01519650838982030160808a01526136a081886135ab565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613704816001850160208701612f20565b9190910160010192915050565b60008451613723818460208901612f20565b8201848152835161373b816020808501908801612f20565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516137d181600e850160208701612f20565b91909101600e019392505050565b600082516130b2818460208701612f20565b60006020828403121561380357600080fd5b81518015158114610df957600080fd5b60006020828403121561382557600080fd5b5051919050565b60006020828403121561383e57600080fd5b8151610df981612cea565b604080825283519082018190526000906020906060840190828701845b8281101561389857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613866565b5050508381038285015261161381866135ab565b600060208083850312156138bf57600080fd5b825167ffffffffffffffff8111156138d657600080fd5b8301601f810185136138e757600080fd5b80516138f5612e0882612d8a565b81815260059190911b8201830190838101908783111561391457600080fd5b928401925b8284101561393257835182529284019290840190613919565b979650505050505050565b600181815b8085111561399657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397c5761397c613009565b8085161561398957918102915b93841c9390800290613942565b509250929050565b6000826139ad5750600161035f565b816139ba5750600061035f565b81600181146139d057600281146139da576139f6565b600191505061035f565b60ff8411156139eb576139eb613009565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613a19575081810a61035f565b613a23838361393d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613a5557613a55613009565b029392505050565b6000610df9838361399e565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128aa60408301846135ab565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061353060608301846135ab565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b0557613b05613009565b500290565b600082613b40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610df960ff84168361399e56fea2646970667358221220a37f2cb5d78269361959ff85181f07b524e2e4ebabc0768aad4edd04082b53e364736f6c634300080a0033"; type CombineTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Cooldown__factory.ts b/src/typechain/factories/Cooldown__factory.ts index 90866e7..28cc0f4 100644 --- a/src/typechain/factories/Cooldown__factory.ts +++ b/src/typechain/factories/Cooldown__factory.ts @@ -47,7 +47,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212206194a9835a46210d885d054d777ee9580459a7eeb2834aa3946021eba713216d64736f6c634300080a0033"; + "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209b288e798b5e28e9733ad12333f611a6c88531c1afec709df5bfa4f17586e65664736f6c634300080a0033"; type CooldownConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts deleted file mode 100644 index b85fb69..0000000 --- a/src/typechain/factories/ERC165Upgradeable__factory.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - ERC165Upgradeable, - ERC165UpgradeableInterface, -} from "../ERC165Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class ERC165Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): ERC165UpgradeableInterface { - return new utils.Interface(_abi) as ERC165UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC165Upgradeable { - return new Contract(address, _abi, signerOrProvider) as ERC165Upgradeable; - } -} diff --git a/src/typechain/factories/ERC20BalanceTierFactory__factory.ts b/src/typechain/factories/ERC20BalanceTierFactory__factory.ts deleted file mode 100644 index 5df820e..0000000 --- a/src/typechain/factories/ERC20BalanceTierFactory__factory.ts +++ /dev/null @@ -1,190 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC20BalanceTierFactory, - ERC20BalanceTierFactoryInterface, -} from "../ERC20BalanceTierFactory"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Implementation", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "child", - type: "address", - }, - ], - name: "NewChild", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "createChild", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "erc20", - type: "address", - }, - { - internalType: "uint256[8]", - name: "tierValues", - type: "uint256[8]", - }, - ], - internalType: "struct ERC20BalanceTierConfig", - name: "config_", - type: "tuple", - }, - ], - name: "createChildTyped", - outputs: [ - { - internalType: "contract ERC20BalanceTier", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "implementation", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "maybeChild_", - type: "address", - }, - ], - name: "isChild", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610df8806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea26469706673582212206821a955d90cf540417d75dc98c9d8f1bbe3f099c400a1e65739a30d5294bdca64736f6c634300080a0033608060405234801561001057600080fd5b50610dd8806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061099d565b60405180910390f35b61008261007d3660046109f4565b6100fa565b005b610082610092366004610ad6565b610161565b6100aa6100a5366004610b74565b6102a9565b604051908152602001610066565b6100c061097e565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff1661035f565b8060200190518101906100f59190610b91565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061016d600161038d565b905080156101b657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6101c38260200151610557565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061035960006103546102bb6100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190610bf2565b6106f0565b61073e565b92915050565b60606103598260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107de565b600080547501000000000000000000000000000000000000000000900460ff1615610458578160ff1660011480156103c45750303b155b610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff161561057d5761057d610c0b565b6000805b600881101561062b578183826008811061059d5761059d610c3a565b6020020151101561060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061061c5761061c610c3a565b60200201519150600101610581565b5050600061065782604051602001610643919061099d565b6040516020818303038152906040526108c7565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107345783816008811061070f5761070f610c3a565b6020020151831015610722579050610359565b8061072c81610c69565b9150506106f4565b5060089392505050565b60008160088111156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806107fd5750506040805160208101909152600081526108c0565b8084111561081b5750506040805160208101909152600081526108c0565b83831015610866576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b838303848203600082821061087b578261087d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806108f2836040516020016108de9190610d04565b604051602081830303815290604052610952565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661094c576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610968929190610d17565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109c65781518352602092830192909101906001016109a7565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146109f157600080fd5b50565b60008060008060608587031215610a0a57600080fd5b8435610a15816109cf565b935060208501359250604085013567ffffffffffffffff80821115610a3957600080fd5b818701915087601f830112610a4d57600080fd5b813581811115610a5c57600080fd5b886020828501011115610a6e57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610ad057610ad0610a7d565b60405290565b6000610120808385031215610aea57600080fd5b6040516040810181811067ffffffffffffffff82111715610b0d57610b0d610a7d565b6040528335610b1b816109cf565b81526020603f85018613610b2e57600080fd5b610b36610aac565b928501928087851115610b4857600080fd5b8287015b85811015610b635780358352918301918301610b4c565b509183019190915250949350505050565b600060208284031215610b8657600080fd5b81356108c0816109cf565b6000610100808385031215610ba557600080fd5b83601f840112610bb457600080fd5b610bbc610aac565b908301908085831115610bce57600080fd5b845b83811015610be8578051835260209283019201610bd0565b5095945050505050565b600060208284031215610c0457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610cea5760208185018101518683015201610cd0565b81811115610cf9576000828601525b509290920192915050565b6000815260006108c06001830184610cc9565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610d9a600e830184610cc9565b94935050505056fea2646970667358221220679ad7597a92dea92eb7f10a6886e12b59a650617ac7221e0893992251df14d964736f6c634300080a0033"; - -type ERC20BalanceTierFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20BalanceTierFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20BalanceTierFactory__factory extends ContractFactory { - constructor(...args: ERC20BalanceTierFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC20BalanceTierFactory { - return super.attach(address) as ERC20BalanceTierFactory; - } - connect(signer: Signer): ERC20BalanceTierFactory__factory { - return super.connect(signer) as ERC20BalanceTierFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20BalanceTierFactoryInterface { - return new utils.Interface(_abi) as ERC20BalanceTierFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20BalanceTierFactory { - return new Contract( - address, - _abi, - signerOrProvider - ) as ERC20BalanceTierFactory; - } -} diff --git a/src/typechain/factories/ERC20BalanceTier__factory.ts b/src/typechain/factories/ERC20BalanceTier__factory.ts deleted file mode 100644 index 9fb40cd..0000000 --- a/src/typechain/factories/ERC20BalanceTier__factory.ts +++ /dev/null @@ -1,255 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC20BalanceTier, - ERC20BalanceTierInterface, -} from "../ERC20BalanceTier"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "erc20", - type: "address", - }, - ], - name: "Initialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - ], - name: "InitializeValueTier", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "TierChange", - type: "event", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "erc20", - type: "address", - }, - { - internalType: "uint256[8]", - name: "tierValues", - type: "uint256[8]", - }, - ], - internalType: "struct ERC20BalanceTierConfig", - name: "config_", - type: "tuple", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account_", - type: "address", - }, - ], - name: "report", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "setTier", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "tierValues", - outputs: [ - { - internalType: "uint256[8]", - name: "tierValues_", - type: "uint256[8]", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610dd8806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061099d565b60405180910390f35b61008261007d3660046109f4565b6100fa565b005b610082610092366004610ad6565b610161565b6100aa6100a5366004610b74565b6102a9565b604051908152602001610066565b6100c061097e565b6000546100e29073ffffffffffffffffffffffffffffffffffffffff1661035f565b8060200190518101906100f59190610b91565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061016d600161038d565b905080156101b657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6101c38260200151610557565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600061035960006103546102bb6100b8565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561032b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034f9190610bf2565b6106f0565b61073e565b92915050565b60606103598260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107de565b600080547501000000000000000000000000000000000000000000900460ff1615610458578160ff1660011480156103c45750303b155b610450576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610158565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff161561057d5761057d610c0b565b6000805b600881101561062b578183826008811061059d5761059d610c3a565b6020020151101561060a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610158565b82816008811061061c5761061c610c3a565b60200201519150600101610581565b5050600061065782604051602001610643919061099d565b6040516020818303038152906040526108c7565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107345783816008811061070f5761070f610c3a565b6020020151831015610722579050610359565b8061072c81610c69565b9150506106f4565b5060089392505050565b60008160088111156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610158565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b806107fd5750506040805160208101909152600081526108c0565b8084111561081b5750506040805160208101909152600081526108c0565b83831015610866576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610158565b838303848203600082821061087b578261087d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806108f2836040516020016108de9190610d04565b604051602081830303815290604052610952565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661094c576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610968929190610d17565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156109c65781518352602092830192909101906001016109a7565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146109f157600080fd5b50565b60008060008060608587031215610a0a57600080fd5b8435610a15816109cf565b935060208501359250604085013567ffffffffffffffff80821115610a3957600080fd5b818701915087601f830112610a4d57600080fd5b813581811115610a5c57600080fd5b886020828501011115610a6e57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610ad057610ad0610a7d565b60405290565b6000610120808385031215610aea57600080fd5b6040516040810181811067ffffffffffffffff82111715610b0d57610b0d610a7d565b6040528335610b1b816109cf565b81526020603f85018613610b2e57600080fd5b610b36610aac565b928501928087851115610b4857600080fd5b8287015b85811015610b635780358352918301918301610b4c565b509183019190915250949350505050565b600060208284031215610b8657600080fd5b81356108c0816109cf565b6000610100808385031215610ba557600080fd5b83601f840112610bb457600080fd5b610bbc610aac565b908301908085831115610bce57600080fd5b845b83811015610be8578051835260209283019201610bd0565b5095945050505050565b600060208284031215610c0457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cc2577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610cea5760208185018101518683015201610cd0565b81811115610cf9576000828601525b509290920192915050565b6000815260006108c06001830184610cc9565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610d9a600e830184610cc9565b94935050505056fea2646970667358221220679ad7597a92dea92eb7f10a6886e12b59a650617ac7221e0893992251df14d964736f6c634300080a0033"; - -type ERC20BalanceTierConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20BalanceTierConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20BalanceTier__factory extends ContractFactory { - constructor(...args: ERC20BalanceTierConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC20BalanceTier { - return super.attach(address) as ERC20BalanceTier; - } - connect(signer: Signer): ERC20BalanceTier__factory { - return super.connect(signer) as ERC20BalanceTier__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20BalanceTierInterface { - return new utils.Interface(_abi) as ERC20BalanceTierInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20BalanceTier { - return new Contract(address, _abi, signerOrProvider) as ERC20BalanceTier; - } -} diff --git a/src/typechain/factories/ERC20PulleeTest__factory.ts b/src/typechain/factories/ERC20PulleeTest__factory.ts index 1adc754..9d7d207 100644 --- a/src/typechain/factories/ERC20PulleeTest__factory.ts +++ b/src/typechain/factories/ERC20PulleeTest__factory.ts @@ -135,7 +135,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212208bcf37f3b61286629353c09abb58fc2dbbe1c4ad47ef6f0133312ffb666e209c64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220977f9f1bb9ad8d38578514c57a6443c786b2c2cf6130170f3ea35797ba47283264736f6c634300080a0033"; type ERC20PulleeTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts b/src/typechain/factories/ERC20Snapshot__factory.ts similarity index 69% rename from src/typechain/factories/IERC721MetadataUpgradeable__factory.ts rename to src/typechain/factories/ERC20Snapshot__factory.ts index 41562db..d14a2e7 100644 --- a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts +++ b/src/typechain/factories/ERC20Snapshot__factory.ts @@ -4,10 +4,7 @@ import { Contract, Signer, utils } from "ethers"; import { Provider } from "@ethersproject/providers"; -import type { - IERC721MetadataUpgradeable, - IERC721MetadataUpgradeableInterface, -} from "../IERC721MetadataUpgradeable"; +import type { ERC20Snapshot, ERC20SnapshotInterface } from "../ERC20Snapshot"; const _abi = [ { @@ -22,13 +19,13 @@ const _abi = [ { indexed: true, internalType: "address", - name: "approved", + name: "spender", type: "address", }, { - indexed: true, + indexed: false, internalType: "uint256", - name: "tokenId", + name: "value", type: "uint256", }, ], @@ -38,26 +35,14 @@ const _abi = [ { anonymous: false, inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "operator", - type: "address", - }, { indexed: false, - internalType: "bool", - name: "approved", - type: "bool", + internalType: "uint256", + name: "id", + type: "uint256", }, ], - name: "ApprovalForAll", + name: "Snapshot", type: "event", }, { @@ -76,9 +61,9 @@ const _abi = [ type: "address", }, { - indexed: true, + indexed: false, internalType: "uint256", - name: "tokenId", + name: "value", type: "uint256", }, ], @@ -89,33 +74,20 @@ const _abi = [ inputs: [ { internalType: "address", - name: "to", + name: "owner", type: "address", }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ { internalType: "address", - name: "owner", + name: "spender", type: "address", }, ], - name: "balanceOf", + name: "allowance", outputs: [ { internalType: "uint256", - name: "balance", + name: "", type: "uint256", }, ], @@ -124,127 +96,105 @@ const _abi = [ }, { inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, { internalType: "uint256", - name: "tokenId", + name: "amount", type: "uint256", }, ], - name: "getApproved", + name: "approve", outputs: [ { - internalType: "address", - name: "operator", - type: "address", + internalType: "bool", + name: "", + type: "bool", }, ], - stateMutability: "view", + stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", + name: "account", type: "address", }, ], - name: "isApprovedForAll", + name: "balanceOf", outputs: [ { - internalType: "bool", + internalType: "uint256", name: "", - type: "bool", + type: "uint256", }, ], stateMutability: "view", type: "function", }, { - inputs: [], - name: "name", - outputs: [ + inputs: [ { - internalType: "string", - name: "", - type: "string", + internalType: "address", + name: "account", + type: "address", }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ { internalType: "uint256", - name: "tokenId", + name: "snapshotId", type: "uint256", }, ], - name: "ownerOf", + name: "balanceOfAt", outputs: [ { - internalType: "address", - name: "owner", - type: "address", + internalType: "uint256", + name: "", + type: "uint256", }, ], stateMutability: "view", type: "function", }, { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, + inputs: [], + name: "decimals", + outputs: [ { - internalType: "uint256", - name: "tokenId", - type: "uint256", + internalType: "uint8", + name: "", + type: "uint8", }, ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", + stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", + name: "spender", type: "address", }, { internalType: "uint256", - name: "tokenId", + name: "subtractedValue", type: "uint256", }, + ], + name: "decreaseAllowance", + outputs: [ { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: "bool", + name: "", + type: "bool", }, ], - name: "safeTransferFrom", - outputs: [], stateMutability: "nonpayable", type: "function", }, @@ -252,34 +202,34 @@ const _abi = [ inputs: [ { internalType: "address", - name: "operator", + name: "spender", type: "address", }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ { internalType: "bool", - name: "_approved", + name: "", type: "bool", }, ], - name: "setApprovalForAll", - outputs: [], stateMutability: "nonpayable", type: "function", }, { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", + inputs: [], + name: "name", outputs: [ { - internalType: "bool", + internalType: "string", name: "", - type: "bool", + type: "string", }, ], stateMutability: "view", @@ -298,25 +248,62 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { internalType: "uint256", - name: "tokenId", + name: "snapshotId", type: "uint256", }, ], - name: "tokenURI", + name: "totalSupplyAt", outputs: [ { - internalType: "string", + internalType: "uint256", name: "", - type: "string", + 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: [ { @@ -331,30 +318,32 @@ const _abi = [ }, { internalType: "uint256", - name: "tokenId", + name: "amount", type: "uint256", }, ], name: "transferFrom", - outputs: [], + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], stateMutability: "nonpayable", type: "function", }, ]; -export class IERC721MetadataUpgradeable__factory { +export class ERC20Snapshot__factory { static readonly abi = _abi; - static createInterface(): IERC721MetadataUpgradeableInterface { - return new utils.Interface(_abi) as IERC721MetadataUpgradeableInterface; + static createInterface(): ERC20SnapshotInterface { + return new utils.Interface(_abi) as ERC20SnapshotInterface; } static connect( address: string, signerOrProvider: Signer | Provider - ): IERC721MetadataUpgradeable { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721MetadataUpgradeable; + ): ERC20Snapshot { + return new Contract(address, _abi, signerOrProvider) as ERC20Snapshot; } } diff --git a/src/typechain/factories/ERC20TransferTierFactory__factory.ts b/src/typechain/factories/ERC20TransferTierFactory__factory.ts deleted file mode 100644 index 4c20ea2..0000000 --- a/src/typechain/factories/ERC20TransferTierFactory__factory.ts +++ /dev/null @@ -1,190 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC20TransferTierFactory, - ERC20TransferTierFactoryInterface, -} from "../ERC20TransferTierFactory"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Implementation", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "child", - type: "address", - }, - ], - name: "NewChild", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "createChild", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "erc20", - type: "address", - }, - { - internalType: "uint256[8]", - name: "tierValues", - type: "uint256[8]", - }, - ], - internalType: "struct ERC20TransferTierConfig", - name: "config_", - type: "tuple", - }, - ], - name: "createChildTyped", - outputs: [ - { - internalType: "contract ERC20TransferTier", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "implementation", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "maybeChild_", - type: "address", - }, - ], - name: "isChild", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b611575806108f783390190565b6080516108336100c4600039600081816093015261037a01526108336000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063ab43ea1f146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105c0565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105e4565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610622565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c9190610695565b92915050565b6000806103718385018561070b565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103f39085906004016107a9565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b6000610120828403121561059557600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105bd57600080fd5b50565b6000602082840312156105d257600080fd5b81356105dd8161059b565b9392505050565b610120810182356105f48161059b565b73ffffffffffffffffffffffffffffffffffffffff1682526101006020848101908401376000815292915050565b600060208083528351808285015260005b8181101561064f57858101830151858201604001528201610633565b81811115610661576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106a757600080fd5b81516105dd8161059b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610705576107056106b2565b60405290565b600061012080838503121561071f57600080fd5b6040516040810181811067ffffffffffffffff82111715610742576107426106b2565b60405283356107508161059b565b81526020603f8501861361076357600080fd5b61076b6106e1565b92850192808785111561077d57600080fd5b8287015b858110156107985780358352918301918301610781565b509183019190915250949350505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156107f3578251825291830191908301906001016107d6565b505050509291505056fea2646970667358221220d88afd1c7c31b92d7ddbd84edc65d86d4eb9e42c2fc11a10679380769eb04e1664736f6c634300080a0033608060405234801561001057600080fd5b50611555806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061106e565b60405180910390f35b61008261007d3660046110c5565b6100fa565b005b6100826100923660046111a7565b610210565b6100aa6100a5366004611245565b610357565b604051908152602001610066565b6100c061104f565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff166103d4565b8060200190518101906100f59190611262565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061017485610357565b905060006101828243610402565b90506101908282874361043c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906112c3565b60405180910390a16102088682878787610469565b505050505050565b600061021c600161058c565b9050801561026557600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6102728260200151610756565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035357600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546103a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103ce565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606103ce8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ef565b6000805b600881101561043257828160200285901c63ffffffff16111561042a5790506103ce565b600101610406565b5060089392505050565b600083831061045657610451858585856109d8565b610460565b6104608584610a7e565b95945050505050565b8383116104ef573373ffffffffffffffffffffffffffffffffffffffff8616146104ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006104f96100b8565b905060006105078287610b1e565b905060006105158387610b1e565b90508181141561052757505050610585565b8181111561055b576002546105569073ffffffffffffffffffffffffffffffffffffffff163330858503610b4f565b610581565b6002546105819073ffffffffffffffffffffffffffffffffffffffff1633838503610c31565b5050505b5050505050565b6001546000907501000000000000000000000000000000000000000000900460ff1615610659578160ff1660011480156105c55750303b155b610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506000919050565b60015460ff808416740100000000000000000000000000000000000000009092041610610708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506001805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117815590565b60015473ffffffffffffffffffffffffffffffffffffffff161561077c5761077c611349565b6000805b600881101561082a578183826008811061079c5761079c611378565b60200201511015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061081b5761081b611378565b60200201519150600101610780565b5050600061085682604051602001610842919061106e565b604051602081830303815290604052610c8c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b8061090e5750506040805160208101909152600081526109d1565b8084111561092c5750506040805160208101909152600081526109d1565b83831015610977576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b838303848203600082821061098c578261098e565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b85811015610a725763ffffffff6020820290811b199890981685891b17979150600101610a4a565b50959695505050505050565b6000816008811115610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610b2e5760006109d1565b826001830360088110610b4357610b43611378565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c2b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d17565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c879084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ba9565b505050565b600080610cb783604051602001610ca391906113d3565b604051602081830303815290604052610e23565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610d11576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610d79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e4f9092919063ffffffff16565b805190915015610c875780806020019051810190610d9791906113f9565b610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610e3992919061141b565b6040516020818303038152906040529050919050565b6060610e5e8484600085610e66565b949350505050565b606082471015610ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610f76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f9f91906114b2565b60006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5091509150610ff1828286610ffc565b979650505050505050565b6060831561100b5750816109d1565b82511561101b5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906114ce565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015611097578151835260209283019290910190600101611078565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146110c257600080fd5b50565b600080600080606085870312156110db57600080fd5b84356110e6816110a0565b935060208501359250604085013567ffffffffffffffff8082111561110a57600080fd5b818701915087601f83011261111e57600080fd5b81358181111561112d57600080fd5b88602082850101111561113f57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156111a1576111a161114e565b60405290565b60006101208083850312156111bb57600080fd5b6040516040810181811067ffffffffffffffff821117156111de576111de61114e565b60405283356111ec816110a0565b81526020603f850186136111ff57600080fd5b61120761117d565b92850192808785111561121957600080fd5b8287015b85811015611234578035835291830191830161121d565b509183019190915250949350505050565b60006020828403121561125757600080fd5b81356109d1816110a0565b600061010080838503121561127657600080fd5b83601f84011261128557600080fd5b61128d61117d565b90830190808583111561129f57600080fd5b845b838110156112b95780518352602092830192016112a1565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113c25781810151838201526020016113aa565b83811115610c2b5750506000910152565b60008152600082516113ec8160018501602087016113a7565b9190910160010192915050565b60006020828403121561140b57600080fd5b815180151581146109d157600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516114a481600e8501602087016113a7565b91909101600e019392505050565b600082516114c48184602087016113a7565b9190910192915050565b60208152600082518060208401526114ed8160408501602087016113a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200b36d31ceb93426269f8b038f947a6654d343a9d2d121c3e2b69ac9d8f3119b164736f6c634300080a0033"; - -type ERC20TransferTierFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20TransferTierFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20TransferTierFactory__factory extends ContractFactory { - constructor(...args: ERC20TransferTierFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC20TransferTierFactory { - return super.attach(address) as ERC20TransferTierFactory; - } - connect(signer: Signer): ERC20TransferTierFactory__factory { - return super.connect(signer) as ERC20TransferTierFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20TransferTierFactoryInterface { - return new utils.Interface(_abi) as ERC20TransferTierFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20TransferTierFactory { - return new Contract( - address, - _abi, - signerOrProvider - ) as ERC20TransferTierFactory; - } -} diff --git a/src/typechain/factories/ERC20TransferTier__factory.ts b/src/typechain/factories/ERC20TransferTier__factory.ts deleted file mode 100644 index f9c4b93..0000000 --- a/src/typechain/factories/ERC20TransferTier__factory.ts +++ /dev/null @@ -1,255 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC20TransferTier, - ERC20TransferTierInterface, -} from "../ERC20TransferTier"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "erc20", - type: "address", - }, - ], - name: "Initialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - ], - name: "InitializeValueTier", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "TierChange", - type: "event", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC20", - name: "erc20", - type: "address", - }, - { - internalType: "uint256[8]", - name: "tierValues", - type: "uint256[8]", - }, - ], - internalType: "struct ERC20TransferTierConfig", - name: "config_", - type: "tuple", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account_", - type: "address", - }, - ], - name: "report", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account_", - type: "address", - }, - { - internalType: "uint256", - name: "endTier_", - type: "uint256", - }, - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "setTier", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "tierValues", - outputs: [ - { - internalType: "uint256[8]", - name: "tierValues_", - type: "uint256[8]", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50611555806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806370230b39146100515780638a200fff1461006f578063a61e331514610084578063e053ea3114610097575b600080fd5b6100596100b8565b604051610066919061106e565b60405180910390f35b61008261007d3660046110c5565b6100fa565b005b6100826100923660046111a7565b610210565b6100aa6100a5366004611245565b610357565b604051908152602001610066565b6100c061104f565b6001546100e29073ffffffffffffffffffffffffffffffffffffffff166103d4565b8060200190518101906100f59190611262565b905090565b60008311610169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b600061017485610357565b905060006101828243610402565b90506101908282874361043c565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906101f3903390899085908a908a908a906112c3565b60405180910390a16102088682878787610469565b505050505050565b600061021c600161058c565b9050801561026557600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6102728260200151610756565b8151600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561035357600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546103a7577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103ce565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b60606103ce8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6108ef565b6000805b600881101561043257828160200285901c63ffffffff16111561042a5790506103ce565b600101610406565b5060089392505050565b600083831061045657610451858585856109d8565b610460565b6104608584610a7e565b95945050505050565b8383116104ef573373ffffffffffffffffffffffffffffffffffffffff8616146104ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f44454c4547415445445f544945525f4c4f5353000000000000000000000000006044820152606401610160565b60006104f96100b8565b905060006105078287610b1e565b905060006105158387610b1e565b90508181141561052757505050610585565b8181111561055b576002546105569073ffffffffffffffffffffffffffffffffffffffff163330858503610b4f565b610581565b6002546105819073ffffffffffffffffffffffffffffffffffffffff1633838503610c31565b5050505b5050505050565b6001546000907501000000000000000000000000000000000000000000900460ff1615610659578160ff1660011480156105c55750303b155b610651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506000919050565b60015460ff808416740100000000000000000000000000000000000000009092041610610708576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610160565b506001805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff90921691909117815590565b60015473ffffffffffffffffffffffffffffffffffffffff161561077c5761077c611349565b6000805b600881101561082a578183826008811061079c5761079c611378565b60200201511015610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c55455300000000000000006044820152606401610160565b82816008811061081b5761081b611378565b60200201519150600101610780565b5050600061085682604051602001610842919061106e565b604051602081830303815290604052610c8c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6060833b8061090e5750506040805160208101909152600081526109d1565b8084111561092c5750506040805160208101909152600081526109d1565b83831015610977576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610160565b838303848203600082821061098c578261098e565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000826008811115610a46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b6000855b85811015610a725763ffffffff6020820290811b199890981685891b17979150600101610a4a565b50959695505050505050565b6000816008811115610aec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610160565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6000808211610b2e5760006109d1565b826001830360088110610b4357610b43611378565b60200201519392505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610c2b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152610d17565b50505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610c879084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401610ba9565b505050565b600080610cb783604051602001610ca391906113d3565b604051602081830303815290604052610e23565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610d11576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610d79826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16610e4f9092919063ffffffff16565b805190915015610c875780806020019051810190610d9791906113f9565b610c87576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610160565b6060815182604051602001610e3992919061141b565b6040516020818303038152906040529050919050565b6060610e5e8484600085610e66565b949350505050565b606082471015610ef8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610160565b73ffffffffffffffffffffffffffffffffffffffff85163b610f76576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610160565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051610f9f91906114b2565b60006040518083038185875af1925050503d8060008114610fdc576040519150601f19603f3d011682016040523d82523d6000602084013e610fe1565b606091505b5091509150610ff1828286610ffc565b979650505050505050565b6060831561100b5750816109d1565b82511561101b5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161016091906114ce565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015611097578151835260209283019290910190600101611078565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff811681146110c257600080fd5b50565b600080600080606085870312156110db57600080fd5b84356110e6816110a0565b935060208501359250604085013567ffffffffffffffff8082111561110a57600080fd5b818701915087601f83011261111e57600080fd5b81358181111561112d57600080fd5b88602082850101111561113f57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff811182821017156111a1576111a161114e565b60405290565b60006101208083850312156111bb57600080fd5b6040516040810181811067ffffffffffffffff821117156111de576111de61114e565b60405283356111ec816110a0565b81526020603f850186136111ff57600080fd5b61120761117d565b92850192808785111561121957600080fd5b8287015b85811015611234578035835291830191830161121d565b509183019190915250949350505050565b60006020828403121561125757600080fd5b81356109d1816110a0565b600061010080838503121561127657600080fd5b83601f84011261128557600080fd5b61128d61117d565b90830190808583111561129f57600080fd5b845b838110156112b95780518352602092830192016112a1565b5095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60005b838110156113c25781810151838201526020016113aa565b83811115610c2b5750506000910152565b60008152600082516113ec8160018501602087016113a7565b9190910160010192915050565b60006020828403121561140b57600080fd5b815180151581146109d157600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516114a481600e8501602087016113a7565b91909101600e019392505050565b600082516114c48184602087016113a7565b9190910192915050565b60208152600082518060208401526114ed8160408501602087016113a7565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212200b36d31ceb93426269f8b038f947a6654d343a9d2d121c3e2b69ac9d8f3119b164736f6c634300080a0033"; - -type ERC20TransferTierConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC20TransferTierConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC20TransferTier__factory extends ContractFactory { - constructor(...args: ERC20TransferTierConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC20TransferTier { - return super.attach(address) as ERC20TransferTier; - } - connect(signer: Signer): ERC20TransferTier__factory { - return super.connect(signer) as ERC20TransferTier__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC20TransferTierInterface { - return new utils.Interface(_abi) as ERC20TransferTierInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC20TransferTier { - return new Contract(address, _abi, signerOrProvider) as ERC20TransferTier; - } -} diff --git a/src/typechain/factories/ERC721BalanceTierFactory__factory.ts b/src/typechain/factories/ERC721BalanceTierFactory__factory.ts deleted file mode 100644 index 0f1273f..0000000 --- a/src/typechain/factories/ERC721BalanceTierFactory__factory.ts +++ /dev/null @@ -1,177 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC721BalanceTierFactory, - ERC721BalanceTierFactoryInterface, -} from "../ERC721BalanceTierFactory"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Implementation", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "child", - type: "address", - }, - ], - name: "NewChild", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "createChild", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC721", - name: "erc721", - type: "address", - }, - { - internalType: "uint256[8]", - name: "tierValues", - type: "uint256[8]", - }, - ], - internalType: "struct ERC721BalanceTierConfig", - name: "config_", - type: "tuple", - }, - ], - name: "createChildTyped", - outputs: [ - { - internalType: "contract ERC721BalanceTier", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "maybeChild_", - type: "address", - }, - ], - name: "isChild", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5060016000908155604051610024906100aa565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a1600280546001600160a01b0319166001600160a01b03929092169190911790556100b7565b610e588061086b83390190565b6107a5806100c66000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063ab43ea1f14610083578063fc91a89714610096575b600080fd5b6100596100543660046104d9565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046105c9565b61028d565b6100cf6100a4366004610667565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610330565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102bc919061068b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e791906106df565b6020604051808303816000875af1158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a9190610752565b92915050565b60008061033f838501856105c9565b6002549091506000906103679073ffffffffffffffffffffffffffffffffffffffff166103f7565b6040517fa61e331500000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a61e3315906103bc90859060040161068b565b600060405180830381600087803b1580156103d657600080fd5b505af11580156103ea573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104ec57600080fd5b823567ffffffffffffffff8082111561050457600080fd5b818501915085601f83011261051857600080fd5b81358181111561052757600080fd5b86602082850101111561053957600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff8111828210171561059e5761059e61054b565b60405290565b73ffffffffffffffffffffffffffffffffffffffff811681146105c657600080fd5b50565b60006101208083850312156105dd57600080fd5b6040516040810181811067ffffffffffffffff821117156106005761060061054b565b604052833561060e816105a4565b81526020603f8501861361062157600080fd5b61062961057a565b92850192808785111561063b57600080fd5b8287015b85811015610656578035835291830191830161063f565b509183019190915250949350505050565b60006020828403121561067957600080fd5b8135610684816105a4565b9392505050565b815173ffffffffffffffffffffffffffffffffffffffff1681526020808301516101208301919081840160005b60088110156106d5578251825291830191908301906001016106b8565b5050505092915050565b600060208083528351808285015260005b8181101561070c578581018301518582016040015282016106f0565b8181111561071e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561076457600080fd5b8151610684816105a456fea2646970667358221220ee8031f8b375d0ce7a21c04d37cb99921b259c746a31c9a9e39ebf0d33bd946c64736f6c634300080a0033608060405234801561001057600080fd5b50610e38806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906109fd565b60405180910390f35b61009d610098366004610a54565b61015a565b005b61009d6100ad366004610b36565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610bd4565b610309565b604051908152602001610081565b6101206109de565b6000546101429073ffffffffffffffffffffffffffffffffffffffff166103bf565b8060200190518101906101559190610bf1565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101cd60016103ed565b9050801561021657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b61022382602001516105b7565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561030557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103b960006103b461031b610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103af9190610c52565b610750565b61079e565b92915050565b60606103b98260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61083e565b600080547501000000000000000000000000000000000000000000900460ff16156104b8578160ff1660011480156104245750303b155b6104b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff16156105dd576105dd610c6b565b6000805b600881101561068b57818382600881106105fd576105fd610c9a565b6020020151101561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061067c5761067c610c9a565b602002015191506001016105e1565b505060006106b7826040516020016106a391906109fd565b604051602081830303815290604052610927565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107945783816008811061076f5761076f610c9a565b60200201518310156107825790506103b9565b8061078c81610cc9565b915050610754565b5060089392505050565b600081600881111561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061085d575050604080516020810190915260008152610920565b8084111561087b575050604080516020810190915260008152610920565b838310156108c6576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106108db57826108dd565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806109528360405160200161093e9190610d64565b6040516020818303038152906040526109b2565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166109ac576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109c8929190610d77565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610a26578151835260209283019290910190600101610a07565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a5157600080fd5b50565b60008060008060608587031215610a6a57600080fd5b8435610a7581610a2f565b935060208501359250604085013567ffffffffffffffff80821115610a9957600080fd5b818701915087601f830112610aad57600080fd5b813581811115610abc57600080fd5b886020828501011115610ace57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610b3057610b30610add565b60405290565b6000610120808385031215610b4a57600080fd5b6040516040810181811067ffffffffffffffff82111715610b6d57610b6d610add565b6040528335610b7b81610a2f565b81526020603f85018613610b8e57600080fd5b610b96610b0c565b928501928087851115610ba857600080fd5b8287015b85811015610bc35780358352918301918301610bac565b509183019190915250949350505050565b600060208284031215610be657600080fd5b813561092081610a2f565b6000610100808385031215610c0557600080fd5b83601f840112610c1457600080fd5b610c1c610b0c565b908301908085831115610c2e57600080fd5b845b83811015610c48578051835260209283019201610c30565b5095945050505050565b600060208284031215610c6457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610d4a5760208185018101518683015201610d30565b81811115610d59576000828601525b509290920192915050565b6000815260006109206001830184610d29565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610dfa600e830184610d29565b94935050505056fea26469706673582212201df98fdc602f8856c1708b5ffdd62deded81c2448096f94f1688be17793f49ca64736f6c634300080a0033"; - -type ERC721BalanceTierFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC721BalanceTierFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC721BalanceTierFactory__factory extends ContractFactory { - constructor(...args: ERC721BalanceTierFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC721BalanceTierFactory { - return super.attach(address) as ERC721BalanceTierFactory; - } - connect(signer: Signer): ERC721BalanceTierFactory__factory { - return super.connect(signer) as ERC721BalanceTierFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC721BalanceTierFactoryInterface { - return new utils.Interface(_abi) as ERC721BalanceTierFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC721BalanceTierFactory { - return new Contract( - address, - _abi, - signerOrProvider - ) as ERC721BalanceTierFactory; - } -} diff --git a/src/typechain/factories/ERC721BalanceTier__factory.ts b/src/typechain/factories/ERC721BalanceTier__factory.ts deleted file mode 100644 index 09531d8..0000000 --- a/src/typechain/factories/ERC721BalanceTier__factory.ts +++ /dev/null @@ -1,268 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC721BalanceTier, - ERC721BalanceTierInterface, -} from "../ERC721BalanceTier"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "erc721", - type: "address", - }, - ], - name: "Initialize", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - ], - name: "InitializeValueTier", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "TierChange", - type: "event", - }, - { - inputs: [], - name: "erc721", - outputs: [ - { - internalType: "contract IERC721", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "contract IERC721", - name: "erc721", - type: "address", - }, - { - internalType: "uint256[8]", - name: "tierValues", - type: "uint256[8]", - }, - ], - internalType: "struct ERC721BalanceTierConfig", - name: "config_", - type: "tuple", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "account_", - type: "address", - }, - ], - name: "report", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "setTier", - outputs: [], - stateMutability: "pure", - type: "function", - }, - { - inputs: [], - name: "tierValues", - outputs: [ - { - internalType: "uint256[8]", - name: "tierValues_", - type: "uint256[8]", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b50610e38806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063a61e331511610050578063a61e33151461009f578063bca6ce64146100b2578063e053ea31146100f757600080fd5b806370230b391461006c5780638a200fff1461008a575b600080fd5b610074610118565b60405161008191906109fd565b60405180910390f35b61009d610098366004610a54565b61015a565b005b61009d6100ad366004610b36565b6101c1565b6001546100d29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610081565b61010a610105366004610bd4565b610309565b604051908152602001610081565b6101206109de565b6000546101429073ffffffffffffffffffffffffffffffffffffffff166103bf565b8060200190518101906101559190610bf1565b905090565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101cd60016103ed565b9050801561021657600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b61022382602001516105b7565b8151600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff90921691821790556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a1801561030557600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006103b960006103b461031b610118565b6001546040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8881166004830152909116906370a0823190602401602060405180830381865afa15801561038b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103af9190610c52565b610750565b61079e565b92915050565b60606103b98260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61083e565b600080547501000000000000000000000000000000000000000000900460ff16156104b8578160ff1660011480156104245750303b155b6104b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000919050565b60005460ff808416740100000000000000000000000000000000000000009092041610610567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016101b8565b506000805460ff90921674010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff909216919091179055600190565b60005473ffffffffffffffffffffffffffffffffffffffff16156105dd576105dd610c6b565b6000805b600881101561068b57818382600881106105fd576105fd610c9a565b6020020151101561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c554553000000000000000060448201526064016101b8565b82816008811061067c5761067c610c9a565b602002015191506001016105e1565b505060006106b7826040516020016106a391906109fd565b604051602081830303815290604052610927565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b6000805b60088110156107945783816008811061076f5761076f610c9a565b60200201518310156107825790506103b9565b8061078c81610cc9565b915050610754565b5060089392505050565b600081600881111561080c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101b8565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b6060833b8061085d575050604080516020810190915260008152610920565b8084111561087b575050604080516020810190915260008152610920565b838310156108c6576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101b8565b83830384820360008282106108db57826108dd565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6000806109528360405160200161093e9190610d64565b6040516020818303038152906040526109b2565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166109ac576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109c8929190610d77565b6040516020818303038152906040529050919050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b6008811015610a26578151835260209283019290910190600101610a07565b50505092915050565b73ffffffffffffffffffffffffffffffffffffffff81168114610a5157600080fd5b50565b60008060008060608587031215610a6a57600080fd5b8435610a7581610a2f565b935060208501359250604085013567ffffffffffffffff80821115610a9957600080fd5b818701915087601f830112610aad57600080fd5b813581811115610abc57600080fd5b886020828501011115610ace57600080fd5b95989497505060200194505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610100810167ffffffffffffffff81118282101715610b3057610b30610add565b60405290565b6000610120808385031215610b4a57600080fd5b6040516040810181811067ffffffffffffffff82111715610b6d57610b6d610add565b6040528335610b7b81610a2f565b81526020603f85018613610b8e57600080fd5b610b96610b0c565b928501928087851115610ba857600080fd5b8287015b85811015610bc35780358352918301918301610bac565b509183019190915250949350505050565b600060208284031215610be657600080fd5b813561092081610a2f565b6000610100808385031215610c0557600080fd5b83601f840112610c1457600080fd5b610c1c610b0c565b908301908085831115610c2e57600080fd5b845b83811015610c48578051835260209283019201610c30565b5095945050505050565b600060208284031215610c6457600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000815160005b81811015610d4a5760208185018101518683015201610d30565b81811115610d59576000828601525b509290920192915050565b6000815260006109206001830184610d29565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610dfa600e830184610d29565b94935050505056fea26469706673582212201df98fdc602f8856c1708b5ffdd62deded81c2448096f94f1688be17793f49ca64736f6c634300080a0033"; - -type ERC721BalanceTierConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC721BalanceTierConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC721BalanceTier__factory extends ContractFactory { - constructor(...args: ERC721BalanceTierConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC721BalanceTier { - return super.attach(address) as ERC721BalanceTier; - } - connect(signer: Signer): ERC721BalanceTier__factory { - return super.connect(signer) as ERC721BalanceTier__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC721BalanceTierInterface { - return new utils.Interface(_abi) as ERC721BalanceTierInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC721BalanceTier { - return new Contract(address, _abi, signerOrProvider) as ERC721BalanceTier; - } -} diff --git a/src/typechain/factories/ERC721Upgradeable__factory.ts b/src/typechain/factories/ERC721Upgradeable__factory.ts deleted file mode 100644 index 9a017d9..0000000 --- a/src/typechain/factories/ERC721Upgradeable__factory.ts +++ /dev/null @@ -1,404 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC721Upgradeable, - ERC721UpgradeableInterface, -} from "../ERC721Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - 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: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "_data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea26469706673582212206d6095494c27553541fe0f0e51f0544e9a2d2bf8f3d6c40b03226902630ce7cb64736f6c634300080a0033"; - -type ERC721UpgradeableConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC721UpgradeableConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC721Upgradeable__factory extends ContractFactory { - constructor(...args: ERC721UpgradeableConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC721Upgradeable { - return super.attach(address) as ERC721Upgradeable; - } - connect(signer: Signer): ERC721Upgradeable__factory { - return super.connect(signer) as ERC721Upgradeable__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC721UpgradeableInterface { - return new utils.Interface(_abi) as ERC721UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC721Upgradeable { - return new Contract(address, _abi, signerOrProvider) as ERC721Upgradeable; - } -} diff --git a/src/typechain/factories/EmissionsERC20Factory__factory.ts b/src/typechain/factories/EmissionsERC20Factory__factory.ts index cb44918..82db14b 100644 --- a/src/typechain/factories/EmissionsERC20Factory__factory.ts +++ b/src/typechain/factories/EmissionsERC20Factory__factory.ts @@ -182,7 +182,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b5060405161556038038061556083398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b61441f8061114183390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b60805161101c6101256000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea26469706673582212209f65a41570658ac1f0f4abdb0a2bda6ab42551c57e053451abc34af8e43b09a864736f6c634300080a003360c06040523480156200001157600080fd5b506040516200441f3803806200441f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161437d620000a26000396000610894015260006108bb015261437d6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806395d89b41116100cd578063dd62ed3e11610081578063e053ea3111610066578063e053ea3114610320578063ea34554014610356578063f2cd6c081461036957600080fd5b8063dd62ed3e146102a2578063e0419ae3146102e857600080fd5b8063a457c2d7116100b2578063a457c2d714610269578063a9059cbb1461027c578063bb1757cf1461028f57600080fd5b806395d89b411461024e5780639a8d2ac81461025657600080fd5b8063313ce5671161012457806367676b111161010957806367676b11146101de57806370a08231146102035780638a200fff1461023957600080fd5b8063313ce567146101bc57806339509351146101cb57600080fd5b806306fdde0314610156578063095ea7b31461017457806318160ddd1461019757806323b872dd146101a9575b600080fd5b61015e6104f6565b60405161016b9190613593565b60405180910390f35b6101876101823660046135c8565b610588565b604051901515815260200161016b565b6035545b60405190815260200161016b565b6101876101b73660046135f4565b6105a2565b6040516012815260200161016b565b6101876101d93660046135c8565b6105c8565b6065546101879074010000000000000000000000000000000000000000900460ff1681565b61019b610211366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61024c61024736600461369b565b610614565b005b61015e61067b565b61024c6102643660046136f7565b61068a565b6101876102773660046135c8565b610ad8565b61018761028a3660046135c8565b610bb4565b61024c61029d366004613732565b610bc2565b61019b6102b0366004613787565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60408051808201825260008082526020918201819052825180840184528181528201818152835191825251918101919091520161016b565b61019b61032e366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b61019b610364366004613635565b610d68565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261215360e082015261215e61010082015261216961012082015261217461014082015261217f6101608201526121f26101808201526122586101a08201526122986101c08201526122cc6101e08201526123006102008201526123476102208201526123a46102408201526123dd61026082015261241b61028082015261246d6102a08201526124ca6102c08201526124fe6102e08201526125326103008201526125646103208201526125966103408201526125c86103608201526125f56103808201526126506103a08201526126a66103c08201526126fd6103e08201526127546104008201526127886104208201526127b26104408201526128996104608201526128f56104808201526129716104a0820152612a2b6104c08201819052612ad56104e0830152610500820152612b55610520820152612c5d610540820152612d7b61056080830191909152815261015e565b606060368054610505906137c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906137c0565b801561057e5780601f106105535761010080835404028352916020019161057e565b820191906000526020600020905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b600033610596818585610e1d565b60019150505b92915050565b6000336105b0858285610fd0565b6105bb8585856110a7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610596908290869061060f90879061383d565b610e1d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b606060378054610505906137c0565b6000610696600161135a565b905080156106cb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61076f6106db6020840184613855565b6106e59080613893565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610727925050506020850185613855565b610735906020810190613893565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e092505050565b6107a661077f6020840184613855565b610790906060810190604001613635565b61079d6020850185613855565b60600135611581565b6107e66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108476040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610807579050509050818160008151811061087057610870613927565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108e76040890189613956565b856040518463ffffffff1660e01b815260040161090693929190613b02565b6000604051808303816000875af1158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096b9190810190613cb4565b9050610976816116a1565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109c86020860186613d5d565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790557f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a3533610a3f6020880188613d5d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301520160405180910390a15050508015610ad457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610672565b610ba98286868403610e1d565b506001949350505050565b6000336105968185856110a7565b60655474010000000000000000000000000000000000000000900460ff16610c63573373ffffffffffffffffffffffffffffffffffffffff841614610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610672565b6000610c6e84610d68565b9050610c7a8482611581565b610ca87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361172c565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4333858585604051610d5a9493929190613d7f565b60405180910390a150505050565b6065546000908190610d9890610d939073ffffffffffffffffffffffffffffffffffffffff166117d2565b611800565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610de78284600061196c565b5060208301518351610dfb90600190613db9565b81518110610e0b57610e0b613927565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8216610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110a15781811015611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610672565b6110a18484848403610e1d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff82166111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906112e790849061383d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134d91815260200190565b60405180910390a36110a1565b60008054610100900460ff1615611411578160ff16600114801561137d5750303b155b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b506000919050565b60005460ff8084169116106114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600054610100900460ff16611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b610ad48282611c45565b73ffffffffffffffffffffffffffffffffffffffff82166115fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610672565b8060356000828254611610919061383d565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061164a90849061383d565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116cc836040516020016116b89190613dd0565b604051602081830303815290604052611d03565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611726576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600082600881111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b6000855b858110156117c65763ffffffff6020820290811b199890981685891b1797915060010161179e565b50959695505050505050565b606061059c8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d2f565b6118326040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118646040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611898576118986138f8565b6040519080825280602002602001820160405280156118c1578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156118f8576118f86138f8565b604051908082528060200260200182016040528015611921578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561195b578160208202602001840152815160200182019150600181019050611934565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c28576003890198508886015180601f1a975061ffff8160081c169850506006881015611ba057876119ef57866020028401518252602082019150611bb3565b6001881415611a0c57602087028301518252602082019150611bb3565b6002881415611a99578c518760200210611a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610672565b866020026020018d01518252602082019150611bb3565b6003881415611ae1576000611acf6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611bb3565b6004881415611afd57611af68d8d848a611e17565b9150611bb3565b606087611b2b578c604051602001611b159190613e26565b6040516020818303038152906040529050611b8a565b6001881415611b4457611b3d8d611f84565b9050611b8a565b6002881415611b60576020808e0151604051611b159201613efc565b6003881415611b8a578c516040805160208101929092520160405160208183030381529060405290505b805115611b9a57611b9a816120c1565b50611bb3565b87611baf888463ffffffff8416565b9250505b60208c0151518c511115611c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610672565b6119aa565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b8151611cef906036906020850190613484565b508051611c40906037906020840190613484565b6060815182604051602001611d19929190613f61565b6040516020818303038152906040529050919050565b6060833b80611d4e5750506040805160208101909152600081526105c1565b80841115611d6c5750506040805160208101909152600081526105c1565b83831015611db7576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610672565b8383038482036000828210611dcc5782611dce565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611e5657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ea1565b8260011415611e7a57506fffffffffffffffffffffffffffffffff90506080611ea1565b8260021415611e96575067ffffffffffffffff90506040611ea1565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611ec457611ec46138f8565b604051908082528060200260200182016040528015611eed578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f14578151815260209182019101611efc565b505060608b015160808c015160209081029091010160005b610100811015611f725760208502830182845b82811015611f5b578051841c8a16825260209182019101611f3f565b505050611f698e8e8b61196c565b9b508501611f2c565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611fd09190613efc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261200c9291602001613ff8565b604051602081830303815290604052905060005b8560400151518110156120b857818660400151828151811061204457612044613927565b60200260200101515160001b8760400151838151811061206657612066613927565b60200260200101516040516020016120809392919061401e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612020565b50949350505050565b612150816040516024016120d59190613593565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612f78565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e5826121df858a612f99565b9061301a565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e582612252858a612f99565b90613039565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c8287612f99565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c828761304e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c82876130ac565b600060208302820380516000602083015b85811015612339578051830191508282101561232c57600080fd5b9091508190602001612311565b505081526020019392505050565b6020828102820380516000928201835b858210801561238557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156123395750805160209091019061239d83826130f7565b9250612357565b600060208302820380516000602083015b8581101561233957805183039150828211156123d057600080fd5b90915081906020016123b5565b6020828102820380516000928201835b85821080156123fc5750826000105b15612339575080516020909101906124148382613133565b92506123ed565b60006020830282038051600080602084015b8681101561245e57831561245657805192508284029150828483041461245257600080fd5b8193505b60200161242d565b50505081526020019392505050565b6020828102820380516000928201835b85821080156124ab57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612339575080516020909101906124c38382613149565b925061247d565b600060208302820380516000602083015b858110156123395780519150816124f157600080fd5b91819004916020016124db565b600060208302820380516000602083015b8581101561233957805191508161252557600080fd5b918190069160200161250f565b6020828102820380516000928201835b858210156123395750805160209091019061255d8184614175565b9250612542565b6020828102820380516000928201835b85821015612339575080518281101561258b578092505b602082019150612574565b6020828102820380516000928201835b8582101561233957508051828111156125bd578092505b6020820191506125a6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561277d578051612775576000825261277d565b60200161275e565b506020019392505050565b6000602083028203805b8381101561277d57805180156127a957825261277d565b50602001612792565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e59190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e58383613178565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856129628585858561172c565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561299f5761299f6138f8565b6040519080825280602002602001820160405280156129c8578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612a04578151816020018601526020820191506020810190506129e2565b50505190506000612a17838389896131d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612858565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228c9190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3a919061419a565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6d9190614181565b909452509395945050505050565b60008060008467ffffffffffffffff811115612d9957612d996138f8565b604051908082528060200260200182016040528015612dc2578160200160208202803683370190505b50905060008567ffffffffffffffff811115612de057612de06138f8565b604051908082528060200260200182016040528015612e09578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e5e578251815260209283019201612e46565b5050602088028101602084015b81831015612e83578251815260209283019201612e6b565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612edd90879087906004016141b7565b600060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f40919081019061421a565b9050846020820160208a0281015b80821015612f69578151835260209283019290910190612f4e565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415612fae578391505061059c565b8260121115612fda57506012829003612fc881600a614175565b612fd290856142c0565b91505061059c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161300981600a614175565b612fd290856142fd565b5092915050565b6000670de0b6b3a764000061302f83856142c0565b6105c191906142fd565b60008161302f670de0b6b3a7640000856142c0565b6000806012831415613063578391505061059c565b826012111561307d5750601282900361300981600a614175565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612fc881600a614175565b600081810b6130bc57508161059c565b60008260000b13156130e4576130d382600a614338565b6130dd90846142c0565b905061059c565b60ff60008390031661300981600a614175565b6000828201838110613109578061312b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116131435760006105c1565b50900390565b6000826131585750600061059c565b8282028284828161316b5761316b613f32565b041415613109578061312b565b60008060015b600881116131cf5760006131928683613327565b905060006131a08684613327565b905060006131ae8383613133565b90506131be8560018603836133d4565b9450506001909201915061317e9050565b509392505050565b835160009081908190819060015b600881116133195760009250828761321e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613222565b5060005b60005b838110156132d7576132508c828151811061324257613242613927565b602002602001015184613327565b95508a86116132a2578861326f57613268868361345e565b9150613299565b6001891415613282576132688683613474565b600289148015613290575084155b15613299578591505b600194506132cf565b896132cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506132d7565b600101613225565b508361330057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61330e8660018403836133d4565b9550506001016131e5565b509298975050505050505050565b6000816008811115613395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b826133a35760009150613013565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b505060209190910290811b63ffffffff90911b19919091161790565b600081831061346d57816105c1565b5090919050565b60008183101561346d57816105c1565b828054613490906137c0565b90600052602060002090601f0160209004810192826134b257600085556134f8565b82601f106134cb57805160ff19168380011785556134f8565b828001600101855582156134f8579182015b828111156134f85782518255916020019190600101906134dd565b50613504929150613508565b5090565b5b808211156135045760008155600101613509565b60005b83811015613538578181015183820152602001613520565b838111156110a15750506000910152565b6000815180845261356181602086016020860161351d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105c16020830184613549565b73ffffffffffffffffffffffffffffffffffffffff8116811461215057600080fd5b600080604083850312156135db57600080fd5b82356135e6816135a6565b946020939093013593505050565b60008060006060848603121561360957600080fd5b8335613614816135a6565b92506020840135613624816135a6565b929592945050506040919091013590565b60006020828403121561364757600080fd5b81356105c1816135a6565b60008083601f84011261366457600080fd5b50813567ffffffffffffffff81111561367c57600080fd5b60208301915083602082850101111561369457600080fd5b9250929050565b600080600080606085870312156136b157600080fd5b84356136bc816135a6565b935060208501359250604085013567ffffffffffffffff8111156136df57600080fd5b6136eb87828801613652565b95989497509550505050565b60006020828403121561370957600080fd5b813567ffffffffffffffff81111561372057600080fd5b8201606081850312156105c157600080fd5b60008060006040848603121561374757600080fd5b8335613752816135a6565b9250602084013567ffffffffffffffff81111561376e57600080fd5b61377a86828701613652565b9497909650939450505050565b6000806040838503121561379a57600080fd5b82356137a5816135a6565b915060208301356137b5816135a6565b809150509250929050565b600181811c908216806137d457607f821691505b60208210811415611726577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156138505761385061380e565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261388957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138c857600080fd5b83018035915067ffffffffffffffff8211156138e357600080fd5b60200191503681900382131561369457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261388957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126139bf57600080fd5b830160208101925035905067ffffffffffffffff8111156139df57600080fd5b8060051b360383131561369457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613a6c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015613af757815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101613a9d565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301613b33868761398a565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015613bfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112613bb457600080fd5b8501803567ffffffffffffffff811115613bcd57600080fd5b803603871315613bdc57600080fd5b613be988828b85016139f1565b975050509186019190860190600101613b53565b5050505050613c0e8287018761398a565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613c45828483613a3a565b925050508281036040840152613c5b8185613a89565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cac57613cac6138f8565b604052919050565b600060208284031215613cc657600080fd5b815167ffffffffffffffff80821115613cde57600080fd5b818401915084601f830112613cf257600080fd5b815181811115613d0457613d046138f8565b613d3560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c65565b9150808252856020828501011115613d4c57600080fd5b6120b881602084016020860161351d565b600060208284031215613d6f57600080fd5b813580151581146105c157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152613c5b6060830184866139f1565b600082821015613dcb57613dcb61380e565b500390565b6000815260008251613de981600185016020870161351d565b9190910160010192915050565b600081518084526020808501945080840160005b83811015613af757815187529582019590820190600101613e0a565b600060208083528351818401528084015160a06040850152613e4b60c0850182613df6565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015613ec45784878303018452613eb2828751613549565b95880195938801939150600101613e98565b5060608a01519650838982030160808a0152613ee08188613df6565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015613f2657815185529382019390820190600101613f0a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613fea81600e85016020870161351d565b91909101600e019392505050565b8281526000825161401081602085016020870161351d565b919091016020019392505050565b6000845161403081846020890161351d565b8201848152835161404881602080850190880161351d565b0160200195945050505050565b600181815b808511156140ae57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156140945761409461380e565b808516156140a157918102915b93841c939080029061405a565b509250929050565b6000826140c55750600161059c565b816140d25750600061059c565b81600181146140e857600281146140f25761410e565b600191505061059c565b60ff8411156141035761410361380e565b50506001821b61059c565b5060208310610133831016604e8410600b8410161715614131575081810a61059c565b61413b8383614055565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561416d5761416d61380e565b029392505050565b60006105c183836140b6565b60006020828403121561419357600080fd5b5051919050565b6000602082840312156141ac57600080fd5b81516105c1816135a6565b604080825283519082018190526000906020906060840190828701845b8281101561420657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016141d4565b50505083810382850152613c5b8186613df6565b6000602080838503121561422d57600080fd5b825167ffffffffffffffff8082111561424557600080fd5b818501915085601f83011261425957600080fd5b81518181111561426b5761426b6138f8565b8060051b915061427c848301613c65565b818152918301840191848101908884111561429657600080fd5b938501935b838510156142b45784518252938501939085019061429b565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f8576142f861380e565b500290565b600082614333577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006105c160ff8416836140b656fea264697066735822122059380f529cfa2de509d5e04383eec1f4f77c87f8c186c3c99f7a53c8a890ad5564736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b5060405162005b4838038062005b48833981016040819052610031916100d7565b600160009081556040518290610046906100c9565b6001600160a01b039091168152602001604051809103906000f080158015610072573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610107565b614a03806200114583390190565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b60805161101c620001296000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea264697066735822122092db2cc19742fd6f43f56df92b02c0c21b66b182e3062b7265698b8ff346a4ac64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212207b4beb1aa0ffca5ba829d07a348772f9b306347d84c216e6fb1f6034ca844d5e64736f6c634300080a0033"; type EmissionsERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20__factory.ts b/src/typechain/factories/EmissionsERC20__factory.ts index e1037fa..512eead 100644 --- a/src/typechain/factories/EmissionsERC20__factory.ts +++ b/src/typechain/factories/EmissionsERC20__factory.ts @@ -106,10 +106,61 @@ const _abi = [ type: "address", }, { + components: [ + { + internalType: "bool", + name: "allowDelegatedClaims", + type: "bool", + }, + { + components: [ + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + { + internalType: "address", + name: "distributor", + type: "address", + }, + { + internalType: "uint256", + name: "initialSupply", + type: "uint256", + }, + ], + internalType: "struct ERC20Config", + name: "erc20Config", + type: "tuple", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "vmStateConfig", + type: "tuple", + }, + ], indexed: false, - internalType: "bool", - name: "allowDelegatedClaims", - type: "bool", + internalType: "struct EmissionsERC20Config", + name: "config", + type: "tuple", }, ], name: "Initialize", @@ -128,43 +179,6 @@ const _abi = [ name: "Initialized", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "TierChange", - type: "event", - }, { anonymous: false, inputs: [ @@ -465,6 +479,11 @@ const _abi = [ name: "account_", type: "address", }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, ], name: "report", outputs: [ @@ -481,23 +500,29 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "account_", type: "address", }, { internalType: "uint256", - name: "", + name: "tier_", type: "uint256", }, { - internalType: "bytes", + internalType: "uint256[]", name: "", - type: "bytes", + type: "uint256[]", }, ], - name: "setTier", - outputs: [], - stateMutability: "pure", + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", type: "function", }, { @@ -525,6 +550,25 @@ const _abi = [ stateMutability: "pure", type: "function", }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [], name: "symbol", @@ -607,7 +651,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200441f3803806200441f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161437d620000a26000396000610894015260006108bb015261437d6000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c806395d89b41116100cd578063dd62ed3e11610081578063e053ea3111610066578063e053ea3114610320578063ea34554014610356578063f2cd6c081461036957600080fd5b8063dd62ed3e146102a2578063e0419ae3146102e857600080fd5b8063a457c2d7116100b2578063a457c2d714610269578063a9059cbb1461027c578063bb1757cf1461028f57600080fd5b806395d89b411461024e5780639a8d2ac81461025657600080fd5b8063313ce5671161012457806367676b111161010957806367676b11146101de57806370a08231146102035780638a200fff1461023957600080fd5b8063313ce567146101bc57806339509351146101cb57600080fd5b806306fdde0314610156578063095ea7b31461017457806318160ddd1461019757806323b872dd146101a9575b600080fd5b61015e6104f6565b60405161016b9190613593565b60405180910390f35b6101876101823660046135c8565b610588565b604051901515815260200161016b565b6035545b60405190815260200161016b565b6101876101b73660046135f4565b6105a2565b6040516012815260200161016b565b6101876101d93660046135c8565b6105c8565b6065546101879074010000000000000000000000000000000000000000900460ff1681565b61019b610211366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61024c61024736600461369b565b610614565b005b61015e61067b565b61024c6102643660046136f7565b61068a565b6101876102773660046135c8565b610ad8565b61018761028a3660046135c8565b610bb4565b61024c61029d366004613732565b610bc2565b61019b6102b0366004613787565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60408051808201825260008082526020918201819052825180840184528181528201818152835191825251918101919091520161016b565b61019b61032e366004613635565b73ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b61019b610364366004613635565b610d68565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261215360e082015261215e61010082015261216961012082015261217461014082015261217f6101608201526121f26101808201526122586101a08201526122986101c08201526122cc6101e08201526123006102008201526123476102208201526123a46102408201526123dd61026082015261241b61028082015261246d6102a08201526124ca6102c08201526124fe6102e08201526125326103008201526125646103208201526125966103408201526125c86103608201526125f56103808201526126506103a08201526126a66103c08201526126fd6103e08201526127546104008201526127886104208201526127b26104408201526128996104608201526128f56104808201526129716104a0820152612a2b6104c08201819052612ad56104e0830152610500820152612b55610520820152612c5d610540820152612d7b61056080830191909152815261015e565b606060368054610505906137c0565b80601f0160208091040260200160405190810160405280929190818152602001828054610531906137c0565b801561057e5780601f106105535761010080835404028352916020019161057e565b820191906000526020600020905b81548152906001019060200180831161056157829003601f168201915b5050505050905090565b600033610596818585610e1d565b60019150505b92915050565b6000336105b0858285610fd0565b6105bb8585856110a7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610596908290869061060f90879061383d565b610e1d565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b606060378054610505906137c0565b6000610696600161135a565b905080156106cb57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61076f6106db6020840184613855565b6106e59080613893565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610727925050506020850185613855565b610735906020810190613893565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506114e092505050565b6107a661077f6020840184613855565b610790906060810190604001613635565b61079d6020850185613855565b60600135611581565b6107e66040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108476040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610807579050509050818160008151811061087057610870613927565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108e76040890189613956565b856040518463ffffffff1660e01b815260040161090693929190613b02565b6000604051808303816000875af1158015610925573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261096b9190810190613cb4565b9050610976816116a1565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109c86020860186613d5d565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790557f274e8c1392a7530676d21ea0d455c78fd0b51f79881c266f3cf836806d261a3533610a3f6020880188613d5d565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835290151560208301520160405180910390a15050508015610ad457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610672565b610ba98286868403610e1d565b506001949350505050565b6000336105968185856110a7565b60655474010000000000000000000000000000000000000000900460ff16610c63573373ffffffffffffffffffffffffffffffffffffffff841614610c63576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610672565b6000610c6e84610d68565b9050610c7a8482611581565b610ca87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084361172c565b73ffffffffffffffffffffffffffffffffffffffff85166000818152606660209081526040808320949094558351338152908101929092528183018190526008606083015260a06080830181905282015290517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89181900360c00190a17fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4333858585604051610d5a9493929190613d7f565b60405180910390a150505050565b6065546000908190610d9890610d939073ffffffffffffffffffffffffffffffffffffffff166117d2565b611800565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610de78284600061196c565b5060208301518351610dfb90600190613db9565b81518110610e0b57610e0b613927565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8216610f62576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110a15781811015611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610672565b6110a18484848403610e1d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661114a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff82166111ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610672565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906112e790849061383d565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161134d91815260200190565b60405180910390a36110a1565b60008054610100900460ff1615611411578160ff16600114801561137d5750303b155b611409576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b506000919050565b60005460ff8084169116106114a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610672565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600054610100900460ff16611577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b610ad48282611c45565b73ffffffffffffffffffffffffffffffffffffffff82166115fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610672565b8060356000828254611610919061383d565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061164a90849061383d565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116cc836040516020016116b89190613dd0565b604051602081830303815290604052611d03565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611726576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600082600881111561179a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b6000855b858110156117c65763ffffffff6020820290811b199890981685891b1797915060010161179e565b50959695505050505050565b606061059c8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d2f565b6118326040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118646040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611898576118986138f8565b6040519080825280602002602001820160405280156118c1578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156118f8576118f86138f8565b604051908082528060200260200182016040528015611921578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561195b578160208202602001840152815160200182019150600181019050611934565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c28576003890198508886015180601f1a975061ffff8160081c169850506006881015611ba057876119ef57866020028401518252602082019150611bb3565b6001881415611a0c57602087028301518252602082019150611bb3565b6002881415611a99578c518760200210611a82576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610672565b866020026020018d01518252602082019150611bb3565b6003881415611ae1576000611acf6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611bb3565b6004881415611afd57611af68d8d848a611e17565b9150611bb3565b606087611b2b578c604051602001611b159190613e26565b6040516020818303038152906040529050611b8a565b6001881415611b4457611b3d8d611f84565b9050611b8a565b6002881415611b60576020808e0151604051611b159201613efc565b6003881415611b8a578c516040805160208101929092520160405160208183030381529060405290505b805115611b9a57611b9a816120c1565b50611bb3565b87611baf888463ffffffff8416565b9250505b60208c0151518c511115611c23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610672565b6119aa565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611cdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610672565b8151611cef906036906020850190613484565b508051611c40906037906020840190613484565b6060815182604051602001611d19929190613f61565b6040516020818303038152906040529050919050565b6060833b80611d4e5750506040805160208101909152600081526105c1565b80841115611d6c5750506040805160208101909152600081526105c1565b83831015611db7576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610672565b8383038482036000828210611dcc5782611dce565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611e5657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ea1565b8260011415611e7a57506fffffffffffffffffffffffffffffffff90506080611ea1565b8260021415611e96575067ffffffffffffffff90506040611ea1565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611ec457611ec46138f8565b604051908082528060200260200182016040528015611eed578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f14578151815260209182019101611efc565b505060608b015160808c015160209081029091010160005b610100811015611f725760208502830182845b82811015611f5b578051841c8a16825260209182019101611f3f565b505050611f698e8e8b61196c565b9b508501611f2c565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611fd09190613efc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261200c9291602001613ff8565b604051602081830303815290604052905060005b8560400151518110156120b857818660400151828151811061204457612044613927565b60200260200101515160001b8760400151838151811061206657612066613927565b60200260200101516040516020016120809392919061401e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612020565b50949350505050565b612150816040516024016120d59190613593565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612f78565b50565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e5826121df858a612f99565b9061301a565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e582612252858a612f99565b90613039565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c8287612f99565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c828761304e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261228c82876130ac565b600060208302820380516000602083015b85811015612339578051830191508282101561232c57600080fd5b9091508190602001612311565b505081526020019392505050565b6020828102820380516000928201835b858210801561238557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156123395750805160209091019061239d83826130f7565b9250612357565b600060208302820380516000602083015b8581101561233957805183039150828211156123d057600080fd5b90915081906020016123b5565b6020828102820380516000928201835b85821080156123fc5750826000105b15612339575080516020909101906124148382613133565b92506123ed565b60006020830282038051600080602084015b8681101561245e57831561245657805192508284029150828483041461245257600080fd5b8193505b60200161242d565b50505081526020019392505050565b6020828102820380516000928201835b85821080156124ab57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612339575080516020909101906124c38382613149565b925061247d565b600060208302820380516000602083015b858110156123395780519150816124f157600080fd5b91819004916020016124db565b600060208302820380516000602083015b8581101561233957805191508161252557600080fd5b918190069160200161250f565b6020828102820380516000928201835b858210156123395750805160209091019061255d8184614175565b9250612542565b6020828102820380516000928201835b85821015612339575080518281101561258b578092505b602082019150612574565b6020828102820380516000928201835b8582101561233957508051828111156125bd578092505b6020820191506125a6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561277d578051612775576000825261277d565b60200161275e565b506020019392505050565b6000602083028203805b8381101561277d57805180156127a957825261277d565b50602001612792565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612875573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e59190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836121e58383613178565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856129628585858561172c565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561299f5761299f6138f8565b6040519080825280602002602001820160405280156129c8578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612a04578151816020018601526020820191506020810190506129e2565b50505190506000612a17838389896131d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612858565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b31573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061228c9190614181565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c3a919061419a565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015612d49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6d9190614181565b909452509395945050505050565b60008060008467ffffffffffffffff811115612d9957612d996138f8565b604051908082528060200260200182016040528015612dc2578160200160208202803683370190505b50905060008567ffffffffffffffff811115612de057612de06138f8565b604051908082528060200260200182016040528015612e09578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e5e578251815260209283019201612e46565b5050602088028101602084015b81831015612e83578251815260209283019201612e6b565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612edd90879087906004016141b7565b600060405180830381865afa158015612efa573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f40919081019061421a565b9050846020820160208a0281015b80821015612f69578151835260209283019290910190612f4e565b50909998505050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415612fae578391505061059c565b8260121115612fda57506012829003612fc881600a614175565b612fd290856142c0565b91505061059c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161300981600a614175565b612fd290856142fd565b5092915050565b6000670de0b6b3a764000061302f83856142c0565b6105c191906142fd565b60008161302f670de0b6b3a7640000856142c0565b6000806012831415613063578391505061059c565b826012111561307d5750601282900361300981600a614175565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612fc881600a614175565b600081810b6130bc57508161059c565b60008260000b13156130e4576130d382600a614338565b6130dd90846142c0565b905061059c565b60ff60008390031661300981600a614175565b6000828201838110613109578061312b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116131435760006105c1565b50900390565b6000826131585750600061059c565b8282028284828161316b5761316b613f32565b041415613109578061312b565b60008060015b600881116131cf5760006131928683613327565b905060006131a08684613327565b905060006131ae8383613133565b90506131be8560018603836133d4565b9450506001909201915061317e9050565b509392505050565b835160009081908190819060015b600881116133195760009250828761321e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613222565b5060005b60005b838110156132d7576132508c828151811061324257613242613927565b602002602001015184613327565b95508a86116132a2578861326f57613268868361345e565b9150613299565b6001891415613282576132688683613474565b600289148015613290575084155b15613299578591505b600194506132cf565b896132cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506132d7565b600101613225565b508361330057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61330e8660018403836133d4565b9550506001016131e5565b509298975050505050505050565b6000816008811115613395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b826133a35760009150613013565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610672565b505060209190910290811b63ffffffff90911b19919091161790565b600081831061346d57816105c1565b5090919050565b60008183101561346d57816105c1565b828054613490906137c0565b90600052602060002090601f0160209004810192826134b257600085556134f8565b82601f106134cb57805160ff19168380011785556134f8565b828001600101855582156134f8579182015b828111156134f85782518255916020019190600101906134dd565b50613504929150613508565b5090565b5b808211156135045760008155600101613509565b60005b83811015613538578181015183820152602001613520565b838111156110a15750506000910152565b6000815180845261356181602086016020860161351d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105c16020830184613549565b73ffffffffffffffffffffffffffffffffffffffff8116811461215057600080fd5b600080604083850312156135db57600080fd5b82356135e6816135a6565b946020939093013593505050565b60008060006060848603121561360957600080fd5b8335613614816135a6565b92506020840135613624816135a6565b929592945050506040919091013590565b60006020828403121561364757600080fd5b81356105c1816135a6565b60008083601f84011261366457600080fd5b50813567ffffffffffffffff81111561367c57600080fd5b60208301915083602082850101111561369457600080fd5b9250929050565b600080600080606085870312156136b157600080fd5b84356136bc816135a6565b935060208501359250604085013567ffffffffffffffff8111156136df57600080fd5b6136eb87828801613652565b95989497509550505050565b60006020828403121561370957600080fd5b813567ffffffffffffffff81111561372057600080fd5b8201606081850312156105c157600080fd5b60008060006040848603121561374757600080fd5b8335613752816135a6565b9250602084013567ffffffffffffffff81111561376e57600080fd5b61377a86828701613652565b9497909650939450505050565b6000806040838503121561379a57600080fd5b82356137a5816135a6565b915060208301356137b5816135a6565b809150509250929050565b600181811c908216806137d457607f821691505b60208210811415611726577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156138505761385061380e565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261388957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126138c857600080fd5b83018035915067ffffffffffffffff8211156138e357600080fd5b60200191503681900382131561369457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261388957600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126139bf57600080fd5b830160208101925035905067ffffffffffffffff8111156139df57600080fd5b8060051b360383131561369457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115613a6c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015613af757815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101613a9d565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301613b33868761398a565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015613bfd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112613bb457600080fd5b8501803567ffffffffffffffff811115613bcd57600080fd5b803603871315613bdc57600080fd5b613be988828b85016139f1565b975050509186019190860190600101613b53565b5050505050613c0e8287018761398a565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613c45828483613a3a565b925050508281036040840152613c5b8185613a89565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613cac57613cac6138f8565b604052919050565b600060208284031215613cc657600080fd5b815167ffffffffffffffff80821115613cde57600080fd5b818401915084601f830112613cf257600080fd5b815181811115613d0457613d046138f8565b613d3560207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613c65565b9150808252856020828501011115613d4c57600080fd5b6120b881602084016020860161351d565b600060208284031215613d6f57600080fd5b813580151581146105c157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152613c5b6060830184866139f1565b600082821015613dcb57613dcb61380e565b500390565b6000815260008251613de981600185016020870161351d565b9190910160010192915050565b600081518084526020808501945080840160005b83811015613af757815187529582019590820190600101613e0a565b600060208083528351818401528084015160a06040850152613e4b60c0850182613df6565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015613ec45784878303018452613eb2828751613549565b95880195938801939150600101613e98565b5060608a01519650838982030160808a0152613ee08188613df6565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b83811015613f2657815185529382019390820190600101613f0a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613fea81600e85016020870161351d565b91909101600e019392505050565b8281526000825161401081602085016020870161351d565b919091016020019392505050565b6000845161403081846020890161351d565b8201848152835161404881602080850190880161351d565b0160200195945050505050565b600181815b808511156140ae57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156140945761409461380e565b808516156140a157918102915b93841c939080029061405a565b509250929050565b6000826140c55750600161059c565b816140d25750600061059c565b81600181146140e857600281146140f25761410e565b600191505061059c565b60ff8411156141035761410361380e565b50506001821b61059c565b5060208310610133831016604e8410600b8410161715614131575081810a61059c565b61413b8383614055565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561416d5761416d61380e565b029392505050565b60006105c183836140b6565b60006020828403121561419357600080fd5b5051919050565b6000602082840312156141ac57600080fd5b81516105c1816135a6565b604080825283519082018190526000906020906060840190828701845b8281101561420657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016141d4565b50505083810382850152613c5b8186613df6565b6000602080838503121561422d57600080fd5b825167ffffffffffffffff8082111561424557600080fd5b818501915085601f83011261425957600080fd5b81518181111561426b5761426b6138f8565b8060051b915061427c848301613c65565b818152918301840191848101908884111561429657600080fd5b938501935b838510156142b45784518252938501939085019061429b565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142f8576142f861380e565b500290565b600082614333577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006105c160ff8416836140b656fea264697066735822122059380f529cfa2de509d5e04383eec1f4f77c87f8c186c3c99f7a53c8a890ad5564736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212207b4beb1aa0ffca5ba829d07a348772f9b306347d84c216e6fb1f6034ca844d5e64736f6c634300080a0033"; type EmissionsERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/FixedPointMathTest__factory.ts b/src/typechain/factories/FixedPointMathTest__factory.ts new file mode 100644 index 0000000..9df75c3 --- /dev/null +++ b/src/typechain/factories/FixedPointMathTest__factory.ts @@ -0,0 +1,181 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + FixedPointMathTest, + FixedPointMathTestInterface, +} from "../FixedPointMathTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "a_", + type: "uint256", + }, + { + internalType: "uint256", + name: "b_", + type: "uint256", + }, + ], + name: "fixedPointDiv", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "a_", + type: "uint256", + }, + { + internalType: "uint256", + name: "b_", + type: "uint256", + }, + ], + name: "fixedPointMul", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "a_", + type: "uint256", + }, + { + internalType: "uint256", + name: "aDecimals_", + type: "uint256", + }, + ], + name: "scale18", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "a_", + type: "uint256", + }, + { + internalType: "int8", + name: "scaleBy_", + type: "int8", + }, + ], + name: "scaleBy", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "a_", + type: "uint256", + }, + { + internalType: "uint256", + name: "targetDecimals_", + type: "uint256", + }, + ], + name: "scaleN", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506104e9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c8063798cc0e911610050578063798cc0e9146100a457806381b8e2a6146100b7578063b34bbe35146100ca57600080fd5b8063279bd00e1461006c5780636baf68f414610091575b600080fd5b61007f61007a366004610279565b6100dd565b60405190815260200160405180910390f35b61007f61009f3660046102af565b6100f2565b61007f6100b23660046102af565b6100fe565b61007f6100c53660046102af565b61010a565b61007f6100d83660046102af565b610116565b60006100e98383610122565b90505b92915050565b60006100e9838361017f565b60006100e9838361019e565b60006100e983836101b3565b60006100e9838361021b565b600081810b6101325750816100ec565b60008260000b131561015a5761014982600a610420565b610153908461042f565b90506100ec565b60ff60008390031661016d81600a61046c565b6101779085610478565b9150506100ec565b600081610194670de0b6b3a76400008561042f565b6100e99190610478565b6000670de0b6b3a7640000610194838561042f565b60008060128314156101c857839150506100ec565b82601211156101e25750601282900361016d81600a61046c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161021181600a61046c565b610177908561042f565b600080826012141561023057839150506100ec565b826012111561024a5750601282900361021181600a61046c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161016d81600a61046c565b6000806040838503121561028c57600080fd5b8235915060208301358060000b81146102a457600080fd5b809150509250929050565b600080604083850312156102c257600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561035957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561033f5761033f6102d1565b8085161561034c57918102915b93841c9390800290610305565b509250929050565b600082610370575060016100ec565b8161037d575060006100ec565b8160018114610393576002811461039d576103b9565b60019150506100ec565b60ff8411156103ae576103ae6102d1565b50506001821b6100ec565b5060208310610133831016604e8410600b84101617156103dc575081810a6100ec565b6103e68383610300565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610418576104186102d1565b029392505050565b60006100e960ff841683610361565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610467576104676102d1565b500290565b60006100e98383610361565b6000826104ae577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220ccff7a007af8d1e2ce9a33e604ee934e2fafc0f9f9de5373edc8de66fe93bfe264736f6c634300080a0033"; + +type FixedPointMathTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FixedPointMathTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class FixedPointMathTest__factory extends ContractFactory { + constructor(...args: FixedPointMathTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): FixedPointMathTest { + return super.attach(address) as FixedPointMathTest; + } + connect(signer: Signer): FixedPointMathTest__factory { + return super.connect(signer) as FixedPointMathTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FixedPointMathTestInterface { + return new utils.Interface(_abi) as FixedPointMathTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): FixedPointMathTest { + return new Contract(address, _abi, signerOrProvider) as FixedPointMathTest; + } +} diff --git a/src/typechain/factories/FnPtrsTest__factory.ts b/src/typechain/factories/FnPtrsTest__factory.ts index b9d5cae..2863dae 100644 --- a/src/typechain/factories/FnPtrsTest__factory.ts +++ b/src/typechain/factories/FnPtrsTest__factory.ts @@ -88,7 +88,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405234801561001057600080fd5b506040516109d83803806109d883398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161093f6100996000396000610191015260006101cd015261093f6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b61005961005436600461037e565b6100b8565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6040805180820182526000602082015260108152905161008f91906103f0565b6100f86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6101596040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610119579050509050818160008151811061018257610182610470565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161020c9392919061061e565b6000604051808303816000875af115801561022b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102719190810190610781565b905061027c816102c7565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806102f2836040516020016102de919061084c565b604051602081830303815290604052610352565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661034c576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610368929190610872565b6040516020818303038152906040529050919050565b60006020828403121561039057600080fd5b813567ffffffffffffffff8111156103a757600080fd5b8201604081850312156103b957600080fd5b9392505050565b60005b838110156103db5781810151838201526020016103c3565b838111156103ea576000848401525b50505050565b602081526000825180602084015261040f8160408501602087016103c0565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126104d457600080fd5b830160208101925035905067ffffffffffffffff8111156104f457600080fd5b8060051b360383131561050657600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561058857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561061357815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016105b9565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161064f868761049f565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015610719577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126106d057600080fd5b8501803567ffffffffffffffff8111156106e957600080fd5b8036038713156106f857600080fd5b61070588828b850161050d565b97505050918601919086019060010161066f565b505050505061072a8287018761049f565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152610761828483610556565b92505050828103604084015261077781856105a5565b9695505050505050565b60006020828403121561079357600080fd5b815167ffffffffffffffff808211156107ab57600080fd5b818401915084601f8301126107bf57600080fd5b8151818111156107d1576107d1610441565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561081757610817610441565b8160405282815287602084870101111561083057600080fd5b6108418360208301602088016103c0565b979650505050505050565b60008152600082516108658160018501602087016103c0565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108fb81600e8501602087016103c0565b91909101600e01939250505056fea2646970667358221220c4e2496ef83eb61cc73cb81884f34ce54404adef097526965fdd1f5ff7a02a7c64736f6c634300080a0033"; + "0x60c060405234801561001057600080fd5b506040516109c73803806109c783398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161092e6100996000396000610180015260006101bc015261092e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b61005961005436600461036d565b6100a7565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b606060405161008f91906103df565b6100e76040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6101486040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161010857905050905081816000815181106101715761017161045f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b81526004016101fb9392919061060d565b6000604051808303816000875af115801561021a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102609190810190610770565b905061026b816102b6565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806102e1836040516020016102cd919061083b565b604051602081830303815290604052610341565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661033b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610357929190610861565b6040516020818303038152906040529050919050565b60006020828403121561037f57600080fd5b813567ffffffffffffffff81111561039657600080fd5b8201604081850312156103a857600080fd5b9392505050565b60005b838110156103ca5781810151838201526020016103b2565b838111156103d9576000848401525b50505050565b60208152600082518060208401526103fe8160408501602087016103af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126104c357600080fd5b830160208101925035905067ffffffffffffffff8111156104e357600080fd5b8060051b36038313156104f557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561057757600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561060257815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016105a8565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161063e868761048e565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015610708577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126106bf57600080fd5b8501803567ffffffffffffffff8111156106d857600080fd5b8036038713156106e757600080fd5b6106f488828b85016104fc565b97505050918601919086019060010161065e565b50505050506107198287018761048e565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152610750828483610545565b9250505082810360408401526107668185610594565b9695505050505050565b60006020828403121561078257600080fd5b815167ffffffffffffffff8082111561079a57600080fd5b818401915084601f8301126107ae57600080fd5b8151818111156107c0576107c0610430565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561080657610806610430565b8160405282815287602084870101111561081f57600080fd5b6108308360208301602088016103af565b979650505050505050565b60008152600082516108548160018501602087016103af565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108ea81600e8501602087016103af565b91909101600e01939250505056fea2646970667358221220895ec7ba13971596634c9b6079a86fb1ef13d552d5b06aa5fc4c5fa3a354454064736f6c634300080a0033"; type FnPtrsTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/GatedNFTFactory__factory.ts b/src/typechain/factories/GatedNFTFactory__factory.ts deleted file mode 100644 index 637f39b..0000000 --- a/src/typechain/factories/GatedNFTFactory__factory.ts +++ /dev/null @@ -1,233 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - GatedNFTFactory, - GatedNFTFactoryInterface, -} from "../GatedNFTFactory"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "implementation", - type: "address", - }, - ], - name: "Implementation", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "child", - type: "address", - }, - ], - name: "NewChild", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes", - name: "data_", - type: "bytes", - }, - ], - name: "createChild", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "string", - name: "description", - type: "string", - }, - { - internalType: "string", - name: "animationUrl", - type: "string", - }, - { - internalType: "string", - name: "imageUrl", - type: "string", - }, - { - internalType: "bytes32", - name: "animationHash", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "imageHash", - type: "bytes32", - }, - ], - internalType: "struct GatedNFT.Config", - name: "config_", - type: "tuple", - }, - { - internalType: "contract ITier", - name: "tier_", - type: "address", - }, - { - internalType: "uint256", - name: "minimumStatus_", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPerAddress_", - type: "uint256", - }, - { - internalType: "enum GatedNFT.Transferrable", - name: "transferrable_", - type: "uint8", - }, - { - internalType: "uint256", - name: "maxMintable_", - type: "uint256", - }, - { - internalType: "address", - name: "royaltyRecipient_", - type: "address", - }, - { - internalType: "uint256", - name: "royaltyBPS", - type: "uint256", - }, - ], - name: "createChildTyped", - outputs: [ - { - internalType: "contract GatedNFT", - name: "", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "maybeChild_", - type: "address", - }, - ], - name: "isChild", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61365c80610c5e83390190565b608051610ba06100be60003960006103770152610ba06000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063eec513d014610083578063fc91a89714610096575b600080fd5b610059610054366004610525565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046107c0565b61028d565b6100cf6100a436600461085c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610347565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49338b8b8b8b8b8b8b8b6040516020016102cc99989796959493929190610926565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102f79190610a8b565b6020604051808303816000875af1158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a9190610a9e565b9998505050505050505050565b600080808080808080808061035e8b8d018d610abb565b985098509850985098509850985098509850600061039b7f0000000000000000000000000000000000000000000000000000000000000000610443565b6040517f911e29e300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063911e29e390610400908d908d908d908d908d908d908d908d908d90600401610926565b600060405180830381600087803b15801561041a57600080fd5b505af115801561042e573d6000803e3d6000fd5b50929f9e505050505050505050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b6000806020838503121561053857600080fd5b823567ffffffffffffffff8082111561055057600080fd5b818501915085601f83011261056457600080fd5b81358181111561057357600080fd5b86602082850101111561058557600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff811182821017156105e9576105e9610597565b60405290565b600082601f83011261060057600080fd5b813567ffffffffffffffff8082111561061b5761061b610597565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190828211818310171561066157610661610597565b8160405283815286602085880101111561067a57600080fd5b836020870160208301376000602085830101528094505050505092915050565b600060e082840312156106ac57600080fd5b6106b46105c6565b9050813567ffffffffffffffff808211156106ce57600080fd5b6106da858386016105ef565b835260208401359150808211156106f057600080fd5b6106fc858386016105ef565b6020840152604084013591508082111561071557600080fd5b610721858386016105ef565b6040840152606084013591508082111561073a57600080fd5b610746858386016105ef565b6060840152608084013591508082111561075f57600080fd5b5061076c848285016105ef565b60808301525060a082013560a082015260c082013560c082015292915050565b73ffffffffffffffffffffffffffffffffffffffff811681146107ae57600080fd5b50565b80356003811061052057600080fd5b600080600080600080600080610100898b0312156107dd57600080fd5b883567ffffffffffffffff8111156107f457600080fd5b6108008b828c0161069a565b98505060208901356108118161078c565b9650604089013595506060890135945061082d60808a016107b1565b935060a0890135925060c08901356108448161078c565b8092505060e089013590509295985092959890939650565b60006020828403121561086e57600080fd5b81356108798161078c565b9392505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60038110610922577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061012073ffffffffffffffffffffffffffffffffffffffff8c1683528060208401528a5160e082850152610960610200850182610880565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee0808584030161014086015261099e8383610880565b925060408d0151915080858403016101608601526109bc8383610880565b925060608d0151915080858403016101808601526109da8383610880565b925060808d0151915080858403016101a0860152506109f98282610880565b60a08d01516101c086015260c08d01516101e086015273ffffffffffffffffffffffffffffffffffffffff8c1660408601529250610a35915050565b876060830152866080830152610a4e60a08301876108eb565b8460c0830152610a7660e083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101008301529a9950505050505050505050565b6020815260006108796020830184610880565b600060208284031215610ab057600080fd5b81516108798161078c565b60008060008060008060008060006101208a8c031215610ada57600080fd5b8935610ae58161078c565b985060208a013567ffffffffffffffff811115610b0157600080fd5b610b0d8c828d0161069a565b98505060408a0135610b1e8161078c565b965060608a0135955060808a01359450610b3a60a08b016107b1565b935060c08a0135925060e08a0135610b518161078c565b809250506101008a01359050929598509295985092959856fea26469706673582212205f4af3bf6b3d0ce04751596e5d33599d75cd58a946280057b7cd72308ac1cf5964736f6c634300080a0033608060405234801561001057600080fd5b5061363c806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004612a14565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612aae565b6101d76101d2366004612ac1565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a366004612b07565b61059b565b005b61020f61021f366004612b33565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612b50565b61090c565b61028061027b366004612b91565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612b50565b610a34565b6101d76102cd366004612ac1565b610a4f565b61024c6102e0366004612b33565b610b01565b61024c6102f3366004612b33565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612cce565b610e6d565b6101b7611183565b61020f610347366004612e4d565b611192565b61020f61035a366004612e8b565b6111a1565b6101b761036d366004612ac1565b611249565b61019a610380366004612f0b565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612b33565b6112df565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061042457506104248261140f565b92915050565b60606065805461043990612f39565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612f39565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e83836114f2565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612fbc565b905090565b6109163382611592565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611702565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612fd3565b610a289190613010565b915091505b9250929050565b61074e838383604051806020016040528060008152506111a1565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba0919061304b565b436118e5565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d04838261191f565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b6000611939565b565b6000610e7960016119b0565b90508015610eae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8316610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610f3d89600001518a60200151611b3b565b610f45611bdc565b610f4e8a6112df565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91610fa891839160209091019061294d565b506020828101518051610fc1926001850192019061294d565b5060408201518051610fdd91600284019160209091019061294d565b5060608201518051610ff991600384019160209091019061294d565b506080820151805161101591600484019160209091019061294d565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561107357611073613064565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b60405161110c9a999897969594939291906130ce565b60405180910390a1801561117757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b60606066805461043990612f39565b61119d338383611c7b565b5050565b6111ab3383611592565b611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61124384848484611da9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166112d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611e4c565b60975473ffffffffffffffffffffffffffffffffffffffff163314611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b61140c81611939565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806114a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061154c82610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b600061164e83610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116bc575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b806116fa57508373ffffffffffffffffffffffffffffffffffffffff166116e2846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b600060d45460ff16600281111561171b5761171b613064565b1415611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561179c5761179c613064565b14156118675760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526117ff92169063e053ea3190602401610b5f565b1015611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d35461187383610d12565b106118da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611ea7565b6000805b600881101561191557828160200285901c63ffffffff16111561190d579050610424565b6001016118e9565b5060089392505050565b61119d82826040518060200160405280600081525061210e565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611a67578160ff1660011480156119d35750303b155b611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b506000919050565b60005460ff808416911610611afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b61119d82826121b1565b600054610100900460ff16611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b61226f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611db4848484611702565b611dc08484848461230f565b611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611e8360ca60cc611e5d6124ff565b604051602001611e6f93929190613310565b6040516020818303038152906040526125b2565b604051602001611e9391906133e1565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611ec782610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff821661200c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b6120176000826114f2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040812080546001929061204d908490612fbc565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290612088908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612118838361278b565b612125600084848461230f565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b815161225b90606590602085019061294d565b50805161074e90606690602084019061294d565b600054610100900460ff16612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b33611939565b600073ffffffffffffffffffffffffffffffffffffffff84163b156124f4576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061238690339089908890889060040161343e565b6020604051808303816000875af19250505080156123df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123dc91810190613487565b60015b6124a9573d80801561240d576040519150601f19603f3d011682016040523d82523d6000602084013e612412565b606091505b5080516124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506116fa565b506001949350505050565b606060008060ca600401805461251490612f39565b905011905060008060ca600301805461252c90612f39565b905011905081801561253b5750805b1561256b576040516125559060ce9060cd906020016134a4565b6040516020818303038152906040529250505090565b8115612583576040516125559060ce90602001613535565b801561259b576040516125559060cd90602001613594565b604051806020016040528060008152509250505090565b60608151600014156125d257505060408051602081019091526000815290565b60006040518060600160405280604081526020016135c760409139905060006003845160026126019190613426565b61260b9190613010565b612616906004612fd3565b90506000612625826020613426565b67ffffffffffffffff81111561263d5761263d612bb3565b6040519080825280601f01601f191660200182016040528015612667576020820181803683370190505b509050818152600183018586518101602084015b818310156126d3576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161267b565b6003895106600181146126ed57600281146127375761277d565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83015261277d565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906128ca908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461295990612f39565b90600052602060002090601f01602090048101928261297b57600085556129c1565b82601f1061299457805160ff19168380011785556129c1565b828001600101855582156129c1579182015b828111156129c15782518255916020019190600101906129a6565b506129cd9291506129d1565b5090565b5b808211156129cd57600081556001016129d2565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461140c57600080fd5b600060208284031215612a2657600080fd5b8135612a31816129e6565b9392505050565b60005b83811015612a53578181015183820152602001612a3b565b838111156112435750506000910152565b60008151808452612a7c816020860160208601612a38565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612a316020830184612a64565b600060208284031215612ad357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461140c57600080fd5b8035611b3681612ada565b60008060408385031215612b1a57600080fd5b8235612b2581612ada565b946020939093013593505050565b600060208284031215612b4557600080fd5b8135612a3181612ada565b600080600060608486031215612b6557600080fd5b8335612b7081612ada565b92506020840135612b8081612ada565b929592945050506040919091013590565b60008060408385031215612ba457600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612c0557612c05612bb3565b60405290565b600067ffffffffffffffff80841115612c2657612c26612bb3565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612c6c57612c6c612bb3565b81604052809350858152868686011115612c8557600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612cb057600080fd5b612a3183833560208501612c0b565b803560038110611b3657600080fd5b60008060008060008060008060006101208a8c031215612ced57600080fd5b8935612cf881612ada565b985060208a013567ffffffffffffffff80821115612d1557600080fd5b908b019060e0828e031215612d2957600080fd5b612d31612be2565b823582811115612d4057600080fd5b612d4c8f828601612c9f565b825250602083013582811115612d6157600080fd5b612d6d8f828601612c9f565b602083015250604083013582811115612d8557600080fd5b612d918f828601612c9f565b604083015250606083013582811115612da957600080fd5b612db58f828601612c9f565b606083015250608083013582811115612dcd57600080fd5b612dd98f828601612c9f565b60808301525060a083013560a082015260c083013560c0820152809a50505050612e0560408b01612afc565b965060608a0135955060808a01359450612e2160a08b01612cbf565b935060c08a01359250612e3660e08b01612afc565b91506101008a013590509295985092959850929598565b60008060408385031215612e6057600080fd5b8235612e6b81612ada565b915060208301358015158114612e8057600080fd5b809150509250929050565b60008060008060808587031215612ea157600080fd5b8435612eac81612ada565b93506020850135612ebc81612ada565b925060408501359150606085013567ffffffffffffffff811115612edf57600080fd5b8501601f81018713612ef057600080fd5b612eff87823560208401612c0b565b91505092959194509250565b60008060408385031215612f1e57600080fd5b8235612f2981612ada565b91506020830135612e8081612ada565b600181811c90821680612f4d57607f821691505b60208210811415612f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fce57612fce612f8d565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561300b5761300b612f8d565b500290565b600082613046577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561305d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106130ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e082850152613112610220850182612a64565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec080858403016101608601526131508383612a64565b925060408d01519150808584030161018086015261316e8383612a64565b925060608d0151915080858403016101a086015261318c8383612a64565b925060808d0151915080858403016101c0860152506131ab8282612a64565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506131e7915050565b8760808301528660a083015261320060c0830187613093565b8460e083015261322961010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061325957607f831692505b6020808410821415613294577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8180156132a857600181146132d757613304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650613304565b60008881526020902060005b868110156132fc5781548b8201529085019083016132e3565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613342600a83018661323f565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613372601382018661323f565b90507f2200000000000000000000000000000000000000000000000000000000000000815283516133aa816001840160208801612a38565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161341981601d850160208701612a38565b91909101601d0192915050565b6000821982111561343957613439612f8d565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261347d6080830184612a64565b9695505050505050565b60006020828403121561349957600080fd5b8151612a31816129e6565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006134d6600c83018561323f565b7f222c2022616e696d6174696f6e5f75726c223a202200000000000000000000008152613506601582018561323f565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613567600c83018461323f565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613567601483018461323f56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122047bc7ad223c6b3b593f6e327294d09e4f394e625614838958af76c60c89e5f4164736f6c634300080a0033"; - -type GatedNFTFactoryConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatedNFTFactoryConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatedNFTFactory__factory extends ContractFactory { - constructor(...args: GatedNFTFactoryConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): GatedNFTFactory { - return super.attach(address) as GatedNFTFactory; - } - connect(signer: Signer): GatedNFTFactory__factory { - return super.connect(signer) as GatedNFTFactory__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatedNFTFactoryInterface { - return new utils.Interface(_abi) as GatedNFTFactoryInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatedNFTFactory { - return new Contract(address, _abi, signerOrProvider) as GatedNFTFactory; - } -} diff --git a/src/typechain/factories/GatedNFT__factory.ts b/src/typechain/factories/GatedNFT__factory.ts deleted file mode 100644 index 1919190..0000000 --- a/src/typechain/factories/GatedNFT__factory.ts +++ /dev/null @@ -1,747 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { GatedNFT, GatedNFTInterface } from "../GatedNFT"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: false, - internalType: "address", - name: "contractAddress", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "creator", - type: "address", - }, - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "string", - name: "description", - type: "string", - }, - { - internalType: "string", - name: "animationUrl", - type: "string", - }, - { - internalType: "string", - name: "imageUrl", - type: "string", - }, - { - internalType: "bytes32", - name: "animationHash", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "imageHash", - type: "bytes32", - }, - ], - indexed: false, - internalType: "struct GatedNFT.Config", - name: "config", - type: "tuple", - }, - { - indexed: false, - internalType: "contract ITier", - name: "tier", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "minimumStatus", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "maxPerAddress", - type: "uint256", - }, - { - indexed: false, - internalType: "enum GatedNFT.Transferrable", - name: "transferrable", - type: "uint8", - }, - { - indexed: false, - internalType: "uint256", - name: "maxMintable", - type: "uint256", - }, - { - indexed: false, - internalType: "address", - name: "royaltyRecipient", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "royaltyBPS", - type: "uint256", - }, - ], - name: "CreatedGatedNFT", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "royaltyRecipient", - type: "address", - }, - ], - name: "UpdatedRoyaltyRecipient", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner_", - type: "address", - }, - { - components: [ - { - internalType: "string", - name: "name", - type: "string", - }, - { - internalType: "string", - name: "symbol", - type: "string", - }, - { - internalType: "string", - name: "description", - type: "string", - }, - { - internalType: "string", - name: "animationUrl", - type: "string", - }, - { - internalType: "string", - name: "imageUrl", - type: "string", - }, - { - internalType: "bytes32", - name: "animationHash", - type: "bytes32", - }, - { - internalType: "bytes32", - name: "imageHash", - type: "bytes32", - }, - ], - internalType: "struct GatedNFT.Config", - name: "config_", - type: "tuple", - }, - { - internalType: "contract ITier", - name: "tier_", - type: "address", - }, - { - internalType: "uint256", - name: "minimumStatus_", - type: "uint256", - }, - { - internalType: "uint256", - name: "maxPerAddress_", - type: "uint256", - }, - { - internalType: "enum GatedNFT.Transferrable", - name: "transferrable_", - type: "uint8", - }, - { - internalType: "uint256", - name: "maxMintable_", - type: "uint256", - }, - { - internalType: "address", - name: "royaltyRecipient_", - type: "address", - }, - { - internalType: "uint256", - name: "royaltyBPS_", - type: "uint256", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - 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: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "uint256", - name: "salePrice_", - type: "uint256", - }, - ], - name: "royaltyInfo", - outputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "royaltyAmount", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "_data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "tier", - outputs: [ - { - internalType: "contract ITier", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - 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: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "royaltyRecipient_", - type: "address", - }, - ], - name: "updateRoyaltyRecipient", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061363c806100206000396000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80636a627842116100d857806395d89b411161008c578063c87b56dd11610066578063c87b56dd1461035f578063e985e9c514610372578063f2fde38b146103bb57600080fd5b806395d89b4114610331578063a22cb46514610339578063b88d4fde1461034c57600080fd5b8063715018a6116100bd578063715018a6146102f85780638da5cb5b14610300578063911e29e31461031e57600080fd5b80636a627842146102d257806370a08231146102e557600080fd5b806316f4d0221161013a5780632a55205a116101145780632a55205a1461026d57806342842e0e146102ac5780636352211e146102bf57600080fd5b806316f4d0221461022457806318160ddd1461024457806323b872dd1461025a57600080fd5b8063081812fc1161016b578063081812fc146101c4578063095ea7b3146101fc5780630fc499f51461021157600080fd5b806301ffc9a71461018757806306fdde03146101af575b600080fd5b61019a610195366004612a14565b6103ce565b60405190151581526020015b60405180910390f35b6101b761042a565b6040516101a69190612aae565b6101d76101d2366004612ac1565b6104bc565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a6565b61020f61020a366004612b07565b61059b565b005b61020f61021f366004612b33565b610753565b60d1546101d79073ffffffffffffffffffffffffffffffffffffffff1681565b61024c6108f0565b6040519081526020016101a6565b61020f610268366004612b50565b61090c565b61028061027b366004612b91565b6109ad565b6040805173ffffffffffffffffffffffffffffffffffffffff90931683526020830191909152016101a6565b61020f6102ba366004612b50565b610a34565b6101d76102cd366004612ac1565b610a4f565b61024c6102e0366004612b33565b610b01565b61024c6102f3366004612b33565b610d12565b61020f610de0565b60975473ffffffffffffffffffffffffffffffffffffffff166101d7565b61020f61032c366004612cce565b610e6d565b6101b7611183565b61020f610347366004612e4d565b611192565b61020f61035a366004612e8b565b6111a1565b6101b761036d366004612ac1565b611249565b61019a610380366004612f0b565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b61020f6103c9366004612b33565b6112df565b60007f2a55205a000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061042457506104248261140f565b92915050565b60606065805461043990612f39565b80601f016020809104026020016040519081016040528092919081815260200182805461046590612f39565b80156104b25780601f10610487576101008083540402835291602001916104b2565b820191906000526020600020905b81548152906001019060200180831161049557829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105a682610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610664576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b3373ffffffffffffffffffffffffffffffffffffffff821614806106b8575073ffffffffffffffffffffffffffffffffffffffff81166000908152606a6020908152604080832033845290915290205460ff165b610744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610569565b61074e83836114f2565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b60d65473ffffffffffffffffffffffffffffffffffffffff163314610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4f6e6c792063757272656e7420726563697069656e742063616e20757064617460448201527f65000000000000000000000000000000000000000000000000000000000000006064820152608401610569565b60d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fe8fc99c58149b88bd3261c7bfa0257cb6276c555f2afc047f7b9bcfa4b2d05e79060200160405180910390a150565b600060016108fd60c95490565b6109079190612fbc565b905090565b6109163382611592565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61074e838383611702565b60d654600090819073ffffffffffffffffffffffffffffffffffffffff166109f157505060d65473ffffffffffffffffffffffffffffffffffffffff166000610a2d565b60d65460d75473ffffffffffffffffffffffffffffffffffffffff9091169061271090610a1e9086612fd3565b610a289190613010565b915091505b9250929050565b61074e838383604051806020016040528060008152506111a1565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610424576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610569565b60d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260009392610ba69291169063e053ea31906024015b602060405180830381865afa158015610b7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba0919061304b565b436118e5565b1015610c0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d354610c1a83610d12565b10610c81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b6000610c8c60c95490565b905060d554811115610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f546f74616c20737570706c7920657868617573746564000000000000000000006044820152606401610569565b610d04838261191f565b61042460c980546001019055565b600073ffffffffffffffffffffffffffffffffffffffff8216610db7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b60975473ffffffffffffffffffffffffffffffffffffffff163314610e61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b610e6b6000611939565b565b6000610e7960016119b0565b90508015610eae57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff8316610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f526563697069656e742063616e6e6f74206265203020616464726573730000006044820152606401610569565b610f3d89600001518a60200151611b3b565b610f45611bdc565b610f4e8a6112df565b60d180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055885180518a9160ca91610fa891839160209091019061294d565b506020828101518051610fc1926001850192019061294d565b5060408201518051610fdd91600284019160209091019061294d565b5060608201518051610ff991600384019160209091019061294d565b506080820151805161101591600484019160209091019061294d565b5060a0820151600582015560c09091015160069091015560d287905560d386905560d480548691907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600281111561107357611073613064565b021790555060d584905560d680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff851617905560d782905560c9805460010190557fd85dcc7cee7af91644138b69b9dea25e7697ddbe6a27aa23720ab19a86581f40308b8b8b8b8b8b8b8b8b60405161110c9a999897969594939291906130ce565b60405180910390a1801561117757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050565b60606066805461043990612f39565b61119d338383611c7b565b5050565b6111ab3383611592565b611237576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610569565b61124384848484611da9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166112d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f6e6578697374656e7420746f6b656e0000000000000000000000000000006044820152606401610569565b610424611e4c565b60975473ffffffffffffffffffffffffffffffffffffffff163314611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8116611403576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b61140c81611939565b50565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806114a257507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061042457507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610424565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155819061154c82610a4f565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610569565b600061164e83610a4f565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806116bc575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b806116fa57508373ffffffffffffffffffffffffffffffffffffffff166116e2846104bc565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b600060d45460ff16600281111561171b5761171b613064565b1415611783576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f5472616e73666572206e6f7420737570706f72746564000000000000000000006044820152606401610569565b600260d45460ff16600281111561179c5761179c613064565b14156118675760d25460d1546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301526117ff92169063e053ea3190602401610b5f565b1015611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f41646472657373206d697373696e6720726571756972656420746965720000006044820152606401610569565b60d35461187383610d12565b106118da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41646472657373206861732065786861757374656420616c6c6f77616e6365006044820152606401610569565b61074e838383611ea7565b6000805b600881101561191557828160200285901c63ffffffff16111561190d579050610424565b6001016118e9565b5060089392505050565b61119d82826040518060200160405280600081525061210e565b6097805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008054610100900460ff1615611a67578160ff1660011480156119d35750303b155b611a5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b506000919050565b60005460ff808416911610611afe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b61119d82826121b1565b600054610100900460ff16611c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b61226f565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611db4848484611702565b611dc08484848461230f565b611243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b6060611e8360ca60cc611e5d6124ff565b604051602001611e6f93929190613310565b6040516020818303038152906040526125b2565b604051602001611e9391906133e1565b604051602081830303815290604052905090565b8273ffffffffffffffffffffffffffffffffffffffff16611ec782610a4f565b73ffffffffffffffffffffffffffffffffffffffff1614611f6a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610569565b73ffffffffffffffffffffffffffffffffffffffff821661200c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610569565b6120176000826114f2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040812080546001929061204d908490612fbc565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290612088908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b612118838361278b565b612125600084848461230f565b61074e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b600054610100900460ff16612248576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b815161225b90606590602085019061294d565b50805161074e90606690602084019061294d565b600054610100900460ff16612306576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610e6b33611939565b600073ffffffffffffffffffffffffffffffffffffffff84163b156124f4576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a029061238690339089908890889060040161343e565b6020604051808303816000875af19250505080156123df575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526123dc91810190613487565b60015b6124a9573d80801561240d576040519150601f19603f3d011682016040523d82523d6000602084013e612412565b606091505b5080516124a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610569565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a02000000000000000000000000000000000000000000000000000000001490506116fa565b506001949350505050565b606060008060ca600401805461251490612f39565b905011905060008060ca600301805461252c90612f39565b905011905081801561253b5750805b1561256b576040516125559060ce9060cd906020016134a4565b6040516020818303038152906040529250505090565b8115612583576040516125559060ce90602001613535565b801561259b576040516125559060cd90602001613594565b604051806020016040528060008152509250505090565b60608151600014156125d257505060408051602081019091526000815290565b60006040518060600160405280604081526020016135c760409139905060006003845160026126019190613426565b61260b9190613010565b612616906004612fd3565b90506000612625826020613426565b67ffffffffffffffff81111561263d5761263d612bb3565b6040519080825280601f01601f191660200182016040528015612667576020820181803683370190505b509050818152600183018586518101602084015b818310156126d3576003830192508251603f8160121c168501518253600182019150603f81600c1c168501518253600182019150603f8160061c168501518253600182019150603f811685015182535060010161267b565b6003895106600181146126ed57600281146127375761277d565b7f3d3d0000000000000000000000000000000000000000000000000000000000007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe83015261277d565b7f3d000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301525b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216612808576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610569565b60008181526067602052604090205473ffffffffffffffffffffffffffffffffffffffff1615612894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821660009081526068602052604081208054600192906128ca908490613426565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b82805461295990612f39565b90600052602060002090601f01602090048101928261297b57600085556129c1565b82601f1061299457805160ff19168380011785556129c1565b828001600101855582156129c1579182015b828111156129c15782518255916020019190600101906129a6565b506129cd9291506129d1565b5090565b5b808211156129cd57600081556001016129d2565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461140c57600080fd5b600060208284031215612a2657600080fd5b8135612a31816129e6565b9392505050565b60005b83811015612a53578181015183820152602001612a3b565b838111156112435750506000910152565b60008151808452612a7c816020860160208601612a38565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612a316020830184612a64565b600060208284031215612ad357600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461140c57600080fd5b8035611b3681612ada565b60008060408385031215612b1a57600080fd5b8235612b2581612ada565b946020939093013593505050565b600060208284031215612b4557600080fd5b8135612a3181612ada565b600080600060608486031215612b6557600080fd5b8335612b7081612ada565b92506020840135612b8081612ada565b929592945050506040919091013590565b60008060408385031215612ba457600080fd5b50508035926020909101359150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff81118282101715612c0557612c05612bb3565b60405290565b600067ffffffffffffffff80841115612c2657612c26612bb3565b604051601f85017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908282118183101715612c6c57612c6c612bb3565b81604052809350858152868686011115612c8557600080fd5b858560208301376000602087830101525050509392505050565b600082601f830112612cb057600080fd5b612a3183833560208501612c0b565b803560038110611b3657600080fd5b60008060008060008060008060006101208a8c031215612ced57600080fd5b8935612cf881612ada565b985060208a013567ffffffffffffffff80821115612d1557600080fd5b908b019060e0828e031215612d2957600080fd5b612d31612be2565b823582811115612d4057600080fd5b612d4c8f828601612c9f565b825250602083013582811115612d6157600080fd5b612d6d8f828601612c9f565b602083015250604083013582811115612d8557600080fd5b612d918f828601612c9f565b604083015250606083013582811115612da957600080fd5b612db58f828601612c9f565b606083015250608083013582811115612dcd57600080fd5b612dd98f828601612c9f565b60808301525060a083013560a082015260c083013560c0820152809a50505050612e0560408b01612afc565b965060608a0135955060808a01359450612e2160a08b01612cbf565b935060c08a01359250612e3660e08b01612afc565b91506101008a013590509295985092959850929598565b60008060408385031215612e6057600080fd5b8235612e6b81612ada565b915060208301358015158114612e8057600080fd5b809150509250929050565b60008060008060808587031215612ea157600080fd5b8435612eac81612ada565b93506020850135612ebc81612ada565b925060408501359150606085013567ffffffffffffffff811115612edf57600080fd5b8501601f81018713612ef057600080fd5b612eff87823560208401612c0b565b91505092959194509250565b60008060408385031215612f1e57600080fd5b8235612f2981612ada565b91506020830135612e8081612ada565b600181811c90821680612f4d57607f821691505b60208210811415612f87577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fce57612fce612f8d565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561300b5761300b612f8d565b500290565b600082613046577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561305d57600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600381106130ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b600061014073ffffffffffffffffffffffffffffffffffffffff808e168452808d166020850152508060408401528a5160e082850152613112610220850182612a64565b91505060208b01517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec080858403016101608601526131508383612a64565b925060408d01519150808584030161018086015261316e8383612a64565b925060608d0151915080858403016101a086015261318c8383612a64565b925060808d0151915080858403016101c0860152506131ab8282612a64565b60a08d01516101e086015260c08d015161020086015273ffffffffffffffffffffffffffffffffffffffff8c16606086015292506131e7915050565b8760808301528660a083015261320060c0830187613093565b8460e083015261322961010083018573ffffffffffffffffffffffffffffffffffffffff169052565b826101208301529b9a5050505050505050505050565b8054600090600181811c908083168061325957607f831692505b6020808410821415613294577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b8180156132a857600181146132d757613304565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650613304565b60008881526020902060005b868110156132fc5781548b8201529085019083016132e3565b505084890196505b50505050505092915050565b7f7b226e616d65223a20220000000000000000000000000000000000000000000081526000613342600a83018661323f565b7f222c20226465736372697074696f6e223a2022000000000000000000000000008152613372601382018661323f565b90507f2200000000000000000000000000000000000000000000000000000000000000815283516133aa816001840160208801612a38565b7f7d000000000000000000000000000000000000000000000000000000000000006001929091019182015260020195945050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161341981601d850160208701612a38565b91909101601d0192915050565b6000821982111561343957613439612f8d565b500190565b600073ffffffffffffffffffffffffffffffffffffffff80871683528086166020840152508360408301526080606083015261347d6080830184612a64565b9695505050505050565b60006020828403121561349957600080fd5b8151612a31816129e6565b7f2c2022696d616765223a20220000000000000000000000000000000000000000815260006134d6600c83018561323f565b7f222c2022616e696d6174696f6e5f75726c223a202200000000000000000000008152613506601582018561323f565b7f2200000000000000000000000000000000000000000000000000000000000000815260010195945050505050565b7f2c2022696d616765223a2022000000000000000000000000000000000000000081526000613567600c83018461323f565b7f220000000000000000000000000000000000000000000000000000000000000081526001019392505050565b7f2c2022616e696d6174696f6e5f75726c223a202200000000000000000000000081526000613567601483018461323f56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122047bc7ad223c6b3b593f6e327294d09e4f394e625614838958af76c60c89e5f4164736f6c634300080a0033"; - -type GatedNFTConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: GatedNFTConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class GatedNFT__factory extends ContractFactory { - constructor(...args: GatedNFTConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): GatedNFT { - return super.attach(address) as GatedNFT; - } - connect(signer: Signer): GatedNFT__factory { - return super.connect(signer) as GatedNFT__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): GatedNFTInterface { - return new utils.Interface(_abi) as GatedNFTInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): GatedNFT { - return new Contract(address, _abi, signerOrProvider) as GatedNFT; - } -} diff --git a/src/typechain/factories/IERC165Upgradeable__factory.ts b/src/typechain/factories/IERC165Upgradeable__factory.ts deleted file mode 100644 index 9eed671..0000000 --- a/src/typechain/factories/IERC165Upgradeable__factory.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC165Upgradeable, - IERC165UpgradeableInterface, -} from "../IERC165Upgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class IERC165Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC165UpgradeableInterface { - return new utils.Interface(_abi) as IERC165UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC165Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC165Upgradeable; - } -} diff --git a/src/typechain/factories/IERC4626__factory.ts b/src/typechain/factories/IERC4626__factory.ts new file mode 100644 index 0000000..46140f9 --- /dev/null +++ b/src/typechain/factories/IERC4626__factory.ts @@ -0,0 +1,413 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { IERC4626, IERC4626Interface } from "../IERC4626"; + +const _abi = [ + { + 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: "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: "asset", + outputs: [ + { + internalType: "address", + name: "assetTokenAddress", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "shares", + type: "uint256", + }, + ], + name: "convertToAssets", + outputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + ], + name: "convertToShares", + outputs: [ + { + internalType: "uint256", + name: "shares", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "deposit", + outputs: [ + { + internalType: "uint256", + name: "shares", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "maxDeposit", + outputs: [ + { + internalType: "uint256", + name: "maxAssets", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + ], + name: "maxMint", + outputs: [ + { + internalType: "uint256", + name: "maxShares", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "maxRedeem", + outputs: [ + { + internalType: "uint256", + name: "maxShares", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "maxWithdraw", + outputs: [ + { + internalType: "uint256", + name: "maxAssets", + 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: "assets", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + ], + name: "previewDeposit", + outputs: [ + { + internalType: "uint256", + name: "shares", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "shares", + type: "uint256", + }, + ], + name: "previewMint", + outputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "shares", + type: "uint256", + }, + ], + name: "previewRedeem", + outputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "assets", + type: "uint256", + }, + ], + name: "previewWithdraw", + outputs: [ + { + internalType: "uint256", + name: "shares", + 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: "assets", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "totalAssets", + outputs: [ + { + internalType: "uint256", + name: "totalManagedAssets", + type: "uint256", + }, + ], + stateMutability: "view", + 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: "shares", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC4626__factory { + static readonly abi = _abi; + static createInterface(): IERC4626Interface { + return new utils.Interface(_abi) as IERC4626Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC4626 { + return new Contract(address, _abi, signerOrProvider) as IERC4626; + } +} diff --git a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts deleted file mode 100644 index 4d54c21..0000000 --- a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721ReceiverUpgradeable, - IERC721ReceiverUpgradeableInterface, -} from "../IERC721ReceiverUpgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721ReceiverUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721ReceiverUpgradeableInterface { - return new utils.Interface(_abi) as IERC721ReceiverUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721ReceiverUpgradeable { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721ReceiverUpgradeable; - } -} diff --git a/src/typechain/factories/IERC721Upgradeable__factory.ts b/src/typechain/factories/IERC721Upgradeable__factory.ts deleted file mode 100644 index 6da8e4a..0000000 --- a/src/typechain/factories/IERC721Upgradeable__factory.ts +++ /dev/null @@ -1,311 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721Upgradeable, - IERC721UpgradeableInterface, -} from "../IERC721Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721UpgradeableInterface { - return new utils.Interface(_abi) as IERC721UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC721Upgradeable; - } -} diff --git a/src/typechain/factories/IERC2981Upgradeable__factory.ts b/src/typechain/factories/ITierV2__factory.ts similarity index 55% rename from src/typechain/factories/IERC2981Upgradeable__factory.ts rename to src/typechain/factories/ITierV2__factory.ts index 95e46af..a38ae0d 100644 --- a/src/typechain/factories/IERC2981Upgradeable__factory.ts +++ b/src/typechain/factories/ITierV2__factory.ts @@ -4,35 +4,27 @@ import { Contract, Signer, utils } from "ethers"; import { Provider } from "@ethersproject/providers"; -import type { - IERC2981Upgradeable, - IERC2981UpgradeableInterface, -} from "../IERC2981Upgradeable"; +import type { ITierV2, ITierV2Interface } from "../ITierV2"; const _abi = [ { inputs: [ { - internalType: "uint256", - name: "tokenId", - type: "uint256", + internalType: "address", + name: "account", + type: "address", }, { - internalType: "uint256", - name: "salePrice", - type: "uint256", + internalType: "uint256[]", + name: "context", + type: "uint256[]", }, ], - name: "royaltyInfo", + name: "report", outputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, { internalType: "uint256", - name: "royaltyAmount", + name: "report", type: "uint256", }, ], @@ -42,17 +34,27 @@ const _abi = [ { inputs: [ { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "tier", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "context", + type: "uint256[]", }, ], - name: "supportsInterface", + name: "reportTimeForTier", outputs: [ { - internalType: "bool", - name: "", - type: "bool", + internalType: "uint256", + name: "time", + type: "uint256", }, ], stateMutability: "view", @@ -60,15 +62,15 @@ const _abi = [ }, ]; -export class IERC2981Upgradeable__factory { +export class ITierV2__factory { static readonly abi = _abi; - static createInterface(): IERC2981UpgradeableInterface { - return new utils.Interface(_abi) as IERC2981UpgradeableInterface; + static createInterface(): ITierV2Interface { + return new utils.Interface(_abi) as ITierV2Interface; } static connect( address: string, signerOrProvider: Signer | Provider - ): IERC2981Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC2981Upgradeable; + ): ITierV2 { + return new Contract(address, _abi, signerOrProvider) as ITierV2; } } diff --git a/src/typechain/factories/OrderBookStateBuilder__factory.ts b/src/typechain/factories/OrderBookStateBuilder__factory.ts index 59ca123..79edc06 100644 --- a/src/typechain/factories/OrderBookStateBuilder__factory.ts +++ b/src/typechain/factories/OrderBookStateBuilder__factory.ts @@ -233,7 +233,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c511760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a052620006c0565b6060620000746200019e60201b62000cdc1760201c565b620000b4604080516060810182526001600160401b0362000522602090811b62000ff4178216818401526200051c901b62000fee17168183015290815290565b604051602001620000c792919062000645565b604051602081830303815290604052905090565b6000806200011583604051602001620000f5919062000666565b6040516020818303038152906040526200036360201b62000e531760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060620001676200039160201b62000e7f1760201c565b604080516060810182526001600160401b0362000522602090811b62000ff4179190911690820181905281830152908152620000b4565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000516831b62000fe817811660e08301819052610100830181905261012083018190526101408301526200051c831b62000fee1781166101608301819052610180830181905262000522841b62000ff41782166101a084018190526101c084018190526101e0840181905262000528851b62000ffa178316610200850181905261022085018190526102408501819052610260850181905261028085018190526102a085018190526102c085018190526102e0850181905261030085018190526103208501819052610340850181905261036085018290526200056f861b6200106917841661038086018190526103a086018490526103c086018490526103e08601849052610400860182905261042086019190915261044085018390526104608501839052610480850183905262000575861b6200106f1784166104a08601526104c085018390526104e08501919091526105008401829052610520840191909152610540830152620005be90921b620010e21790911661056080830191909152815290565b60608151826040516020016200037b92919062000682565b6040516020818303038152906040529050919050565b604080516105808101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000522831b62000ff417811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526101c083018190526101e08301819052610200830181905261022083018190526102408301819052610260830181905261028083018190526102a083018190526102c083018190526102e08301819052610300830181905261032083018190526103408301819052610360830181905261038083018190526103a083018190526103c083018190526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083018190526105408301526200052890921b62000ffa1790911661056080830191909152815290565b50600090565b50600290565b50600190565b60008082116200056b5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5090565b50600390565b6000601f821680620005b85760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b604482015260640162000562565b92915050565b6000808211620005fd5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b604482015260640162000562565b5060020260010190565b6000815160005b818110156200062a57602081850181015186830152016200060e565b818111156200063a576000828601525b509290920192915050565b60006200065e62000657838662000607565b8462000607565b949350505050565b6000815260006200067b600183018462000607565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200065e600e83018462000607565b60805160a051611f0e620006e66000396000610711015260006106e40152611f0e6000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a3660046119e3565b6100cd565b60405161008c9190611b01565b60405180910390f35b61007f6104c8565b6100b06100ab366004611b52565b610670565b005b61007f6100c0366004611ba2565b610974565b61007f610ac5565b606060006100da85611157565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c06565b60200151905060008060005b86518110156102f0578387828151811061017457610174611c55565b602002602001015160a0018181525050600285518161019557610195611c84565b048782815181106101a8576101a8611c55565b602002602001015160c00181815250506101db888883815181106101ce576101ce611c55565b6020026020010151610670565b61020b8782815181106101f0576101f0611c55565b6020026020010151608001518461129590919063ffffffff16565b925061023d87828151811061022257610222611c55565b6020026020010151606001518361129590919063ffffffff16565b915086818151811061025157610251611c55565b60200260200101516020015187828151811061026f5761026f611c55565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff811115610313576103136116b2565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611c55565b602002602001015182828151811061037f5761037f611c55565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b16116b2565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611c55565b6020026020010151610974565b82828151811061042d5761042d611c55565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f6116b2565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b60200151518152506112ac565b96505050505050505b9392505050565b604080516105808101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252610ff460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610ffa61056080830191909152815260408051606081018252610ff460208201819052818301529081525b60405160200161065c929190611cb3565b604051602081830303815290604052905090565b805182515181106106dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b60006107087f00000000000000000000000000000000000000000000000000000000000000006113e9565b905060006107357f00000000000000000000000000000000000000000000000000000000000000006113e9565b905060008080600080602088026020018a5101519050805193505b838510156108f9576002850194508481015180601e1a935080601f1a925050600683101561081457826107a457896020015151896080015101821061079457600080fd5b60408901805160010190526107fb565b60018314156107bd578860400151821061079457600080fd5b60028314156107d65760408901805160010190526107fb565b60038314156107fb578860a0015182106107ef57600080fd5b60408901805160010190525b600483141561080f5761080f8a8a84611417565b6108dc565b8860c001518310610881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108a08463ffffffff8416565b60408c018051919091039081905260608c01516108bc91611295565b60608c01526108ce8463ffffffff8316565b60408c018051909101905250505b604089015160608a01516108ef91611295565b60608a0152610750565b606089015160ff1015610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a0557610a056116b2565b6040519080825280601f01601f191660200182016040528015610a2f576020820181803683370190505b509050600660018381018160005b82821015610ab75781890151601f1a6002830615610a995785811015610a6b57600182019181908801602101535b858110610a9957600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610aaa5780826020018801535b5060019182019101610a3d565b509398975050505050505050565b60408051610580810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c0840192909252610fe860e0840181905261010084018190526101208401819052610140840152610fee61016084018190526101808401819052610ff46101a085018190526101c085018190526101e08501819052610ffa610200860181905261022086018190526102408601819052610260860181905261028086018190526102a086018190526102c086018190526102e08601819052610300860181905261032086018190526103408601819052610360860182905261106961038087018190526103a087018490526103c087018490526103e08701849052610400870182905261042087019190915261044086018390526104608601839052610480860183905261106f6104a08701526104c086018390526104e08601829052610500860183905261052086018390526105408601526110e26105608087019190915285528551808501875292830152818501529283529161064b565b600080610c7c83604051602001610c689190611ce2565b604051602081830303815290604052610e53565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cd6576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe860e0820181905261010082018190526101208201819052610140820152610fee61016082018190526101808201819052610ff46101a083018190526101c083018190526101e08301819052610ffa610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840182905261106961038085018190526103a085018490526103c085018490526103e08501849052610400850182905261042085019190915261044084018390526104608401839052610480840183905261106f6104a08501526104c084018390526104e084019190915261050083018290526105208301919091526105408201526110e261056082810191909152815290565b6060815182604051602001610e69929190611d08565b6040516020818303038152906040529050919050565b6040805161058081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610ff460e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e0820181905261050082018190526105208201819052610540820152610ffa61056082810191909152815290565b50600090565b50600290565b50600190565b6000808211611065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b50600390565b6000601f8216806110dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b600080821161114d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261118b91166113e9565b90508051600014156110dc576112386112338473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261122e9190810190611d9f565b6114b6565b610c51565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c183611157565b6000818310156112a557816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112f89190611e16565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113349291602001611e4c565b604051602081830303815290604052905060005b8560400151518110156113e057818660400151828151811061136c5761136c611c55565b60200260200101515160001b8760400151838151811061138e5761138e611c55565b60200260200101516040516020016113a893929190611e72565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611348565b50949350505050565b60606110dc8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115c0565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114619190611295565b606084015260808301516114759082611295565b60808401528251600783168085526001600385811c161b919060005b838110156114ab576114a38888610670565b600101611491565b505090935250505050565b606060208251816114c9576114c9611c84565b0615611531576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b6000601083518161154457611544611c84565b0467ffffffffffffffff81111561155d5761155d6116b2565b6040519080825280601f01601f191660200182016040528015611587576020820181803683370190505b509050600060025b84518210156115b757808301805160208488018101519091179091529091019060020161158f565b50909392505050565b6060833b806115df5750506040805160208101909152600081526104c1565b808411156115fd5750506040805160208101909152600081526104c1565b83831015611648576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b838303848203600082821061165d578261165f565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6116b0611ea9565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611704576117046116b2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611751576117516116b2565b604052919050565b600067ffffffffffffffff821115611773576117736116b2565b5060051b60200190565b600067ffffffffffffffff821115611797576117976116b2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117d457600080fd5b81356117e76117e28261177d565b61170a565b8181528460208386010111156117fc57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261182a57600080fd5b8135602061183a6117e283611759565b82815260059290921b8401810191818101908684111561185957600080fd5b8286015b84811015611874578035835291830191830161185d565b509695505050505050565b60006040828403121561189157600080fd5b6118996116e1565b9050813567ffffffffffffffff808211156118b357600080fd5b818401915084601f8301126118c757600080fd5b813560206118d76117e283611759565b82815260059290921b840181019181810190888411156118f657600080fd5b8286015b8481101561192e578035868111156119125760008081fd5b6119208b86838b01016117c3565b8452509183019183016118fa565b508652508581013593508284111561194557600080fd5b61195187858801611819565b818601525050505092915050565b600060e0828403121561197157600080fd5b60405160e0810181811067ffffffffffffffff82111715611994576119946116b2565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b6000806000606084860312156119f857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a1c57600080fd5b925060208481013567ffffffffffffffff80821115611a3a57600080fd5b611a468883890161187f565b94506040870135915080821115611a5c57600080fd5b508501601f81018713611a6e57600080fd5b8035611a7c6117e282611759565b81815260e0918202830184019184820191908a841115611a9b57600080fd5b938501935b83851015611ac157611ab28b8661195f565b83529384019391850191611aa0565b5080955050505050509250925092565b60005b83811015611aec578181015183820152602001611ad4565b83811115611afb576000848401525b50505050565b6020815260008251806020840152611b20816040850160208701611ad1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b6657600080fd5b823567ffffffffffffffff811115611b7d57600080fd5b611b898582860161187f565b925050611b99846020850161195f565b90509250929050565b60008060408385031215611bb557600080fd5b823567ffffffffffffffff80821115611bcd57600080fd5b611bd9868387016117c3565b93506020850135915080821115611bef57600080fd5b50611bfc858286016117c3565b9150509250929050565b600060408284031215611c1857600080fd5b6040516040810181811067ffffffffffffffff82111715611c3b57611c3b6116b2565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611cc5818460208801611ad1565b835190830190611cd9818360208801611ad1565b01949350505050565b6000815260008251611cfb816001850160208701611ad1565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d9181600e850160208701611ad1565b91909101600e019392505050565b600060208284031215611db157600080fd5b815167ffffffffffffffff811115611dc857600080fd5b8201601f81018413611dd957600080fd5b8051611de76117e28261177d565b818152856020838501011115611dfc57600080fd5b611e0d826020830160208601611ad1565b95945050505050565b815160009082906020808601845b83811015611e4057815185529382019390820190600101611e24565b50929695505050505050565b82815260008251611e64816020850160208701611ad1565b919091016020019392505050565b60008451611e84818460208901611ad1565b82018481528351611e9c816020808501908801611ad1565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea26469706673582212201049998f06e91c628256ff7d55a834615e54a08ccb3deedef1b99c9784562cfa64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c7a1760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a0526200070d565b6060620000746200019e60201b62000d051760201c565b620000b4604080516060810182526001600160401b036200055d602090811b620010461782168184015262000557901b6200104017168183015290815290565b604051602001620000c792919062000692565b604051602081830303815290604052905090565b6000806200011583604051602001620000f59190620006b3565b6040516020818303038152906040526200038d60201b62000e931760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000167620003bb60201b62000ebf1760201c565b604080516060810182526001600160401b036200055d602090811b62001046179190911690820181905281830152908152620000b4565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000557831b6200104017811660e083018190526200055d841b62001046178216610100840181905262000563851b6200104c17831661012085018190526101408501839052610160850183905261018085018390526101a0850181905262000569861b620010521784166101c0860152620005b6861b620010c71784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e08501829052620005bc861b620010cd17841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e084018190526105008401819052610520840152620005ff841b6200113c17821661054084015262000605841b6200114217821661056084015261058083018190526200060b90931b6200114817166105a08201526105c08082019290925290815290565b6060815182604051602001620003a5929190620006cf565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200055d831b6200104617811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a08301819052620005bc90931b620010cd17166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005ac5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005fb5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620005a3565b5090565b60020190565b60030190565b6000601f8216806200064e5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620005a3565b92915050565b6000815160005b818110156200067757602081850181015186830152016200065b565b8181111562000687576000828601525b509290920192915050565b6000620006ab620006a4838662000654565b8462000654565b949350505050565b600081526000620006c8600183018462000654565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620006ab600e83018462000654565b60805160a051611f72620007336000396000610723015260006106f60152611f726000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611a47565b6100cd565b60405161008c9190611b65565b60405180910390f35b61007f6104c8565b6100b06100ab366004611bb6565b610682565b005b61007f6100c0366004611c06565b610986565b61007f610ad7565b606060006100da856111bb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c6a565b60200151905060008060005b86518110156102f0578387828151811061017457610174611cb9565b602002602001015160a0018181525050600285518161019557610195611ce8565b048782815181106101a8576101a8611cb9565b602002602001015160c00181815250506101db888883815181106101ce576101ce611cb9565b6020026020010151610682565b61020b8782815181106101f0576101f0611cb9565b602002602001015160800151846112f990919063ffffffff16565b925061023d87828151811061022257610222611cb9565b602002602001015160600151836112f990919063ffffffff16565b915086818151811061025157610251611cb9565b60200260200101516020015187828151811061026f5761026f611cb9565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff81111561031357610313611716565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611cb9565b602002602001015182828151811061037f5761037f611cb9565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b1611716565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611cb9565b6020026020010151610986565b82828151811061042d5761042d611cb9565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f611716565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250611310565b96505050505050505b9392505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104660e08401819052610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526110cd6101c08501526101e08401819052610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840181905261038084018190526103a084018190526103c084018190526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084018190526105408401819052610560840181905261058084018190526105a084018190526105c080850182905284528451808401865291820181905281850152928352915b60405160200161066e929190611d17565b604051602081830303815290604052905090565b805182515181106106ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b600061071a7f000000000000000000000000000000000000000000000000000000000000000061144d565b905060006107477f000000000000000000000000000000000000000000000000000000000000000061144d565b905060008080600080602088026020018a5101519050805193505b8385101561090b576002850194508481015180601e1a935080601f1a925050600683101561082657826107b65789602001515189608001510182106107a657600080fd5b604089018051600101905261080d565b60018314156107cf57886040015182106107a657600080fd5b60028314156107e857604089018051600101905261080d565b600383141561080d578860a00151821061080157600080fd5b60408901805160010190525b6004831415610821576108218a8a8461147b565b6108ee565b8860c001518310610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108b28463ffffffff8416565b60408c018051919091039081905260608c01516108ce916112f9565b60608c01526108e08463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610901916112f9565b60608a0152610762565b606089015160ff101561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a1757610a17611716565b6040519080825280601f01601f191660200182016040528015610a41576020820181803683370190505b509050600660018381018160005b82821015610ac95781890151601f1a6002830615610aab5785811015610a7d57600182019181908801602101535b858110610aab57600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610abc5780826020018801535b5060019182019101610a4f565b509398975050505050505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104060e08401819052611046610100850181905261104c61012086018190526101408601839052610160860183905261018086018390526101a086018190526110526101c08701526110c76101e0870181905261020087018190526102208701819052610240870152610260860182905261028086018390526102a086018390526102c086018290526102e086018290526110cd61030087018190526103208701919091526103408601839052610360860181905261038086018390526103a086018290526103c086018390526103e08601819052610400860181905261042086018190526104408601819052610460860181905261048086018190526104a086018190526104c086018190526104e08601819052610500860181905261052086015261113c61054086015261114261056086015261058085018290526111486105a08601526105c080860183905285528551808501875292830152818501529283529161065d565b600080610ca583604051602001610c919190611d46565b604051602081830303815290604052610e93565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cff576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104060e08201819052611046610100830181905261104c61012084018190526101408401839052610160840183905261018084018390526101a084018190526110526101c08501526110c76101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e084018290526110cd61030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083015261113c61054083015261114261056083015261058082018190526111486105a08301526105c082810191909152815290565b6060815182604051602001610ea9929190611d6c565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104660e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110cd6101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b60008082116110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b50600090565b6000808211611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b60020190565b60030190565b6000601f8216806111b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926111ef911661144d565b90508051600014156111b55761129c6112978473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112929190810190611e03565b61151a565b610c7a565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c1836111bb565b60008183101561130957816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161135c9190611e7a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113989291602001611eb0565b604051602081830303815290604052905060005b8560400151518110156114445781866040015182815181106113d0576113d0611cb9565b60200260200101515160001b876040015183815181106113f2576113f2611cb9565b602002602001015160405160200161140c93929190611ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016113ac565b50949350505050565b60606111b58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611624565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114c591906112f9565b606084015260808301516114d990826112f9565b60808401528251600783168085526001600385811c161b919060005b8381101561150f576115078888610682565b6001016114f5565b505090935250505050565b6060602082518161152d5761152d611ce8565b0615611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b600060108351816115a8576115a8611ce8565b0467ffffffffffffffff8111156115c1576115c1611716565b6040519080825280601f01601f1916602001820160405280156115eb576020820181803683370190505b509050600060025b845182101561161b5780830180516020848801810151909117909152909101906002016115f3565b50909392505050565b6060833b806116435750506040805160208101909152600081526104c1565b808411156116615750506040805160208101909152600081526104c1565b838310156116ac576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b83830384820360008282106116c157826116c3565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611714611f0d565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176857611768611716565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117b5576117b5611716565b604052919050565b600067ffffffffffffffff8211156117d7576117d7611716565b5060051b60200190565b600067ffffffffffffffff8211156117fb576117fb611716565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261183857600080fd5b813561184b611846826117e1565b61176e565b81815284602083860101111561186057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261188e57600080fd5b8135602061189e611846836117bd565b82815260059290921b840181019181810190868411156118bd57600080fd5b8286015b848110156118d857803583529183019183016118c1565b509695505050505050565b6000604082840312156118f557600080fd5b6118fd611745565b9050813567ffffffffffffffff8082111561191757600080fd5b818401915084601f83011261192b57600080fd5b8135602061193b611846836117bd565b82815260059290921b8401810191818101908884111561195a57600080fd5b8286015b84811015611992578035868111156119765760008081fd5b6119848b86838b0101611827565b84525091830191830161195e565b50865250858101359350828411156119a957600080fd5b6119b58785880161187d565b818601525050505092915050565b600060e082840312156119d557600080fd5b60405160e0810181811067ffffffffffffffff821117156119f8576119f8611716565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a5c57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a8057600080fd5b925060208481013567ffffffffffffffff80821115611a9e57600080fd5b611aaa888389016118e3565b94506040870135915080821115611ac057600080fd5b508501601f81018713611ad257600080fd5b8035611ae0611846826117bd565b81815260e0918202830184019184820191908a841115611aff57600080fd5b938501935b83851015611b2557611b168b866119c3565b83529384019391850191611b04565b5080955050505050509250925092565b60005b83811015611b50578181015183820152602001611b38565b83811115611b5f576000848401525b50505050565b6020815260008251806020840152611b84816040850160208701611b35565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611bca57600080fd5b823567ffffffffffffffff811115611be157600080fd5b611bed858286016118e3565b925050611bfd84602085016119c3565b90509250929050565b60008060408385031215611c1957600080fd5b823567ffffffffffffffff80821115611c3157600080fd5b611c3d86838701611827565b93506020850135915080821115611c5357600080fd5b50611c6085828601611827565b9150509250929050565b600060408284031215611c7c57600080fd5b6040516040810181811067ffffffffffffffff82111715611c9f57611c9f611716565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611d29818460208801611b35565b835190830190611d3d818360208801611b35565b01949350505050565b6000815260008251611d5f816001850160208701611b35565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611df581600e850160208701611b35565b91909101600e019392505050565b600060208284031215611e1557600080fd5b815167ffffffffffffffff811115611e2c57600080fd5b8201601f81018413611e3d57600080fd5b8051611e4b611846826117e1565b818152856020838501011115611e6057600080fd5b611e71826020830160208601611b35565b95945050505050565b815160009082906020808601845b83811015611ea457815185529382019390820190600101611e88565b50929695505050505050565b82815260008251611ec8816020850160208701611b35565b919091016020019392505050565b60008451611ee8818460208901611b35565b82018481528351611f00816020808501908801611b35565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220e97abc24d5a563a1c2bac18acd632acf90c5167dfec286831ed902b2a6c9c36c64736f6c634300080a0033"; type OrderBookStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OrderBook__factory.ts b/src/typechain/factories/OrderBook__factory.ts index c363341..3a142ca 100644 --- a/src/typechain/factories/OrderBook__factory.ts +++ b/src/typechain/factories/OrderBook__factory.ts @@ -676,7 +676,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620046383803806200463883398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614596620000a26000396000610d9e01526000610dbf01526145966000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bb93549b1161005b578063bb93549b146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806384e07cdc146100aa575b600080fd5b6100956100903660046134cb565b610135565b005b6100956100a536600461351e565b610258565b6100956100b836600461378e565b6103ac565b6100956100cb36600461382c565b610d97565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b36600461351e565b610e60565b610128610f5a565b60405161010491906138dd565b61014260208201826138f0565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e98361390d565b611124565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b90339085906139cd565b60405180910390a15b5050565b3360009081526001602090815260408220908290610278908501856138f0565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf9084013583611173565b90506102cb8183613abe565b336000908152600160209081526040822091906102ea908701876138f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613b0d565b60405180910390a16103a7338261038a60208701876138f0565b73ffffffffffffffffffffffffffffffffffffffff16919061118d565b505050565b60006103b784611124565b905060006103c484611124565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff1614610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff1614610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b61061b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b6040516106569493929190613bb2565b60405180910390a16106906040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61069d8b60c00151611261565b90506106e16106d960405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff168152506113cd565b826000611421565b5080602001516001826000015103815181106106ff576106ff613c10565b60200260200101519450806020015160028260000151038151811061072657610726613c10565b6020026020010151925061073d8a60c00151611261565b90506107796106d960405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff168152506113cd565b50806020015160018260000151038151811061079757610797613c10565b6020026020010151935080602001516002826000015103815181106107be576107be613c10565b6020026020010151915050610875600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361117390919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e01518352905220549092506108c9908290611173565b90506108df6108d882856116f7565b8390611173565b85526108f56108ee83866116f7565b8290611173565b6020860152845115158061090d575060008560200151115b610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b845161097f90856116f7565b6040860152602085015161099390846116f7565b606086015250508251159150610a8b9050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b01518352905290812080549091906109fe908490613abe565b909155505060a086015160011615610a3657805160008481526002602052604081208054909190610a30908490613c3f565b90915550505b60a086015160021615610a8b5780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610a85908490613c3f565b90915550505b602081015115610b8757602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610af0908490613abe565b909155505060a085015160011615610b2f578060200151600260008481526020019081526020016000206000828254610b299190613c3f565b90915550505b60a085015160021615610b875760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610b81908490613c3f565b90915550505b604081015115610bf257604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610bec908490613c3f565b90915550505b606081015115610c5c576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610c56908490613c3f565b90915550505b60608101518151600091610c6f91613abe565b9050600082604001518360200151610c879190613abe565b90508115610ce25733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610cdc908490613c3f565b90915550505b8015610d3d5733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610d37908490613c3f565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b6000610dec7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610de785613ce1565b611716565b90506000610df982611124565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb890610e539033908590613e31565b60405180910390a1505050565b33600090815260016020908152604080832090840135929091610e85908501856138f0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee39190613c3f565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a9033908490613e60565b60405180910390a1610f5733306040840135610f3960208601866138f0565b73ffffffffffffffffffffffffffffffffffffffff169291906119a4565b50565b604080516105808101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611e4d60e0820152611e58610100820152611e63610120820152611e6e610140820152611e79610160820152611eec610180820152611f526101a0820152611f926101c0820152611fc66101e0820152611ffa61020082015261204161022082015261209e6102408201526120d76102608201526121156102808201526121676102a08201526121c46102c08201526121f86102e082015261222c61030082015261225e6103208201526122906103408201526122c26103608201526122ef61038082015261234a6103a08201526123a06103c08201526123f76103e082015261244e6104008201526124826104208201526124ac6104408201526125936104608201526125ef61048082015261266b6104a08201526127256104c082018190526127cf6104e083015261050082015261284f610520820152612957610540820152612a7561056080830191909152815260408051606081018252612c726020820152612cad81830152908152604051602001611110929190613e8a565b604051602081830303815290604052905090565b6000816040516020016111379190613eb9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60008183106111825781611184565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a08565b6112936040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6112c56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156112f9576112f961353a565b604051908082528060200260200182016040528015611322578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156113595761135961353a565b604051908082528060200260200182016040528015611382578160200160208202803683370190505b5090506020870151602002604001870160005b848110156113bc578160208202602001840152815160200182019150600181019050611395565b505060408501525091949350505050565b60606113d76134ad565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff168183015260405161140a91839101613ecc565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156116dd576003890198508886015180601f1a975061ffff8160081c16985050600688101561165557876114a457866020028401518252602082019150611668565b60018814156114c157602087028301518252602082019150611668565b600288141561154e578c518760200210611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d01518252602082019150611668565b60038814156115965760006115846040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611668565b60048814156115b2576115ab8d8d848a611b14565b9150611668565b6060876115e0578c6040516020016115ca9190613f8d565b604051602081830303815290604052905061163f565b60018814156115f9576115f28d611c81565b905061163f565b6002881415611615576020808e01516040516115ca9201614024565b600388141561163f578c516040805160208101929092520160405160208183030381529060405290505b80511561164f5761164f81611dbe565b50611668565b87611664888463ffffffff8416565b9250505b60208c0151518c5111156116d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b61145f565b6020838303048c52509750505050505050505b9392505050565b6000670de0b6b3a764000061170c8385614089565b61118491906140c6565b6117986040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b6117d86040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6118396040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816117f9579050509050818160008151811061186257611862613c10565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff16815260200185606001518152602001856080015181526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860a00151866040518463ffffffff1660e01b815260040161193393929190614101565b6000604051808303816000875af1158015611952573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261199891908101906141f4565b90529695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a029085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111df565b50505050565b6000611a6a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16612d319092919063ffffffff16565b8051909150156103a75780806020019051810190611a88919061426b565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b600060078216600383811c16828082611b5357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611b9e565b8260011415611b7757506fffffffffffffffffffffffffffffffff90506080611b9e565b8260021415611b93575067ffffffffffffffff90506040611b9e565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611bc157611bc161353a565b604051908082528060200260200182016040528015611bea578160200160208202803683370190505b50905060208082019083028a03815b8b821015611c11578151815260209182019101611bf9565b505060608b015160808c015160209081029091010160005b610100811015611c6f5760208502830182845b82811015611c58578051841c8a16825260209182019101611c3c565b505050611c668e8e8b611421565b9b508501611c29565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611ccd9190614024565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d09929160200161428d565b604051602081830303815290604052905060005b856040015151811015611db5578186604001518281518110611d4157611d41613c10565b60200260200101515160001b87604001518381518110611d6357611d63613c10565b6020026020010151604051602001611d7d939291906142b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611d1d565b50949350505050565b610f5781604051602401611dd291906138dd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612d48565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611edf82611ed9858a612d69565b906116f7565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611edf82611f4c858a612d69565b90612dea565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611f868287612d69565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611f868287612dff565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611f868287612e5d565b600060208302820380516000602083015b85811015612033578051830191508282101561202657600080fd5b909150819060200161200b565b505081526020019392505050565b6020828102820380516000928201835b858210801561207f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612033575080516020909101906120978382612ea8565b9250612051565b600060208302820380516000602083015b8581101561203357805183039150828211156120ca57600080fd5b90915081906020016120af565b6020828102820380516000928201835b85821080156120f65750826000105b156120335750805160209091019061210e8382612ee3565b92506120e7565b60006020830282038051600080602084015b8681101561215857831561215057805192508284029150828483041461214c57600080fd5b8193505b602001612127565b50505081526020019392505050565b6020828102820380516000928201835b85821080156121a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612033575080516020909101906121bd8382612ef9565b9250612177565b600060208302820380516000602083015b858110156120335780519150816121eb57600080fd5b91819004916020016121d5565b600060208302820380516000602083015b8581101561203357805191508161221f57600080fd5b9181900691602001612209565b6020828102820380516000928201835b8582101561203357508051602090910190612257818461440a565b925061223c565b6020828102820380516000928201835b858210156120335750805182811015612285578092505b60208201915061226e565b6020828102820380516000928201835b8582101561203357508051828111156122b7578092505b6020820191506122a0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b8381101561247757805161246f5760008252612477565b602001612458565b506020019392505050565b6000602083028203805b8381101561247757805180156124a3578252612477565b5060200161248c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa15801561256f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611edf9190614416565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611edf8383612f28565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561265c85858585612f87565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156126995761269961353a565b6040519080825280602002602001820160405280156126c2578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156126fe578151816020018601526020820191506020810190506126dc565b505051905060006127118383898961302d565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612552565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561282b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f869190614416565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612910573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612934919061442f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa158015612a43573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a679190614416565b909452509395945050505050565b60008060008467ffffffffffffffff811115612a9357612a9361353a565b604051908082528060200260200182016040528015612abc578160200160208202803683370190505b50905060008567ffffffffffffffff811115612ada57612ada61353a565b604051908082528060200260200182016040528015612b03578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612b58578251815260209283019201612b40565b5050602088028101602084015b81831015612b7d578251815260209283019201612b65565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612bd7908790879060040161444c565b600060405180830381865afa158015612bf4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612c3a91908101906144af565b9050846020820160208a0281015b80821015612c63578151835260209283019290910190612c48565b50909998505050505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b6060612d40848460008561317d565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6000808260121415612d7e5783915050611187565b8260121115612daa57506012829003612d9881600a61440a565b612da29085614089565b915050611187565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612dd981600a61440a565b612da290856140c6565b5092915050565b60008161170c670de0b6b3a764000085614089565b6000806012831415612e145783915050611187565b8260121115612e2e57506012829003612dd981600a61440a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201612d9881600a61440a565b600081810b612e6d575081611187565b60008260000b1315612e9557612e8482600a614535565b612e8e9084614089565b9050611187565b60ff600083900316612dd981600a61440a565b6000828201838110612eba5780612d40565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000818311612ef3576000611184565b50900390565b600082612f0857506000611187565b82820282848281612f1b57612f1b61405a565b041415612eba5780612d40565b60008060015b60088111612f7f576000612f428683613313565b90506000612f508684613313565b90506000612f5e8383612ee3565b9050612f6e8560018603836133c0565b94505060019092019150612f2e9050565b509392505050565b6000826008811115612ff5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156130215763ffffffff6020820290811b199890981685891b17979150600101612ff9565b50959695505050505050565b835160009081908190819060015b6008811161316f5760009250828761307457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613078565b5060005b60005b8381101561312d576130a68c828151811061309857613098613c10565b602002602001015184613313565b95508a86116130f857886130c5576130be8683611173565b91506130ef565b60018914156130d8576130be868361344a565b6002891480156130e6575084155b156130ef578591505b60019450613125565b89613125577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061312d565b60010161307b565b508361315657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6131648660018403836133c0565b95505060010161303b565b509298975050505050505050565b60608247101561320f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b61328d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516132b69190614544565b60006040518083038185875af1925050503d80600081146132f3576040519150601f19603f3d011682016040523d82523d6000602084013e6132f8565b606091505b509150915061330882828661345a565b979650505050505050565b6000816008811115613381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b8261338f5760009150612de3565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b600082600881111561342e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310156111825781611184565b606083156134695750816116f0565b8251156134795782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d291906138dd565b60405180604001604052806002906020820280368337509192915050565b6000602082840312156134dd57600080fd5b813567ffffffffffffffff8111156134f457600080fd5b820160e081850312156116f057600080fd5b60006060828403121561351857600080fd5b50919050565b60006060828403121561353057600080fd5b6111848383613506565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561358c5761358c61353a565b60405290565b60405160c0810167ffffffffffffffff8111828210171561358c5761358c61353a565b6040805190810167ffffffffffffffff8111828210171561358c5761358c61353a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561361f5761361f61353a565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b803561365481613627565b919050565b600067ffffffffffffffff8211156136735761367361353a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126136b057600080fd5b81356136c36136be82613659565b6135d8565b8181528460208386010111156136d857600080fd5b816020850160208301376000918101602001919091529392505050565b600060e0828403121561370757600080fd5b61370f613569565b905061371a82613649565b815261372860208301613649565b60208201526040820135604082015261374360608301613649565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff81111561377657600080fd5b6137828482850161369f565b60c08301525092915050565b600080600083850360808112156137a457600080fd5b843567ffffffffffffffff808211156137bc57600080fd5b6137c8888389016136f5565b955060208701359150808211156137de57600080fd5b506137eb878288016136f5565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561381e57600080fd5b506040840190509250925092565b60006020828403121561383e57600080fd5b813567ffffffffffffffff81111561385557600080fd5b820160c081850312156116f057600080fd5b60005b8381101561388257818101518382015260200161386a565b83811115611a025750506000910152565b600081518084526138ab816020860160208601613867565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006111846020830184613893565b60006020828403121561390257600080fd5b81356116f081613627565b600061118736836136f5565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261394e57600080fd5b830160208101925035905067ffffffffffffffff81111561396e57600080fd5b80360383131561397d57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015283356139fb81613627565b811660408401526020840135613a1081613627565b8181166060850152505060408301356080830152613a3060608401613649565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613a6e60c0840184613919565b60e0610100850152613a8561012085018284613984565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613ad057613ad0613a8f565b500390565b8035613ae081613627565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613b376020830185613ad5565b826080830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c0850152612d4060e0850182613893565b73ffffffffffffffffffffffffffffffffffffffff8516815260a060208201526000613be160a0830186613b45565b8281036040840152613bf38186613b45565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115613c5257613c52613a8f565b500190565b600067ffffffffffffffff821115613c7157613c7161353a565b5060051b60200190565b600082601f830112613c8c57600080fd5b81356020613c9c6136be83613c57565b82815260059290921b84018101918181019086841115613cbb57600080fd5b8286015b84811015613cd65780358352918301918301613cbf565b509695505050505050565b600060c08236031215613cf357600080fd5b613cfb613592565b8235613d0681613627565b8152602083810135818301526040840135613d2081613627565b80604084015250606084013560608301526080840135608083015260a084013567ffffffffffffffff80821115613d5657600080fd5b818601915060408236031215613d6b57600080fd5b613d736135b5565b823582811115613d8257600080fd5b830136601f820112613d9357600080fd5b8035613da16136be82613c57565b81815260059190911b82018601908681019036831115613dc057600080fd5b8784015b83811015613df857803587811115613ddc5760008081fd5b613dea368b8389010161369f565b845250918801918801613dc4565b5084525050508284013582811115613e0f57600080fd5b613e1b36828601613c7b565b9482019490945260a08501525091949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612d406040830184613b45565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016116f06020830184613ad5565b60008351613e9c818460208801613867565b835190830190613eb0818360208801613867565b01949350505050565b6020815260006111846020830184613b45565b60008183825b6002811015613ef1578151835260209283019290910190600101613ed2565b50505060408201905092915050565b600081518084526020808501945080840160005b83811015613f3057815187529582019590820190600101613f14565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b85811015613f80578383038952613f6e838351613893565b98850198925090840190600101613f56565b5090979650505050505050565b60208152815160208201526000602083015160a06040840152613fb360c0840182613f00565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016060860152613fef8383613f3b565b925060608601519150808584030160808601525061400d8282613f00565b915050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561404e57815185529382019390820190600101614032565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156140c1576140c1613a8f565b500290565b6000826140fc577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261413c83880183613f3b565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526141778483613f00565b898103848b01528a51808252878c019550908701925060005b818110156141e25785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e090930192600101614190565b50919c9b505050505050505050505050565b60006020828403121561420657600080fd5b815167ffffffffffffffff81111561421d57600080fd5b8201601f8101841361422e57600080fd5b805161423c6136be82613659565b81815285602083850101111561425157600080fd5b614262826020830160208601613867565b95945050505050565b60006020828403121561427d57600080fd5b815180151581146116f057600080fd5b828152600082516142a5816020850160208701613867565b919091016020019392505050565b600084516142c5818460208901613867565b820184815283516142dd816020808501908801613867565b0160200195945050505050565b600181815b8085111561434357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561432957614329613a8f565b8085161561433657918102915b93841c93908002906142ef565b509250929050565b60008261435a57506001611187565b8161436757506000611187565b816001811461437d5760028114614387576143a3565b6001915050611187565b60ff84111561439857614398613a8f565b50506001821b611187565b5060208310610133831016604e8410600b84101617156143c6575081810a611187565b6143d083836142ea565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561440257614402613a8f565b029392505050565b6000611184838361434b565b60006020828403121561442857600080fd5b5051919050565b60006020828403121561444157600080fd5b81516116f081613627565b604080825283519082018190526000906020906060840190828701845b8281101561449b57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614469565b50505083810382850152613a858186613f00565b600060208083850312156144c257600080fd5b825167ffffffffffffffff8111156144d957600080fd5b8301601f810185136144ea57600080fd5b80516144f86136be82613c57565b81815260059190911b8201830190838101908783111561451757600080fd5b928401925b828410156133085783518252928401929084019061451c565b600061118460ff84168361434b565b60008251614556818460208701613867565b919091019291505056fea26469706673582212201849bdb7eb2abd02ec8db0c40492bb850654e3af371edee0ce96229617e4382864736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506040516200496b3803806200496b83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516148c9620000a26000396000610d9e01526000610dbf01526148c96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bb93549b1161005b578063bb93549b146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806384e07cdc146100aa575b600080fd5b61009561009036600461379a565b610135565b005b6100956100a53660046137ed565b610258565b6100956100b8366004613a5d565b6103ac565b6100956100cb366004613afb565b610d97565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b3660046137ed565b610e60565b610128610f5a565b6040516101049190613bac565b6101426020820182613bbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983613bdc565b61113f565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b9033908590613c9c565b60405180910390a15b5050565b336000908152600160209081526040822090829061027890850185613bbf565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf908401358361118e565b90506102cb8183613d8d565b336000908152600160209081526040822091906102ea90870187613bbf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613ddc565b60405180910390a16103a7338261038a6020870187613bbf565b73ffffffffffffffffffffffffffffffffffffffff1691906111a8565b505050565b60006103b78461113f565b905060006103c48461113f565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff1614610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff1614610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b61061b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b6040516106569493929190613e81565b60405180910390a16106906040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61069d8b60c0015161127c565b90506106e16106d960405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff168152506113e8565b82600061143c565b5080602001516001826000015103815181106106ff576106ff613edf565b60200260200101519450806020015160028260000151038151811061072657610726613edf565b6020026020010151925061073d8a60c0015161127c565b90506107796106d960405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff168152506113e8565b50806020015160018260000151038151811061079757610797613edf565b6020026020010151935080602001516002826000015103815181106107be576107be613edf565b6020026020010151915050610875600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361118e90919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e01518352905220549092506108c990829061118e565b90506108df6108d88285611712565b839061118e565b85526108f56108ee8386611712565b829061118e565b6020860152845115158061090d575060008560200151115b610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b845161097f9085611712565b604086015260208501516109939084611712565b606086015250508251159150610a8b9050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b01518352905290812080549091906109fe908490613d8d565b909155505060a086015160011615610a3657805160008481526002602052604081208054909190610a30908490613f0e565b90915550505b60a086015160021615610a8b5780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610a85908490613f0e565b90915550505b602081015115610b8757602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610af0908490613d8d565b909155505060a085015160011615610b2f578060200151600260008481526020019081526020016000206000828254610b299190613f0e565b90915550505b60a085015160021615610b875760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610b81908490613f0e565b90915550505b604081015115610bf257604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610bec908490613f0e565b90915550505b606081015115610c5c576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610c56908490613f0e565b90915550505b60608101518151600091610c6f91613d8d565b9050600082604001518360200151610c879190613d8d565b90508115610ce25733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610cdc908490613f0e565b90915550505b8015610d3d5733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610d37908490613f0e565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b6000610dec7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610de785613fb0565b611731565b90506000610df98261113f565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb890610e539033908590614100565b60405180910390a1505050565b33600090815260016020908152604080832090840135929091610e8590850185613bbf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee39190613f0e565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a903390849061412f565b60405180910390a1610f5733306040840135610f396020860186613bbf565b73ffffffffffffffffffffffffffffffffffffffff169291906119bf565b50565b604080516105e08101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611e6860e08201819052611f5c610100830152611fe86101208301526121096101408301526101608201526121b26101808201526122ba6101a082015261238e6101c082015261258b6101e08201526125966102008201526125a16102208201526125ac6102408201526125b76102608201526125eb6102808201526126516102a08201526126b76102c08201526126eb6102e082015261271f6103008201526127546103208201526127af61034082015261280561036082015261282e6103808201526128856103a08201526128b26103c08201526129096103e08201526129746104008201526129d1610420820152612a0f610440820152612a48610460820152612a7c610480820152612aae6104a0820152612ae06104c0820152612b126104e0820152612b46610500820152612b98610520820152612bd1610540820152612c83610560820152612db0610580820152612e0c6105a0820152612ec66105c080830191909152815260408051606081018252612f426020820152612f7d8183015290815260405160200161112b929190614159565b604051602081830303815290604052905090565b6000816040516020016111529190614188565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b600081831061119d578161119f565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a23565b6112ae6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6112e06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561131457611314613809565b60405190808252806020026020018201604052801561133d578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561137457611374613809565b60405190808252806020026020018201604052801561139d578160200160208202803683370190505b5090506020870151602002604001870160005b848110156113d75781602082026020018401528151602001820191506001810190506113b0565b505060408501525091949350505050565b60606113f261377c565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff16818301526040516114259183910161419b565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156116f8576003890198508886015180601f1a975061ffff8160081c16985050600688101561167057876114bf57866020028401518252602082019150611683565b60018814156114dc57602087028301518252602082019150611683565b6002881415611569578c518760200210611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d01518252602082019150611683565b60038814156115b157600061159f6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611683565b60048814156115cd576115c68d8d848a611b2f565b9150611683565b6060876115fb578c6040516020016115e5919061425c565b604051602081830303815290604052905061165a565b60018814156116145761160d8d611c9c565b905061165a565b6002881415611630576020808e01516040516115e592016142f3565b600388141561165a578c516040805160208101929092520160405160208183030381529060405290505b80511561166a5761166a81611dd9565b50611683565b8761167f888463ffffffff8416565b9250505b60208c0151518c5111156116f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b61147a565b6020838303048c52509750505050505050505b9392505050565b6000670de0b6b3a76400006117278385614358565b61119f9190614395565b6117b36040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b6117f36040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6118546040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081611814579050509050818160008151811061187d5761187d613edf565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff16815260200185606001518152602001856080015181526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860a00151866040518463ffffffff1660e01b815260040161194e939291906143d0565b6000604051808303816000875af115801561196d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119b391908101906144c3565b90529695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a1d9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111fa565b50505050565b6000611a85826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130019092919063ffffffff16565b8051909150156103a75780806020019051810190611aa3919061453a565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b600060078216600383811c16828082611b6e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611bb9565b8260011415611b9257506fffffffffffffffffffffffffffffffff90506080611bb9565b8260021415611bae575067ffffffffffffffff90506040611bb9565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611bdc57611bdc613809565b604051908082528060200260200182016040528015611c05578160200160208202803683370190505b50905060208082019083028a03815b8b821015611c2c578151815260209182019101611c14565b505060608b015160808c015160209081029091010160005b610100811015611c8a5760208502830182845b82811015611c73578051841c8a16825260209182019101611c57565b505050611c818e8e8b61143c565b9b508501611c44565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611ce891906142f3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d24929160200161455c565b604051602081830303815290604052905060005b856040015151811015611dd0578186604001518281518110611d5c57611d5c613edf565b60200260200101515160001b87604001518381518110611d7e57611d7e613edf565b6020026020010151604051602001611d9893929190614582565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611d38565b50949350505050565b610f5781604051602401611ded9190613bac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613018565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f91906145b9565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdc91906145b9565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fb91906145b9565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611f0e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229791906145d2565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016120ba565b60008060008467ffffffffffffffff8111156123ac576123ac613809565b6040519080825280602002602001820160405280156123d5578160200160208202803683370190505b50905060008567ffffffffffffffff8111156123f3576123f3613809565b60405190808252806020026020018201604052801561241c578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612471578251815260209283019201612459565b5050602088028101602084015b8183101561249657825181526020928301920161247e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906124f090879087906004016145ef565b600060405180830381865afa15801561250d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125539190810190614652565b9050846020820160208a0281015b8082101561257c578151835260209283019290910190612561565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611fdc8287613039565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611f4f8261264b858a613039565b906130ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611f4f826126b1858a613039565b90611712565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611fdc82876130cf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611fdc828761311a565b6000602083028203805b838110156127495780518015612740578252612749565b50602001612729565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156127495780516128265760008252612749565b60200161280f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561294757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129665750805160209091019061295f8382613178565b9250612919565b505081526020019392505050565b6020828102820380516000928201835b85821080156129b257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612966575080516020909101906129ca83826131b3565b9250612984565b6020828102820380516000928201835b85821080156129f05750826000105b1561296657508051602090910190612a0883826131e2565b92506129e1565b600060208302820380516000602083015b858110156129665780518301915082821015612a3b57600080fd5b9091508190602001612a20565b600060208302820380516000602083015b85811015612966578051915081612a6f57600080fd5b9181900491602001612a59565b6020828102820380516000928201835b8582101561296657508051602090910190612aa781846147f8565b9250612a8c565b6020828102820380516000928201835b858210156129665750805182811115612ad5578092505b602082019150612abe565b6020828102820380516000928201835b858210156129665750805182811015612b07578092505b602082019150612af0565b600060208302820380516000602083015b85811015612966578051915081612b3957600080fd5b9181900691602001612b23565b60006020830282038051600080602084015b86811015612b89578315612b81578051925082840291508284830414612b7d57600080fd5b8193505b602001612b58565b50505081526020019392505050565b600060208302820380516000602083015b858110156129665780518303915082821115612bc457600080fd5b9091508190602001612ba9565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906120ba9086908690600401614804565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90612d5c90879087908790600401614833565b602060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d91906145b9565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611f4f83836131f8565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115612e3a57612e3a613809565b604051908082528060200260200182016040528015612e63578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612e9f57815181602001860152602082019150602081019050612e7d565b50505190506000612eb283838989613257565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085612f33858585856133a7565b90955250949695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b6060613010848460008561344d565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561304e57839150506111a2565b826012111561307a5750601282900361306881600a6147f8565b6130729085614358565b9150506111a2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016130a981600a6147f8565b6130729085614395565b5092915050565b600081611727670de0b6b3a764000085614358565b600081810b6130df5750816111a2565b60008260000b1315613107576130f682600a614868565b6131009084614358565b90506111a2565b60ff6000839003166130a981600a6147f8565b600080601283141561312f57839150506111a2565b8260121115613149575060128290036130a981600a6147f8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161306881600a6147f8565b600082820183811061318a5780613010565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000826131c2575060006111a2565b828202828482816131d5576131d5614329565b04141561318a5780613010565b60008183116131f257600061119f565b50900390565b60008060015b6008811161324f57600061321286836135e3565b9050600061322086846135e3565b9050600061322e83836131e2565b905061323e856001860383613690565b945050600190920191506131fe9050565b509392505050565b835160009081908190819060015b600881116133995760009250828761329e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132a2565b5060005b60005b83811015613357576132d08c82815181106132c2576132c2613edf565b6020026020010151846135e3565b95508a861161332257886132ef576132e8868361118e565b9150613319565b6001891415613302576132e88683613719565b600289148015613310575084155b15613319578591505b6001945061334f565b8961334f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613357565b6001016132a5565b508361338057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61338e866001840383613690565b955050600101613265565b509298975050505050505050565b6000826008811115613415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156134415763ffffffff6020820290811b199890981685891b17979150600101613419565b50959695505050505050565b6060824710156134df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b61355d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516135869190614877565b60006040518083038185875af1925050503d80600081146135c3576040519150601f19603f3d011682016040523d82523d6000602084013e6135c8565b606091505b50915091506135d8828286613729565b979650505050505050565b6000816008811115613651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b8261365f57600091506130b3565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156136fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561119d578161119f565b6060831561373857508161170b565b8251156137485782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190613bac565b60405180604001604052806002906020820280368337509192915050565b6000602082840312156137ac57600080fd5b813567ffffffffffffffff8111156137c357600080fd5b820160e0818503121561170b57600080fd5b6000606082840312156137e757600080fd5b50919050565b6000606082840312156137ff57600080fd5b61119f83836137d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561385b5761385b613809565b60405290565b60405160c0810167ffffffffffffffff8111828210171561385b5761385b613809565b6040805190810167ffffffffffffffff8111828210171561385b5761385b613809565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156138ee576138ee613809565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b8035613923816138f6565b919050565b600067ffffffffffffffff82111561394257613942613809565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261397f57600080fd5b813561399261398d82613928565b6138a7565b8181528460208386010111156139a757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082840312156139d657600080fd5b6139de613838565b90506139e982613918565b81526139f760208301613918565b602082015260408201356040820152613a1260608301613918565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff811115613a4557600080fd5b613a518482850161396e565b60c08301525092915050565b60008060008385036080811215613a7357600080fd5b843567ffffffffffffffff80821115613a8b57600080fd5b613a97888389016139c4565b95506020870135915080821115613aad57600080fd5b50613aba878288016139c4565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613aed57600080fd5b506040840190509250925092565b600060208284031215613b0d57600080fd5b813567ffffffffffffffff811115613b2457600080fd5b820160c0818503121561170b57600080fd5b60005b83811015613b51578181015183820152602001613b39565b83811115611a1d5750506000910152565b60008151808452613b7a816020860160208601613b36565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061119f6020830184613b62565b600060208284031215613bd157600080fd5b813561170b816138f6565b60006111a236836139c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c1d57600080fd5b830160208101925035905067ffffffffffffffff811115613c3d57600080fd5b803603831315613c4c57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528335613cca816138f6565b811660408401526020840135613cdf816138f6565b8181166060850152505060408301356080830152613cff60608401613918565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613d3d60c0840184613be8565b60e0610100850152613d5461012085018284613c53565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613d9f57613d9f613d5e565b500390565b8035613daf816138f6565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613e066020830185613da4565b826080830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c085015261301060e0850182613b62565b73ffffffffffffffffffffffffffffffffffffffff8516815260a060208201526000613eb060a0830186613e14565b8281036040840152613ec28186613e14565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115613f2157613f21613d5e565b500190565b600067ffffffffffffffff821115613f4057613f40613809565b5060051b60200190565b600082601f830112613f5b57600080fd5b81356020613f6b61398d83613f26565b82815260059290921b84018101918181019086841115613f8a57600080fd5b8286015b84811015613fa55780358352918301918301613f8e565b509695505050505050565b600060c08236031215613fc257600080fd5b613fca613861565b8235613fd5816138f6565b8152602083810135818301526040840135613fef816138f6565b80604084015250606084013560608301526080840135608083015260a084013567ffffffffffffffff8082111561402557600080fd5b81860191506040823603121561403a57600080fd5b614042613884565b82358281111561405157600080fd5b830136601f82011261406257600080fd5b803561407061398d82613f26565b81815260059190911b8201860190868101903683111561408f57600080fd5b8784015b838110156140c7578035878111156140ab5760008081fd5b6140b9368b8389010161396e565b845250918801918801614093565b50845250505082840135828111156140de57600080fd5b6140ea36828601613f4a565b9482019490945260a08501525091949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130106040830184613e14565b73ffffffffffffffffffffffffffffffffffffffff831681526080810161170b6020830184613da4565b6000835161416b818460208801613b36565b83519083019061417f818360208801613b36565b01949350505050565b60208152600061119f6020830184613e14565b60008183825b60028110156141c05781518352602092830192909101906001016141a1565b50505060408201905092915050565b600081518084526020808501945080840160005b838110156141ff578151875295820195908201906001016141e3565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b8581101561424f57838303895261423d838351613b62565b98850198925090840190600101614225565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261428260c08401826141cf565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526142be838361420a565b92506060860151915080858403016080860152506142dc82826141cf565b915050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561431d57815185529382019390820190600101614301565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561439057614390613d5e565b500290565b6000826143cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261440b8388018361420a565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261444684836141cf565b898103848b01528a51808252878c019550908701925060005b818110156144b15785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e09093019260010161445f565b50919c9b505050505050505050505050565b6000602082840312156144d557600080fd5b815167ffffffffffffffff8111156144ec57600080fd5b8201601f810184136144fd57600080fd5b805161450b61398d82613928565b81815285602083850101111561452057600080fd5b614531826020830160208601613b36565b95945050505050565b60006020828403121561454c57600080fd5b8151801515811461170b57600080fd5b82815260008251614574816020850160208701613b36565b919091016020019392505050565b60008451614594818460208901613b36565b820184815283516145ac816020808501908801613b36565b0160200195945050505050565b6000602082840312156145cb57600080fd5b5051919050565b6000602082840312156145e457600080fd5b815161170b816138f6565b604080825283519082018190526000906020906060840190828701845b8281101561463e57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161460c565b50505083810382850152613d5481866141cf565b6000602080838503121561466557600080fd5b825167ffffffffffffffff81111561467c57600080fd5b8301601f8101851361468d57600080fd5b805161469b61398d82613f26565b81815260059190911b820183019083810190878311156146ba57600080fd5b928401925b828410156135d8578351825292840192908401906146bf565b600181815b8085111561473157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561471757614717613d5e565b8085161561472457918102915b93841c93908002906146dd565b509250929050565b600082614748575060016111a2565b81614755575060006111a2565b816001811461476b576002811461477557614791565b60019150506111a2565b60ff84111561478657614786613d5e565b50506001821b6111a2565b5060208310610133831016604e8410600b84101617156147b4575081810a6111a2565b6147be83836146d8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147f0576147f0613d5e565b029392505050565b600061119f8383614739565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061301060408301846141cf565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061453160608301846141cf565b600061119f60ff841683614739565b60008251614889818460208701613b36565b919091019291505056fea26469706673582212208dbafb7bcd48b014402a0a55130cd0c770b52b90593b84266a98db1f404653c064736f6c634300080a0033"; type OrderBookConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OwnableUpgradeable__factory.ts b/src/typechain/factories/OwnableUpgradeable__factory.ts deleted file mode 100644 index 3100f92..0000000 --- a/src/typechain/factories/OwnableUpgradeable__factory.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - OwnableUpgradeable, - OwnableUpgradeableInterface, -} from "../OwnableUpgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class OwnableUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): OwnableUpgradeableInterface { - return new utils.Interface(_abi) as OwnableUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): OwnableUpgradeable { - return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable; - } -} diff --git a/src/typechain/factories/PhasedScheduleTest__factory.ts b/src/typechain/factories/PhasedScheduleTest__factory.ts index f2bba9c..740dd50 100644 --- a/src/typechain/factories/PhasedScheduleTest__factory.ts +++ b/src/typechain/factories/PhasedScheduleTest__factory.ts @@ -32,44 +32,20 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "scheduledBlock", + name: "scheduledTime", type: "uint256", }, ], name: "PhaseScheduled", type: "event", }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "phase_", - type: "uint256", - }, - ], - name: "blockNumberForPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [], name: "currentPhase", outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -80,20 +56,20 @@ const _abi = [ inputs: [ { internalType: "uint32[8]", - name: "phaseBlocks_", + name: "phaseTimes_", type: "uint32[8]", }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "phaseAtBlockNumber", + name: "phaseAtTime", outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -108,7 +84,7 @@ const _abi = [ type: "uint256", }, ], - name: "phaseBlocks", + name: "phaseTimes", outputs: [ { internalType: "uint32", @@ -126,10 +102,34 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint32[8]", + name: "phaseTimes_", + type: "uint32[8]", + }, + { + internalType: "uint256", + name: "phase_", + type: "uint256", + }, + ], + name: "timeForPhase", + outputs: [ + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061001961001e565b610194565b600054600163ffffffff909116106100385761003861017e565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261008960008260086100cd565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101595791602002820160005b8382111561012757835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100e3565b80156101575782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610127565b505b50610165929150610169565b5090565b5b80821115610165576000815560010161016a565b634e487b7160e01b600052600160045260246000fd5b610757806101a36000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80639923c94b116100505780639923c94b1461009a578063b8ffd02c146100c2578063e2c45a40146100d557600080fd5b8063055ad42e1461006c578063634991af14610087575b600080fd5b6100746100df565b6040519081526020015b60405180910390f35b6100746100953660046105b8565b610149565b6100ad6100a8366004610642565b61019f565b60405163ffffffff909116815260200161007e565b6100746100d03660046105b8565b6101cf565b6100dd61020e565b005b60408051610100810191829052600091610144919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100fd579050505050505043610149565b905090565b6000805b6008811015610193578381600881106101685761016861065b565b602002015163ffffffff16831015610181579050610199565b8061018b816106b9565b91505061014d565b50600890505b92915050565b600081600881106101af57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60008082116101df576000610201565b826101eb6001846106f2565b600881106101fb576101fb61065b565b60200201515b63ffffffff169392505050565b60006102186100df565b90506102238161024d565b610237610231826001610709565b436102c7565b61024a610245826001610709565b61024d565b50565b80806102576100df565b146102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b80431115610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016102ba565b63ffffffff811061039e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016102ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201806103ca6100df565b14610431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016102ba565b600081600881106104445761044461065b565b60088104919091015460079091166004026101000a900463ffffffff908116146104ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016102ba565b81600082600881106104de576104de61065b565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d33384846040516105639392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146105b357600080fd5b919050565b60008061012083850312156105cc57600080fd5b83601f8401126105db57600080fd5b60405161010080820182811067ffffffffffffffff8211171561060057610600610570565b6040528401818682111561061357600080fd5b855b82811015610634576106268161059f565b825260209182019101610615565b509196903595509350505050565b60006020828403121561065457600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106eb576106eb61068a565b5060010190565b6000828210156107045761070461068a565b500390565b6000821982111561071c5761071c61068a565b50019056fea264697066735822122070d3daeac36cc3b375563d9bfe0d3989c80a16b73546ee561a98a67c5dcdda1864736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061001961001e565b610194565b600054600163ffffffff909116106100385761003861017e565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261008960008260086100cd565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101595791602002820160005b8382111561012757835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100e3565b80156101575782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610127565b505b50610165929150610169565b5090565b5b80821115610165576000815560010161016a565b634e487b7160e01b600052600160045260246000fd5b61074e806101a36000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635d521c10116100505780635d521c101461009a57806393c96557146100ad578063e2c45a40146100d557600080fd5b8063055ad42e1461006c5780631cf355e814610087575b600080fd5b6100746100df565b6040519081526020015b60405180910390f35b6100746100953660046105af565b610149565b6100746100a83660046105af565b610188565b6100c06100bb366004610639565b6101d5565b60405163ffffffff909116815260200161007e565b6100dd610205565b005b60408051610100810191829052600091610144919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100fd579050505050505042610188565b905090565b600080821161015957600061017b565b82610165600184610681565b6008811061017557610175610698565b60200201515b63ffffffff169392505050565b60005b60088110156101cf578281600881106101a6576101a6610698565b602002015163ffffffff168210156101bd576101cf565b806101c7816106c7565b91505061018b565b92915050565b600081600881106101e557600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b600061020f6100df565b905061021a81610244565b61022e610228826001610700565b426102be565b61024161023c826001610700565b610244565b50565b808061024e6100df565b146102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b80421115610328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016102b1565b63ffffffff8110610395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016102b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201806103c16100df565b14610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016102b1565b6000816008811061043b5761043b610698565b60088104919091015460079091166004026101000a900463ffffffff908116146104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016102b1565b81600082600881106104d5576104d5610698565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161055a9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146105aa57600080fd5b919050565b60008061012083850312156105c357600080fd5b83601f8401126105d257600080fd5b60405161010080820182811067ffffffffffffffff821117156105f7576105f7610567565b6040528401818682111561060a57600080fd5b855b8281101561062b5761061d81610596565b82526020918201910161060c565b509196903595509350505050565b60006020828403121561064b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561069357610693610652565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106f9576106f9610652565b5060010190565b6000821982111561071357610713610652565b50019056fea2646970667358221220f10950c720afa7975c9075e2586137ef3be91fde5e056735d42771893c84967364736f6c634300080a0033"; type PhasedScheduleTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/PhasedTest__factory.ts b/src/typechain/factories/PhasedTest__factory.ts index 60f08b6..4d3d8a7 100644 --- a/src/typechain/factories/PhasedTest__factory.ts +++ b/src/typechain/factories/PhasedTest__factory.ts @@ -29,37 +29,13 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "scheduledBlock", + name: "scheduledTime", type: "uint256", }, ], name: "PhaseScheduled", type: "event", }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "phase_", - type: "uint256", - }, - ], - name: "blockNumberForPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [], name: "condition", @@ -79,7 +55,7 @@ const _abi = [ outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -90,20 +66,20 @@ const _abi = [ inputs: [ { internalType: "uint32[8]", - name: "phaseBlocks_", + name: "phaseTimes_", type: "uint32[8]", }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "phaseAtBlockNumber", + name: "phaseAtTime", outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -118,7 +94,7 @@ const _abi = [ type: "uint256", }, ], - name: "phaseBlocks", + name: "phaseTimes", outputs: [ { internalType: "uint32", @@ -171,7 +147,7 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "phaseBlock_", + name: "timestamp_", type: "uint256", }, ], @@ -180,6 +156,30 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "uint32[8]", + name: "phaseTimes_", + type: "uint32[8]", + }, + { + internalType: "uint256", + name: "phase_", + type: "uint256", + }, + ], + name: "timeForPhase", + outputs: [ + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "toggleCondition", @@ -190,7 +190,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040526001805460ff19168117905534801561001c57600080fd5b5061002561002a565b6101a0565b600054600163ffffffff909116106100445761004461018a565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261009560008260086100d9565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101655791602002820160005b8382111561013357835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100ef565b80156101635782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610133565b505b50610171929150610175565b5090565b5b808211156101715760008155600101610176565b634e487b7160e01b600052600160045260246000fd5b6108dd806101af6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80639923c94b11610076578063c50313311161005b578063c50313311461016b578063dab4b15114610178578063e48d8f721461018b57600080fd5b80639923c94b14610130578063b8ffd02c1461015857600080fd5b8063055ad42e146100a85780632b4eaffc146100c3578063634991af146100e657806394c2a686146100f9575b600080fd5b6100b061019e565b6040519081526020015b60405180910390f35b6100d66100d13660046106f6565b610208565b60405190151581526020016100ba565b6100b06100f4366004610757565b61028a565b61012e600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b005b61014361013e3660046106f6565b6102e0565b60405163ffffffff90911681526020016100ba565b6100b0610166366004610757565b610310565b6001546100d69060ff1681565b6100d66101863660046106f6565b61034f565b61012e6101993660046106f6565b6103c2565b60408051610100810191829052600091610203919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116101bc57905050505050504361028a565b905090565b6000818061021461019e565b1015610281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d494e5f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b50600192915050565b6000805b60088110156102d4578381600881106102a9576102a96107e1565b602002015163ffffffff168310156102c25790506102da565b806102cc8161083f565b91505061028e565b50600890505b92915050565b600081600881106102f057600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b6000808211610320576000610342565b8261032c600184610878565b6008811061033c5761033c6107e1565b60200201515b63ffffffff169392505050565b6000818061035b61019e565b14610281576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f504841534500000000000000000000000000000000000000000000006044820152606401610278565b60015460ff1661042e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f434f4e444954494f4e00000000000000000000000000000000000000000000006044820152606401610278565b61044a61043961019e565b61044490600161088f565b8261044d565b50565b804311156104b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f5041535400000000000000000000000000000000006044820152606401610278565b63ffffffff8110610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a454400000000000000006044820152606401610278565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018061055061019e565b146105b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f5048415345000000000000000000000000000000000000000000006044820152606401610278565b600081600881106105ca576105ca6107e1565b60088104919091015460079091166004026101000a900463ffffffff90811614610650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f5345540000000000000000000000000000000000006044820152606401610278565b8160008260088110610664576106646107e1565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d33384846040516106e99392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b60006020828403121561070857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff8116811461075257600080fd5b919050565b600080610120838503121561076b57600080fd5b83601f84011261077a57600080fd5b60405161010080820182811067ffffffffffffffff8211171561079f5761079f61070f565b604052840181868211156107b257600080fd5b855b828110156107d3576107c58161073e565b8252602091820191016107b4565b509196903595509350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561087157610871610810565b5060010190565b60008282101561088a5761088a610810565b500390565b600082198211156108a2576108a2610810565b50019056fea264697066735822122043a9a2bf1b25076966c7a1e4b8b128730f10cb49c912c82088895859c954c87264736f6c634300080a0033"; + "0x60806040526001805460ff19168117905534801561001c57600080fd5b5061002561002a565b6101a0565b600054600163ffffffff909116106100445761004461018a565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261009560008260086100d9565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101655791602002820160005b8382111561013357835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100ef565b80156101635782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610133565b505b50610171929150610175565b5090565b5b808211156101715760008155600101610176565b634e487b7160e01b600052600160045260246000fd5b6108d4806101af6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806393c9655711610076578063c50313311161005b578063c50313311461016b578063dab4b15114610178578063e48d8f721461018b57600080fd5b806393c965571461010c57806394c2a6861461013457600080fd5b8063055ad42e146100a85780631cf355e8146100c35780632b4eaffc146100d65780635d521c10146100f9575b600080fd5b6100b061019e565b6040519081526020015b60405180910390f35b6100b06100d1366004610735565b610208565b6100e96100e43660046107bf565b610247565b60405190151581526020016100ba565b6100b0610107366004610735565b6102c9565b61011f61011a3660046107bf565b610316565b60405163ffffffff90911681526020016100ba565b610169600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00811660ff90911615179055565b005b6001546100e99060ff1681565b6100e96101863660046107bf565b610346565b6101696101993660046107bf565b6103b9565b60408051610100810191829052600091610203919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116101bc5790505050505050426102c9565b905090565b600080821161021857600061023a565b82610224600184610807565b600881106102345761023461081e565b60200201515b63ffffffff169392505050565b6000818061025361019e565b10156102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d494e5f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b50600192915050565b60005b6008811015610310578281600881106102e7576102e761081e565b602002015163ffffffff168210156102fe57610310565b806103088161084d565b9150506102cc565b92915050565b6000816008811061032657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b6000818061035261019e565b146102c0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016102b7565b60015460ff16610425576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f434f4e444954494f4e000000000000000000000000000000000000000000000060448201526064016102b7565b61044161043061019e565b61043b906001610886565b82610444565b50565b804211156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016102b7565b63ffffffff811061051b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016102b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82018061054761019e565b146105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016102b7565b600081600881106105c1576105c161081e565b60088104919091015460079091166004026101000a900463ffffffff90811614610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016102b7565b816000826008811061065b5761065b61081e565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d33384846040516106e09392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff8116811461073057600080fd5b919050565b600080610120838503121561074957600080fd5b83601f84011261075857600080fd5b60405161010080820182811067ffffffffffffffff8211171561077d5761077d6106ed565b6040528401818682111561079057600080fd5b855b828110156107b1576107a38161071c565b825260209182019101610792565b509196903595509350505050565b6000602082840312156107d157600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610819576108196107d8565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561087f5761087f6107d8565b5060010190565b60008219821115610899576108996107d8565b50019056fea2646970667358221220da82d4685475c6b0a05ecf3eafc0782cb740bc11dd7d7c707b98bc5b10d2678364736f6c634300080a0033"; type PhasedTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Phased__factory.ts b/src/typechain/factories/Phased__factory.ts index cb40f48..41c08a1 100644 --- a/src/typechain/factories/Phased__factory.ts +++ b/src/typechain/factories/Phased__factory.ts @@ -24,44 +24,20 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "scheduledBlock", + name: "scheduledTime", type: "uint256", }, ], name: "PhaseScheduled", type: "event", }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "phase_", - type: "uint256", - }, - ], - name: "blockNumberForPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [], name: "currentPhase", outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -72,20 +48,20 @@ const _abi = [ inputs: [ { internalType: "uint32[8]", - name: "phaseBlocks_", + name: "phaseTimes_", type: "uint32[8]", }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "phaseAtBlockNumber", + name: "phaseAtTime", outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -100,7 +76,7 @@ const _abi = [ type: "uint256", }, ], - name: "phaseBlocks", + name: "phaseTimes", outputs: [ { internalType: "uint32", @@ -111,10 +87,34 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint32[8]", + name: "phaseTimes_", + type: "uint32[8]", + }, + { + internalType: "uint256", + name: "phase_", + type: "uint256", + }, + ], + name: "timeForPhase", + outputs: [ + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, ]; const _bytecode = - "0x608060405234801561001057600080fd5b506103b8806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063055ad42e14610051578063634991af1461006c5780639923c94b1461007f578063b8ffd02c146100a7575b600080fd5b6100596100ba565b6040519081526020015b60405180910390f35b61005961007a366004610231565b610124565b61009261008d3660046102bb565b61017a565b60405163ffffffff9091168152602001610063565b6100596100b5366004610231565b6101aa565b6040805161010081019182905260009161011f919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100d8579050505050505043610124565b905090565b6000805b600881101561016e57838160088110610143576101436102d4565b602002015163ffffffff1683101561015c579050610174565b8061016681610332565b915050610128565b50600890505b92915050565b6000816008811061018a57600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60008082116101ba5760006101dc565b826101c660018461036b565b600881106101d6576101d66102d4565b60200201515b63ffffffff169392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff8116811461022c57600080fd5b919050565b600080610120838503121561024557600080fd5b83601f84011261025457600080fd5b60405161010080820182811067ffffffffffffffff82111715610279576102796101e9565b6040528401818682111561028c57600080fd5b855b828110156102ad5761029f81610218565b82526020918201910161028e565b509196903595509350505050565b6000602082840312156102cd57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561036457610364610303565b5060010190565b60008282101561037d5761037d610303565b50039056fea2646970667358221220e5cc2f041a420ad353bd7556db7de59a30221f7c31381b6db0486534bc90645764736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506103af806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c8063055ad42e146100515780631cf355e81461006c5780635d521c101461007f57806393c9655714610092575b600080fd5b6100596100ba565b6040519081526020015b60405180910390f35b61005961007a366004610228565b610124565b61005961008d366004610228565b610163565b6100a56100a03660046102b2565b6101b0565b60405163ffffffff9091168152602001610063565b6040805161010081019182905260009161011f919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100d8579050505050505042610163565b905090565b6000808211610134576000610156565b826101406001846102fa565b6008811061015057610150610311565b60200201515b63ffffffff169392505050565b60005b60088110156101aa5782816008811061018157610181610311565b602002015163ffffffff16821015610198576101aa565b806101a281610340565b915050610166565b92915050565b600081600881106101c057600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff8116811461022357600080fd5b919050565b600080610120838503121561023c57600080fd5b83601f84011261024b57600080fd5b60405161010080820182811067ffffffffffffffff82111715610270576102706101e0565b6040528401818682111561028357600080fd5b855b828110156102a4576102968161020f565b825260209182019101610285565b509196903595509350505050565b6000602082840312156102c457600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561030c5761030c6102cb565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610372576103726102cb565b506001019056fea2646970667358221220e02569d34819e645c4e0dbf12ee19398445bd1e3bef1d9f2b11d1831248c125d64736f6c634300080a0033"; type PhasedConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReadOnlyTier__factory.ts b/src/typechain/factories/ReadOnlyTier__factory.ts deleted file mode 100644 index a4197f8..0000000 --- a/src/typechain/factories/ReadOnlyTier__factory.ts +++ /dev/null @@ -1,102 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { ReadOnlyTier, ReadOnlyTierInterface } from "../ReadOnlyTier"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "TierChange", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "account", - type: "address", - }, - ], - name: "report", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - { - internalType: "uint256", - name: "", - type: "uint256", - }, - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - name: "setTier", - outputs: [], - stateMutability: "pure", - type: "function", - }, -]; - -export class ReadOnlyTier__factory { - static readonly abi = _abi; - static createInterface(): ReadOnlyTierInterface { - return new utils.Interface(_abi) as ReadOnlyTierInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ReadOnlyTier { - return new Contract(address, _abi, signerOrProvider) as ReadOnlyTier; - } -} diff --git a/src/typechain/factories/ReadWriteTier__factory.ts b/src/typechain/factories/ReadWriteTier__factory.ts index e7492f9..ccf243b 100644 --- a/src/typechain/factories/ReadWriteTier__factory.ts +++ b/src/typechain/factories/ReadWriteTier__factory.ts @@ -50,6 +50,11 @@ const _abi = [ name: "account_", type: "address", }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, ], name: "report", outputs: [ @@ -62,6 +67,59 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "account_", + type: "address", + }, + { + internalType: "uint256", + name: "tier_", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "report_", + type: "uint256", + }, + { + internalType: "uint256", + name: "tier_", + type: "uint256", + }, + ], + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -85,10 +143,174 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "report_", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + name: "tierAtTimeFromReport", + outputs: [ + { + internalType: "uint256", + name: "tier_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "report_", + type: "uint256", + }, + { + internalType: "uint256", + name: "tier_", + type: "uint256", + }, + ], + name: "truncateTiersAbove", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "report_", + type: "uint256", + }, + { + internalType: "uint256", + name: "startTier_", + type: "uint256", + }, + { + internalType: "uint256", + name: "endTier_", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + name: "updateReportWithTierAtTime", + outputs: [ + { + internalType: "uint256", + name: "updatedReport_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "report_", + type: "uint256", + }, + { + internalType: "uint256", + name: "tier_", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + name: "updateTimeAtTier", + outputs: [ + { + internalType: "uint256", + name: "updatedReport_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "report_", + type: "uint256", + }, + { + internalType: "uint256", + name: "startTier_", + type: "uint256", + }, + { + internalType: "uint256", + name: "endTier_", + type: "uint256", + }, + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + name: "updateTimesForTierRange", + outputs: [ + { + internalType: "uint256", + name: "updatedReport_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610536806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80638a200fff1461003b578063e053ea3114610050575b600080fd5b61004e6100493660046103d1565b610075565b005b61006361005e366004610458565b61017e565b60405190815260200160405180910390f35b600083116100e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006100ef8561017e565b905060006100fd82436101fb565b905061010b82828743610235565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c89061016e903390899085908a908a908a9061047a565b60405180910390a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152602081905260408120546101ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101f5565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260409020545b92915050565b6000805b600881101561022b57828160200285901c63ffffffff1611156102235790506101f5565b6001016101ff565b5060089392505050565b600083831061024f5761024a85858585610262565b610259565b6102598584610308565b95945050505050565b60008260088111156102d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100db565b6000855b858110156102fc5763ffffffff6020820290811b199890981685891b179791506001016102d4565b50959695505050505050565b6000816008811115610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100db565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60209190910290811c901b1790565b803573ffffffffffffffffffffffffffffffffffffffff811681146103cc57600080fd5b919050565b600080600080606085870312156103e757600080fd5b6103f0856103a8565b935060208501359250604085013567ffffffffffffffff8082111561041457600080fd5b818701915087601f83011261042857600080fd5b81358181111561043757600080fd5b88602082850101111561044957600080fd5b95989497505060200194505050565b60006020828403121561046a57600080fd5b610473826103a8565b9392505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905097965050505050505056fea26469706673582212208b1351c9ebc626d3182f0c0b7060139e1a1db13bc792254318e3a4a60947a87b64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610af3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806388d6860411610076578063c29df2461161005b578063c29df2461461016d578063caa0eb3b14610180578063f0ef511b1461019357600080fd5b806388d68604146101455780638a200fff1461015857600080fd5b80633907cb42116100a75780633907cb421461010c578063696dd6c01461011f578063787752041461013257600080fd5b806301ffc9a7146100c357806318cc4ccb146100eb575b600080fd5b6100d66100d136600461072c565b6101a6565b60405190151581526020015b60405180910390f35b6100fe6100f936600461076e565b61023f565b6040519081526020016100e2565b6100fe61011a36600461079a565b610254565b6100fe61012d3660046107cc565b61026b565b6100fe6101403660046107cc565b61027e565b6100fe610153366004610846565b61028a565b61016b610166366004610935565b610304565b005b6100fe61017b36600461079a565b610411565b6100fe61018e3660046109bc565b61041f565b6100fe6101a13660046107cc565b61044f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061023957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061024c84848461045b565b949350505050565b6000610262858585856104e4565b95945050505050565b60006102778383610508565b9392505050565b60006102778383610535565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120546102da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610277565b505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60008311610373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60606000610381868361028a565b9050600061038f8242610508565b905061039d828288426104e4565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906104009033908a9085908b908b908b90610a37565b60405180910390a150505050505050565b6000610262858585856105d9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040812054610262908561067f565b6000610277838361067f565b60008260088111156104c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b505063ffffffff602090920291821b199290921691901b1790565b60008383106104fe576104f9858585856105d9565b610262565b6102628584610535565b60005b600881101561023957818160200284901c63ffffffff16111561052d57610239565b60010161050b565b60008160088111156105a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b6000855b858110156106735763ffffffff6020820290811b199890981685891b1797915060010161064b565b50959695505050505050565b60008160088111156106ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b826106fb57600091506105d2565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60006020828403121561073e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461027757600080fd5b60008060006060848603121561078357600080fd5b505081359360208301359350604090920135919050565b600080600080608085870312156107b057600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156107df57600080fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461081257600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561085957600080fd5b610862836107ee565b915060208084013567ffffffffffffffff8082111561088057600080fd5b818601915086601f83011261089457600080fd5b8135818111156108a6576108a6610817565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108e9576108e9610817565b60405291825284820192508381018501918983111561090757600080fd5b938501935b828510156109255784358452938501939285019261090c565b8096505050505050509250929050565b6000806000806060858703121561094b57600080fd5b610954856107ee565b935060208501359250604085013567ffffffffffffffff8082111561097857600080fd5b818701915087601f83011261098c57600080fd5b81358181111561099b57600080fd5b8860208285010111156109ad57600080fd5b95989497505060200194505050565b600080600080606085870312156109d257600080fd5b6109db856107ee565b935060208501359250604085013567ffffffffffffffff808211156109ff57600080fd5b818701915087601f830112610a1357600080fd5b813581811115610a2257600080fd5b8860208260051b85010111156109ad57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905097965050505050505056fea264697066735822122086ffef90cc521a17b7984de5c0bde02eea46f98f73346963309d9478547c8e7e64736f6c634300080a0033"; type ReadWriteTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts index d533ab2..bdffd51 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts @@ -473,7 +473,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f31f34597b211bd7285b6bd31dd1526ee4142fcd5bf8a891c1cf8690726573de64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122001f70ce377e85058f3795a530adc05830587349ca014e76928faf6499eac9ab164736f6c634300080a0033"; type RedeemableERC20ClaimEscrowWrapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts index e4be016..a053832 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts @@ -347,7 +347,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220fe13880f7f37da2d19095b3252247f55e154a19f54d760bd29f47004c2a620e664736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220049c19cf3724901f75101544ff351e9b0c76a329dd6896a6157544f2fcdc72d964736f6c634300080a0033"; type RedeemableERC20ClaimEscrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Factory__factory.ts b/src/typechain/factories/RedeemableERC20Factory__factory.ts index ebb196b..7345c33 100644 --- a/src/typechain/factories/RedeemableERC20Factory__factory.ts +++ b/src/typechain/factories/RedeemableERC20Factory__factory.ts @@ -174,7 +174,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61336980610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea264697066735822122074fbf2f8f12d5102c88fb0dd487b54a0248b2605be1e20a07751a67f00287b7d64736f6c634300080a0033608060405234801561001057600080fd5b50613349806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a9059cbb11610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a9059cbb146103ce578063b8ffd02c146103e1578063dd62ed3e146103f457600080fd5b80638b24259b116100d35780638b24259b1461037857806395d89b411461038b5780639923c94b14610393578063a457c2d7146103bb57600080fd5b806370a082311461031c57806379cc6790146103525780638246df011461036557600080fd5b806323b872dd11610166578063392243e111610140578063392243e1146102a857806339509351146102e357806342966c68146102f6578063634991af1461030957600080fd5b806323b872dd14610273578063313ce567146102865780633833be621461029557600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612b7f565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612bc6565b610216610211366004612c17565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b610216610281366004612c41565b61060d565b604051601281526020016101e5565b6101d16102a3366004612b7f565b610633565b6102166102b6366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b6102166102f1366004612c17565b61071d565b6101d1610304366004612c7d565b610769565b6101db610317366004612cd9565b610776565b6101db61032a366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610360366004612c17565b6107ca565b6101d1610373366004612d63565b6107e3565b6101d1610386366004612b7f565b610cab565b6101f6610e33565b6103a66103a1366004612c7d565b610e42565b60405163ffffffff90911681526020016101e5565b6102166103c9366004612c17565b610e72565b6102166103dc366004612c17565b610f4e565b6101db6103ef366004612cd9565b610f5c565b6101db610402366004612d9e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612b7f565b610f9b565b6101db609b5481565b6101d161049f366004612dd1565b611080565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610515579050505050505043610776565b905090565b60606037805461057090612e4c565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612e4c565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611130565b60019150505b92915050565b60003361061b8582856112e4565b6106268585856113b5565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906106019082908690610764908790612ecf565b611130565b6107733382611673565b50565b6000805b60088110156107c05783816008811061079557610795612ee7565b602002015163ffffffff168310156107ae579050610607565b806107b881612f16565b91505061077a565b5060089392505050565b6107d58233836112e4565b6107df8282611673565b5050565b60006107ef6001611869565b9050801561082457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61082c6119f4565b61083c6060830160408401612b7f565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109256108916020840184612f4f565b61089b9080612f8d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108dd925050506020850185612f4f565b6108eb906020810190612f8d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a9e92505050565b670de0b6b3a764000061093b6020840184612f4f565b6060013510156109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106b0565b6060820135609b556109bf60a0830160808401612b7f565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610a4490860186612f4f565b610a55906060810190604001612b7f565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610ab657609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610ac36020830183612f4f565b610ad4906060810190604001612b7f565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b50610b296020840184612f4f565b610b3a906060810190604001612b7f565b610b476020850185612f4f565b60600135611b3f565b610b606101cc6020840184612b7f565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610b919291906130a6565b60405180910390a1610ba96060830160408401612b7f565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613208565b50610c45600143611c6b565b80156107df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610cb66104f6565b14610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b60985473ffffffffffffffffffffffffffffffffffffffff163314610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b610da9600243611c6b565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610df08473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e2d5773ffffffffffffffffffffffffffffffffffffffff8216610e2257610e1d8482611673565b610e2d565b610e2d8483836113b5565b50505050565b60606038805461057090612e4c565b60018160088110610e5257600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106b0565b610f438286868403611130565b506001949350505050565b6000336106018185856113b5565b6000808211610f6c576000610f8e565b82610f78600184613221565b60088110610f8857610f88612ee7565b60200201515b63ffffffff169392505050565b60985473ffffffffffffffffffffffffffffffffffffffff16331461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061108b6104f6565b146110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b610e2d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f14915050565b73ffffffffffffffffffffffffffffffffffffffff83166111d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff8216611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e2d57818110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106b0565b610e2d8484848403611130565b73ffffffffffffffffffffffffffffffffffffffff8316611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff82166114fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b6115068383836122b9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260346020526040808220858503905591851681529081208054849290611600908490612ecf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161166691815260200190565b60405180910390a3610e2d565b73ffffffffffffffffffffffffffffffffffffffff8216611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b611722826000836122b9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611814908490613221565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112d7565b505050565b60008054610100900460ff1615611920578160ff16600114801561188c5750303b155b611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b506000919050565b60005460ff8084169116106119b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff1610611a0b57611a0b613238565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a5c6001826008612a36565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b600054610100900460ff16611b35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b6107df82826125af565b73ffffffffffffffffffffffffffffffffffffffff8216611bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106b0565b611bc8600083836122b9565b8060366000828254611bda9190612ecf565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c14908490612ecf565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106b0565b63ffffffff8110611d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d6e6104f6565b14611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106b0565b60018160088110611de857611de8612ee7565b60088104919091015460079091166004026101000a900463ffffffff90811614611e6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106b0565b8160018260088110611e8257611e82612ee7565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f079392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3157611f31612c96565b604051908082528060200260200182016040528015611f5a578160200160208202803683370190505b50905060008211611fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106b0565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613208565b90506000805b8481101561222b57828688838151811061205a5761205a612ee7565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f49190613208565b6120fe9190613267565b61210891906132a4565b915060008211612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106b0565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121a8576121a8612ee7565b602002602001015188856040516121f3949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061220e5761220e612ee7565b60209081029190910101528061222381612f16565b91505061203e565b506122363386611673565b60005b848110156122b05761229e3385838151811061225757612257612ee7565b602002602001015189848151811061227157612271612ee7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661266d9092919063ffffffff16565b806122a881612f16565b915050612239565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106b0565b6000811180156123a3575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123a1575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118645760016123b26104f6565b14612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106b0565b609b54609a546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261254792169063e053ea3190602401602060405180830381865afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190613208565b436126fa565b1015611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106b0565b600054610100900460ff16612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b8151612659906037906020850190612ad2565b508051611864906038906020840190612ad2565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261186490849061272a565b6000805b60088110156107c057828160200285901c63ffffffff161115612722579050610607565b6001016126fe565b600061278c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166128369092919063ffffffff16565b80519091501561186457808060200190518101906127aa91906132df565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106b0565b6060612845848460008561284d565b949350505050565b6060824710156128df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff85163b61295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129869190613301565b60006040518083038185875af1925050503d80600081146129c3576040519150601f19603f3d011682016040523d82523d6000602084013e6129c8565b606091505b50915091506129d88282866129e3565b979650505050505050565b606083156129f257508161062c565b825115612a025782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190612bc6565b600183019183908215612ac25791602002820160005b83821115612a9057835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612a4c565b8015612ac05782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612a90565b505b50612ace929150612b46565b5090565b828054612ade90612e4c565b90600052602060002090601f016020900481019282612b005760008555612ac2565b82601f10612b1957805160ff1916838001178555612ac2565b82800160010185558215612ac2579182015b82811115612ac2578251825591602001919060010190612b2b565b5b80821115612ace5760008155600101612b47565b803573ffffffffffffffffffffffffffffffffffffffff811681146119ef57600080fd5b600060208284031215612b9157600080fd5b61062c82612b5b565b60005b83811015612bb5578181015183820152602001612b9d565b83811115610e2d5750506000910152565b6020815260008251806020840152612be5816040850160208701612b9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612c2a57600080fd5b612c3383612b5b565b946020939093013593505050565b600080600060608486031215612c5657600080fd5b612c5f84612b5b565b9250612c6d60208501612b5b565b9150604084013590509250925092565b600060208284031215612c8f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119ef57600080fd5b6000806101208385031215612ced57600080fd5b83601f840112612cfc57600080fd5b60405161010080820182811067ffffffffffffffff82111715612d2157612d21612c96565b60405284018186821115612d3457600080fd5b855b82811015612d5557612d4781612cc5565b825260209182019101612d36565b509196903595509350505050565b600060208284031215612d7557600080fd5b813567ffffffffffffffff811115612d8c57600080fd5b820160a0818503121561062c57600080fd5b60008060408385031215612db157600080fd5b612dba83612b5b565b9150612dc860208401612b5b565b90509250929050565b600080600060408486031215612de657600080fd5b833567ffffffffffffffff80821115612dfe57600080fd5b818601915086601f830112612e1257600080fd5b813581811115612e2157600080fd5b8760208260051b8501011115612e3657600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612e6057607f821691505b60208210811415612e9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612ee257612ee2612ea0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f4857612f48612ea0565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112612f8357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612fc257600080fd5b83018035915067ffffffffffffffff821115612fdd57600080fd5b602001915036819003821315612ff257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261302e57600080fd5b830160208101925035905067ffffffffffffffff81111561304e57600080fd5b803603831315612ff257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806130d385612b5b565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261310e57600080fd5b60a0606085015284016131218180612ff9565b608060e08701526131376101608701828461305d565b9150506131476020830183612ff9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261317d83828461305d565b925050508261318e60408401612b5b565b1661012086015260608201356101408601526131ac60408701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526131e060808701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561321a57600080fd5b5051919050565b60008282101561323357613233612ea0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329f5761329f612ea0565b500290565b6000826132da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156132f157600080fd5b8151801515811461062c57600080fd5b60008251612f83818460208701612b9a56fea264697066735822122095aa26e24ccda5b9a1505f8e955b7175c1beb492eee981665d67f2240692253564736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61358980610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea2646970667358221220f6e47e3e567942a4a75c15e4942c6e3a44fba1e3d1826572d45aac42cea254f264736f6c634300080a0033608060405234801561001057600080fd5b50613569806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612d3b565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612d82565b610216610211366004612dd3565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612e40565b61060d565b610216610294366004612eca565b61064c565b604051601281526020016101e5565b6101d16102b6366004612d3b565b610672565b6102166102c9366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612dd3565b61075c565b6101d1610317366004612f06565b6107a8565b6101db61032a366004612e40565b6107b5565b6101db61033d366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612dd3565b6107fc565b6101d1610386366004612f1f565b610815565b6101d1610399366004612d3b565b610cdb565b6103b16103ac366004612f06565b610e63565b60405163ffffffff90911681526020016101e5565b6101f6610e93565b6102166103dc366004612dd3565b610ea2565b6102166103ef366004612dd3565b610f7e565b6101db610402366004612f5a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612d3b565b610f8c565b6101db609b5481565b6101d161049f366004612f8d565b611071565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090613008565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90613008565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611121565b60019150505b92915050565b600080821161061d57600061063f565b8261062960018461308b565b60088110610639576106396130a2565b60200201515b63ffffffff169392505050565b60003361065a8582856112d5565b6106658585856113a6565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a39087906130d1565b611121565b6107b23382611664565b50565b60005b6008811015610607578281600881106107d3576107d36130a2565b602002015163ffffffff168210156107ea57610607565b806107f4816130e9565b9150506107b8565b6108078233836112d5565b6108118282611664565b5050565b6000610821600161185a565b9050801561085657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61085e6119e5565b61086e6060830160408401612d3b565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108ec6108c66060840160408501612d3b565b7f42766d3f00000000000000000000000000000000000000000000000000000000611a8f565b610952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b6109f66109626020840184613122565b61096c9080613160565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109ae925050506020850185613122565b6109bc906020810190613160565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aab92505050565b670de0b6b3a7640000610a0c6020840184613122565b606001351015610a78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610a9060a0830160808401612d3b565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610b1590860186613122565b610b26906060810190604001612d3b565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610b8757609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610b946020830183613122565b610ba5906060810190604001612d3b565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c21610bfa6020840184613122565b610c0b906060810190604001612d3b565b610c186020850185613122565b60600135611b4c565b610c316101cc6020840184612d3b565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610c62929190613279565b60405180910390a1610c75600142611c78565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610ce66104f6565b14610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610dd9600242611c78565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610e208473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e5d5773ffffffffffffffffffffffffffffffffffffffff8216610e5257610e4d8482611664565b610e5d565b610e5d8483836113a6565b50505050565b60018160088110610e7357600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090613008565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b610f738286868403611121565b506001949350505050565b6000336106018185856113a6565b60985473ffffffffffffffffffffffffffffffffffffffff16331461100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061107c6104f6565b146110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610e5d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f21915050565b73ffffffffffffffffffffffffffffffffffffffff83166111c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e5d5781811015611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610e5d8484848403611121565b73ffffffffffffffffffffffffffffffffffffffff8316611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6114f78383836122c6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906115f19084906130d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165791815260200190565b60405180910390a3610e5d565b73ffffffffffffffffffffffffffffffffffffffff8216611707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b611713826000836122c6565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040812083830390556036805484929061180590849061308b565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112c8565b505050565b60008054610100900460ff1615611911578160ff16600114801561187d5750303b155b611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b506000919050565b60005460ff8084169116106119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff16106119fc576119fc6133db565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a4d6001826008612bf2565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b6000611a9a836125ce565b801561066b575061066b8383612632565b600054610100900460ff16611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b610811828261276e565b73ffffffffffffffffffffffffffffffffffffffff8216611bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611bd5600083836122c6565b8060366000828254611be791906130d1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c219084906130d1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d7b6104f6565b14611de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611df557611df56130a2565b60088104919091015460079091166004026101000a900463ffffffff90811614611e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611e8f57611e8f6130a2565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f149392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3e57611f3e612dfd565b604051908082528060200260200182016040528015611f67578160200160208202803683370190505b50905060008211611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612045919061340a565b90506000805b84811015612238578286888381518110612067576120676130a2565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612101919061340a565b61210b9190613423565b6121159190613460565b915060008211612181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121b5576121b56130a2565b60200260200101518885604051612200949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061221b5761221b6130a2565b602090810291909101015280612230816130e9565b91505061204b565b506122433386611664565b60005b848110156122bd576122ab33858381518110612264576122646130a2565b602002602001015189848151811061227e5761227e6130a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661282c9092919063ffffffff16565b806122b5816130e9565b915050612246565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b6000811180156123b0575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123ae575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118555760016123bf6104f6565b14612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526125669173ffffffffffffffffffffffffffffffffffffffff16906388d686049061251f9087906024810161349b565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612560919061340a565b426128b9565b1015611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b60006125fa827f01ffc9a700000000000000000000000000000000000000000000000000000000612632565b8015610607575061262b827fffffffff00000000000000000000000000000000000000000000000000000000612632565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906126ec9086906134ff565b6000604051808303818686fa925050503d8060008114612728576040519150601f19603f3d011682016040523d82523d6000602084013e61272d565b606091505b50915091506020815110156127485760009350505050610607565b8180156127645750808060200190518101906127649190613511565b9695505050505050565b600054610100900460ff16612805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612818906037906020850190612c8e565b508051611855906038906020840190612c8e565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118559084906128e6565b60005b600881101561060757818160200284901c63ffffffff1611156128de57610607565b6001016128bc565b6000612948826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129f29092919063ffffffff16565b80519091501561185557808060200190518101906129669190613511565b611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b6060612a018484600085612a09565b949350505050565b606082471015612a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b4291906134ff565b60006040518083038185875af1925050503d8060008114612b7f576040519150601f19603f3d011682016040523d82523d6000602084013e612b84565b606091505b5091509150612b94828286612b9f565b979650505050505050565b60608315612bae57508161066b565b825115612bbe5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612d82565b600183019183908215612c7e5791602002820160005b83821115612c4c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c08565b8015612c7c5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c4c565b505b50612c8a929150612d02565b5090565b828054612c9a90613008565b90600052602060002090601f016020900481019282612cbc5760008555612c7e565b82601f10612cd557805160ff1916838001178555612c7e565b82800160010185558215612c7e579182015b82811115612c7e578251825591602001919060010190612ce7565b5b80821115612c8a5760008155600101612d03565b803573ffffffffffffffffffffffffffffffffffffffff811681146119e057600080fd5b600060208284031215612d4d57600080fd5b61066b82612d17565b60005b83811015612d71578181015183820152602001612d59565b83811115610e5d5750506000910152565b6020815260008251806020840152612da1816040850160208701612d56565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612de657600080fd5b612def83612d17565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119e057600080fd5b6000806101208385031215612e5457600080fd5b83601f840112612e6357600080fd5b60405161010080820182811067ffffffffffffffff82111715612e8857612e88612dfd565b60405284018186821115612e9b57600080fd5b855b82811015612ebc57612eae81612e2c565b825260209182019101612e9d565b509196903595509350505050565b600080600060608486031215612edf57600080fd5b612ee884612d17565b9250612ef660208501612d17565b9150604084013590509250925092565b600060208284031215612f1857600080fd5b5035919050565b600060208284031215612f3157600080fd5b813567ffffffffffffffff811115612f4857600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612f6d57600080fd5b612f7683612d17565b9150612f8460208401612d17565b90509250929050565b600080600060408486031215612fa257600080fd5b833567ffffffffffffffff80821115612fba57600080fd5b818601915086601f830112612fce57600080fd5b813581811115612fdd57600080fd5b8760208260051b8501011115612ff257600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061301c57607f821691505b60208210811415613056577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561309d5761309d61305c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156130e4576130e461305c565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561311b5761311b61305c565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261315657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261319557600080fd5b83018035915067ffffffffffffffff8211156131b057600080fd5b6020019150368190038213156131c557600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261320157600080fd5b830160208101925035905067ffffffffffffffff81111561322157600080fd5b8036038313156131c557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132a685612d17565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126132e157600080fd5b60a0606085015284016132f481806131cc565b608060e087015261330a61016087018284613230565b91505061331a60208301836131cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2087840301610100880152613350838284613230565b925050508261336160408401612d17565b16610120860152606082013561014086015261337f60408701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133b360808701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561341c57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345b5761345b61305c565b500290565b600082613496577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b818110156134f2578451835293830193918301916001016134d6565b5090979650505050505050565b60008251613156818460208701612d56565b60006020828403121561352357600080fd5b8151801515811461066b57600080fdfea26469706673582212201e962e4189efddacbcf6f8d956f27f0afff36718e111184690e4e36118dcb33764736f6c634300080a0033"; type RedeemableERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts index 07298e1..5c09ade 100644 --- a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts +++ b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts @@ -389,7 +389,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea264697066735822122063e83af5ca4e1ecabaffb0362a319951fe91605b6ad8a659fc1ff08837596ac264736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea26469706673582212203da6fe6dd3ae6a6d044877288ebd8924392158089fadcec96be127d7cb4ca3e064736f6c634300080a0033"; type RedeemableERC20ReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20__factory.ts b/src/typechain/factories/RedeemableERC20__factory.ts index d5eda91..97c0e54 100644 --- a/src/typechain/factories/RedeemableERC20__factory.ts +++ b/src/typechain/factories/RedeemableERC20__factory.ts @@ -133,7 +133,7 @@ const _abi = [ { indexed: false, internalType: "uint256", - name: "scheduledBlock", + name: "scheduledTime", type: "uint256", }, ], @@ -320,30 +320,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "uint32[8]", - name: "phaseBlocks_", - type: "uint32[8]", - }, - { - internalType: "uint256", - name: "phase_", - type: "uint256", - }, - ], - name: "blockNumberForPhase", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [ { @@ -381,7 +357,7 @@ const _abi = [ outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -631,20 +607,20 @@ const _abi = [ inputs: [ { internalType: "uint32[8]", - name: "phaseBlocks_", + name: "phaseTimes_", type: "uint32[8]", }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "phaseAtBlockNumber", + name: "phaseAtTime", outputs: [ { internalType: "uint256", - name: "", + name: "phase_", type: "uint256", }, ], @@ -659,7 +635,7 @@ const _abi = [ type: "uint256", }, ], - name: "phaseBlocks", + name: "phaseTimes", outputs: [ { internalType: "uint32", @@ -706,7 +682,7 @@ const _abi = [ name: "tier", outputs: [ { - internalType: "contract ITier", + internalType: "contract ITierV2", name: "", type: "address", }, @@ -714,6 +690,30 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [ + { + internalType: "uint32[8]", + name: "phaseTimes_", + type: "uint32[8]", + }, + { + internalType: "uint256", + name: "phase_", + type: "uint256", + }, + ], + name: "timeForPhase", + outputs: [ + { + internalType: "uint256", + name: "timestamp_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "totalSupply", @@ -783,7 +783,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50613349806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c806370a08231116100f9578063a9059cbb11610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a9059cbb146103ce578063b8ffd02c146103e1578063dd62ed3e146103f457600080fd5b80638b24259b116100d35780638b24259b1461037857806395d89b411461038b5780639923c94b14610393578063a457c2d7146103bb57600080fd5b806370a082311461031c57806379cc6790146103525780638246df011461036557600080fd5b806323b872dd11610166578063392243e111610140578063392243e1146102a857806339509351146102e357806342966c68146102f6578063634991af1461030957600080fd5b806323b872dd14610273578063313ce567146102865780633833be621461029557600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612b7f565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612bc6565b610216610211366004612c17565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b610216610281366004612c41565b61060d565b604051601281526020016101e5565b6101d16102a3366004612b7f565b610633565b6102166102b6366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b6102166102f1366004612c17565b61071d565b6101d1610304366004612c7d565b610769565b6101db610317366004612cd9565b610776565b6101db61032a366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610360366004612c17565b6107ca565b6101d1610373366004612d63565b6107e3565b6101d1610386366004612b7f565b610cab565b6101f6610e33565b6103a66103a1366004612c7d565b610e42565b60405163ffffffff90911681526020016101e5565b6102166103c9366004612c17565b610e72565b6102166103dc366004612c17565b610f4e565b6101db6103ef366004612cd9565b610f5c565b6101db610402366004612d9e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612b7f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612b7f565b610f9b565b6101db609b5481565b6101d161049f366004612dd1565b611080565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610515579050505050505043610776565b905090565b60606037805461057090612e4c565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612e4c565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611130565b60019150505b92915050565b60003361061b8582856112e4565b6106268585856113b5565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906106019082908690610764908790612ecf565b611130565b6107733382611673565b50565b6000805b60088110156107c05783816008811061079557610795612ee7565b602002015163ffffffff168310156107ae579050610607565b806107b881612f16565b91505061077a565b5060089392505050565b6107d58233836112e4565b6107df8282611673565b5050565b60006107ef6001611869565b9050801561082457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61082c6119f4565b61083c6060830160408401612b7f565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109256108916020840184612f4f565b61089b9080612f8d565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506108dd925050506020850185612f4f565b6108eb906020810190612f8d565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a9e92505050565b670de0b6b3a764000061093b6020840184612f4f565b6060013510156109a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106b0565b6060820135609b556109bf60a0830160808401612b7f565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610a4490860186612f4f565b610a55906060810190604001612b7f565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610ab657609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610ac36020830183612f4f565b610ad4906060810190604001612b7f565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b50610b296020840184612f4f565b610b3a906060810190604001612b7f565b610b476020850185612f4f565b60600135611b3f565b610b606101cc6020840184612b7f565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610b919291906130a6565b60405180910390a1610ba96060830160408401612b7f565b6040517fe053ea3100000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff919091169063e053ea3190602401602060405180830381865afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c399190613208565b50610c45600143611c6b565b80156107df57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610cb66104f6565b14610d1d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b60985473ffffffffffffffffffffffffffffffffffffffff163314610d9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b610da9600243611c6b565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610df08473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e2d5773ffffffffffffffffffffffffffffffffffffffff8216610e2257610e1d8482611673565b610e2d565b610e2d8483836113b5565b50505050565b60606038805461057090612e4c565b60018160088110610e5257600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106b0565b610f438286868403611130565b506001949350505050565b6000336106018185856113b5565b6000808211610f6c576000610f8e565b82610f78600184613221565b60088110610f8857610f88612ee7565b60200201515b63ffffffff169392505050565b60985473ffffffffffffffffffffffffffffffffffffffff16331461101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061108b6104f6565b146110f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106b0565b610e2d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f14915050565b73ffffffffffffffffffffffffffffffffffffffff83166111d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff8216611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e2d57818110156113a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106b0565b610e2d8484848403611130565b73ffffffffffffffffffffffffffffffffffffffff8316611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff82166114fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b6115068383836122b9565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260346020526040808220858503905591851681529081208054849290611600908490612ecf565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161166691815260200190565b60405180910390a3610e2d565b73ffffffffffffffffffffffffffffffffffffffff8216611716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b611722826000836122b9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603460205260408120838303905560368054849290611814908490613221565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112d7565b505050565b60008054610100900460ff1615611920578160ff16600114801561188c5750303b155b611918576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b506000919050565b60005460ff8084169116106119b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106b0565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff1610611a0b57611a0b613238565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a5c6001826008612a36565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b600054610100900460ff16611b35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b6107df82826125af565b73ffffffffffffffffffffffffffffffffffffffff8216611bbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106b0565b611bc8600083836122b9565b8060366000828254611bda9190612ecf565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c14908490612ecf565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80431115611cd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4558545f424c4f434b5f50415354000000000000000000000000000000000060448201526064016106b0565b63ffffffff8110611d42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e4558545f424c4f434b5f554e494e495449414c495a4544000000000000000060448201526064016106b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d6e6104f6565b14611dd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106b0565b60018160088110611de857611de8612ee7565b60088104919091015460079091166004026101000a900463ffffffff90811614611e6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f424c4f434b5f53455400000000000000000000000000000000000060448201526064016106b0565b8160018260088110611e8257611e82612ee7565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f079392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3157611f31612c96565b604051908082528060200260200182016040528015611f5a578160200160208202803683370190505b50905060008211611fc7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106b0565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613208565b90506000805b8481101561222b57828688838151811061205a5761205a612ee7565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f49190613208565b6120fe9190613267565b61210891906132a4565b915060008211612174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106b0565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121a8576121a8612ee7565b602002602001015188856040516121f3949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061220e5761220e612ee7565b60209081029190910101528061222381612f16565b91505061203e565b506122363386611673565b60005b848110156122b05761229e3385838151811061225757612257612ee7565b602002602001015189848151811061227157612271612ee7565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661266d9092919063ffffffff16565b806122a881612f16565b915050612239565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106b0565b6000811180156123a3575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123a1575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118645760016123b26104f6565b14612419576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106b0565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106b0565b609b54609a546040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015261254792169063e053ea3190602401602060405180830381865afa15801561251d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125419190613208565b436126fa565b1015611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106b0565b600054610100900460ff16612646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106b0565b8151612659906037906020850190612ad2565b508051611864906038906020840190612ad2565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261186490849061272a565b6000805b60088110156107c057828160200285901c63ffffffff161115612722579050610607565b6001016126fe565b600061278c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166128369092919063ffffffff16565b80519091501561186457808060200190518101906127aa91906132df565b611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106b0565b6060612845848460008561284d565b949350505050565b6060824710156128df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106b0565b73ffffffffffffffffffffffffffffffffffffffff85163b61295d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516129869190613301565b60006040518083038185875af1925050503d80600081146129c3576040519150601f19603f3d011682016040523d82523d6000602084013e6129c8565b606091505b50915091506129d88282866129e3565b979650505050505050565b606083156129f257508161062c565b825115612a025782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106b09190612bc6565b600183019183908215612ac25791602002820160005b83821115612a9057835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612a4c565b8015612ac05782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612a90565b505b50612ace929150612b46565b5090565b828054612ade90612e4c565b90600052602060002090601f016020900481019282612b005760008555612ac2565b82601f10612b1957805160ff1916838001178555612ac2565b82800160010185558215612ac2579182015b82811115612ac2578251825591602001919060010190612b2b565b5b80821115612ace5760008155600101612b47565b803573ffffffffffffffffffffffffffffffffffffffff811681146119ef57600080fd5b600060208284031215612b9157600080fd5b61062c82612b5b565b60005b83811015612bb5578181015183820152602001612b9d565b83811115610e2d5750506000910152565b6020815260008251806020840152612be5816040850160208701612b9a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612c2a57600080fd5b612c3383612b5b565b946020939093013593505050565b600080600060608486031215612c5657600080fd5b612c5f84612b5b565b9250612c6d60208501612b5b565b9150604084013590509250925092565b600060208284031215612c8f57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119ef57600080fd5b6000806101208385031215612ced57600080fd5b83601f840112612cfc57600080fd5b60405161010080820182811067ffffffffffffffff82111715612d2157612d21612c96565b60405284018186821115612d3457600080fd5b855b82811015612d5557612d4781612cc5565b825260209182019101612d36565b509196903595509350505050565b600060208284031215612d7557600080fd5b813567ffffffffffffffff811115612d8c57600080fd5b820160a0818503121561062c57600080fd5b60008060408385031215612db157600080fd5b612dba83612b5b565b9150612dc860208401612b5b565b90509250929050565b600080600060408486031215612de657600080fd5b833567ffffffffffffffff80821115612dfe57600080fd5b818601915086601f830112612e1257600080fd5b813581811115612e2157600080fd5b8760208260051b8501011115612e3657600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612e6057607f821691505b60208210811415612e9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115612ee257612ee2612ea0565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415612f4857612f48612ea0565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112612f8357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612fc257600080fd5b83018035915067ffffffffffffffff821115612fdd57600080fd5b602001915036819003821315612ff257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261302e57600080fd5b830160208101925035905067ffffffffffffffff81111561304e57600080fd5b803603831315612ff257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806130d385612b5b565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261310e57600080fd5b60a0606085015284016131218180612ff9565b608060e08701526131376101608701828461305d565b9150506131476020830183612ff9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208784030161010088015261317d83828461305d565b925050508261318e60408401612b5b565b1661012086015260608201356101408601526131ac60408701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526131e060808701612b5b565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b60006020828403121561321a57600080fd5b5051919050565b60008282101561323357613233612ea0565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561329f5761329f612ea0565b500290565b6000826132da577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000602082840312156132f157600080fd5b8151801515811461062c57600080fd5b60008251612f83818460208701612b9a56fea264697066735822122095aa26e24ccda5b9a1505f8e955b7175c1beb492eee981665d67f2240692253564736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50613569806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612d3b565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612d82565b610216610211366004612dd3565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612e40565b61060d565b610216610294366004612eca565b61064c565b604051601281526020016101e5565b6101d16102b6366004612d3b565b610672565b6102166102c9366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612dd3565b61075c565b6101d1610317366004612f06565b6107a8565b6101db61032a366004612e40565b6107b5565b6101db61033d366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612dd3565b6107fc565b6101d1610386366004612f1f565b610815565b6101d1610399366004612d3b565b610cdb565b6103b16103ac366004612f06565b610e63565b60405163ffffffff90911681526020016101e5565b6101f6610e93565b6102166103dc366004612dd3565b610ea2565b6102166103ef366004612dd3565b610f7e565b6101db610402366004612f5a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612d3b565b610f8c565b6101db609b5481565b6101d161049f366004612f8d565b611071565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090613008565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90613008565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611121565b60019150505b92915050565b600080821161061d57600061063f565b8261062960018461308b565b60088110610639576106396130a2565b60200201515b63ffffffff169392505050565b60003361065a8582856112d5565b6106658585856113a6565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a39087906130d1565b611121565b6107b23382611664565b50565b60005b6008811015610607578281600881106107d3576107d36130a2565b602002015163ffffffff168210156107ea57610607565b806107f4816130e9565b9150506107b8565b6108078233836112d5565b6108118282611664565b5050565b6000610821600161185a565b9050801561085657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61085e6119e5565b61086e6060830160408401612d3b565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108ec6108c66060840160408501612d3b565b7f42766d3f00000000000000000000000000000000000000000000000000000000611a8f565b610952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b6109f66109626020840184613122565b61096c9080613160565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109ae925050506020850185613122565b6109bc906020810190613160565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aab92505050565b670de0b6b3a7640000610a0c6020840184613122565b606001351015610a78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610a9060a0830160808401612d3b565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610b1590860186613122565b610b26906060810190604001612d3b565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610b8757609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610b946020830183613122565b610ba5906060810190604001612d3b565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c21610bfa6020840184613122565b610c0b906060810190604001612d3b565b610c186020850185613122565b60600135611b4c565b610c316101cc6020840184612d3b565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610c62929190613279565b60405180910390a1610c75600142611c78565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610ce66104f6565b14610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610dd9600242611c78565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610e208473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e5d5773ffffffffffffffffffffffffffffffffffffffff8216610e5257610e4d8482611664565b610e5d565b610e5d8483836113a6565b50505050565b60018160088110610e7357600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090613008565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b610f738286868403611121565b506001949350505050565b6000336106018185856113a6565b60985473ffffffffffffffffffffffffffffffffffffffff16331461100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061107c6104f6565b146110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610e5d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f21915050565b73ffffffffffffffffffffffffffffffffffffffff83166111c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e5d5781811015611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610e5d8484848403611121565b73ffffffffffffffffffffffffffffffffffffffff8316611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6114f78383836122c6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906115f19084906130d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165791815260200190565b60405180910390a3610e5d565b73ffffffffffffffffffffffffffffffffffffffff8216611707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b611713826000836122c6565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040812083830390556036805484929061180590849061308b565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112c8565b505050565b60008054610100900460ff1615611911578160ff16600114801561187d5750303b155b611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b506000919050565b60005460ff8084169116106119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff16106119fc576119fc6133db565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a4d6001826008612bf2565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b6000611a9a836125ce565b801561066b575061066b8383612632565b600054610100900460ff16611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b610811828261276e565b73ffffffffffffffffffffffffffffffffffffffff8216611bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611bd5600083836122c6565b8060366000828254611be791906130d1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c219084906130d1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d7b6104f6565b14611de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611df557611df56130a2565b60088104919091015460079091166004026101000a900463ffffffff90811614611e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611e8f57611e8f6130a2565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f149392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3e57611f3e612dfd565b604051908082528060200260200182016040528015611f67578160200160208202803683370190505b50905060008211611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612045919061340a565b90506000805b84811015612238578286888381518110612067576120676130a2565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612101919061340a565b61210b9190613423565b6121159190613460565b915060008211612181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121b5576121b56130a2565b60200260200101518885604051612200949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061221b5761221b6130a2565b602090810291909101015280612230816130e9565b91505061204b565b506122433386611664565b60005b848110156122bd576122ab33858381518110612264576122646130a2565b602002602001015189848151811061227e5761227e6130a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661282c9092919063ffffffff16565b806122b5816130e9565b915050612246565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b6000811180156123b0575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123ae575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118555760016123bf6104f6565b14612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526125669173ffffffffffffffffffffffffffffffffffffffff16906388d686049061251f9087906024810161349b565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612560919061340a565b426128b9565b1015611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b60006125fa827f01ffc9a700000000000000000000000000000000000000000000000000000000612632565b8015610607575061262b827fffffffff00000000000000000000000000000000000000000000000000000000612632565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906126ec9086906134ff565b6000604051808303818686fa925050503d8060008114612728576040519150601f19603f3d011682016040523d82523d6000602084013e61272d565b606091505b50915091506020815110156127485760009350505050610607565b8180156127645750808060200190518101906127649190613511565b9695505050505050565b600054610100900460ff16612805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612818906037906020850190612c8e565b508051611855906038906020840190612c8e565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118559084906128e6565b60005b600881101561060757818160200284901c63ffffffff1611156128de57610607565b6001016128bc565b6000612948826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129f29092919063ffffffff16565b80519091501561185557808060200190518101906129669190613511565b611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b6060612a018484600085612a09565b949350505050565b606082471015612a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b4291906134ff565b60006040518083038185875af1925050503d8060008114612b7f576040519150601f19603f3d011682016040523d82523d6000602084013e612b84565b606091505b5091509150612b94828286612b9f565b979650505050505050565b60608315612bae57508161066b565b825115612bbe5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612d82565b600183019183908215612c7e5791602002820160005b83821115612c4c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c08565b8015612c7c5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c4c565b505b50612c8a929150612d02565b5090565b828054612c9a90613008565b90600052602060002090601f016020900481019282612cbc5760008555612c7e565b82601f10612cd557805160ff1916838001178555612c7e565b82800160010185558215612c7e579182015b82811115612c7e578251825591602001919060010190612ce7565b5b80821115612c8a5760008155600101612d03565b803573ffffffffffffffffffffffffffffffffffffffff811681146119e057600080fd5b600060208284031215612d4d57600080fd5b61066b82612d17565b60005b83811015612d71578181015183820152602001612d59565b83811115610e5d5750506000910152565b6020815260008251806020840152612da1816040850160208701612d56565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612de657600080fd5b612def83612d17565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119e057600080fd5b6000806101208385031215612e5457600080fd5b83601f840112612e6357600080fd5b60405161010080820182811067ffffffffffffffff82111715612e8857612e88612dfd565b60405284018186821115612e9b57600080fd5b855b82811015612ebc57612eae81612e2c565b825260209182019101612e9d565b509196903595509350505050565b600080600060608486031215612edf57600080fd5b612ee884612d17565b9250612ef660208501612d17565b9150604084013590509250925092565b600060208284031215612f1857600080fd5b5035919050565b600060208284031215612f3157600080fd5b813567ffffffffffffffff811115612f4857600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612f6d57600080fd5b612f7683612d17565b9150612f8460208401612d17565b90509250929050565b600080600060408486031215612fa257600080fd5b833567ffffffffffffffff80821115612fba57600080fd5b818601915086601f830112612fce57600080fd5b813581811115612fdd57600080fd5b8760208260051b8501011115612ff257600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061301c57607f821691505b60208210811415613056577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561309d5761309d61305c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156130e4576130e461305c565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561311b5761311b61305c565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261315657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261319557600080fd5b83018035915067ffffffffffffffff8211156131b057600080fd5b6020019150368190038213156131c557600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261320157600080fd5b830160208101925035905067ffffffffffffffff81111561322157600080fd5b8036038313156131c557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132a685612d17565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126132e157600080fd5b60a0606085015284016132f481806131cc565b608060e087015261330a61016087018284613230565b91505061331a60208301836131cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2087840301610100880152613350838284613230565b925050508261336160408401612d17565b16610120860152606082013561014086015261337f60408701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133b360808701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561341c57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345b5761345b61305c565b500290565b600082613496577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b818110156134f2578451835293830193918301916001016134d6565b5090979650505050505050565b60008251613156818460208701612d56565b60006020828403121561352357600080fd5b8151801515811461066b57600080fdfea26469706673582212201e962e4189efddacbcf6f8d956f27f0afff36718e111184690e4e36118dcb33764736f6c634300080a0033"; type RedeemableERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveNFT__factory.ts b/src/typechain/factories/ReserveNFT__factory.ts deleted file mode 100644 index 9c7aa35..0000000 --- a/src/typechain/factories/ReserveNFT__factory.ts +++ /dev/null @@ -1,469 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { ReserveNFT, ReserveNFTInterface } from "../ReserveNFT"; - -const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "account_", - type: "address", - }, - ], - name: "addFreezable", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - name: "freezables", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "maxSupply", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "_address", - type: "address", - }, - { - 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: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - 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: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "_data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - 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: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b5060408051808201825260128152712727a710232aa723a4a12622902a27a5a2a760711b60208083019182528351808501909452600384526213919560ea1b90840152815191929162000067916000916200008c565b5080516200007d9060019060208401906200008c565b5050612710600855506200016f565b8280546200009a9062000132565b90600052602060002090601f016020900481019282620000be576000855562000109565b82601f10620000d957805160ff191683800117855562000109565b8280016001018555821562000109579182015b8281111562000109578251825591602001919060010190620000ec565b50620001179291506200011b565b5090565b5b808211156200011757600081556001016200011c565b600181811c908216806200014757607f821691505b602082108114156200016957634e487b7160e01b600052602260045260246000fd5b50919050565b611a73806200017f6000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80635bb9058b116100b2578063a22cb46511610081578063c87b56dd11610066578063c87b56dd146102e9578063d5abeb011461032f578063e985e9c51461033857600080fd5b8063a22cb465146102c3578063b88d4fde146102d657600080fd5b80635bb9058b146102385780636352211e1461029557806370a08231146102a857806395d89b41146102bb57600080fd5b806318160ddd1161010957806340c10f19116100ee57806340c10f19146101ef57806342842e0e1461020257806348422faa1461021557600080fd5b806318160ddd146101c557806323b872dd146101dc57600080fd5b806301ffc9a71461013b57806306fdde0314610163578063081812fc14610178578063095ea7b3146101b0575b600080fd5b61014e6101493660046115ef565b610381565b60405190151581526020015b60405180910390f35b61016b610466565b60405161015a919061167e565b61018b610186366004611691565b6104f8565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161015a565b6101c36101be3660046116d3565b6105d7565b005b6101ce60075481565b60405190815260200161015a565b6101c36101ea3660046116fd565b610764565b6101c36101fd3660046116d3565b610805565b6101c36102103660046116fd565b6108bc565b61014e610223366004611739565b60066020526000908152604090205460ff1681565b6101c3610246366004611739565b73ffffffffffffffffffffffffffffffffffffffff16600090815260066020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b61018b6102a3366004611691565b6108d7565b6101ce6102b6366004611739565b610989565b61016b610a57565b6101c36102d1366004611754565b610a66565b6101c36102e43660046117bf565b610a75565b61016b6102f7366004611691565b5060408051808201909152600381527f5552490000000000000000000000000000000000000000000000000000000000602082015290565b6101ce60085481565b61014e6103463660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061041457507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061046057507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610475906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546104a1906118ec565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006105e2826108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156106a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b3373ffffffffffffffffffffffffffffffffffffffff821614806106c957506106c98133610346565b610755576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105a5565b61075f8383610b1d565b505050565b61076e3382610bbd565b6107fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b61075f838383610d2d565b60085481600754610816919061196f565b111561087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4d6178206c696d697420726561636865642e000000000000000000000000000060448201526064016105a5565b60005b8181101561075f576007805490600061089983611987565b91905055506108aa83600754610f9f565b6108b581600161196f565b9050610881565b61075f83838360405180602001604052806000815250610a75565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610460576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016105a5565b600073ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016105a5565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610475906118ec565b610a7133838361116d565b5050565b610a7f3383610bbd565b610b0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016105a5565b610b178484848461129b565b50505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610b77826108d7565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610c6e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016105a5565b6000610c79836108d7565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610ce7575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610d2557508373ffffffffffffffffffffffffffffffffffffffff16610d0d846104f8565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d4d826108d7565b73ffffffffffffffffffffffffffffffffffffffff1614610df0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610e92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610e9d83838361133e565b610ea8600082610b1d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610ede9084906119c0565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f1990849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b73ffffffffffffffffffffffffffffffffffffffff821661101c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105a5565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105a5565b6110b46000838361133e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110ea90849061196f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6112a6848484610d2d565b6112b2848484846113ce565b610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff821660009081526006602052604090205460ff161561075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906114459033908990889088906004016119d7565b6020604051808303816000875af192505050801561149e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149b91810190611a20565b60015b611568573d8080156114cc576040519150601f19603f3d011682016040523d82523d6000602084013e6114d1565b606091505b508051611560576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016105a5565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d25565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146115ec57600080fd5b50565b60006020828403121561160157600080fd5b813561160c816115be565b9392505050565b6000815180845260005b818110156116395760208185018101518683018201520161161d565b8181111561164b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061160c6020830184611613565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b61160c826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561198257611982611940565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119b9576119b9611940565b5060010190565b6000828210156119d2576119d2611940565b500390565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611a166080830184611613565b9695505050505050565b600060208284031215611a3257600080fd5b815161160c816115be56fea264697066735822122035aadb4a5d34cd8a60bed7c39dbe2bfba0c9ceb0afa8f275f7234261806a4dba64736f6c634300080a0033"; - -type ReserveNFTConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ReserveNFTConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ReserveNFT__factory extends ContractFactory { - constructor(...args: ReserveNFTConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ReserveNFT { - return super.attach(address) as ReserveNFT; - } - connect(signer: Signer): ReserveNFT__factory { - return super.connect(signer) as ReserveNFT__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ReserveNFTInterface { - return new utils.Interface(_abi) as ReserveNFTInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ReserveNFT { - return new Contract(address, _abi, signerOrProvider) as ReserveNFT; - } -} diff --git a/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts new file mode 100644 index 0000000..fa51c4e --- /dev/null +++ b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts @@ -0,0 +1,429 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + ReserveTokenERC20Snapshot, + ReserveTokenERC20SnapshotInterface, +} from "../ReserveTokenERC20Snapshot"; + +const _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: false, + internalType: "uint256", + name: "id", + type: "uint256", + }, + ], + name: "Snapshot", + 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: [], + name: "DECIMALS", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "TOTAL_SUPPLY", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + 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: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "snapshotId", + type: "uint256", + }, + ], + name: "balanceOfAt", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "pure", + 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: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "snapshot", + outputs: [], + stateMutability: "nonpayable", + 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: "uint256", + name: "snapshotId", + type: "uint256", + }, + ], + name: "totalSupplyAt", + 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", + }, +]; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b90840152815191929162000062916003916200030f565b508051620000789060049060208401906200030f565b505050620000a33360066009620000909190620003cb565b6200009d90600a620004e5565b620000a9565b62000567565b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000112600083836200019f565b8060026000828254620001269190620003cb565b90915550506001600160a01b0382166000908152602081905260408120805483929062000155908490620003cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b7838383620001db60201b620005491760201c565b6001600160a01b038316620001e057620001d1826200020b565b620001db62000243565b505050565b6001600160a01b038216620001fa57620001d1836200020b565b62000205836200020b565b620001db825b6001600160a01b0381166000908152600560209081526040808320918390529091205462000240919062000255565b62000255565b50565b6200025360066200023a60025490565b565b600062000261620002a4565b9050806200026f84620002c2565b1015620001db578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620002bd60086200030b60201b6200054e1760201c565b905090565b8054600090620002d457506000919050565b81548290620002e690600190620004fa565b81548110620002f957620002f962000514565b90600052602060002001549050919050565b5490565b8280546200031d906200052a565b90600052602060002090601f0160209004810192826200034157600085556200038c565b82601f106200035c57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038c5782518255916020019190600101906200036f565b506200039a9291506200039e565b5090565b5b808211156200039a57600081556001016200039f565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003e157620003e1620003b5565b500190565b600181815b80851115620004275781600019048211156200040b576200040b620003b5565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003b5565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003b5565b0290505b92915050565b6000620004f383836200042f565b9392505050565b6000828210156200050f576200050f620003b5565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200053f57607f821691505b602082108114156200056157634e487b7160e01b600052602260045260246000fd5b50919050565b61123e80620005776000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063981b24d011610066578063981b24d0146101f8578063a457c2d71461020b578063a9059cbb1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101a8578063902d55a5146101de57806395d89b41146101e65780639711715a146101ee57600080fd5b80632e0f2625116100d35780632e0f26251461016b578063313ce5671461017357806339509351146101825780634ee2cd7e1461019557600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610277565b60405161011a9190610e64565b60405180910390f35b610136610131366004610efb565b610309565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610f25565b610323565b61014a600681565b6040516006815260200161011a565b610136610190366004610efb565b610347565b61014a6101a3366004610efb565b610393565b61014a6101b6366004610f61565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014a610406565b61010d610420565b6101f661042f565b005b61014a610206366004610f7c565b61043a565b610136610219366004610efb565b610465565b61013661022c366004610efb565b61053b565b61014a61023f366004610f95565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461028690610fc8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290610fc8565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b600033610317818585610552565b60019150505b92915050565b600033610331858285610705565b61033c8585856107dc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610317908290869061038e90879061104b565b610552565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120819081906103c7908590610a9a565b91509150816103fb5773ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020546103fd565b805b95945050505050565b6104126006600961104b565b61041d90600a61117b565b81565b60606004805461028690610fc8565b610437610bd2565b50565b600080600061044a846006610a9a565b915091508161045b5760025461045d565b805b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033c8286868403610552565b6000336103178185856107dc565b505050565b5490565b73ffffffffffffffffffffffffffffffffffffffff83166105f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d657818110156107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610525565b6107d68484848403610552565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610525565b61092d838383610c2c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a2790849061104b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8d91815260200190565b60405180910390a36107d6565b60008060008411610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433230536e617073686f743a2069642069732030000000000000000000006044820152606401610525565b610b0f610c8e565b841115610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610525565b6000610b848486610c9e565b8454909150811415610b9d576000809250925050610bcb565b6001846001018281548110610bb457610bb4611187565b90600052602060002001549250925050610bcb565b505b9250929050565b6000610be2600880546001019055565b6000610bec610c8e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051610c1f91815260200190565b60405180910390a1919050565b73ffffffffffffffffffffffffffffffffffffffff8316610c5857610c5082610d61565b610549610da0565b73ffffffffffffffffffffffffffffffffffffffff8216610c7c57610c5083610d61565b610c8583610d61565b61054982610d61565b6000610c9960085490565b905090565b8154600090610caf5750600061031d565b82546000905b80821015610d0b576000610cc98383610db0565b905084868281548110610cde57610cde611187565b90600052602060002001541115610cf757809150610d05565b610d0281600161104b565b92505b50610cb5565b600082118015610d4057508385610d236001856111b6565b81548110610d3357610d33611187565b9060005260206000200154145b15610d5957610d506001836111b6565b9250505061031d565b50905061031d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832091839052909120546104379190610dd2565b610dd2565b610dae6006610d9b60025490565b565b6000610dbf60028484186111cd565b610dcb9084841661104b565b9392505050565b6000610ddc610c8e565b905080610de884610e1c565b1015610549578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b8054600090610e2d57506000919050565b81548290610e3d906001906111b6565b81548110610e4d57610e4d611187565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5f57600080fd5b60008060408385031215610f0e57600080fd5b610f1783610ed7565b946020939093013593505050565b600080600060608486031215610f3a57600080fd5b610f4384610ed7565b9250610f5160208501610ed7565b9150604084013590509250925092565b600060208284031215610f7357600080fd5b610dcb82610ed7565b600060208284031215610f8e57600080fd5b5035919050565b60008060408385031215610fa857600080fd5b610fb183610ed7565b9150610fbf60208401610ed7565b90509250929050565b600181811c90821680610fdc57607f821691505b60208210811415611016577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561105e5761105e61101c565b500190565b600181815b80851115610bc957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110a2576110a261101c565b808516156110af57918102915b93841c9390800290611068565b6000826110cb5750600161031d565b816110d85750600061031d565b81600181146110ee57600281146110f857611114565b600191505061031d565b60ff8411156111095761110961101c565b50506001821b61031d565b5060208310610133831016604e8410600b8410161715611137575081810a61031d565b6111418383611063565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111735761117361101c565b029392505050565b6000610dcb83836110bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111c8576111c861101c565b500390565b600082611203577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212207e6c076f70b34e24b98659f2d80032d3a270089bad260fe7090735167864b31764736f6c634300080a0033"; + +type ReserveTokenERC20SnapshotConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ReserveTokenERC20SnapshotConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ReserveTokenERC20Snapshot__factory extends ContractFactory { + constructor(...args: ReserveTokenERC20SnapshotConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): ReserveTokenERC20Snapshot { + return super.attach(address) as ReserveTokenERC20Snapshot; + } + connect(signer: Signer): ReserveTokenERC20Snapshot__factory { + return super.connect(signer) as ReserveTokenERC20Snapshot__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ReserveTokenERC20SnapshotInterface { + return new utils.Interface(_abi) as ReserveTokenERC20SnapshotInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ReserveTokenERC20Snapshot { + return new Contract( + address, + _abi, + signerOrProvider + ) as ReserveTokenERC20Snapshot; + } +} diff --git a/src/typechain/factories/SSTORE2__factory.ts b/src/typechain/factories/SSTORE2__factory.ts index 9ad01dd..8607b1a 100644 --- a/src/typechain/factories/SSTORE2__factory.ts +++ b/src/typechain/factories/SSTORE2__factory.ts @@ -14,7 +14,7 @@ const _abi = [ ]; const _bytecode = - "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122008e67a66919f4c8e1f3778d6aea1bbdb482579c0e275fd82b53428a40219c11c64736f6c634300080a0033"; + "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212204cb3fe323beb32f9aca91cb898a2da76f79a6e62f50b59d8d87e1d1ddc43f5f764736f6c634300080a0033"; type SSTORE2ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleFactory__factory.ts b/src/typechain/factories/SaleFactory__factory.ts index 476acbe..e6c38d3 100644 --- a/src/typechain/factories/SaleFactory__factory.ts +++ b/src/typechain/factories/SaleFactory__factory.ts @@ -239,7 +239,7 @@ const _abi = [ ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b5060405162006a3838038062006a38833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b615600806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea26469706673582212208035afdf9d7e9b64da8d93a43a75349ae515337e090521bfe881d4e52b6e40d964736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005600380380620056008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161545d620001a360003960006109bd015260006105030152600061075a01526000610781015261545d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e3314610390578063fc0c546a146103a357600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd3660046141c7565b6103ab565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461420d565b6103c8565b005b61012f61013f36600461436d565b6104b3565b61012f6101523660046144a7565b610bbc565b61015f610e08565b6040519015158152602001610113565b61012f610e1f565b61012f611013565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046144b9565b61110e565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61186c565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261280760e082015261281261010082015261281d6101208201526128286101408201526128336101608201526128a661018082015261290c6101a082015261294c6101c08201526129806101e08201526129b46102008201526129fb610220820152612a58610240820152612a91610260820152612acf610280820152612b216102a0820152612b7e6102c0820152612bb26102e0820152612be6610300820152612c18610320820152612c4a610340820152612c7c610360820152612ca9610380820152612d046103a0820152612d5a6103c0820152612db16103e0820152612e08610400820152612e3c610420820152612e66610440820152612f4d610460820152612fa96104808201526130256104a08201526130df6104c082018190526131896104e083015261050082015261320961052082015261331161054082015261342f610560808301919091528152905161011391906145a8565b600d5460ff166040516101139190614625565b600754610183565b6000806103bf6103b9611968565b846119c5565b91509150915091565b6002600d5460ff1660038111156103e1576103e16145bb565b1461044d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104af5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104af91168383611a66565b5050565b60006104bf6001611b3a565b905080156104f457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105018360800135611cc5565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f55540000000000000000000000000000000000000000006044820152606401610444565b61059d606084013543614662565b600e5560a083013561060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f300000000000000000000000000000000000000000006044820152606401610444565b8260a00135600b819055506106566040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6106ee6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106ae57905050905082816000815181106107175761071761467a565b602002602001018190525081816001815181106107365761073661467a565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107aa8a806146a9565b856040518463ffffffff1660e01b81526004016107c9939291906148ef565b6000604051808303816000875af11580156107e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261082e91908101906149a0565b905061083981611d80565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561088e604088016020890161420d565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610913606088016040890161420d565b73ffffffffffffffffffffffffffffffffffffffff908116600855865160400151161561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f53455400000000000000000000000000000000006044820152606401610444565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a0b91908e01908e0161420d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610a889190614a17565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ab391906145a8565b6020604051808303816000875af1158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190614b10565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b479033908b908590614b2d565b60405180910390a150505050508015610bb757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bd557610bd56145bb565b1415610c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f535543434553530000000000000000000000000000000000006044820152606401610444565b6003600d5460ff166003811115610c5657610c566145bb565b14610c6357610c63611e0b565b336000908152600f602090815260408083209051909291610c8691859101614c86565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cbb90614c94565b9091555060009050610cd560808301356060840135611faa565b90508060066000828254610ce99190614cc9565b92505081905550816060013560056000828254610d069190614662565b909155505060408201803590601190600090610d25906020870161420d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d6e9190614cc9565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610da59033908590614ce0565b60405180910390a1600754610dd69073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fd2565b6104af33610de8604085013584614662565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a66565b6000610e1a610e15611968565b612030565b905090565b43600e5410610e8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f5554000000000000000000000000000000000000006044820152606401610444565b6000600d5460ff166003811115610ea357610ea36145bb565b1480610ec557506001600d5460ff166003811115610ec357610ec36145bb565b145b610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e444544000000000000000000000000000000000000006044820152606401610444565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561102c5761102c6145bb565b14611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610444565b61109e610e15611968565b611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c4956450000000000000000000000000000000000000000000000006044820152606401610444565b61110c612096565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561114d5760035473ffffffffffffffffffffffffffffffffffffffff1661117b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915043101561120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b60006001544361121d9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610444565b6002600455604083015161135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d00000000000000000000000000000000000000000000006044820152606401610444565b8260600151836040015111156113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f444553495245440000000000000000000000006044820152606401610444565b60006113da611968565b90506113e581612030565b15611416576000600d5460ff166003811115611403576114036145bb565b141561141157611411612096565b61143d565b6001600d5460ff16600381111561142f5761142f6145bb565b141561143d5761143d6120f6565b6001600d5460ff166003811115611456576114566145bb565b146114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b60006114d8600554866060015161224890919063ffffffff16565b90506000806114e784846119c5565b909250905060006114f88385612248565b90508760400151811015611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b00000000000000000000000000006044820152606401610444565b87608001518211156115d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f5052494345000000000000000000000000000000000000006044820152606401610444565b60006115e28383611faa565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061163b83614d0a565b9091555050336000908152600f60209081526040808320905190929161166391859101614d43565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061169890614d0a565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116da908490614662565b9250508190555082600560008282546116f39190614cc9565b92505081905550816006600082825461170c9190614662565b9250508190555061174933308c60200151856117289190614662565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fd2565b60075461176d9073ffffffffffffffffffffffffffffffffffffffff163385611a66565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117a093929190614d92565b60405180910390a16117b187612030565b1561182b57600c546005541015611826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611833565b6118336120f6565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff166003811115611885576118856145bb565b146118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b6118f7610e15611968565b15611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61110c6120f6565b61199a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e1a906119c09073ffffffffffffffffffffffffffffffffffffffff1661225e565b61228c565b604080516020808252818301909252600091829182916020820181803683370190505090508360208201526119fc818660016123f8565b506000808660200151600288600001510381518110611a1d57611a1d61467a565b60200260200101518760200151600189600001510381518110611a4257611a4261467a565b602002602001015191509150611a588760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bb79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126cf565b60008054610100900460ff1615611bf1578160ff166001148015611b5d5750303b155b611be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b506000919050565b60005460ff808416911610611c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f30000000000000000000000000000000000000000000006044820152606401610444565b60015415611d3f57611d3f614e35565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611dab83604051602001611d979190614e64565b6040516020818303038152906040526127db565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e05576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e4a5760035473ffffffffffffffffffffffffffffffffffffffff16611e78565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150431015611f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b600060015443611f1a9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fbf8385614e8a565b611fc99190614ef6565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261100d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ab8565b60006001600554101561204557506000919050565b612060604051806020016040528060008152508360006123f8565b5060008083602001516001856000015103815181106120815761208161467a565b6020026020010151119050611fcc8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161210c57600361210f565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115612153576121536145bb565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612189929190614f31565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121fc57600080fd5b505af1158015612210573d6000803e3d6000fd5b5050505081156104af576009546006546008546104af9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a66565b60008183106122575781611fc9565b5090919050565b6060611fcc8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61362c565b6122be6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123245761232461422a565b60405190808252806020026020018201604052801561234d578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123845761238461422a565b6040519080825280602002602001820160405280156123ad578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123e75781602082026020018401528151602001820191506001810190506123c0565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156126b5576003890198508886015180601f1a975061ffff8160081c16985050600688101561262d578761247b57866020028401518252602082019150612640565b600188141561249857602087028301518252602082019150612640565b6002881415612525578c51876020021061250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610444565b866020026020018d01518252602082019150612640565b600388141561256e57600061255c604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612640565b600488141561258a576125838d8d848a613714565b9150612640565b6060876125b8578c6040516020016125a29190614f96565b6040516020818303038152906040529050612617565b60018814156125d1576125ca8d613884565b9050612617565b60028814156125ed576020808e01516040516125a2920161506c565b6003881415612617578c516040805160208101929092520160405160208183030381529060405290505b80511561262757612627816139c1565b50612640565b8761263c888463ffffffff8416565b9250505b60208c0151518c5111156126b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610444565b612436565b6020838303048c52509750505050505050505b9392505050565b6000612731826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a539092919063ffffffff16565b805190915015610bb7578080602001905181019061274f91906150a2565b610bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610444565b60608151826040516020016127f19291906150c4565b6040516020818303038152906040529050919050565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612893858a613a62565b90611faa565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612906858a613a62565b90613ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613a62565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613af8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613b56565b600060208302820380516000602083015b858110156129ed57805183019150828210156129e057600080fd5b90915081906020016129c5565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a3957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612a518382613ba1565b9250612a0b565b600060208302820380516000602083015b858110156129ed5780518303915082821115612a8457600080fd5b9091508190602001612a69565b6020828102820380516000928201835b8582108015612ab05750826000105b156129ed57508051602090910190612ac88382613bdc565b9250612aa1565b60006020830282038051600080602084015b86811015612b12578315612b0a578051925082840291508284830414612b0657600080fd5b8193505b602001612ae1565b50505081526020019392505050565b6020828102820380516000928201835b8582108015612b5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612b778382613bf2565b9250612b31565b600060208302820380516000602083015b858110156129ed578051915081612ba557600080fd5b9181900491602001612b8f565b600060208302820380516000602083015b858110156129ed578051915081612bd957600080fd5b9181900691602001612bc3565b6020828102820380516000928201835b858210156129ed57508051602090910190612c11818461527b565b9250612bf6565b6020828102820380516000928201835b858210156129ed5750805182811015612c3f578092505b602082019150612c28565b6020828102820380516000928201835b858210156129ed5750805182811115612c71578092505b602082019150612c5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015612e31578051612e295760008252612e31565b602001612e12565b506020019392505050565b6000602083028203805b83811015612e315780518015612e5d578252612e31565b50602001612e46565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612f29573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128999190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128998383613c21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561301685858585613c80565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156130535761305361422a565b60405190808252806020026020018201604052801561307c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156130b857815181602001860152602082019150602081019050613096565b505051905060006130cb83838989613d26565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612f0c565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129409190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190614b10565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa1580156133fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134219190615287565b909452509395945050505050565b60008060008467ffffffffffffffff81111561344d5761344d61422a565b604051908082528060200260200182016040528015613476578160200160208202803683370190505b50905060008567ffffffffffffffff8111156134945761349461422a565b6040519080825280602002602001820160405280156134bd578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156135125782518152602092830192016134fa565b5050602088028101602084015b8183101561353757825181526020928301920161351f565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061359190879087906004016152a0565b600060405180830381865afa1580156135ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135f49190810190615303565b9050846020820160208a0281015b8082101561361d578151835260209283019290910190613602565b50909998505050505050505050565b6060833b8061364b5750506040805160208101909152600081526126c8565b808411156136695750506040805160208101909152600081526126c8565b838310156136b4576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610444565b83830384820360008282106136c957826136cb565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261375357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061379e565b826001141561377757506fffffffffffffffffffffffffffffffff9050608061379e565b8260021415613793575067ffffffffffffffff9050604061379e565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156137c1576137c161422a565b6040519080825280602002602001820160405280156137ea578160200160208202803683370190505b50905060208082019083028a03815b8b8210156138115781518152602091820191016137f9565b505060608b015160808c015160209081029091010160005b61010081101561386f5760208502830182845b82811015613858578051841c8a1682526020918201910161383c565b5050506138668e8e8b6123f8565b9b508501613829565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016138d0919061506c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261390c92916020016153a9565b604051602081830303815290604052905060005b8560400151518110156139b85781866040015182815181106139445761394461467a565b60200260200101515160001b876040015183815181106139665761396661467a565b6020026020010151604051602001613980939291906153cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613920565b50949350505050565b613a50816040516024016139d591906145a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613e76565b50565b606061387c8484600085613e97565b6000808260121415613a775783915050611fcc565b8260121115613aa357506012829003613a9181600a61527b565b613a9b9085614e8a565b915050611fcc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613ad281600a61527b565b613a9b9085614ef6565b5092915050565b600081611fbf670de0b6b3a764000085614e8a565b6000806012831415613b0d5783915050611fcc565b8260121115613b2757506012829003613ad281600a61527b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613a9181600a61527b565b600081810b613b66575081611fcc565b60008260000b1315613b8e57613b7d82600a615406565b613b879084614e8a565b9050611fcc565b60ff600083900316613ad281600a61527b565b6000828201838110613bb3578061387c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000818311613bec576000611fc9565b50900390565b600082613c0157506000611fcc565b82820282848281613c1457613c14614ec7565b041415613bb3578061387c565b60008060015b60088111613c78576000613c3b868361402d565b90506000613c49868461402d565b90506000613c578383613bdc565b9050613c678560018603836140da565b94505060019092019150613c279050565b509392505050565b6000826008811115613cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b6000855b85811015613d1a5763ffffffff6020820290811b199890981685891b17979150600101613cf2565b50959695505050505050565b835160009081908190819060015b60088111613e6857600092508287613d6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613d71565b5060005b60005b83811015613e2657613d9f8c8281518110613d9157613d9161467a565b60200260200101518461402d565b95508a8611613df15788613dbe57613db78683612248565b9150613de8565b6001891415613dd157613db78683614164565b600289148015613ddf575084155b15613de8578591505b60019450613e1e565b89613e1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613e26565b600101613d74565b5083613e4f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613e5d8660018403836140da565b955050600101613d34565b509298975050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015613f29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610444565b73ffffffffffffffffffffffffffffffffffffffff85163b613fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610444565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613fd09190615415565b60006040518083038185875af1925050503d806000811461400d576040519150601f19603f3d011682016040523d82523d6000602084013e614012565b606091505b5091509150614022828286614174565b979650505050505050565b600081600881111561409b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b826140a95760009150613adc565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310156122575781611fc9565b606083156141835750816126c8565b8251156141935782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044491906145a8565b6000602082840312156141d957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613a5057600080fd5b8035611cc0816141e0565b60006020828403121561421f57600080fd5b81356126c8816141e0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561427c5761427c61422a565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142c9576142c961422a565b604052919050565b600067ffffffffffffffff8211156142eb576142eb61422a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261432857600080fd5b813561433b614336826142d1565b614282565b81815284602083860101111561435057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561438057600080fd5b823567ffffffffffffffff8082111561439857600080fd5b9084019060e082870312156143ac57600080fd5b909250602084013590808211156143c257600080fd5b90840190608082870312156143d657600080fd5b6143de614259565b8235828111156143ed57600080fd5b8301608081890312156143ff57600080fd5b614407614259565b81358481111561441657600080fd5b6144228a828501614317565b82525060208201358481111561443757600080fd5b6144438a828501614317565b60208301525060408201359350614459846141e0565b83604082015260608201356060820152808352505061447a60208401614202565b60208201526040830135604082015261449560608401614202565b60608201528093505050509250929050565b600060a08284031215611e0557600080fd5b600060a082840312156144cb57600080fd5b60405160a0810181811067ffffffffffffffff821117156144ee576144ee61422a565b60405282356144fc816141e0565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561454d578181015183820152602001614535565b8381111561100d5750506000910152565b60008151808452614576816020860160208601614532565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc9602083018461455e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614621577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611fcc82846145ea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561467557614675614633565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126146dd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261471c57600080fd5b830160208101925035905067ffffffffffffffff81111561473c57600080fd5b8060051b3603831315611a5f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156147c957600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016147f683846146e7565b604086528281845260608701905060608260051b88010193508260005b838110156148c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261487457600080fd5b85018035602067ffffffffffffffff82111561488f57600080fd5b81360388131561489e57600080fd5b6148ab898383860161474e565b98509485019493909301925050600101614813565b50505050506148d260208401846146e7565b85830360208701526148e5838284614797565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261491f828501876147e6565b84810360408681019190915286518083528388019284019060005b81811015614990578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161493a565b50909a9950505050505050505050565b6000602082840312156149b257600080fd5b815167ffffffffffffffff8111156149c957600080fd5b8201601f810184136149da57600080fd5b80516149e8614336826142d1565b8181528560208385010111156149fd57600080fd5b614a0e826020830160208601614532565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614a5e61014086018261455e565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614a99828261455e565b91505082604083015116610100860152606082015161012086015260408601519250614add606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614a0e60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614b2257600080fd5b81516126c8816141e0565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614b8157600080fd5b60e06060840152614b9861014084018683016147e6565b9050614ba660208601614202565b73ffffffffffffffffffffffffffffffffffffffff166080840152614bcd60408601614202565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c08501356101208401528091505061387c604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614c4c816141e0565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611fcc8284614c3a565b600081614ca357614ca3614633565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614cdb57614cdb614633565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126c86020830184614c3a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d3c57614d3c614633565b5060010190565b60a08101611fcc82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a083015261387c60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000815260008251614e7d816001850160208701614532565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ec257614ec2614633565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126c860208301846145ea565b600081518084526020808501945080840160005b83811015614f8b57815187529582019590820190600101614f6f565b509495945050505050565b600060208083528351818401528084015160a06040850152614fbb60c0850182614f5b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615034578487830301845261502282875161455e565b95880195938801939150600101615008565b5060608a01519650838982030160808a01526150508188614f5b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156150965781518552938201939082019060010161507a565b50929695505050505050565b6000602082840312156150b457600080fd5b815180151581146126c857600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161514d81600e850160208701614532565b91909101600e019392505050565b600181815b808511156151b457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561519a5761519a614633565b808516156151a757918102915b93841c9390800290615160565b509250929050565b6000826151cb57506001611fcc565b816151d857506000611fcc565b81600181146151ee57600281146151f857615214565b6001915050611fcc565b60ff84111561520957615209614633565b50506001821b611fcc565b5060208310610133831016604e8410600b8410161715615237575081810a611fcc565b615241838361515b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561527357615273614633565b029392505050565b6000611fc983836151bc565b60006020828403121561529957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156152ef57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016152bd565b505050838103828501526148e58186614f5b565b6000602080838503121561531657600080fd5b825167ffffffffffffffff8082111561532e57600080fd5b818501915085601f83011261534257600080fd5b8151818111156153545761535461422a565b8060051b9150615365848301614282565b818152918301840191848101908884111561537f57600080fd5b938501935b8385101561539d57845182529385019390850190615384565b98975050505050505050565b828152600082516153c1816020850160208701614532565b919091016020019392505050565b600084516153e1818460208901614532565b820184815283516153f9816020808501908801614532565b0160200195945050505050565b6000611fc960ff8416836151bc565b600082516146dd81846020870161453256fea2646970667358221220acdec4358db66d8ec11c160884f6e44c5ff896a1cabd5caff75db69e3ccd8e7364736f6c634300080a0033"; + "0x60a06040523480156200001157600080fd5b5060405162006ddb38038062006ddb833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b6159a3806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea2646970667358221220f66008c5379d659feecefa4569278f026b8542c44f7a90810a25709643cb868b64736f6c634300080a00336101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea26469706673582212207290bde46e6fc9fa75e950867d45bdf6578fc6e66b45ca1c51018961ee7f8bc064736f6c634300080a0033"; type SaleFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleReentrant__factory.ts b/src/typechain/factories/SaleReentrant__factory.ts index 9bc29ad..c97252e 100644 --- a/src/typechain/factories/SaleReentrant__factory.ts +++ b/src/typechain/factories/SaleReentrant__factory.ts @@ -418,7 +418,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea26469706673582212208d99fcb1f8e717392ce551f4be0931aa71e4d3443e27c6a3d90c6c37eb9cbf5864736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea26469706673582212206d67b12b0ff4fd47b9aae10cc78ef55f6c42c4d7d52a21d47698340d7cc0683064736f6c634300080a0033"; type SaleReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Sale__factory.ts b/src/typechain/factories/Sale__factory.ts index 063d2d5..e1295b0 100644 --- a/src/typechain/factories/Sale__factory.ts +++ b/src/typechain/factories/Sale__factory.ts @@ -743,7 +743,7 @@ const _abi = [ ]; const _bytecode = - "0x6101006040523480156200001257600080fd5b5060405162005600380380620056008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161545d620001a360003960006109bd015260006105030152600061075a01526000610781015261545d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e3314610390578063fc0c546a146103a357600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd3660046141c7565b6103ab565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461420d565b6103c8565b005b61012f61013f36600461436d565b6104b3565b61012f6101523660046144a7565b610bbc565b61015f610e08565b6040519015158152602001610113565b61012f610e1f565b61012f611013565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046144b9565b61110e565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61186c565b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261280760e082015261281261010082015261281d6101208201526128286101408201526128336101608201526128a661018082015261290c6101a082015261294c6101c08201526129806101e08201526129b46102008201526129fb610220820152612a58610240820152612a91610260820152612acf610280820152612b216102a0820152612b7e6102c0820152612bb26102e0820152612be6610300820152612c18610320820152612c4a610340820152612c7c610360820152612ca9610380820152612d046103a0820152612d5a6103c0820152612db16103e0820152612e08610400820152612e3c610420820152612e66610440820152612f4d610460820152612fa96104808201526130256104a08201526130df6104c082018190526131896104e083015261050082015261320961052082015261331161054082015261342f610560808301919091528152905161011391906145a8565b600d5460ff166040516101139190614625565b600754610183565b6000806103bf6103b9611968565b846119c5565b91509150915091565b6002600d5460ff1660038111156103e1576103e16145bb565b1461044d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104af5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104af91168383611a66565b5050565b60006104bf6001611b3a565b905080156104f457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105018360800135611cc5565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561058f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f55540000000000000000000000000000000000000000006044820152606401610444565b61059d606084013543614662565b600e5560a083013561060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f300000000000000000000000000000000000000000006044820152606401610444565b8260a00135600b819055506106566040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6106ee6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106ae57905050905082816000815181106107175761071761467a565b602002602001018190525081816001815181106107365761073661467a565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107aa8a806146a9565b856040518463ffffffff1660e01b81526004016107c9939291906148ef565b6000604051808303816000875af11580156107e8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261082e91908101906149a0565b905061083981611d80565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561088e604088016020890161420d565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610913606088016040890161420d565b73ffffffffffffffffffffffffffffffffffffffff908116600855865160400151161561099c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f53455400000000000000000000000000000000006044820152606401610444565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a0b91908e01908e0161420d565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610a889190614a17565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ab391906145a8565b6020604051808303816000875af1158015610ad2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af69190614b10565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b479033908b908590614b2d565b60405180910390a150505050508015610bb757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bd557610bd56145bb565b1415610c3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f535543434553530000000000000000000000000000000000006044820152606401610444565b6003600d5460ff166003811115610c5657610c566145bb565b14610c6357610c63611e0b565b336000908152600f602090815260408083209051909291610c8691859101614c86565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cbb90614c94565b9091555060009050610cd560808301356060840135611faa565b90508060066000828254610ce99190614cc9565b92505081905550816060013560056000828254610d069190614662565b909155505060408201803590601190600090610d25906020870161420d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d6e9190614cc9565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610da59033908590614ce0565b60405180910390a1600754610dd69073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fd2565b6104af33610de8604085013584614662565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a66565b6000610e1a610e15611968565b612030565b905090565b43600e5410610e8a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f5554000000000000000000000000000000000000006044820152606401610444565b6000600d5460ff166003811115610ea357610ea36145bb565b1480610ec557506001600d5460ff166003811115610ec357610ec36145bb565b145b610f2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e444544000000000000000000000000000000000000006044820152606401610444565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610ff957600080fd5b505af115801561100d573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561102c5761102c6145bb565b14611093576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e470000000000000000000000000000000000000000006044820152606401610444565b61109e610e15611968565b611104576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c4956450000000000000000000000000000000000000000000000006044820152606401610444565b61110c612096565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561114d5760035473ffffffffffffffffffffffffffffffffffffffff1661117b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915043101561120d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b60006001544361121d9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156112ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610444565b6002600455604083015161135e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d00000000000000000000000000000000000000000000006044820152606401610444565b8260600151836040015111156113d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f444553495245440000000000000000000000006044820152606401610444565b60006113da611968565b90506113e581612030565b15611416576000600d5460ff166003811115611403576114036145bb565b141561141157611411612096565b61143d565b6001600d5460ff16600381111561142f5761142f6145bb565b141561143d5761143d6120f6565b6001600d5460ff166003811115611456576114566145bb565b146114bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b60006114d8600554866060015161224890919063ffffffff16565b90506000806114e784846119c5565b909250905060006114f88385612248565b90508760400151811015611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b00000000000000000000000000006044820152606401610444565b87608001518211156115d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f5052494345000000000000000000000000000000000000006044820152606401610444565b60006115e28383611faa565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061163b83614d0a565b9091555050336000908152600f60209081526040808320905190929161166391859101614d43565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061169890614d0a565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116da908490614662565b9250508190555082600560008282546116f39190614cc9565b92505081905550816006600082825461170c9190614662565b9250508190555061174933308c60200151856117289190614662565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fd2565b60075461176d9073ffffffffffffffffffffffffffffffffffffffff163385611a66565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117a093929190614d92565b60405180910390a16117b187612030565b1561182b57600c546005541015611826576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611833565b6118336120f6565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff166003811115611885576118856145bb565b146118ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f414354495645000000000000000000000000000000000000000000006044820152606401610444565b6118f7610e15611968565b15611960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104449060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61110c6120f6565b61199a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e1a906119c09073ffffffffffffffffffffffffffffffffffffffff1661225e565b61228c565b604080516020808252818301909252600091829182916020820181803683370190505090508360208201526119fc818660016123f8565b506000808660200151600288600001510381518110611a1d57611a1d61467a565b60200260200101518760200151600189600001510381518110611a4257611a4261467a565b602002602001015191509150611a588760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bb79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126cf565b60008054610100900460ff1615611bf1578160ff166001148015611b5d5750303b155b611be9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b506000919050565b60005460ff808416911610611c88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610444565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f30000000000000000000000000000000000000000000006044820152606401610444565b60015415611d3f57611d3f614e35565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611dab83604051602001611d979190614e64565b6040516020818303038152906040526127db565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e05576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e4a5760035473ffffffffffffffffffffffffffffffffffffffff16611e78565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150431015611f0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e0000000000000000000000000000000000000000000000006044820152606401610444565b600060015443611f1a9190614662565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fbf8385614e8a565b611fc99190614ef6565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261100d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ab8565b60006001600554101561204557506000919050565b612060604051806020016040528060008152508360006123f8565b5060008083602001516001856000015103815181106120815761208161467a565b6020026020010151119050611fcc8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161210c57600361210f565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115612153576121536145bb565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612189929190614f31565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121fc57600080fd5b505af1158015612210573d6000803e3d6000fd5b5050505081156104af576009546006546008546104af9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a66565b60008183106122575781611fc9565b5090919050565b6060611fcc8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61362c565b6122be6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123245761232461422a565b60405190808252806020026020018201604052801561234d578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123845761238461422a565b6040519080825280602002602001820160405280156123ad578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123e75781602082026020018401528151602001820191506001810190506123c0565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156126b5576003890198508886015180601f1a975061ffff8160081c16985050600688101561262d578761247b57866020028401518252602082019150612640565b600188141561249857602087028301518252602082019150612640565b6002881415612525578c51876020021061250e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610444565b866020026020018d01518252602082019150612640565b600388141561256e57600061255c604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612640565b600488141561258a576125838d8d848a613714565b9150612640565b6060876125b8578c6040516020016125a29190614f96565b6040516020818303038152906040529050612617565b60018814156125d1576125ca8d613884565b9050612617565b60028814156125ed576020808e01516040516125a2920161506c565b6003881415612617578c516040805160208101929092520160405160208183030381529060405290505b80511561262757612627816139c1565b50612640565b8761263c888463ffffffff8416565b9250505b60208c0151518c5111156126b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610444565b612436565b6020838303048c52509750505050505050505b9392505050565b6000612731826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613a539092919063ffffffff16565b805190915015610bb7578080602001905181019061274f91906150a2565b610bb7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610444565b60608151826040516020016127f19291906150c4565b6040516020818303038152906040529050919050565b438152602001919050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612893858a613a62565b90611faa565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361289982612906858a613a62565b90613ae3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613a62565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613af8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826129408287613b56565b600060208302820380516000602083015b858110156129ed57805183019150828210156129e057600080fd5b90915081906020016129c5565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a3957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612a518382613ba1565b9250612a0b565b600060208302820380516000602083015b858110156129ed5780518303915082821115612a8457600080fd5b9091508190602001612a69565b6020828102820380516000928201835b8582108015612ab05750826000105b156129ed57508051602090910190612ac88382613bdc565b9250612aa1565b60006020830282038051600080602084015b86811015612b12578315612b0a578051925082840291508284830414612b0657600080fd5b8193505b602001612ae1565b50505081526020019392505050565b6020828102820380516000928201835b8582108015612b5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129ed57508051602090910190612b778382613bf2565b9250612b31565b600060208302820380516000602083015b858110156129ed578051915081612ba557600080fd5b9181900491602001612b8f565b600060208302820380516000602083015b858110156129ed578051915081612bd957600080fd5b9181900691602001612bc3565b6020828102820380516000928201835b858210156129ed57508051602090910190612c11818461527b565b9250612bf6565b6020828102820380516000928201835b858210156129ed5750805182811015612c3f578092505b602082019150612c28565b6020828102820380516000928201835b858210156129ed5750805182811115612c71578092505b602082019150612c5a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015612e31578051612e295760008252612e31565b602001612e12565b506020019392505050565b6000602083028203805b83811015612e315780518015612e5d578252612e31565b50602001612e46565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015612f29573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128999190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128998383613c21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561301685858585613c80565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156130535761305361422a565b60405190808252806020026020018201604052801561307c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156130b857815181602001860152602082019150602081019050613096565b505051905060006130cb83838989613d26565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401612f0c565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129409190615287565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156132ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ee9190614b10565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa1580156133fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134219190615287565b909452509395945050505050565b60008060008467ffffffffffffffff81111561344d5761344d61422a565b604051908082528060200260200182016040528015613476578160200160208202803683370190505b50905060008567ffffffffffffffff8111156134945761349461422a565b6040519080825280602002602001820160405280156134bd578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156135125782518152602092830192016134fa565b5050602088028101602084015b8183101561353757825181526020928301920161351f565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061359190879087906004016152a0565b600060405180830381865afa1580156135ae573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526135f49190810190615303565b9050846020820160208a0281015b8082101561361d578151835260209283019290910190613602565b50909998505050505050505050565b6060833b8061364b5750506040805160208101909152600081526126c8565b808411156136695750506040805160208101909152600081526126c8565b838310156136b4576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610444565b83830384820360008282106136c957826136cb565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261375357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061379e565b826001141561377757506fffffffffffffffffffffffffffffffff9050608061379e565b8260021415613793575067ffffffffffffffff9050604061379e565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156137c1576137c161422a565b6040519080825280602002602001820160405280156137ea578160200160208202803683370190505b50905060208082019083028a03815b8b8210156138115781518152602091820191016137f9565b505060608b015160808c015160209081029091010160005b61010081101561386f5760208502830182845b82811015613858578051841c8a1682526020918201910161383c565b5050506138668e8e8b6123f8565b9b508501613829565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016138d0919061506c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261390c92916020016153a9565b604051602081830303815290604052905060005b8560400151518110156139b85781866040015182815181106139445761394461467a565b60200260200101515160001b876040015183815181106139665761396661467a565b6020026020010151604051602001613980939291906153cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613920565b50949350505050565b613a50816040516024016139d591906145a8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613e76565b50565b606061387c8484600085613e97565b6000808260121415613a775783915050611fcc565b8260121115613aa357506012829003613a9181600a61527b565b613a9b9085614e8a565b915050611fcc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613ad281600a61527b565b613a9b9085614ef6565b5092915050565b600081611fbf670de0b6b3a764000085614e8a565b6000806012831415613b0d5783915050611fcc565b8260121115613b2757506012829003613ad281600a61527b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613a9181600a61527b565b600081810b613b66575081611fcc565b60008260000b1315613b8e57613b7d82600a615406565b613b879084614e8a565b9050611fcc565b60ff600083900316613ad281600a61527b565b6000828201838110613bb3578061387c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000818311613bec576000611fc9565b50900390565b600082613c0157506000611fcc565b82820282848281613c1457613c14614ec7565b041415613bb3578061387c565b60008060015b60088111613c78576000613c3b868361402d565b90506000613c49868461402d565b90506000613c578383613bdc565b9050613c678560018603836140da565b94505060019092019150613c279050565b509392505050565b6000826008811115613cee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b6000855b85811015613d1a5763ffffffff6020820290811b199890981685891b17979150600101613cf2565b50959695505050505050565b835160009081908190819060015b60088111613e6857600092508287613d6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613d71565b5060005b60005b83811015613e2657613d9f8c8281518110613d9157613d9161467a565b60200260200101518461402d565b95508a8611613df15788613dbe57613db78683612248565b9150613de8565b6001891415613dd157613db78683614164565b600289148015613ddf575084155b15613de8578591505b60019450613e1e565b89613e1e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613e26565b600101613d74565b5083613e4f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613e5d8660018403836140da565b955050600101613d34565b509298975050505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015613f29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610444565b73ffffffffffffffffffffffffffffffffffffffff85163b613fa7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610444565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613fd09190615415565b60006040518083038185875af1925050503d806000811461400d576040519150601f19603f3d011682016040523d82523d6000602084013e614012565b606091505b5091509150614022828286614174565b979650505050505050565b600081600881111561409b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b826140a95760009150613adc565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610444565b505060209190910290811b63ffffffff90911b19919091161790565b6000818310156122575781611fc9565b606083156141835750816126c8565b8251156141935782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044491906145a8565b6000602082840312156141d957600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613a5057600080fd5b8035611cc0816141e0565b60006020828403121561421f57600080fd5b81356126c8816141e0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561427c5761427c61422a565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156142c9576142c961422a565b604052919050565b600067ffffffffffffffff8211156142eb576142eb61422a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261432857600080fd5b813561433b614336826142d1565b614282565b81815284602083860101111561435057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561438057600080fd5b823567ffffffffffffffff8082111561439857600080fd5b9084019060e082870312156143ac57600080fd5b909250602084013590808211156143c257600080fd5b90840190608082870312156143d657600080fd5b6143de614259565b8235828111156143ed57600080fd5b8301608081890312156143ff57600080fd5b614407614259565b81358481111561441657600080fd5b6144228a828501614317565b82525060208201358481111561443757600080fd5b6144438a828501614317565b60208301525060408201359350614459846141e0565b83604082015260608201356060820152808352505061447a60208401614202565b60208201526040830135604082015261449560608401614202565b60608201528093505050509250929050565b600060a08284031215611e0557600080fd5b600060a082840312156144cb57600080fd5b60405160a0810181811067ffffffffffffffff821117156144ee576144ee61422a565b60405282356144fc816141e0565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561454d578181015183820152602001614535565b8381111561100d5750506000910152565b60008151808452614576816020860160208601614532565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fc9602083018461455e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614621577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611fcc82846145ea565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561467557614675614633565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126146dd57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261471c57600080fd5b830160208101925035905067ffffffffffffffff81111561473c57600080fd5b8060051b3603831315611a5f57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156147c957600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016147f683846146e7565b604086528281845260608701905060608260051b88010193508260005b838110156148c0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261487457600080fd5b85018035602067ffffffffffffffff82111561488f57600080fd5b81360388131561489e57600080fd5b6148ab898383860161474e565b98509485019493909301925050600101614813565b50505050506148d260208401846146e7565b85830360208701526148e5838284614797565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261491f828501876147e6565b84810360408681019190915286518083528388019284019060005b81811015614990578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161493a565b50909a9950505050505050505050565b6000602082840312156149b257600080fd5b815167ffffffffffffffff8111156149c957600080fd5b8201601f810184136149da57600080fd5b80516149e8614336826142d1565b8181528560208385010111156149fd57600080fd5b614a0e826020830160208601614532565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614a5e61014086018261455e565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614a99828261455e565b91505082604083015116610100860152606082015161012086015260408601519250614add606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614a0e60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614b2257600080fd5b81516126c8816141e0565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614b8157600080fd5b60e06060840152614b9861014084018683016147e6565b9050614ba660208601614202565b73ffffffffffffffffffffffffffffffffffffffff166080840152614bcd60408601614202565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c08501356101208401528091505061387c604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614c4c816141e0565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611fcc8284614c3a565b600081614ca357614ca3614633565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614cdb57614cdb614633565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126c86020830184614c3a565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614d3c57614d3c614633565b5060010190565b60a08101611fcc82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a083015261387c60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000815260008251614e7d816001850160208701614532565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ec257614ec2614633565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f2c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126c860208301846145ea565b600081518084526020808501945080840160005b83811015614f8b57815187529582019590820190600101614f6f565b509495945050505050565b600060208083528351818401528084015160a06040850152614fbb60c0850182614f5b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615034578487830301845261502282875161455e565b95880195938801939150600101615008565b5060608a01519650838982030160808a01526150508188614f5b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156150965781518552938201939082019060010161507a565b50929695505050505050565b6000602082840312156150b457600080fd5b815180151581146126c857600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161514d81600e850160208701614532565b91909101600e019392505050565b600181815b808511156151b457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561519a5761519a614633565b808516156151a757918102915b93841c9390800290615160565b509250929050565b6000826151cb57506001611fcc565b816151d857506000611fcc565b81600181146151ee57600281146151f857615214565b6001915050611fcc565b60ff84111561520957615209614633565b50506001821b611fcc565b5060208310610133831016604e8410600b8410161715615237575081810a611fcc565b615241838361515b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561527357615273614633565b029392505050565b6000611fc983836151bc565b60006020828403121561529957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156152ef57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016152bd565b505050838103828501526148e58186614f5b565b6000602080838503121561531657600080fd5b825167ffffffffffffffff8082111561532e57600080fd5b818501915085601f83011261534257600080fd5b8151818111156153545761535461422a565b8060051b9150615365848301614282565b818152918301840191848101908884111561537f57600080fd5b938501935b8385101561539d57845182529385019390850190615384565b98975050505050505050565b828152600082516153c1816020850160208701614532565b919091016020019392505050565b600084516153e1818460208901614532565b820184815283516153f9816020808501908801614532565b0160200195945050505050565b6000611fc960ff8416836151bc565b600082516146dd81846020870161453256fea2646970667358221220acdec4358db66d8ec11c160884f6e44c5ff896a1cabd5caff75db69e3ccd8e7364736f6c634300080a0033"; + "0x6101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea26469706673582212207290bde46e6fc9fa75e950867d45bdf6578fc6e66b45ca1c51018961ee7f8bc064736f6c634300080a0033"; type SaleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StackHeightTest__factory.ts b/src/typechain/factories/StackHeightTest__factory.ts index 8944752..768fe74 100644 --- a/src/typechain/factories/StackHeightTest__factory.ts +++ b/src/typechain/factories/StackHeightTest__factory.ts @@ -91,7 +91,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405234801561001057600080fd5b50604051620022d7380380620022d783398101604081905261003191610046565b306080526001600160a01b031660a052610076565b60006020828403121561005857600080fd5b81516001600160a01b038116811461006f57600080fd5b9392505050565b60805160a05161223b6200009c60003960006103020152600061033e015261223b6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b6100596100543660046118b4565b610229565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6040805161058081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526104ef60e08201526104fd61010082015261050861012082015261051361014082015261051e6101608201526105916101808201526105f76101a08201526106376101c082015261066b6101e082015261069f6102008201526106e661022082015261074361024082015261077c6102608201526107ba61028082015261080c6102a08201526108696102c082015261089d6102e08201526108d16103008201526109036103208201526109356103408201526109676103608201526109946103808201526109ef6103a0820152610a456103c0820152610a9c6103e0820152610af3610400820152610b27610420820152610b51610440820152610c38610460820152610c94610480820152610d106104a0820152610dca6104c08201819052610e746104e0830152610500820152610ef4610520820152610ffc61054082015261111a610560808301919091528152905161008f919061191f565b6102696040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6102ca6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161028a57905050905081816000815181106102f3576102f361199f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161037d93929190611b4d565b6000604051808303816000875af115801561039c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103e29190810190611cff565b90506103ed81610438565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806104638360405160200161044f9190611db1565b6040516020818303038152906040526104c3565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166104bd576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016104d9929190611dd7565b6040516020818303038152906040529050919050565b438152602001805b92915050565b428152602001919050565b338152602001919050565b308152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105848261057e858a611317565b90611398565b9093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183610584826105f1858a611317565b906113be565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261062b8287611317565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261062b82876113d3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261062b8287611431565b600060208302820380516000602083015b858110156106d857805183019150828210156106cb57600080fd5b90915081906020016106b0565b505081526020019392505050565b6020828102820380516000928201835b858210801561072457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156106d85750805160209091019061073c838261147c565b92506106f6565b600060208302820380516000602083015b858110156106d8578051830391508282111561076f57600080fd5b9091508190602001610754565b6020828102820380516000928201835b858210801561079b5750826000105b156106d8575080516020909101906107b383826114b8565b925061078c565b60006020830282038051600080602084015b868110156107fd5783156107f55780519250828402915082848304146107f157600080fd5b8193505b6020016107cc565b50505081526020019392505050565b6020828102820380516000928201835b858210801561084a57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156106d85750805160209091019061086283826114ce565b925061081c565b600060208302820380516000602083015b858110156106d857805191508161089057600080fd5b918190049160200161087a565b600060208302820380516000602083015b858110156106d85780519150816108c457600080fd5b91819006916020016108ae565b6020828102820380516000928201835b858210156106d8575080516020909101906108fc8184611fbd565b92506108e1565b6020828102820380516000928201835b858210156106d8575080518281101561092a578092505b602082019150610913565b6020828102820380516000928201835b858210156106d8575080518281111561095c578092505b602082019150610945565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b6000602083028203805b83811015610b1c578051610b145760008252610b1c565b602001610afd565b506020019392505050565b6000602083028203805b83811015610b1c5780518015610b48578252610b1c565b50602001610b31565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517fe053ea3100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8083166004830152929460009493909291859184169063e053ea31906024015b602060405180830381865afa158015610c14573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105849190611fc9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361058483836114fd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085610d018585858561155c565b90955250949695505050505050565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115610d3e57610d3e611970565b604051908082528060200260200182016040528015610d67578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015610da357815181602001860152602082019150602081019050610d81565b50505190506000610db683838989611607565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a0823190602401610bf7565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ed0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611fc9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd99190611fe2565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401602060405180830381865afa1580156110e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110c9190611fc9565b909452509395945050505050565b60008060008467ffffffffffffffff81111561113857611138611970565b604051908082528060200260200182016040528015611161578160200160208202803683370190505b50905060008567ffffffffffffffff81111561117f5761117f611970565b6040519080825280602002602001820160405280156111a8578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156111fd5782518152602092830192016111e5565b5050602088028101602084015b8183101561122257825181526020928301920161120a565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061127c9087908790600401612018565b600060405180830381865afa158015611299573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112df91908101906120a9565b9050846020820160208a0281015b808210156113085781518352602092830192909101906112ed565b50909998505050505050505050565b600080826012141561132c57839150506104f7565b82601211156113585750601282900361134681600a611fbd565b611350908561214f565b9150506104f7565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161138781600a611fbd565b61135090856121bb565b5092915050565b6000670de0b6b3a76400006113ad838561214f565b6113b791906121bb565b9392505050565b6000816113ad670de0b6b3a76400008561214f565b60008060128314156113e857839150506104f7565b82601211156114025750601282900361138781600a611fbd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161134681600a611fbd565b600081810b6114415750816104f7565b60008260000b13156114695761145882600a6121f6565b611462908461214f565b90506104f7565b60ff60008390031661138781600a611fbd565b600082820183811061148e57806114b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008183116114c85760006113b7565b50900390565b6000826114dd575060006104f7565b828202828482816114f0576114f061218c565b04141561148e57806114b0565b60008060015b600881116115545760006115178683611757565b905060006115258684611757565b9050600061153383836114b8565b9050611543856001860383611804565b945050600190920191506115039050565b509392505050565b60008260088111156115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b858110156115fb5763ffffffff6020820290811b199890981685891b179791506001016115d3565b50959695505050505050565b835160009081908190819060015b600881116117495760009250828761164e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611652565b5060005b60005b83811015611707576116808c82815181106116725761167261199f565b602002602001015184611757565b95508a86116116d2578861169f57611698868361188e565b91506116c9565b60018914156116b25761169886836118a4565b6002891480156116c0575084155b156116c9578591505b600194506116ff565b896116ff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150611707565b600101611655565b508361173057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61173e866001840383611804565b955050600101611615565b509298975050505050505050565b60008160088111156117c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016115c6565b826117d35760009150611391565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611872576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016115c6565b505060209190910290811b63ffffffff90911b19919091161790565b600081831061189d57816113b7565b5090919050565b60008183101561189d57816113b7565b6000602082840312156118c657600080fd5b813567ffffffffffffffff8111156118dd57600080fd5b8201604081850312156113b757600080fd5b60005b8381101561190a5781810151838201526020016118f2565b83811115611919576000848401525b50505050565b602081526000825180602084015261193e8160408501602087016118ef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611a0357600080fd5b830160208101925035905067ffffffffffffffff811115611a2357600080fd5b8060051b3603831315611a3557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611ab757600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015611b4257815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101611ae8565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301611b7e86876119ce565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015611c48577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611bff57600080fd5b8501803567ffffffffffffffff811115611c1857600080fd5b803603871315611c2757600080fd5b611c3488828b8501611a3c565b975050509186019190860190600101611b9e565b5050505050611c59828701876119ce565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152611c90828483611a85565b925050508281036040840152611ca68185611ad4565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611cf757611cf7611970565b604052919050565b600060208284031215611d1157600080fd5b815167ffffffffffffffff80821115611d2957600080fd5b818401915084601f830112611d3d57600080fd5b815181811115611d4f57611d4f611970565b611d8060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611cb0565b9150808252856020828501011115611d9757600080fd5b611da88160208401602086016118ef565b50949350505050565b6000815260008251611dca8160018501602087016118ef565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611e6081600e8501602087016118ef565b91909101600e019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115611ef657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611edc57611edc611e6e565b80851615611ee957918102915b93841c9390800290611ea2565b509250929050565b600082611f0d575060016104f7565b81611f1a575060006104f7565b8160018114611f305760028114611f3a57611f56565b60019150506104f7565b60ff841115611f4b57611f4b611e6e565b50506001821b6104f7565b5060208310610133831016604e8410600b8410161715611f79575081810a6104f7565b611f838383611e9d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611fb557611fb5611e6e565b029392505050565b60006113b78383611efe565b600060208284031215611fdb57600080fd5b5051919050565b600060208284031215611ff457600080fd5b815173ffffffffffffffffffffffffffffffffffffffff811681146113b757600080fd5b604080825283519082018190526000906020906060840190828701845b8281101561206757815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101612035565b5050508381038285015284518082528583019183019060005b8181101561209c57835183529284019291840191600101612080565b5090979650505050505050565b600060208083850312156120bc57600080fd5b825167ffffffffffffffff808211156120d457600080fd5b818501915085601f8301126120e857600080fd5b8151818111156120fa576120fa611970565b8060051b915061210b848301611cb0565b818152918301840191848101908884111561212557600080fd5b938501935b838510156121435784518252938501939085019061212a565b98975050505050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561218757612187611e6e565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826121f1577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006113b760ff841683611efe56fea2646970667358221220c3d4ce9637aee421171f034f5cf984258068c4f8309753b2573887fb6536892b64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506040516200261b3803806200261b83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051612579620000a2600039600061031d0152600061035901526125796000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b610059610054366004611b83565b610244565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261050a60e0820181905261060161010083015261068d6101208301526107ae61014083015261016082015261085761018082015261095f6101a0820152610a336101c0820152610c306101e0820152610c3b610200820152610c46610220820152610c51610240820152610c5c610260820152610c90610280820152610cf66102a0820152610d5c6102c0820152610d906102e0820152610dc4610300820152610df9610320820152610e54610340820152610eaa610360820152610ed3610380820152610f2a6103a0820152610f576103c0820152610fae6103e08201526110196104008201526110766104208201526110b46104408201526110ed6104608201526111216104808201526111536104a08201526111856104c08201526111b76104e08201526111eb61050082015261123d6105208201526112766105408201526113286105608201526114556105808201526114b16105a082015261156b6105c0808301919091528152905161008f9190611bee565b6102846040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6102e56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816102a5579050509050818160008151811061030e5761030e611c6e565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161039893929190611e1c565b6000604051808303816000875af11580156103b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fd9190810190611fce565b905061040881610453565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b60008061047e8360405160200161046a9190612080565b6040516020818303038152906040526104de565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166104d8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016104f49291906120a6565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f1919061213d565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610681919061213d565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a0919061213d565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016105b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612156565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161075f565b60008060008467ffffffffffffffff811115610a5157610a51611c3f565b604051908082528060200260200182016040528015610a7a578160200160208202803683370190505b50905060008567ffffffffffffffff811115610a9857610a98611c3f565b604051908082528060200260200182016040528015610ac1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015610b16578251815260209283019201610afe565b5050602088028101602084015b81831015610b3b578251815260209283019201610b23565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490610b9590879087906004016121bc565b600060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610bf8919081019061221f565b9050846020820160208a0281015b80821015610c21578151835260209283019290910190610c06565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876115e7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610cf0858a6115e7565b90611668565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610d56858a6115e7565b9061168e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116ee565b6000602083028203805b83811015610dee5780518015610de5578252610dee565b50602001610dce565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610dee578051610ecb5760008252610dee565b602001610eb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015610fec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b57508051602090910190611004838261174c565b9250610fbe565b505081526020019392505050565b6020828102820380516000928201835b858210801561105757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b5750805160209091019061106f8382611788565b9250611029565b6020828102820380516000928201835b85821080156110955750826000105b1561100b575080516020909101906110ad83826117b7565b9250611086565b600060208302820380516000602083015b8581101561100b57805183019150828210156110e057600080fd5b90915081906020016110c5565b600060208302820380516000602083015b8581101561100b57805191508161111457600080fd5b91819004916020016110fe565b6020828102820380516000928201835b8582101561100b5750805160209091019061114c8184612414565b9250611131565b6020828102820380516000928201835b8582101561100b575080518281111561117a578092505b602082019150611163565b6020828102820380516000928201835b8582101561100b57508051828110156111ac578092505b602082019150611195565b600060208302820380516000602083015b8581101561100b5780519150816111de57600080fd5b91819006916020016111c8565b60006020830282038051600080602084015b8681101561122e57831561122657805192508284029150828483041461122257600080fd5b8193505b6020016111fd565b50505081526020019392505050565b600060208302820380516000602083015b8581101561100b578051830391508282111561126957600080fd5b909150819060200161124e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061075f9086908690600401612420565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906114019087908790879060040161244f565b602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061213d565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f183836117cd565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156114df576114df611c3f565b604051908082528060200260200182016040528015611508578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561154457815181602001860152602082019150602081019050611522565b505051905060006115578383898961182c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856115d88585858561197c565b90955250949695505050505050565b60008082601214156115fc57839150506105fb565b82601211156116285750601282900361161681600a612414565b611620908561248d565b9150506105fb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161165781600a612414565b61162090856124f9565b5092915050565b60008161167d670de0b6b3a76400008561248d565b61168791906124f9565b9392505050565b6000670de0b6b3a764000061167d838561248d565b600081810b6116b35750816105fb565b60008260000b13156116db576116ca82600a612534565b6116d4908461248d565b90506105fb565b60ff60008390031661165781600a612414565b600080601283141561170357839150506105fb565b826012111561171d5750601282900361165781600a612414565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161161681600a612414565b600082820183811061175e5780611780565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082611797575060006105fb565b828202828482816117aa576117aa6124ca565b04141561175e5780611780565b60008183116117c7576000611687565b50900390565b60008060015b600881116118245760006117e78683611a27565b905060006117f58684611a27565b9050600061180383836117b7565b9050611813856001860383611ad4565b945050600190920191506117d39050565b509392505050565b835160009081908190819060015b6008811161196e5760009250828761187357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611877565b5060005b60005b8381101561192c576118a58c828151811061189757611897611c6e565b602002602001015184611a27565b95508a86116118f757886118c4576118bd8683611b5d565b91506118ee565b60018914156118d7576118bd8683611b73565b6002891480156118e5575084155b156118ee578591505b60019450611924565b89611924577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061192c565b60010161187a565b508361195557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b611963866001840383611ad4565b95505060010161183a565b509298975050505050505050565b60008260088111156119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b85811015611a1b5763ffffffff6020820290811b199890981685891b179791506001016119f3565b50959695505050505050565b6000816008811115611a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b82611aa35760009150611661565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b505063ffffffff602090920291821b199290921691901b1790565b6000818310611b6c5781611687565b5090919050565b600081831015611b6c5781611687565b600060208284031215611b9557600080fd5b813567ffffffffffffffff811115611bac57600080fd5b82016040818503121561168757600080fd5b60005b83811015611bd9578181015183820152602001611bc1565b83811115611be8576000848401525b50505050565b6020815260008251806020840152611c0d816040850160208701611bbe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611cd257600080fd5b830160208101925035905067ffffffffffffffff811115611cf257600080fd5b8060051b3603831315611d0457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d8657600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015611e1157815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101611db7565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301611e4d8687611c9d565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015611f17577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611ece57600080fd5b8501803567ffffffffffffffff811115611ee757600080fd5b803603871315611ef657600080fd5b611f0388828b8501611d0b565b975050509186019190860190600101611e6d565b5050505050611f2882870187611c9d565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152611f5f828483611d54565b925050508281036040840152611f758185611da3565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fc657611fc6611c3f565b604052919050565b600060208284031215611fe057600080fd5b815167ffffffffffffffff80821115611ff857600080fd5b818401915084601f83011261200c57600080fd5b81518181111561201e5761201e611c3f565b61204f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f7f565b915080825285602082850101111561206657600080fd5b612077816020840160208601611bbe565b50949350505050565b6000815260008251612099816001850160208701611bbe565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161212f81600e850160208701611bbe565b91909101600e019392505050565b60006020828403121561214f57600080fd5b5051919050565b60006020828403121561216857600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461168757600080fd5b600081518084526020808501945080840160005b83811015611e11578151875295820195908201906001016121a0565b604080825283519082018190526000906020906060840190828701845b8281101561220b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016121d9565b50505083810382850152611f75818661218c565b6000602080838503121561223257600080fd5b825167ffffffffffffffff8082111561224a57600080fd5b818501915085601f83011261225e57600080fd5b81518181111561227057612270611c3f565b8060051b9150612281848301611f7f565b818152918301840191848101908884111561229b57600080fd5b938501935b838510156122b9578451825293850193908501906122a0565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561234d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612333576123336122c5565b8085161561234057918102915b93841c93908002906122f9565b509250929050565b600082612364575060016105fb565b81612371575060006105fb565b81600181146123875760028114612391576123ad565b60019150506105fb565b60ff8411156123a2576123a26122c5565b50506001821b6105fb565b5060208310610133831016604e8410600b84101617156123d0575081810a6105fb565b6123da83836122f4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561240c5761240c6122c5565b029392505050565b60006116878383612355565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611780604083018461218c565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612484606083018461218c565b95945050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124c5576124c56122c5565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261252f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061168760ff84168361235556fea2646970667358221220a948755c13a11baa0357022f600b8b3c36d5bfb0ecd2be250b60286a78b6fe5764736f6c634300080a0033"; type StackHeightTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StakeFactory__factory.ts b/src/typechain/factories/StakeFactory__factory.ts index 586d343..83ed63d 100644 --- a/src/typechain/factories/StakeFactory__factory.ts +++ b/src/typechain/factories/StakeFactory__factory.ts @@ -144,7 +144,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61296e80610b3383390190565b608051610a6f6100c46000396000818160a6015261037a0152610a6f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906107ce565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906107e1565b92915050565b60008061037183850185610901565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103f39085906004016109af565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526106ff6040840184610606565b6080606085015261071460a085018284610671565b9150506107246060850185610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403016080860152610759838284610671565b9695505050505050565b6000815180845260005b818110156107895760208185018101518683018201520161076d565b8181111561079b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610763565b6000602082840312156107f357600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610850576108506107fe565b60405290565b600082601f83011261086757600080fd5b813567ffffffffffffffff80821115610882576108826107fe565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108c8576108c86107fe565b816040528381528660208588010111156108e157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091357600080fd5b813567ffffffffffffffff8082111561092b57600080fd5b908301906080828603121561093f57600080fd5b61094761082d565b8235610952816105c4565b81526020838101359082015260408301358281111561097057600080fd5b61097c87828601610856565b60408301525060608301358281111561099457600080fd5b6109a087828601610856565b60608301525095945050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526109f560a0840182610763565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152610a308282610763565b9594505050505056fea26469706673582212207092a4f1b2ea17ab2324e1ee3cc2e8854fa1e5d4a235a5cd1ca4e9b3e1bf44e364736f6c634300080a0033608060405234801561001057600080fd5b506001606555612949806100256000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146101fb578063cced57cb1461020e578063dd62ed3e14610221578063fad876c31461026757600080fd5b806370a082311461019757806395d89b41146101cd578063a457c2d7146101d5578063a9059cbb146101e857600080fd5b806323b872dd116100d357806323b872dd1461014d5780632e1a7d4d14610160578063313ce56714610175578063395093511461018457600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261027a565b60405161010f9190612222565b60405180910390f35b61012b610126366004612297565b61030c565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b3660046122c1565b610324565b61017361016e3660046122fd565b61034a565b005b6040516012815260200161010f565b61012b610192366004612297565b610781565b61013f6101a5366004612316565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026107cd565b61012b6101e3366004612297565b6107dc565b61012b6101f6366004612297565b6108b8565b6101736102093660046122fd565b6108c6565b61013f61021c366004612331565b610c29565b61013f61022f3660046123b4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101736102753660046123e7565b610dd8565b60606036805461028990612422565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590612422565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60003361031a81858561109b565b5060019392505050565b60003361033285828561124f565b61033d858585611326565b60019150505b9392505050565b600260655414156103bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b33600090815260686020526040812054610444906001906124a5565b336000908152606860205260408120805492935090918390811061046a5761046a6124bc565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506104a784836124a5565b90505b3360009081526068602052604090208054829190859081106104ce576104ce6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561056657336000908152606860205260409020805484908110610527576105276124bc565b60009182526020822001558261053c57610566565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201916104aa565b336000908152606860205260408120546105815760006105e1565b336000908152606860205260409020805461059e906001906124a5565b815481106105ae576105ae6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156106915733600090815260686020908152604091829020825180840190935263ffffffff431683529190810161063a856115d9565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061069c60355490565b90506106a8338761168b565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610774913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906124eb565b61074a908a612504565b6107549190612541565b60665473ffffffffffffffffffffffffffffffffffffffff169190611875565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061031a90829086906107c890879061257c565b61109b565b60606037805461028990612422565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103b3565b6108ad828686840361109b565b506001949350505050565b60003361031a818585611326565b60026065541415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103b3565b60026065558061099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906124eb565b90506000610a3f60355490565b606654909150610a679073ffffffffffffffffffffffffffffffffffffffff16333086611949565b600081610a8357606754610a7c9085906119a7565b9050610a9b565b82610a8e8584612504565b610a989190612541565b90505b60008111610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016103b3565b610b0f33826119c6565b33600090815260686020526040812054610b2a576000610b8a565b3360009081526068602052604090208054610b47906001906124a5565b81548110610b5757610b576124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff431683529293508101610bbc886115d9565b610bc69085612594565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b600080610c3883850185612603565b80519091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9015610dcf57604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902054811015610dcb5773ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805482908110610ce257610ce26124bc565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b845183108015610d7e5750848381518110610d5057610d506124bc565b602002602001015182602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610dab57610d988484846000015163ffffffff16611ae6565b5082610da3816126df565b935050610d33565b8451831415610db957610dcb565b80610dc3816126df565b915050610c7e565b5050505b95945050505050565b6000610de46001611b70565b90508015610e1957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610e286020840184612316565b73ffffffffffffffffffffffffffffffffffffffff161415610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016103b3565b6000826020013511610f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016103b3565b610fa0610f246040840184612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f66925050506060850185612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cfb92505050565b610fad6020830183612316565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061102c9033908590612831565b60405180910390a1801561109757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff82166111e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113205781811015611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103b3565b611320848484840361109b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166113c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061156690849061257c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115cc91815260200190565b60405180910390a3611320565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016103b3565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906118209084906124a5565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611242565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118709084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d9c565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526113209085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118c7565b6000670de0b6b3a76400006119bc8385612504565b6103439190612541565b73ffffffffffffffffffffffffffffffffffffffff8216611a43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b3565b8060356000828254611a55919061257c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611a8f90849061257c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000826008811115611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103b3565b505060209190910290811b63ffffffff90911b19919091161790565b60008054610100900460ff1615611c27578160ff166001148015611b935750303b155b611c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b506000919050565b60005460ff808416911610611cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b6110978282611ea8565b6000611dfe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f669092919063ffffffff16565b8051909150156118705780806020019051810190611e1c91906128d5565b611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103b3565b600054610100900460ff16611f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b8151611f52906036906020850190612166565b508051611870906037906020840190612166565b6060611f758484600085611f7d565b949350505050565b60608247101561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff85163b61208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120b691906128f7565b60006040518083038185875af1925050503d80600081146120f3576040519150601f19603f3d011682016040523d82523d6000602084013e6120f8565b606091505b5091509150612108828286612113565b979650505050505050565b60608315612122575081610343565b8251156121325782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b39190612222565b82805461217290612422565b90600052602060002090601f01602090048101928261219457600085556121da565b82601f106121ad57805160ff19168380011785556121da565b828001600101855582156121da579182015b828111156121da5782518255916020019190600101906121bf565b506116879291505b8082111561168757600081556001016121e2565b60005b838110156122115781810151838201526020016121f9565b838111156113205750506000910152565b60208152600082518060208401526122418160408501602087016121f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611cf657600080fd5b600080604083850312156122aa57600080fd5b6122b383612273565b946020939093013593505050565b6000806000606084860312156122d657600080fd5b6122df84612273565b92506122ed60208501612273565b9150604084013590509250925092565b60006020828403121561230f57600080fd5b5035919050565b60006020828403121561232857600080fd5b61034382612273565b60008060006040848603121561234657600080fd5b61234f84612273565b9250602084013567ffffffffffffffff8082111561236c57600080fd5b818601915086601f83011261238057600080fd5b81358181111561238f57600080fd5b8760208285010111156123a157600080fd5b6020830194508093505050509250925092565b600080604083850312156123c757600080fd5b6123d083612273565b91506123de60208401612273565b90509250929050565b6000602082840312156123f957600080fd5b813567ffffffffffffffff81111561241057600080fd5b82016080818503121561034357600080fd5b600181811c9082168061243657607f821691505b60208210811415612470577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156124b7576124b7612476565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124fd57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253c5761253c612476565b500290565b600082612577577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561258f5761258f612476565b500190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168185168083038211156125cb576125cb612476565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602080838503121561261657600080fd5b823567ffffffffffffffff8082111561262e57600080fd5b818501915085601f83011261264257600080fd5b813581811115612654576126546125d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612697576126976125d4565b6040529182528482019250838101850191888311156126b557600080fd5b938501935b828510156126d3578435845293850193928501926126ba565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561271157612711612476565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261274d57600080fd5b83018035915067ffffffffffffffff82111561276857600080fd5b60200191503681900382131561277d57600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127b957600080fd5b830160208101925035905067ffffffffffffffff8111156127d957600080fd5b80360383131561277d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061285e85612273565b166040840152506020830135606083015261287c6040840184612784565b60808085015261289060c0850182846127e8565b9150506128a06060850185612784565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121088382846127e8565b6000602082840312156128e757600080fd5b8151801515811461034357600080fd5b600082516129098184602087016121f6565b919091019291505056fea264697066735822122057699be3479436f26a7b5ebb0b980ab128753a4889b83e467cb1fb25e712312864736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612a9180610b3383390190565b608051610a6f6100c46000396000818160a6015261037a0152610a6f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906107ce565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906107e1565b92915050565b60008061037183850185610901565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103f39085906004016109af565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526106ff6040840184610606565b6080606085015261071460a085018284610671565b9150506107246060850185610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403016080860152610759838284610671565b9695505050505050565b6000815180845260005b818110156107895760208185018101518683018201520161076d565b8181111561079b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610763565b6000602082840312156107f357600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610850576108506107fe565b60405290565b600082601f83011261086757600080fd5b813567ffffffffffffffff80821115610882576108826107fe565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108c8576108c86107fe565b816040528381528660208588010111156108e157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091357600080fd5b813567ffffffffffffffff8082111561092b57600080fd5b908301906080828603121561093f57600080fd5b61094761082d565b8235610952816105c4565b81526020838101359082015260408301358281111561097057600080fd5b61097c87828601610856565b60408301525060608301358281111561099457600080fd5b6109a087828601610856565b60608301525095945050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526109f560a0840182610763565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152610a308282610763565b9594505050505056fea2646970667358221220944d4ecf3631be609085936463812e5cf31bd3d61498b29d497fe72a6b58990764736f6c634300080a0033608060405234801561001057600080fd5b506001606555612a6c806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e366004612373565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f91906123e1565b61013361016b366004612456565b6103ed565b6035545b60405190815260200161013f565b610133610190366004612480565b610405565b6101a86101a33660046124bc565b61042b565b005b6040516012815260200161013f565b6101336101c7366004612456565b610862565b6101746101da3660046124d5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61017461021036600461253c565b6108ae565b610150610a44565b61013361022b366004612456565b610a53565b61013361023e366004612456565b610b2f565b6101a86102513660046124bc565b610b3d565b61017461026436600461258f565b610ea0565b6101746102773660046125e9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd36600461261c565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a90612657565b80601f016020809104026020016040519081016040528092919081815260200182805461039690612657565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb8185856112b7565b5060019392505050565b60003361041385828561146b565b61041e858585611542565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b33600090815260686020526040812054610525906001906126da565b336000908152606860205260408120805492935090918390811061054b5761054b6126f1565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061058884836126da565b90505b3360009081526068602052604090208054829190859081106105af576105af6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561064757336000908152606860205260409020805484908110610608576106086126f1565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f906001906126da565b8154811061068f5761068f6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856117f5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b905061078933876118a7565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190612720565b61082b908a612739565b6108359190612776565b60665473ffffffffffffffffffffffffffffffffffffffff169190611a91565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a99087906127b1565b6112b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff87166000908152606860205260409020805482908110610953576109536126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c06126f1565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611b65565b935082610a13816127c9565b9350506109a4565b82851415610a2857610a3a565b80610a32816127c9565b9150506108ef565b5050509392505050565b60606037805461036a90612657565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b2482868684036112b7565b506001949350505050565b6000336103fb818585611542565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190612720565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611bee565b600081610cfa57606754610cf3908590611c4c565b9050610d12565b82610d058584612739565b610d0f9190612776565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611c6b565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe906001906126da565b81548110610dce57610dce6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886117f5565b610e3d9085612802565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec16126f1565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f726126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe0816127c9565b915050610f0e565b5050505b949350505050565b60006110006001611d8b565b9050801561103557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600061104460208401846124d5565b73ffffffffffffffffffffffffffffffffffffffff1614156110c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b6111bc6111406040840184612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611182925050506060850185612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f1692505050565b6111c960208301836124d5565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906112489033908590612954565b60405180910390a180156112b357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166113fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461153c578181101561152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61153c84848484036112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8216611688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906117829084906127b1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117e891815260200190565b60405180910390a361153c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611a3c9084906126da565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161145e565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611a8c9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611fb7565b6000826008811115611bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261153c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ae3565b6000670de0b6b3a7640000611c618385612739565b6104249190612776565b73ffffffffffffffffffffffffffffffffffffffff8216611ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611cfa91906127b1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611d349084906127b1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008054610100900460ff1615611e42578160ff166001148015611dae5750303b155b611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b506000919050565b60005460ff808416911610611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b6112b382826120c3565b6000612019826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121819092919063ffffffff16565b805190915015611a8c578080602001905181019061203791906129f8565b611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff1661215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b815161216d9060369060208501906122e3565b508051611a8c9060379060208401906122e3565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122339190612a1a565b60006040518083038185875af1925050503d8060008114612270576040519150601f19603f3d011682016040523d82523d6000602084013e612275565b606091505b5091509150612285828286612290565b979650505050505050565b6060831561229f575081610424565b8251156122af5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049491906123e1565b8280546122ef90612657565b90600052602060002090601f0160209004810192826123115760008555612357565b82601f1061232a57805160ff1916838001178555612357565b82800160010185558215612357579182015b8281111561235757825182559160200191906001019061233c565b506118a39291505b808211156118a3576000815560010161235f565b60006020828403121561238557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b838110156123d05781810151838201526020016123b8565b8381111561153c5750506000910152565b60208152600082518060208401526124008160408501602087016123b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611f1157600080fd5b6000806040838503121561246957600080fd5b61247283612432565b946020939093013593505050565b60008060006060848603121561249557600080fd5b61249e84612432565b92506124ac60208501612432565b9150604084013590509250925092565b6000602082840312156124ce57600080fd5b5035919050565b6000602082840312156124e757600080fd5b61042482612432565b60008083601f84011261250257600080fd5b50813567ffffffffffffffff81111561251a57600080fd5b6020830191508360208260051b850101111561253557600080fd5b9250929050565b60008060006040848603121561255157600080fd5b61255a84612432565b9250602084013567ffffffffffffffff81111561257657600080fd5b612582868287016124f0565b9497909650939450505050565b600080600080606085870312156125a557600080fd5b6125ae85612432565b935060208501359250604085013567ffffffffffffffff8111156125d157600080fd5b6125dd878288016124f0565b95989497509550505050565b600080604083850312156125fc57600080fd5b61260583612432565b915061261360208401612432565b90509250929050565b60006020828403121561262e57600080fd5b813567ffffffffffffffff81111561264557600080fd5b82016080818503121561042457600080fd5b600181811c9082168061266b57607f821691505b602082108114156126a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126ec576126ec6126ab565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561273257600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612771576127716126ab565b500290565b6000826127ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156127c4576127c46126ab565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127fb576127fb6126ab565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818516808303821115612839576128396126ab565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261287757600080fd5b83018035915067ffffffffffffffff82111561289257600080fd5b60200191503681900382131561253557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128dc57600080fd5b830160208101925035905067ffffffffffffffff8111156128fc57600080fd5b80360383131561253557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061298185612432565b166040840152506020830135606083015261299f60408401846128a7565b6080808501526129b360c08501828461290b565b9150506129c360608501856128a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a086015261228583828461290b565b600060208284031215612a0a57600080fd5b8151801515811461042457600080fd5b60008251612a2c8184602087016123b5565b919091019291505056fea2646970667358221220bfb5394bbf762ac29113e49e62ffcecdbbded41c8c210c77ea7aa52c125636f764736f6c634300080a0033"; type StakeFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Stake__factory.ts b/src/typechain/factories/Stake__factory.ts index 0835b6f..989f829 100644 --- a/src/typechain/factories/Stake__factory.ts +++ b/src/typechain/factories/Stake__factory.ts @@ -307,18 +307,66 @@ const _abi = [ type: "address", }, { - internalType: "bytes", - name: "data_", - type: "bytes", + internalType: "uint256[]", + name: "context_", + type: "uint256[]", }, ], name: "report", outputs: [ { internalType: "uint256", - name: "", + name: "report_", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account_", + type: "address", + }, + { + internalType: "uint256", + name: "tier_", type: "uint256", }, + { + internalType: "uint256[]", + name: "context_", + type: "uint256[]", + }, + ], + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "time_", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, ], stateMutability: "view", type: "function", @@ -418,7 +466,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506001606555612949806100256000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a0823111610097578063b6b55f2511610066578063b6b55f25146101fb578063cced57cb1461020e578063dd62ed3e14610221578063fad876c31461026757600080fd5b806370a082311461019757806395d89b41146101cd578063a457c2d7146101d5578063a9059cbb146101e857600080fd5b806323b872dd116100d357806323b872dd1461014d5780632e1a7d4d14610160578063313ce56714610175578063395093511461018457600080fd5b806306fdde03146100fa578063095ea7b31461011857806318160ddd1461013b575b600080fd5b61010261027a565b60405161010f9190612222565b60405180910390f35b61012b610126366004612297565b61030c565b604051901515815260200161010f565b6035545b60405190815260200161010f565b61012b61015b3660046122c1565b610324565b61017361016e3660046122fd565b61034a565b005b6040516012815260200161010f565b61012b610192366004612297565b610781565b61013f6101a5366004612316565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026107cd565b61012b6101e3366004612297565b6107dc565b61012b6101f6366004612297565b6108b8565b6101736102093660046122fd565b6108c6565b61013f61021c366004612331565b610c29565b61013f61022f3660046123b4565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101736102753660046123e7565b610dd8565b60606036805461028990612422565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590612422565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b60003361031a81858561109b565b5060019392505050565b60003361033285828561124f565b61033d858585611326565b60019150505b9392505050565b600260655414156103bc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b33600090815260686020526040812054610444906001906124a5565b336000908152606860205260408120805492935090918390811061046a5761046a6124bc565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506104a784836124a5565b90505b3360009081526068602052604090208054829190859081106104ce576104ce6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561056657336000908152606860205260409020805484908110610527576105276124bc565b60009182526020822001558261053c57610566565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201916104aa565b336000908152606860205260408120546105815760006105e1565b336000908152606860205260409020805461059e906001906124a5565b815481106105ae576105ae6124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156106915733600090815260686020908152604091829020825180840190935263ffffffff431683529190810161063a856115d9565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061069c60355490565b90506106a8338761168b565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610774913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa15801561071c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061074091906124eb565b61074a908a612504565b6107549190612541565b60665473ffffffffffffffffffffffffffffffffffffffff169190611875565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061031a90829086906107c890879061257c565b61109b565b60606037805461028990612422565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156108a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016103b3565b6108ad828686840361109b565b506001949350505050565b60003361031a818585611326565b60026065541415610933576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016103b3565b60026065558061099f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016103b3565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610a0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3291906124eb565b90506000610a3f60355490565b606654909150610a679073ffffffffffffffffffffffffffffffffffffffff16333086611949565b600081610a8357606754610a7c9085906119a7565b9050610a9b565b82610a8e8584612504565b610a989190612541565b90505b60008111610b05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016103b3565b610b0f33826119c6565b33600090815260686020526040812054610b2a576000610b8a565b3360009081526068602052604090208054610b47906001906124a5565b81548110610b5757610b576124bc565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff431683529293508101610bbc886115d9565b610bc69085612594565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b600080610c3883850185612603565b80519091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9015610dcf57604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902054811015610dcb5773ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805482908110610ce257610ce26124bc565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b845183108015610d7e5750848381518110610d5057610d506124bc565b602002602001015182602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610dab57610d988484846000015163ffffffff16611ae6565b5082610da3816126df565b935050610d33565b8451831415610db957610dcb565b80610dc3816126df565b915050610c7e565b5050505b95945050505050565b6000610de46001611b70565b90508015610e1957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610e286020840184612316565b73ffffffffffffffffffffffffffffffffffffffff161415610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016103b3565b6000826020013511610f14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016103b3565b610fa0610f246040840184612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610f66925050506060850185612718565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611cfb92505050565b610fad6020830183612316565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061102c9033908590612831565b60405180910390a1801561109757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661113d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff82166111e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146113205781811015611313576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103b3565b611320848484840361109b565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166113c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff821661146c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611522576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061156690849061257c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115cc91815260200190565b60405180910390a3611320565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016103b3565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661172e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040902054818110156117e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604081208383039055603580548492906118209084906124a5565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611242565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526118709084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611d9c565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526113209085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016118c7565b6000670de0b6b3a76400006119bc8385612504565b6103439190612541565b73ffffffffffffffffffffffffffffffffffffffff8216611a43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b3565b8060356000828254611a55919061257c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611a8f90849061257c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000826008811115611b54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103b3565b505060209190910290811b63ffffffff90911b19919091161790565b60008054610100900460ff1615611c27578160ff166001148015611b935750303b155b611c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b506000919050565b60005460ff808416911610611cbe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103b3565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611d92576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b6110978282611ea8565b6000611dfe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611f669092919063ffffffff16565b8051909150156118705780806020019051810190611e1c91906128d5565b611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016103b3565b600054610100900460ff16611f3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016103b3565b8151611f52906036906020850190612166565b508051611870906037906020840190612166565b6060611f758484600085611f7d565b949350505050565b60608247101561200f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016103b3565b73ffffffffffffffffffffffffffffffffffffffff85163b61208d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516120b691906128f7565b60006040518083038185875af1925050503d80600081146120f3576040519150601f19603f3d011682016040523d82523d6000602084013e6120f8565b606091505b5091509150612108828286612113565b979650505050505050565b60608315612122575081610343565b8251156121325782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103b39190612222565b82805461217290612422565b90600052602060002090601f01602090048101928261219457600085556121da565b82601f106121ad57805160ff19168380011785556121da565b828001600101855582156121da579182015b828111156121da5782518255916020019190600101906121bf565b506116879291505b8082111561168757600081556001016121e2565b60005b838110156122115781810151838201526020016121f9565b838111156113205750506000910152565b60208152600082518060208401526122418160408501602087016121f6565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611cf657600080fd5b600080604083850312156122aa57600080fd5b6122b383612273565b946020939093013593505050565b6000806000606084860312156122d657600080fd5b6122df84612273565b92506122ed60208501612273565b9150604084013590509250925092565b60006020828403121561230f57600080fd5b5035919050565b60006020828403121561232857600080fd5b61034382612273565b60008060006040848603121561234657600080fd5b61234f84612273565b9250602084013567ffffffffffffffff8082111561236c57600080fd5b818601915086601f83011261238057600080fd5b81358181111561238f57600080fd5b8760208285010111156123a157600080fd5b6020830194508093505050509250925092565b600080604083850312156123c757600080fd5b6123d083612273565b91506123de60208401612273565b90509250929050565b6000602082840312156123f957600080fd5b813567ffffffffffffffff81111561241057600080fd5b82016080818503121561034357600080fd5b600181811c9082168061243657607f821691505b60208210811415612470577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156124b7576124b7612476565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156124fd57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561253c5761253c612476565b500290565b600082612577577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561258f5761258f612476565b500190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8083168185168083038211156125cb576125cb612476565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602080838503121561261657600080fd5b823567ffffffffffffffff8082111561262e57600080fd5b818501915085601f83011261264257600080fd5b813581811115612654576126546125d4565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715612697576126976125d4565b6040529182528482019250838101850191888311156126b557600080fd5b938501935b828510156126d3578435845293850193928501926126ba565b98975050505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561271157612711612476565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261274d57600080fd5b83018035915067ffffffffffffffff82111561276857600080fd5b60200191503681900382131561277d57600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127b957600080fd5b830160208101925035905067ffffffffffffffff8111156127d957600080fd5b80360383131561277d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061285e85612273565b166040840152506020830135606083015261287c6040840184612784565b60808085015261289060c0850182846127e8565b9150506128a06060850185612784565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121088382846127e8565b6000602082840312156128e757600080fd5b8151801515811461034357600080fd5b600082516129098184602087016121f6565b919091019291505056fea264697066735822122057699be3479436f26a7b5ebb0b980ab128753a4889b83e467cb1fb25e712312864736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506001606555612a6c806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e366004612373565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f91906123e1565b61013361016b366004612456565b6103ed565b6035545b60405190815260200161013f565b610133610190366004612480565b610405565b6101a86101a33660046124bc565b61042b565b005b6040516012815260200161013f565b6101336101c7366004612456565b610862565b6101746101da3660046124d5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61017461021036600461253c565b6108ae565b610150610a44565b61013361022b366004612456565b610a53565b61013361023e366004612456565b610b2f565b6101a86102513660046124bc565b610b3d565b61017461026436600461258f565b610ea0565b6101746102773660046125e9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd36600461261c565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a90612657565b80601f016020809104026020016040519081016040528092919081815260200182805461039690612657565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb8185856112b7565b5060019392505050565b60003361041385828561146b565b61041e858585611542565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b33600090815260686020526040812054610525906001906126da565b336000908152606860205260408120805492935090918390811061054b5761054b6126f1565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061058884836126da565b90505b3360009081526068602052604090208054829190859081106105af576105af6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561064757336000908152606860205260409020805484908110610608576106086126f1565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f906001906126da565b8154811061068f5761068f6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856117f5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b905061078933876118a7565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190612720565b61082b908a612739565b6108359190612776565b60665473ffffffffffffffffffffffffffffffffffffffff169190611a91565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a99087906127b1565b6112b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff87166000908152606860205260409020805482908110610953576109536126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c06126f1565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611b65565b935082610a13816127c9565b9350506109a4565b82851415610a2857610a3a565b80610a32816127c9565b9150506108ef565b5050509392505050565b60606037805461036a90612657565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b2482868684036112b7565b506001949350505050565b6000336103fb818585611542565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190612720565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611bee565b600081610cfa57606754610cf3908590611c4c565b9050610d12565b82610d058584612739565b610d0f9190612776565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611c6b565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe906001906126da565b81548110610dce57610dce6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886117f5565b610e3d9085612802565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec16126f1565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f726126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe0816127c9565b915050610f0e565b5050505b949350505050565b60006110006001611d8b565b9050801561103557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600061104460208401846124d5565b73ffffffffffffffffffffffffffffffffffffffff1614156110c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b6111bc6111406040840184612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611182925050506060850185612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f1692505050565b6111c960208301836124d5565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906112489033908590612954565b60405180910390a180156112b357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166113fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461153c578181101561152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61153c84848484036112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8216611688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906117829084906127b1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117e891815260200190565b60405180910390a361153c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611a3c9084906126da565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161145e565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611a8c9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611fb7565b6000826008811115611bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261153c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ae3565b6000670de0b6b3a7640000611c618385612739565b6104249190612776565b73ffffffffffffffffffffffffffffffffffffffff8216611ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611cfa91906127b1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611d349084906127b1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008054610100900460ff1615611e42578160ff166001148015611dae5750303b155b611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b506000919050565b60005460ff808416911610611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b6112b382826120c3565b6000612019826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121819092919063ffffffff16565b805190915015611a8c578080602001905181019061203791906129f8565b611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff1661215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b815161216d9060369060208501906122e3565b508051611a8c9060379060208401906122e3565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122339190612a1a565b60006040518083038185875af1925050503d8060008114612270576040519150601f19603f3d011682016040523d82523d6000602084013e612275565b606091505b5091509150612285828286612290565b979650505050505050565b6060831561229f575081610424565b8251156122af5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049491906123e1565b8280546122ef90612657565b90600052602060002090601f0160209004810192826123115760008555612357565b82601f1061232a57805160ff1916838001178555612357565b82800160010185558215612357579182015b8281111561235757825182559160200191906001019061233c565b506118a39291505b808211156118a3576000815560010161235f565b60006020828403121561238557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b838110156123d05781810151838201526020016123b8565b8381111561153c5750506000910152565b60208152600082518060208401526124008160408501602087016123b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611f1157600080fd5b6000806040838503121561246957600080fd5b61247283612432565b946020939093013593505050565b60008060006060848603121561249557600080fd5b61249e84612432565b92506124ac60208501612432565b9150604084013590509250925092565b6000602082840312156124ce57600080fd5b5035919050565b6000602082840312156124e757600080fd5b61042482612432565b60008083601f84011261250257600080fd5b50813567ffffffffffffffff81111561251a57600080fd5b6020830191508360208260051b850101111561253557600080fd5b9250929050565b60008060006040848603121561255157600080fd5b61255a84612432565b9250602084013567ffffffffffffffff81111561257657600080fd5b612582868287016124f0565b9497909650939450505050565b600080600080606085870312156125a557600080fd5b6125ae85612432565b935060208501359250604085013567ffffffffffffffff8111156125d157600080fd5b6125dd878288016124f0565b95989497509550505050565b600080604083850312156125fc57600080fd5b61260583612432565b915061261360208401612432565b90509250929050565b60006020828403121561262e57600080fd5b813567ffffffffffffffff81111561264557600080fd5b82016080818503121561042457600080fd5b600181811c9082168061266b57607f821691505b602082108114156126a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126ec576126ec6126ab565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561273257600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612771576127716126ab565b500290565b6000826127ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156127c4576127c46126ab565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127fb576127fb6126ab565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818516808303821115612839576128396126ab565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261287757600080fd5b83018035915067ffffffffffffffff82111561289257600080fd5b60200191503681900382131561253557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128dc57600080fd5b830160208101925035905067ffffffffffffffff8111156128fc57600080fd5b80360383131561253557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061298185612432565b166040840152506020830135606083015261299f60408401846128a7565b6080808501526129b360c08501828461290b565b9150506129c360608501856128a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a086015261228583828461290b565b600060208284031215612a0a57600080fd5b8151801515811461042457600080fd5b60008251612a2c8184602087016123b5565b919091019291505056fea2646970667358221220bfb5394bbf762ac29113e49e62ffcecdbbded41c8c210c77ea7aa52c125636f764736f6c634300080a0033"; type StakeConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/TierReportTest__factory.ts b/src/typechain/factories/TierReportTest__factory.ts index 3ee9f4a..1b6508e 100644 --- a/src/typechain/factories/TierReportTest__factory.ts +++ b/src/typechain/factories/TierReportTest__factory.ts @@ -18,11 +18,11 @@ const _abi = [ }, { internalType: "uint256", - name: "blockNumber_", + name: "tier_", type: "uint256", }, ], - name: "tierAtBlockFromReport", + name: "reportTimeForTier", outputs: [ { internalType: "uint256", @@ -42,11 +42,11 @@ const _abi = [ }, { internalType: "uint256", - name: "tier_", + name: "timestamp_", type: "uint256", }, ], - name: "tierBlock", + name: "tierAtTimeFromReport", outputs: [ { internalType: "uint256", @@ -90,16 +90,21 @@ const _abi = [ }, { internalType: "uint256", - name: "tier_", + name: "startTier_", + type: "uint256", + }, + { + internalType: "uint256", + name: "endTier_", type: "uint256", }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "updateBlockAtTier", + name: "updateReportWithTierAtTime", outputs: [ { internalType: "uint256", @@ -119,21 +124,16 @@ const _abi = [ }, { internalType: "uint256", - name: "startTier_", - type: "uint256", - }, - { - internalType: "uint256", - name: "endTier_", + name: "tier_", type: "uint256", }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "updateBlocksForTierRange", + name: "updateTimeAtTier", outputs: [ { internalType: "uint256", @@ -163,11 +163,11 @@ const _abi = [ }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "updateReportWithTierAtBlock", + name: "updateTimesForTierRange", outputs: [ { internalType: "uint256", @@ -181,7 +181,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506104fc806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063963070081161005057806396307008146100c2578063c7a0977d146100d5578063f4fa0fc9146100e857600080fd5b80636ed9558d14610077578063787752041461009c5780637ba1c78e146100af575b600080fd5b61008a610085366004610446565b6100fb565b60405190815260200160405180910390f35b61008a6100aa366004610446565b610110565b61008a6100bd366004610468565b61011c565b61008a6100d036600461049a565b610133565b61008a6100e3366004610468565b610148565b61008a6100f6366004610446565b610156565b60006101078383610162565b90505b92915050565b6000610107838361019c565b600061012a85858585610245565b95945050505050565b6000610140848484610269565b949350505050565b600061012a858585856102f3565b60006101078383610399565b6000805b600881101561019257828160200285901c63ffffffff16111561018a57905061010a565b600101610166565b5060089392505050565b600081600881111561020f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b600083831061025f5761025a858585856102f3565b61012a565b61012a858461019c565b60008260088111156102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610206565b505060209190910290811b63ffffffff90911b19919091161790565b6000826008811115610361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610206565b6000855b8581101561038d5763ffffffff6020820290811b199890981685891b17979150600101610365565b50959695505050505050565b6000816008811115610407576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610206565b82610415576000915061023e565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000806040838503121561045957600080fd5b50508035926020909101359150565b6000806000806080858703121561047e57600080fd5b5050823594602084013594506040840135936060013592509050565b6000806000606084860312156104af57600080fd5b50508135936020830135935060409092013591905056fea26469706673582212207167d2329850c52ff217c687a6a8c1faefced60420504feac3712e101346225664736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506104ee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063787752041161005057806378775204146100c2578063c29df246146100d5578063f0ef511b146100e857600080fd5b806318cc4ccb146100775780633907cb421461009c578063696dd6c0146100af575b600080fd5b61008a610085366004610438565b6100fb565b60405190815260200160405180910390f35b61008a6100aa366004610464565b610110565b61008a6100bd366004610496565b610127565b61008a6100d0366004610496565b61013c565b61008a6100e3366004610464565b610148565b61008a6100f6366004610496565b610156565b6000610108848484610162565b949350505050565b600061011e858585856101f0565b95945050505050565b60006101338383610214565b90505b92915050565b60006101338383610241565b600061011e858585856102e5565b6000610133838361038b565b60008260088111156101d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b505063ffffffff602090920291821b199290921691901b1790565b600083831061020a57610205858585856102e5565b61011e565b61011e8584610241565b60005b600881101561013657818160200284901c63ffffffff16111561023957610136565b600101610217565b60008160088111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b6000855b8581101561037f5763ffffffff6020820290811b199890981685891b17979150600101610357565b50959695505050505050565b60008160088111156103f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b8261040757600091506102de565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008060006060848603121561044d57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561047a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156104a957600080fd5b5050803592602090910135915056fea2646970667358221220d1b29abc4efd97e1dc9510b634571b5ad146a1b9f7e8405e4e49e1afae641f7864736f6c634300080a0033"; type TierReportTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/TierV2Test__factory.ts b/src/typechain/factories/TierV2Test__factory.ts new file mode 100644 index 0000000..75f88c2 --- /dev/null +++ b/src/typechain/factories/TierV2Test__factory.ts @@ -0,0 +1,130 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { TierV2Test, TierV2TestInterface } from "../TierV2Test"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + name: "report", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506103b1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806388d686041461006e578063caa0eb3b146100b1575b600080fd5b610059610054366004610161565b6100c8565b60405190151581526020015b60405180910390f35b6100a361007c366004610202565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b604051908152602001610065565b6100a36100bf3660046102f1565b42949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561017357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101a357600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101ce57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561021557600080fd5b61021e836101aa565b915060208084013567ffffffffffffffff8082111561023c57600080fd5b818601915086601f83011261025057600080fd5b813581811115610262576102626101d3565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156102a5576102a56101d3565b6040529182528482019250838101850191898311156102c357600080fd5b938501935b828510156102e1578435845293850193928501926102c8565b8096505050505050509250929050565b6000806000806060858703121561030757600080fd5b610310856101aa565b935060208501359250604085013567ffffffffffffffff8082111561033457600080fd5b818701915087601f83011261034857600080fd5b81358181111561035757600080fd5b8860208260051b850101111561036c57600080fd5b9598949750506020019450505056fea2646970667358221220fd4264fc1eba0f1f56b48364c8be202265b81d30bcaac437f240ec8bf2fd862964736f6c634300080a0033"; + +type TierV2TestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: TierV2TestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class TierV2Test__factory extends ContractFactory { + constructor(...args: TierV2TestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): TierV2Test { + return super.attach(address) as TierV2Test; + } + connect(signer: Signer): TierV2Test__factory { + return super.connect(signer) as TierV2Test__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): TierV2TestInterface { + return new utils.Interface(_abi) as TierV2TestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): TierV2Test { + return new Contract(address, _abi, signerOrProvider) as TierV2Test; + } +} diff --git a/src/typechain/factories/ITier__factory.ts b/src/typechain/factories/TierV2__factory.ts similarity index 50% rename from src/typechain/factories/ITier__factory.ts rename to src/typechain/factories/TierV2__factory.ts index cfc9b99..f79699f 100644 --- a/src/typechain/factories/ITier__factory.ts +++ b/src/typechain/factories/TierV2__factory.ts @@ -4,45 +4,32 @@ import { Contract, Signer, utils } from "ethers"; import { Provider } from "@ethersproject/providers"; -import type { ITier, ITierInterface } from "../ITier"; +import type { TierV2, TierV2Interface } from "../TierV2"; const _abi = [ { - anonymous: false, inputs: [ { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, internalType: "address", name: "account", type: "address", }, { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", + internalType: "uint256[]", + name: "context", + type: "uint256[]", }, + ], + name: "report", + outputs: [ { - indexed: false, internalType: "uint256", - name: "endTier", + name: "report", type: "uint256", }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, ], - name: "TierChange", - type: "event", + stateMutability: "view", + type: "function", }, { inputs: [ @@ -51,12 +38,22 @@ const _abi = [ name: "account", type: "address", }, + { + internalType: "uint256", + name: "tier", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "context", + type: "uint256[]", + }, ], - name: "report", + name: "reportTimeForTier", outputs: [ { internalType: "uint256", - name: "", + name: "time", type: "uint256", }, ], @@ -66,34 +63,30 @@ const _abi = [ { inputs: [ { - internalType: "address", - name: "account", - type: "address", - }, - { - internalType: "uint256", - name: "endTier", - type: "uint256", + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", }, + ], + name: "supportsInterface", + outputs: [ { - internalType: "bytes", - name: "data", - type: "bytes", + internalType: "bool", + name: "", + type: "bool", }, ], - name: "setTier", - outputs: [], - stateMutability: "nonpayable", + stateMutability: "view", type: "function", }, ]; -export class ITier__factory { +export class TierV2__factory { static readonly abi = _abi; - static createInterface(): ITierInterface { - return new utils.Interface(_abi) as ITierInterface; + static createInterface(): TierV2Interface { + return new utils.Interface(_abi) as TierV2Interface; } - static connect(address: string, signerOrProvider: Signer | Provider): ITier { - return new Contract(address, _abi, signerOrProvider) as ITier; + static connect(address: string, signerOrProvider: Signer | Provider): TierV2 { + return new Contract(address, _abi, signerOrProvider) as TierV2; } } diff --git a/src/typechain/factories/VMStateBuilder__factory.ts b/src/typechain/factories/VMStateBuilder__factory.ts index 32cb4a0..283cc46 100644 --- a/src/typechain/factories/VMStateBuilder__factory.ts +++ b/src/typechain/factories/VMStateBuilder__factory.ts @@ -238,7 +238,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506200002a60605b6200005460201b620009141760201c565b6001600160a01b031660805262000042606062000019565b6001600160a01b031660a05262000197565b6000806200008e836040516020016200006e919062000135565b604051602081830303815290604052620000c960201b6200099f1760201c565b90508051602082016000f091506001600160a01b038216620000c35760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620000e192919062000151565b6040516020818303038152906040529050919050565b6000815160005b818110156200011a5760208185018101518683015201620000fe565b818111156200012a576000828601525b509290920192915050565b6000815260006200014a6001830184620000f7565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200018f600e830184620000f7565b949350505050565b60805160a051611720620001bd60003960006105600152600061053301526117206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009c5780639b0bc349146100b1578063a46c2a311461009557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611253565b6100c4565b60405161008c9190611371565b60405180910390f35b606061007f565b6100af6100aa3660046113c2565b6104bf565b005b61007f6100bf366004611412565b6107c3565b606060006100d1856109cb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561011f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101439190611476565b60200151905060008060005b86518110156102e7578387828151811061016b5761016b6114c5565b602002602001015160a0018181525050600285518161018c5761018c6114f4565b0487828151811061019f5761019f6114c5565b602002602001015160c00181815250506101d2888883815181106101c5576101c56114c5565b60200260200101516104bf565b6102028782815181106101e7576101e76114c5565b60200260200101516080015184610b0f90919063ffffffff16565b9250610234878281518110610219576102196114c5565b60200260200101516060015183610b0f90919063ffffffff16565b9150868181518110610248576102486114c5565b602002602001015160200151878281518110610266576102666114c5565b60200260200101516040015110156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161014f565b506000828860200151510167ffffffffffffffff81111561030a5761030a610f22565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b50905060005b886020015151811015610389578860200151818151811061035c5761035c6114c5565b6020026020010151828281518110610376576103766114c5565b6020908102919091010152600101610339565b5087515160009067ffffffffffffffff8111156103a8576103a8610f22565b6040519080825280602002602001820160405280156103db57816020015b60608152602001906001900390816103c65790505b50905060005b89515181101561043757610412878b600001518381518110610405576104056114c5565b60200260200101516107c3565b828281518110610424576104246114c5565b60209081029190910101526001016103e1565b506104af6040518060a00160405280600081526020018567ffffffffffffffff81111561046657610466610f22565b60405190808252806020026020018201604052801561048f578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250610b26565b96505050505050505b9392505050565b8051825151811061052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102d6565b60006105577f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060006105847f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060008080600080602088026020018a5101519050805193505b83851015610748576002850194508481015180601e1a935080601f1a925050600683101561066357826105f35789602001515189608001510182106105e357600080fd5b604089018051600101905261064a565b600183141561060c57886040015182106105e357600080fd5b600283141561062557604089018051600101905261064a565b600383141561064a578860a00151821061063e57600080fd5b60408901805160010190525b600483141561065e5761065e8a8a84610c91565b61072b565b8860c0015183106106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102d6565b6020838102888101820151908801909101516106ef8463ffffffff8416565b60408c018051919091039081905260608c015161070b91610b0f565b60608c015261071d8463ffffffff8316565b60408c018051909101905250505b604089015160608a015161073e91610b0f565b60608a015261059f565b606089015160ff10156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102d6565b50505050505050505050565b80516060906002810615610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102d6565b60006002600383020467ffffffffffffffff81111561085457610854610f22565b6040519080825280601f01601f19166020018201604052801561087e576020820181803683370190505b509050600660018381018160005b828210156109065781890151601f1a60028306156108e857858110156108ba57600182019181908801602101535b8581106108e857600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b600283066108f95780826020018801535b506001918201910161088c565b509398975050505050505050565b60008061093f8360405160200161092b9190611523565b60405160208183030381529060405261099f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610999576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109b5929190611549565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926109ff9116610c63565b9050805160001415610b0957610aac610aa78473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610aa291908101906115e0565b610d30565b610914565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104b8836109cb565b92915050565b600081831015610b1f57816104b8565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610b729190611657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bae929160200161168d565b604051602081830303815290604052905060005b856040015151811015610c5a578186604001518281518110610be657610be66114c5565b60200260200101515160001b87604001518381518110610c0857610c086114c5565b6020026020010151604051602001610c22939291906116b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610bc2565b50949350505050565b6060610b098260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610cdb9190610b0f565b60608401526080830151610cef9082610b0f565b60808401528251600783168085526001600385811c161b919060005b83811015610d2557610d1d88886104bf565b600101610d0b565b505090935250505050565b60606020825181610d4357610d436114f4565b0615610dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102d6565b60006010835181610dbe57610dbe6114f4565b0467ffffffffffffffff811115610dd757610dd7610f22565b6040519080825280601f01601f191660200182016040528015610e01576020820181803683370190505b509050600060025b8451821015610e31578083018051602084880181015190911790915290910190600201610e09565b50909392505050565b6060833b80610e595750506040805160208101909152600081526104b8565b80841115610e775750506040805160208101909152600081526104b8565b83831015610ec2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102d6565b8383038482036000828210610ed75782610ed9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f7457610f74610f22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fc157610fc1610f22565b604052919050565b600067ffffffffffffffff821115610fe357610fe3610f22565b5060051b60200190565b600067ffffffffffffffff82111561100757611007610f22565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261104457600080fd5b813561105761105282610fed565b610f7a565b81815284602083860101111561106c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261109a57600080fd5b813560206110aa61105283610fc9565b82815260059290921b840181019181810190868411156110c957600080fd5b8286015b848110156110e457803583529183019183016110cd565b509695505050505050565b60006040828403121561110157600080fd5b611109610f51565b9050813567ffffffffffffffff8082111561112357600080fd5b818401915084601f83011261113757600080fd5b8135602061114761105283610fc9565b82815260059290921b8401810191818101908884111561116657600080fd5b8286015b8481101561119e578035868111156111825760008081fd5b6111908b86838b0101611033565b84525091830191830161116a565b50865250858101359350828411156111b557600080fd5b6111c187858801611089565b818601525050505092915050565b600060e082840312156111e157600080fd5b60405160e0810181811067ffffffffffffffff8211171561120457611204610f22565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561126857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461128c57600080fd5b925060208481013567ffffffffffffffff808211156112aa57600080fd5b6112b6888389016110ef565b945060408701359150808211156112cc57600080fd5b508501601f810187136112de57600080fd5b80356112ec61105282610fc9565b81815260e0918202830184019184820191908a84111561130b57600080fd5b938501935b83851015611331576113228b866111cf565b83529384019391850191611310565b5080955050505050509250925092565b60005b8381101561135c578181015183820152602001611344565b8381111561136b576000848401525b50505050565b6020815260008251806020840152611390816040850160208701611341565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008061010083850312156113d657600080fd5b823567ffffffffffffffff8111156113ed57600080fd5b6113f9858286016110ef565b92505061140984602085016111cf565b90509250929050565b6000806040838503121561142557600080fd5b823567ffffffffffffffff8082111561143d57600080fd5b61144986838701611033565b9350602085013591508082111561145f57600080fd5b5061146c85828601611033565b9150509250929050565b60006040828403121561148857600080fd5b6040516040810181811067ffffffffffffffff821117156114ab576114ab610f22565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081526000825161153c816001850160208701611341565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516115d281600e850160208701611341565b91909101600e019392505050565b6000602082840312156115f257600080fd5b815167ffffffffffffffff81111561160957600080fd5b8201601f8101841361161a57600080fd5b805161162861105282610fed565b81815285602083850101111561163d57600080fd5b61164e826020830160208601611341565b95945050505050565b815160009082906020808601845b8381101561168157815185529382019390820190600101611665565b50929695505050505050565b828152600082516116a5816020850160208701611341565b919091016020019392505050565b600084516116c5818460208901611341565b820184815283516116dd816020808501908801611341565b016020019594505050505056fea2646970667358221220d41007a8bb17e8c78a6315d8c45fe4caedf6e58ea70311c2a917c9c63ae38a0764736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506200002a60605b6200005460201b620009141760201c565b6001600160a01b031660805262000042606062000019565b6001600160a01b031660a05262000197565b6000806200008e836040516020016200006e919062000135565b604051602081830303815290604052620000c960201b6200099f1760201c565b90508051602082016000f091506001600160a01b038216620000c35760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620000e192919062000151565b6040516020818303038152906040529050919050565b6000815160005b818110156200011a5760208185018101518683015201620000fe565b818111156200012a576000828601525b509290920192915050565b6000815260006200014a6001830184620000f7565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200018f600e830184620000f7565b949350505050565b60805160a051611720620001bd60003960006105600152600061053301526117206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009c5780639b0bc349146100b1578063a46c2a311461009557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611253565b6100c4565b60405161008c9190611371565b60405180910390f35b606061007f565b6100af6100aa3660046113c2565b6104bf565b005b61007f6100bf366004611412565b6107c3565b606060006100d1856109cb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561011f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101439190611476565b60200151905060008060005b86518110156102e7578387828151811061016b5761016b6114c5565b602002602001015160a0018181525050600285518161018c5761018c6114f4565b0487828151811061019f5761019f6114c5565b602002602001015160c00181815250506101d2888883815181106101c5576101c56114c5565b60200260200101516104bf565b6102028782815181106101e7576101e76114c5565b60200260200101516080015184610b0f90919063ffffffff16565b9250610234878281518110610219576102196114c5565b60200260200101516060015183610b0f90919063ffffffff16565b9150868181518110610248576102486114c5565b602002602001015160200151878281518110610266576102666114c5565b60200260200101516040015110156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161014f565b506000828860200151510167ffffffffffffffff81111561030a5761030a610f22565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b50905060005b886020015151811015610389578860200151818151811061035c5761035c6114c5565b6020026020010151828281518110610376576103766114c5565b6020908102919091010152600101610339565b5087515160009067ffffffffffffffff8111156103a8576103a8610f22565b6040519080825280602002602001820160405280156103db57816020015b60608152602001906001900390816103c65790505b50905060005b89515181101561043757610412878b600001518381518110610405576104056114c5565b60200260200101516107c3565b828281518110610424576104246114c5565b60209081029190910101526001016103e1565b506104af6040518060a00160405280600081526020018567ffffffffffffffff81111561046657610466610f22565b60405190808252806020026020018201604052801561048f578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250610b26565b96505050505050505b9392505050565b8051825151811061052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102d6565b60006105577f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060006105847f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060008080600080602088026020018a5101519050805193505b83851015610748576002850194508481015180601e1a935080601f1a925050600683101561066357826105f35789602001515189608001510182106105e357600080fd5b604089018051600101905261064a565b600183141561060c57886040015182106105e357600080fd5b600283141561062557604089018051600101905261064a565b600383141561064a578860a00151821061063e57600080fd5b60408901805160010190525b600483141561065e5761065e8a8a84610c91565b61072b565b8860c0015183106106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102d6565b6020838102888101820151908801909101516106ef8463ffffffff8416565b60408c018051919091039081905260608c015161070b91610b0f565b60608c015261071d8463ffffffff8316565b60408c018051909101905250505b604089015160608a015161073e91610b0f565b60608a015261059f565b606089015160ff10156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102d6565b50505050505050505050565b80516060906002810615610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102d6565b60006002600383020467ffffffffffffffff81111561085457610854610f22565b6040519080825280601f01601f19166020018201604052801561087e576020820181803683370190505b509050600660018381018160005b828210156109065781890151601f1a60028306156108e857858110156108ba57600182019181908801602101535b8581106108e857600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b600283066108f95780826020018801535b506001918201910161088c565b509398975050505050505050565b60008061093f8360405160200161092b9190611523565b60405160208183030381529060405261099f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610999576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109b5929190611549565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926109ff9116610c63565b9050805160001415610b0957610aac610aa78473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610aa291908101906115e0565b610d30565b610914565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104b8836109cb565b92915050565b600081831015610b1f57816104b8565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610b729190611657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bae929160200161168d565b604051602081830303815290604052905060005b856040015151811015610c5a578186604001518281518110610be657610be66114c5565b60200260200101515160001b87604001518381518110610c0857610c086114c5565b6020026020010151604051602001610c22939291906116b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610bc2565b50949350505050565b6060610b098260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610cdb9190610b0f565b60608401526080830151610cef9082610b0f565b60808401528251600783168085526001600385811c161b919060005b83811015610d2557610d1d88886104bf565b600101610d0b565b505090935250505050565b60606020825181610d4357610d436114f4565b0615610dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102d6565b60006010835181610dbe57610dbe6114f4565b0467ffffffffffffffff811115610dd757610dd7610f22565b6040519080825280601f01601f191660200182016040528015610e01576020820181803683370190505b509050600060025b8451821015610e31578083018051602084880181015190911790915290910190600201610e09565b50909392505050565b6060833b80610e595750506040805160208101909152600081526104b8565b80841115610e775750506040805160208101909152600081526104b8565b83831015610ec2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102d6565b8383038482036000828210610ed75782610ed9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f7457610f74610f22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fc157610fc1610f22565b604052919050565b600067ffffffffffffffff821115610fe357610fe3610f22565b5060051b60200190565b600067ffffffffffffffff82111561100757611007610f22565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261104457600080fd5b813561105761105282610fed565b610f7a565b81815284602083860101111561106c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261109a57600080fd5b813560206110aa61105283610fc9565b82815260059290921b840181019181810190868411156110c957600080fd5b8286015b848110156110e457803583529183019183016110cd565b509695505050505050565b60006040828403121561110157600080fd5b611109610f51565b9050813567ffffffffffffffff8082111561112357600080fd5b818401915084601f83011261113757600080fd5b8135602061114761105283610fc9565b82815260059290921b8401810191818101908884111561116657600080fd5b8286015b8481101561119e578035868111156111825760008081fd5b6111908b86838b0101611033565b84525091830191830161116a565b50865250858101359350828411156111b557600080fd5b6111c187858801611089565b818601525050505092915050565b600060e082840312156111e157600080fd5b60405160e0810181811067ffffffffffffffff8211171561120457611204610f22565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561126857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461128c57600080fd5b925060208481013567ffffffffffffffff808211156112aa57600080fd5b6112b6888389016110ef565b945060408701359150808211156112cc57600080fd5b508501601f810187136112de57600080fd5b80356112ec61105282610fc9565b81815260e0918202830184019184820191908a84111561130b57600080fd5b938501935b83851015611331576113228b866111cf565b83529384019391850191611310565b5080955050505050509250925092565b60005b8381101561135c578181015183820152602001611344565b8381111561136b576000848401525b50505050565b6020815260008251806020840152611390816040850160208701611341565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008061010083850312156113d657600080fd5b823567ffffffffffffffff8111156113ed57600080fd5b6113f9858286016110ef565b92505061140984602085016111cf565b90509250929050565b6000806040838503121561142557600080fd5b823567ffffffffffffffff8082111561143d57600080fd5b61144986838701611033565b9350602085013591508082111561145f57600080fd5b5061146c85828601611033565b9150509250929050565b60006040828403121561148857600080fd5b6040516040810181811067ffffffffffffffff821117156114ab576114ab610f22565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081526000825161153c816001850160208701611341565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516115d281600e850160208701611341565b91909101600e019392505050565b6000602082840312156115f257600080fd5b815167ffffffffffffffff81111561160957600080fd5b8201601f8101841361161a57600080fd5b805161162861105282610fed565b81815285602083850101111561163d57600080fd5b61164e826020830160208601611341565b95945050505050565b815160009082906020808601845b8381101561168157815185529382019390820190600101611665565b50929695505050505050565b828152600082516116a5816020850160208701611341565b919091016020019392505050565b600084516116c5818460208901611341565b820184815283516116dd816020808501908801611341565b016020019594505050505056fea2646970667358221220cd735fe7d1006926589b3c5cd7e55f3ea2b6889bb0e65c15c8a1a1629fd568be64736f6c634300080a0033"; type VMStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ValueTierTest__factory.ts b/src/typechain/factories/ValueTierTest__factory.ts deleted file mode 100644 index 843bdb0..0000000 --- a/src/typechain/factories/ValueTierTest__factory.ts +++ /dev/null @@ -1,174 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - Signer, - utils, - Contract, - ContractFactory, - Overrides, - BigNumberish, -} from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { ValueTierTest, ValueTierTestInterface } from "../ValueTierTest"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256[8]", - name: "tierValues_", - type: "uint256[8]", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - ], - name: "InitializeValueTier", - type: "event", - }, - { - inputs: [], - name: "tierValues", - outputs: [ - { - internalType: "uint256[8]", - name: "tierValues_", - type: "uint256[8]", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tier_", - type: "uint256", - }, - ], - name: "wrappedTierToValue", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "value_", - type: "uint256", - }, - ], - name: "wrappedValueToTier", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x60806040523480156200001157600080fd5b50604051620009eb380380620009eb833981016040819052620000349162000248565b6200003f8162000046565b50620003da565b6000546001600160a01b031615620000625762000062620002da565b6000805b6008811015620001035781838260088110620000865762000086620002f0565b60200201511015620000de5760405162461bcd60e51b815260206004820152601860248201527f4f55545f4f465f4f524445525f544945525f56414c5545530000000000000000604482015260640160405180910390fd5b828160088110620000f357620000f3620002f0565b6020020151915060010162000066565b505060006200013e826040516020016200011e919062000306565b604051602081830303815290604052620001a560201b620001021760201c565b604080513381526001600160a01b03831660208201529192507f18ebb958e85030233374c8eb79c1a72ee418770db7fb47a7de05d30c868ec958910160405180910390a1600080546001600160a01b0319166001600160a01b039290921691909117905550565b600080620001df83604051602001620001bf919062000378565b6040516020818303038152906040526200021a60201b6200018d1760201c565b90508051602082016000f091506001600160a01b038216620002145760405163046a55db60e11b815260040160405180910390fd5b50919050565b60608151826040516020016200023292919062000394565b6040516020818303038152906040529050919050565b60006101008083850312156200025d57600080fd5b83601f8401126200026d57600080fd5b6040518181016001600160401b03811182821017156200029d57634e487b7160e01b600052604160045260246000fd5b604052908301908085831115620002b357600080fd5b845b83811015620002cf578051825260209182019101620002b5565b509095945050505050565b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6101008101818360005b60088110156200033157815183526020928301929091019060010162000310565b50505092915050565b6000815160005b818110156200035d576020818501810151868301520162000341565b818111156200036d576000828601525b509290920192915050565b6000815260006200038d60018301846200033a565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620003d2600e8301846200033a565b949350505050565b61060180620003ea6000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634bc1010e1461004657806370230b391461006c578063983ca63d14610081575b600080fd5b610059610054366004610372565b610094565b6040519081526020015b60405180910390f35b6100746100ad565b604051610063919061038b565b61005961008f366004610372565b6100ef565b60006100a76100a16100ad565b836101b9565b92915050565b6100b5610353565b6000546100d79073ffffffffffffffffffffffffffffffffffffffff16610207565b8060200190518101906100ea91906103bd565b905090565b60006100a76100fc6100ad565b83610235565b60008061012d83604051602001610119919061049e565b60405160208183030381529060405261018d565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610187576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016101a39291906104b1565b6040516020818303038152906040529050919050565b6000805b60088110156101fd578381600881106101d8576101d861053c565b60200201518310156101eb5790506100a7565b806101f58161056b565b9150506101bd565b5060089392505050565b60606100a78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610267565b6000808211610245576000610260565b82600183036008811061025a5761025a61053c565b60200201515b9392505050565b6060833b80610286575050604080516020810190915260008152610260565b808411156102a4575050604080516020810190915260008152610260565b838310156102f3576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b8383038482036000828210610308578261030a565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561038457600080fd5b5035919050565b6101008101818360005b60088110156103b4578151835260209283019290910190600101610395565b50505092915050565b60006101008083850312156103d157600080fd5b83601f8401126103e057600080fd5b60405181810181811067ffffffffffffffff82111715610429577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561043e57600080fd5b845b83811015610458578051825260209182019101610440565b509095945050505050565b6000815160005b81811015610484576020818501810151868301520161046a565b81811115610493576000828601525b509290920192915050565b6000815260006102606001830184610463565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000610534600e830184610463565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156105c4577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212207de3044defd03197a2c742c1712aee97aa3ec1ed9572eebc9097d2687453a4e064736f6c634300080a0033"; - -type ValueTierTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ValueTierTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ValueTierTest__factory extends ContractFactory { - constructor(...args: ValueTierTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - tierValues_: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(tierValues_, overrides || {}) as Promise; - } - getDeployTransaction( - tierValues_: BigNumberish[], - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(tierValues_, overrides || {}); - } - attach(address: string): ValueTierTest { - return super.attach(address) as ValueTierTest; - } - connect(signer: Signer): ValueTierTest__factory { - return super.connect(signer) as ValueTierTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ValueTierTestInterface { - return new utils.Interface(_abi) as ValueTierTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ValueTierTest { - return new Contract(address, _abi, signerOrProvider) as ValueTierTest; - } -} diff --git a/src/typechain/factories/ValueTier__factory.ts b/src/typechain/factories/ValueTier__factory.ts deleted file mode 100644 index 4959900..0000000 --- a/src/typechain/factories/ValueTier__factory.ts +++ /dev/null @@ -1,111 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { ValueTier, ValueTierInterface } from "../ValueTier"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "_size", - type: "uint256", - }, - { - internalType: "uint256", - name: "_start", - type: "uint256", - }, - { - internalType: "uint256", - name: "_end", - type: "uint256", - }, - ], - name: "InvalidCodeAtRange", - type: "error", - }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "pointer", - type: "address", - }, - ], - name: "InitializeValueTier", - type: "event", - }, - { - inputs: [], - name: "tierValues", - outputs: [ - { - internalType: "uint256[8]", - name: "tierValues_", - type: "uint256[8]", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b506102de806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806370230b3914610030575b600080fd5b61003861004e565b60405161004591906101d0565b60405180910390f35b6100566101b1565b6000546100789073ffffffffffffffffffffffffffffffffffffffff16610090565b80602001905181019061008b9190610202565b905090565b60606100be8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6100c4565b92915050565b6060833b806100e35750506040805160208101909152600081526101aa565b808411156101015750506040805160208101909152600081526101aa565b83831015610150576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640160405180910390fd5b83830384820360008282106101655782610167565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050505b9392505050565b6040518061010001604052806008906020820280368337509192915050565b6101008101818360005b60088110156101f95781518352602092830192909101906001016101da565b50505092915050565b600061010080838503121561021657600080fd5b83601f84011261022557600080fd5b60405181810181811067ffffffffffffffff8211171561026e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290830190808583111561028357600080fd5b845b8381101561029d578051825260209182019101610285565b50909594505050505056fea2646970667358221220bafe2e02bdf14ea765cfa0bb2f158be7ed6c6332184cd86f819bfd862835da5664736f6c634300080a0033"; - -type ValueTierConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ValueTierConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ValueTier__factory extends ContractFactory { - constructor(...args: ValueTierConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ValueTier { - return super.attach(address) as ValueTier; - } - connect(signer: Signer): ValueTier__factory { - return super.connect(signer) as ValueTier__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ValueTierInterface { - return new utils.Interface(_abi) as ValueTierInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ValueTier { - return new Contract(address, _abi, signerOrProvider) as ValueTier; - } -} diff --git a/src/typechain/factories/VerifyCallbackTest__factory.ts b/src/typechain/factories/VerifyCallbackTest__factory.ts index e49ef0a..ec0d687 100644 --- a/src/typechain/factories/VerifyCallbackTest__factory.ts +++ b/src/typechain/factories/VerifyCallbackTest__factory.ts @@ -208,7 +208,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea26469706673582212204ab9a8a4eef6dde5542801f04b8df65753c551ce0233d372d52d11c96a4ee87164736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220184ade962091d20c39addde39fc1ad15600e30d5f030a91c92c1e84fd7b5782164736f6c634300080a0033"; type VerifyCallbackTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyFactory__factory.ts b/src/typechain/factories/VerifyFactory__factory.ts index ad0b791..8c49ddc 100644 --- a/src/typechain/factories/VerifyFactory__factory.ts +++ b/src/typechain/factories/VerifyFactory__factory.ts @@ -134,7 +134,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612d468061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220dde3e7d14a2a607cc57f8ba5e9f0ef5c7cc9bd94d6f1ac9c5adeaabbd317224764736f6c634300080a0033608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b366004612574565b610687565b61029c6103ae3660046125f8565b6106f5565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e836600461273a565b610824565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b0610422366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61046636600461273a565b610c50565b610231600081565b61029c6104813660046127fd565b610ef5565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046125f8565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046125f8565b611a58565b61029c6105073660046125f8565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b60006001836000015163ffffffff1610156106a45750600061059f565b81836040015163ffffffff16116106bd5750600361059f565b81836020015163ffffffff16116106d65750600261059f565b825163ffffffff1682106106ec5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074e9043610687565b146107b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f4576107f4612875565b905060200281019061080691906128a4565b6040516108149291906128e2565b60405180910390a16001016107b8565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3161084e81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610887576108876124b9565b6040519080825280602002602001820160405280156108b0578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108cf576108cf6124b9565b6040519080825280602002602001820160405280156108f8578160200160208202803683370190505b50905060008060005b8751811015610af857600088828151811061091e5761091e612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109dc868286611e6a565b6001909301925b602087015163ffffffff9081161415610ab65763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610aaf858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae7929190612a80565b60405180910390a150600101610901565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c46578215610baf57610b288584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7c9033908990600401612aaf565b600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b505050505b8115610c4657610bbf8483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c139033908890600401612aaf565b600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7a81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb357610cb36124b9565b604051908082528060200260200182016040528015610cdc578160200160208202803683370190505b5090506000805b8551811015610e36576000868281518110610d0057610d00612875565b6020026020010151905060026000888481518110610d2057610d20612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df457805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610ded848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e25929190612a80565b60405180910390a150600101610ce3565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610eed578115610eed57610e668383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610eba9033908790600401612aaf565b600060405180830381600087803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b505050505b505050505050565b6000610f016001611f03565b90508015610f3657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f45602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610fed7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b6110377f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b6110617f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b6110ab7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110d57fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b61111f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6111557f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611150602085018561249e565b611cc3565b6111867f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611150602085018561249e565b6111b77fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611150602085018561249e565b6111c7604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09061123e9033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113008243610687565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610eed57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff811115611655576116556124b9565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c6124b9565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab19043610687565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be09043610687565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db6124b9565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561250b5761250b6124b9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612558576125586124b9565b604052919050565b803563ffffffff8116811461208957600080fd5b600080828403608081121561258857600080fd5b606081121561259657600080fd5b506040516060810181811067ffffffffffffffff821117156125ba576125ba6124b9565b6040526125c684612560565b81526125d460208501612560565b60208201526125e560408501612560565b6040820152946060939093013593505050565b6000806020838503121561260b57600080fd5b823567ffffffffffffffff8082111561262357600080fd5b818501915085601f83011261263757600080fd5b81358181111561264657600080fd5b8660208260051b850101111561265b57600080fd5b60209290920196919550909350505050565b60006040828403121561267f57600080fd5b6126876124e8565b90506126928261244e565b815260208083013567ffffffffffffffff808211156126b057600080fd5b818501915085601f8301126126c457600080fd5b8135818111156126d6576126d66124b9565b612706847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612511565b9150808252868482850101111561271c57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561274d57600080fd5b823567ffffffffffffffff8082111561276557600080fd5b818501915085601f83011261277957600080fd5b81358181111561278b5761278b6124b9565b8060051b61279a858201612511565b91825283810185019185810190898411156127b457600080fd5b86860192505b838310156127f0578235858111156127d25760008081fd5b6127e08b89838a010161266d565b83525091860191908601906127ba565b9998505050505050505050565b60006040828403121561280f57600080fd5b50919050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561265b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f368361266d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122098c6f380b9b99ee9b6d8ff0c8c6874c739a71292a311fd79c30d89a38e6a5dd764736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612d468061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220b02c6364a19ef9e42556de8c9abff2b027e44b0aebad8e7110bdeb9bddecd8c464736f6c634300080a0033608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046124b9565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046126a2565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046126a2565b610be2565b610231600081565b61029c61046e366004612765565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a8366004612791565b61123d565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046124b9565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046124b9565b611a58565b61029c6105073660046124b9565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261123d565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d3384848481811061078657610786612875565b905060200281019061079891906128a4565b6040516107a69291906128e2565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff8111156108195761081961252e565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108615761086161252e565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b0612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611e6a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a79929190612a80565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612aaf565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612aaf565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c4561252e565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c92612875565b6020026020010151905060026000888481518110610cb257610cb2612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db7929190612a80565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612aaf565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b6000610e936001611f03565b90508015610ec857600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610ed7602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610f55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610f7f7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b610fc97f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b610ff37f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b61103d7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110677fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b6110b17f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6110e77f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6110e2602085018561249e565b611cc3565b6111187f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16110e2602085018561249e565b6111497fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6110e2602085018561249e565b611159604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906111d09033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561125a5750600061059f565b81836040015163ffffffff16116112735750600361059f565b81836020015163ffffffff161161128c5750600261059f565b825163ffffffff1682106112a25750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff808216835264010000000082048116948301949094526801000000000000000090049092169082015290611300824261123d565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116555761165561252e565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c61252e565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff42811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab1904261123d565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be0904261123d565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db61252e565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b600080602083850312156124cc57600080fd5b823567ffffffffffffffff808211156124e457600080fd5b818501915085601f8301126124f857600080fd5b81358181111561250757600080fd5b8660208260051b850101111561251c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156125805761258061252e565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125cd576125cd61252e565b604052919050565b6000604082840312156125e757600080fd5b6125ef61255d565b90506125fa8261244e565b815260208083013567ffffffffffffffff8082111561261857600080fd5b818501915085601f83011261262c57600080fd5b81358181111561263e5761263e61252e565b61266e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612586565b9150808252868482850101111561268457600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156126b557600080fd5b823567ffffffffffffffff808211156126cd57600080fd5b818501915085601f8301126126e157600080fd5b8135818111156126f3576126f361252e565b8060051b612702858201612586565b918252838101850191858101908984111561271c57600080fd5b86860192505b838310156127585782358581111561273a5760008081fd5b6127488b89838a01016125d5565b8352509186019190860190612722565b9998505050505050505050565b60006040828403121561277757600080fd5b50919050565b803563ffffffff8116811461208957600080fd5b60008082840360808112156127a557600080fd5b60608112156127b357600080fd5b506040516060810181811067ffffffffffffffff821117156127d7576127d761252e565b6040526127e38461277d565b81526127f16020850161277d565b60208201526128026040850161277d565b6040820152946060939093013593505050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561251c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f36836125d5565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220e9c8a42ebc6b9460007d52351fe4fbb996021504975aa18622d8de43db03e1d664736f6c634300080a0033"; type VerifyFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTierFactory__factory.ts b/src/typechain/factories/VerifyTierFactory__factory.ts index bd65509..817492d 100644 --- a/src/typechain/factories/VerifyTierFactory__factory.ts +++ b/src/typechain/factories/VerifyTierFactory__factory.ts @@ -125,7 +125,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61087e8061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea2646970667358221220d8ccd9ecb13c574a1d86144057272a1274c7ba7a3fbfdb794e432a7db2d8848764736f6c634300080a0033608060405234801561001057600080fd5b5061085e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046106c6565b610093565b005b61005961006936600461074d565b6100fa565b61008161007c36600461074d565b6102a4565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101066001610471565b9050801561013b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166101b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061077c565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610404919061080f565b1415610449576104427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166105fc565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b60008054610100900460ff1615610528578160ff1660011480156104945750303b155b610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b506000919050565b60005460ff8084169116106105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600082600881111561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156106965763ffffffff6020820290811b199890981685891b1797915060010161066e565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105f757600080fd5b600080600080606085870312156106dc57600080fd5b6106e5856106a2565b935060208501359250604085013567ffffffffffffffff8082111561070957600080fd5b818701915087601f83011261071d57600080fd5b81358181111561072c57600080fd5b88602082850101111561073e57600080fd5b95989497505060200194505050565b60006020828403121561075f57600080fd5b610442826106a2565b805163ffffffff811681146105f757600080fd5b60006060828403121561078e57600080fd5b6040516060810181811067ffffffffffffffff821117156107d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526107e483610768565b81526107f260208401610768565b602082015261080360408401610768565b60408201529392505050565b60006020828403121561082157600080fd5b505191905056fea26469706673582212207bc101b06e84c4971be08c8ac3a53defe981e3bf451fdb0d95048e20ad0ddf4d64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610be68061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea2646970667358221220f80eb5070d292b319fba74739ae6152f9945076b230413f5fe463a844d915cfe64736f6c634300080a0033608060405234801561001057600080fd5b50610bc6806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f3660046108ae565b6100c2565b60405190151581526020015b60405180910390f35b61008c610087366004610999565b61015b565b604051908152602001610070565b6100ad6100a8366004610a52565b61032a565b005b61008c6100bd366004610a6d565b6104d9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610b77565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff1661067d565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b60006103366001610723565b9050801561036b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166103ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156104d557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105749190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190610b77565b1415610650576020015163ffffffff169050610675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156106eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103e4565b6000855b858110156107175763ffffffff6020820290811b199890981685891b179791506001016106ef565b50959695505050505050565b60008054610100900460ff16156107da578160ff1660011480156107465750303b155b6107d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b506000919050565b60005460ff808416911610610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6000602082840312156108c057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108f057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109915761099161091b565b604052919050565b600080604083850312156109ac57600080fd5b6109b5836108f7565b915060208084013567ffffffffffffffff808211156109d357600080fd5b818601915086601f8301126109e757600080fd5b8135818111156109f9576109f961091b565b8060051b9150610a0a84830161094a565b8181529183018401918481019089841115610a2457600080fd5b938501935b83851015610a4257843582529385019390850190610a29565b8096505050505050509250929050565b600060208284031215610a6457600080fd5b6108f0826108f7565b60008060008060608587031215610a8357600080fd5b610a8c856108f7565b935060208501359250604085013567ffffffffffffffff80821115610ab057600080fd5b818701915087601f830112610ac457600080fd5b813581811115610ad357600080fd5b8860208260051b8501011115610ae857600080fd5b95989497505060200194505050565b805163ffffffff811681146108a957600080fd5b600060608284031215610b1d57600080fd5b6040516060810181811067ffffffffffffffff82111715610b4057610b4061091b565b604052610b4c83610af7565b8152610b5a60208401610af7565b6020820152610b6b60408401610af7565b60408201529392505050565b600060208284031215610b8957600080fd5b505191905056fea2646970667358221220ad7f0bcb7feccc12173b890f13d9da97457a76b7935102054fe9808b8d0d520c64736f6c634300080a0033"; type VerifyTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTier__factory.ts b/src/typechain/factories/VerifyTier__factory.ts index 12e538b..2d6b1cd 100644 --- a/src/typechain/factories/VerifyTier__factory.ts +++ b/src/typechain/factories/VerifyTier__factory.ts @@ -38,43 +38,6 @@ const _abi = [ name: "Initialized", type: "event", }, - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "address", - name: "sender", - type: "address", - }, - { - indexed: false, - internalType: "address", - name: "account", - type: "address", - }, - { - indexed: false, - internalType: "uint256", - name: "startTier", - type: "uint256", - }, - { - indexed: false, - internalType: "uint256", - name: "endTier", - type: "uint256", - }, - { - indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "TierChange", - type: "event", - }, { inputs: [ { @@ -95,6 +58,11 @@ const _abi = [ name: "account_", type: "address", }, + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, ], name: "report", outputs: [ @@ -111,7 +79,7 @@ const _abi = [ inputs: [ { internalType: "address", - name: "", + name: "account_", type: "address", }, { @@ -120,20 +88,45 @@ const _abi = [ type: "uint256", }, { - internalType: "bytes", + internalType: "uint256[]", name: "", - type: "bytes", + type: "uint256[]", }, ], - name: "setTier", - outputs: [], - stateMutability: "pure", + name: "reportTimeForTier", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId_", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", type: "function", }, ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061085e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80638a200fff14610046578063c4d66de81461005b578063e053ea311461006e575b600080fd5b6100596100543660046106c6565b610093565b005b61005961006936600461074d565b6100fa565b61008161007c36600461074d565b6102a4565b60405190815260200160405180910390f35b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f5345545f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101066001610471565b9050801561013b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166101b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016100f1565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156102a057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152839262010000900416906331e658a590602401606060405180830381865afa15801561031b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033f919061077c565b600054604080517f42c8a14d000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524360648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff16906342c8a14d90608401602060405180830381865afa1580156103e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610404919061080f565b1415610449576104427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff166105fc565b9392505050565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b60008054610100900460ff1615610528578160ff1660011480156104945750303b155b610520576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b506000919050565b60005460ff8084169116106105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016100f1565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600082600881111561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016100f1565b6000855b858110156106965763ffffffff6020820290811b199890981685891b1797915060010161066e565b50959695505050505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105f757600080fd5b600080600080606085870312156106dc57600080fd5b6106e5856106a2565b935060208501359250604085013567ffffffffffffffff8082111561070957600080fd5b818701915087601f83011261071d57600080fd5b81358181111561072c57600080fd5b88602082850101111561073e57600080fd5b95989497505060200194505050565b60006020828403121561075f57600080fd5b610442826106a2565b805163ffffffff811681146105f757600080fd5b60006060828403121561078e57600080fd5b6040516060810181811067ffffffffffffffff821117156107d8577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040526107e483610768565b81526107f260208401610768565b602082015261080360408401610768565b60408201529392505050565b60006020828403121561082157600080fd5b505191905056fea26469706673582212207bc101b06e84c4971be08c8ac3a53defe981e3bf451fdb0d95048e20ad0ddf4d64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610bc6806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f3660046108ae565b6100c2565b60405190151581526020015b60405180910390f35b61008c610087366004610999565b61015b565b604051908152602001610070565b6100ad6100a8366004610a52565b61032a565b005b61008c6100bd366004610a6d565b6104d9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610b77565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff1661067d565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b60006103366001610723565b9050801561036b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166103ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156104d557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105749190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190610b77565b1415610650576020015163ffffffff169050610675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156106eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103e4565b6000855b858110156107175763ffffffff6020820290811b199890981685891b179791506001016106ef565b50959695505050505050565b60008054610100900460ff16156107da578160ff1660011480156107465750303b155b6107d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b506000919050565b60005460ff808416911610610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6000602082840312156108c057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108f057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109915761099161091b565b604052919050565b600080604083850312156109ac57600080fd5b6109b5836108f7565b915060208084013567ffffffffffffffff808211156109d357600080fd5b818601915086601f8301126109e757600080fd5b8135818111156109f9576109f961091b565b8060051b9150610a0a84830161094a565b8181529183018401918481019089841115610a2457600080fd5b938501935b83851015610a4257843582529385019390850190610a29565b8096505050505050509250929050565b600060208284031215610a6457600080fd5b6108f0826108f7565b60008060008060608587031215610a8357600080fd5b610a8c856108f7565b935060208501359250604085013567ffffffffffffffff80821115610ab057600080fd5b818701915087601f830112610ac457600080fd5b813581811115610ad357600080fd5b8860208260051b8501011115610ae857600080fd5b95989497505060200194505050565b805163ffffffff811681146108a957600080fd5b600060608284031215610b1d57600080fd5b6040516060810181811067ffffffffffffffff82111715610b4057610b4061091b565b604052610b4c83610af7565b8152610b5a60208401610af7565b6020820152610b6b60408401610af7565b60408201529392505050565b600060208284031215610b8957600080fd5b505191905056fea2646970667358221220ad7f0bcb7feccc12173b890f13d9da97457a76b7935102054fe9808b8d0d520c64736f6c634300080a0033"; type VerifyTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Verify__factory.ts b/src/typechain/factories/Verify__factory.ts index 60f35d5..6a1ddf0 100644 --- a/src/typechain/factories/Verify__factory.ts +++ b/src/typechain/factories/Verify__factory.ts @@ -762,15 +762,15 @@ const _abi = [ }, { internalType: "uint256", - name: "blockNumber_", + name: "timestamp_", type: "uint256", }, ], - name: "statusAtBlock", + name: "statusAtTime", outputs: [ { internalType: "uint256", - name: "", + name: "status_", type: "uint256", }, ], @@ -799,7 +799,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80637c7d7f7a116100e3578063b8c55bfa1161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b8c55bfa14610486578063ba658111146104ad578063cd491526146104c057600080fd5b80639f839222116100bd5780639f83922214610458578063a217fddf1461046b578063b6a597dd1461047357600080fd5b80637c7d7f7a146103da57806381792e44146103ed57806391d148541461041457600080fd5b806331e658a51161014557806342c8a14d1161011f57806342c8a14d1461038d5780635df0675a146103a05780637547a867146103b357600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61023161039b366004612574565b610687565b61029c6103ae3660046125f8565b6106f5565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103e836600461273a565b610824565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b0610422366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c61046636600461273a565b610c50565b610231600081565b61029c6104813660046127fd565b610ef5565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046125f8565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046125f8565b611a58565b61029c6105073660046125f8565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b60006001836000015163ffffffff1610156106a45750600061059f565b81836040015163ffffffff16116106bd5750600361059f565b81836020015163ffffffff16116106d65750600261059f565b825163ffffffff1682106106ec5750600161059f565b50600092915050565b336000908152600260208181526040928390208351606081018552905463ffffffff80821683526401000000008204811693830193909352680100000000000000009004909116928101929092529061074e9043610687565b146107b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d338484848181106107f4576107f4612875565b905060200281019061080691906128a4565b6040516108149291906128e2565b60405180910390a16001016107b8565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3161084e81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610887576108876124b9565b6040519080825280602002602001820160405280156108b0578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108cf576108cf6124b9565b6040519080825280602002602001820160405280156108f8578160200160208202803683370190505b50905060008060005b8751811015610af857600088828151811061091e5761091e612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff808216808452640100000000830482169684019690965268010000000000000000909104169181019190915298509150600111156109e357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506109dc868286611e6a565b6001909301925b602087015163ffffffff9081161415610ab65763ffffffff4381166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610aaf858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610ae7929190612a80565b60405180910390a150600101610901565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610c46578215610baf57610b288584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b7c9033908990600401612aaf565b600060405180830381600087803b158015610b9657600080fd5b505af1158015610baa573d6000803e3d6000fd5b505050505b8115610c4657610bbf8483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610c139033908890600401612aaf565b600060405180830381600087803b158015610c2d57600080fd5b505af1158015610c41573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c7a81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610cb357610cb36124b9565b604051908082528060200260200182016040528015610cdc578160200160208202803683370190505b5090506000805b8551811015610e36576000868281518110610d0057610d00612875565b6020026020010151905060026000888481518110610d2057610d20612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610df457805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610ded848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610e25929190612a80565b60405180910390a150600101610ce3565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610eed578115610eed57610e668383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610eba9033908790600401612aaf565b600060405180830381600087803b158015610ed457600080fd5b505af1158015610ee8573d6000803e3d6000fd5b505050505b505050505050565b6000610f016001611f03565b90508015610f3657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f45602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610fc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610fed7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b6110377f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b6110617f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b6110ab7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110d57fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b61111f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6111557f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611150602085018561249e565b611cc3565b6111867f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611150602085018561249e565b6111b77fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611150602085018561249e565b6111c7604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09061123e9033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113008243610687565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff438116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610eed57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff811115611655576116556124b9565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c6124b9565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff43811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4381166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab19043610687565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be09043610687565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db6124b9565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561250b5761250b6124b9565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612558576125586124b9565b604052919050565b803563ffffffff8116811461208957600080fd5b600080828403608081121561258857600080fd5b606081121561259657600080fd5b506040516060810181811067ffffffffffffffff821117156125ba576125ba6124b9565b6040526125c684612560565b81526125d460208501612560565b60208201526125e560408501612560565b6040820152946060939093013593505050565b6000806020838503121561260b57600080fd5b823567ffffffffffffffff8082111561262357600080fd5b818501915085601f83011261263757600080fd5b81358181111561264657600080fd5b8660208260051b850101111561265b57600080fd5b60209290920196919550909350505050565b60006040828403121561267f57600080fd5b6126876124e8565b90506126928261244e565b815260208083013567ffffffffffffffff808211156126b057600080fd5b818501915085601f8301126126c457600080fd5b8135818111156126d6576126d66124b9565b612706847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612511565b9150808252868482850101111561271c57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561274d57600080fd5b823567ffffffffffffffff8082111561276557600080fd5b818501915085601f83011261277957600080fd5b81358181111561278b5761278b6124b9565b8060051b61279a858201612511565b91825283810185019185810190898411156127b457600080fd5b86860192505b838310156127f0578235858111156127d25760008081fd5b6127e08b89838a010161266d565b83525091860191908601906127ba565b9998505050505050505050565b60006040828403121561280f57600080fd5b50919050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561265b57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f368361266d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea264697066735822122098c6f380b9b99ee9b6d8ff0c8c6874c739a71292a311fd79c30d89a38e6a5dd764736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046124b9565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046126a2565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046126a2565b610be2565b610231600081565b61029c61046e366004612765565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a8366004612791565b61123d565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046124b9565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046124b9565b611a58565b61029c6105073660046124b9565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261123d565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d3384848481811061078657610786612875565b905060200281019061079891906128a4565b6040516107a69291906128e2565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff8111156108195761081961252e565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108615761086161252e565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b0612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611e6a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a79929190612a80565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612aaf565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612aaf565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c4561252e565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c92612875565b6020026020010151905060026000888481518110610cb257610cb2612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db7929190612a80565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612aaf565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b6000610e936001611f03565b90508015610ec857600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610ed7602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610f55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610f7f7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b610fc97f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b610ff37f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b61103d7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110677fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b6110b17f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6110e77f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6110e2602085018561249e565b611cc3565b6111187f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16110e2602085018561249e565b6111497fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6110e2602085018561249e565b611159604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906111d09033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561125a5750600061059f565b81836040015163ffffffff16116112735750600361059f565b81836020015163ffffffff161161128c5750600261059f565b825163ffffffff1682106112a25750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff808216835264010000000082048116948301949094526801000000000000000090049092169082015290611300824261123d565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116555761165561252e565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c61252e565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff42811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab1904261123d565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be0904261123d565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db61252e565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b600080602083850312156124cc57600080fd5b823567ffffffffffffffff808211156124e457600080fd5b818501915085601f8301126124f857600080fd5b81358181111561250757600080fd5b8660208260051b850101111561251c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156125805761258061252e565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125cd576125cd61252e565b604052919050565b6000604082840312156125e757600080fd5b6125ef61255d565b90506125fa8261244e565b815260208083013567ffffffffffffffff8082111561261857600080fd5b818501915085601f83011261262c57600080fd5b81358181111561263e5761263e61252e565b61266e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612586565b9150808252868482850101111561268457600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156126b557600080fd5b823567ffffffffffffffff808211156126cd57600080fd5b818501915085601f8301126126e157600080fd5b8135818111156126f3576126f361252e565b8060051b612702858201612586565b918252838101850191858101908984111561271c57600080fd5b86860192505b838310156127585782358581111561273a5760008081fd5b6127488b89838a01016125d5565b8352509186019190860190612722565b9998505050505050505050565b60006040828403121561277757600080fd5b50919050565b803563ffffffff8116811461208957600080fd5b60008082840360808112156127a557600080fd5b60608112156127b357600080fd5b506040516060810181811067ffffffffffffffff821117156127d7576127d761252e565b6040526127e38461277d565b81526127f16020850161277d565b60208201526128026040850161277d565b6040820152946060939093013593505050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561251c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f36836125d5565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220e9c8a42ebc6b9460007d52351fe4fbb996021504975aa18622d8de43db03e1d664736f6c634300080a0033"; type VerifyConstructorParams = | [signer?: Signer] diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index d645773..00a3f77 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -12,34 +12,6 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { - getContractFactory( - name: "SSTORE2", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "Bytecode", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "Factory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ITier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "OwnableUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC2981Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -60,34 +32,10 @@ declare module "hardhat/types/runtime" { name: "IERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC721Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721MetadataUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721ReceiverUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ContextUpgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "AccessControl", signerOrOptions?: ethers.Signer | FactoryOptions @@ -128,6 +76,10 @@ declare module "hardhat/types/runtime" { name: "ERC20Burnable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ERC20Snapshot", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IERC20Metadata", signerOrOptions?: ethers.Signer | FactoryOptions @@ -184,6 +136,10 @@ declare module "hardhat/types/runtime" { name: "ERC20Redeem", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "IERC4626", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "RedeemableERC20ClaimEscrow", signerOrOptions?: ethers.Signer | FactoryOptions @@ -212,14 +168,6 @@ declare module "hardhat/types/runtime" { name: "Phased", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "GatedNFT", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "GatedNFTFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "RedeemableERC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -240,6 +188,14 @@ declare module "hardhat/types/runtime" { name: "SaleFactory", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "SSTORE2", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Bytecode", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "Stake", signerOrOptions?: ethers.Signer | FactoryOptions @@ -256,6 +212,10 @@ declare module "hardhat/types/runtime" { name: "ERC20PulleeTest", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "FixedPointMathTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "FnPtrsTest", signerOrOptions?: ethers.Signer | FactoryOptions @@ -273,13 +233,13 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "RedeemableERC20Reentrant", + name: "ReadWriteTier", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ReserveNFT", + name: "RedeemableERC20Reentrant", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "ReserveToken", signerOrOptions?: ethers.Signer | FactoryOptions @@ -292,6 +252,10 @@ declare module "hardhat/types/runtime" { name: "ReserveTokenERC1155", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ReserveTokenERC20Snapshot", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ReserveTokenERC721", signerOrOptions?: ethers.Signer | FactoryOptions @@ -329,9 +293,9 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "ValueTierTest", + name: "TierV2Test", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "CombineTier", signerOrOptions?: ethers.Signer | FactoryOptions @@ -341,45 +305,13 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "ERC20BalanceTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC20BalanceTierFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC20TransferTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC20TransferTierFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC721BalanceTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ERC721BalanceTierFactory", + name: "ITierV2", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "ITier", + name: "TierV2", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ReadOnlyTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ReadWriteTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ValueTier", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( name: "VerifyTier", signerOrOptions?: ethers.Signer | FactoryOptions @@ -413,41 +345,6 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractAt( - name: "SSTORE2", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "Bytecode", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "Factory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ITier", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "OwnableUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC2981Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "Initializable", address: string, @@ -473,41 +370,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC721Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721MetadataUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721ReceiverUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ContextUpgradeable", address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC165Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC165Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "AccessControl", address: string, @@ -558,6 +425,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ERC20Snapshot", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IERC20Metadata", address: string, @@ -628,6 +500,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "IERC4626", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "RedeemableERC20ClaimEscrow", address: string, @@ -663,16 +540,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "GatedNFT", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "GatedNFTFactory", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "RedeemableERC20", address: string, @@ -698,6 +565,16 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "SSTORE2", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Bytecode", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "Stake", address: string, @@ -718,6 +595,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "FixedPointMathTest", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "FnPtrsTest", address: string, @@ -739,15 +621,15 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "RedeemableERC20Reentrant", + name: "ReadWriteTier", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ReserveNFT", + name: "RedeemableERC20Reentrant", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "ReserveToken", address: string, @@ -763,6 +645,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ReserveTokenERC20Snapshot", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ReserveTokenERC721", address: string, @@ -809,10 +696,10 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "ValueTierTest", + name: "TierV2Test", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "CombineTier", address: string, @@ -824,55 +711,15 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "ERC20BalanceTier", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC20BalanceTierFactory", + name: "ITierV2", address: string, signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC20TransferTier", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC20TransferTierFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC721BalanceTier", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ERC721BalanceTierFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ITier", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ReadOnlyTier", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ReadWriteTier", - address: string, - signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( - name: "ValueTier", + name: "TierV2", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "VerifyTier", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 4fbc531..627d5d1 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,25 +1,12 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { SSTORE2 } from "./SSTORE2"; -export type { Bytecode } from "./Bytecode"; -export type { Factory } from "./Factory"; -export type { IFactory } from "./IFactory"; -export type { ITier } from "./ITier"; -export type { OwnableUpgradeable } from "./OwnableUpgradeable"; -export type { IERC2981Upgradeable } from "./IERC2981Upgradeable"; export type { Initializable } from "./Initializable"; export type { ERC20Upgradeable } from "./ERC20Upgradeable"; export type { ERC20BurnableUpgradeable } from "./ERC20BurnableUpgradeable"; export type { IERC20MetadataUpgradeable } from "./IERC20MetadataUpgradeable"; export type { IERC20Upgradeable } from "./IERC20Upgradeable"; -export type { ERC721Upgradeable } from "./ERC721Upgradeable"; -export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; -export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; -export type { IERC721Upgradeable } from "./IERC721Upgradeable"; export type { ContextUpgradeable } from "./ContextUpgradeable"; -export type { ERC165Upgradeable } from "./ERC165Upgradeable"; -export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; export type { ERC1155 } from "./ERC1155"; @@ -29,6 +16,7 @@ export type { IERC1155 } from "./IERC1155"; export type { IERC1155Receiver } from "./IERC1155Receiver"; export type { ERC20 } from "./ERC20"; export type { ERC20Burnable } from "./ERC20Burnable"; +export type { ERC20Snapshot } from "./ERC20Snapshot"; export type { IERC20Metadata } from "./IERC20Metadata"; export type { IERC20 } from "./IERC20"; export type { ERC721 } from "./ERC721"; @@ -43,31 +31,36 @@ export type { EmissionsERC20Factory } from "./EmissionsERC20Factory"; export type { IClaim } from "./IClaim"; export type { Cooldown } from "./Cooldown"; export type { ERC20Redeem } from "./ERC20Redeem"; +export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; +export type { Factory } from "./Factory"; +export type { IFactory } from "./IFactory"; export type { NoticeBoard } from "./NoticeBoard"; export type { OrderBook } from "./OrderBook"; export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; export type { Phased } from "./Phased"; -export type { GatedNFT } from "./GatedNFT"; -export type { GatedNFTFactory } from "./GatedNFTFactory"; export type { RedeemableERC20 } from "./RedeemableERC20"; export type { RedeemableERC20Factory } from "./RedeemableERC20Factory"; export type { ISale } from "./ISale"; export type { Sale } from "./Sale"; export type { SaleFactory } from "./SaleFactory"; +export type { SSTORE2 } from "./SSTORE2"; +export type { Bytecode } from "./Bytecode"; export type { Stake } from "./Stake"; export type { StakeFactory } from "./StakeFactory"; export type { AllStandardOpsTest } from "./AllStandardOpsTest"; export type { ERC20PulleeTest } from "./ERC20PulleeTest"; +export type { FixedPointMathTest } from "./FixedPointMathTest"; export type { FnPtrsTest } from "./FnPtrsTest"; export type { MockISale } from "./MockISale"; export type { PhasedScheduleTest } from "./PhasedScheduleTest"; export type { PhasedTest } from "./PhasedTest"; +export type { ReadWriteTier } from "./ReadWriteTier"; export type { RedeemableERC20Reentrant } from "./RedeemableERC20Reentrant"; -export type { ReserveNFT } from "./ReserveNFT"; export type { ReserveToken } from "./ReserveToken"; export type { ReserveToken18 } from "./ReserveToken18"; export type { ReserveTokenERC1155 } from "./ReserveTokenERC1155"; +export type { ReserveTokenERC20Snapshot } from "./ReserveTokenERC20Snapshot"; export type { ReserveTokenERC721 } from "./ReserveTokenERC721"; export type { ReserveTokenTest } from "./ReserveTokenTest"; export type { SaleReentrant } from "./SaleReentrant"; @@ -77,18 +70,11 @@ export type { VerifyCallbackTest } from "./VerifyCallbackTest"; export type { RedeemableERC20ClaimEscrowWrapper } from "./RedeemableERC20ClaimEscrowWrapper"; export type { SaleEscrowWrapper } from "./SaleEscrowWrapper"; export type { TierReportTest } from "./TierReportTest"; -export type { ValueTierTest } from "./ValueTierTest"; +export type { TierV2Test } from "./TierV2Test"; export type { CombineTier } from "./CombineTier"; export type { CombineTierFactory } from "./CombineTierFactory"; -export type { ERC20BalanceTier } from "./ERC20BalanceTier"; -export type { ERC20BalanceTierFactory } from "./ERC20BalanceTierFactory"; -export type { ERC20TransferTier } from "./ERC20TransferTier"; -export type { ERC20TransferTierFactory } from "./ERC20TransferTierFactory"; -export type { ERC721BalanceTier } from "./ERC721BalanceTier"; -export type { ERC721BalanceTierFactory } from "./ERC721BalanceTierFactory"; -export type { ReadOnlyTier } from "./ReadOnlyTier"; -export type { ReadWriteTier } from "./ReadWriteTier"; -export type { ValueTier } from "./ValueTier"; +export type { ITierV2 } from "./ITierV2"; +export type { TierV2 } from "./TierV2"; export type { VerifyTier } from "./VerifyTier"; export type { VerifyTierFactory } from "./VerifyTierFactory"; export type { IVerifyCallback } from "./IVerifyCallback"; @@ -98,25 +84,12 @@ export type { AllStandardOpsStateBuilder } from "./AllStandardOpsStateBuilder"; export type { RainVM } from "./RainVM"; export type { VMStateBuilder } from "./VMStateBuilder"; -export { SSTORE2__factory } from "./factories/SSTORE2__factory"; -export { Bytecode__factory } from "./factories/Bytecode__factory"; -export { Factory__factory } from "./factories/Factory__factory"; -export { IFactory__factory } from "./factories/IFactory__factory"; -export { ITier__factory } from "./factories/ITier__factory"; -export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; -export { IERC2981Upgradeable__factory } from "./factories/IERC2981Upgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; export { ERC20Upgradeable__factory } from "./factories/ERC20Upgradeable__factory"; export { ERC20BurnableUpgradeable__factory } from "./factories/ERC20BurnableUpgradeable__factory"; export { IERC20MetadataUpgradeable__factory } from "./factories/IERC20MetadataUpgradeable__factory"; export { IERC20Upgradeable__factory } from "./factories/IERC20Upgradeable__factory"; -export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; -export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; -export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; -export { IERC721Upgradeable__factory } from "./factories/IERC721Upgradeable__factory"; export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; -export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; -export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { ERC1155__factory } from "./factories/ERC1155__factory"; @@ -126,6 +99,7 @@ export { IERC1155__factory } from "./factories/IERC1155__factory"; export { IERC1155Receiver__factory } from "./factories/IERC1155Receiver__factory"; export { ERC20__factory } from "./factories/ERC20__factory"; export { ERC20Burnable__factory } from "./factories/ERC20Burnable__factory"; +export { ERC20Snapshot__factory } from "./factories/ERC20Snapshot__factory"; export { IERC20Metadata__factory } from "./factories/IERC20Metadata__factory"; export { IERC20__factory } from "./factories/IERC20__factory"; export { ERC721__factory } from "./factories/ERC721__factory"; @@ -140,31 +114,36 @@ export { EmissionsERC20Factory__factory } from "./factories/EmissionsERC20Factor export { IClaim__factory } from "./factories/IClaim__factory"; export { Cooldown__factory } from "./factories/Cooldown__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; +export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; +export { Factory__factory } from "./factories/Factory__factory"; +export { IFactory__factory } from "./factories/IFactory__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; export { OrderBook__factory } from "./factories/OrderBook__factory"; export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; export { Phased__factory } from "./factories/Phased__factory"; -export { GatedNFT__factory } from "./factories/GatedNFT__factory"; -export { GatedNFTFactory__factory } from "./factories/GatedNFTFactory__factory"; export { RedeemableERC20__factory } from "./factories/RedeemableERC20__factory"; export { RedeemableERC20Factory__factory } from "./factories/RedeemableERC20Factory__factory"; export { ISale__factory } from "./factories/ISale__factory"; export { Sale__factory } from "./factories/Sale__factory"; export { SaleFactory__factory } from "./factories/SaleFactory__factory"; +export { SSTORE2__factory } from "./factories/SSTORE2__factory"; +export { Bytecode__factory } from "./factories/Bytecode__factory"; export { Stake__factory } from "./factories/Stake__factory"; export { StakeFactory__factory } from "./factories/StakeFactory__factory"; export { AllStandardOpsTest__factory } from "./factories/AllStandardOpsTest__factory"; export { ERC20PulleeTest__factory } from "./factories/ERC20PulleeTest__factory"; +export { FixedPointMathTest__factory } from "./factories/FixedPointMathTest__factory"; export { FnPtrsTest__factory } from "./factories/FnPtrsTest__factory"; export { MockISale__factory } from "./factories/MockISale__factory"; export { PhasedScheduleTest__factory } from "./factories/PhasedScheduleTest__factory"; export { PhasedTest__factory } from "./factories/PhasedTest__factory"; +export { ReadWriteTier__factory } from "./factories/ReadWriteTier__factory"; export { RedeemableERC20Reentrant__factory } from "./factories/RedeemableERC20Reentrant__factory"; -export { ReserveNFT__factory } from "./factories/ReserveNFT__factory"; export { ReserveToken__factory } from "./factories/ReserveToken__factory"; export { ReserveToken18__factory } from "./factories/ReserveToken18__factory"; export { ReserveTokenERC1155__factory } from "./factories/ReserveTokenERC1155__factory"; +export { ReserveTokenERC20Snapshot__factory } from "./factories/ReserveTokenERC20Snapshot__factory"; export { ReserveTokenERC721__factory } from "./factories/ReserveTokenERC721__factory"; export { ReserveTokenTest__factory } from "./factories/ReserveTokenTest__factory"; export { SaleReentrant__factory } from "./factories/SaleReentrant__factory"; @@ -174,18 +153,11 @@ export { VerifyCallbackTest__factory } from "./factories/VerifyCallbackTest__fac export { RedeemableERC20ClaimEscrowWrapper__factory } from "./factories/RedeemableERC20ClaimEscrowWrapper__factory"; export { SaleEscrowWrapper__factory } from "./factories/SaleEscrowWrapper__factory"; export { TierReportTest__factory } from "./factories/TierReportTest__factory"; -export { ValueTierTest__factory } from "./factories/ValueTierTest__factory"; +export { TierV2Test__factory } from "./factories/TierV2Test__factory"; export { CombineTier__factory } from "./factories/CombineTier__factory"; export { CombineTierFactory__factory } from "./factories/CombineTierFactory__factory"; -export { ERC20BalanceTier__factory } from "./factories/ERC20BalanceTier__factory"; -export { ERC20BalanceTierFactory__factory } from "./factories/ERC20BalanceTierFactory__factory"; -export { ERC20TransferTier__factory } from "./factories/ERC20TransferTier__factory"; -export { ERC20TransferTierFactory__factory } from "./factories/ERC20TransferTierFactory__factory"; -export { ERC721BalanceTier__factory } from "./factories/ERC721BalanceTier__factory"; -export { ERC721BalanceTierFactory__factory } from "./factories/ERC721BalanceTierFactory__factory"; -export { ReadOnlyTier__factory } from "./factories/ReadOnlyTier__factory"; -export { ReadWriteTier__factory } from "./factories/ReadWriteTier__factory"; -export { ValueTier__factory } from "./factories/ValueTier__factory"; +export { ITierV2__factory } from "./factories/ITierV2__factory"; +export { TierV2__factory } from "./factories/TierV2__factory"; export { VerifyTier__factory } from "./factories/VerifyTier__factory"; export { VerifyTierFactory__factory } from "./factories/VerifyTierFactory__factory"; export { IVerifyCallback__factory } from "./factories/IVerifyCallback__factory"; diff --git a/yarn.lock b/yarn.lock index ec600d7..c192783 100644 --- a/yarn.lock +++ b/yarn.lock @@ -748,18 +748,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.17.12" -"@babel/plugin-transform-runtime@^7.5.5": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.5.tgz#f4d3188ba6a8815793993c71c2c225d0ee1d7743" - integrity sha512-Q17hHxXr2fplrE+5BSC1j1Fo5cOA8YeP8XW3/1paI8MzF/faZGh0MaH1KC4jLAvqLPamQWHB5/B7KqSLY1kuHA== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" - semver "^6.3.0" - "@babel/plugin-transform-shorthand-properties@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" @@ -911,7 +899,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.18.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== @@ -956,37 +944,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@beehiveinnovation/balancer-core@0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@beehiveinnovation/balancer-core/-/balancer-core-0.0.7.tgz#4e2d3c7d2d27c26051e6153444df028568067886" - integrity sha512-BvaST8WKnaMKus4B7bii+3pQkV2o1dJ/O0ibrjOsHSGKMruDGpe7rp8UFqjfQCmtIVohIRGX0eXyDrUiXNCX0Q== - dependencies: - decimal.js "^10.2.0" - ganache-cli "^6.7.0" - global "^4.4.0" - -"@beehiveinnovation/configurable-rights-pool@0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@beehiveinnovation/configurable-rights-pool/-/configurable-rights-pool-0.0.1.tgz#e7c2a4a80771636703be2a34e51fccf1fc2a0373" - integrity sha512-12lNX2I7STxYpHhdgnvrp6mHQh7iDD4ZMnTpEL0/rHt4KUfeexRCXReVCH5jWmmaVEmyLe7+197wzukllUaW4w== - dependencies: - "@truffle/hdwallet-provider" "^1.0.43" - decimal.js "^10.2.0" - dotenv "^8.2.0" - ethers "^4.0.40" - ganache-cli "^6.7.0" - truffle-plugin-verify "^0.4.0" - yarn "^1.22.5" - -"@beehiveinnovation/rain-protocol@beehive-innovation/rain-protocol#develop": - version "0.0.16" - resolved "https://codeload.github.com/beehive-innovation/rain-protocol/tar.gz/760e43f0ccc6b51b858c09e3e64f4409d09d1d4f" - dependencies: - "@beehiveinnovation/balancer-core" "0.0.7" - "@beehiveinnovation/configurable-rights-pool" "0.0.1" - "@openzeppelin/contracts" "^4.3.3" - "@openzeppelin/contracts-upgradeable" "^4.4.1" - "@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c": version "0.0.16" resolved "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c" @@ -994,15 +951,6 @@ "@openzeppelin/contracts" "^4.3.3" "@openzeppelin/contracts-upgradeable" "^4.4.1" -"@beehiveinnovation/rain-statusfi@git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258": - version "0.0.1" - resolved "git+https://github.com/beehive-innovation/rain-statusfi.git#499b0a05e0bea8685dcd3b4b03af7da91fd31258" - dependencies: - "@beehiveinnovation/rain-protocol" beehive-innovation/rain-protocol#develop - "@openzeppelin/contracts" "^4.4.2" - "@openzeppelin/contracts-upgradeable" "^4.4.2" - base64-sol "^1.1.0" - "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1113,7 +1061,7 @@ lru-cache "^5.1.1" semaphore-async-await "^1.5.1" -"@ethereumjs/common@^2.4.0", "@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": +"@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": version "2.6.4" resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== @@ -1132,7 +1080,7 @@ ethereumjs-util "^7.1.1" miller-rabin "^4.0.0" -"@ethereumjs/tx@^3.3.0", "@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": +"@ethereumjs/tx@^3.5.1", "@ethereumjs/tx@^3.5.2": version "3.5.2" resolved "https://registry.yarnpkg.com/@ethereumjs/tx/-/tx-3.5.2.tgz#197b9b6299582ad84f9527ca961466fce2296c1c" integrity sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw== @@ -1955,12 +1903,12 @@ chalk "^4.1.0" tslib "^2.3.1" -"@openzeppelin/contracts-upgradeable@^4.4.1", "@openzeppelin/contracts-upgradeable@^4.4.2": +"@openzeppelin/contracts-upgradeable@^4.4.1": version "4.6.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz#1bf55f230f008554d4c6fe25eb165b85112108b0" integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== -"@openzeppelin/contracts@^4.3.3", "@openzeppelin/contracts@^4.4.2": +"@openzeppelin/contracts@^4.3.3": version "4.6.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== @@ -2367,98 +2315,6 @@ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== -"@truffle/hdwallet-provider@^1.0.43": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@truffle/hdwallet-provider/-/hdwallet-provider-1.7.0.tgz#5cfa8bc67c2a30b3943d3dab78f74c6a191cde02" - integrity sha512-nT7BPJJ2jPCLJc5uZdVtRnRMny5he5d3kO9Hi80ZSqe5xlnK905grBptM/+CwOfbeqHKQirI1btwm6r3wIBM8A== - dependencies: - "@ethereumjs/common" "^2.4.0" - "@ethereumjs/tx" "^3.3.0" - "@trufflesuite/web3-provider-engine" "15.0.14" - eth-sig-util "^3.0.1" - ethereum-cryptography "^0.1.3" - ethereum-protocol "^1.0.1" - ethereumjs-util "^6.1.0" - ethereumjs-wallet "^1.0.1" - -"@trufflesuite/eth-json-rpc-filters@^4.1.2-1": - version "4.1.2-1" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz#61ab78c52e98a883e5cf086925b34a30297b1824" - integrity sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ== - dependencies: - "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-0" - await-semaphore "^0.1.3" - eth-query "^2.1.2" - json-rpc-engine "^5.1.3" - lodash.flatmap "^4.5.0" - safe-event-emitter "^1.0.1" - -"@trufflesuite/eth-json-rpc-infura@^4.0.3-0": - version "4.0.3-0" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz#6d22122937cf60ec9d21a02351c101fdc608c4fe" - integrity sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw== - dependencies: - "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" - cross-fetch "^2.1.1" - eth-json-rpc-errors "^1.0.1" - json-rpc-engine "^5.1.3" - -"@trufflesuite/eth-json-rpc-middleware@^4.4.2-0", "@trufflesuite/eth-json-rpc-middleware@^4.4.2-1": - version "4.4.2-1" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz#8c3638ed8a7ed89a1e5e71407de068a65bef0df2" - integrity sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA== - dependencies: - "@trufflesuite/eth-sig-util" "^1.4.2" - btoa "^1.2.1" - clone "^2.1.1" - eth-json-rpc-errors "^1.0.1" - eth-query "^2.1.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.7" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.6.0" - fetch-ponyfill "^4.0.0" - json-rpc-engine "^5.1.3" - json-stable-stringify "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -"@trufflesuite/eth-sig-util@^1.4.2": - version "1.4.2" - resolved "https://registry.yarnpkg.com/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz#b529e2f38ac08e652116f48981132a26242a4f08" - integrity sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^5.1.1" - -"@trufflesuite/web3-provider-engine@15.0.14": - version "15.0.14" - resolved "https://registry.yarnpkg.com/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.14.tgz#8f9696f434585cc0ab2e57c312090c1f138bc471" - integrity sha512-6/LoWvNMxYf0oaYzJldK2a9AdnkAdIeJhHW4nuUBAeO29eK9xezEaEYQ0ph1QRTaICxGxvn+1Azp4u8bQ8NEZw== - dependencies: - "@ethereumjs/tx" "^3.3.0" - "@trufflesuite/eth-json-rpc-filters" "^4.1.2-1" - "@trufflesuite/eth-json-rpc-infura" "^4.0.3-0" - "@trufflesuite/eth-json-rpc-middleware" "^4.4.2-1" - "@trufflesuite/eth-sig-util" "^1.4.2" - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^4.4.2" - eth-json-rpc-errors "^2.0.2" - ethereumjs-block "^1.2.2" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-stable-stringify "^1.0.1" - promise-to-callback "^1.0.0" - readable-stream "^2.2.9" - request "^2.85.0" - semaphore "^1.0.3" - ws "^5.1.1" - xhr "^2.2.0" - xtend "^4.0.1" - "@trysound/sax@0.2.0": version "0.2.0" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" @@ -2900,15 +2756,6 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@vishalkale15107/rain-protocol@git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b": - version "0.0.16" - resolved "git+https://github.com/vishalkale151071/rain-protocol.git#3d0ee716430d28716365f0f1c999fe14c30f0b4b" - dependencies: - "@beehiveinnovation/balancer-core" "0.0.7" - "@beehiveinnovation/configurable-rights-pool" "0.0.1" - "@openzeppelin/contracts" "^4.3.3" - "@openzeppelin/contracts-upgradeable" "^4.4.1" - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -3168,7 +3015,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== -aes-js@^3.1.1, aes-js@^3.1.2: +aes-js@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== @@ -3249,7 +3096,7 @@ ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0, ansi-regex@^2.1.1: +ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== @@ -3293,7 +3140,7 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -antlr4ts@^0.5.0-alpha.3, antlr4ts@^0.5.0-alpha.4: +antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== @@ -3525,11 +3372,6 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -await-semaphore@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/await-semaphore/-/await-semaphore-0.1.3.tgz#2b88018cc8c28e06167ae1cdff02504f1f9688d3" - integrity sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q== - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -3545,13 +3387,6 @@ axe-core@^4.3.5: resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== -axios@0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== - dependencies: - follow-redirects "1.5.10" - axobject-query@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be" @@ -4235,11 +4070,6 @@ base64-js@^1.3.1: resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -base64-sol@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/base64-sol/-/base64-sol-1.1.0.tgz#39c3c91a35790b6eb3b8e73114b46bacf0fc2865" - integrity sha512-mksLxtFyBcXd3LYK5UxyMj29YR//zoaeXpJaKRbnLQC0E99oCJl7VpKaJDXWAuTvnhxBU9XNYzhxSL8umsrxWg== - base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -4483,11 +4313,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -4621,7 +4446,7 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -4796,11 +4621,6 @@ circular-json@^0.3.1: resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== -circular@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/circular/-/circular-1.0.5.tgz#7da77af98bbde9ce4b5b358cd556b5dded2d3149" - integrity sha512-n4Sspha+wxUl5zeA3JYp1zFCjsLz2VfXIe2gRKNQBrIX+7iPdGcCGZOF8W8IULtllZ/aejXtySfdFFt1wy/3JQ== - cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" @@ -4833,18 +4653,6 @@ clean-stack@^3.0.0: dependencies: escape-string-regexp "4.0.0" -cli-color@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/cli-color/-/cli-color-1.4.0.tgz#7d10738f48526824f8fe7da51857cb0f572fe01f" - integrity sha512-xu6RvQqqrWEo6MPR1eixqGPywhYBHRs653F9jfXB2Hx4jdM/3WxiNE1vppRmxtMIfl16SFYTpYlrnqH/HsK/2w== - dependencies: - ansi-regex "^2.1.1" - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - memoizee "^0.4.14" - timers-ext "^0.1.5" - cli-cursor@^2.0.0, cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -4859,19 +4667,6 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" -cli-logger@0.5.40: - version "0.5.40" - resolved "https://registry.yarnpkg.com/cli-logger/-/cli-logger-0.5.40.tgz#097f0e11b072c7c698a26c47f588a29c20b48b0b" - integrity sha512-piXVCa0TLm/+A7xdVEhw7t4OSrsmJaZIekWcoGrVMY1bHtLJTXgiNzgHlKT0EVHQ14sCKWorQJazU7UWgZhXOQ== - dependencies: - circular "^1.0.5" - cli-util "~1.1.27" - -cli-regexp@~0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/cli-regexp/-/cli-regexp-0.1.2.tgz#6bcd93b09fb2ed1025d30a1155d5997954a53512" - integrity sha512-L++cAQ5g0Nu6aV56B3uaR+c7jEGSAa4WApY1ZN7XiD8niJ5jRfXE/qvMwgz3uZBG0rft4hJS75Vpz2F3mSm4Mg== - cli-spinners@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" @@ -4882,13 +4677,6 @@ cli-spinners@^2.2.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -cli-util@~1.1.27: - version "1.1.27" - resolved "https://registry.yarnpkg.com/cli-util/-/cli-util-1.1.27.tgz#42d69e36a040a321fc9cf851c1513cadc5093054" - integrity sha512-Z6+zI0kIrqf9Oi+PmUm8J9AELp8bTf2vCLYseudYtdOPNJvzpNiExO95aHIm477IbPdu/8SE9Wvc/M1kJl4Anw== - dependencies: - cli-regexp "~0.1.0" - cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -4908,15 +4696,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" - integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== - dependencies: - string-width "^3.1.0" - strip-ansi "^5.2.0" - wrap-ansi "^5.1.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -4933,7 +4712,7 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: +clone@2.1.2, clone@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w== @@ -5051,11 +4830,6 @@ commander@^2.20.0, commander@^2.20.3: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" @@ -5245,7 +5019,7 @@ cross-fetch@^2.1.0, cross-fetch@^2.1.1: node-fetch "^2.6.7" whatwg-fetch "^2.0.4" -cross-spawn@^6.0.0, cross-spawn@^6.0.5: +cross-spawn@^6.0.5: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== @@ -5482,13 +5256,6 @@ debug@4.3.3: dependencies: ms "2.1.2" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -5496,7 +5263,7 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -5506,7 +5273,7 @@ decamelize@^4.0.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -decimal.js@^10.2.0, decimal.js@^10.2.1: +decimal.js@^10.2.1: version "10.3.1" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== @@ -5649,11 +5416,6 @@ deglob@^2.1.0: run-parallel "^1.1.2" uniq "^1.0.1" -delay@4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-4.3.0.tgz#efeebfb8f545579cb396b3a722443ec96d14c50e" - integrity sha512-Lwaf3zVFDMBop1yDuFZ19F9WyGcZcGacsbdlZtWjQmM50tOcMntm1njF/Nb/Vjij3KaSvCF+sEYGKrrjObu2NA== - delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -5789,11 +5551,6 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" -dotenv@^8.2.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== - dotignore@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" @@ -5996,7 +5753,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50, es5-ext@^0.10.53, es5-ext@~0.10.14, es5-ext@~0.10.2, es5-ext@~0.10.46: +es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.61" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.61.tgz#311de37949ef86b6b0dcea894d1ffedb909d3269" integrity sha512-yFhIqQAzu2Ca2I4SE2Au3rxVfmohU9Y7wqGR+s7+H7krk26NXhIRAZDgqd6xqjCEFUomDEA3/Bo/7fKmIkW1kA== @@ -6022,16 +5779,6 @@ es6-symbol@^3.1.1, es6-symbol@^3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -6454,18 +6201,6 @@ eth-block-tracker@^3.0.0: pify "^2.3.0" tape "^4.6.3" -eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== - dependencies: - "@babel/plugin-transform-runtime" "^7.5.5" - "@babel/runtime" "^7.5.5" - eth-query "^2.1.0" - json-rpc-random-id "^1.0.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -6474,20 +6209,6 @@ eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -eth-json-rpc-errors@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" - integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-errors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" - integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== - dependencies: - fast-safe-stringify "^2.0.6" - eth-json-rpc-infura@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" @@ -6546,13 +6267,6 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - eth-sig-util@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" @@ -6573,16 +6287,6 @@ eth-sig-util@^1.4.2: ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" ethereumjs-util "^5.1.1" -eth-sig-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.1.tgz#8753297c83a3f58346bd13547b59c4b2cd110c96" - integrity sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ== - dependencies: - ethereumjs-abi "^0.6.8" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.3" - tweetnacl-util "^0.15.0" - eth-tx-summary@^3.1.2: version "3.2.4" resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" @@ -6647,11 +6351,6 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-protocol@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz#b7d68142f4105e0ae7b5e178cf42f8d4dc4b93cf" - integrity sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg== - ethereum-waffle@^3.4.0: version "3.4.4" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" @@ -6760,7 +6459,7 @@ ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -6805,7 +6504,7 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.2, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: +ethereumjs-util@^7.0.2, ethereumjs-util@^7.1.0, ethereumjs-util@^7.1.1, ethereumjs-util@^7.1.4, ethereumjs-util@^7.1.5: version "7.1.5" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== @@ -6869,35 +6568,6 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" -ethereumjs-wallet@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-1.0.2.tgz#2c000504b4c71e8f3782dabe1113d192522e99b6" - integrity sha512-CCWV4RESJgRdHIvFciVQFnCHfqyhXWchTPlkfp28Qc53ufs+doi5I/cV2+xeK9+qEo25XCWfP9MiL+WEPAZfdA== - dependencies: - aes-js "^3.1.2" - bs58check "^2.1.2" - ethereum-cryptography "^0.1.3" - ethereumjs-util "^7.1.2" - randombytes "^2.1.0" - scrypt-js "^3.0.1" - utf8 "^3.0.0" - uuid "^8.3.2" - -ethers@^4.0.40: - version "4.0.49" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" - integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== - dependencies: - aes-js "3.0.0" - bn.js "^4.11.9" - elliptic "6.5.4" - hash.js "1.1.3" - js-sha3 "0.5.7" - scrypt-js "2.0.4" - setimmediate "1.0.4" - uuid "2.0.1" - xmlhttprequest "1.8.0" - ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: version "5.6.9" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" @@ -6950,14 +6620,6 @@ ethjs-util@0.1.6, ethjs-util@^0.1.3, ethjs-util@^0.1.6: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-emitter@^0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== - dependencies: - d "1" - es5-ext "~0.10.14" - event-target-shim@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" @@ -6981,19 +6643,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -execa@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" - integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== - dependencies: - cross-spawn "^6.0.0" - get-stream "^4.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - execa@^4.0.3: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" @@ -7196,11 +6845,6 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-safe-stringify@^2.0.6: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - fastq@^1.6.0: version "1.13.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" @@ -7333,13 +6977,6 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -7397,13 +7034,6 @@ flow-stoplight@^1.0.0: resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" integrity sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA== -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - follow-redirects@^1.12.1: version "1.15.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5" @@ -7471,7 +7101,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== -fs-extra@8.1.0, fs-extra@^8.0.1, fs-extra@^8.1: +fs-extra@8.1.0, fs-extra@^8.1: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== @@ -7561,15 +7191,6 @@ functions-have-names@^1.2.2: resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== -ganache-cli@^6.7.0: - version "6.12.2" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" - integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== - dependencies: - ethereumjs-util "6.2.1" - source-map-support "0.5.12" - yargs "13.2.4" - ganache-core@^2.13.2: version "2.13.2" resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" @@ -7617,7 +7238,7 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-caller-file@^2.0.1, get-caller-file@^2.0.5: +get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -7651,7 +7272,7 @@ get-stream@^3.0.0: resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ== -get-stream@^4.0.0, get-stream@^4.1.0: +get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== @@ -7726,7 +7347,7 @@ glob@^7.0.0, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, gl once "^1.3.0" path-is-absolute "^1.0.0" -global@^4.4.0, global@~4.4.0: +global@~4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== @@ -7994,14 +7615,6 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" -hash.js@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" - integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.0" - hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -8295,11 +7908,6 @@ invert-kv@^1.0.0: resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" integrity sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ== -invert-kv@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-2.0.0.tgz#7393f5afa59ec9ff5f67a27620d11c226e3eec02" - integrity sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA== - io-ts@1.10.4: version "1.10.4" resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" @@ -8556,11 +8164,6 @@ is-potential-custom-element-name@^1.0.1: resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== -is-promise@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - is-reference@^1.1.2: version "1.2.1" resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" @@ -8593,7 +8196,7 @@ is-shared-array-buffer@^1.0.2: dependencies: call-bind "^1.0.2" -is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: +is-stream@^1.0.0, is-stream@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ== @@ -9238,16 +8841,16 @@ jpjs@^1.2.1: resolved "https://registry.yarnpkg.com/jpjs/-/jpjs-1.2.1.tgz#f343833de8838a5beba1f42d5a219be0114c44b7" integrity sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw== -js-sha3@0.5.7, js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== - js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== +js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -9353,14 +8956,6 @@ json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: promise-to-callback "^1.0.0" safe-event-emitter "^1.0.1" -json-rpc-engine@^5.1.3: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" @@ -9368,7 +8963,7 @@ json-rpc-error@^2.0.0: dependencies: inherits "^2.0.1" -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: +json-rpc-random-id@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA== @@ -9562,13 +9157,6 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lcid@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lcid/-/lcid-2.0.0.tgz#6ef5d2df60e52f82eb228a4c373e8d1f397253cf" - integrity sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA== - dependencies: - invert-kv "^2.0.0" - level-codec@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" @@ -9833,14 +9421,6 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -9870,11 +9450,6 @@ lodash.debounce@^4.0.8: resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== -lodash.flatmap@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha512-/OcpcAGWlrZyoHGeHh3cAoa6nGdX6QYtmzNP84Jqol6UEQQ2gIaU3H+0eICcjcKGl0/XF8LWOujNn9lffsnaOg== - lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -9996,13 +9571,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -lru-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/lru-queue/-/lru-queue-0.1.0.tgz#2738bd9f0d3cf4f84490c5736c48699ac632cda3" - integrity sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ== - dependencies: - es5-ext "~0.10.2" - lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -10044,13 +9612,6 @@ makeerror@1.0.12: dependencies: tmpl "1.0.5" -map-age-cleaner@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" @@ -10096,15 +9657,6 @@ media-typer@0.3.0: resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== -mem@^4.0.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/mem/-/mem-4.3.0.tgz#461af497bc4ae09608cdb2e60eefb69bff744178" - integrity sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w== - dependencies: - map-age-cleaner "^0.1.1" - mimic-fn "^2.0.0" - p-is-promise "^2.0.0" - memdown@^1.0.0: version "1.4.1" resolved "https://registry.yarnpkg.com/memdown/-/memdown-1.4.1.tgz#b4e4e192174664ffbae41361aa500f3119efe215" @@ -10141,20 +9693,6 @@ memdown@~3.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memoizee@^0.4.14: - version "0.4.15" - resolved "https://registry.yarnpkg.com/memoizee/-/memoizee-0.4.15.tgz#e6f3d2da863f318d02225391829a6c5956555b72" - integrity sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ== - dependencies: - d "^1.0.1" - es5-ext "^0.10.53" - es6-weak-map "^2.0.3" - event-emitter "^0.3.5" - is-promise "^2.2.2" - lru-queue "^0.1.0" - next-tick "^1.1.0" - timers-ext "^0.1.7" - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" @@ -10276,7 +9814,7 @@ mimic-fn@^1.0.0: resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== -mimic-fn@^2.0.0, mimic-fn@^2.1.0: +mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== @@ -10530,7 +10068,7 @@ neo-async@^2.6.2: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -next-tick@1, next-tick@^1.1.0: +next-tick@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== @@ -10608,13 +10146,6 @@ normalize-url@^6.0.1: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== -npm-run-path@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" - integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw== - dependencies: - path-key "^2.0.0" - npm-run-path@^4.0.0, npm-run-path@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" @@ -10853,15 +10384,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-locale@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-3.1.0.tgz#a802a6ee17f24c10483ab9935719cef4ed16bf1a" - integrity sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q== - dependencies: - execa "^1.0.0" - lcid "^2.0.0" - mem "^4.0.0" - os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" @@ -10877,21 +10399,11 @@ p-cancelable@^1.0.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -p-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw== - p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== -p-is-promise@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" - integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -10899,7 +10411,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -10920,13 +10432,6 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -11105,7 +10610,7 @@ path-is-inside@^1.0.2: resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== -path-key@^2.0.0, path-key@^2.0.1: +path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== @@ -12053,11 +11558,6 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -12346,11 +11846,6 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" -scrypt-js@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" - integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== - scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -12495,11 +11990,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -setimmediate@1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" - integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== - setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -12560,7 +12050,7 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.2, signal-exit@^3.0.3: version "3.0.7" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== @@ -12658,19 +12148,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -sol-merger@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/sol-merger/-/sol-merger-3.1.0.tgz#547b282a616d106c0fa8869e0a275fd7db0213d8" - integrity sha512-4/JELeFlB8bcyqttRZ7pE/EGpevft9Q7IPjMaKLKMrj1exmdyt+1qSfuSXxueFXRZQxSd21u6DjEedDkOtQ5yQ== - dependencies: - antlr4ts "^0.5.0-alpha.3" - cli-color "^1.4.0" - commander "^4.0.1" - debug "^4.1.1" - fs-extra "^8.0.1" - glob "^7.1.2" - strip-json-comments "^3.0.1" - solc@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" @@ -12964,7 +12441,7 @@ string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0, string-width@^3.1.0: +string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -13056,7 +12533,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -13087,11 +12564,6 @@ strip-bom@^4.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== -strip-eof@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" - integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q== - strip-final-newline@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" @@ -13372,14 +12844,6 @@ timed-out@^4.0.0, timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -timers-ext@^0.1.5, timers-ext@^0.1.7: - version "0.1.7" - resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.7.tgz#6f57ad8578e07a3fb9f91d9387d65647555e25c6" - integrity sha512-b85NUNzTSdodShTIbky6ZF02e8STtVVfD+fu4aXXShEELpozH+bCpJLYMPZbsABN2wDH7fJpqIoXxJpzbf0NqQ== - dependencies: - es5-ext "~0.10.46" - next-tick "1" - timsort@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" @@ -13503,17 +12967,6 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== -truffle-plugin-verify@^0.4.0: - version "0.4.6" - resolved "https://registry.yarnpkg.com/truffle-plugin-verify/-/truffle-plugin-verify-0.4.6.tgz#3805c58f68a651905579588a6dda48ab764f7790" - integrity sha512-s+wjeTFThgMET+ZS6GFszpWY8iUe2rp1CT3c4BjFW4lcjauQ9uVSWZElWgAib7ACwmsczKyWiLEPZ8vVSy4hTw== - dependencies: - axios "0.19.2" - cli-logger "0.5.40" - delay "4.3.0" - querystring "0.2.0" - sol-merger "3.1.0" - ts-command-line-args@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz#b6188e42efc6cf7a8898e438a873fbb15505ddd6" @@ -14004,11 +13457,6 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== -uuid@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" - integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== - uuid@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -14513,11 +13961,6 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== - which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -14578,15 +14021,6 @@ wrap-ansi@^3.0.1: string-width "^2.1.1" strip-ansi "^4.0.0" -wrap-ansi@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" - integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== - dependencies: - ansi-styles "^3.2.0" - string-width "^3.0.0" - strip-ansi "^5.0.0" - wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -14707,11 +14141,6 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xmlhttprequest@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" - integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== - xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -14729,11 +14158,6 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -14769,14 +14193,6 @@ yargs-parser@20.x, yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -yargs-parser@^13.1.0: - version "13.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" - integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -14795,23 +14211,6 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@13.2.4: - version "13.2.4" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.2.4.tgz#0b562b794016eb9651b98bd37acf364aa5d6dc83" - integrity sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg== - dependencies: - cliui "^5.0.0" - find-up "^3.0.0" - get-caller-file "^2.0.1" - os-locale "^3.1.0" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^3.0.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^13.1.0" - yargs@16.2.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" @@ -14845,11 +14244,6 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yarn@^1.22.5: - version "1.22.19" - resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.19.tgz#4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" - integrity sha512-/0V5q0WbslqnwP91tirOvldvYISzaqhClxzyUKXYxs07yUILIs5jx/k6CFe8bvKSkds5w+eiOqta39Wk3WxdcQ== - yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" From ee971ace3aa55d9b205fdd5e886e7b06623bab89 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 16:36:05 -0400 Subject: [PATCH 010/125] combine tier args fix --- src/RainJS/RainJS.ts | 2 ++ src/contracts/tiers/combineTier.ts | 27 ++++++++++++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index a57ee4b..fe9e920 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -815,6 +815,8 @@ export class RainJS { this.signer ); state.stack.push( + // TODO: @rouzwelt + //@ts-ignore await iTierContract.report(account_,) ); } diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 0a082b7..f5a9fc1 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -2,7 +2,10 @@ import { Signer, BytesLike, BigNumberish } from 'ethers'; import { TierContract } from '../../classes/tierContract'; import { ReadTxOverrides, TxOverrides } from '../../classes/rainContract'; import { StateConfig, StorageOpcodesRange } from '../../classes/vm'; -import { CombineTierFactory__factory, CombineTier__factory } from '../../typechain'; +import { + CombineTierFactory__factory, + CombineTier__factory, +} from '../../typechain'; /** * @public @@ -13,14 +16,17 @@ import { CombineTierFactory__factory, CombineTier__factory } from '../../typecha * It will be built with the desired configuration for the CombineTier allowing to * customize the behavior of the Tier as needed and specified. */ -export type CombineTierDeployArgs = StateConfig; +export type CombineTierDeployArgs = { + combinedTiersLength: BigNumberish; + sourceConfig: StateConfig; +}; /** * Enum for operand of the combineTier's CONTEXT opcode */ - export enum CombineTierContext { +export enum CombineTierContext { /** - * 0 or the index of the context array in the combineTier + * 0 or the index of the context array in the combineTier * contract used as the operand for CONTEXT opcode. * operand for CONTEXT opcode to stack the account that report is being call for. */ @@ -28,7 +34,7 @@ export type CombineTierDeployArgs = StateConfig; /** * length of CombineTier's valid context opcodes */ - length + length, } /** @@ -38,7 +44,7 @@ export enum CombineTierStorage { /** * length of CombineTier's valid storage opcodes */ - length + length, } /** @@ -85,7 +91,6 @@ export class CombineTier extends TierContract { * @returns A new combineTier instance */ constructor(address: string, signer: Signer) { - CombineTier.checkAddress(address); super(address, signer); @@ -155,7 +160,7 @@ export class CombineTier extends TierContract { this.getBookAddress(await this.getChainId(signer)), signer ); - + const tx = await combineTierFactory.createChildTyped(args, overrides); const receipt = await tx.wait(); const address = this.getNewChildFromReceipt(receipt, combineTierFactory); @@ -180,7 +185,7 @@ export class CombineTier extends TierContract { /** * Pointers to opcode functions, necessary for being able to read the packedBytes - * + * * @param override - @see ReadTxOverrides * @returns the opcode functions pointers */ @@ -188,10 +193,10 @@ export class CombineTier extends TierContract { /** * Returns the pointer and length for combineTier's storage opcodes - * + * * @param override - @see ReadTxOverrides * @returns a StorageOpcodesRange - */ + */ public readonly storageOpcodesRange: ( overrides?: ReadTxOverrides ) => Promise; From 5776aff008b92086c005636d2cf7bca18e43ab74 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 18:14:25 -0400 Subject: [PATCH 011/125] update opcodes --- src/addresses.ts | 212 ++++++------ src/classes/vm.ts | 661 ++++++++++++++++++------------------- src/contracts/orderBook.ts | 164 +++++++++ src/contracts/stake.ts | 197 +++++++++++ src/index.ts | 3 + test/1_initSDK.test.ts | 122 +++---- test/utils.ts | 6 +- 7 files changed, 847 insertions(+), 518 deletions(-) create mode 100644 src/contracts/orderBook.ts create mode 100644 src/contracts/stake.ts diff --git a/src/addresses.ts b/src/addresses.ts index 3cfb93b..25288a4 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -16,16 +16,14 @@ export type Addresses = { redeemableERC20Factory: string; verifyFactory: string; verifyTierFactory: string; - erc20BalanceTierFactory: string; - erc20TransferTierFactory: string; combineTierFactory: string; - erc721BalanceTierFactory: string; - gatedNFTFactory: string; redeemableERC20ClaimEscrow: string; noticeBoard: string; emissionsERC20Factory: string; saleFactory: string; alwaysTier: string; + stakeFactory: string; + orderBook: string; }; const addressBook = [ @@ -35,20 +33,18 @@ const addressBook = [ */ chainId: 1, addresses: { - vmStateBuilder: "", - alwaysTier: '0x735ECdF9a79e62531BAB9240696a450F94AB79f8', - combineTierFactory: '0x36983711f9C4869F0B9BEb2Cf677814bb40d41c5', - erc20BalanceTierFactory: '0x50B2921A8c915A8228dA39e93AD9E9AA43fBc901', - erc20TransferTierFactory: '0xB681C35244a224Fcf8c4eeC0b139980705EdF4fE', - erc721BalanceTierFactory: '0x4Dd6BF4a433265D6B01Ae18E77Ef069Cb29a0790', - emissionsERC20Factory: '0xe7CE1aF1e174f1526EE3f10C0cb0E01E0e47FD4E', - gatedNFTFactory: '0x53f9810AF32AC48b04DEbc6e8f32fC245eB88cE5', - noticeBoard: '0x1C432FBb8cd10749F3A93a91AE01f1d08FA7569a', - redeemableERC20ClaimEscrow: '0x10DB4a5BB73150B1CEF945e90E4336b594D64DFb', - redeemableERC20Factory: '0xD2c0729dc1A7BbeF0a770bA7F9f2DbAE9A9e27D0', - saleFactory: '0x4dce23a63ec3f27193df8ba26141b25417815c62', - verifyFactory: '0x039Ab991616b3B473f3096D385b6660c846F646A', - verifyTierFactory: '0x4B2C45c3F393B803C57106C81e4E64Ce71914b8e', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, { @@ -57,20 +53,18 @@ const addressBook = [ */ chainId: 5, addresses: { - vmStateBuilder: "", - alwaysTier: '0x1Fcf1f92919F0E0023463234c78296E9517b56Ea', - combineTierFactory: '0x34A0946CEAD3417E629B2679D05C0A24d49a1eB4', - erc20BalanceTierFactory: '0xbA9Ce92a65e172ADd70A71B6E280D9941fb9185C', - erc20TransferTierFactory: '0xcF75a4bc22AD40D6DA6f57b5174D39D28bC85a96', - erc721BalanceTierFactory: '0xa76F06F09346141977cF652A1EDFD09D779AA22a', - emissionsERC20Factory: '0x586Fa008Ae3C1228B9E42452DfE04c99D7E97C35', - gatedNFTFactory: '0xE09f5c0bA8A3C59f3c7aFFB458058881413878a2', - noticeBoard: '0x25ACA096cbEF597Aa3B99CDD747805e58d1aea81', - redeemableERC20ClaimEscrow: '0x00DDE5505E0075C4bF7536d3d2014895D9cbE546', - redeemableERC20Factory: '0x16D33236D7Af17ca55E60EcE64e9F6CeD32Ba416', - saleFactory: '0xA54f23A7B650Ea510fCA651EAfc39BFA5a04010D', - verifyFactory: '0xa018eAB945De7e8073d1995284b78FC0cfE45B76', - verifyTierFactory: '0x333F9355Bc47A22f64ac5C5F3d7cC5408544851f', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, { @@ -79,20 +73,18 @@ const addressBook = [ */ chainId: 56, addresses: { - vmStateBuilder: "", - alwaysTier: '0x735ECdF9a79e62531BAB9240696a450F94AB79f8', - combineTierFactory: '0x36983711f9C4869F0B9BEb2Cf677814bb40d41c5', - erc20BalanceTierFactory: '0x50B2921A8c915A8228dA39e93AD9E9AA43fBc901', - erc20TransferTierFactory: '0xB681C35244a224Fcf8c4eeC0b139980705EdF4fE', - erc721BalanceTierFactory: '0x4Dd6BF4a433265D6B01Ae18E77Ef069Cb29a0790', - emissionsERC20Factory: '0xe7CE1aF1e174f1526EE3f10C0cb0E01E0e47FD4E', - gatedNFTFactory: '0x53f9810AF32AC48b04DEbc6e8f32fC245eB88cE5', - noticeBoard: '0x1C432FBb8cd10749F3A93a91AE01f1d08FA7569a', - redeemableERC20ClaimEscrow: '0x10db4a5bb73150b1cef945e90e4336b594d64dfb', - redeemableERC20Factory: '0xD2c0729dc1A7BbeF0a770bA7F9f2DbAE9A9e27D0', - saleFactory: '0x4dce23A63ec3f27193Df8bA26141b25417815C62', - verifyFactory: '0x039Ab991616b3B473f3096D385b6660c846F646A', - verifyTierFactory: '0x4B2C45c3F393B803C57106C81e4E64Ce71914b8e', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, { @@ -101,20 +93,18 @@ const addressBook = [ */ chainId: 97, addresses: { - vmStateBuilder: "", - alwaysTier: '0x735ECdF9a79e62531BAB9240696a450F94AB79f8', - combineTierFactory: '0x36983711f9C4869F0B9BEb2Cf677814bb40d41c5', - erc20BalanceTierFactory: '0x50B2921A8c915A8228dA39e93AD9E9AA43fBc901', - erc20TransferTierFactory: '0xB681C35244a224Fcf8c4eeC0b139980705EdF4fE', - erc721BalanceTierFactory: '0x4Dd6BF4a433265D6B01Ae18E77Ef069Cb29a0790', - emissionsERC20Factory: '0xe7CE1aF1e174f1526EE3f10C0cb0E01E0e47FD4E', - gatedNFTFactory: '0x53f9810AF32AC48b04DEbc6e8f32fC245eB88cE5', - noticeBoard: '0x1C432FBb8cd10749F3A93a91AE01f1d08FA7569a', - redeemableERC20ClaimEscrow: '0x10DB4a5BB73150B1CEF945e90E4336b594D64DFb', - redeemableERC20Factory: '0xD2c0729dc1A7BbeF0a770bA7F9f2DbAE9A9e27D0', - saleFactory: '0x4dce23A63ec3f27193Df8bA26141b25417815C62', - verifyFactory: '0x039Ab991616b3B473f3096D385b6660c846F646A', - verifyTierFactory: '0x4B2C45c3F393B803C57106C81e4E64Ce71914b8e', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, { @@ -123,20 +113,18 @@ const addressBook = [ */ chainId: 137, addresses: { - vmStateBuilder: "", - alwaysTier: '0xF81572101B3bD379ADFddCBF4d46f40268475A14', - combineTierFactory: '0xaB9D00F59A8C45b8b20F060D5F7d97FdDbA2De19', - erc20BalanceTierFactory: '0xcCFa697D85771B67826cB7E1F7535576fA91b6b1', - erc20TransferTierFactory: '0x807FBB1515fcFD5574b8d5FfA6e4b831d7897987', - erc721BalanceTierFactory: '0x095Cc7BcA08F2A9c1059DE30631aA94fF9fca623', - emissionsERC20Factory: '0xED4f245C7Afc8b52295d4045929bbdd6ba722Eaa', - gatedNFTFactory: '0x1965F5943F8a6C18C444fad09094aB6cFfBe3F4a', - noticeBoard: '0x790Bfb7C3E07805F9880ece979ee2f3E19f524C2', - redeemableERC20ClaimEscrow: '0x588BFaF31410240A1A780dbd7078485A7A65305A', - redeemableERC20Factory: '0x84A35D90D5181473662e67eFE6e2de350F9918d7', - saleFactory: '0x6ab3Dde1e33F64F294a8b55321d345724C85E0A4', - verifyFactory: '0xe68B2ce23d959bEe80d92b25271B767AE7A6A79D', - verifyTierFactory: '0xB827ae1cD6D27abd56070d196A7175E02e531A5d', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, { @@ -145,20 +133,18 @@ const addressBook = [ */ chainId: 31337, addresses: { - vmStateBuilder: "0x5FbDB2315678afecb367f032d93F642f64180aa3", + vmStateBuilder: '0x5FbDB2315678afecb367f032d93F642f64180aa3', alwaysTier: '0xBA12646CC07ADBe43F8bD25D83FB628D29C8A762', redeemableERC20Factory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', verifyFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', verifyTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', - erc20BalanceTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', - erc20TransferTierFactory: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', combineTierFactory: '0x0165878A594ca255338adfa4d48449f69242Eb8F', - erc721BalanceTierFactory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', - gatedNFTFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', redeemableERC20ClaimEscrow: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', noticeBoard: '0x610178dA211FEF7D417bC0e6FeD39F05609AD788', emissionsERC20Factory: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', saleFactory: '0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0', + stakeFactory: '', + orderBook: '', }, }, { @@ -167,20 +153,18 @@ const addressBook = [ */ chainId: 43113, addresses: { - vmStateBuilder: "", - alwaysTier: '0x3f16F26C6844be3d0934EC0543039d874D45da9e', - combineTierFactory: '0x4B8FC6f1f3f62099f4fb7151548b9c5226ceD76E', - erc20BalanceTierFactory: '0x724007CDD1689e43c6ef55b7032b93A1cC8C02C7', - erc20TransferTierFactory: '0xB28A191150D901cCFF849983E714d689Eb25e7eC', - erc721BalanceTierFactory: '0xFC870c970b34926ecf224e981caCdF21e963a084', - emissionsERC20Factory: '0x060974dd46c2dbB22Aa7a7AFE685880A4A7B34d2', - gatedNFTFactory: '0x1dBB0186c4805238FcA1c94e38479D3a5546722D', - noticeBoard: '0xCD2A879a770Df2Bbcc0f7496AA5105a4068Aa1e6', - redeemableERC20ClaimEscrow: '0x8a9B7B490Feb339640dA303c3602B6786061Da30', - redeemableERC20Factory: '0xff56cc9B3aC11Dbe1620865DC29FA2CcC4213C28', - saleFactory: '0x4E1742656F066470cbd68B50864E168D8054E90d', - verifyFactory: '0xBd9C59Cf73C0446341E8b1B532E9534A1E36501C', - verifyTierFactory: '0x2a72d7fcDD6C4640EF612a6523217Df67d34cf4b', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, { @@ -189,20 +173,18 @@ const addressBook = [ */ chainId: 80001, addresses: { - vmStateBuilder: "", - alwaysTier: '0x051dC03ba4d33eCC59Fb23F506Fe1e67004F142C', - combineTierFactory: '0x21fC48631F0efA5EFe790b5c05929cEdc271dB43', - erc20BalanceTierFactory: '0xb1C8EA6E410a71290D5C21404D3324e61912e3c6', - erc20TransferTierFactory: '0x2f1554BF57a234828ca3D210bA65cF80d8e5073c', - erc721BalanceTierFactory: '0xC0E50AD884EBb7C2582677978d48338D46930a08', - emissionsERC20Factory: '0xE51BeE9adccBafc20507e01EAA4F5aA966306669', - gatedNFTFactory: '0xbfe6E65daB36FbdB14bC7979D5DE244628F4eD3a', - noticeBoard: '0x4B02C8ceF32db81D4918e1C5b4b16EBA6830872a', - redeemableERC20ClaimEscrow: '0xCd67b4ef5659B776e996Dd4Be371DCac4ABba6c8', - redeemableERC20Factory: '0x4127ea3daf008043a3783094064670d1330d53f0', - saleFactory: '0xE152e59e644e49AE5D73Df70658084DFc8b5CBb6', - verifyFactory: '0x6e55b00ecfc718d202e57709a747fe3fc7f6e61e', - verifyTierFactory: '0x2aAA6104B099B2d1DF1D984F67da042555506B71', + vmStateBuilder: '', + alwaysTier: '', + combineTierFactory: '', + emissionsERC20Factory: '', + noticeBoard: '', + redeemableERC20ClaimEscrow: '', + redeemableERC20Factory: '', + saleFactory: '', + verifyFactory: '', + verifyTierFactory: '', + stakeFactory: '', + orderBook: '', }, }, ]; @@ -211,23 +193,23 @@ const subgraphBook: SubgraphBook = { /** * Ethereum chain */ - 1: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-mainnet-e590ce', + 1: '', /** * Goerli chain */ - 5: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-goerli-e590ce', + 5: '', /** * BNB Mainnet */ - 56: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-bnb-e590ce', + 56: '', /** * BNB Testnet */ - 97: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-bnb-chapel-e590ce', + 97: '', /** * Polygon chain */ - 137: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-polygon-e590ce', + 137: '', /** * Hardhat chain */ @@ -235,13 +217,11 @@ const subgraphBook: SubgraphBook = { /** * Fuji chain - Avalanche Testnet */ - 43113: - 'https://api.thegraph.com/subgraphs/name/nanezx/rain-protocol-fuji-e590ce', + 43113: '', /** * Mumbai chain */ - 80001: - 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-mumbai-e590ce', + 80001: '', }; /** diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 7666531..c15bacd 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -9,10 +9,10 @@ import { selectLteMode, selectLteLogic, callSize, - arrayify + arrayify, } from '../utils'; -/** +/* * @public * * All the standard Op Codes @@ -22,15 +22,15 @@ export enum AllStandardOps { * Copies a value either off `constants` or `arguments` to the top of * the stack. arguments will go at the end of the constants array. */ - CONSTANTS, + CONSTANT, /** - * Duplicates any value in the stack to the top of the stack. The operand + * Duplicates any value in the stack to the top of the stack. The operand * specifies the index to copy from. */ STACK, /** - * stacks an item of the contextual array of values of an underlying contract - * passed by caller when calling the contract's methods. operand is the index + * stacks an item of the contextual array of values of an underlying contract + * passed by caller when calling the contract's methods. operand is the index * to access the desired item in the array. */ CONTEXT, @@ -50,89 +50,77 @@ export enum AllStandardOps { */ DEBUG, /** - * Opcode for the block number. - */ - BLOCK_NUMBER, - /** - * Opcode for the block timestamp. - */ - BLOCK_TIMESTAMP, - /** - * Opcode for the `msg.sender`. - */ - SENDER, - /** - * Opcode for `this` address of the current contract. + * Opcode for `IERC20` `balanceOf`. */ - THIS_ADDRESS, + ERC20_BALANCE_OF, /** - * Opcode for multiplication. + * Opcode for `IERC20` `totalSupply`. */ - SCALE18_MUL, + ERC20_TOTAL_SUPPLY, /** - * Opcode for division. + * Opcode for `IERC20` use an Snapshot `balanceOfAt`. */ - SCALE18_DIV, + ERC20_SNAPSHOT_BALANCE_OF_AT, /** - * Opcode to rescale some fixed point number to 18 OOMs in situ. + * Opcode for `IERC20` use an Snapshot `totalSupplyAt`. */ - SCALE18, + ERC20_SNAPSHOT_TOTAL_SUPPLY_AT, /** - * Opcode to rescale an 18 OOMs fixed point number to scale N. + * Opcode for `IERC721` `balanceOf`. */ - SCALEN, + IERC721_BALANCE_OF, /** - * Opcode to rescale an arbitrary fixed point number by some OOMs. + * Number of provided opcodes for `IERC721Ops`. */ - SCALE_BY, + IERC721_OWNER_OF, /** - * Opcode for addition. + * Opcode for `IERC1155` `balanceOf`. */ - ADD, + IERC1155_BALANCE_OF, /** - * Opcode for saturating addition. + * Number of provided opcodes for `IERC1155Ops`. */ - SATURATING_ADD, + IERC1155_BALANCE_OF_BATCH, /** - * Opcode for subtraction. + * Opcode for the block number. */ - SUB, + BLOCK_NUMBER, /** - * Opcode for saturating subtraction. + * Opcode for the `msg.sender`. */ - SATURATING_SUB, + SENDER, /** - * Opcode for multiplication. + * Opcode for `this` address of the current contract. */ - MUL, + THIS_ADDRESS, /** - * Opcode for saturating multiplication. + * Opcode for the block timestamp. */ - SATURATING_MUL, + BLOCK_TIMESTAMP, /** - * Opcode for division + * Opcode to rescale some fixed point number to 18 OOMs in situ. */ - DIV, + SCALE18, /** - * Opcode for modulo. + * Opcode for division. */ - MOD, + SCALE18_DIV, /** - * Opcode for exponentiation. + * Opcode for multiplication. */ - EXP, + SCALE18_MUL, /** - * Opcode for minimum. + * Opcode to rescale an arbitrary fixed point number by some OOMs. */ - MIN, + SCALE_BY, /** - * Opcode for maximum. + * Opcode to rescale an 18 OOMs fixed point number to scale N. */ - MAX, + SCALEN, /** - * Opcode for ISZERO. + * Opcode for ANY. */ - ISZERO, + ANY, /** * Eager because BOTH x_ and y_ must be eagerly evaluated * before EAGER_IF will select one of them. If both x_ and y_ @@ -147,64 +135,85 @@ export enum AllStandardOps { */ EQUAL_TO, /** - * Opcode for LESS_THAN. + * Opcode for EVERY. */ - LESS_THAN, + EVERY, /** * Opcode for GREATER_THAN. */ GREATER_THAN, /** - * Opcode for EVERY. + * Opcode for ISZERO. */ - EVERY, + ISZERO, /** - * Opcode for ANY. + * Opcode for LESS_THAN. */ - ANY, + LESS_THAN, /** - * Opcode to call `report` on an `ITier` contract. + * Opcode for saturating addition. */ - REPORT, + SATURATING_ADD, /** - * Opcode to calculate the tierwise diff of two reports. + * Opcode for saturating multiplication. */ - SATURATING_DIFF, + SATURATING_MUL, /** - * Opcode to update the blocks over a range of tiers for a report. + * Opcode for saturating subtraction. */ - UPDATE_BLOCKS_FOR_TIER_RANGE, + SATURATING_SUB, /** - * Opcode to tierwise select the best block lte a reference block. + * Opcode for addition. */ - SELECT_LTE, + ADD, /** - * Opcode for `IERC20` `balanceOf`. + * Opcode for division */ - IERC20_BALANCE_OF, + DIV, /** - * Opcode for `IERC20` `totalSupply`. + * Opcode for exponentiation. */ - IERC20_TOTAL_SUPPLY, + EXP, /** - * Opcode for `IERC721` `balanceOf`. + * Opcode for maximum. */ - IERC721_BALANCE_OF, + MAX, /** - * Number of provided opcodes for `IERC721Ops`. + * Opcode for minimum. */ - IERC721_OWNER_OF, + MIN, /** - * Opcode for `IERC1155` `balanceOf`. + * Opcode for modulo. */ - IERC1155_BALANCE_OF, + MOD, /** - * Number of provided opcodes for `IERC1155Ops`. + * Opcode for multiplication. */ - IERC1155_BALANCE_OF_BATCH, + MUL, + /** + * Opcode for subtraction. + */ + SUB, + /** + * Opcode to call `report` on an `ITierV2` contract. + */ + ITIERV2_REPORT, + /** + * Opcode to call `reportTimeForTier` on an `ITierV2` contract. + */ + ITIERV2_REPORT_TIME_FOR_TIER, + /** + * Opcode to calculate the tierwise diff of two reports. + */ + SATURATING_DIFF, + /** + * Opcode to tierwise select the best block lte a reference block. + */ + SELECT_LTE, /** - * Length of the Standard Opcodes + * Opcode to update the timestamp over a range of tiers for a report. */ + UPDATE_TIMES_FOR_TIER_RANGE, length, } @@ -238,12 +247,12 @@ export interface StorageOpcodesRange { * Length of the storage opcodes of a contract, i.e. the number of local opcodes */ length: BigNumberish; -}; +} /** * Enum for DEBUG opcode operands */ - export enum Debug { +export enum Debug { /** * ABI of the current state of State */ @@ -263,10 +272,9 @@ export interface StorageOpcodesRange { /** * length of DEBUG's valid operands */ - length + length, } - /** * @public * @@ -287,7 +295,6 @@ export class VM { */ public static Opcodes = AllStandardOps; - /** * Create a VM sources to be ready to use in any call just providing the combination desired. * @@ -296,37 +303,48 @@ export class VM { * operand. Please @see OPerand * @returns A source */ - public static createVMSources(OPerands: OPerand[]): [Uint8Array] { - return [concat(OPerands.map((x) => op(x[0], x[1] || 0)))]; + public static createVMSources( + OPerands: (OPerand | Uint8Array)[] + ): [Uint8Array] { + return [ + concat( + OPerands.map((x) => { + if (x.constructor === Uint8Array) { + return x; + } else { + return op(x[0], x[1] || 0); + } + }) + ), + ]; } - /** * Combines 2 individual VM scripts - * + * * @remarks - please be aware if your script has STACK opcode, as STACK is relative to script and cannot be handled by this method * and needs to be dealt with manualy before calling this method. - * + * * @param config1 - the first VM script that will be combined. (default sits at top) * @param config2 - the second VM script that will be combined. (default sits at bottom) * @param options - used for additional configuraions: * - (param) index - to identify which sources item in config1.sources the combination starts at, if not specified, it will be 0. * - (param) - numberOfSources - for specifying how many sources item to combine. * - (param) position - An array representing the positions of config1 script where config2 sources - * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. + * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. * @returns combined VM script. @see StateConfig */ public static combiner( config1: StateConfig, config2: StateConfig, options?: { - index?: number, - numberOfSources?: number, - position?: number[], + index?: number; + numberOfSources?: number; + position?: number[]; } ): StateConfig { - - const NumberOfSources = options?.numberOfSources != undefined ? options.numberOfSources : 1; + const NumberOfSources = + options?.numberOfSources != undefined ? options.numberOfSources : 1; let sourceModify1; let sourceModify2; @@ -335,10 +353,7 @@ export class VM { let argCount = 0; for (let i = 0; i < config1.sources.length; i++) { - let src = arrayify( - config1.sources[i], - {allowMissingPrefix: true} - ); + let src = arrayify(config1.sources[i], { allowMissingPrefix: true }); for (let j = 0; j < src.length; j++) { if (src[j] == 4) { argCount += (src[j + 1] >> 5) + 1; @@ -349,34 +364,31 @@ export class VM { if (NumberOfSources == 0) { for (let i = 0; i < config1.sources.length; i++) { - sourceModify1 = arrayify( - config1.sources[i], - {allowMissingPrefix: true} - ); + sourceModify1 = arrayify(config1.sources[i], { + allowMissingPrefix: true, + }); for (let j = 0; j < sourceModify1.length; j++) { if (sourceModify1[j] == 0) { if (sourceModify1[j + 1] >= config1.constants.length) { - sourceModify1[j + 1] += config2.constants.length + sourceModify1[j + 1] += config2.constants.length; } } if (sourceModify1[j] == 4) { - sourceModify1[j + 1]++ + sourceModify1[j + 1]++; } j++; } config1.sources[i] = sourceModify1; } for (let i = 0; i < config2.sources.length; i++) { - sourceModify2 = arrayify( - config2.sources[i], - {allowMissingPrefix: true} - ); + sourceModify2 = arrayify(config2.sources[i], { + allowMissingPrefix: true, + }); for (let j = 0; j < sourceModify2.length; j++) { if (sourceModify2[j] == 0) { if (sourceModify2[j + 1] < config2.constants.length) { sourceModify2[j + 1] += config1.constants.length; - } - else { + } else { sourceModify2[j + 1] += argCount + config1.constants.length; } } @@ -392,21 +404,19 @@ export class VM { config1.sources[0], config2.sources[0], ...config1.sources.splice(1), - ...config2.sources.splice(1) + ...config2.sources.splice(1), ]; - } - else { + } else { const Index = options?.index ? options.index : 0; for (let i = 0; i < config1.sources.length; i++) { - sourceModify1 = arrayify( - config1.sources[i], - {allowMissingPrefix: true} - ); + sourceModify1 = arrayify(config1.sources[i], { + allowMissingPrefix: true, + }); for (let j = 0; j < sourceModify1.length; j++) { if (sourceModify1[j] == 0) { if (sourceModify1[j + 1] >= config1.constants.length) { - sourceModify1[j + 1] += config2.constants.length + sourceModify1[j + 1] += config2.constants.length; } } j++; @@ -421,8 +431,7 @@ export class VM { if (sourceModify2[j] == 0) { if (sourceModify2[j + 1] < config2.constants.length) { sourceModify2[j + 1] += config1.constants.length; - } - else { + } else { sourceModify2[j + 1] += config1.constants.length + argCount; } } @@ -450,8 +459,7 @@ export class VM { sourceModify.subarray(options.position[i] * 2), ]); } - } - else { + } else { for (let i = 0; i < NumberOfSources; i++) { config1.sources[Index + i] = concat([ config1.sources[Index + i], @@ -461,28 +469,21 @@ export class VM { } config2.sources.splice(0, NumberOfSources); - sources = [ - ...config1.sources, - ...config2.sources - ]; + sources = [...config1.sources, ...config2.sources]; } let offset = 0; for (let i = 0; i < sources.length; i++) { - let srcModify = arrayify( - sources[i], - {allowMissingPrefix: true} - ); + let srcModify = arrayify(sources[i], { allowMissingPrefix: true }); for (let j = 0; j < srcModify.length; j++) { let offsetReset; let argModify; let opernadArr = []; if (srcModify[j] == 4) { - argModify = arrayify( - sources[srcModify[j + 1] & 7], - {allowMissingPrefix: true} - ); + argModify = arrayify(sources[srcModify[j + 1] & 7], { + allowMissingPrefix: true, + }); for (let k = 0; k < argModify.length; k++) { if (argModify[k] == 0 && argModify[k + 1] >= constants.length) { @@ -490,7 +491,7 @@ export class VM { } k++; } - offsetReset = opernadArr.reduce((e, m) => e < m ? e : m); + offsetReset = opernadArr.reduce((e, m) => (e < m ? e : m)); for (let k = 0; k < argModify.length; k++) { if (argModify[k] == 0 && argModify[k + 1] >= constants.length) { argModify[k + 1] -= offsetReset; @@ -511,44 +512,40 @@ export class VM { }; } - /** * method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc - * + * * @param amountConfig - amount's StateConfig, the config sitting at top and returning the first value * @param priceConfig - price's StateConfig, the config sitting at bottom and returning the second value - * + * * @returns a @see StatecConfig */ - public static pair ( + public static pair( amountConfig: StateConfig, priceConfig: StateConfig - ) : StateConfig { - - let _stackOpcodeModify = arrayify( - priceConfig.sources[0], - {allowMissingPrefix: true} - ); + ): StateConfig { + let _stackOpcodeModify = arrayify(priceConfig.sources[0], { + allowMissingPrefix: true, + }); for (let i = 0; i < _stackOpcodeModify.length; i++) { if (_stackOpcodeModify[i] == 1) { _stackOpcodeModify[i + 1]++; } - i++ + i++; } priceConfig.sources[0] = _stackOpcodeModify; return VM.combiner(amountConfig, priceConfig); } - /** * Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final * result will be determined by the main VM script and if it fails it will be 0 by default. * * @remarks - please be aware if your script has DUP opcode, as DUP is relative to script and cannot be handled by this method * and needs to be dealt with manualy before calling this method. - * + * * @param config - the main VM script * @param ownerAddress - the address that is going to be the owner of the main VM script. * @param options - used for additional configuraions: @@ -556,42 +553,36 @@ export class VM { * - (param) position - An array representing the positions of config script where notOwnerVar sources (if exists) * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. * - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. - * + * * @returns a VM script. @see StateConfig */ - public static toOwnerMaker ( + public static toOwnerMaker( config: StateConfig, ownerAddress: string, options?: { - index?: number, - position?: number[], - notOwnerVar?: StateConfig | number, + index?: number; + position?: number[]; + notOwnerVar?: StateConfig | number; } ): StateConfig { - let _result: StateConfig; const Index = options?.index ? options.index : 0; const MAKE_OWNER = (i: any) => concat([ - op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.CONSTANT, i), op(VM.Opcodes.SENDER), op(VM.Opcodes.EQUAL_TO), ]); if (options?.notOwnerVar && typeof options.notOwnerVar === 'object') { - _result = this.combiner( - config, - options.notOwnerVar, - { - index: Index, - position: options?.position, - } - ); - } - else { - const NotOwnerVar = - (options?.notOwnerVar && typeof options?.notOwnerVar == "number") + _result = this.combiner(config, options.notOwnerVar, { + index: Index, + position: options?.position, + }); + } else { + const NotOwnerVar = + options?.notOwnerVar && typeof options?.notOwnerVar == 'number' ? options.notOwnerVar : 0; @@ -599,15 +590,11 @@ export class VM { config, { constants: [NotOwnerVar], - sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0) - ]) - ] + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], }, { index: Index, - position: options?.position + position: options?.position, } ); } @@ -615,11 +602,11 @@ export class VM { _result = this.combiner( { constants: [ownerAddress], - sources: [MAKE_OWNER(0)] + sources: [MAKE_OWNER(0)], }, _result, - {index: Index} - ) + { index: Index } + ); _result.sources[Index] = concat([ _result.sources[Index], op(VM.Opcodes.EAGER_IF), @@ -628,7 +615,6 @@ export class VM { return _result; } - /** * Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. * @@ -639,7 +625,7 @@ export class VM { * - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. * - (param) tierActivation An array of numbers, representing the amount of blocks each tier must hold in order to get the discount, * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 blocks to get the discount. - * + * * @returns a VM script @see StateConfig */ public static toTierDiscounter( @@ -647,11 +633,10 @@ export class VM { tierAddress: string, tierDiscount: number[], options?: { - index?: number, - tierActivation?: (string | number)[] + index?: number; + tierActivation?: (string | number)[]; } ): StateConfig { - const Index = options?.index ? options.index : 0; const TierDiscount = paddedUInt256( @@ -670,12 +655,16 @@ export class VM { const TIER_BASED_DIS = () => concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 3), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.BLOCK_NUMBER), op( @@ -689,87 +678,88 @@ export class VM { op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), op(VM.Opcodes.MIN, 8), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.DIV, 2), ]); const ACTIVATION_TIME = () => concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 4), ]); const TIER_BASED_DIS_FN = (i: number) => concat([ - op(VM.Opcodes.CONSTANTS, 3), - op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, i), op(VM.Opcodes.SUB, 2), ]); const ACTIVATION_TIME_FN = () => concat([ - op(VM.Opcodes.CONSTANTS, 6), - op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), ]); const _discounterConfig: StateConfig = options?.tierActivation ? { - constants: [ - ethers.constants.MaxUint256, - tierAddress, - TierDiscount, - '100', - paddedUInt256( - BigNumber.from( - '0x' + - paddedUInt32(options.tierActivation[7]) + - paddedUInt32(options.tierActivation[6]) + - paddedUInt32(options.tierActivation[5]) + - paddedUInt32(options.tierActivation[4]) + - paddedUInt32(options.tierActivation[3]) + - paddedUInt32(options.tierActivation[2]) + - paddedUInt32(options.tierActivation[1]) + - paddedUInt32(options.tierActivation[0]) - ) - ), - ], - sources: [ - concat([ - TIER_BASED_DIS(), - ACTIVATION_TIME(), - TIER_BASED_DIS_ZIPMAP(2), - ]), - concat([ - ACTIVATION_TIME_FN(), - TIER_BASED_DIS_FN(5), - op(VM.Opcodes.EAGER_IF) - ]) - ] - } : { - constants: [ - ethers.constants.MaxUint256, - tierAddress, - TierDiscount, - '100' - ], - sources: [ - concat([ - TIER_BASED_DIS(), - TIER_BASED_DIS_ZIPMAP(0), - ]), - TIER_BASED_DIS_FN(4) - ] - }; + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierDiscount, + '100', + paddedUInt256( + BigNumber.from( + '0x' + + paddedUInt32(options.tierActivation[7]) + + paddedUInt32(options.tierActivation[6]) + + paddedUInt32(options.tierActivation[5]) + + paddedUInt32(options.tierActivation[4]) + + paddedUInt32(options.tierActivation[3]) + + paddedUInt32(options.tierActivation[2]) + + paddedUInt32(options.tierActivation[1]) + + paddedUInt32(options.tierActivation[0]) + ) + ), + ], + sources: [ + concat([ + TIER_BASED_DIS(), + ACTIVATION_TIME(), + TIER_BASED_DIS_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_DIS_FN(5), + op(VM.Opcodes.EAGER_IF), + ]), + ], + } + : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierDiscount, + '100', + ], + sources: [ + concat([TIER_BASED_DIS(), TIER_BASED_DIS_ZIPMAP(0)]), + TIER_BASED_DIS_FN(4), + ], + }; - return VM.combiner(config, _discounterConfig, {index: Index}); + return VM.combiner(config, _discounterConfig, { index: Index }); } - /** * Multiply the result of a VM script based on the holding tier of a tier contract. * @@ -780,7 +770,7 @@ export class VM { * - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. * - (param) tierActivation An array of numbers, representing the amount of blocks each tier must hold in order to get the multiplier, * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 blocks to get the multiplier. - * + * * @returns a VM script @see StateConfig */ public static toTierMultiplier( @@ -788,11 +778,10 @@ export class VM { tierAddress: string, tierMultiplier: number[], options?: { - index?: number, - tierActivation?: (string | number)[] + index?: number; + tierActivation?: (string | number)[]; } ): StateConfig { - const Index = options?.index ? options.index : 0; const TierMultiplier = paddedUInt256( @@ -811,9 +800,11 @@ export class VM { const TIER_BASED_MUL = () => concat([ - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.BLOCK_NUMBER), op( @@ -826,153 +817,149 @@ export class VM { op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), op(VM.Opcodes.MAX, 8), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.DIV, 2), ]); const ACTIVATION_TIME = () => concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), - op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.CONSTANT, 5), ]); const TIER_BASED_MUL_FN = (i: number) => concat([ - op(VM.Opcodes.CONSTANTS, i), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, i), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANTS, i), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, i), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.EAGER_IF), ]); const ACTIVATION_TIME_FN = () => concat([ - op(VM.Opcodes.CONSTANTS, 7), - op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), ]); const _multiplierConfig: StateConfig = options?.tierActivation ? { - constants:[ - ethers.constants.MaxUint256, - tierAddress, - TierMultiplier, - '100', - '0xffffffff', - paddedUInt256( - BigNumber.from( - '0x' + - paddedUInt32(options.tierActivation[7]) + - paddedUInt32(options.tierActivation[6]) + - paddedUInt32(options.tierActivation[5]) + - paddedUInt32(options.tierActivation[4]) + - paddedUInt32(options.tierActivation[3]) + - paddedUInt32(options.tierActivation[2]) + - paddedUInt32(options.tierActivation[1]) + - paddedUInt32(options.tierActivation[0]) - ) - ), - ], - sources: [ - concat([ - TIER_BASED_MUL(), - ACTIVATION_TIME(), - TIER_BASED_MUL_ZIPMAP(2), - ]), - concat([ - ACTIVATION_TIME_FN(), - TIER_BASED_MUL_FN(6), - op(VM.Opcodes.EAGER_IF) - ]) - ] - } : { - constants: [ - ethers.constants.MaxUint256, - tierAddress, - TierMultiplier, - '100', - '0xffffffff' - ], - sources: [ - concat([ - TIER_BASED_MUL(), - TIER_BASED_MUL_ZIPMAP(0), - ]), - TIER_BASED_MUL_FN(5) - ] - }; + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierMultiplier, + '100', + '0xffffffff', + paddedUInt256( + BigNumber.from( + '0x' + + paddedUInt32(options.tierActivation[7]) + + paddedUInt32(options.tierActivation[6]) + + paddedUInt32(options.tierActivation[5]) + + paddedUInt32(options.tierActivation[4]) + + paddedUInt32(options.tierActivation[3]) + + paddedUInt32(options.tierActivation[2]) + + paddedUInt32(options.tierActivation[1]) + + paddedUInt32(options.tierActivation[0]) + ) + ), + ], + sources: [ + concat([ + TIER_BASED_MUL(), + ACTIVATION_TIME(), + TIER_BASED_MUL_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_MUL_FN(6), + op(VM.Opcodes.EAGER_IF), + ]), + ], + } + : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierMultiplier, + '100', + '0xffffffff', + ], + sources: [ + concat([TIER_BASED_MUL(), TIER_BASED_MUL_ZIPMAP(0)]), + TIER_BASED_MUL_FN(5), + ], + }; - return VM.combiner(config, _multiplierConfig, {index: Index}); + return VM.combiner(config, _multiplierConfig, { index: Index }); } - /** * A method to merge multiple (more than 1) scripts to be executed based on time slices. - * + * * @param configs - An array of StateConfigs that will be merged and executed at runtime in order by time slices * @param times - An array of numbers representing either BLOCK_NUMBER or TIMESTAMP that time slices will be between each of the 2 items in the array * @param inBlockNumber - (optional) false by default which means the time slices will be based on TIMESTAMP, pass true to base it on BLOCK_NUMBER - * + * * @returns a VM script @see StateConfig */ - public static toTimeSlicer ( + public static toTimeSlicer( configs: StateConfig[], times: number[], inBlockNumber: boolean = false - ) : StateConfig { - + ): StateConfig { if (configs.length == times.length) { - let _result: StateConfig; - const SLICER = (i: number) : StateConfig => { + const SLICER = (i: number): StateConfig => { return { - constants: [times[i], times[i+1]], + constants: [times[i], times[i + 1]], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), inBlockNumber - ? op(VM.Opcodes.BLOCK_NUMBER) - : op(VM.Opcodes.BLOCK_TIMESTAMP), + ? op(VM.Opcodes.BLOCK_NUMBER) + : op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.LESS_THAN), inBlockNumber - ? op(VM.Opcodes.BLOCK_NUMBER) - : op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 1), + ? op(VM.Opcodes.BLOCK_NUMBER) + : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.EVERY), - ]) + ]), ], - } + }; }; _result = VM.combiner(SLICER(0), configs[0]); for (let i = 1; i < configs.length; i++) { if (i + 1 == configs.length) { - _result = VM.combiner(_result, configs[i]) - } - else { - _result = VM.combiner(_result, SLICER(i)) - _result = VM.combiner(_result, configs[i]) + _result = VM.combiner(_result, configs[i]); + } else { + _result = VM.combiner(_result, SLICER(i)); + _result = VM.combiner(_result, configs[i]); } } for (let i = 1; i < configs.length; i++) { _result.sources[0] = concat([ _result.sources[0], - op(VM.Opcodes.EAGER_IF) + op(VM.Opcodes.EAGER_IF), ]); } return _result; - } - else throw new Error("invalid arguments") + } else throw new Error('invalid arguments'); } - } diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts new file mode 100644 index 0000000..7727006 --- /dev/null +++ b/src/contracts/orderBook.ts @@ -0,0 +1,164 @@ +import { Signer, BigNumberish, BytesLike, ContractTransaction } from 'ethers'; +import { + RainContract, + ReadTxOverrides, + TxOverrides, +} from '../classes/rainContract'; +import { StateConfig, StorageOpcodesRange } from '../classes/vm'; +import { OrderBook__factory } from '../typechain'; + +/** + * @public + * A class for calling method on a OrderBook. + * + * @remarks + * This class provides an easy way to interact with the OrderBook contract. + * + * @example + * ```typescript + * import { OrderBook } from 'rain-sdk' + * + * const orderBook = new OrderBook(address, signer); + * + * const addOrderArg = { + * inputToken: token1Address; + * inputVaultId: vaultID_1; + * outputToken: token2Address; + * outputVaultId: vaultID_2; + * tracking: tracking; + * vmStateConfig: _stateConfig; + * } + * + * const tx = await orderBook.addOrder(addOrderArg); + * ``` + */ + +export class OrderBook extends RainContract { + protected static readonly nameBookReference: string = 'orderBook'; + + /** + * Constructs a new OrderBook from a known address. + * + * @param address - The address of the OrderBook contract + * @param signer - An ethers.js Signer + * @returns A new OrderBook instance + * + */ + constructor(address: string, signer: Signer) { + super(address, signer); + const _orderBook = OrderBook__factory.connect(address, signer); + + this.addOrder = _orderBook.addOrder; + this.clear = _orderBook.clear; + this.deposit = _orderBook.deposit; + this.fnPtrs = _orderBook.fnPtrs; + this.removeOrder = _orderBook.removeOrder; + this.storageOpcodesRange = _orderBook.storageOpcodesRange; + this.withdraw = _orderBook.withdraw; + } + + /** + * Get the OrderBook instance + * + * The function ask to the provider inside of the ethers signer what is the chain + * identifier to get the address in this chain. + * + * @param signer - ethers signer connected to the instance + * @returns A OrderBook instance + */ + public static get = async (signer: Signer): Promise => { + return new OrderBook( + this.getBookAddress(await this.getChainId(signer)), + signer + ); + }; + + public readonly connect = (signer: Signer): OrderBook => { + return new OrderBook(this.address, signer); + }; + + public readonly addOrder: ( + orderConfig_: OrderConfig, + overrides?: TxOverrides + ) => Promise; + + public readonly clear: ( + a_: Order, + b_: Order, + bountyConfig_: BountyConfig, + overrides?: TxOverrides + ) => Promise; + + public readonly deposit: ( + config_: DepositConfig, + overrides?: TxOverrides + ) => Promise; + + public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + + public readonly removeOrder: ( + order_: Order, + overrides?: TxOverrides + ) => Promise; + + public readonly storageOpcodesRange: ( + overrides?: ReadTxOverrides + ) => Promise; + + public readonly withdraw: ( + config_: WithdrawConfig, + overrides?: TxOverrides + ) => Promise; +} + +/** + * @public + */ +export type OrderConfig = { + inputToken: string; + inputVaultId: BigNumberish; + outputToken: string; + outputVaultId: BigNumberish; + tracking: BigNumberish; + vmStateConfig: StateConfig; +}; + +/** + * @public + * Order + */ +export type Order = { + owner: string; + inputToken: string; + inputVaultId: BigNumberish; + outputToken: string; + outputVaultId: BigNumberish; + tracking: BigNumberish; + vmState: BytesLike; +}; + +/** + * @public + */ +export type BountyConfig = { + aVaultId: BigNumberish; + bVaultId: BigNumberish; +}; + +/** + * @public + */ +export type DepositConfig = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; + +/** + * @public + */ +export type WithdrawConfig = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts new file mode 100644 index 0000000..ab93013 --- /dev/null +++ b/src/contracts/stake.ts @@ -0,0 +1,197 @@ +import { + Signer, + BigNumber, + BigNumberish, + BytesLike, + ContractTransaction, +} from 'ethers'; +import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; +import { FactoryContract } from '../classes/factoryContract'; + +import { Stake__factory, StakeFactory__factory } from '../typechain'; + +/** + * @public + * A class for calling methods on a Stake. + * + * @remarks + * This class provides an easy way to interact with Stake contracts. + * + * @example + * ```typescript + * import { Stake } from 'rain-sdk'; + * + * // To get a instance of an already deployed stake contract, pass the contract address and an ethers.js Signer + * const stake = new Stake(address, signer); + * + * // Check if an address is child from the factory deployed in the current chain. + * await Stake.isChild(signer, maybeChildAddress); + *``` + */ + +export class Stake extends FactoryContract { + protected static readonly nameBookReference: string = 'stakeFactory'; + + /** + * Constructs a new Stake from a known address. + * + * @param address - The address of the Stake contract + * @param signer - An ethers.js Signer + * @returns A new Stake instance + * + */ + constructor(address: string, signer: Signer) { + super(address, signer); + const _stake = Stake__factory.connect(address, signer); + + this.allowance = _stake.allowance; + this.approve = _stake.approve; + this.balanceOf = _stake.balanceOf; + this.decimals = _stake.decimals; + this.decreaseAllowance = _stake.decreaseAllowance; + this.deposit = _stake.deposit; + this.increaseAllowance = _stake.increaseAllowance; + this.name = _stake.name; + this.report = _stake.report; + this.reportTimeForTier = _stake.reportTimeForTier; + this.supportsInterface = _stake.supportsInterface; + this.symbol = _stake.symbol; + this.totalSupply = _stake.totalSupply; + this.transfer = _stake.transfer; + this.transferFrom = _stake.transferFrom; + this.withdraw = _stake.withdraw; + } + + /** + * Deploys a new Stake. + * + * @param signer - An ethers.js Signer + * @param args - Arguments for deploying a Stake @see StakeDeployArgs + * @param overrides - @see TxOverrides + * @returns A new Stake instance + * + */ + public static deploy = async ( + signer: Signer, + args: StakeDeployArgs, + overrides: TxOverrides = {} + ): Promise => { + const stakeFactory = StakeFactory__factory.connect( + this.getBookAddress(await this.getChainId(signer)), + signer + ); + + const tx = await stakeFactory.createChildTyped(args, overrides); + const receipt = await tx.wait(); + const address = this.getNewChildFromReceipt(receipt, stakeFactory); + return new Stake(address, signer); + }; + + public readonly connect = (signer: Signer): Stake => { + return new Stake(this.address, signer); + }; + + /** + * Checks if address is registered as a child contract of this StakeFactory on a specific network + * + * @param signer - An ethers.js Signer + * @param maybeChild - Address to check registration for. + * @returns `true` if address was deployed by this contract factory, otherwise `false` + */ + public static isChild = async ( + signer: Signer, + maybeChild: string + ): Promise => { + return await this._isChild(signer, maybeChild); + }; + + public readonly allowance: ( + owner: string, + spender: string, + overrides?: ReadTxOverrides + ) => Promise; + + public readonly approve: ( + spender: string, + amount: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + public readonly balanceOf: ( + account: string, + overrides?: ReadTxOverrides + ) => Promise; + + public readonly decimals: (overrides?: ReadTxOverrides) => Promise; + + public readonly decreaseAllowance: ( + spender: string, + subtractedValue: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + public readonly deposit: ( + amount_: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + public readonly increaseAllowance: ( + spender: string, + addedValue: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + public readonly name: (overrides?: ReadTxOverrides) => Promise; + + public readonly report: ( + account_: string, + context_: BigNumberish[], + overrides?: ReadTxOverrides + ) => Promise; + + public readonly reportTimeForTier: ( + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: ReadTxOverrides + ) => Promise; + + public readonly supportsInterface: ( + interfaceId_: BytesLike, + overrides?: ReadTxOverrides + ) => Promise; + + public readonly symbol: (overrides?: ReadTxOverrides) => Promise; + + public readonly totalSupply: ( + overrides?: ReadTxOverrides + ) => Promise; + + public readonly transfer: ( + to: string, + amount: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + public readonly transferFrom: ( + from: string, + to: string, + amount: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + public readonly withdraw: ( + amount_: BigNumberish, + overrides?: TxOverrides + ) => Promise; +} + +/** + * @public + */ +export type StakeDeployArgs = { + token: string; + initialRatio: BigNumberish; + name: string; + symbol: string; +}; diff --git a/src/index.ts b/src/index.ts index 383aefc..f143a92 100644 --- a/src/index.ts +++ b/src/index.ts @@ -31,3 +31,6 @@ export * from './contracts/tiers/verifyTier'; export * from './contracts/generics/erc20'; export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; + +export * from './contracts/stake'; +export * from './contracts/orderBook'; diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index d330788..b264cfc 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -13,21 +13,21 @@ import { VM, AddressBook, Sale, + Stake, Verify, - GatedNFT, + OrderBook, VerifyTier, CombineTier, NoticeBoard, EmissionsERC20, RedeemableERC20, - ERC20BalanceTier, - ERC20TransferTier, - ERC721BalanceTier, RedeemableERC20ClaimEscrow, ERC20, ERC721, ERC1155, + utils, } from '../src'; +const {op} = utils; /** * Addresses saved that are in SDK BookAddresses deployed to Hardhat network. @@ -51,26 +51,10 @@ before('Initializing and deploying contracts to hardhat network', async () => { 'VerifyTierFactory' ); - const ERC20BalanceTierFactoryFactory = await ethers.getContractFactory( - 'ERC20BalanceTierFactory' - ); - - const ERC20TransferTierFactoryFactory = await ethers.getContractFactory( - 'ERC20TransferTierFactory' - ); - const CombineTierFactoryFactory = await ethers.getContractFactory( 'CombineTierFactory' ); - const ERC721BalanceTierFactoryFactory = await ethers.getContractFactory( - 'ERC721BalanceTierFactory' - ); - - const GatedNFTFactoryFactory = await ethers.getContractFactory( - 'GatedNFTFactory' - ); - const RedeemableERC20ClaimEscrowFactory = await ethers.getContractFactory( 'RedeemableERC20ClaimEscrow' ); @@ -83,35 +67,61 @@ before('Initializing and deploying contracts to hardhat network', async () => { const SaleFactoryFactory = await ethers.getContractFactory('SaleFactory'); + const StakeFactoryFactory = await ethers.getContractFactory('StakeFactory'); + + const OrderBookStateBuilderFactory = await ethers.getContractFactory( + 'OrderBookStateBuilder' + ); + const OrderBookFactory = await ethers.getContractFactory('OrderBook'); + // ⚠️ Deployments to hardhat test network ⚠️ const vmStateBuilder = await vmStateBuilderFactory.deploy(); const RedeemableERC20Factory = await RedeemableERC20FactoryFactory.deploy(); const VerifyFactory = await VerifyFactoryFactory.deploy(); const VerifyTierFactory = await VerifyTierFactoryFactory.deploy(); - const ERC20BalanceTierFactory = await ERC20BalanceTierFactoryFactory.deploy(); - const ERC20TransferTierFactory = - await ERC20TransferTierFactoryFactory.deploy(); - const CombineTierFactory = await CombineTierFactoryFactory.deploy(vmStateBuilder.address); - const ERC721BalanceTierFactory = - await ERC721BalanceTierFactoryFactory.deploy(); - const GatedNFTFactory = await GatedNFTFactoryFactory.deploy(); + + const CombineTierFactory = await CombineTierFactoryFactory.deploy( + vmStateBuilder.address + ); const RedeemableERC20ClaimEscrow = await RedeemableERC20ClaimEscrowFactory.deploy(); const NoticeBoard = await NoticeBoardFactory.deploy(); - const EmissionsERC20Factory = await EmissionsERC20FactoryFactory.deploy(vmStateBuilder.address); + const EmissionsERC20Factory = await EmissionsERC20FactoryFactory.deploy( + vmStateBuilder.address + ); + const SaleFactory = await SaleFactoryFactory.deploy({ maximumSaleTimeout: 10000, maximumCooldownDuration: 1000, redeemableERC20Factory: RedeemableERC20Factory.address, - vmStateBuilder: vmStateBuilder.address + vmStateBuilder: vmStateBuilder.address, }); + const stakeFactory = await StakeFactoryFactory.deploy(); + + const orderBookStateBuilder = await OrderBookStateBuilderFactory.deploy(); + const orderBook = await OrderBookFactory.deploy( + orderBookStateBuilder.address + ); + // Deploying AlwaysTier - const sourceAlways = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); + const ctxAccount = op(VM.Opcodes.CONTEXT, 0); + + // prettier-ignore + // return default report + const sourceReportTimeForTierDefault = VM.createVMSources([ + op(VM.Opcodes.THIS_ADDRESS), + ctxAccount, + op(VM.Opcodes.ITIERV2_REPORT), + ])[0]; + const alwaysArg = { - sources: sourceAlways, - constants: [0], - }; + combinedTiersLength: 0, + sourceConfig: { + sources: [op(VM.Opcodes.CONSTANT, 0), sourceReportTimeForTierDefault], + constants: [0], + }, + } const tx = await CombineTierFactory.createChildTyped(alwaysArg); const AlwaysTier = CombineTier.getNewChildFromReceipt( @@ -125,23 +135,23 @@ before('Initializing and deploying contracts to hardhat network', async () => { RedeemableERC20Factory: RedeemableERC20Factory.address, VerifyFactory: VerifyFactory.address, VerifyTierFactory: VerifyTierFactory.address, - ERC20BalanceTierFactory: ERC20BalanceTierFactory.address, - ERC20TransferTierFactory: ERC20TransferTierFactory.address, CombineTierFactory: CombineTierFactory.address, - ERC721BalanceTierFactory: ERC721BalanceTierFactory.address, - GatedNFTFactory: GatedNFTFactory.address, RedeemableERC20ClaimEscrow: RedeemableERC20ClaimEscrow.address, NoticeBoard: NoticeBoard.address, EmissionsERC20Factory: EmissionsERC20Factory.address, SaleFactory: SaleFactory.address, + StakeFactory: stakeFactory.address, + OrderBook: orderBook.address, AlwaysTier: AlwaysTier, }; + + console.log(JSON.stringify(addresses, null, 2)); }); -describe('SDK - BookAddress', () => { +describe.only('SDK - BookAddress', () => { it('should fail if no address stored in the book for a chain', () => { - const arbitraryId = 1234; - expect(() => AddressBook.getAddressesForChainId(arbitraryId)).to.throw( + const arbitraryChainId = 1234; + expect(() => AddressBook.getAddressesForChainId(arbitraryChainId)).to.throw( Error, 'No deployed contracts for this chain.' ); @@ -172,31 +182,11 @@ describe('SDK - BookAddress', () => { expect(address).to.be.equals(addresses.VerifyTierFactory); }); - it('should get the ERC20BalanceTierFactory address', async () => { - const address = ERC20BalanceTier.getBookAddress(chainId); - expect(address).to.be.equals(addresses.ERC20BalanceTierFactory); - }); - - it('should get the ERC20TransferTierFactory address', async () => { - const address = ERC20TransferTier.getBookAddress(chainId); - expect(address).to.be.equals(addresses.ERC20TransferTierFactory); - }); - it('should get the CombineTierFactory address', async () => { const address = CombineTier.getBookAddress(chainId); expect(address).to.be.equals(addresses.CombineTierFactory); }); - it('should get the ERC721BalanceTierFactory address', async () => { - const address = ERC721BalanceTier.getBookAddress(chainId); - expect(address).to.be.equals(addresses.ERC721BalanceTierFactory); - }); - - it('should get the GatedNFTFactory address', async () => { - const address = GatedNFT.getBookAddress(chainId); - expect(address).to.be.equals(addresses.GatedNFTFactory); - }); - it('should get the EmissionsERC20Factory address', async () => { const address = EmissionsERC20.getBookAddress(chainId); expect(address).to.be.equals(addresses.EmissionsERC20Factory); @@ -212,6 +202,16 @@ describe('SDK - BookAddress', () => { expect(address).to.be.equals(addresses.RedeemableERC20ClaimEscrow); }); + it('should get the Orderbook address', () => { + const address = OrderBook.getBookAddress(chainId); + expect(address).to.be.equals(addresses.OrderBook); + }); + + it('should get the Stake address', () => { + const address = Stake.getBookAddress(chainId); + expect(address).to.be.equals(addresses.StakeFactory); + }); + it('should get the NoticeBoard address', () => { const address = NoticeBoard.getBookAddress(chainId); expect(address).to.be.equals(addresses.NoticeBoard); @@ -240,7 +240,7 @@ describe('SDK - BookAddress', () => { }); }); -describe('SDK - Generics', () => { +describe.only('SDK - Generics', () => { it('should create and use an ERC20 instance correctly', async () => { const [deployer, receiver] = await ethers.getSigners(); diff --git a/test/utils.ts b/test/utils.ts index e56e9e7..31cfc0e 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -51,15 +51,13 @@ export interface Addresses { RedeemableERC20Factory: string; VerifyFactory: string; VerifyTierFactory: string; - ERC20BalanceTierFactory: string; - ERC20TransferTierFactory: string; CombineTierFactory: string; - ERC721BalanceTierFactory: string; - GatedNFTFactory: string; RedeemableERC20ClaimEscrow: string; NoticeBoard: string; EmissionsERC20Factory: string; SaleFactory: string; + StakeFactory: string; + OrderBook: string; AlwaysTier: string; } From c48634a5b8a3b9ccaeed9f3b942643a716505af0 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 18:15:47 -0400 Subject: [PATCH 012/125] update opcodes --- src/RainJS/RainJS.ts | 1624 ++++++++--------- src/classes/vm.ts | 8 +- .../combineTierScriptGenerator.ts | 309 ++-- .../emissionsERC20ScriptGenerator.ts | 544 +++--- .../script-generators/saleScriptGenerator.ts | 345 ++-- 5 files changed, 1406 insertions(+), 1424 deletions(-) diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index fe9e920..4c7b0e6 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -1,74 +1,63 @@ -import { BigNumber, Contract, ethers, Signer } from "ethers"; -import { arrayify } from "../utils"; -import { StateConfig, VM } from "../classes/vm"; -import { ERC1155 } from "../contracts/generics/erc1155"; -import { ERC20 } from "../contracts/generics/erc20"; -import { ERC721 } from "../contracts/generics/erc721"; -import { ITier } from "../contracts/tiers/iTier"; -import { Provider } from "../types"; - +import { BigNumber, Contract, ethers, Signer } from 'ethers'; +import { arrayify } from '../utils'; +import { StateConfig, VM } from '../classes/vm'; +import { ERC1155 } from '../contracts/generics/erc1155'; +import { ERC20 } from '../contracts/generics/erc20'; +import { ERC721 } from '../contracts/generics/erc721'; +import { ITier } from '../contracts/tiers/iTier'; +import { Provider } from '../types'; /** * @public * A type for functions to override the default opcodes functions with it. */ -export type OpcodeFN = ( - state: StateJS, - operand: number, - data?: any -) => void; - +export type OpcodeFN = (state: StateJS, operand: number, data?: any) => void; /** * @public * An interface for creating a key/value pair of custom opcodes functions to override. */ export interface ApplyOpFn { - [key: number]: OpcodeFN + [key: number]: OpcodeFN; } - /** - * @public - An interface, StateJS is basically javascript version of 'State' struct - * in RainVM, although it doesn't need stackLength and argumentsLength to operate. It - * receives a regular RainVM in the constructor and initiates the stack for it and all + * @public - An interface, StateJS is basically javascript version of 'State' struct + * in RainVM, although it doesn't need stackLength and argumentsLength to operate. It + * receives a regular RainVM in the constructor and initiates the stack for it and all * opcodes do their operations to the stack. * @see State in RainVM.sol - * + * */ export interface StateJS { - - /** + /** * The property to store the RainVM script constants. - */ + */ readonly constants: BigNumber[]; - /** + /** * The property to store the RainVM script sources. - */ - readonly sources : Uint8Array[]; + */ + readonly sources: Uint8Array[]; - /** - * The RainJS's stack. - */ + /** + * The RainJS's stack. + */ readonly stack: BigNumber[]; - /** + /** * Used only for zipmap opcode - */ + */ readonly argumentsStack: BigNumber[]; - -}; - +} /** * @public - The javascript version of the RainVM, basically does the same job RainVM does - * but off-chain. + * but off-chain. * @see RainVM in RainVM.sol - * + * */ export class RainJS { - /** * The result state of the executed Rainjs. */ @@ -112,40 +101,35 @@ export class RainJS { */ protected _STORAGE_?: ApplyOpFn; - /** * The constructor of RainJS which initiates the RainJS and also a StateJS for a RainVM script. - * + * * @param state - A regular StateConfig used to new a StateJS object to be used in RainJS. * @param options - (optional) used for initiating the optional properties (signer, provider, contract and applyOpFn) - * + * */ constructor( state: StateConfig, options?: { - signer?: Signer, - provider?: Provider, - contract?: Contract, - applyOpFn?: ApplyOpFn, - storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the CombineTierJS's CONTEXT opcode function + signer?: Signer; + provider?: Provider; + contract?: Contract; + applyOpFn?: ApplyOpFn; + storageOpFn?: ApplyOpFn; // for overriding the CombineTierJS's STORAGE opcode function + contextOpFn?: ApplyOpFn; // for overriding the CombineTierJS's CONTEXT opcode function } ) { const stack: BigNumber[] = []; const argumentsStack: BigNumber[] = []; - const constants: BigNumber[] = []; + const constants: BigNumber[] = []; const sources: Uint8Array[] = []; - for (let i = 0; i < state.constants.length; i++) { - constants.push( - BigNumber.from(state.constants[i]) - ) - }; + for (let i = 0; i < state.constants.length; i++) { + constants.push(BigNumber.from(state.constants[i])); + } for (let i = 0; i < state.sources.length; i++) { - sources.push( - arrayify(state.sources[i], {allowMissingPrefix: true}) - ) - }; + sources.push(arrayify(state.sources[i], { allowMissingPrefix: true })); + } this.state = { stack, @@ -164,56 +148,45 @@ export class RainJS { this._CONTEXT_ = options?.contextOpFn; } - /** * The main workhorse of RainJS, basically the javascript version of 'eval' method in RainVM.sol. - * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that + * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that * has been passed at the time of cinstruction of a RainJS object. * @see eval method in RainVM.sol - * - * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there + * + * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there * are custom opcodes passed at the time of construction ot to pass in some user input value to the script. * @param index - used internally for indicating which item in state sources array to execute for zipmap function. - * + * */ - private async eval ( - data?: any, - index?: number, - ) : Promise { - + private async eval(data?: any, index?: number): Promise { const sourcesIndex = index ? index : 0; - - for (let i = 0 ; i < this.state.sources[sourcesIndex].length; i++) { + + for (let i = 0; i < this.state.sources[sourcesIndex].length; i++) { if (this.applyOpFn != undefined) { if ( - Object.keys(this.applyOpFn) - .includes( - this.state.sources[sourcesIndex][i] - .toString() + Object.keys(this.applyOpFn).includes( + this.state.sources[sourcesIndex][i].toString() ) ) { - await this.applyOpFn[ - this.state.sources[sourcesIndex][i] - ]( + await this.applyOpFn[this.state.sources[sourcesIndex][i]]( this.state, - this.state.sources[sourcesIndex][i+1], + this.state.sources[sourcesIndex][i + 1], data - ) - } - else { + ); + } else { await this.dispatch( this.state, this.state.sources[sourcesIndex][i], - this.state.sources[sourcesIndex][i+1], + this.state.sources[sourcesIndex][i + 1], data - ) + ); } - } - else { + } else { await this.dispatch( this.state, this.state.sources[sourcesIndex][i], - this.state.sources[sourcesIndex][i+1], + this.state.sources[sourcesIndex][i + 1], data ); } @@ -224,36 +197,34 @@ export class RainJS { /** * It is a protected method used by eval to run the correct function for each opcode in the script. * For each opcode please @see AllStandardOps - * + * * @param state - StateJS property used in each opcode function to either read or write data into stack. * @param opcode - the opcode to dispatch and run the function of that opcode * @param operand - the addtional info for each opcode to run based on. * @param data - (optional) used only for zipmap opcode in order to be able to run custom function i.e. applyOpFn * for zipmap function source. - * + * */ - private async dispatch ( + private async dispatch( state: StateJS, opcode: number, operand: number, data?: any - ) : Promise { + ): Promise { await this._OPCODE_[opcode](state, operand, data); } /** * Method to execute the RainJS. - * + * * @param data - (optional) Used as additional info for some local opcodes * or custom opcode functions i.e. applyOpFn. - * + * * @returns - An array represting the final state of the RainJS stack. */ - public async run(data?: any) : Promise { + public async run(data?: any): Promise { await this.eval(data); - this.lastState.push( - ...this.state.stack.splice(-this.state.stack.length) - ) + this.lastState.push(...this.state.stack.splice(-this.state.stack.length)); const result_ = this.lastState[this.lastState.length - 1]; return result_; @@ -263,829 +234,794 @@ export class RainJS { * key/value pair of opcodes and their functions for all standard opcodes */ protected readonly _OPCODE_: ApplyOpFn = { + [VM.Opcodes.CONSTANT]: (state: StateJS, operand: number, data?: any) => { + if (operand < state.constants.length) { + if (state.constants[operand] != undefined) { + state.stack.push(state.constants[operand]); + } else throw new Error('out-of-bound constants'); + } else { + if ( + state.argumentsStack[operand - state.constants.length] != undefined + ) { + state.stack.push( + state.argumentsStack[operand - state.constants.length] + ); + } else throw new Error('out-of-bound arguments'); + } + }, - [VM.Opcodes.CONSTANTS] : - (state: StateJS, operand: number, data?: any) => { - if (operand < state.constants.length) { - if (state.constants[operand] != undefined) { - state.stack.push(state.constants[operand]) - } - else throw new Error("out-of-bound constants") - } - else { - if (state.argumentsStack[operand - state.constants.length] != undefined) { - state.stack.push(state.argumentsStack[operand - state.constants.length]) - } - else throw new Error("out-of-bound arguments") - } - }, + [VM.Opcodes.STACK]: (state: StateJS, operand: number, data?: any) => { + state.stack.push(state.stack[operand]); + }, - [VM.Opcodes.STACK] : - (state: StateJS, operand: number, data?: any) => { - state.stack.push(state.stack[operand]); - }, + [VM.Opcodes.CONTEXT]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this._CONTEXT_) { + await this._CONTEXT_[operand](state, operand, data); + } else throw new Error('no or out of bounds contexxt opcode'); + }, - [VM.Opcodes.CONTEXT] : - async(state: StateJS, operand: number, data?: any) => { - if (this._CONTEXT_) { - await this._CONTEXT_[operand](state, operand, data) - } - else throw new Error("no or out of bounds contexxt opcode") - }, + [VM.Opcodes.STORAGE]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this._STORAGE_) { + await this._STORAGE_[operand](state, operand, data); + } else throw new Error('no or out-of-bound storage opcode'); + }, - [VM.Opcodes.STORAGE] : - async(state: StateJS, operand: number, data?: any) => { - if (this._STORAGE_) { - await this._STORAGE_[operand](state, operand, data) - } - else throw new Error("no or out-of-bound storage opcode") - }, - - [VM.Opcodes.ZIPMAP] : - async(state: StateJS, operand: number, data?: any) => { - const sourceIndex_ = operand & 7; - const numberOfVals_ = (operand & 224) >> 5; - const a_ = (operand & 24) >> 3; - const valSize_ = a_ == 3 ? 8 : a_ == 2 ? 16 : a_ == 1 ? 32 : 64; - const loopSize_ = 64 / valSize_; - const items_ = state.stack.splice(-(numberOfVals_ + 1)); - let _startIndex = 64 - valSize_; - let _endIndex = 64; - - if (items_.length == numberOfVals_ + 1) { - for (let i = 0; i < loopSize_; i++) { - state.argumentsStack.splice(-(numberOfVals_ + 1)); - for (let j = 0; j < items_.length; j++) { - state.argumentsStack.push( - BigNumber.from( - "0x" + + [VM.Opcodes.ZIPMAP]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const sourceIndex_ = operand & 7; + const numberOfVals_ = (operand & 224) >> 5; + const a_ = (operand & 24) >> 3; + const valSize_ = a_ == 3 ? 8 : a_ == 2 ? 16 : a_ == 1 ? 32 : 64; + const loopSize_ = 64 / valSize_; + const items_ = state.stack.splice(-(numberOfVals_ + 1)); + let _startIndex = 64 - valSize_; + let _endIndex = 64; + + if (items_.length == numberOfVals_ + 1) { + for (let i = 0; i < loopSize_; i++) { + state.argumentsStack.splice(-(numberOfVals_ + 1)); + for (let j = 0; j < items_.length; j++) { + state.argumentsStack.push( + BigNumber.from( + '0x' + items_[j] - .toHexString() - .substring(2) - .padStart(64, "0") - .slice(_startIndex, _endIndex) - ) + .toHexString() + .substring(2) + .padStart(64, '0') + .slice(_startIndex, _endIndex) ) - } - for (let i = 0 ; i < this.state.sources[sourceIndex_].length; i++) { - if (this.applyOpFn != undefined) { - if ( - Object.keys(this.applyOpFn) - .includes( - this.state.sources[sourceIndex_][i] - .toString() - ) - ) { - this.applyOpFn[ - this.state.sources[sourceIndex_][i] - ]( - this.state, - this.state.sources[sourceIndex_][i+1], - data - ) - } - else { - await this.dispatch( - this.state, - this.state.sources[sourceIndex_][i], - this.state.sources[sourceIndex_][i+1], - data - ) - } - } - else { + ); + } + for (let i = 0; i < this.state.sources[sourceIndex_].length; i++) { + if (this.applyOpFn != undefined) { + if ( + Object.keys(this.applyOpFn).includes( + this.state.sources[sourceIndex_][i].toString() + ) + ) { + this.applyOpFn[this.state.sources[sourceIndex_][i]]( + this.state, + this.state.sources[sourceIndex_][i + 1], + data + ); + } else { await this.dispatch( this.state, this.state.sources[sourceIndex_][i], - this.state.sources[sourceIndex_][i+1], + this.state.sources[sourceIndex_][i + 1], data ); } - i++; + } else { + await this.dispatch( + this.state, + this.state.sources[sourceIndex_][i], + this.state.sources[sourceIndex_][i + 1], + data + ); } - _startIndex -= valSize_; - _endIndex -= valSize_; + i++; } + _startIndex -= valSize_; + _endIndex -= valSize_; } - else throw new Error("Undefined stack variables") - }, + } else throw new Error('Undefined stack variables'); + }, - [VM.Opcodes.DEBUG] : - (state: StateJS, operand: number, data?: any) => { - if (operand < 4) { - console.log(state.stack); - } - else throw new Error("out-of-bound debug operand") - }, + [VM.Opcodes.DEBUG]: (state: StateJS, operand: number, data?: any) => { + if (operand < 4) { + console.log(state.stack); + } else throw new Error('out-of-bound debug operand'); + }, - [VM.Opcodes.BLOCK_NUMBER] : - async(state: StateJS, operand: number, data?: any) => { - if (this.provider != undefined) { - state.stack.push( - BigNumber.from(await this.provider.getBlockNumber()) - ) - } - else throw new Error("Undefined Provider") - }, + [VM.Opcodes.BLOCK_NUMBER]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this.provider != undefined) { + state.stack.push(BigNumber.from(await this.provider.getBlockNumber())); + } else throw new Error('Undefined Provider'); + }, - [VM.Opcodes.BLOCK_TIMESTAMP] : - async(state: StateJS, operand: number, data?: any) => { - if (this.provider != undefined) { - state.stack.push( - BigNumber.from( - ( - await this.provider.getBlock( - await this.provider.getBlockNumber()) - ).timestamp - ) + [VM.Opcodes.BLOCK_TIMESTAMP]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this.provider != undefined) { + state.stack.push( + BigNumber.from( + (await this.provider.getBlock(await this.provider.getBlockNumber())) + .timestamp ) - } - else throw new Error("Undefined Provider") - }, + ); + } else throw new Error('Undefined Provider'); + }, - [VM.Opcodes.SENDER] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer != undefined) { - state.stack.push( - BigNumber.from(await this.signer.getAddress()) - ) - } - }, + [VM.Opcodes.SENDER]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this.signer != undefined) { + state.stack.push(BigNumber.from(await this.signer.getAddress())); + } + }, - [VM.Opcodes.THIS_ADDRESS] : - async(state: StateJS, operand: number, data?: any) => { - if(this.contract != undefined) { - state.stack.push( - BigNumber.from(this.contract.address) - ) - } - else throw new Error("Undefined contract") - }, - - [VM.Opcodes.SCALE18_MUL] : - (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.mul( - operand <= 18 - ? item1_.mul((10 ** (18 - operand)).toString()) - : item1_.div((10 ** (operand - 18)).toString()) - ) - ) - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.SCALE18_DIV] : - (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - ( - operand <= 18 + [VM.Opcodes.THIS_ADDRESS]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this.contract != undefined) { + state.stack.push(BigNumber.from(this.contract.address)); + } else throw new Error('Undefined contract'); + }, + + [VM.Opcodes.SCALE18_MUL]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.mul( + operand <= 18 ? item1_.mul((10 ** (18 - operand)).toString()) : item1_.div((10 ** (operand - 18)).toString()) - ) - .div(item2_) ) - } - else throw new Error("Undefined stack variables") - }, + ); + } else throw new Error('Undefined stack variables'); + }, - [VM.Opcodes.SCALE18] : - (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ != undefined) { - state.stack.push( - operand <= 18 + [VM.Opcodes.SCALE18_DIV]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + (operand <= 18 + ? item1_.mul((10 ** (18 - operand)).toString()) + : item1_.div((10 ** (operand - 18)).toString()) + ).div(item2_) + ); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.SCALE18]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ != undefined) { + state.stack.push( + operand <= 18 ? item_.mul((10 ** (18 - operand)).toString()) : item_.div((10 ** (operand - 18)).toString()) - ); - } - else throw new Error("Undefined stack variable") - }, + ); + } else throw new Error('Undefined stack variable'); + }, - [VM.Opcodes.SCALEN] : - (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ != undefined) { - state.stack.push( - operand <= 18 + [VM.Opcodes.SCALEN]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ != undefined) { + state.stack.push( + operand <= 18 ? item_.div((10 ** (18 - operand)).toString()) : item_.mul((10 ** (operand - 18)).toString()) - ); - } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.SCALE_BY] : - (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - const operandSign_ = (operand & 255) >> 7; - let _operand = operand & 127; - if (item_ != undefined) { - if (operandSign_) { - state.stack.push( - item_.div((10 ** (_operand)).toString()) - ); - } - else { - state.stack.push( - item_.mul((10 ** (_operand)).toString()) - ); - } + ); + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.SCALE_BY]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + const operandSign_ = (operand & 255) >> 7; + let _operand = operand & 127; + if (item_ != undefined) { + if (operandSign_) { + state.stack.push(item_.div((10 ** _operand).toString())); + } else { + state.stack.push(item_.mul((10 ** _operand).toString())); } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.ADD] : - (state: StateJS, operand: number, data?: any) => { - let _item; - let _accumulator = ethers.constants.Zero; - for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); - if (_item != undefined) { - _accumulator = _accumulator.add(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error("max numeric range overflow") - } + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.ADD]: (state: StateJS, operand: number, data?: any) => { + let _item; + let _accumulator = ethers.constants.Zero; + for (let i = 0; i < operand; i++) { + _item = state.stack.pop(); + if (_item != undefined) { + _accumulator = _accumulator.add(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error('max numeric range overflow'); } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.SATURATING_ADD] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.Zero; - let _item; - for (let i = 0; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.add(_item); - _accumulator = _accumulator.gt(ethers.constants.MaxUint256) + } else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + }, + + [VM.Opcodes.SATURATING_ADD]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.Zero; + let _item; + for (let i = 0; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + _accumulator = _accumulator.add(_item); + _accumulator = _accumulator.gt(ethers.constants.MaxUint256) ? ethers.constants.MaxUint256 : _accumulator; - } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.SUB] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.sub(_item); - } - else throw new Error("Undefined stack variables") - } - if (_accumulator.isNegative()) { - throw new Error("Invalid value (negative value not allowed)") - } - else state.stack.push(_accumulator) - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.SATURATING_SUB] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if(_item != undefined) { - _accumulator = _accumulator?.sub(_item); - _accumulator = _accumulator.gt(0) - ? _accumulator - : ethers.constants.Zero; - } - else throw new Error("Undefined stack variabble") - } - state.stack.push(_accumulator); - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.MUL] : - (state: StateJS, operand: number, data?: any) => { - let _accumulator = ethers.constants.One; - let _item; - for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); + } else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + }, + + [VM.Opcodes.SUB]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { + _item = items_.shift(); if (_item != undefined) { - _accumulator = _accumulator.mul(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error("max numeric range overflow") - } - } - else throw new Error("Undefined stack variables") + _accumulator = _accumulator.sub(_item); + } else throw new Error('Undefined stack variables'); } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.SATURATING_MUL] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.One; - let _item; - for (let i = 0; i < operand; i++) { + if (_accumulator.isNegative()) { + throw new Error('Invalid value (negative value not allowed)'); + } else state.stack.push(_accumulator); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.SATURATING_SUB]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.mul(_item); - _accumulator = _accumulator.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : _accumulator; - } - else throw new Error("Undefined stack variables") + if (_item != undefined) { + _accumulator = _accumulator?.sub(_item); + _accumulator = _accumulator.gt(0) + ? _accumulator + : ethers.constants.Zero; + } else throw new Error('Undefined stack variabble'); } state.stack.push(_accumulator); - }, - - [VM.Opcodes.DIV] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.div(_item); - } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.MOD] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.mod(_item); - } - else throw new Error("Undefined stack variables") - } - state.stack.push(_accumulator); - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.EXP] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.pow(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error("max numeric range overflow") - } - } - else throw new Error("Undefined stack variables") + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.MUL]: (state: StateJS, operand: number, data?: any) => { + let _accumulator = ethers.constants.One; + let _item; + for (let i = 0; i < operand; i++) { + _item = state.stack.pop(); + if (_item != undefined) { + _accumulator = _accumulator.mul(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error('max numeric range overflow'); } - state.stack.push(_accumulator); - } - else throw new Error("Undefined stack variables") - }, + } else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + }, - [VM.Opcodes.MIN] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - if (items_.length == operand) { - state.stack.push( - items_.reduce((e, m) => e.lt(m) ? e : m) - ); - } - else throw new Error("Undefined stack variables") - }, + [VM.Opcodes.SATURATING_MUL]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.One; + let _item; + for (let i = 0; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + _accumulator = _accumulator.mul(_item); + _accumulator = _accumulator.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : _accumulator; + } else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + }, - [VM.Opcodes.MAX] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - if (items_.length = operand) { - state.stack.push( - items_.reduce((e, m) => e.gt(m) ? e : m) - ); + [VM.Opcodes.DIV]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + _accumulator = _accumulator.div(_item); + } else throw new Error('Undefined stack variables'); } - else throw new Error("Undefined stack variables") - }, + state.stack.push(_accumulator); + } else throw new Error('Undefined stack variables'); + }, - [VM.Opcodes.ISZERO] : - (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ != undefined) { - state.stack.push( - item_.isZero() - ? ethers.constants.One - : ethers.constants.Zero - ); - } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.EAGER_IF] : - (state: StateJS, operand: number, data?: any) => { - const false_ = state.stack.pop(); - const true_ = state.stack.pop(); - const condition_ = state.stack.pop(); - if (false_ && true_ && condition_ != undefined) { - state.stack.push( - condition_.gt(0) ? true_ : false_ - ) - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.EQUAL_TO] : - (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.eq(item1_) - ? ethers.constants.One - : ethers.constants.Zero - ); - } - else throw new Error("Underfined stack variables") - }, - - [VM.Opcodes.LESS_THAN] : - (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.gt(item1_) - ? ethers.constants.One - : ethers.constants.Zero - ); - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.GREATER_THAN] : - (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.lt(item1_) - ? ethers.constants.One - : ethers.constants.Zero - ); - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.EVERY] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _check; - let _item; - for (let i = 0; i < operand; i++) { + [VM.Opcodes.MOD]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { _item = items_.shift(); if (_item != undefined) { - if (_item.isZero()) { - _check = ethers.constants.Zero; - break; - } - else _check = ethers.constants.One; - } - else throw new Error("Undefined stack variables") - } - if (_check != undefined) { - state.stack.push(_check); + _accumulator = _accumulator.mod(_item); + } else throw new Error('Undefined stack variables'); } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.ANY] : - (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _check; - let _item; - for (let i = 0; i < operand; i++) { + state.stack.push(_accumulator); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.EXP]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { _item = items_.shift(); if (_item != undefined) { - if (_item.gt(0)) { - _check = ethers.constants.One; - break; + _accumulator = _accumulator.pow(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error('max numeric range overflow'); } - else _check = ethers.constants.Zero; - } - else throw new Error("Undefined stack variables") + } else throw new Error('Undefined stack variables'); } - if (_check != undefined) { - state.stack.push(_check); - } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.REPORT] : - async(state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); - const iTierContract = new ITier( - "0x" + item1_.toHexString().substring(2).padStart(40, "0"), - this.signer + state.stack.push(_accumulator); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.MIN]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + if (items_.length == operand) { + state.stack.push(items_.reduce((e, m) => (e.lt(m) ? e : m))); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.MAX]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + if ((items_.length = operand)) { + state.stack.push(items_.reduce((e, m) => (e.gt(m) ? e : m))); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.ISZERO]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ != undefined) { + state.stack.push( + item_.isZero() ? ethers.constants.One : ethers.constants.Zero + ); + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.EAGER_IF]: (state: StateJS, operand: number, data?: any) => { + const false_ = state.stack.pop(); + const true_ = state.stack.pop(); + const condition_ = state.stack.pop(); + if (false_ && true_ && condition_ != undefined) { + state.stack.push(condition_.gt(0) ? true_ : false_); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.EQUAL_TO]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } else throw new Error('Underfined stack variables'); + }, + + [VM.Opcodes.LESS_THAN]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.GREATER_THAN]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.EVERY]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _check; + let _item; + for (let i = 0; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + if (_item.isZero()) { + _check = ethers.constants.Zero; + break; + } else _check = ethers.constants.One; + } else throw new Error('Undefined stack variables'); + } + if (_check != undefined) { + state.stack.push(_check); + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.ANY]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _check; + let _item; + for (let i = 0; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + if (_item.gt(0)) { + _check = ethers.constants.One; + break; + } else _check = ethers.constants.Zero; + } else throw new Error('Undefined stack variables'); + } + if (_check != undefined) { + state.stack.push(_check); + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.REPORT]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const account_ = + '0x' + item2_.toHexString().substring(2).padStart(40, '0'); + const iTierContract = new ITier( + '0x' + item1_.toHexString().substring(2).padStart(40, '0'), + this.signer + ); + state.stack.push( + // TODO: @rouzwelt + //@ts-ignore + await iTierContract.report(account_) + ); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.SATURATING_DIFF]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const report2_ = state.stack + .pop() + ?.toHexString() + .substring(2) + .padStart(64, '0'); + const report1_ = state.stack + .pop() + ?.toHexString() + .substring(2) + .padStart(64, '0'); + if (report1_ && report2_ != undefined) { + let _startIndex = 0; + let _endIndex = 8; + let _result = ''; + let _tierRep1; + let _tierRep2; + + for (let i = 0; i < 8; i++) { + _tierRep1 = BigNumber.from( + '0x' + report1_.slice(_startIndex, _endIndex) ); - state.stack.push( - // TODO: @rouzwelt - //@ts-ignore - await iTierContract.report(account_,) + _tierRep2 = BigNumber.from( + '0x' + report2_.slice(_startIndex, _endIndex) ); + _result += _tierRep1.gt(_tierRep2) + ? _tierRep1 + .sub(_tierRep2) + .toHexString() + .substring(2) + .padStart(8, '0') + : '00000000'; + _startIndex += 8; + _endIndex += 8; } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.SATURATING_DIFF] : - (state: StateJS, operand: number, data?: any) => { - const report2_ = state.stack.pop()?.toHexString().substring(2).padStart(64, "0"); - const report1_ = state.stack.pop()?.toHexString().substring(2).padStart(64, "0"); - if (report1_ && report2_ != undefined) { - let _startIndex = 0; - let _endIndex = 8; - let _result = ""; - let _tierRep1; - let _tierRep2; - - for (let i = 0; i < 8; i++) { - _tierRep1 = BigNumber.from("0x" + report1_.slice(_startIndex, _endIndex)); - _tierRep2 = BigNumber.from("0x" + report2_.slice(_startIndex, _endIndex)); - _result += - _tierRep1.gt(_tierRep2) - ? (_tierRep1.sub(_tierRep2)).toHexString().substring(2).padStart(8, "0") - : "00000000"; - _startIndex += 8; - _endIndex += 8; - } - state.stack.push(BigNumber.from("0x" + _result)) - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE] : - (state: StateJS, operand: number, data?: any) => { - const endTier_ = operand >> 4; - const startTier_ = operand & 15; - const blockNumber_ = state.stack.pop()?.toHexString().substring(2).padStart(8, "0"); - const report_ = state.stack.pop()?.toHexString().substring(2).padStart(64, "0"); - if (report_ && blockNumber_ != undefined) { - let _startIndex = (8 - endTier_) * 8; - let _endIndex = _startIndex + 8; - let _result = report_.slice(0, _startIndex); - const resultLow_ = report_.slice( - _startIndex + ((endTier_ - startTier_) * 8) - ); + state.stack.push(BigNumber.from('0x' + _result)); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const endTier_ = operand >> 4; + const startTier_ = operand & 15; + const blockNumber_ = state.stack + .pop() + ?.toHexString() + .substring(2) + .padStart(8, '0'); + const report_ = state.stack + .pop() + ?.toHexString() + .substring(2) + .padStart(64, '0'); + if (report_ && blockNumber_ != undefined) { + let _startIndex = (8 - endTier_) * 8; + let _endIndex = _startIndex + 8; + let _result = report_.slice(0, _startIndex); + const resultLow_ = report_.slice( + _startIndex + (endTier_ - startTier_) * 8 + ); - for (let i = 0; i < endTier_ - startTier_; i++) { - _result += - report_.slice(_startIndex, _endIndex) > blockNumber_ + for (let i = 0; i < endTier_ - startTier_; i++) { + _result += + report_.slice(_startIndex, _endIndex) > blockNumber_ ? blockNumber_ : report_.slice(_startIndex, _endIndex); - _startIndex += 8; - _endIndex += 8; - } - state.stack.push(BigNumber.from("0x" + _result + resultLow_)) + _startIndex += 8; + _endIndex += 8; } - else throw new Error ("Undefined stack variables") - }, - - [VM.Opcodes.SELECT_LTE] : - (state: StateJS, operand: number, data?: any) => { - const length_ = operand & 31; - const mode_ = (operand & 96) >> 5; - const logic_ = (operand & 128) >> 7; - const blockNumber_ = state.stack.pop()?.toHexString().substring(2).padStart(8, "0"); - let _item; - // array of raw reports - let _reports: string[] = []; - // array of array of each tier's lte report - let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; - let _result = ""; - - //building an array of each tier's report against blockNumber_ - //tiers greater than blockNumber_ will get "ffffffff" - if (blockNumber_ != undefined) { - for(let i = 0; i < length_; i++) { - let _startIndex = 0; - let _endIndex = 8; - _item = state.stack.pop(); - if (_item != undefined) { - _reports[i] = _item.toHexString().substring(2).padStart(64, "0"); - for(let j = 0; j < 8; j++) { - _reportsAtTier[j].push( - (blockNumber_ < _reports[i].slice(_startIndex, _endIndex)) - ? "ffffffff" - :_reports[i].slice(_startIndex, _endIndex) - ); - _startIndex += 8; - _endIndex += 8; - } + state.stack.push(BigNumber.from('0x' + _result + resultLow_)); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.SELECT_LTE]: (state: StateJS, operand: number, data?: any) => { + const length_ = operand & 31; + const mode_ = (operand & 96) >> 5; + const logic_ = (operand & 128) >> 7; + const blockNumber_ = state.stack + .pop() + ?.toHexString() + .substring(2) + .padStart(8, '0'); + let _item; + // array of raw reports + let _reports: string[] = []; + // array of array of each tier's lte report + let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; + let _result = ''; + + //building an array of each tier's report against blockNumber_ + //tiers greater than blockNumber_ will get "ffffffff" + if (blockNumber_ != undefined) { + for (let i = 0; i < length_; i++) { + let _startIndex = 0; + let _endIndex = 8; + _item = state.stack.pop(); + if (_item != undefined) { + _reports[i] = _item.toHexString().substring(2).padStart(64, '0'); + for (let j = 0; j < 8; j++) { + _reportsAtTier[j].push( + blockNumber_ < _reports[i].slice(_startIndex, _endIndex) + ? 'ffffffff' + : _reports[i].slice(_startIndex, _endIndex) + ); + _startIndex += 8; + _endIndex += 8; } - else throw new Error("Undefined stack variables") - } + } else throw new Error('Undefined stack variables'); } - else throw new Error("Undefined stack variable") - - // logic_ and mode_ selections - if (logic_) { - for (let i = 0; i < 8; i++) { - if (mode_ == 0) { - _reportsAtTier[i] = [ - _reportsAtTier[i] - .reduce((e, m) => e < m ? e : m) - ] - } - else if (mode_ == 1) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter((e) => e != "ffffffff") - _reportsAtTier[i] = _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i].reduce((e, m) => e > m ? e : m)] - : ["ffffffff"] - } - else if (mode_ == 2) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter((e) => e != "ffffffff") - _reportsAtTier[i] = _reportsAtTier[i].length > 0 + } else throw new Error('Undefined stack variable'); + + // logic_ and mode_ selections + if (logic_) { + for (let i = 0; i < 8; i++) { + if (mode_ == 0) { + _reportsAtTier[i] = [ + _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), + ]; + } else if (mode_ == 1) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e != 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] + : ['ffffffff']; + } else if (mode_ == 2) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e != 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] - : ["ffffffff"] - } - } - } - else { - for (let i = 0; i < 8; i++) { - if (mode_ == 0) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes("ffffffff") - ? ["ffffffff"] - : [_reportsAtTier[i].reduce((e, m) => e < m ? e : m)] - } - else if (mode_ == 1) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes("ffffffff") - ? ["ffffffff"] - : [_reportsAtTier[i].reduce((e, m) => e > m ? e : m)] - } - else if (mode_ == 2) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes("ffffffff") - ? ["ffffffff"] - : [_reportsAtTier[i][_reportsAtTier[i].length - 1]] - } + : ['ffffffff']; } } - //building the final report + } else { for (let i = 0; i < 8; i++) { - _result += _reportsAtTier[i][0]; - } - state.stack.push(BigNumber.from("0x" + _result)); - }, - - [VM.Opcodes.IERC20_BALANCE_OF] : - async(state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); - const erc20Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); - const erc20Contract_ = new ERC20( - erc20Address_, - this.signer - ) - state.stack.push( - await erc20Contract_.balanceOf(account_) - ) - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.IERC20_TOTAL_SUPPLY] : - async(state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ && this.signer != undefined) { - const erc20Address_ = "0x" + item_.toHexString().substring(2).padStart(40, "0"); - const erc20Contract_ = new ERC20( - erc20Address_, - this.signer - ) - state.stack.push( - await erc20Contract_.totalSupply() - ) - } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.IERC721_BALANCE_OF] : - async(state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); - const erc721Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); - const erc721Contract_ = new ERC721( - erc721Address_, - this.signer - ) - state.stack.push( - await erc721Contract_.balanceOf(account_) - ) - } - else throw new Error("Undefined stack variables") - }, - - [VM.Opcodes.IERC721_OWNER_OF] : - async(state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const tokenId_ = BigNumber.from(item2_); - const erc721Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); - const erc721Contract_ = new ERC721( - erc721Address_, - this.signer - ) - state.stack.push( - BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) - ) - } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.IERC1155_BALANCE_OF] : - async(state: StateJS, operand: number, data?: any) => { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer != undefined) { - const id_ = BigNumber.from(item3_); - const account_ = "0x" + item2_.toHexString().substring(2).padStart(40, "0"); - const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); - const erc1155Contract_ = new ERC1155( - erc1155Address_, - this.signer - ) - state.stack.push( - await erc1155Contract_.balanceOf(account_, id_) - ) + if (mode_ == 0) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; + } else if (mode_ == 1) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; + } else if (mode_ == 2) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; + } } - else throw new Error("Undefined stack variables") - }, + } + //building the final report + for (let i = 0; i < 8; i++) { + _result += _reportsAtTier[i][0]; + } + state.stack.push(BigNumber.from('0x' + _result)); + }, + + [VM.Opcodes.IERC20_BALANCE_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const account_ = + '0x' + item2_.toHexString().substring(2).padStart(40, '0'); + const erc20Address_ = + '0x' + item1_.toHexString().substring(2).padStart(40, '0'); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); + state.stack.push(await erc20Contract_.balanceOf(account_)); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC20_TOTAL_SUPPLY]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item_ = state.stack.pop(); + if (item_ && this.signer != undefined) { + const erc20Address_ = + '0x' + item_.toHexString().substring(2).padStart(40, '0'); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); + state.stack.push(await erc20Contract_.totalSupply()); + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC721_BALANCE_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const account_ = + '0x' + item2_.toHexString().substring(2).padStart(40, '0'); + const erc721Address_ = + '0x' + item1_.toHexString().substring(2).padStart(40, '0'); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); + state.stack.push(await erc721Contract_.balanceOf(account_)); + } else throw new Error('Undefined stack variables'); + }, - [VM.Opcodes.IERC1155_BALANCE_OF_BATCH] : - async(state: StateJS, operand: number, data?: any) => { + [VM.Opcodes.IERC721_OWNER_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const tokenId_ = BigNumber.from(item2_); + const erc721Address_ = + '0x' + item1_.toHexString().substring(2).padStart(40, '0'); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); + state.stack.push( + BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) + ); + } else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ && this.signer != undefined) { + const id_ = BigNumber.from(item3_); + const account_ = + '0x' + item2_.toHexString().substring(2).padStart(40, '0'); + const erc1155Address_ = + '0x' + item1_.toHexString().substring(2).padStart(40, '0'); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); + } else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: async ( + state: StateJS, + operand: number, + data?: any + ) => { const item3_ = state.stack.splice(-(operand + 1)); const item2_ = state.stack.splice(-(operand + 1)); const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer != undefined && item2_.length == item3_.length) { + if ( + item1_ && + item2_ && + item3_ && + this.signer != undefined && + item2_.length == item3_.length + ) { const tokenIds_: BigNumber[] = []; for (let i = 0; i < item3_.length; i++) { - tokenIds_.push( - BigNumber.from(item3_[i]) - ) - }; + tokenIds_.push(BigNumber.from(item3_[i])); + } const accounts_: string[] = []; for (let i = 0; i < item2_.length; i++) { accounts_.push( - "0x" + item2_[i].toHexString().substring(2).padStart(40, "0") - ) - }; - const erc1155Address_ = "0x" + item1_.toHexString().substring(2).padStart(40, "0"); - const erc1155Contract_ = new ERC1155( - erc1155Address_, - this.signer - ) + '0x' + item2_[i].toHexString().substring(2).padStart(40, '0') + ); + } + const erc1155Address_ = + '0x' + item1_.toHexString().substring(2).padStart(40, '0'); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); state.stack.push( ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) - ) - } - else throw new Error("Undefined stack variable") + ); + } else throw new Error('Undefined stack variable'); }, - } - -} \ No newline at end of file + }; +} diff --git a/src/classes/vm.ts b/src/classes/vm.ts index c15bacd..50c24cc 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -52,19 +52,19 @@ export enum AllStandardOps { /** * Opcode for `IERC20` `balanceOf`. */ - ERC20_BALANCE_OF, + IERC20_BALANCE_OF, /** * Opcode for `IERC20` `totalSupply`. */ - ERC20_TOTAL_SUPPLY, + IERC20_TOTAL_SUPPLY, /** * Opcode for `IERC20` use an Snapshot `balanceOfAt`. */ - ERC20_SNAPSHOT_BALANCE_OF_AT, + IERC20_SNAPSHOT_BALANCE_OF_AT, /** * Opcode for `IERC20` use an Snapshot `totalSupplyAt`. */ - ERC20_SNAPSHOT_TOTAL_SUPPLY_AT, + IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, /** * Opcode for `IERC721` `balanceOf`. */ diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 51fa791..1bb3699 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -2,7 +2,7 @@ import { StateConfig, VM } from '../../classes/vm'; import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; import { CombineTierContext } from '../tiers/combineTier'; import { Tier } from '../../classes/tierContract'; -import { +import { concat, op, selectLte, @@ -11,44 +11,36 @@ import { paddedUInt32, paddedUInt256, selectLteLogic, - selectLteMode + selectLteMode, } from '../../utils'; - - /** * @public The script generator for generating CombineTier scripts although it is worth mentioning that * the usecases would not be only limited to CombineTier contract and can be used for any script. - * + * * @example new CombineTier(a tierAddress or a StateConfig) */ export class CombineTierGenerator { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; /** * Constructor for this class - * + * * @param reportVar - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) */ - constructor (reportVar: string | StateConfig) { - - if (typeof reportVar == "string") { + constructor(reportVar: string | StateConfig) { + if (typeof reportVar == 'string') { this.constants = [reportVar]; this.sources = [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op( - VM.Opcodes.CONTEXT, - CombineTierContext.Account - ), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONTEXT, CombineTierContext.Account), op(VM.Opcodes.REPORT), - ]) + ]), ]; - } - else { + } else { this.constants = reportVar.constants; this.sources = reportVar.sources; } @@ -56,36 +48,34 @@ export class CombineTierGenerator { /** * Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode - * + * * @param reportVar - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) * @param logic - selectLte logic * @param mode - selectLte mode * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_NUMBER - * + * * @returns this */ - public combine ( + public combine( reportVar: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, number?: number - ) : this { - - const _buttom: StateConfig = typeof reportVar == "string" - ? new CombineTierGenerator(reportVar) - : reportVar; + ): this { + const _buttom: StateConfig = + typeof reportVar == 'string' + ? new CombineTierGenerator(reportVar) + : reportVar; const _combiner: StateConfig = { constants: number ? [number] : [], sources: [ concat([ - number - ? op(VM.Opcodes.CONSTANTS, 0) - : op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)) - ]) + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), + ]), ], - } + }; let _result: StateConfig = VM.combiner(_buttom, _combiner); _result = VM.combiner(this, _result); @@ -98,31 +88,28 @@ export class CombineTierGenerator { /** * Method to update a report at given tier range (can be any range between 0 to 8) - * + * * @param startTier - start of the report updating range (exclusive) * @param endTier - end of the report updating range (inclusive) * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_NUMBER - * + * * @returns this */ - public updateReportAtTierRange ( + public updateReportAtTierRange( startTier: Tier, endTier: Tier, number?: number - ) : this { - + ): this { const _updater: StateConfig = { constants: number ? [number] : [], sources: [ concat([ - number - ? op(VM.Opcodes.CONSTANTS, 0) - : op(VM.Opcodes.BLOCK_NUMBER), + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_NUMBER), op( VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(startTier, endTier) ), - ]) + ]), ], }; @@ -131,32 +118,25 @@ export class CombineTierGenerator { this.constants = _result.constants; this.sources = _result.sources; - return this + return this; } - /** * Saturating difference between 2 reports - * + * * @param reportVar - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) - * + * * @returns this */ - public satDiff ( - reportVar: string | StateConfig, - ) : this { - - const _buttom: StateConfig = typeof reportVar == "string" - ? new CombineTierGenerator(reportVar) - : reportVar; + public satDiff(reportVar: string | StateConfig): this { + const _buttom: StateConfig = + typeof reportVar == 'string' + ? new CombineTierGenerator(reportVar) + : reportVar; const _differ: StateConfig = { constants: [], - sources: [ - concat([ - op(VM.Opcodes.SATURATING_DIFF) - ]) - ], + sources: [concat([op(VM.Opcodes.SATURATING_DIFF)])], }; let _result: StateConfig = VM.combiner(_buttom, _differ); @@ -168,80 +148,105 @@ export class CombineTierGenerator { return this; } - /** * Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. - * + * * @param reportVar - either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) * @param numberOfBlocks - A number or an array of numbers represting the number of blocks a given tier must be held to get ALWAYS report or else it gets NEVER report. - * + * * @returns this */ - public holdingTimeTransferTier ( + public holdingTimeTransferTier( reportVar: string | StateConfig, - numberOfBlocks: number | number[], - ) : this { - - const _report: StateConfig = typeof reportVar == "string" - ? new CombineTierGenerator(reportVar) - : reportVar; + numberOfBlocks: number | number[] + ): this { + const _report: StateConfig = + typeof reportVar == 'string' + ? new CombineTierGenerator(reportVar) + : reportVar; const _shifter = paddedUInt256( BigNumber.from( - "0x" + - paddedUInt32("7") + - paddedUInt32("6") + - paddedUInt32("5") + - paddedUInt32("4") + - paddedUInt32("3") + - paddedUInt32("2") + - paddedUInt32("1") + - paddedUInt32("0") + '0x' + + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + + paddedUInt32('0') ) ); const _blocks = paddedUInt256( BigNumber.from( - "0x" + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[7]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[6]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[5]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[4]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[3]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[2]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[1]) + - paddedUInt32(typeof numberOfBlocks == "number" ? numberOfBlocks : numberOfBlocks[0]) + '0x' + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[7] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[6] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[5] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[4] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[3] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[2] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[1] + ) + + paddedUInt32( + typeof numberOfBlocks == 'number' + ? numberOfBlocks + : numberOfBlocks[0] + ) ) ); let _result: StateConfig = { - constants: [ - _blocks, - _shifter, - "100000000", - "0", - "0xffffffff" - ], + constants: [_blocks, _shifter, '100000000', '0', '0xffffffff'], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.ZIPMAP, callSize(1, 3, 2)), - op(VM.Opcodes.ADD, 8) + op(VM.Opcodes.ADD, 8), ]), concat([ op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.CONSTANT, 5), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.CONSTANT, 6), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANTS, 4), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.EXP, 2), - ]) + ]), ], }; @@ -252,22 +257,19 @@ export class CombineTierGenerator { return this; } -}; - +} /** * @public A class for creating a report-like script which inherits from CombineTierGenerator */ export class BuildReport extends CombineTierGenerator { - /** - * Contructor of this class - * + * Contructor of this class + * * @param number - (optional) A number or an array of numbers represting the report at each tier, * if not passed, BLOCK_NUMBER will be used to creat the report of each tier */ - constructor (number?: number | number[]) { - + constructor(number?: number | number[]) { let _result: StateConfig; if (number != undefined) { @@ -275,40 +277,83 @@ export class BuildReport extends CombineTierGenerator { constants: [ paddedUInt256( BigNumber.from( - "0x" + - paddedUInt32(typeof number == "number" ? number : number[7] != undefined ? number[7] : 0) + - paddedUInt32(typeof number == "number" ? number : number[6] != undefined ? number[6] : 0) + - paddedUInt32(typeof number == "number" ? number : number[5] != undefined ? number[5] : 0) + - paddedUInt32(typeof number == "number" ? number : number[4] != undefined ? number[4] : 0) + - paddedUInt32(typeof number == "number" ? number : number[3] != undefined ? number[3] : 0) + - paddedUInt32(typeof number == "number" ? number : number[2] != undefined ? number[2] : 0) + - paddedUInt32(typeof number == "number" ? number : number[1] != undefined ? number[1] : 0) + - paddedUInt32(typeof number == "number" ? number : number[0] != undefined ? number[0] : 0) + '0x' + + paddedUInt32( + typeof number == 'number' + ? number + : number[7] != undefined + ? number[7] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[6] != undefined + ? number[6] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[5] != undefined + ? number[5] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[4] != undefined + ? number[4] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[3] != undefined + ? number[3] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[2] != undefined + ? number[2] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[1] != undefined + ? number[1] + : 0 + ) + + paddedUInt32( + typeof number == 'number' + ? number + : number[0] != undefined + ? number[0] + : 0 + ) ) - ) - ], - sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0) - ]) + ), ], - } - } - else { + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], + }; + } else { _result = { constants: [ethers.constants.MaxUint256], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) - ) - ]) + ), + ]), ], - } + }; } super(_result); } -} \ No newline at end of file +} diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index cb0af50..c942b7e 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -2,7 +2,7 @@ import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; import { EmissionsERC20Context } from '../emissionsERC20'; import { Tier } from '../../classes/tierContract'; import { VM } from '../../classes/vm'; -import { +import { concat, op, selectLte, @@ -11,10 +11,9 @@ import { paddedUInt32, paddedUInt256, selectLteLogic, - selectLteMode + selectLteMode, } from '../../utils'; - /** * @public * A type for newing Emissions script @@ -43,40 +42,38 @@ export type EmissionsConfig = { tier7: number; tier8: number; }; - numberOfIncrements?: number; + numberOfIncrements?: number; }; - /** * @public A linear minting emissions over a period of time. holding more before claiming would result in a more reward. - * + * */ export class LinearEmissions { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; /** * Constructor for this class - * + * * @param config - An EmissionsConfig */ - constructor (config: EmissionsConfig) { + constructor(config: EmissionsConfig) { + const eighteenZeros = '000000000000000000'; + const sixZeros = '000000'; - const eighteenZeros = "000000000000000000"; - const sixZeros = "000000"; + const BN_ONE = BigNumber.from('1' + eighteenZeros); - const BN_ONE = BigNumber.from("1" + eighteenZeros); - - // We're using uints, so we need to scale reward per block up to get out of the decimal places, but a precision of 18 zeros is + // We're using uints, so we need to scale reward per block up to get out of the decimal places, but a precision of 18 zeros is // too much to fit within a uint32 (since we store block rewards per tier in a report-like format). Six zeros should be enough. - const BN_ONE_REWARD = BigNumber.from("1" + sixZeros); + const BN_ONE_REWARD = BigNumber.from('1' + sixZeros); const BLOCKS_PER_PERIOD = Math.floor(config.period / config.blockTime); - const PERIODIC_REWARD_TIER1 = BigNumber.from(config.periodicRewards.tier1) - .mul(BN_ONE_REWARD); - + const PERIODIC_REWARD_TIER1 = BigNumber.from( + config.periodicRewards.tier1 + ).mul(BN_ONE_REWARD); + const PERIODIC_REWARD_TIER2 = BigNumber.from(config.periodicRewards.tier2) .mul(BN_ONE_REWARD) .sub(PERIODIC_REWARD_TIER1); @@ -87,44 +84,48 @@ export class LinearEmissions { const PERIODIC_REWARD_TIER4 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER3.add(PERIODIC_REWARD_TIER2).add(PERIODIC_REWARD_TIER1)); + .sub( + PERIODIC_REWARD_TIER3.add(PERIODIC_REWARD_TIER2).add( + PERIODIC_REWARD_TIER1 + ) + ); const PERIODIC_REWARD_TIER5 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER4 - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER4.add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_TIER6 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER5 - .add(PERIODIC_REWARD_TIER4) - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER5.add(PERIODIC_REWARD_TIER4) + .add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_TIER7 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER6 - .add(PERIODIC_REWARD_TIER5) - .add(PERIODIC_REWARD_TIER4) - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER6.add(PERIODIC_REWARD_TIER5) + .add(PERIODIC_REWARD_TIER4) + .add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_TIER8 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER7 - .add(PERIODIC_REWARD_TIER6) - .add(PERIODIC_REWARD_TIER5) - .add(PERIODIC_REWARD_TIER4) - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER7.add(PERIODIC_REWARD_TIER6) + .add(PERIODIC_REWARD_TIER5) + .add(PERIODIC_REWARD_TIER4) + .add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const REWARD_PER_BLOCK_TIER1 = PERIODIC_REWARD_TIER1.div(BLOCKS_PER_PERIOD); @@ -138,34 +139,34 @@ export class LinearEmissions { const BASE_REWARD_PER_TIER = paddedUInt256( ethers.BigNumber.from( - "0x" + - paddedUInt32(REWARD_PER_BLOCK_TIER8) + - paddedUInt32(REWARD_PER_BLOCK_TIER7) + - paddedUInt32(REWARD_PER_BLOCK_TIER6) + - paddedUInt32(REWARD_PER_BLOCK_TIER5) + - paddedUInt32(REWARD_PER_BLOCK_TIER4) + - paddedUInt32(REWARD_PER_BLOCK_TIER3) + - paddedUInt32(REWARD_PER_BLOCK_TIER2) + - paddedUInt32(REWARD_PER_BLOCK_TIER1) + '0x' + + paddedUInt32(REWARD_PER_BLOCK_TIER8) + + paddedUInt32(REWARD_PER_BLOCK_TIER7) + + paddedUInt32(REWARD_PER_BLOCK_TIER6) + + paddedUInt32(REWARD_PER_BLOCK_TIER5) + + paddedUInt32(REWARD_PER_BLOCK_TIER4) + + paddedUInt32(REWARD_PER_BLOCK_TIER3) + + paddedUInt32(REWARD_PER_BLOCK_TIER2) + + paddedUInt32(REWARD_PER_BLOCK_TIER1) ) ); // prettier-ignore const REWARD = () => concat([ - op(VM.Opcodes.CONSTANTS, 6), - op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.MUL, 2), ]); // prettier-ignore const PROGRESS = () => concat([ - op(VM.Opcodes.CONSTANTS, 4), - op(VM.Opcodes.CONSTANTS, 6), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.MIN, 2), ]); @@ -174,7 +175,7 @@ export class LinearEmissions { const MULTIPLIER = () => concat([ PROGRESS(), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.ADD, 2), ]); @@ -184,14 +185,14 @@ export class LinearEmissions { REWARD(), MULTIPLIER(), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.CONSTANT, 5), op(VM.Opcodes.DIV, 2), ]); // prettier-ignore const CURRENT_BLOCK_AS_REPORT = () => concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, @@ -213,7 +214,7 @@ export class LinearEmissions { // prettier-ignore const TIER_REPORT = () => concat([ - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op( VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount @@ -239,7 +240,7 @@ export class LinearEmissions { const SOURCE = () => concat([ TIERWISE_DIFF(), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), op(VM.Opcodes.ADD, 8), ]); @@ -253,44 +254,39 @@ export class LinearEmissions { BN_ONE_REWARD, ]; this.sources = [SOURCE(), FN()]; - - }; - + } } - /** * @public * A sequential minting emission, minting can only be done once in every period of time, * also can set a max reward with increment over the span of several periods. */ export class SequentialEmissions { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; /** * Constructor for this class - * + * * @param config - An EmissionsConfig */ - constructor (config: EmissionsConfig) { - - - const eighteenZeros = "000000000000000000"; - const sixZeros = "000000"; + constructor(config: EmissionsConfig) { + const eighteenZeros = '000000000000000000'; + const sixZeros = '000000'; - const BN_ONE = BigNumber.from("1" + eighteenZeros); + const BN_ONE = BigNumber.from('1' + eighteenZeros); - // We're using uints, so we need to scale reward per block up to get out of the decimal places, but a precision of 18 zeros is + // We're using uints, so we need to scale reward per block up to get out of the decimal places, but a precision of 18 zeros is // too much to fit within a uint32 (since we store block rewards per tier in a report-like format). Six zeros should be enough. - const BN_ONE_REWARD = BigNumber.from("1" + sixZeros); + const BN_ONE_REWARD = BigNumber.from('1' + sixZeros); const BLOCKS_PER_PERIOD = Math.floor(config.period / config.blockTime); - const PERIODIC_REWARD_TIER1 = BigNumber.from(config.periodicRewards.tier1) - .mul(BN_ONE_REWARD); - + const PERIODIC_REWARD_TIER1 = BigNumber.from( + config.periodicRewards.tier1 + ).mul(BN_ONE_REWARD); + const PERIODIC_REWARD_TIER2 = BigNumber.from(config.periodicRewards.tier2) .mul(BN_ONE_REWARD) .sub(PERIODIC_REWARD_TIER1); @@ -301,141 +297,189 @@ export class SequentialEmissions { const PERIODIC_REWARD_TIER4 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER3.add(PERIODIC_REWARD_TIER2).add(PERIODIC_REWARD_TIER1)); + .sub( + PERIODIC_REWARD_TIER3.add(PERIODIC_REWARD_TIER2).add( + PERIODIC_REWARD_TIER1 + ) + ); const PERIODIC_REWARD_TIER5 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER4 - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER4.add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_TIER6 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER5 - .add(PERIODIC_REWARD_TIER4) - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER5.add(PERIODIC_REWARD_TIER4) + .add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_TIER7 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER6 - .add(PERIODIC_REWARD_TIER5) - .add(PERIODIC_REWARD_TIER4) - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER6.add(PERIODIC_REWARD_TIER5) + .add(PERIODIC_REWARD_TIER4) + .add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_TIER8 = BigNumber.from(config.periodicRewards.tier4) .mul(BN_ONE_REWARD) - .sub(PERIODIC_REWARD_TIER7 - .add(PERIODIC_REWARD_TIER6) - .add(PERIODIC_REWARD_TIER5) - .add(PERIODIC_REWARD_TIER4) - .add(PERIODIC_REWARD_TIER3) - .add(PERIODIC_REWARD_TIER2) - .add(PERIODIC_REWARD_TIER1) + .sub( + PERIODIC_REWARD_TIER7.add(PERIODIC_REWARD_TIER6) + .add(PERIODIC_REWARD_TIER5) + .add(PERIODIC_REWARD_TIER4) + .add(PERIODIC_REWARD_TIER3) + .add(PERIODIC_REWARD_TIER2) + .add(PERIODIC_REWARD_TIER1) ); const PERIODIC_REWARD_PER_TIER = paddedUInt256( ethers.BigNumber.from( - "0x" + - paddedUInt32(PERIODIC_REWARD_TIER8) + - paddedUInt32(PERIODIC_REWARD_TIER7) + - paddedUInt32(PERIODIC_REWARD_TIER6) + - paddedUInt32(PERIODIC_REWARD_TIER5) + - paddedUInt32(PERIODIC_REWARD_TIER4) + - paddedUInt32(PERIODIC_REWARD_TIER3) + - paddedUInt32(PERIODIC_REWARD_TIER2) + - paddedUInt32(PERIODIC_REWARD_TIER1) + '0x' + + paddedUInt32(PERIODIC_REWARD_TIER8) + + paddedUInt32(PERIODIC_REWARD_TIER7) + + paddedUInt32(PERIODIC_REWARD_TIER6) + + paddedUInt32(PERIODIC_REWARD_TIER5) + + paddedUInt32(PERIODIC_REWARD_TIER4) + + paddedUInt32(PERIODIC_REWARD_TIER3) + + paddedUInt32(PERIODIC_REWARD_TIER2) + + paddedUInt32(PERIODIC_REWARD_TIER1) ) ); - - const PERIODIC_MAX_TIER1 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier1 - config.periodicRewards.tier1) - .mul(BN_ONE_REWARD) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER2 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier2 - config.periodicRewards.tier2) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER1) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER3 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier3 - config.periodicRewards.tier3) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER2.add(PERIODIC_MAX_TIER1)) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER4 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier4 - config.periodicRewards.tier4) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER3.add(PERIODIC_MAX_TIER2).add(PERIODIC_MAX_TIER1)) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER5 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier5 - config.periodicRewards.tier5) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER4 - .add(PERIODIC_MAX_TIER3) - .add(PERIODIC_MAX_TIER2) - .add(PERIODIC_MAX_TIER1)) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER6 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier6 - config.periodicRewards.tier6) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER5 - .add(PERIODIC_MAX_TIER4) - .add(PERIODIC_MAX_TIER3) - .add(PERIODIC_MAX_TIER2) - .add(PERIODIC_MAX_TIER1)) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER7 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier7 - config.periodicRewards.tier7) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER6 - .add(PERIODIC_MAX_TIER5) - .add(PERIODIC_MAX_TIER4) - .add(PERIODIC_MAX_TIER3) - .add(PERIODIC_MAX_TIER2) - .add(PERIODIC_MAX_TIER1)) - : ethers.constants.Zero; - - const PERIODIC_MAX_TIER8 = config.maxPeriodicRewards - ? BigNumber.from(config.maxPeriodicRewards.tier8 - config.periodicRewards.tier8) - .mul(BN_ONE_REWARD).sub(PERIODIC_MAX_TIER7 - .add(PERIODIC_MAX_TIER6) - .add(PERIODIC_MAX_TIER5) - .add(PERIODIC_MAX_TIER4) - .add(PERIODIC_MAX_TIER3) - .add(PERIODIC_MAX_TIER2) - .add(PERIODIC_MAX_TIER1)) - : ethers.constants.Zero; - - const PERIODIC_INC_TIER1 = PERIODIC_MAX_TIER1.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER2 = PERIODIC_MAX_TIER2.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER3 = PERIODIC_MAX_TIER3.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER4 = PERIODIC_MAX_TIER4.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER5 = PERIODIC_MAX_TIER5.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER6 = PERIODIC_MAX_TIER6.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER7 = PERIODIC_MAX_TIER7.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - const PERIODIC_INC_TIER8 = PERIODIC_MAX_TIER8.div(config.numberOfIncrements ? config.numberOfIncrements - 1 : 1); - + + const PERIODIC_MAX_TIER1 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier1 - config.periodicRewards.tier1 + ).mul(BN_ONE_REWARD) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER2 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier2 - config.periodicRewards.tier2 + ) + .mul(BN_ONE_REWARD) + .sub(PERIODIC_MAX_TIER1) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER3 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier3 - config.periodicRewards.tier3 + ) + .mul(BN_ONE_REWARD) + .sub(PERIODIC_MAX_TIER2.add(PERIODIC_MAX_TIER1)) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER4 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier4 - config.periodicRewards.tier4 + ) + .mul(BN_ONE_REWARD) + .sub( + PERIODIC_MAX_TIER3.add(PERIODIC_MAX_TIER2).add(PERIODIC_MAX_TIER1) + ) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER5 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier5 - config.periodicRewards.tier5 + ) + .mul(BN_ONE_REWARD) + .sub( + PERIODIC_MAX_TIER4.add(PERIODIC_MAX_TIER3) + .add(PERIODIC_MAX_TIER2) + .add(PERIODIC_MAX_TIER1) + ) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER6 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier6 - config.periodicRewards.tier6 + ) + .mul(BN_ONE_REWARD) + .sub( + PERIODIC_MAX_TIER5.add(PERIODIC_MAX_TIER4) + .add(PERIODIC_MAX_TIER3) + .add(PERIODIC_MAX_TIER2) + .add(PERIODIC_MAX_TIER1) + ) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER7 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier7 - config.periodicRewards.tier7 + ) + .mul(BN_ONE_REWARD) + .sub( + PERIODIC_MAX_TIER6.add(PERIODIC_MAX_TIER5) + .add(PERIODIC_MAX_TIER4) + .add(PERIODIC_MAX_TIER3) + .add(PERIODIC_MAX_TIER2) + .add(PERIODIC_MAX_TIER1) + ) + : ethers.constants.Zero; + + const PERIODIC_MAX_TIER8 = config.maxPeriodicRewards + ? BigNumber.from( + config.maxPeriodicRewards.tier8 - config.periodicRewards.tier8 + ) + .mul(BN_ONE_REWARD) + .sub( + PERIODIC_MAX_TIER7.add(PERIODIC_MAX_TIER6) + .add(PERIODIC_MAX_TIER5) + .add(PERIODIC_MAX_TIER4) + .add(PERIODIC_MAX_TIER3) + .add(PERIODIC_MAX_TIER2) + .add(PERIODIC_MAX_TIER1) + ) + : ethers.constants.Zero; + + const PERIODIC_INC_TIER1 = PERIODIC_MAX_TIER1.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER2 = PERIODIC_MAX_TIER2.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER3 = PERIODIC_MAX_TIER3.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER4 = PERIODIC_MAX_TIER4.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER5 = PERIODIC_MAX_TIER5.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER6 = PERIODIC_MAX_TIER6.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER7 = PERIODIC_MAX_TIER7.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_TIER8 = PERIODIC_MAX_TIER8.div( + config.numberOfIncrements ? config.numberOfIncrements - 1 : 1 + ); + const PERIODIC_INC_PER_TIER = paddedUInt256( ethers.BigNumber.from( - "0x" + - paddedUInt32(PERIODIC_INC_TIER8) + - paddedUInt32(PERIODIC_INC_TIER7) + - paddedUInt32(PERIODIC_INC_TIER6) + - paddedUInt32(PERIODIC_INC_TIER5) + - paddedUInt32(PERIODIC_INC_TIER4) + - paddedUInt32(PERIODIC_INC_TIER3) + - paddedUInt32(PERIODIC_INC_TIER2) + - paddedUInt32(PERIODIC_INC_TIER1) + '0x' + + paddedUInt32(PERIODIC_INC_TIER8) + + paddedUInt32(PERIODIC_INC_TIER7) + + paddedUInt32(PERIODIC_INC_TIER6) + + paddedUInt32(PERIODIC_INC_TIER5) + + paddedUInt32(PERIODIC_INC_TIER4) + + paddedUInt32(PERIODIC_INC_TIER3) + + paddedUInt32(PERIODIC_INC_TIER2) + + paddedUInt32(PERIODIC_INC_TIER1) ) - ) - + ); + this.constants = [ ethers.constants.MaxUint256, config.tierAddress, @@ -446,130 +490,120 @@ export class SequentialEmissions { BN_ONE_REWARD, config.numberOfIncrements ? config.numberOfIncrements : 0, 1, - "10", - 2 + '10', + 2, ]; - + this.sources = [ concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), - op(VM.Opcodes.CONSTANTS, 1), - op( - VM.Opcodes.CONTEXT, - EmissionsERC20Context.ClaimantAccount - ), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.THIS_ADDRESS), - op( - VM.Opcodes.CONTEXT, - EmissionsERC20Context.ClaimantAccount - ), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.REPORT), - op(VM.Opcodes.CONSTANTS, 1), - op( - VM.Opcodes.CONTEXT, - EmissionsERC20Context.ClaimantAccount - ), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.ZIPMAP, callSize(1, 3, 3)), op(VM.Opcodes.ADD, 8), - op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.CONSTANT, 5), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 6), + op(VM.Opcodes.CONSTANT, 6), op(VM.Opcodes.DIV, 2), ]), concat([ - op(VM.Opcodes.CONSTANTS, 11), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 7), + op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.GREATER_THAN), - op(VM.Opcodes.CONSTANTS, 7), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 7), - op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 10), + op(VM.Opcodes.CONSTANT, 10), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 11), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 7), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 7), - op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 13), + op(VM.Opcodes.CONSTANT, 13), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 11), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 11), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 8), + op(VM.Opcodes.CONSTANT, 8), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 10), + op(VM.Opcodes.CONSTANT, 10), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 9), + op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 13), + op(VM.Opcodes.CONSTANT, 13), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONSTANTS, 14), - op(VM.Opcodes.CONSTANTS, 11), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 14), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANTS, 12), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.ADD, 2), - ]) + ]), ]; } - -} \ No newline at end of file +} diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 52e345d..65e5698 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -17,10 +17,10 @@ export enum BuyCapMode { */ max, /** - * both minimum and maximum buy cap, i.e. cannot buy less than a specefied + * both minimum and maximum buy cap, i.e. cannot buy less than a specefied * amount and more than another specified amount */ - both + both, } /** @@ -40,7 +40,6 @@ export enum BuyCapMode { * */ export class PriceCurve { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -77,15 +76,14 @@ export class PriceCurve { extraTimeDiscountThreshold: number, extraTimeDiscount: number ): this { - let _saleDiscount: StateConfig; const EXTRA_TIME_DISCOUNT = () => concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.GREATER_THAN), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TokenAddress), op(VM.Opcodes.SENDER), op(VM.Opcodes.IERC20_BALANCE_OF), @@ -95,32 +93,32 @@ export class PriceCurve { const DISCOUNT_CONDITION_SOURCES = () => concat([ - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.EAGER_IF), ]); _saleDiscount = VM.combiner( - this, + this, { constants: [ endTimestamp, parseUnits(extraTimeDiscountThreshold.toString()), 100 - extraTimeDiscount, - 100 + 100, ], - sources: [EXTRA_TIME_DISCOUNT()] + sources: [EXTRA_TIME_DISCOUNT()], }, - {position: [0]} + { position: [0] } ); _saleDiscount.sources[0] = concat([ _saleDiscount.sources[0], op(VM.Opcodes.STACK, 1), - DISCOUNT_CONDITION_SOURCES() - ]) + DISCOUNT_CONDITION_SOURCES(), + ]); this.constants = _saleDiscount.constants; this.sources = _saleDiscount.sources; @@ -133,7 +131,7 @@ export class PriceCurve { * * @param tierAddress - The Tier contract address. * @param tierDiscount - An array of each tiers' discount ranging between 0 - 99. - * @param tierActivation - (optional) An array of number of blocks for each tier that will be the required period + * @param tierActivation - (optional) An array of number of blocks for each tier that will be the required period * of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. * * @returns this @@ -144,7 +142,6 @@ export class PriceCurve { tierDiscount: number[], tierActivation?: (number | string)[] ): this { - const _discountConfig = VM.toTierDiscounter( this, tierAddress, @@ -157,7 +154,6 @@ export class PriceCurve { return this; } - } /** @@ -183,16 +179,13 @@ export class FixedPrice extends PriceCurve { constructor(price: BigNumberish, erc20decimals: number = 18) { super({ constants: [parseUnits(BigNumber.from(price).toString(), erc20decimals)], - sources: [ - concat([ - FixedPrice.FIXED_PRICE_SOURCES() - ]) - ] + sources: [concat([FixedPrice.FIXED_PRICE_SOURCES()])], }); } // fixed price script - public static FIXED_PRICE_SOURCES = () => concat([op(VM.Opcodes.CONSTANTS, 0)]); + public static FIXED_PRICE_SOURCES = () => + concat([op(VM.Opcodes.CONSTANT, 0)]); } /** @@ -242,11 +235,7 @@ export class vLBP extends PriceCurve { startTimestamp, parseUnits((1).toString()), ], - sources: [ - concat([ - vLBP.vLBP_SOURCES() - ]) - ] + sources: [concat([vLBP.vLBP_SOURCES()])], }); } @@ -254,16 +243,16 @@ export class vLBP extends PriceCurve { public static vLBP_SOURCES = () => concat([ op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.MAX, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), @@ -311,11 +300,7 @@ export class IncreasingPrice extends PriceCurve { parseUnits(priceChange.toFixed(5).toString()), startTimestamp, ], - sources: [ - concat([ - IncreasingPrice.INC_PRICE_SOURCES() - ]) - ] + sources: [concat([IncreasingPrice.INC_PRICE_SOURCES()])], }); } @@ -323,13 +308,13 @@ export class IncreasingPrice extends PriceCurve { public static INC_PRICE_SOURCES = () => concat([ op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.SUB, 2), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.MIN, 2), ]); } @@ -356,7 +341,6 @@ export class IncreasingPrice extends PriceCurve { * ``` */ export class SaleDurationInTimestamp { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -379,12 +363,12 @@ export class SaleDurationInTimestamp { this.sources = [ concat([ op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.GREATER_THAN), op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.EVERY, 2) + op(VM.Opcodes.EVERY, 2), ]), ]; } @@ -407,28 +391,30 @@ export class SaleDurationInTimestamp { extraTimeAmount: number, erc20decimals: number = 18 ): this { - - const ExtraTimeAmount = parseUnits(extraTimeAmount.toString(), erc20decimals); + const ExtraTimeAmount = parseUnits( + extraTimeAmount.toString(), + erc20decimals + ); const ExtraTime = extraTime * 60 + this.endTimestamp; let _extraTime: StateConfig = { constants: [ExtraTime, ExtraTimeAmount], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.ANY, 2), op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.EVERY, 2), - ]) - ] + ]), + ], }; - _extraTime = VM.combiner(this, _extraTime, {position: [6]}) - + _extraTime = VM.combiner(this, _extraTime, { position: [6] }); + this.constants = _extraTime.constants; this.sources = _extraTime.sources; @@ -451,12 +437,12 @@ export class SaleDurationInTimestamp { public applyOwnership(ownerAddress: string): this { this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); - let src = arrayify(this.sources[0], {allowMissingPrefix: true}); + let src = arrayify(this.sources[0], { allowMissingPrefix: true }); src = src.slice(0, src.length - 2); let _top = src.slice(0, 6); _top = concat([ - op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.CONSTANT, this.constants.length - 3), op(VM.Opcodes.SENDER), op(VM.Opcodes.EQUAL_TO), _top, @@ -465,17 +451,17 @@ export class SaleDurationInTimestamp { let _bottom = src.slice(6); _bottom = concat([ - op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.CONSTANT, this.constants.length - 3), op(VM.Opcodes.SENDER), op(VM.Opcodes.EQUAL_TO), - op(VM.Opcodes.CONSTANTS, this.constants.length - 2), - op(VM.Opcodes.CONSTANTS, this.constants.length - 1), + op(VM.Opcodes.CONSTANT, this.constants.length - 2), + op(VM.Opcodes.CONSTANT, this.constants.length - 1), op(VM.Opcodes.EAGER_IF), _bottom, op(VM.Opcodes.ANY, 2), op(VM.Opcodes.EVERY, 2), ]); - + this.sources = [concat([_top, _bottom])]; return this; @@ -484,36 +470,39 @@ export class SaleDurationInTimestamp { /** * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount * that needs to be raiseed so the raises status becomes "success" after raise ends. - * - * @remark please note that this method should not be used with applyExtraTime as they are opossit - * of eachother and also the order of using this method along with other methods of this class is + * + * @remark please note that this method should not be used with applyExtraTime as they are opossit + * of eachother and also the order of using this method along with other methods of this class is * important - * + * * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of * sale's deployment as part of the SaleConfig - * + * * @returns this */ - public afterMinimumRaise (minimumRaise: number, erc20decimals: number = 18) : this { + public afterMinimumRaise( + minimumRaise: number, + erc20decimals: number = 18 + ): this { const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); let _minimumRaise: StateConfig = { constants: [MinimumRaise], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.ANY, 2), - ]) - ] + ]), + ], }; - _minimumRaise = VM.combiner(this, _minimumRaise, {position: [6]}) + _minimumRaise = VM.combiner(this, _minimumRaise, { position: [6] }); this.constants = _minimumRaise.constants; this.sources = _minimumRaise.sources; - return this + return this; } } @@ -542,7 +531,6 @@ export class SaleDurationInTimestamp { * ``` */ export class SaleDurationInBlocks { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -564,10 +552,10 @@ export class SaleDurationInBlocks { this.sources = [ concat([ op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.GREATER_THAN), op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.EVERY, 2), ]), @@ -593,28 +581,30 @@ export class SaleDurationInBlocks { extraTimeAmount: number, erc20decimals: number = 18 ): this { - - const ExtraTimeAmount = parseUnits(extraTimeAmount.toString(), erc20decimals); + const ExtraTimeAmount = parseUnits( + extraTimeAmount.toString(), + erc20decimals + ); const ExtraTime = extraTimeBlocks + this.endBlockNumber; let _extraTime: StateConfig = { constants: [ExtraTime, ExtraTimeAmount], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.ANY, 2), op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.EVERY, 2), - ]) - ] + ]), + ], }; - _extraTime = VM.combiner(this, _extraTime, {position: [6]}) - + _extraTime = VM.combiner(this, _extraTime, { position: [6] }); + this.constants = _extraTime.constants; this.sources = _extraTime.sources; @@ -637,12 +627,12 @@ export class SaleDurationInBlocks { public applyOwnership(ownerAddress: string): this { this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); - let src = arrayify(this.sources[0], {allowMissingPrefix: true}); + let src = arrayify(this.sources[0], { allowMissingPrefix: true }); src = src.slice(0, src.length - 2); let _top = src.slice(0, 6); _top = concat([ - op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.CONSTANT, this.constants.length - 3), op(VM.Opcodes.SENDER), op(VM.Opcodes.EQUAL_TO), _top, @@ -651,17 +641,17 @@ export class SaleDurationInBlocks { let _bottom = src.slice(6); _bottom = concat([ - op(VM.Opcodes.CONSTANTS, this.constants.length - 3), + op(VM.Opcodes.CONSTANT, this.constants.length - 3), op(VM.Opcodes.SENDER), op(VM.Opcodes.EQUAL_TO), - op(VM.Opcodes.CONSTANTS, this.constants.length - 2), - op(VM.Opcodes.CONSTANTS, this.constants.length - 1), + op(VM.Opcodes.CONSTANT, this.constants.length - 2), + op(VM.Opcodes.CONSTANT, this.constants.length - 1), op(VM.Opcodes.EAGER_IF), _bottom, op(VM.Opcodes.ANY, 2), op(VM.Opcodes.EVERY, 2), ]); - + this.sources = [concat([_top, _bottom])]; return this; @@ -670,72 +660,69 @@ export class SaleDurationInBlocks { /** * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount * that needs to be raiseed so the raises status becomes "success" after raise ends. - * - * @remark please note that this method should not be used with applyExtraTime as they are opossit - * of eachother and also the order of using this method along with other methods of this class is + * + * @remark please note that this method should not be used with applyExtraTime as they are opossit + * of eachother and also the order of using this method along with other methods of this class is * important - * + * * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of * sale's deployment as part of the SaleConfig - * + * * @returns this */ - public afterMinimumRaise (minimumRaise: number, erc20decimals: number = 18) : this { + public afterMinimumRaise( + minimumRaise: number, + erc20decimals: number = 18 + ): this { const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); let _minimumRaise: StateConfig = { constants: [MinimumRaise], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.ANY, 2), - ]) - ] + ]), + ], }; - _minimumRaise = VM.combiner(this, _minimumRaise, {position: [6]}) + _minimumRaise = VM.combiner(this, _minimumRaise, { position: [6] }); this.constants = _minimumRaise.constants; this.sources = _minimumRaise.sources; - return this + return this; } -}; - +} /** * @public - * The fisrt piece of script in a sale's amount/price pair script which determines the amoount + * The fisrt piece of script in a sale's amount/price pair script which determines the amoount * or cap that can be bought. - * + * */ export class BuyCap { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; /** * Constructor for this class - * + * * @param buyCapConfig - (optional) a custom StateConfig as the BuyCap (amount) script - * if not passed the current buy units (CONTEXT, 0) will be used as the amount in + * if not passed the current buy units (CONTEXT, 0) will be used as the amount in * amount/price script pair for the sale. */ - constructor (public readonly buyCapConfig?: StateConfig) { - + constructor(public readonly buyCapConfig?: StateConfig) { if (buyCapConfig != undefined) { this.constants = buyCapConfig.constants; this.sources = buyCapConfig.sources; - } - else { + } else { this.constants = []; this.sources = [ - concat([ - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits) - ]) - ] + concat([op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits)]), + ]; } } @@ -765,10 +752,9 @@ export class BuyCap { tierActivation?: (number | string)[]; } ): this { - const MIN_CAP_SOURCES = (i: number) => concat([ - op(VM.Opcodes.CONSTANTS, i), + op(VM.Opcodes.CONSTANT, i), op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), op(VM.Opcodes.STORAGE, SaleStorage.TokenAddress), op(VM.Opcodes.SENDER), @@ -789,74 +775,58 @@ export class BuyCap { if (mode == BuyCapMode.min && options?.minWalletCap) { let minCapConfig: StateConfig = { constants: [parseUnits(options.minWalletCap.toString()).sub(1)], - sources: [MIN_CAP_SOURCES(0)] + sources: [MIN_CAP_SOURCES(0)], }; minCapConfig = VM.combiner(minCapConfig, this); minCapConfig.sources[0] = concat([ minCapConfig.sources[0], - op(VM.Opcodes.MUL, 2) + op(VM.Opcodes.MUL, 2), ]); this.constants = minCapConfig.constants; this.sources = minCapConfig.sources; - } + } if (mode == BuyCapMode.max && options?.maxWalletCap) { let maxCapConfig: StateConfig; - if ( - options.tierMultiplier && - options.tierAddress - ) { + if (options.tierMultiplier && options.tierAddress) { maxCapConfig = VM.toTierMultiplier( { - constants: [ - parseUnits(options.maxWalletCap.toString()) - ], - sources: [ - concat([op(VM.Opcodes.CONSTANTS, 0)]) - ] + constants: [parseUnits(options.maxWalletCap.toString())], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], }, options.tierAddress, options.tierMultiplier, { tierActivation: options.tierActivation } ); - maxCapConfig = VM.combiner( - maxCapConfig, - { - constants: [1], - sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.ADD, 2), - MAX_CAP_SOURCES(), - ]) - ] - } - ); + maxCapConfig = VM.combiner(maxCapConfig, { + constants: [1], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.ADD, 2), + MAX_CAP_SOURCES(), + ]), + ], + }); maxCapConfig = VM.combiner(maxCapConfig, this); maxCapConfig.sources[0] = concat([ maxCapConfig.sources[0], - op(VM.Opcodes.MUL, 2) + op(VM.Opcodes.MUL, 2), ]); this.constants = maxCapConfig.constants; this.sources = maxCapConfig.sources; - } - else { + } else { maxCapConfig = { constants: [parseUnits(options.maxWalletCap.toString()).add(1)], - sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0), - MAX_CAP_SOURCES() - ]) - ] - } + sources: [concat([op(VM.Opcodes.CONSTANT, 0), MAX_CAP_SOURCES()])], + }; maxCapConfig = VM.combiner(maxCapConfig, this); maxCapConfig.sources[0] = concat([ maxCapConfig.sources[0], - op(VM.Opcodes.MUL, 2) + op(VM.Opcodes.MUL, 2), ]); this.constants = maxCapConfig.constants; @@ -870,13 +840,10 @@ export class BuyCap { ) { let bothCapConfig: StateConfig; - if ( - options.tierMultiplier && - options.tierAddress - ) { + if (options.tierMultiplier && options.tierAddress) { bothCapConfig = { constants: [parseUnits(options.maxWalletCap.toString())], - sources: [concat([op(VM.Opcodes.CONSTANTS, 0)])] + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], }; bothCapConfig = VM.toTierMultiplier( bothCapConfig, @@ -885,51 +852,47 @@ export class BuyCap { { tierActivation: options.tierActivation } ); - bothCapConfig = VM.combiner( - bothCapConfig, - { - constants: [1, parseUnits(options.minWalletCap.toString()).sub(1)], - sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.ADD, 2), - MAX_CAP_SOURCES(), - MIN_CAP_SOURCES(1), - op(VM.Opcodes.EVERY, 2), - ]) - ] - } - ) + bothCapConfig = VM.combiner(bothCapConfig, { + constants: [1, parseUnits(options.minWalletCap.toString()).sub(1)], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.ADD, 2), + MAX_CAP_SOURCES(), + MIN_CAP_SOURCES(1), + op(VM.Opcodes.EVERY, 2), + ]), + ], + }); bothCapConfig = VM.combiner(bothCapConfig, this); bothCapConfig.sources[0] = concat([ bothCapConfig.sources[0], - op(VM.Opcodes.MUL, 2) + op(VM.Opcodes.MUL, 2), ]); this.constants = bothCapConfig.constants; this.sources = bothCapConfig.sources; - } - else { + } else { bothCapConfig = { constants: [ parseUnits(options.maxWalletCap.toString()).add(1), - parseUnits(options.minWalletCap.toString()).sub(1) + parseUnits(options.minWalletCap.toString()).sub(1), ], sources: [ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), MAX_CAP_SOURCES(), MIN_CAP_SOURCES(1), op(VM.Opcodes.EVERY, 2), - ] + ], }; bothCapConfig = VM.combiner(bothCapConfig, this); bothCapConfig.sources[0] = concat([ bothCapConfig.sources[0], - op(VM.Opcodes.MUL, 2) - ]) + op(VM.Opcodes.MUL, 2), + ]); this.constants = bothCapConfig.constants; this.sources = bothCapConfig.sources; @@ -943,7 +906,7 @@ export class BuyCap { /** * @public * Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) - * + * * @example * ```typescript * //For generating a sale compatible StateConfig for the sale pass in 2 individual scripts @@ -952,27 +915,31 @@ export class BuyCap { * ``` */ export class SaleScriptFrom { - // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; /** * Constructor of this class - * + * * @param canLiveScript - canLive StateConfig * @param buyCapScript - the StateConfig for buy amount (mxUnits) * @param calculateBuyScript - the StateConfig for price */ - constructor ( - public readonly canLiveScript: SaleDurationInTimestamp | SaleDurationInBlocks | StateConfig, + constructor( + public readonly canLiveScript: + | SaleDurationInTimestamp + | SaleDurationInBlocks + | StateConfig, public readonly buyCapScript: BuyCap | StateConfig, public readonly calculateBuyScript: PriceCurve | StateConfig ) { - let _saleConfig = VM.pair(buyCapScript, calculateBuyScript) - _saleConfig = VM.combiner(canLiveScript, _saleConfig, {numberOfSources: 0}); + let _saleConfig = VM.pair(buyCapScript, calculateBuyScript); + _saleConfig = VM.combiner(canLiveScript, _saleConfig, { + numberOfSources: 0, + }); this.constants = _saleConfig.constants; this.sources = _saleConfig.sources; } -} \ No newline at end of file +} From c16825d934d2f43ab77233ae77ae0ea91af1e8cc Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 18:26:02 -0400 Subject: [PATCH 013/125] update opcoes and contracts deployed on test --- src/RainJS/RainJS.ts | 7 +- src/addresses.ts | 16 +- .../combineTierScriptGenerator.ts | 6 + .../emissionsERC20ScriptGenerator.ts | 14 + test/1_initSDK.test.ts | 2 - test/2_sale.test.ts | 40 +- test/3_verify.test.ts | 4 +- test/4_tiers.test.ts | 706 +----------------- test/6_gated.test.ts | 85 --- test/7_RainJS.test.ts | 632 ++++++++-------- 10 files changed, 359 insertions(+), 1153 deletions(-) delete mode 100644 test/6_gated.test.ts diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 4c7b0e6..c1f8960 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -711,6 +711,8 @@ export class RainJS { } else throw new Error('Undefined stack variable'); }, + // TODO: @rouzwelt + // @ts-ignore [VM.Opcodes.REPORT]: async ( state: StateJS, operand: number, @@ -727,7 +729,7 @@ export class RainJS { ); state.stack.push( // TODO: @rouzwelt - //@ts-ignore + // @ts-ignore await iTierContract.report(account_) ); } else throw new Error('Undefined stack variables'); @@ -775,7 +777,8 @@ export class RainJS { state.stack.push(BigNumber.from('0x' + _result)); } else throw new Error('Undefined stack variables'); }, - + // TODO: @rouzwelt + // @ts-ignore [VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE]: ( state: StateJS, operand: number, diff --git a/src/addresses.ts b/src/addresses.ts index 25288a4..c108a9b 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -134,17 +134,17 @@ const addressBook = [ chainId: 31337, addresses: { vmStateBuilder: '0x5FbDB2315678afecb367f032d93F642f64180aa3', - alwaysTier: '0xBA12646CC07ADBe43F8bD25D83FB628D29C8A762', + alwaysTier: '0xb0279Db6a2F1E01fbC8483FCCef0Be2bC6299cC3', redeemableERC20Factory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', verifyFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', verifyTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', - combineTierFactory: '0x0165878A594ca255338adfa4d48449f69242Eb8F', - redeemableERC20ClaimEscrow: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', - noticeBoard: '0x610178dA211FEF7D417bC0e6FeD39F05609AD788', - emissionsERC20Factory: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', - saleFactory: '0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0', - stakeFactory: '', - orderBook: '', + combineTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', + redeemableERC20ClaimEscrow: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', + noticeBoard: '0x0165878A594ca255338adfa4d48449f69242Eb8F', + emissionsERC20Factory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', + saleFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', + stakeFactory: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', + orderBook: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', }, }, { diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 1bb3699..a31c0b8 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -37,6 +37,8 @@ export class CombineTierGenerator { concat([ op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.CONTEXT, CombineTierContext.Account), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), ]), ]; @@ -106,6 +108,8 @@ export class CombineTierGenerator { concat([ number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_NUMBER), op( + // TODO: @rouzwelt + // @ts-ignore VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(startTier, endTier) ), @@ -347,6 +351,8 @@ export class BuildReport extends CombineTierGenerator { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( + // TODO: @rouzwelt + // @ts-ignore VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index c942b7e..e867d00 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -195,6 +195,8 @@ export class LinearEmissions { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( + // TODO: @rouzwelt + // @ts-ignore VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), @@ -208,6 +210,8 @@ export class LinearEmissions { VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount ), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), ]); @@ -219,6 +223,8 @@ export class LinearEmissions { VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount ), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), ]); @@ -499,18 +505,26 @@ export class SequentialEmissions { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( + // TODO: @rouzwelt + // @ts-ignore VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.THIS_ADDRESS), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), + // TODO: @rouzwelt + // @ts-ignore op(VM.Opcodes.REPORT), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 2), diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index b264cfc..5c2ab6d 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -144,8 +144,6 @@ before('Initializing and deploying contracts to hardhat network', async () => { OrderBook: orderBook.address, AlwaysTier: AlwaysTier, }; - - console.log(JSON.stringify(addresses, null, 2)); }); describe.only('SDK - BookAddress', () => { diff --git a/test/2_sale.test.ts b/test/2_sale.test.ts index 66db38b..cbf91e8 100644 --- a/test/2_sale.test.ts +++ b/test/2_sale.test.ts @@ -50,14 +50,16 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); + // TODO: @rouzwelt + // @ts-ignore + const sources = VM.createVMSources([[VM.Opcodes.CONSTANT, 0]]); // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleScriptFrom( new SaleDurationInBlocks(startBlock, startBlock + saleDuration), new BuyCap(), - {sources, constants} + { sources, constants } ), recipient: recipient.address, reserve: reserve.address, @@ -101,14 +103,14 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANT, 0]]); // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleScriptFrom( new SaleDurationInBlocks(startBlock, endBlock), new BuyCap(), - {sources, constants} + { sources, constants } ), recipient: recipient.address, reserve: reserve.address, @@ -142,14 +144,16 @@ describe('SDK - Sale', () => { await sale.start(); expect(await sale.saleStatus()).to.be.equals(SaleStatus.Active); - expect(await sale.canLive(), 'sale should not be ready to not live (end)').to.be.true; + expect(await sale.canLive(), 'sale should not be ready to not live (end)') + .to.be.true; // Increase the blocks to end while ((await Time.currentBlock()) < endBlock) { await Time.advanceBlock(); } - expect(await sale.canLive(), 'sale should be ready to not live (end)').to.be.false; + expect(await sale.canLive(), 'sale should be ready to not live (end)').to.be + .false; await sale.end(); }); @@ -173,14 +177,14 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANT, 0]]); // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleScriptFrom( new SaleDurationInTimestamp(startTimestamp, endTimestamp), new BuyCap(), - {sources, constants} + { sources, constants } ), recipient: recipient.address, reserve: reserve.address, @@ -212,12 +216,18 @@ describe('SDK - Sale', () => { await sale.start(); expect(await sale.saleStatus()).to.be.equals(SaleStatus.Active); - expect(await sale.canLive(), 'sale should not be ready to not live (end)').to.be.true; + expect(await sale.canLive(), 'sale should not be ready to not live (end)') + .to.be.true; // Increase the timestamp to end (+1 to because is AFTER timestamp) - await Time.increase(BigNumber.from(endTimestamp).sub(await Time.currentTime()).add(1)); + await Time.increase( + BigNumber.from(endTimestamp) + .sub(await Time.currentTime()) + .add(1) + ); - expect(await sale.canLive(), 'sale should be ready to not live (end)').to.be.false; + expect(await sale.canLive(), 'sale should be ready to not live (end)').to.be + .false; await sale.end(); }); @@ -241,14 +251,14 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - const sources = VM.createVMSources([[VM.Opcodes.CONSTANTS, 0]]); + const sources = VM.createVMSources([[VM.Opcodes.CONSTANT, 0]]); // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleScriptFrom( new SaleDurationInBlocks(startBlock, endBlock), new BuyCap(), - {sources, constants} + { sources, constants } ), recipient: recipient.address, reserve: reserve.address, @@ -284,7 +294,9 @@ describe('SDK - Sale', () => { const desiredAmount = totalTokenSupply; - expect((await sale.calculateBuy(desiredAmount))[1]).to.be.equals(staticPrice); + expect((await sale.calculateBuy(desiredAmount))[1]).to.be.equals( + staticPrice + ); const buyConfig = { feeRecipient: zeroAddress, diff --git a/test/3_verify.test.ts b/test/3_verify.test.ts index 9f66b1c..d5287ec 100644 --- a/test/3_verify.test.ts +++ b/test/3_verify.test.ts @@ -31,9 +31,9 @@ describe('Verify', () => { // Obtaining the current state of user1 const stateUser1 = await verify.state(user1.address); // Current block in chain - const currentBlock = await Time.currentBlock(); + const currentTime = await Time.currentTime(); - expect(await verify.statusAtBlock(stateUser1, currentBlock)).to.be.equals( + expect(await verify.statusAtTime(stateUser1, currentTime)).to.be.equals( verify.status.APPROVED ); }); diff --git a/test/4_tiers.test.ts b/test/4_tiers.test.ts index 859718e..c83bbbe 100644 --- a/test/4_tiers.test.ts +++ b/test/4_tiers.test.ts @@ -1,582 +1,8 @@ import { ethers } from 'hardhat'; import { expect } from 'chai'; -import { - TierLevelsERC20, - TierLevelsERC721, - deployErc20, - deployErc721, - expectAsyncError, - chainId, -} from './utils'; +import { expectAsyncError, chainId } from './utils'; -import { - AddressBook, - ITier, - Verify, - VerifyTier, - ERC20BalanceTier, - ERC20TransferTier, - ERC721BalanceTier, - CombineTier, - GatedNFT, -} from '../src'; - -describe('SDK - ERC20BalanceTier', () => { - it('should deploy an ERC20BalanceTier child', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - expect( - await ERC20BalanceTier.isChild(signer, tier.address), - 'Address is not a ERC20BalanceTier factory children' - ).to.be.true; - }); - - it('should get the corrects tier values from SDK', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - expect(TierLevelsERC20).to.be.deep.equal(await tier.tierValues()); - }); - - it('should throw an error if try to call setTier from SDK', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - await expectAsyncError( - tier.setTier('', 2, []), - 'SET TIER: NOT IMPLEMENTED' - ); - }); - - it('should calculate the amounts to reach a tier for different addresses and signers using connect', async () => { - const [deployer, user1, user2] = await ethers.getSigners(); - const token = await deployErc20(deployer); - - // Tier connected to the deployer token and tier contracts - const tierDeployer = await ERC20BalanceTier.deploy(deployer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - const tierUser1 = tierDeployer.connect(user1); - const tierUser2 = tierDeployer.connect(user2); - - expect( - await tierUser1.amountToTier(user1.address, tierUser1.levels.FIVE) - ).to.be.equals( - await tierDeployer.amountToTier(user1.address, tierDeployer.levels.FIVE) - ); - - expect( - await tierUser2.amountToTier(user2.address, tierUser2.levels.TWO) - ).to.be.equals( - await tierDeployer.amountToTier(user2.address, tierDeployer.levels.TWO) - ); - }); - - it('should get the current/latest tier as numeric readable expression levels', async () => { - const [deployer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(deployer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.ZERO); - - // Provide to user tokens to get a tier 3 - const amount = await tier.amountToTier(user.address, tier.levels.FIVE); - await token.transfer(user.address, amount); - - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.FIVE); - }); - - it('should obtain the amount required to level up tiers with the current instance signer', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // user want level four - const levelFour = tier.levels.FOUR; - - // User start as Tier zero because does not have tokens - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.ZERO); - - // Sending tokens to user to get Tier four - await token.transfer( - user.address, - await tier.amountToTier(user.address, levelFour) - ); - - expect(await tier.currentTier(user.address)).to.be.equals(levelFour); - - // User receive an arbitrary amount but not enought to get the next tier - const levelFive = tier.levels.FIVE; - const halfAmountToFive = (await tier.tierValues())[0].div(2); - await token.transfer(user.address, halfAmountToFive); - - // User stay same tier four since need the more tokens to Tier five - expect(await tier.currentTier(user.address)).to.be.equals(levelFour); - - // Sending the other half to get Tier Five - await token.transfer( - user.address, - await tier.amountToTier(user.address, levelFive) - ); - expect(await tier.currentTier(user.address)).to.be.equals(levelFive); - }); - - it('should obtain the amount that should be remove/burned to downgrade tiers', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // Set as Tier 7 to user with an extra amount - const initAmount = await tier.amountToTier(user.address, tier.levels.SEVEN); - - await token.transfer(user.address, initAmount); - - expect(await tier.currentTier(user.address)).to.be.equals( - tier.levels.SEVEN - ); - - // Amount required to downgrade to Tier Two - const amountToDownGrade = await tier.amountToTier( - user.address, - tier.levels.TWO - ); - - // user remove the required amount from his account - await token.connect(user).transfer(token.address, amountToDownGrade); - - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.TWO); - }); - - it('should throw error if the instance does not have the token address when amountToTier is called', async () => { - const [deployer, user1] = await ethers.getSigners(); - const token = await deployErc20(deployer); - - // Tier derectly deployed contain the token Address - const tierComplete = await ERC20BalanceTier.deploy(deployer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // From level 0 to level 5 - const amountFive = (await tierComplete.tierValues())[4]; - expect( - await tierComplete.amountToTier(user1.address, tierComplete.levels.FIVE) - ).to.be.equal(amountFive); - - // Create new instance without the token address - const tierMissingToken = new ERC20BalanceTier(tierComplete.address, user1); - - await expectAsyncError( - tierMissingToken.amountToTier( - user1.address, - tierMissingToken.levels.FIVE - ), - 'Missing ERC20 Token address in the instance. Please, use addTokenAddress' - ); - - const tierFilled = tierMissingToken.addTokenAddress(token.address); - - // From level 0 to level 5 - expect( - await tierFilled.amountToTier(user1.address, tierFilled.levels.FIVE) - ).to.be.equal(amountFive); - }); -}); - -describe('SDK - ERC20TransferTier', () => { - it('should deploy an ERC20TransferTier child', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20TransferTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - expect( - await ERC20TransferTier.isChild(signer, tier.address), - 'Address is not a ERC20TransferTier factory children' - ).to.be.true; - }); - - it('should get the corrects tier values from SDK', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20TransferTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - expect(TierLevelsERC20).to.be.deep.equal(await tier.tierValues()); - }); - - it('should calculate the amounts to reach a tier for different addresses and signers using connect', async () => { - const [deployer, user1, user2] = await ethers.getSigners(); - const token = await deployErc20(deployer); - - // Tier connected to the deployer token and tier contracts - const tier = await ERC20TransferTier.deploy(deployer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - const tierUser1 = tier.connect(user1); - const tierUser2 = tier.connect(user2); - - expect( - await tierUser1.amountToTier(user1.address, tierUser1.levels.SIX) - ).to.be.equals(await tier.amountToTier(user1.address, tier.levels.SIX)); - - expect( - await tierUser2.amountToTier(user2.address, tierUser2.levels.FOUR) - ).to.be.equals(await tier.amountToTier(user2.address, tier.levels.FOUR)); - }); - - it('should approve to the ERC20TransferTier contract to use the owner tokens from SDK correctly', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20TransferTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - expect(await token.allowance(signer.address, tier.address)).to.be.equals(0); - - // Using approval from SDK - const approvedAmount = ethers.BigNumber.from('1000000000'); - - await tier.approveTokenForTier(approvedAmount); - - expect(await token.allowance(signer.address, tier.address)).to.be.equals( - approvedAmount, - 'Wrong amount approved' - ); - }); - - it('should set tier to level up and get the current tier level correclty', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20TransferTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - const tierUser = tier.connect(user); - const levels = tierUser.levels; - - expect(await tierUser.currentTier(user.address)).to.be.equals(levels.ZERO); - - // User want tier two - await expect( - tierUser.setTier(user.address, levels.TWO, []), - 'Wrong set tier success' - ).to.be.revertedWith('ERC20: insufficient allowance'); - - // The amount necessary to user get the tier two - const approvedAmount = await tierUser.amountToTier( - user.address, - levels.TWO - ); - - // Sending to user the tokens - await token.transfer(user.address, approvedAmount); - - // Approving the contract and set the tier two - await tierUser.approveTokenForTier(approvedAmount); - await tierUser.setTier(user.address, levels.TWO, []); - - expect(await tierUser.currentTier(user.address)).to.be.equals(levels.TWO); - - // Now use want tier six - await expect( - tierUser.setTier(user.address, levels.SIX, []), - 'Wrong set tier success' - ).to.be.revertedWith('ERC20: insufficient allowance'); - - const approvedAmount_2 = await tierUser.amountToTier( - user.address, - levels.SIX - ); - - // Sending to user the tokens - await token.transfer(user.address, approvedAmount_2); - - // Approving the contract and set the tier SIX - await tierUser.approveTokenForTier(approvedAmount_2); - await tierUser.setTier(user.address, levels.SIX, []); - - expect(await tierUser.currentTier(user.address)).to.be.equals(levels.SIX); - }); - - it('should decrease the level tier and get the current tier level correctly', async () => { - const [deployer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const tierDeployer = await ERC20TransferTier.deploy(deployer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // Connecting the instance to a new signer - const tierUser = tierDeployer.connect(user); - const levels = tierUser.levels; - - // Set as initial level tier seven - const amountToTierSeven = await tierUser.amountToTier( - user.address, - levels.SEVEN - ); - await token.transfer(user.address, amountToTierSeven); - - await tierUser.approveTokenForTier(amountToTierSeven); - await tierUser.setTier(user.address, levels.SEVEN, []); - - expect(await tierUser.currentTier(user.address)).to.be.equals(levels.SEVEN); - - // user want to decrease to Tier 4 - const balanceBefore = await token.balanceOf(user.address); - const amountReturnedExpected = await tierUser.amountToTier( - user.address, - levels.FOUR - ); - - await tierUser.setTier(user.address, levels.FOUR, []); - - expect(await tierUser.currentTier(user.address)).to.be.equals(levels.FOUR); - expect(await token.balanceOf(user.address)).to.be.equals( - balanceBefore.add(amountReturnedExpected) - ); - }); - - it('should throw error if the instance does not have the token address when amountToTier is called', async () => { - const [deployer, user1] = await ethers.getSigners(); - const token = await deployErc20(deployer); - - // Tier derectly deployed contain the token Address - const tierComplete = await ERC20TransferTier.deploy(deployer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // From level 0 to level 5 - const amountFive = (await tierComplete.tierValues())[4]; - expect( - await tierComplete.amountToTier(user1.address, tierComplete.levels.FIVE) - ).to.be.equal(amountFive); - - // Create new instance without the token address - const tierMissingToken = new ERC20TransferTier(tierComplete.address, user1); - - await expectAsyncError( - tierMissingToken.amountToTier( - user1.address, - tierMissingToken.levels.FIVE - ), - 'Missing ERC20 Token address in the instance. Please, use addTokenAddress' - ); - - const tierFilled = tierMissingToken.addTokenAddress(token.address); - - // From level 0 to level 5 - expect( - await tierFilled.amountToTier(user1.address, tierFilled.levels.FIVE) - ).to.be.equal(amountFive); - }); -}); - -describe('SDK - ERC721BalanceTier', () => { - it('should deploy an ERC721BalanceTier child', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc721(signer); - - const tier = await ERC721BalanceTier.deploy(signer, { - erc721: token.address, - tierValues: TierLevelsERC721, - }); - - expect(await ERC721BalanceTier.isChild(signer, tier.address)).to.be.true; - }); - - it('should get the corrects tier values from SDK', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc721(signer); - - const tier = await ERC721BalanceTier.deploy(signer, { - erc721: token.address, - tierValues: TierLevelsERC721, - }); - - expect(TierLevelsERC721).to.be.deep.equal(await tier.tierValues()); - }); - - it('should throw an error if try to call setTier from SDK', async () => { - const [signer] = await ethers.getSigners(); - const token = await deployErc721(signer); - - const tier = await ERC721BalanceTier.deploy(signer, { - erc721: token.address, - tierValues: TierLevelsERC721, - }); - - await expectAsyncError( - tier.setTier('', 2, []), - 'SET TIER: NOT IMPLEMENTED' - ); - }); - - it('should calculate the amounts to reach a tier for different addresses and signers using connect', async () => { - const [deployer, user1, user2] = await ethers.getSigners(); - const token = await deployErc721(deployer); - - // Tier connected to the deployer token and tier contracts - const tier = await ERC721BalanceTier.deploy(deployer, { - erc721: token.address, - tierValues: TierLevelsERC721, - }); - - // Connect to differents users - const tierUser1 = tier.connect(user1); - const tierUser2 = tier.connect(user2); - - expect( - await tierUser1.amountToTier(user1.address, tierUser1.levels.FIVE) - ).to.be.equals(await tier.amountToTier(user1.address, tier.levels.FIVE)); - - expect( - await tierUser2.amountToTier(user2.address, tierUser2.levels.TWO) - ).to.be.equals(await tier.amountToTier(user2.address, tier.levels.TWO)); - }); - - it('should get the current/latest tier as numeric readable expression levels', async () => { - const [deployer, user] = await ethers.getSigners(); - const token = await deployErc721(deployer); - - const tier = await ERC721BalanceTier.deploy(deployer, { - erc721: token.address, - tierValues: TierLevelsERC721, // +1 token in the balance, +1 level tier - }); - - // Increase the user to level tier 4 minting four tokens - while ((await token.balanceOf(user.address)).lt(4)) { - await token.connect(user).mintNewToken(); - } - - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.FOUR); - }); - - it('should obtain the amount required to level up tiers with the current instance signer', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc721(signer); - - const tier = await ERC721BalanceTier.deploy(signer, { - erc721: token.address, - tierValues: TierLevelsERC721, - }); - - // user want level four - const levelFour = tier.levels.FOUR; - const tierUser = tier.connect(user); - - // User start as Tier zero because does not have tokens - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.ZERO); - expect(await tier.amountToTier(user.address, levelFour)).to.be.equals(4); - - // Minting tokens to user to get Tier four - while (!(await tierUser.amountToTier(user.address, levelFour)).isZero()) { - await token.connect(user).mintNewToken(); - } - - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.FOUR); - expect(await tier.amountToTier(user.address, levelFour)).to.be.equals(0); - }); - - it('should obtain the amount that should be remove/burned to downgrade tiers', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc721(signer); - - const tier = await ERC721BalanceTier.deploy(signer, { - erc721: token.address, - tierValues: TierLevelsERC721, - }); - - // Set as Tier 5 to the user. Mint tokens id from 1 to 5 - while ((await token.balanceOf(user.address)).lt(5)) { - await token.connect(user).mintNewToken(); - } - const tokenIds = [1, 2, 3, 4, 5]; - - for (let i = 0; i < tokenIds.length; i++) { - expect(await token.ownerOf(tokenIds[i])).to.be.equals(user.address); - } - - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.FIVE); - - // burn until reach the correct balance - let i = 0; - while (!(await tier.amountToTier(user.address, tier.levels.TWO)).isZero()) { - await token.connect(user).burn(tokenIds[i]); - i++; - } - - expect(await tier.currentTier(user.address)).to.be.equals(tier.levels.TWO); - }); - - it('should throw error if the instance does not have the token address when amountToTier is called', async () => { - const [deployer, user1] = await ethers.getSigners(); - const token = await deployErc721(deployer); - - // Tier derectly deployed contain the token Address - const tierComplete = await ERC721BalanceTier.deploy(deployer, { - erc721: token.address, - tierValues: TierLevelsERC20, - }); - - // From level 0 to level 5 - const amountFive = (await tierComplete.tierValues())[4]; - expect( - await tierComplete.amountToTier(user1.address, tierComplete.levels.FIVE) - ).to.be.equal(amountFive); - - // Create new instance without the token address - const tierMissingToken = new ERC721BalanceTier(tierComplete.address, user1); - - await expectAsyncError( - tierMissingToken.amountToTier( - user1.address, - tierMissingToken.levels.FIVE - ), - 'Missing ER721 Token address in the instance. Please, use addTokenAddress' - ); - - const tierFilled = tierMissingToken.addTokenAddress(token.address); - - // From level 0 to level 5 - expect( - await tierFilled.amountToTier(user1.address, tierFilled.levels.FIVE) - ).to.be.equal(amountFive); - }); -}); +import { AddressBook, Verify, VerifyTier, CombineTier } from '../src'; describe('SDK - VerifyTier', () => { it('should deploy an VerifyTier child', async () => { @@ -667,7 +93,7 @@ describe('SDK - VerifyTier', () => { describe('SDK - CombineTier', () => { it('should use always tier correctly', async () => { - const [deployer, user1, user2, recipient] = await ethers.getSigners(); + const [deployer, user1, user2] = await ethers.getSigners(); (await deployer.provider?.getNetwork())?.chainId; // Get the always tier from book const alwaysTierAddress = AddressBook.getAddressesForChainId( @@ -676,6 +102,8 @@ describe('SDK - CombineTier', () => { const tier = new CombineTier(alwaysTierAddress, deployer); + console.log(tier.report(user1.address, [])); + // Any address should be allowed in all tiers expect(await tier.currentTier(user1.address)).to.be.equals( tier.levels.EIGHT @@ -683,129 +111,5 @@ describe('SDK - CombineTier', () => { expect(await tier.currentTier(user2.address)).to.be.equals( tier.levels.EIGHT ); - - // Deploy a GatedNFT with a minimum status as 7 tier - const gatedConfig = { - name: 'TestTier', - symbol: 'TTIER', - description: 'Testing the tier', - animationUrl: - 'https://ipfs.io/ipfsbafybeify52a63pgcshhbtkff4nxxxp2zp5yjn2xw43jcy4knwful7ymmgy', - imageUrl: - 'https://ipfs.io/ipfsbafybeify52a63pgcshhbtkff4nxxxp2zp5yjn2xw43jcy4knwful7ymmgy', - animationHash: - '0x0000000000000000000000000000000000000000000000000000000000000000', - imageHash: - '0x0000000000000000000000000000000000000000000000000000000000000000', - }; - - const deployArgs = { - config: gatedConfig, - tier: tier.address, - minimumStatus: tier.levels.SEVEN, - maxPerAddress: 1, - transferrable: 0, - maxMintable: 1000, - royaltyRecipient: recipient.address, - royaltyBPS: 1, - }; - - const gatedNFT = await GatedNFT.deploy(deployer, deployArgs); - - // Both user should be able to mint - await gatedNFT.connect(user1).mint(user1.address); - - await gatedNFT.connect(user2).mint(user2.address); - - expect(await gatedNFT.balanceOf(user1.address)).to.be.equals(1); - expect(await gatedNFT.balanceOf(user2.address)).to.be.equals(1); - }); -}); - -describe('SDK - ITier', () => { - it('should get the instance from an already deloyed ITier contract', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc20(); - - // Deployed a Tier contract - const balanceTier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // Create the ITier instance - const iTier = new ITier(balanceTier.address, signer); - - expect(await balanceTier.currentTier(user.address)).to.be.equals( - await iTier.currentTier(user.address), - `does not return the same report` - ); - - // Sending tokens to user to get Tier four - const levelFour = iTier.levels.FOUR; - await token.transfer( - user.address, - await balanceTier.amountToTier(user.address, levelFour) - ); - - expect(await iTier.currentTier(user.address)).to.be.equals(levelFour); - expect(await balanceTier.currentTier(user.address)).to.be.equals( - await iTier.currentTier(user.address), - `does not return the same report` - ); - }); - - it('should setTier correctly if the Tier contract is a ReadWriteTier contract with the SDK ITier interface', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const transferTier = await ERC20TransferTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // Create the ITier instance - const iTier = new ITier(transferTier.address, signer); - - expect(await iTier.currentTier(user.address)).to.be.equals( - iTier.levels.ZERO - ); - - // User want tier two - await expect( - iTier.setTier(user.address, iTier.levels.TWO, []), - 'Wrong set tier success' - ).to.be.revertedWith('ERC20: insufficient allowance'); - - // The amount necessary to user get the tier two - const approvedAmount = TierLevelsERC20[1]; - await token.approve(iTier.address, approvedAmount); - - await iTier.setTier(user.address, iTier.levels.TWO, []); - - expect(await iTier.currentTier(user.address)).to.be.equals( - iTier.levels.TWO - ); - }); - - it('should fail setTier correctly if the Tier contract is a ReadOnlyTier contract with the SDK ITier interface', async () => { - const [signer, user] = await ethers.getSigners(); - const token = await deployErc20(); - const balanceTier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - // Create the ITier instance - const iTier = new ITier(balanceTier.address, signer); - - expect(await iTier.currentTier(user.address)).to.be.equals( - iTier.levels.ZERO - ); - - // User want tier two - await expect( - iTier.setTier(user.address, iTier.levels.TWO, []), - 'setTier is not available in ReadOnlyTiers' - ).to.be.revertedWith('SET_TIER'); }); }); diff --git a/test/6_gated.test.ts b/test/6_gated.test.ts deleted file mode 100644 index b1546f3..0000000 --- a/test/6_gated.test.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { expect } from 'chai'; -import { ethers } from 'hardhat'; - -import { TierLevelsERC20, deployErc20, chainId } from './utils'; - -import { GatedNFT, ERC20BalanceTier, AddressBook } from '../src'; - -describe('GatedNFT', () => { - it('should deploy a GatedNFTChild', async () => { - const [signer, recipient] = await ethers.getSigners(); - const token = await deployErc20(); - const tier = await ERC20BalanceTier.deploy(signer, { - erc20: token.address, - tierValues: TierLevelsERC20, - }); - - const gatedConfig = { - name: 'Test', - symbol: 'TEST', - description: 'Testing', - animationUrl: - 'https://ipfs.io/ipfsbafybeify52a63pgcshhbtkff4nxxxp2zp5yjn2xw43jcy4knwful7ymmgy', - imageUrl: - 'https://ipfs.io/ipfsbafybeify52a63pgcshhbtkff4nxxxp2zp5yjn2xw43jcy4knwful7ymmgy', - animationHash: - '0x0000000000000000000000000000000000000000000000000000000000000000', - imageHash: - '0x0000000000000000000000000000000000000000000000000000000000000000', - }; - - const deployArgs = { - config: gatedConfig, - tier: tier.address, - minimumStatus: 1, - maxPerAddress: 1, - transferrable: 0, - maxMintable: 1000, - royaltyRecipient: recipient.address, - royaltyBPS: 1, - }; - - const gatedNFT = await GatedNFT.deploy(signer, deployArgs); - - expect(await GatedNFT.isChild(signer, gatedNFT.address)).to.be.true; - }); - - it('should mint an nft from the gatedNFT with an always tier', async () => { - const [signer, recipient, minter] = await ethers.getSigners(); - const tierAddress = AddressBook.getAddressesForChainId(chainId).alwaysTier; - - const gatedConfig = { - name: 'Test', - symbol: 'TEST', - description: 'Testing', - animationUrl: - 'https://ipfs.io/ipfsbafybeify52a63pgcshhbtkff4nxxxp2zp5yjn2xw43jcy4knwful7ymmgy', - imageUrl: - 'https://ipfs.io/ipfsbafybeify52a63pgcshhbtkff4nxxxp2zp5yjn2xw43jcy4knwful7ymmgy', - animationHash: - '0x0000000000000000000000000000000000000000000000000000000000000000', - imageHash: - '0x0000000000000000000000000000000000000000000000000000000000000000', - }; - - const deployArgs = { - config: gatedConfig, - tier: tierAddress, - minimumStatus: 5, // doesn't care the min status, always tier allow anyone - maxPerAddress: 1, - transferrable: 0, - maxMintable: 1000, - royaltyRecipient: recipient.address, - royaltyBPS: 1, - }; - - const gatedNFT = await GatedNFT.deploy(signer, deployArgs); - expect(await GatedNFT.isChild(signer, gatedNFT.address)).to.be.true; - - expect(await gatedNFT.balanceOf(minter.address)).to.be.equals(0); - - await gatedNFT.connect(minter).mint(minter.address); - - expect(await gatedNFT.balanceOf(minter.address)).to.be.equals(1); - }); -}); diff --git a/test/7_RainJS.test.ts b/test/7_RainJS.test.ts index 0308244..cd8e543 100644 --- a/test/7_RainJS.test.ts +++ b/test/7_RainJS.test.ts @@ -2,7 +2,7 @@ import { assert } from 'chai'; import { ethers } from 'hardhat'; import { expectAsyncError, Tier, Time } from './utils'; import { BigNumber } from 'ethers'; -import { +import { op, paddedUInt32, selectLte, @@ -10,26 +10,15 @@ import { callSize, tierRange, selectLteLogic, - selectLteMode -} from '../src/utils' -import { - StateConfig, - RainJS, - OpcodeFN, - ApplyOpFn, - VM, -} from '../src'; - - + selectLteMode, +} from '../src/utils'; +import { StateConfig, RainJS, OpcodeFN, ApplyOpFn, VM } from '../src'; describe('SDK - RainJS', () => { it('should perform correctly with custom opcode function', async () => { - const customBlockNumber: OpcodeFN = (state, operand, data) => { - state.stack.push( - BigNumber.from(data.blockNumber) - ) - } + state.stack.push(BigNumber.from(data.blockNumber)); + }; const applyOpFn: ApplyOpFn = {}; applyOpFn[VM.Opcodes.BLOCK_NUMBER] = customBlockNumber; @@ -38,19 +27,19 @@ describe('SDK - RainJS', () => { sources: [ concat([ op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.ADD, 3), op(VM.Opcodes.BLOCK_NUMBER), op(VM.Opcodes.ADD, 3), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {applyOpFn}); + const rainJs = new RainJS(script, { applyOpFn }); - const result = await rainJs.run({blockNumber: 111}); + const result = await rainJs.run({ blockNumber: 111 }); const expected = BigNumber.from(111 + 111 + (1 + 2 + 3)); @@ -61,52 +50,51 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) - - it("should correctly perform a zipmap loop", async () => { + }); + it('should correctly perform a zipmap loop', async () => { const val1 = BigNumber.from( - "0x" + - paddedUInt32(0) + - paddedUInt32(4) + - paddedUInt32(0) + - paddedUInt32(3) + - paddedUInt32(0) + - paddedUInt32(2) + - paddedUInt32(0) + - paddedUInt32(1) - ) + '0x' + + paddedUInt32(0) + + paddedUInt32(4) + + paddedUInt32(0) + + paddedUInt32(3) + + paddedUInt32(0) + + paddedUInt32(2) + + paddedUInt32(0) + + paddedUInt32(1) + ); const val2 = BigNumber.from( - "0x" + - paddedUInt32(0) + - paddedUInt32(8) + - paddedUInt32(0) + - paddedUInt32(7) + - paddedUInt32(0) + - paddedUInt32(6) + - paddedUInt32(0) + - paddedUInt32(5) - ) + '0x' + + paddedUInt32(0) + + paddedUInt32(8) + + paddedUInt32(0) + + paddedUInt32(7) + + paddedUInt32(0) + + paddedUInt32(6) + + paddedUInt32(0) + + paddedUInt32(5) + ); const val3 = BigNumber.from( - "0x" + - paddedUInt32(0) + - paddedUInt32(12) + - paddedUInt32(0) + - paddedUInt32(11) + - paddedUInt32(0) + - paddedUInt32(10) + - paddedUInt32(0) + - paddedUInt32(9) - ) + '0x' + + paddedUInt32(0) + + paddedUInt32(12) + + paddedUInt32(0) + + paddedUInt32(11) + + paddedUInt32(0) + + paddedUInt32(10) + + paddedUInt32(0) + + paddedUInt32(9) + ); const constants = [val1, val2, val3]; - const v1 = op(VM.Opcodes.CONSTANTS, 0); - const v2 = op(VM.Opcodes.CONSTANTS, 1); - const v3 = op(VM.Opcodes.CONSTANTS, 2); + const v1 = op(VM.Opcodes.CONSTANT, 0); + const v2 = op(VM.Opcodes.CONSTANT, 1); + const v3 = op(VM.Opcodes.CONSTANT, 2); - const a0 = op(VM.Opcodes.CONSTANTS, 3); - const a1 = op(VM.Opcodes.CONSTANTS, 4); - const a2 = op(VM.Opcodes.CONSTANTS, 5); + const a0 = op(VM.Opcodes.CONSTANT, 3); + const a1 = op(VM.Opcodes.CONSTANT, 4); + const a2 = op(VM.Opcodes.CONSTANT, 5); // zero-based counting const sourceIndex = 1; // 1 @@ -135,44 +123,45 @@ describe('SDK - RainJS', () => { constants, argumentsLength: 3, stackLength: 3, - } + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from((9+5+1) + (10+6+2) + (11+7+3) + (12+8+4)); + const expected = BigNumber.from( + 9 + 5 + 1 + (10 + 6 + 2) + (11 + 7 + 3) + (12 + 8 + 4) + ); - assert( - expected.eq(result), - ` + assert( + expected.eq(result), + ` zipmap operation failed: expected: ${expected} got: ${result}` - ) - }) + ); + }); it('should log the current state of the script', async () => { - const [signer] = await ethers.getSigners(); - + const script: StateConfig = { constants: [1, 2, 3], sources: [ concat([ op(VM.Opcodes.BLOCK_NUMBER), op(VM.Opcodes.DEBUG), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.ADD, 3), op(VM.Opcodes.DEBUG), op(VM.Opcodes.ADD, 2), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); const result = await rainJs.run(); const block = await Time.currentBlock(); @@ -185,29 +174,28 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should perform addition operation correctly with block number over span of 100 blocks repeatition', async () => { - const [signer] = await ethers.getSigners(); - + const script: StateConfig = { constants: [1, 2, 3], sources: [ concat([ op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.ADD, 3), op(VM.Opcodes.ADD, 2), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); - for (let i = 0 ; i < 100; i++) { + for (let i = 0; i < 100; i++) { const result = await rainJs.run(); const block = await Time.currentBlock(); const expected = BigNumber.from(block + (1 + 2 + 3)); @@ -223,29 +211,28 @@ describe('SDK - RainJS', () => { got ${result}` ); } - }) + }); it('should perform subtraction operation correctly with block number over span of 100 blocks repeatition', async () => { - const [signer] = await ethers.getSigners(); const script: StateConfig = { constants: [500, 2, 3], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.SUB, 3), op(VM.Opcodes.BLOCK_NUMBER), op(VM.Opcodes.SUB, 2), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); - for (let i = 0 ; i < 100; i++) { + for (let i = 0; i < 100; i++) { const result = await rainJs.run(); const block = await Time.currentBlock(); const expected = BigNumber.from(500 - 2 - 3 - block); @@ -261,26 +248,25 @@ describe('SDK - RainJS', () => { got ${result}` ); } - }) + }); it('should perform multiplication operation correctly with block timestamp over span of 100 blocks repeatition', async () => { - const [signer] = await ethers.getSigners(); - + const script: StateConfig = { constants: [2], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.MUL, 2), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); - for (let i = 0 ; i < 100; i++) { + for (let i = 0; i < 100; i++) { const result = await rainJs.run(); const time = await Time.currentTime(); const expected = BigNumber.from(2 * time); @@ -296,27 +282,26 @@ describe('SDK - RainJS', () => { got ${result}` ); } - }) - + }); + it('should perform division operation correctly with block timestamp over span of 100 blocks repeatition', async () => { - const [signer] = await ethers.getSigners(); - + const script: StateConfig = { constants: [2, 3], sources: [ concat([ op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.DIV, 3), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); - for (let i = 0 ; i < 100; i++) { + for (let i = 0; i < 100; i++) { const result = await rainJs.run(); const time = await Time.currentTime(); const expected = BigNumber.from(time).div(2).div(3); @@ -332,28 +317,27 @@ describe('SDK - RainJS', () => { got ${result}` ); } - }) + }); it('should perform saturating add operation correctly', async () => { - const script: StateConfig = { constants: [ - "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", - "0x4a3bc6def" + '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0', + '0x4a3bc6def', ], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SATURATING_ADD, 2), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - + const expected = ethers.constants.MaxUint256; assert( @@ -363,28 +347,27 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should perform saturating mul operation correctly', async () => { - const script: StateConfig = { constants: [ - "0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0", - "0x4a3bc6def" + '0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0', + '0x4a3bc6def', ], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SATURATING_MUL, 2), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - + const expected = ethers.constants.MaxUint256; assert( @@ -394,28 +377,24 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should perform saturating sub operation correctly', async () => { - const script: StateConfig = { - constants: [ - "0x22", - "0x44" - ], + constants: ['0x22', '0x44'], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SATURATING_SUB, 2), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - + const expected = ethers.constants.Zero; assert( @@ -425,28 +404,24 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should perform mod operation correctly', async () => { - const script: StateConfig = { - constants: [ - "90", - "44" - ], + constants: ['90', '44'], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.MOD, 2), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - + const expected = ethers.constants.Two; assert( @@ -456,29 +431,25 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should perform exponention operation correctly', async () => { - const script: StateConfig = { - constants: [ - "2", - "5" - ], + constants: ['2', '5'], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.EXP, 2), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - - const expected = BigNumber.from("32"); + + const expected = BigNumber.from('32'); assert( expected.eq(result), @@ -487,28 +458,24 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should perform scale18_mul operation correctly', async () => { - const script: StateConfig = { - constants: [ - "0x22", - "0x44" - ], + constants: ['0x22', '0x44'], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SCALE18_MUL, 5), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("0x22").mul("10000000000000").mul("0x44"); + const expected = BigNumber.from('0x22').mul('10000000000000').mul('0x44'); assert( expected.eq(result), @@ -517,28 +484,24 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) - - it('should perform scale18_div operation correctly', async () => { + }); + it('should perform scale18_div operation correctly', async () => { const script: StateConfig = { - constants: [ - "0x22", - "0x44" - ], + constants: ['0x22', '0x44'], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SCALE18_DIV, 10), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("0x22").mul("100000000").div("0x44"); + const expected = BigNumber.from('0x22').mul('100000000').div('0x44'); assert( expected.eq(result), @@ -547,26 +510,20 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) - - it('should perform scale18 operation correctly', async () => { + }); + it('should perform scale18 operation correctly', async () => { const script: StateConfig = { - constants: [ - "220000000000000000012345", - ], + constants: ['220000000000000000012345'], sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.SCALE18, 22), - ]) - ] - } + concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALE18, 22)]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("22000000000000000001"); + const expected = BigNumber.from('22000000000000000001'); assert( expected.eq(result), @@ -575,26 +532,18 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) - - it('should perform scalen operation correctly', async () => { + }); + it('should perform scalen operation correctly', async () => { const script: StateConfig = { - constants: [ - "44371183800000000001", - ], - sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.SCALEN, 3), - ]) - ] - } + constants: ['44371183800000000001'], + sources: [concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALEN, 3)])], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("44371"); + const expected = BigNumber.from('44371'); assert( expected.eq(result), @@ -603,26 +552,20 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) - - it('should perform scale_by operation correctly', async () => { + }); + it('should perform scale_by operation correctly', async () => { const script: StateConfig = { - constants: [ - "44371183800127436851408839", - ], + constants: ['44371183800127436851408839'], sources: [ - concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.SCALE_BY, 136), - ]) - ] - } + concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALE_BY, 136)]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("443711838001274368"); + const expected = BigNumber.from('443711838001274368'); assert( expected.eq(result), @@ -631,28 +574,27 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should give the minimum value among the values', async () => { - const script: StateConfig = { constants: [10, 20, 30, 40, 50, 60], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 3), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.MIN, 5), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("10"); + const expected = BigNumber.from('10'); assert( expected.eq(result), @@ -661,29 +603,28 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should give the maximum value among the values', async () => { - const script: StateConfig = { constants: [10, 20, 30, 40, 50, 60], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 3), - op(VM.Opcodes.CONSTANTS, 4), - op(VM.Opcodes.CONSTANTS, 5), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.CONSTANT, 5), op(VM.Opcodes.MAX, 6), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("60"); + const expected = BigNumber.from('60'); assert( expected.eq(result), @@ -692,29 +633,28 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('eager_if and is_zero should work fine', async () => { - const script: StateConfig = { constants: [10, 20, 30, 35], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.ISZERO), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.EAGER_IF), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("30"); + const expected = BigNumber.from('30'); assert( expected.eq(result), @@ -723,42 +663,41 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('eager_if and equal_to, less_than, greater_than, any and every should work fine', async () => { - const script: StateConfig = { constants: [10, 20, ethers.constants.Zero, 30, 35], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANTS, 2), + op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.EQUAL_TO), - op(VM.Opcodes.CONSTANTS, 3), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 3), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.GREATER_THAN), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.ANY, 2), op(VM.Opcodes.EVERY, 2), - op(VM.Opcodes.CONSTANTS, 3), - op(VM.Opcodes.CONSTANTS, 4), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.EAGER_IF), - ]) - ] - } + ]), + ], + }; const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from("30"); + const expected = BigNumber.from('30'); assert( expected.eq(result), @@ -767,32 +706,41 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should correctly perform the update_block_for_tier_range and sat_diff with 2 reports', async () => { - const [signer] = await ethers.getSigners(); const script: StateConfig = { constants: [50, ethers.constants.MaxUint256], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), + op( + // TODO: @rouzwelt + // @ts-ignore + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + tierRange(Tier.ZERO, Tier.EIGHT) + ), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 0), + op( + // TODO: @rouzwelt + // @ts-ignore + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + tierRange(Tier.ZERO, Tier.EIGHT) + ), op(VM.Opcodes.SATURATING_DIFF), - ]) - ] - } + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); const result = await rainJs.run(); const expected = BigNumber.from( - "0x" + paddedUInt32(await Time.currentBlock() - 50).repeat(8) + '0x' + paddedUInt32((await Time.currentBlock()) - 50).repeat(8) ); assert( @@ -802,36 +750,48 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should correctly perform the update_block_for_tier_range and select_lte with "any logic and min mode" with 2 reports', async () => { - const [signer] = await ethers.getSigners(); const script: StateConfig = { constants: [1000, 50, ethers.constants.MaxUint256], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.FOUR)), - op(VM.Opcodes.CONSTANTS, 2), - op(VM.Opcodes.CONSTANTS, 1), - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.SIX)), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 0), + op( + // TODO: @rouzwelt + // @ts-ignore + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + tierRange(Tier.TWO, Tier.FOUR) + ), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 1), + op( + // TODO: @rouzwelt + // @ts-ignore + VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + tierRange(Tier.TWO, Tier.SIX) + ), op(VM.Opcodes.BLOCK_NUMBER), - op(VM.Opcodes.SELECT_LTE, selectLte(selectLteLogic.any, selectLteMode.min, 2)), - ]) - ] - } + op( + VM.Opcodes.SELECT_LTE, + selectLte(selectLteLogic.any, selectLteMode.min, 2) + ), + ]), + ], + }; - const rainJs = new RainJS(script, {signer}); + const rainJs = new RainJS(script, { signer }); const result = await rainJs.run(); const expected = BigNumber.from( - "0x" + - paddedUInt32("0xffffffff").repeat(2) + - paddedUInt32(50).repeat(4) + - paddedUInt32("0xffffffff").repeat(2) + '0x' + + paddedUInt32('0xffffffff').repeat(2) + + paddedUInt32(50).repeat(4) + + paddedUInt32('0xffffffff').repeat(2) ); assert( @@ -841,29 +801,23 @@ describe('SDK - RainJS', () => { expected ${expected} got ${result}` ); - }) + }); it('should panic when exponention goes beyond the max numeric range (max uint256)', async () => { - const [signer] = await ethers.getSigners(); - + const script: StateConfig = { constants: [ethers.constants.MaxUint256.div(3), 3], sources: [ concat([ - op(VM.Opcodes.CONSTANTS, 0), - op(VM.Opcodes.CONSTANTS, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.EXP, 2), - ]) - ] - } - const rainJs = new RainJS(script, {signer}); - - await expectAsyncError( - rainJs.run(), - "max numeric range overflow" - ); - }) - -}) + ]), + ], + }; + const rainJs = new RainJS(script, { signer }); + await expectAsyncError(rainJs.run(), 'max numeric range overflow'); + }); +}); From 0d4b52509bf1602ff37671e50afb60d61ac15996 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 19:20:26 -0400 Subject: [PATCH 014/125] fix current tiers --- src/classes/tierContract.ts | 26 ++++++++++++++++++-------- src/contracts/stake.ts | 19 ++----------------- test/1_initSDK.test.ts | 12 ++++++------ test/4_tiers.test.ts | 2 -- 4 files changed, 26 insertions(+), 33 deletions(-) diff --git a/src/classes/tierContract.ts b/src/classes/tierContract.ts index 83c4001..5ae59bd 100644 --- a/src/classes/tierContract.ts +++ b/src/classes/tierContract.ts @@ -91,19 +91,29 @@ export abstract class TierContract extends FactoryContract { ) => Promise; /** - * @deprecated * Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. * Tier 0 is that a address has never interact with the Tier Contract. * * @param account - address to check the current tier - * @param block - (optional) check the level tier of an account with respect to a specific block + * @param timestamp - (optional) check the level tier of an account with respect to a specific timestamp * @returns current tier level of the account */ - public async currentTier(account: string, block?: number): Promise { + public async currentTier( + account: string, + timestamp?: number + ): Promise { const currentTier = await this.report(account, []); - const againstBlock = block - ? block - : await this.signer.provider?.getBlockNumber(); + if (!timestamp) { + const _againstBlock = await this.signer.provider?.getBlockNumber(); + if (!_againstBlock) { + throw new Error('Unable to get the block'); + } + timestamp = (await this.signer.provider?.getBlock(_againstBlock)) + ?.timestamp; + if (!timestamp) { + throw new Error('Unable to get the timestamp'); + } + } const parsedReport = paddedUInt256(currentTier) .substring(2) @@ -112,9 +122,9 @@ export abstract class TierContract extends FactoryContract { .map((x) => parseInt('0x' + x)); let eligibleStatus = 0; - if (parsedReport && againstBlock) { + if (parsedReport && timestamp) { for (let i = 0; i < 8; i++) { - if (parsedReport[i] <= againstBlock) { + if (parsedReport[i] <= timestamp) { eligibleStatus = i + 1; } else { break; diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts index ab93013..b4fed36 100644 --- a/src/contracts/stake.ts +++ b/src/contracts/stake.ts @@ -6,7 +6,7 @@ import { ContractTransaction, } from 'ethers'; import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; -import { FactoryContract } from '../classes/factoryContract'; +import { TierContract } from '../classes/tierContract'; import { Stake__factory, StakeFactory__factory } from '../typechain'; @@ -29,7 +29,7 @@ import { Stake__factory, StakeFactory__factory } from '../typechain'; *``` */ -export class Stake extends FactoryContract { +export class Stake extends TierContract { protected static readonly nameBookReference: string = 'stakeFactory'; /** @@ -52,8 +52,6 @@ export class Stake extends FactoryContract { this.deposit = _stake.deposit; this.increaseAllowance = _stake.increaseAllowance; this.name = _stake.name; - this.report = _stake.report; - this.reportTimeForTier = _stake.reportTimeForTier; this.supportsInterface = _stake.supportsInterface; this.symbol = _stake.symbol; this.totalSupply = _stake.totalSupply; @@ -143,19 +141,6 @@ export class Stake extends FactoryContract { public readonly name: (overrides?: ReadTxOverrides) => Promise; - public readonly report: ( - account_: string, - context_: BigNumberish[], - overrides?: ReadTxOverrides - ) => Promise; - - public readonly reportTimeForTier: ( - account_: string, - tier_: BigNumberish, - context_: BigNumberish[], - overrides?: ReadTxOverrides - ) => Promise; - public readonly supportsInterface: ( interfaceId_: BytesLike, overrides?: ReadTxOverrides diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index 5c2ab6d..ad1ac65 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -27,7 +27,7 @@ import { ERC1155, utils, } from '../src'; -const {op} = utils; +const { op } = utils; /** * Addresses saved that are in SDK BookAddresses deployed to Hardhat network. @@ -121,7 +121,7 @@ before('Initializing and deploying contracts to hardhat network', async () => { sources: [op(VM.Opcodes.CONSTANT, 0), sourceReportTimeForTierDefault], constants: [0], }, - } + }; const tx = await CombineTierFactory.createChildTyped(alwaysArg); const AlwaysTier = CombineTier.getNewChildFromReceipt( @@ -146,7 +146,7 @@ before('Initializing and deploying contracts to hardhat network', async () => { }; }); -describe.only('SDK - BookAddress', () => { +describe('SDK - BookAddress', () => { it('should fail if no address stored in the book for a chain', () => { const arbitraryChainId = 1234; expect(() => AddressBook.getAddressesForChainId(arbitraryChainId)).to.throw( @@ -185,12 +185,12 @@ describe.only('SDK - BookAddress', () => { expect(address).to.be.equals(addresses.CombineTierFactory); }); - it('should get the EmissionsERC20Factory address', async () => { + it('should get the EmissionsERC20Factory address', async () => { const address = EmissionsERC20.getBookAddress(chainId); expect(address).to.be.equals(addresses.EmissionsERC20Factory); }); - it('should get the SaleFactory address', async () => { + it('should get the SaleFactory address', async () => { const address = Sale.getBookAddress(chainId); expect(address).to.be.equals(addresses.SaleFactory); }); @@ -238,7 +238,7 @@ describe.only('SDK - BookAddress', () => { }); }); -describe.only('SDK - Generics', () => { +describe('SDK - Generics', () => { it('should create and use an ERC20 instance correctly', async () => { const [deployer, receiver] = await ethers.getSigners(); diff --git a/test/4_tiers.test.ts b/test/4_tiers.test.ts index c83bbbe..0b715d7 100644 --- a/test/4_tiers.test.ts +++ b/test/4_tiers.test.ts @@ -102,8 +102,6 @@ describe('SDK - CombineTier', () => { const tier = new CombineTier(alwaysTierAddress, deployer); - console.log(tier.report(user1.address, [])); - // Any address should be allowed in all tiers expect(await tier.currentTier(user1.address)).to.be.equals( tier.levels.EIGHT From 54b8da6577fa059c3d3d73ff733fa09dea070bab Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 19:34:56 -0400 Subject: [PATCH 015/125] remove unneecessary value current tier --- src/classes/tierContract.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/classes/tierContract.ts b/src/classes/tierContract.ts index 5ae59bd..e8c6cb0 100644 --- a/src/classes/tierContract.ts +++ b/src/classes/tierContract.ts @@ -117,7 +117,7 @@ export abstract class TierContract extends FactoryContract { const parsedReport = paddedUInt256(currentTier) .substring(2) - .match(/.{1,8}/g) + .match(/.{8}/g) ?.reverse() .map((x) => parseInt('0x' + x)); From ac5da0d68b019fb78614e8d3ebb50e49f150d724 Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 19 Jun 2022 22:52:34 -0400 Subject: [PATCH 016/125] mumbai addresses and orderbook opcodes added --- src/addresses.ts | 24 ++++++++++++------------ src/contracts/orderBook.ts | 27 ++++++++++++++++++++++++++- test/1_initSDK.test.ts | 1 - 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/src/addresses.ts b/src/addresses.ts index c108a9b..0c688a3 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -173,18 +173,18 @@ const addressBook = [ */ chainId: 80001, addresses: { - vmStateBuilder: '', - alwaysTier: '', - combineTierFactory: '', - emissionsERC20Factory: '', - noticeBoard: '', - redeemableERC20ClaimEscrow: '', - redeemableERC20Factory: '', - saleFactory: '', - verifyFactory: '', - verifyTierFactory: '', - stakeFactory: '', - orderBook: '', + vmStateBuilder: '0x20F6E357E5Ca8a5C4C7081ABc548aa5D3C1f88D5', + alwaysTier: '0x1a5a119c3CD5D6118b55006DD4Aa499737B186C7', + combineTierFactory: '0x20e5b29B249716A5b458F334DC7F11c311E54177', + emissionsERC20Factory: '0x20812E2a90F3237B3EB20F53Dd7f20A60B85A032', + noticeBoard: '0x727bc1b817b1b41bB417af1D6b6874864C642e25', + redeemableERC20ClaimEscrow: '0xc26f68FB5E8fcd28661A26f92587c525e54407d0', + redeemableERC20Factory: '0xd7FC038ae2A69AbED7cEAF50C458ec17Ec8a33bd', + saleFactory: '0x36D1eCa99480820FeD2a160FC98E723Eec167c0F', + verifyFactory: '0x2AeB6aB29AfF3901054f9364ee26916F858088Ed', + verifyTierFactory: '0xAf6D4770E78D2d6ad8675666E251933649A8467e', + stakeFactory: '0x96031f3ba3C57B5a5ea6f7581b61bCf0a9cC51b3', + orderBook: '0xb8BADe9783a815512A67B86e5fE967e9B861E102', }, }, ]; diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index 7727006..b5c5007 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -4,9 +4,22 @@ import { ReadTxOverrides, TxOverrides, } from '../classes/rainContract'; -import { StateConfig, StorageOpcodesRange } from '../classes/vm'; +import { + StateConfig, + StorageOpcodesRange, + AllStandardOps, +} from '../classes/vm'; import { OrderBook__factory } from '../typechain'; +/** + * @public + * Type for the opcodes availables in a OrderBook instance. + */ +export type OrderBookOpcodes = typeof AllStandardOps & { + ORDER_FUNDS_CLEARED: number; + COUNTERPARTY_FUNDS_CLEARED: number; +}; + /** * @public * A class for calling method on a OrderBook. @@ -57,6 +70,18 @@ export class OrderBook extends RainContract { this.withdraw = _orderBook.withdraw; } + /** + * All the opcodes avaialbles in the OrderBook contract. + * + * @remarks + * This expose all the standard opcodes along with the specific opcodes of the OrderBook. + */ + public static Opcodes: OrderBookOpcodes = { + ...AllStandardOps, + ORDER_FUNDS_CLEARED: 0 + AllStandardOps.length, + COUNTERPARTY_FUNDS_CLEARED: 1 + AllStandardOps.length, + }; + /** * Get the OrderBook instance * diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index ad1ac65..f663bc7 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -108,7 +108,6 @@ before('Initializing and deploying contracts to hardhat network', async () => { const ctxAccount = op(VM.Opcodes.CONTEXT, 0); // prettier-ignore - // return default report const sourceReportTimeForTierDefault = VM.createVMSources([ op(VM.Opcodes.THIS_ADDRESS), ctxAccount, From d60e331f73ccb4ecafac65cb9604ce5f5eed63b6 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Mon, 20 Jun 2022 20:02:13 +0000 Subject: [PATCH 017/125] Update for templates, JSVM --- src/RainJS/OrderbookJS.ts | 109 +++ src/RainJS/RainJS.ts | 875 ++++++++++-------- src/classes/vm.ts | 3 + src/contracts/orderBook.ts | 30 + .../combineTierScriptGenerator.ts | 12 +- .../emissionsERC20ScriptGenerator.ts | 28 +- .../script-generators/saleScriptGenerator.ts | 18 +- src/contracts/tiers/iTier.ts | 25 - src/contracts/tiers/iTierV2.ts | 24 + src/index.ts | 2 +- src/utils.ts | 66 +- test/7_RainJS.test.ts | 21 +- 12 files changed, 733 insertions(+), 480 deletions(-) create mode 100644 src/RainJS/OrderbookJS.ts delete mode 100644 src/contracts/tiers/iTier.ts create mode 100644 src/contracts/tiers/iTierV2.ts diff --git a/src/RainJS/OrderbookJS.ts b/src/RainJS/OrderbookJS.ts new file mode 100644 index 0000000..66d33a0 --- /dev/null +++ b/src/RainJS/OrderbookJS.ts @@ -0,0 +1,109 @@ +import { BigNumber, Contract, Signer } from "ethers"; +import { StateConfig } from "../classes/vm"; +import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; +import { OrderBook, OrderbookContext } from "../contracts/orderBook"; + +// @TODO - not complete, local opcodes functions need to be added +/** + * @public - The javascript version of OrderbookVM which inherits RainJS with local Orderbook opcodes. + * @see Orderbook.sol in contracts + * + */ +export class OrderbookJS extends RainJS { + + /** + * Constructor of OrderbookJS to create a instance of this class with Orderbook's local opcodes. + * @see RainJS + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a Orderbook Contract and custom opcode functions) + * + */ + constructor( + state: StateConfig, + options?: { + signer?: Signer, + contract?: Contract, + applyOpFn?: ApplyOpFn, + storageOpFn?: ApplyOpFn, // for overriding the OrderbookJS's STORAGE opcode function + contextOpFn?: ApplyOpFn // for overriding the OrderbookJS's CONTEXT opcode function + } + ) { + super( + state, + { + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn + } + ); + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + if (options?.storageOpFn) { + this._STORAGE_ = options.storageOpFn; + } + for (let i = 0; i < OrderbookContext.length; i++) { + if (options?.contextOpFn && options.contextOpFn[i]) { + this._CONTEXT_[i] = options.contextOpFn[i]; + } + }; + } + + protected _OPCODE_: ApplyOpFn = { + ...this._OPCODE_, + [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + + }, + + [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + + } + }; + + /** + * key/value pair of CONTEXT opcodes of the Orderbook JSVM + * the required value need to be passed to "run" method as the context array in "data" object. + * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. + */ + protected _CONTEXT_: ApplyOpFn = { + [OrderbookContext.OrderHash]: (state: StateJS, operand: number, data?: any) => { + if(data && data.context != undefined) { + state.stack.push( + BigNumber.from( + data.context[OrderbookContext.OrderHash] + ) + ) + } + else throw new Error("Undefined buy units") + }, + + [OrderbookContext.CounterParty]: (state: StateJS, operand: number, data?: any) => { + if(data && data.context != undefined) { + state.stack.push( + BigNumber.from( + data.context[OrderbookContext.CounterParty] + ) + ) + } + else throw new Error("Undefined buy units") + }, + } + + /** + * key/value pair of STORAGE opcodes of the Orderbook JSVM (empty with no functions) + * @remark Orderbook doesnt have any STORAGE opcode by default and in its contract level, + * however in JSVM there is the ability to pass in custom opcode functions to it + */ + protected _STORAGE_: ApplyOpFn = {}; + +} \ No newline at end of file diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index c1f8960..62fecf7 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -1,11 +1,14 @@ import { BigNumber, Contract, ethers, Signer } from 'ethers'; -import { arrayify } from '../utils'; +import { Tier } from '../classes/tierContract'; import { StateConfig, VM } from '../classes/vm'; import { ERC1155 } from '../contracts/generics/erc1155'; import { ERC20 } from '../contracts/generics/erc20'; import { ERC721 } from '../contracts/generics/erc721'; -import { ITier } from '../contracts/tiers/iTier'; +import { ITierV2 } from '../contracts/tiers/iTierV2'; import { Provider } from '../types'; +import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; +import { ERC20Snapshot__factory } from '../typechain'; + /** * @public @@ -174,7 +177,8 @@ export class RainJS { this.state.sources[sourcesIndex][i + 1], data ); - } else { + } + else { await this.dispatch( this.state, this.state.sources[sourcesIndex][i], @@ -182,7 +186,8 @@ export class RainJS { data ); } - } else { + } + else { await this.dispatch( this.state, this.state.sources[sourcesIndex][i], @@ -234,19 +239,22 @@ export class RainJS { * key/value pair of opcodes and their functions for all standard opcodes */ protected readonly _OPCODE_: ApplyOpFn = { + [VM.Opcodes.CONSTANT]: (state: StateJS, operand: number, data?: any) => { if (operand < state.constants.length) { if (state.constants[operand] != undefined) { state.stack.push(state.constants[operand]); } else throw new Error('out-of-bound constants'); - } else { + } + else { if ( state.argumentsStack[operand - state.constants.length] != undefined ) { state.stack.push( state.argumentsStack[operand - state.constants.length] ); - } else throw new Error('out-of-bound arguments'); + } + else throw new Error('out-of-bound arguments'); } }, @@ -261,7 +269,8 @@ export class RainJS { ) => { if (this._CONTEXT_) { await this._CONTEXT_[operand](state, operand, data); - } else throw new Error('no or out of bounds contexxt opcode'); + } + else throw new Error('no or out of bounds contexxt opcode'); }, [VM.Opcodes.STORAGE]: async ( @@ -271,7 +280,8 @@ export class RainJS { ) => { if (this._STORAGE_) { await this._STORAGE_[operand](state, operand, data); - } else throw new Error('no or out-of-bound storage opcode'); + } + else throw new Error('no or out-of-bound storage opcode'); }, [VM.Opcodes.ZIPMAP]: async ( @@ -295,10 +305,8 @@ export class RainJS { state.argumentsStack.push( BigNumber.from( '0x' + - items_[j] - .toHexString() + paddedUInt256(items_[j]) .substring(2) - .padStart(64, '0') .slice(_startIndex, _endIndex) ) ); @@ -315,7 +323,8 @@ export class RainJS { this.state.sources[sourceIndex_][i + 1], data ); - } else { + } + else { await this.dispatch( this.state, this.state.sources[sourceIndex_][i], @@ -323,7 +332,8 @@ export class RainJS { data ); } - } else { + } + else { await this.dispatch( this.state, this.state.sources[sourceIndex_][i], @@ -336,38 +346,174 @@ export class RainJS { _startIndex -= valSize_; _endIndex -= valSize_; } - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); }, [VM.Opcodes.DEBUG]: (state: StateJS, operand: number, data?: any) => { if (operand < 4) { console.log(state.stack); - } else throw new Error('out-of-bound debug operand'); + } + else throw new Error('out-of-bound debug operand'); }, - [VM.Opcodes.BLOCK_NUMBER]: async ( + [VM.Opcodes.IERC20_BALANCE_OF]: async ( state: StateJS, operand: number, data?: any ) => { - if (this.provider != undefined) { - state.stack.push(BigNumber.from(await this.provider.getBlockNumber())); - } else throw new Error('Undefined Provider'); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); + state.stack.push(await erc20Contract_.balanceOf(account_)); + } + else throw new Error('Undefined stack variables'); }, - [VM.Opcodes.BLOCK_TIMESTAMP]: async ( + [VM.Opcodes.IERC20_TOTAL_SUPPLY]: async ( state: StateJS, operand: number, data?: any ) => { - if (this.provider != undefined) { + const item_ = state.stack.pop(); + if (item_ && this.signer != undefined) { + const erc20Address_ = paddedUInt160(item_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); + state.stack.push(await erc20Contract_.totalSupply()); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ && this.signer != undefined) { + const snapshotId_ = item3_; + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = ERC20Snapshot__factory.connect(erc20Address_, this.signer); + state.stack.push(await erc20Snapshot_.balanceOfAt(account_, snapshotId_)); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const snapshotId_ = item2_; + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = ERC20Snapshot__factory.connect(erc20Address_, this.signer); + state.stack.push(await erc20Snapshot_.totalSupplyAt(snapshotId_)); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC721_BALANCE_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const account_ = paddedUInt160(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); + state.stack.push(await erc721Contract_.balanceOf(account_)); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC721_OWNER_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && this.signer != undefined) { + const tokenId_ = BigNumber.from(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); state.stack.push( - BigNumber.from( - (await this.provider.getBlock(await this.provider.getBlockNumber())) - .timestamp - ) + BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) + ); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ && this.signer != undefined) { + const id_ = BigNumber.from(item3_); + const account_ = paddedUInt160(item2_); + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item3_ = state.stack.splice(-(operand + 1)); + const item2_ = state.stack.splice(-(operand + 1)); + const item1_ = state.stack.pop(); + if ( + item1_ && + item2_ && + item3_ && + this.signer != undefined && + item2_.length == item3_.length + ) { + const tokenIds_: BigNumber[] = []; + for (let i = 0; i < item3_.length; i++) { + tokenIds_.push(BigNumber.from(item3_[i])); + } + const accounts_: string[] = []; + for (let i = 0; i < item2_.length; i++) { + accounts_.push(paddedUInt160(item2_[i])); + } + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + state.stack.push( + ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) ); - } else throw new Error('Undefined Provider'); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.BLOCK_NUMBER]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this.provider != undefined) { + state.stack.push(BigNumber.from(await this.provider.getBlockNumber())); + } + else throw new Error('Undefined Provider'); }, [VM.Opcodes.SENDER]: async ( @@ -378,6 +524,7 @@ export class RainJS { if (this.signer != undefined) { state.stack.push(BigNumber.from(await this.signer.getAddress())); } + else throw new Error("undefined signer") }, [VM.Opcodes.THIS_ADDRESS]: async ( @@ -387,21 +534,36 @@ export class RainJS { ) => { if (this.contract != undefined) { state.stack.push(BigNumber.from(this.contract.address)); - } else throw new Error('Undefined contract'); + } + else throw new Error('Undefined contract'); }, - [VM.Opcodes.SCALE18_MUL]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + [VM.Opcodes.BLOCK_TIMESTAMP]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (this.provider != undefined) { state.stack.push( - item2_.mul( - operand <= 18 - ? item1_.mul((10 ** (18 - operand)).toString()) - : item1_.div((10 ** (operand - 18)).toString()) + BigNumber.from( + (await this.provider.getBlock(await this.provider.getBlockNumber())) + .timestamp ) ); - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined Provider'); + }, + + [VM.Opcodes.SCALE18]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ != undefined) { + state.stack.push( + operand <= 18 + ? item_.mul((10 ** (18 - operand)).toString()) + : item_.div((10 ** (operand - 18)).toString()) + ); + } + else throw new Error('Undefined stack variable'); }, [VM.Opcodes.SCALE18_DIV]: (state: StateJS, operand: number, data?: any) => { @@ -414,18 +576,41 @@ export class RainJS { : item1_.div((10 ** (operand - 18)).toString()) ).div(item2_) ); - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); }, - [VM.Opcodes.SCALE18]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ != undefined) { + [VM.Opcodes.SCALE18_MUL]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { state.stack.push( - operand <= 18 - ? item_.mul((10 ** (18 - operand)).toString()) - : item_.div((10 ** (operand - 18)).toString()) + item2_.mul( + operand <= 18 + ? item1_.mul((10 ** (18 - operand)).toString()) + : item1_.div((10 ** (operand - 18)).toString()) + ) ); - } else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.SCALE_BY]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ != undefined) { + if (operand > 127) { + operand = 256 - operand; + state.stack.push( + item_.div((10 ** (operand)).toString()) + ); + } + else { + state.stack.push( + item_.mul((10 ** (operand)).toString()) + ); + } + } + else throw new Error("Undefined stack variable") }, [VM.Opcodes.SCALEN]: (state: StateJS, operand: number, data?: any) => { @@ -436,35 +621,105 @@ export class RainJS { ? item_.div((10 ** (18 - operand)).toString()) : item_.mul((10 ** (operand - 18)).toString()) ); - } else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variable'); }, - [VM.Opcodes.SCALE_BY]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - const operandSign_ = (operand & 255) >> 7; - let _operand = operand & 127; - if (item_ != undefined) { - if (operandSign_) { - state.stack.push(item_.div((10 ** _operand).toString())); - } else { - state.stack.push(item_.mul((10 ** _operand).toString())); - } - } else throw new Error('Undefined stack variable'); + [VM.Opcodes.ANY]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _check; + let _item; + for (let i = 0; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + if (_item.gt(0)) { + _check = ethers.constants.One; + break; + } else _check = ethers.constants.Zero; + } + else throw new Error('Undefined stack variables'); + } + if (_check != undefined) { + state.stack.push(_check); + } + else throw new Error('Undefined stack variable'); }, - [VM.Opcodes.ADD]: (state: StateJS, operand: number, data?: any) => { + [VM.Opcodes.EAGER_IF]: (state: StateJS, operand: number, data?: any) => { + const false_ = state.stack.pop(); + const true_ = state.stack.pop(); + const condition_ = state.stack.pop(); + if (false_ && true_ && condition_ != undefined) { + state.stack.push(condition_.gt(0) ? true_ : false_); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.EQUAL_TO]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Underfined stack variables'); + }, + + [VM.Opcodes.EVERY]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _check; let _item; - let _accumulator = ethers.constants.Zero; for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); + _item = items_.shift(); if (_item != undefined) { - _accumulator = _accumulator.add(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } else throw new Error('Undefined stack variables'); + if (_item.isZero()) { + _check = ethers.constants.Zero; + break; + } else _check = ethers.constants.One; + } + else throw new Error('Undefined stack variables'); } - state.stack.push(_accumulator); + if (_check != undefined) { + state.stack.push(_check); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.GREATER_THAN]: ( + state: StateJS, + operand: number, + data?: any + ) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.ISZERO]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ != undefined) { + state.stack.push( + item_.isZero() ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.LESS_THAN]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ != undefined) { + state.stack.push( + item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); }, [VM.Opcodes.SATURATING_ADD]: ( @@ -482,28 +737,12 @@ export class RainJS { _accumulator = _accumulator.gt(ethers.constants.MaxUint256) ? ethers.constants.MaxUint256 : _accumulator; - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } state.stack.push(_accumulator); }, - [VM.Opcodes.SUB]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.sub(_item); - } else throw new Error('Undefined stack variables'); - } - if (_accumulator.isNegative()) { - throw new Error('Invalid value (negative value not allowed)'); - } else state.stack.push(_accumulator); - } else throw new Error('Undefined stack variables'); - }, - [VM.Opcodes.SATURATING_SUB]: ( state: StateJS, operand: number, @@ -520,25 +759,12 @@ export class RainJS { _accumulator = _accumulator.gt(0) ? _accumulator : ethers.constants.Zero; - } else throw new Error('Undefined stack variabble'); + } + else throw new Error('Undefined stack variabble'); } state.stack.push(_accumulator); - } else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.MUL]: (state: StateJS, operand: number, data?: any) => { - let _accumulator = ethers.constants.One; - let _item; - for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); - if (_item != undefined) { - _accumulator = _accumulator.mul(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); }, [VM.Opcodes.SATURATING_MUL]: ( @@ -556,27 +782,29 @@ export class RainJS { _accumulator = _accumulator.gt(ethers.constants.MaxUint256) ? ethers.constants.MaxUint256 : _accumulator; - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } state.stack.push(_accumulator); }, - [VM.Opcodes.DIV]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); + [VM.Opcodes.ADD]: (state: StateJS, operand: number, data?: any) => { let _item; - if (_accumulator != undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - _accumulator = _accumulator.div(_item); - } else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } else throw new Error('Undefined stack variables'); + let _accumulator = ethers.constants.Zero; + for (let i = 0; i < operand; i++) { + _item = state.stack.pop(); + if (_item != undefined) { + _accumulator = _accumulator.add(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); }, - [VM.Opcodes.MOD]: (state: StateJS, operand: number, data?: any) => { + [VM.Opcodes.DIV]: (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); let _item; @@ -584,11 +812,13 @@ export class RainJS { for (let i = 1; i < operand; i++) { _item = items_.shift(); if (_item != undefined) { - _accumulator = _accumulator.mod(_item); - } else throw new Error('Undefined stack variables'); + _accumulator = _accumulator.div(_item); + } + else throw new Error('Undefined stack variables'); } state.stack.push(_accumulator); - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); }, [VM.Opcodes.EXP]: (state: StateJS, operand: number, data?: any) => { @@ -603,136 +833,131 @@ export class RainJS { if (_accumulator.gt(ethers.constants.MaxUint256)) { throw new Error('max numeric range overflow'); } - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } state.stack.push(_accumulator); - } else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.MIN]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - if (items_.length == operand) { - state.stack.push(items_.reduce((e, m) => (e.lt(m) ? e : m))); - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); }, [VM.Opcodes.MAX]: (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); if ((items_.length = operand)) { state.stack.push(items_.reduce((e, m) => (e.gt(m) ? e : m))); - } else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.ISZERO]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ != undefined) { - state.stack.push( - item_.isZero() ? ethers.constants.One : ethers.constants.Zero - ); - } else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variables'); }, - [VM.Opcodes.EAGER_IF]: (state: StateJS, operand: number, data?: any) => { - const false_ = state.stack.pop(); - const true_ = state.stack.pop(); - const condition_ = state.stack.pop(); - if (false_ && true_ && condition_ != undefined) { - state.stack.push(condition_.gt(0) ? true_ : false_); - } else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.EQUAL_TO]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } else throw new Error('Underfined stack variables'); - }, - - [VM.Opcodes.LESS_THAN]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } else throw new Error('Undefined stack variables'); + [VM.Opcodes.MIN]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + if (items_.length == operand) { + state.stack.push(items_.reduce((e, m) => (e.lt(m) ? e : m))); + } + else throw new Error('Undefined stack variables'); }, - [VM.Opcodes.GREATER_THAN]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { - state.stack.push( - item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } else throw new Error('Undefined stack variables'); + [VM.Opcodes.MOD]: (state: StateJS, operand: number, data?: any) => { + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + _accumulator = _accumulator.mod(_item); + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); }, - [VM.Opcodes.EVERY]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _check; + [VM.Opcodes.MUL]: (state: StateJS, operand: number, data?: any) => { + let _accumulator = ethers.constants.One; let _item; for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = state.stack.pop(); if (_item != undefined) { - if (_item.isZero()) { - _check = ethers.constants.Zero; - break; - } else _check = ethers.constants.One; - } else throw new Error('Undefined stack variables'); + _accumulator = _accumulator.mul(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); } - if (_check != undefined) { - state.stack.push(_check); - } else throw new Error('Undefined stack variable'); + state.stack.push(_accumulator); }, - [VM.Opcodes.ANY]: (state: StateJS, operand: number, data?: any) => { + [VM.Opcodes.SUB]: (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); - let _check; + let _accumulator = items_.shift(); let _item; - for (let i = 0; i < operand; i++) { - _item = items_.shift(); - if (_item != undefined) { - if (_item.gt(0)) { - _check = ethers.constants.One; - break; - } else _check = ethers.constants.Zero; - } else throw new Error('Undefined stack variables'); - } - if (_check != undefined) { - state.stack.push(_check); - } else throw new Error('Undefined stack variable'); + if (_accumulator != undefined) { + for (let i = 1; i < operand; i++) { + _item = items_.shift(); + if (_item != undefined) { + _accumulator = _accumulator.sub(_item); + } + else throw new Error('Undefined stack variables'); + } + if (_accumulator.isNegative()) { + throw new Error('Invalid value (negative value not allowed)'); + } + else state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); }, - // TODO: @rouzwelt - // @ts-ignore - [VM.Opcodes.REPORT]: async ( + [VM.Opcodes.ITIERV2_REPORT]: async ( state: StateJS, operand: number, data?: any ) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const account_ = - '0x' + item2_.toHexString().substring(2).padStart(40, '0'); - const iTierContract = new ITier( - '0x' + item1_.toHexString().substring(2).padStart(40, '0'), + const context_ = state.stack.splice(-operand); + + if (item1_ && item2_ && this.signer != undefined && context_.length != operand) { + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), this.signer ); state.stack.push( - // TODO: @rouzwelt - // @ts-ignore - await iTierContract.report(account_) + await iTierV2Contract.report(account_, context_) ); - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.ITIERV2_REPORT_TIME_FOR_TIER]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + const item3_ = state.stack.pop(); + if (item3_ != undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + const context_ = state.stack.splice(-operand); + + if (item1_ && item2_ && this.signer != undefined && context_.length != operand) { + const tier_ = item3_; + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); + state.stack.push( + await iTierV2Contract.reportTimeForTier(account_, tier_,context_) + ); + } + else throw new Error('Undefined stack variables'); + } + else throw new Error("not valid tier"); }, [VM.Opcodes.SATURATING_DIFF]: ( @@ -740,17 +965,12 @@ export class RainJS { operand: number, data?: any ) => { - const report2_ = state.stack - .pop() - ?.toHexString() - .substring(2) - .padStart(64, '0'); - const report1_ = state.stack - .pop() - ?.toHexString() - .substring(2) - .padStart(64, '0'); - if (report1_ && report2_ != undefined) { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ != undefined) { + const report1_ = paddedUInt256(item1_).substring(2); + const report2_ = paddedUInt256(item2_).substring(2); let _startIndex = 0; let _endIndex = 8; let _result = ''; @@ -765,66 +985,21 @@ export class RainJS { '0x' + report2_.slice(_startIndex, _endIndex) ); _result += _tierRep1.gt(_tierRep2) - ? _tierRep1 - .sub(_tierRep2) - .toHexString() - .substring(2) - .padStart(8, '0') + ? paddedUInt32(_tierRep1.sub(_tierRep2)) : '00000000'; _startIndex += 8; _endIndex += 8; } state.stack.push(BigNumber.from('0x' + _result)); - } else throw new Error('Undefined stack variables'); - }, - // TODO: @rouzwelt - // @ts-ignore - [VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const endTier_ = operand >> 4; - const startTier_ = operand & 15; - const blockNumber_ = state.stack - .pop() - ?.toHexString() - .substring(2) - .padStart(8, '0'); - const report_ = state.stack - .pop() - ?.toHexString() - .substring(2) - .padStart(64, '0'); - if (report_ && blockNumber_ != undefined) { - let _startIndex = (8 - endTier_) * 8; - let _endIndex = _startIndex + 8; - let _result = report_.slice(0, _startIndex); - const resultLow_ = report_.slice( - _startIndex + (endTier_ - startTier_) * 8 - ); - - for (let i = 0; i < endTier_ - startTier_; i++) { - _result += - report_.slice(_startIndex, _endIndex) > blockNumber_ - ? blockNumber_ - : report_.slice(_startIndex, _endIndex); - _startIndex += 8; - _endIndex += 8; - } - state.stack.push(BigNumber.from('0x' + _result + resultLow_)); - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); }, [VM.Opcodes.SELECT_LTE]: (state: StateJS, operand: number, data?: any) => { const length_ = operand & 31; const mode_ = (operand & 96) >> 5; const logic_ = (operand & 128) >> 7; - const blockNumber_ = state.stack - .pop() - ?.toHexString() - .substring(2) - .padStart(8, '0'); + const item_ = state.stack.pop(); let _item; // array of raw reports let _reports: string[] = []; @@ -834,13 +1009,14 @@ export class RainJS { //building an array of each tier's report against blockNumber_ //tiers greater than blockNumber_ will get "ffffffff" - if (blockNumber_ != undefined) { + if (item_ != undefined) { + const blockNumber_ = paddedUInt32(item_); for (let i = 0; i < length_; i++) { let _startIndex = 0; let _endIndex = 8; _item = state.stack.pop(); if (_item != undefined) { - _reports[i] = _item.toHexString().substring(2).padStart(64, '0'); + _reports[i] = paddedUInt256(_item).substring(2); for (let j = 0; j < 8; j++) { _reportsAtTier[j].push( blockNumber_ < _reports[i].slice(_startIndex, _endIndex) @@ -850,9 +1026,11 @@ export class RainJS { _startIndex += 8; _endIndex += 8; } - } else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } - } else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variable'); // logic_ and mode_ selections if (logic_) { @@ -861,7 +1039,8 @@ export class RainJS { _reportsAtTier[i] = [ _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), ]; - } else if (mode_ == 1) { + } + else if (mode_ == 1) { //filter out "ffffffff" _reportsAtTier[i] = _reportsAtTier[i].filter( (e) => e != 'ffffffff' @@ -870,7 +1049,8 @@ export class RainJS { _reportsAtTier[i].length > 0 ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] : ['ffffffff']; - } else if (mode_ == 2) { + } + else if (mode_ == 2) { //filter out "ffffffff" _reportsAtTier[i] = _reportsAtTier[i].filter( (e) => e != 'ffffffff' @@ -881,19 +1061,22 @@ export class RainJS { : ['ffffffff']; } } - } else { + } + else { for (let i = 0; i < 8; i++) { if (mode_ == 0) { //check if "ffffffff" exists within the tier's array _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') ? ['ffffffff'] : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; - } else if (mode_ == 1) { + } + else if (mode_ == 1) { //check if "ffffffff" exists within the tier's array _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') ? ['ffffffff'] : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; - } else if (mode_ == 2) { + } + else if (mode_ == 2) { //check if "ffffffff" exists within the tier's array _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') ? ['ffffffff'] @@ -908,123 +1091,37 @@ export class RainJS { state.stack.push(BigNumber.from('0x' + _result)); }, - [VM.Opcodes.IERC20_BALANCE_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const account_ = - '0x' + item2_.toHexString().substring(2).padStart(40, '0'); - const erc20Address_ = - '0x' + item1_.toHexString().substring(2).padStart(40, '0'); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.balanceOf(account_)); - } else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC20_TOTAL_SUPPLY]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item_ = state.stack.pop(); - if (item_ && this.signer != undefined) { - const erc20Address_ = - '0x' + item_.toHexString().substring(2).padStart(40, '0'); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.totalSupply()); - } else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.IERC721_BALANCE_OF]: async ( + [VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE]: ( state: StateJS, operand: number, data?: any ) => { + const endTier_ = operand >> 4; + const startTier_ = operand & 15; const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const account_ = - '0x' + item2_.toHexString().substring(2).padStart(40, '0'); - const erc721Address_ = - '0x' + item1_.toHexString().substring(2).padStart(40, '0'); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push(await erc721Contract_.balanceOf(account_)); - } else throw new Error('Undefined stack variables'); - }, - [VM.Opcodes.IERC721_OWNER_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { - const tokenId_ = BigNumber.from(item2_); - const erc721Address_ = - '0x' + item1_.toHexString().substring(2).padStart(40, '0'); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push( - BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) + if (item1_ && item2_ != undefined) { + const _blockNumber = paddedUInt32(item2_); + const _report = paddedUInt256(item1_).substring(2); + let _startIndex = (8 - endTier_) * 8; + let _endIndex = _startIndex + 8; + let _result = _report.slice(0, _startIndex); + const resultLow_ = _report.slice( + _startIndex + (endTier_ - startTier_) * 8 ); - } else throw new Error('Undefined stack variable'); - }, - [VM.Opcodes.IERC1155_BALANCE_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer != undefined) { - const id_ = BigNumber.from(item3_); - const account_ = - '0x' + item2_.toHexString().substring(2).padStart(40, '0'); - const erc1155Address_ = - '0x' + item1_.toHexString().substring(2).padStart(40, '0'); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); - } else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item3_ = state.stack.splice(-(operand + 1)); - const item2_ = state.stack.splice(-(operand + 1)); - const item1_ = state.stack.pop(); - if ( - item1_ && - item2_ && - item3_ && - this.signer != undefined && - item2_.length == item3_.length - ) { - const tokenIds_: BigNumber[] = []; - for (let i = 0; i < item3_.length; i++) { - tokenIds_.push(BigNumber.from(item3_[i])); - } - const accounts_: string[] = []; - for (let i = 0; i < item2_.length; i++) { - accounts_.push( - '0x' + item2_[i].toHexString().substring(2).padStart(40, '0') - ); + for (let i = 0; i < endTier_ - startTier_; i++) { + _result += + _report.slice(_startIndex, _endIndex) > _blockNumber + ? _blockNumber + : _report.slice(_startIndex, _endIndex); + _startIndex += 8; + _endIndex += 8; } - const erc1155Address_ = - '0x' + item1_.toHexString().substring(2).padStart(40, '0'); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - state.stack.push( - ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) - ); - } else throw new Error('Undefined stack variable'); + state.stack.push(BigNumber.from('0x' + _result + resultLow_)); + } + else throw new Error('Undefined stack variables'); }, }; } diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 50c24cc..3631e79 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -214,6 +214,9 @@ export enum AllStandardOps { * Opcode to update the timestamp over a range of tiers for a report. */ UPDATE_TIMES_FOR_TIER_RANGE, + /** + * length of available opcodes + */ length, } diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index b5c5007..604f7b1 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -187,3 +187,33 @@ export type WithdrawConfig = { vaultId: BigNumberish; amount: BigNumberish; }; + +/** + * Enum for operand of the Orderbook's CONTEXT opcode + */ + export enum OrderbookContext { + /** + * 0 or the index of the context array for Orderbook CONTEXT opcode + * stacks the Orderhash + */ + OrderHash, + /** + * 1 or the index of the context array in the Oderbook CONTEXT opcode + * stacks the counterparty address + */ + CounterParty, + /** + * length of Orderbook's valid context opcodes + */ + length +}; + +/** + * Enum for operand of the Orderbook's STORAGE opcode + */ + export enum OrderbookStroage { + /** + * length of Orederbook's valid storage opcodes + */ + length +} \ No newline at end of file diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index a31c0b8..eea899b 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -37,9 +37,7 @@ export class CombineTierGenerator { concat([ op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.CONTEXT, CombineTierContext.Account), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + op(VM.Opcodes.ITIERV2_REPORT), ]), ]; } else { @@ -108,9 +106,7 @@ export class CombineTierGenerator { concat([ number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_NUMBER), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(startTier, endTier) ), ]), @@ -351,9 +347,7 @@ export class BuildReport extends CombineTierGenerator { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), ]), diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index e867d00..7f8fdbc 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -195,9 +195,7 @@ export class LinearEmissions { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), ]); @@ -210,9 +208,7 @@ export class LinearEmissions { VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount ), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + op(VM.Opcodes.ITIERV2_REPORT), ]); // prettier-ignore @@ -223,9 +219,7 @@ export class LinearEmissions { VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount ), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + op(VM.Opcodes.ITIERV2_REPORT), ]); // prettier-ignore @@ -505,27 +499,19 @@ export class SequentialEmissions { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.BLOCK_NUMBER), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.THIS_ADDRESS), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 3), diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 65e5698..2695d50 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -75,7 +75,7 @@ export class PriceCurve { endTimestamp: number, extraTimeDiscountThreshold: number, extraTimeDiscount: number - ): this { + ): PriceCurve { let _saleDiscount: StateConfig; const EXTRA_TIME_DISCOUNT = () => @@ -141,7 +141,7 @@ export class PriceCurve { tierAddress: string, tierDiscount: number[], tierActivation?: (number | string)[] - ): this { + ): PriceCurve { const _discountConfig = VM.toTierDiscounter( this, tierAddress, @@ -390,7 +390,7 @@ export class SaleDurationInTimestamp { extraTime: number, extraTimeAmount: number, erc20decimals: number = 18 - ): this { + ): SaleDurationInTimestamp { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), erc20decimals @@ -434,7 +434,7 @@ export class SaleDurationInTimestamp { * @returns this * */ - public applyOwnership(ownerAddress: string): this { + public applyOwnership(ownerAddress: string): SaleDurationInTimestamp { this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); let src = arrayify(this.sources[0], { allowMissingPrefix: true }); @@ -483,7 +483,7 @@ export class SaleDurationInTimestamp { public afterMinimumRaise( minimumRaise: number, erc20decimals: number = 18 - ): this { + ): SaleDurationInTimestamp { const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); let _minimumRaise: StateConfig = { @@ -580,7 +580,7 @@ export class SaleDurationInBlocks { extraTimeBlocks: number, extraTimeAmount: number, erc20decimals: number = 18 - ): this { + ): SaleDurationInBlocks { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), erc20decimals @@ -624,7 +624,7 @@ export class SaleDurationInBlocks { * @returns this * */ - public applyOwnership(ownerAddress: string): this { + public applyOwnership(ownerAddress: string): SaleDurationInBlocks { this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); let src = arrayify(this.sources[0], { allowMissingPrefix: true }); @@ -673,7 +673,7 @@ export class SaleDurationInBlocks { public afterMinimumRaise( minimumRaise: number, erc20decimals: number = 18 - ): this { + ): SaleDurationInBlocks { const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); let _minimumRaise: StateConfig = { @@ -751,7 +751,7 @@ export class BuyCap { tierMultiplier?: number[]; tierActivation?: (number | string)[]; } - ): this { + ): BuyCap { const MIN_CAP_SOURCES = (i: number) => concat([ op(VM.Opcodes.CONSTANT, i), diff --git a/src/contracts/tiers/iTier.ts b/src/contracts/tiers/iTier.ts deleted file mode 100644 index 5f624f4..0000000 --- a/src/contracts/tiers/iTier.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { Signer } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; - -/** - * @public - * Class to interact with ITier contracts - * - * @remarks - * Generic class to interact with any ITier contract in chain with the basic methods and functions. - * - * `ITier` is a simple interface that contracts can implement to provide membership lists for other contracts. - * - * This class can be used to interact with any contract that implement the ITier interface in their code, but - * does not know if the contract has implemented the code. E.g: if a contract does not implementent `setTier` as - * a BalanceTier Contract, the call will be reverted. - */ -export class ITier extends TierContract { - public readonly connect = (signer: Signer): ITier => { - return new ITier(this.address, signer); - }; - - constructor(_address: string, _signer: Signer) { - super(_address, _signer); - } -} diff --git a/src/contracts/tiers/iTierV2.ts b/src/contracts/tiers/iTierV2.ts new file mode 100644 index 0000000..aa8f8a6 --- /dev/null +++ b/src/contracts/tiers/iTierV2.ts @@ -0,0 +1,24 @@ +import { Signer } from 'ethers'; +import { TierContract } from '../../classes/tierContract'; + +/** + * @public + * Class to interact with ITierV2 contracts + * + * @remarks + * Generic class to interact with any ITierV2 contract in chain with the basic methods and functions. + * + * `ITierV2` is a simple interface that contracts can implement to provide membership lists for other contracts. + * + * This class can be used to interact with any contract that implement the ITierV2 interface in their code, but + * does not know if the contract has implemented the code. + */ +export class ITierV2 extends TierContract { + public readonly connect = (signer: Signer): ITierV2 => { + return new ITierV2(this.address, signer); + }; + + constructor(_address: string, _signer: Signer) { + super(_address, _signer); + } +} diff --git a/src/index.ts b/src/index.ts index f143a92..bc9ca03 100644 --- a/src/index.ts +++ b/src/index.ts @@ -24,7 +24,7 @@ export * from './RainJS/CombineTierJS'; export * from './RainJS/EmissionsERC20JS'; export * from './RainJS/SaleJS'; -export * from './contracts/tiers/iTier'; +export * from './contracts/tiers/iTierV2'; export * from './contracts/tiers/combineTier'; export * from './contracts/tiers/verifyTier'; diff --git a/src/utils.ts b/src/utils.ts index b1222ff..1d0e912 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,4 +1,4 @@ -import { BigNumber, ethers, utils } from 'ethers'; +import { BigNumber, BigNumberish, ethers, utils } from 'ethers'; import type { BytesLike } from 'ethers'; export const { @@ -90,16 +90,16 @@ export const bytify = ( /** * @public - * Utility function that transforms a BigNumber from the output of the ITier contract report + * Utility function that transforms a BigNumberish from the output of the ITierV2 contract report * - * @param report - report as bignumber from the ITier contract - * @returns hexadecimal string of the report already padded + * @param report - report as bignumberish from the ITierV2 contract + * @returns hexadecimal string of the report already padded (64 char hexString) */ -export const paddedUInt256 = (report: BigNumber): string => { - if (report.gt(ethers.constants.MaxUint256)) { +export const paddedUInt256 = (report: BigNumberish): string => { + if (BigNumber.from(report).gt(ethers.constants.MaxUint256)) { throw new Error(`${report} exceeds max uint256`); } - return '0x' + report.toHexString().substring(2).padStart(64, '0'); + return '0x' + hexlify(report, {allowMissingPrefix: true}).substring(2).padStart(64, '0'); }; /** @@ -107,13 +107,13 @@ export const paddedUInt256 = (report: BigNumber): string => { * * @param number - the value to convert into a 32bit size hexString * - * @returns a 8 character hexString + * @returns a 8 char hexString (without 0x prefix) */ -export const paddedUInt32 = (number: number | BytesLike | Hexable): string => { - if (ethers.BigNumber.from(number).gt(ethers.constants.MaxUint256)) { +export const paddedUInt32 = (number: BigNumberish): string => { + if (BigNumber.from(number).gt("0xffffffff")) { throw new Error(`${number} exceeds max uint32`); } - return hexlify(number).substring(2).padStart(8, '0'); + return hexlify(number, {allowMissingPrefix: true}).substring(2).padStart(8, '0'); }; /** @@ -163,7 +163,7 @@ export function callSize( // ) if (sourceIndex < 0 || sourceIndex > 7) { - throw new Error('Invalid fnSize'); + throw new Error('Invalid fnIndex'); } else if (loopSize < 0 || loopSize > 3) { throw new Error('Invalid loopSize'); } else if (valSize < 0 || valSize > 7) { @@ -212,4 +212,46 @@ export const replaceAt = ( const originalParsed = arrayify(original, { allowMissingPrefix: true }); originalParsed[index] = parseInt(replacement.toString()); return originalParsed; +}; + +/** + * @public Utility function to produce 64 bits size hexString + * + * @param number - the value to convert into a 64bit size hexString + * + * @returns a 16 character hexString (without 0x prefix) + */ + export const paddedUInt64 = (number: BigNumberish): string => { + if (BigNumber.from(number).gt("0xffffffffffffffff")) { + throw new Error(`${number} exceeds max uint64`); + } + return hexlify(number, {allowMissingPrefix: true}).substring(2).padStart(16, '0'); +}; + +/** + * @public Utility function to produce 128 bits size hexString + * + * @param number - the value to convert into a 128bit size hexString + * + * @returns a 32 character hexString (without 0x prefix) + */ + export const paddedUInt128 = (number: BigNumberish): string => { + if (BigNumber.from(number).gt("0xffffffffffffffffffffffffffffffff")) { + throw new Error(`${number} exceeds max uint128`); + } + return hexlify(number, {allowMissingPrefix: true}).substring(2).padStart(32, '0'); +}; + +/** + * @public + * Utility function that transforms a BigNumberish to an ether address (40 char length hexString) + * + * @param report - value as bignumberish + * @returns hexadecimal string as an ether address (40 char length hexString) + */ + export const paddedUInt160 = (address: BigNumberish): string => { + if (BigNumber.from(address).gt("0xffffffffffffffffffffffffffffffffffffffff")) { + throw new Error(`${address} exceeds max uint160`); + } + return '0x' + hexlify(address, {allowMissingPrefix: true}).substring(2).padStart(40, '0'); }; \ No newline at end of file diff --git a/test/7_RainJS.test.ts b/test/7_RainJS.test.ts index cd8e543..0f69ba0 100644 --- a/test/7_RainJS.test.ts +++ b/test/7_RainJS.test.ts @@ -1,7 +1,8 @@ import { assert } from 'chai'; import { ethers } from 'hardhat'; -import { expectAsyncError, Tier, Time } from './utils'; import { BigNumber } from 'ethers'; +import { expectAsyncError, Tier, Time } from './utils'; +import { StateConfig, RainJS, OpcodeFN, ApplyOpFn, VM } from '../src'; import { op, paddedUInt32, @@ -12,7 +13,7 @@ import { selectLteLogic, selectLteMode, } from '../src/utils'; -import { StateConfig, RainJS, OpcodeFN, ApplyOpFn, VM } from '../src'; + describe('SDK - RainJS', () => { it('should perform correctly with custom opcode function', async () => { @@ -718,17 +719,13 @@ describe('SDK - RainJS', () => { op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.BLOCK_NUMBER), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONSTANT, 0), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), op(VM.Opcodes.SATURATING_DIFF), @@ -762,17 +759,13 @@ describe('SDK - RainJS', () => { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 0), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.FOUR) ), op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), op( - // TODO: @rouzwelt - // @ts-ignore - VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, + VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.TWO, Tier.SIX) ), op(VM.Opcodes.BLOCK_NUMBER), From 17a7a72339d14cff1dd00c16b5d9a5b5173f6488 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Mon, 20 Jun 2022 21:00:56 +0000 Subject: [PATCH 018/125] BalanceTier templates --- .../combineTierScriptGenerator.ts | 155 +++++++++++++++++- 1 file changed, 148 insertions(+), 7 deletions(-) diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index eea899b..1bb0d59 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -12,6 +12,7 @@ import { paddedUInt256, selectLteLogic, selectLteMode, + parseUnits, } from '../../utils'; /** @@ -56,7 +57,7 @@ export class CombineTierGenerator { * * @returns this */ - public combine( + public combineWith( reportVar: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, @@ -95,7 +96,7 @@ export class CombineTierGenerator { * * @returns this */ - public updateReportAtTierRange( + public updateReport( startTier: Tier, endTier: Tier, number?: number @@ -128,7 +129,7 @@ export class CombineTierGenerator { * * @returns this */ - public satDiff(reportVar: string | StateConfig): this { + public differenceFrom(reportVar: string | StateConfig): this { const _buttom: StateConfig = typeof reportVar == 'string' ? new CombineTierGenerator(reportVar) @@ -156,7 +157,7 @@ export class CombineTierGenerator { * * @returns this */ - public holdingTimeTransferTier( + public isTierHeldFor( reportVar: string | StateConfig, numberOfBlocks: number | number[] ): this { @@ -166,8 +167,6 @@ export class CombineTierGenerator { : reportVar; const _shifter = paddedUInt256( - BigNumber.from( - '0x' + paddedUInt32('7') + paddedUInt32('6') + paddedUInt32('5') + @@ -176,7 +175,6 @@ export class CombineTierGenerator { paddedUInt32('2') + paddedUInt32('1') + paddedUInt32('0') - ) ); const _blocks = paddedUInt256( @@ -246,6 +244,7 @@ export class CombineTierGenerator { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.EXP, 2), + op(VM.Opcodes.MUL, 2), ]), ], }; @@ -356,4 +355,146 @@ export class BuildReport extends CombineTierGenerator { } super(_result); } +}; + +/** + * @public + * class to create a the vmStateConfig for CombineTier as BalanceTier. + * this will perform similar to ERC20BalancTier in RainVM version 1.0 + * + */ +export class ERC20BalanceTier extends CombineTierGenerator { + + /** + * Constructor for ERC20BalanceTier vmStateConfig + * + * @param tierValues - an array of 8 values for each tier values + * @param tokenAddress - the ERC20 token address + * @param tokenDecimals - the ERC20 token decimals + */ + constructor ( + public readonly tierValues: (number | string)[], + public readonly tokenAddress: string, + tokenDecimals: number = 18 + ) { + const constants = [ + paddedUInt256( + paddedUInt32(parseUnits(tierValues[7].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[6].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[5].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[4].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[3].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[2].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[1].toString(), tokenDecimals)) + + paddedUInt32(parseUnits(tierValues[0].toString(), tokenDecimals)) + ), + tokenAddress, + paddedUInt256( + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + + paddedUInt32('0') + ), + "0xffffffff", + "0", + "100000000" + ]; + const sources = [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), + op(VM.Opcodes.ADD, 8), + ]), + concat([ + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.IERC20_BALANCE_OF), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.EXP, 2), + op(VM.Opcodes.MUL, 2), + ]) + ]; + super({constants, sources}); + } +}; + +/** + * @public + * class to create a the vmStateConfig for CombineTier as BalanceTier. + * this will perform similar to ERC721BalancTier in RainVM version 1.0 + * + */ + export class ERC721BalanceTier extends CombineTierGenerator { + + /** + * Constructor for ERC721BalanceTier vmStateConfig + * + * @param tierValues - an array of 8 values for each tier values + * @param tokenAddress - the ERC721 token address + */ + constructor ( + public readonly tierValues: (number | string)[], + public readonly tokenAddress: string, + ) { + const constants = [ + paddedUInt256( + paddedUInt32(tierValues[7].toString()) + + paddedUInt32(tierValues[6].toString()) + + paddedUInt32(tierValues[5].toString()) + + paddedUInt32(tierValues[4].toString()) + + paddedUInt32(tierValues[3].toString()) + + paddedUInt32(tierValues[2].toString()) + + paddedUInt32(tierValues[1].toString()) + + paddedUInt32(tierValues[0].toString()) + ), + tokenAddress, + paddedUInt256( + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + + paddedUInt32('0') + ), + "0xffffffff", + "0", + "100000000" + ]; + const sources = [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), + op(VM.Opcodes.ADD, 8), + ]), + concat([ + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.IERC721_BALANCE_OF), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.EXP, 2), + op(VM.Opcodes.MUL, 2), + ]) + ]; + super({constants, sources}); + } } From 6b0e9d34cffbdcfc1fd39b1fd04375bc8caf0b01 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Tue, 21 Jun 2022 21:11:25 +0000 Subject: [PATCH 019/125] update and some fixes --- shell.nix | 1 + src/RainJS/RainJS.ts | 5 +- src/classes/vm.ts | 17 ++-- .../combineTierScriptGenerator.ts | 90 ++++++++++++------- test/7_RainJS.test.ts | 2 +- 5 files changed, 68 insertions(+), 47 deletions(-) diff --git a/shell.nix b/shell.nix index 7326a24..2ffb8ed 100644 --- a/shell.nix +++ b/shell.nix @@ -48,6 +48,7 @@ in pkgs.stdenv.mkDerivation { name = "shell"; buildInputs = [ + pkgs.yarn pkgs.nodejs-14_x copy-contracts generate-typechain diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 62fecf7..3f41db5 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -915,9 +915,9 @@ export class RainJS { operand: number, data?: any ) => { + const context_ = operand ? state.stack.splice(-operand) : []; const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - const context_ = state.stack.splice(-operand); if (item1_ && item2_ && this.signer != undefined && context_.length != operand) { const account_ = paddedUInt160(item2_); @@ -937,12 +937,11 @@ export class RainJS { operand: number, data?: any ) => { + const context_ = operand ? state.stack.splice(-operand) : []; const item3_ = state.stack.pop(); if (item3_ != undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { - const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - const context_ = state.stack.splice(-operand); if (item1_ && item2_ && this.signer != undefined && context_.length != operand) { const tier_ = item3_; diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 3631e79..ae49c7a 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -912,6 +912,7 @@ export class VM { * * @param configs - An array of StateConfigs that will be merged and executed at runtime in order by time slices * @param times - An array of numbers representing either BLOCK_NUMBER or TIMESTAMP that time slices will be between each of the 2 items in the array + * its length should be number of configs - 1. * @param inBlockNumber - (optional) false by default which means the time slices will be based on TIMESTAMP, pass true to base it on BLOCK_NUMBER * * @returns a VM script @see StateConfig @@ -921,25 +922,19 @@ export class VM { times: number[], inBlockNumber: boolean = false ): StateConfig { - if (configs.length == times.length) { + if (configs.length == times.length + 1) { let _result: StateConfig; const SLICER = (i: number): StateConfig => { return { - constants: [times[i], times[i + 1]], + constants: [times[i]], sources: [ concat([ - op(VM.Opcodes.CONSTANT, 0), inBlockNumber ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.LESS_THAN), - inBlockNumber - ? op(VM.Opcodes.BLOCK_NUMBER) - : op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.EVERY), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN) ]), ], }; @@ -963,6 +958,6 @@ export class VM { } return _result; - } else throw new Error('invalid arguments'); + } else throw new Error('invalid number of times or configs arguments'); } } diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 1bb0d59..a4876e2 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -29,11 +29,11 @@ export class CombineTierGenerator { /** * Constructor for this class * - * @param reportVar - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) + * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) */ - constructor(reportVar: string | StateConfig) { - if (typeof reportVar == 'string') { - this.constants = [reportVar]; + constructor(reporter: string | StateConfig) { + if (typeof reporter == 'string') { + this.constants = [reporter]; this.sources = [ concat([ op(VM.Opcodes.CONSTANT, 0), @@ -42,37 +42,37 @@ export class CombineTierGenerator { ]), ]; } else { - this.constants = reportVar.constants; - this.sources = reportVar.sources; + this.constants = reporter.constants; + this.sources = reporter.sources; } } /** * Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode * - * @param reportVar - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) + * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) * @param logic - selectLte logic * @param mode - selectLte mode - * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_NUMBER + * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP * * @returns this */ public combineWith( - reportVar: string | StateConfig, + reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, number?: number - ): this { + ): CombineTierGenerator { const _buttom: StateConfig = - typeof reportVar == 'string' - ? new CombineTierGenerator(reportVar) - : reportVar; + typeof reporter == 'string' + ? new CombineTierGenerator(reporter) + : reporter; const _combiner: StateConfig = { constants: number ? [number] : [], sources: [ concat([ - number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_NUMBER), + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), ]), ], @@ -92,7 +92,7 @@ export class CombineTierGenerator { * * @param startTier - start of the report updating range (exclusive) * @param endTier - end of the report updating range (inclusive) - * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_NUMBER + * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP * * @returns this */ @@ -100,12 +100,12 @@ export class CombineTierGenerator { startTier: Tier, endTier: Tier, number?: number - ): this { + ): CombineTierGenerator { const _updater: StateConfig = { constants: number ? [number] : [], sources: [ concat([ - number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_NUMBER), + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(startTier, endTier) @@ -125,15 +125,15 @@ export class CombineTierGenerator { /** * Saturating difference between 2 reports * - * @param reportVar - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) + * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) * * @returns this */ - public differenceFrom(reportVar: string | StateConfig): this { + public differenceFrom(reporter: string | StateConfig): this { const _buttom: StateConfig = - typeof reportVar == 'string' - ? new CombineTierGenerator(reportVar) - : reportVar; + typeof reporter == 'string' + ? new CombineTierGenerator(reporter) + : reporter; const _differ: StateConfig = { constants: [], @@ -152,19 +152,45 @@ export class CombineTierGenerator { /** * Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. * - * @param reportVar - either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) + * @param reporter - either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) * @param numberOfBlocks - A number or an array of numbers represting the number of blocks a given tier must be held to get ALWAYS report or else it gets NEVER report. * * @returns this */ public isTierHeldFor( - reportVar: string | StateConfig, - numberOfBlocks: number | number[] - ): this { + reporter: string | StateConfig, + numberOfBlocks: number | number[], + thresholds?: (number | string)[], + tokenDecimals: number = 18 + ): CombineTierGenerator { + let stakeContext: StateConfig = { + constants: [], + sources: [] + }; + if (thresholds && thresholds.length > 0) { + for (let i = 0; i < thresholds.length; i++) { + stakeContext.constants.push( + parseUnits(thresholds[i].toString(), tokenDecimals) + ); + stakeContext.sources.push( + concat([ + op(VM.Opcodes.CONSTANT, i) + ]) + ); + } + stakeContext.sources = [ + concat([ + ...stakeContext.sources + ]) + ]; + } + const _report: StateConfig = - typeof reportVar == 'string' - ? new CombineTierGenerator(reportVar) - : reportVar; + typeof reporter == 'string' + ? stakeContext.constants.length > 0 + ? VM.combiner(new CombineTierGenerator(reporter), stakeContext, {position: [2]}) + : new CombineTierGenerator(reporter) + : reporter; const _shifter = paddedUInt256( paddedUInt32('7') + @@ -233,7 +259,7 @@ export class CombineTierGenerator { op(VM.Opcodes.ADD, 8), ]), concat([ - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.CONSTANT, 5), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 6), @@ -266,7 +292,7 @@ export class BuildReport extends CombineTierGenerator { * Contructor of this class * * @param number - (optional) A number or an array of numbers represting the report at each tier, - * if not passed, BLOCK_NUMBER will be used to creat the report of each tier + * if not passed, BLOCK_TIMESTAMP will be used to creat the report of each tier */ constructor(number?: number | number[]) { let _result: StateConfig; @@ -344,7 +370,7 @@ export class BuildReport extends CombineTierGenerator { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) diff --git a/test/7_RainJS.test.ts b/test/7_RainJS.test.ts index 0f69ba0..e457ff4 100644 --- a/test/7_RainJS.test.ts +++ b/test/7_RainJS.test.ts @@ -559,7 +559,7 @@ describe('SDK - RainJS', () => { const script: StateConfig = { constants: ['44371183800127436851408839'], sources: [ - concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALE_BY, 136)]), + concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALE_BY, 248)]), ], }; From fef20da6a5d3dccdb646c0585bc1c44a50e94fd3 Mon Sep 17 00:00:00 2001 From: NanezX Date: Wed, 22 Jun 2022 03:54:45 -0400 Subject: [PATCH 020/125] source friendly generator --- src/friendlySource.ts | 579 ++++++++++++ src/index.ts | 2 + test/friendlySource.test.ts | 1746 +++++++++++++++++++++++++++++++++++ test/utils.ts | 34 + 4 files changed, 2361 insertions(+) create mode 100644 src/friendlySource.ts create mode 100644 test/friendlySource.test.ts diff --git a/src/friendlySource.ts b/src/friendlySource.ts new file mode 100644 index 0000000..4e4b14a --- /dev/null +++ b/src/friendlySource.ts @@ -0,0 +1,579 @@ +import { BytesLike, BigNumberish, BigNumber } from 'ethers'; +import { AllStandardOps, StateConfig } from './classes/vm'; +import { arrayify, paddedUInt256 } from './utils'; + +interface OpMeta { + opcode: number; + name: string; + input: string; +} + +interface OpInfo extends OpMeta { + operand: number; +} + +interface State { + stackIndex: BigNumberish; + stack: { val: any; consumed: boolean }[]; + sources: BytesLike[]; + constants: BigNumberish[]; +} + +type Pair = [number, number]; + +const newOpMeta: OpMeta[] = [ + { + opcode: AllStandardOps.CONSTANT, + name: 'CONSTANTS', + input: 'constantIndex', + }, + { + opcode: AllStandardOps.STACK, + name: 'STACK', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.CONTEXT, + name: 'CONTEXT', + input: 'CONTEXT', // TODO + }, + { + opcode: AllStandardOps.STORAGE, + name: 'STORAGE', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.ZIPMAP, + name: 'ZIPMAP', + input: 'zipmap', + }, + { + opcode: AllStandardOps.DEBUG, + name: 'DEBUG', + input: '', + }, + { + opcode: AllStandardOps.IERC20_BALANCE_OF, + name: 'IERC20_BALANCE_OF', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC20_TOTAL_SUPPLY, + name: 'IERC20_TOTAL_SUPPLY', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, + name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, + name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC721_BALANCE_OF, + name: 'IERC721_BALANCE_OF', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC721_OWNER_OF, + name: 'IERC721_OWNER_OF', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC1155_BALANCE_OF, + name: 'IERC1155_BALANCE_OF', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.IERC1155_BALANCE_OF_BATCH, + name: 'IERC1155_BALANCE_OF_BATCH', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.BLOCK_NUMBER, + name: 'BLOCK_NUMBER', + input: 'blockNumber', + }, + { + opcode: AllStandardOps.SENDER, + name: 'SENDER', + input: 'msgSender', + }, + { + opcode: AllStandardOps.THIS_ADDRESS, + name: 'THIS_ADDRESS', + input: 'thisAddress', + }, + { + opcode: AllStandardOps.BLOCK_TIMESTAMP, + name: 'BLOCK_TIMESTAMP', + input: 'blockTimestamp', + }, + { + opcode: AllStandardOps.SCALE18, + name: 'SCALE18', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SCALE18_DIV, + name: 'SCALE18_DIV', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SCALE18_MUL, + name: 'SCALE18_MUL', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SCALE_BY, + name: 'SCALE_BY', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SCALEN, + name: 'SCALEN', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.ANY, + name: 'ANY', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.EAGER_IF, + name: 'EAGER_IF', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.EQUAL_TO, + name: 'EQUAL_TO', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.EVERY, + name: 'EVERY', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.GREATER_THAN, + name: 'GREATER_THAN', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.ISZERO, + name: 'ISZERO', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.LESS_THAN, + name: 'LESS_THAN', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SATURATING_ADD, + name: 'SATURATING_ADD', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SATURATING_MUL, + name: 'SATURATING_MUL', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SATURATING_SUB, + name: 'SATURATING_SUB', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.ADD, + name: 'ADD', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.DIV, + name: 'DIV', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.EXP, + name: 'EXP', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.MAX, + name: 'MAX', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.MIN, + name: 'MIN', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.MOD, + name: 'MOD', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.MUL, + name: 'MUL', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SUB, + name: 'SUB', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.ITIERV2_REPORT, + name: 'ITIERV2_REPORT', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, + name: 'ITIERV2_REPORT_TIME_FOR_TIER', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SATURATING_DIFF, + name: 'SATURATING_DIFF', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.SELECT_LTE, + name: 'SELECT_LTE', + input: 'takeFromStack', + }, + { + opcode: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, + name: 'UPDATE_TIMES_FOR_TIER_RANGE', + input: 'takeFromStack', + }, +]; + +/** + * @public + * The generator of friendly human readable source. + * + * @remarks + * Parse a State to a more human readable form, so feel free to use it and make more friendly + * anyone that want to read the script that is being used in the code. + * + * If you find an issue or you want to propose a better way to show a specific script or opcodes, please + * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues + */ +export class HumanFriendlySource { + private static opMeta: OpMeta[] = newOpMeta; + + public static get(_state: StateConfig): string { + // public static get(sources: BytesLike[], constants: BigNumberish[]): string { + const state: State = { + stackIndex: 0, + stack: [], + sources: _state.sources, + constants: _state.constants, + }; + + return this._eval(state, 0); + } + + /** + * Make more readable the output from the HumanFriendly Source with an indented + * @param _text - The output from the HumanFriendlySource + * @param n - The amount spaces based of each indent + * @returns The pretty output + */ + public static prettify (_text: string, n: number = 2): string { + let space = ' '; + let counter = 0; + for (let i = 0; i < _text.length; i++) { + if (_text[i] === '(' || _text[i] === ',') { + if (_text[i] !== ',') counter++; + _text = + _text.slice(0, i + 1) + + '\n' + + space.repeat(_text[i] !== ',' ? counter * n : counter * n - 1) + + _text.slice(i + 1); + } + if (_text[i] === ')') { + counter--; + _text = + _text.slice(0, i) + '\n' + space.repeat(counter * n) + _text.slice(i); + i = i + counter * n + 1; + } + } + return _text; + } + + private static _eval = (state: State, sourceIndex: number) => { + let i = 0; + let op: OpInfo; + + const ops = this.pairs(state.sources[sourceIndex]).map((pair) => { + const opmeta = this.opMeta.find((opmeta) => opmeta.opcode === pair[0]); + if (typeof opmeta === 'undefined') { + throw Error(`Unknown opcode: ${pair[0]}`); + } + + return { + operand: pair[1], + ...opmeta, + }; + }); + + while (i < ops.length) { + const _stackIndex = BigNumber.from(state.stackIndex).toNumber(); + op = ops[i]; + i++; + + if (op.input === 'constantIndex') { + if (op.operand < 128) { + state.stack[_stackIndex] = { + val: state.constants[op.operand], + consumed: false, + }; + } else { + state.stack[_stackIndex] = { + val: '^' + (op.operand - 128), + consumed: false, + }; + } + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'blockNumber') { + state.stack[_stackIndex] = { + val: 'CURRENT_BLOCK', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'msgSender') { + state.stack[_stackIndex] = { + val: 'SENDER', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'thisAddress') { + state.stack[_stackIndex] = { + val: 'THIS_ADDRESS', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'blockTimestamp') { + state.stack[_stackIndex] = { + val: 'CURRENT_TIMESTAMP', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'SCALE18_DECIMALS') { + state.stack[_stackIndex] = { + val: 'SCALE18_DECIMALS', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'SCALE18_ONE') { + state.stack[_stackIndex] = { + val: 'SCALE18_ONE', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'CONTEXT') { + state.stack[_stackIndex] = { + val: `CONTEXT[${op.operand}]`, + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'takeFromStack') { + this.applyOp(state, op); + } else if (op.input === 'zipmap') { + this.zipmap(state, op.operand); + } + } + + return state.stack + .filter((item) => item.consumed === false) + .map((item) => { + item.consumed = true; + return item.val; + }) + .join(' '); + }; + + private static zipmap = (state: State, operand: number) => { + let tempString = `ZIPMAP(\n`; + + const sourceIndex = operand & 0x07; + const stepSize = (operand >> 3) & 0x03; + const valLength = (operand >> 5) & 0x07; + + let tempArr = []; + + for (let i = 0; i <= valLength; i++) { + tempArr.push( + stepSize > 0 + ? JSON.stringify( + Array.from(this.divideArray(state.stack[i].val, stepSize)) + ).replace(/,/g, ', ') + : state.stack[i].val + ); + state.stack[i].consumed = true; + } + + tempArr.push(this._eval(state, sourceIndex)); + + tempString += tempArr.map((entry) => ' ' + entry).join(`,\n`); + tempString += `\n)`; + + state.stack[BigNumber.from(state.stackIndex).toNumber()] = { + val: tempString, + consumed: false, + }; + }; + + private static applyOp = (state: State, op: OpInfo) => { + const _stackIndex = BigNumber.from(state.stackIndex).toNumber(); + let baseIndex = _stackIndex - op.operand; + let top = _stackIndex - 1; + let tempString = op.name + '('; + let cursor = baseIndex; + let tempArr: any[]; + + let operandFlag = false; + let tierRangeFlag = false; + + if ( + op.opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH || + op.opcode === AllStandardOps.IERC1155_BALANCE_OF + ) { + baseIndex = _stackIndex - 1 - (op.operand + 1) * 2; + cursor = baseIndex; + tempArr = [state.stack[cursor].val]; + // + } else if (op.opcode === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { + tierRangeFlag = true; + baseIndex = _stackIndex - 2; + cursor = baseIndex; + tempArr = [state.stack[cursor].val]; + // + } else if ( + op.opcode === AllStandardOps.SCALE18_DIV || + op.opcode === AllStandardOps.SCALE18_MUL + ) { + baseIndex = _stackIndex - 2; + cursor = baseIndex; + tempArr = [state.stack[cursor].val + '*10**18']; + // + } else if (op.opcode === AllStandardOps.EAGER_IF) { + baseIndex = _stackIndex - 3; + cursor = baseIndex; + tempArr = [state.stack[cursor].val]; + // + } else if ( + op.opcode === AllStandardOps.SCALE18 || + op.opcode === AllStandardOps.ISZERO || + op.opcode === AllStandardOps.IERC20_TOTAL_SUPPLY || + this.flagOp(op.opcode) + ) { + operandFlag = this.flagOp(op.opcode); + baseIndex = _stackIndex - 1; + cursor = baseIndex; + tempArr = [state.stack[cursor].val]; + // + } else if ( + op.opcode === AllStandardOps.GREATER_THAN || + op.opcode === AllStandardOps.LESS_THAN || + op.opcode === AllStandardOps.EQUAL_TO || + op.opcode === AllStandardOps.SATURATING_DIFF || + op.opcode === AllStandardOps.IERC721_OWNER_OF || + op.opcode === AllStandardOps.IERC721_BALANCE_OF || + op.opcode === AllStandardOps.IERC20_BALANCE_OF + ) { + baseIndex = _stackIndex - 2; + cursor = baseIndex; + tempArr = [state.stack[cursor].val]; + // + } else { + tempArr = [state.stack[cursor].val]; + } + + state.stack[cursor].consumed = true; + + while (cursor < top || operandFlag || tierRangeFlag) { + cursor++; + if (operandFlag) { + tempArr.push(this.getSigned8(op.operand)); + operandFlag = false; + } else if (tierRangeFlag) { + const [_start, _end] = this.tierRangeFromOp(op.operand); + let range = 'Invalid Range'; + if (_end > _start) { + range = `(${_start}, ${_end})`; + } else { + range = `(${_end})`; + } + tempArr.push(range); + tierRangeFlag = false; + cursor--; + } else { + tempArr.push(state.stack[cursor].val); + state.stack[cursor].consumed = true; + } + } + tempString += tempArr.join(', '); + tempString += ')'; + state.stack[baseIndex] = { + val: tempString, + consumed: false, + }; + state.stackIndex = baseIndex + 1; + }; + + private static flagOp(_a: number) { + const spcOpces = [AllStandardOps.SCALE_BY, AllStandardOps.SCALEN]; + return spcOpces.includes(_a); + } + + private static pairs = (arr: BytesLike): Pair[] => { + const _arr = Array.from(arrayify(arr)); + const pairs: Pair[] = []; + for (let i = 0; i < arr.length; i += 2) { + pairs.push(_arr.slice(i, i + 2) as Pair); + } + return pairs; + }; + + private static divideArray = ( + arr: Uint8Array | string | BigNumber, + times: number + ): (number | string)[] => { + if (arr.constructor === Uint8Array) { + let n = arr.length; + for (let i = 0; i < times; i++) { + n = n / 2; + } + return Array.from(arr.filter((_, i) => i % n === n - 1)); + } else { + // If it's not an Uint8Array, then it's an HexString or BigNumber comming from constants. + // Mostly these case should come from reports. Raise an issue on repo if you see any error. + let value = paddedUInt256(BigNumber.from(arr)); + return value.slice(2).match(/.{1,8}/g)!; + } + }; + + private static getSigned8(_value: number): number { + if ((_value & 0x80) > 0) { + _value = _value - 0x100; + } + return _value; + } + + private static tierRangeFromOp(_op: number): [number, number] { + // op_.val & 0x0f, // 00001111 + // op_.val & 0xf0, // 11110000 + + const startTier_ = _op & 0x0f; + const endTier_ = (_op >> 4) & 0x0f; + return [startTier_, endTier_]; + } +} diff --git a/src/index.ts b/src/index.ts index bc9ca03..781a5e6 100644 --- a/src/index.ts +++ b/src/index.ts @@ -34,3 +34,5 @@ export * from './contracts/generics/erc1155'; export * from './contracts/stake'; export * from './contracts/orderBook'; + +export * from './friendlySource'; \ No newline at end of file diff --git a/test/friendlySource.test.ts b/test/friendlySource.test.ts new file mode 100644 index 0000000..926c1e3 --- /dev/null +++ b/test/friendlySource.test.ts @@ -0,0 +1,1746 @@ +import { expect } from 'chai'; +import { ethers } from 'hardhat'; + +import { + VM, + HumanFriendlySource, + utils, + AllStandardOps, + StateConfig, + SaleStorage, + SaleContext, +} from '../src'; +import { + getSigned8, + eighteenZeros, + sixZeros, + max_uint256, + timestampToReport, + Time, + RESERVE_ONE, + ONE, + arg, + deployErc20, + deployErc721, + deployErc1155, +} from './utils'; + +const { + bytify, + op, + concat, + callSize, + paddedUInt256, + paddedUInt32, + parseUnits, +} = utils; + +const Opcode = AllStandardOps; + +describe('Human Friendly Source Generator', () => { + it('should generate the human friendly from an exponentiation op source', async () => { + const constants = [5, 2]; + + const vFive = op(Opcode.CONSTANT, 0); + const vTwo = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const source0 = VM.createVMSources([ + vFive, + vTwo, + [Opcode.EXP, 2] + ]); + + const state: StateConfig = { + sources: source0, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.eq(`EXP(${constants[0]}, ${constants[1]})`); + }); + + it('should generate the human friendly from a multiplication op source', async () => { + const constants = [4, 3]; + + const vFour = op(Opcode.CONSTANT, 0); + const vThree = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const source0 = VM.createVMSources([ + vFour, + vThree, + [Opcode.MUL, 2], + ]); + + const state: StateConfig = { + sources: source0, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.eql(`MUL(${constants[0]}, ${constants[1]})`); + }); + + it('should generate the human friendly from a subtraction op source', async () => { + const constants = [2, 1]; + + const vTwo = op(Opcode.CONSTANT, 0); + const vOne = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const source0 = VM.createVMSources([ + vTwo, + vOne, + [Opcode.SUB, 2] + ]); + + const state: StateConfig = { + sources: source0, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SUB(${constants[0]}, ${constants[1]})`); + }); + + it('should generate the human friendly from an addition op source', async () => { + const constants = [6, 1]; + + const vSix = op(Opcode.CONSTANT, 0); + const vOne = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const source0 = VM.createVMSources([ + vSix, + vOne, + [Opcode.ADD, 2] + ]); + + const state: StateConfig = { + sources: source0, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`ADD(${constants[0]}, ${constants[1]})`); + }); + + it('should generate the human friendly from an arbitrary fixed point number DOWN by scale N', async () => { + const value1 = ethers.BigNumber.from(1 + sixZeros); + const n = 0xfc; // -4 + + const constants = [value1]; + const v1 = op(Opcode.CONSTANT, 0); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + op(Opcode.SCALE_BY, n) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); + }); + + it('should generate the human friendly from an arbitrary fixed point number UP by scale N', async () => { + const value1 = ethers.BigNumber.from(1 + sixZeros); + const n = 0x04; // -4 + + const constants = [value1]; + const v1 = op(Opcode.CONSTANT, 0); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + op(Opcode.SCALE_BY, n) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); + }); + + it('should generate the human friendly from scale an 18 OOMs number UP to scale N', async () => { + const value1 = ethers.BigNumber.from(1 + eighteenZeros); + const n = 20; + + const constants = [value1]; + const v1 = op(Opcode.CONSTANT, 0); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + op(Opcode.SCALEN, n) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); + }); + + it('should generate the human friendly from scale an 18 OOMs number DOWN to scale N', async () => { + const value1 = ethers.BigNumber.from(1 + eighteenZeros); + const n = 6; + + const constants = [value1]; + const v1 = op(Opcode.CONSTANT, 0); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + op(Opcode.SCALEN, n) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); + }); + + it('should generate the human friendly from scale a number by 18 OOM while dividing', async () => { + const value1 = 50; + const value2 = 3; + + const constants = [value1, value2]; + const v1 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + v2, + op(Opcode.SCALE18_DIV) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALE18_DIV(${value1}*10**18, ${value2})`); + }); + + it('should generate the human friendly from scale a number by 18 OOM while multiplying', async () => { + const value1 = 1; + const value2 = 2; + + const constants = [value1, value2]; + const v1 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + v2, + op(Opcode.SCALE18_MUL) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALE18_MUL(${value1}*10**18, ${value2})`); + }); + + it('should generate the human friendly from scale a number by 18 OOM in situ', async () => { + const value = 1; + + const constants = [value]; + const v1 = op(Opcode.CONSTANT, 0); + + // prettier-ignore + const sources = VM.createVMSources([ + v1, + op(Opcode.SCALE18) + ]); + + const state: StateConfig = { + sources, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.be.equal(`SCALE18(${value})`); + }); + + it('should generate the human friendly from logic ops within a zipmap loop', async () => { + const report = paddedUInt256( + ethers.BigNumber.from( + '0x' + + paddedUInt32(1) + + paddedUInt32(0) + + paddedUInt32(3) + + paddedUInt32(0) + + paddedUInt32(5) + + paddedUInt32(0) + + paddedUInt32(7) + + paddedUInt32(8) + ) + ); + + const reportMax = max_uint256; + + const constants = [report, reportMax]; + + const vReport = op(Opcode.CONSTANT, 0); + const vReportMax = op(Opcode.CONSTANT, 1); + + // BEGIN zipmap args + + const argReport = op(Opcode.CONSTANT, arg(0)); + const argReportMax = op(Opcode.CONSTANT, arg(1)); + + // END zipmap args + + // prettier-ignore + const ZIPMAP_FN = () => + concat([ + argReport, + op(Opcode.ISZERO), + argReportMax, + argReport, + op(Opcode.EAGER_IF), + ]); + + // prettier-ignore + const SOURCE = () => + concat([ + vReport, + vReportMax, + op(Opcode.ZIPMAP, callSize(1, 3, 1)), + ]); + + const state: StateConfig = { + // sources: [SOURCE()], + sources: [SOURCE(), ZIPMAP_FN()], + constants, + }; + // 0x/00000001.00000000.00000003.00000000.00000005.00000000.00000007.00000008 + + const friendly0 = HumanFriendlySource.get(state); + + expect(friendly0).to.eq(`ZIPMAP( + ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], + ["FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF"], + EAGER_IF(ISZERO(^0), ^1, ^0) +)`); + }); + + it('should check whether any value in a list is non-zero', async () => { + const constants = [0, 1, 2, 3]; + + const v0 = op(Opcode.CONSTANT, 0); + const v1 = op(Opcode.CONSTANT, 1); + const v2 = op(Opcode.CONSTANT, 2); + const v3 = op(Opcode.CONSTANT, 3); + + // prettier-ignore + const source0 = VM.createVMSources([ + v1, + v2, + v3, + op(Opcode.ANY, 3), + ]); + + const state0: StateConfig = { + sources: source0, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`ANY(1, 2, 3)`); + + // prettier-ignore + const source1 = concat([ + v0, + v0, + op(Opcode.ANY, 2), + ]); + + const state1: StateConfig = { + sources: [source1], + constants, + }; + + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`ANY(0, 0)`); + + // prettier-ignore + const source2 = concat([ + v0, + v0, + v3, + op(Opcode.ANY, 3), + ]); + + const state2: StateConfig = { + sources: [source2], + constants, + }; + + const friendly2 = HumanFriendlySource.get(state2); + expect(friendly2).to.be.equals(`ANY(0, 0, 3)`); + }); + + it('should check whether every value in a list is non-zero', async () => { + const constants = [0, 1, 2, 3]; + + const v0 = op(Opcode.CONSTANT, 0); + const v1 = op(Opcode.CONSTANT, 1); + const v2 = op(Opcode.CONSTANT, 2); + const v3 = op(Opcode.CONSTANT, 3); + + // prettier-ignore + const source0 = concat([ + v1, + v2, + v3, + op(Opcode.EVERY, 3), + ]); + + const state0: StateConfig = { + sources: [source0], + constants, + }; + + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`EVERY(1, 2, 3)`); + + // prettier-ignore + const source1 = concat([ + v0, + v1, + v2, + op(Opcode.EVERY, 3), + ]); + + const state1: StateConfig = { + sources: [source1], + constants, + }; + + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`EVERY(0, 1, 2)`); + + // prettier-ignore + const source2 = concat([ + v0, + v3, + op(Opcode.EVERY, 2), + ]); + + const state2: StateConfig = { + sources: [source2], + constants, + }; + + const friendly2 = HumanFriendlySource.get(state2); + expect(friendly2).to.be.equals(`EVERY(0, 3)`); + }); + + it("should perform ternary 'eager if' operation on 3 values on the stack", async () => { + const constants = [0, 1, 2, 3]; + + const v0 = op(Opcode.CONSTANT, 0); + const v1 = op(Opcode.CONSTANT, 1); + const v2 = op(Opcode.CONSTANT, 2); + const v3 = op(Opcode.CONSTANT, 3); + + // prettier-ignore + const source0 = concat([ + // 1 ? 2 : 3 + v1, + v2, + v3, + op(Opcode.EAGER_IF), + ]); + + const state0: StateConfig = { + sources: [source0], + constants, + }; + + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`EAGER_IF(1, 2, 3)`); + + // prettier-ignore + const source1 = concat([ + // 2 ? 2 : 3 + v2, + v2, + v3, + op(Opcode.EAGER_IF), + ]); + + const state1: StateConfig = { + sources: [source1], + constants, + }; + + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`EAGER_IF(2, 2, 3)`); + + // prettier-ignore + const source2 = concat([ + // 2 ? 2 : 3 + v0, + v2, + v3, + op(Opcode.EAGER_IF), + ]); + + const state2: StateConfig = { + sources: [source2], + constants, + }; + + const friendly2 = HumanFriendlySource.get(state2); + expect(friendly2).to.be.equals(`EAGER_IF(0, 2, 3)`); + }); + + it('should check that value is greater than another value', async () => { + const constants = [1, 2]; + + // prettier-ignore + const source0 = VM.createVMSources([ + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.CONSTANT, 0), // 1 + op(Opcode.GREATER_THAN), + ]); + + const state0: StateConfig = { + sources: source0, + constants, + }; + + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`GREATER_THAN(2, 1)`); + + // prettier-ignore + const source1 = VM.createVMSources([ + op(Opcode.CONSTANT, 0), // 1 + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.GREATER_THAN), + ]); + + const state1: StateConfig = { + sources: source1, + constants, + }; + + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`GREATER_THAN(1, 2)`); + }); + + it('should check that value is less than another value', async () => { + const constants = [1, 2]; + + // prettier-ignore + const source0 = VM.createVMSources([ + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.CONSTANT, 0), // 1 + op(Opcode.LESS_THAN), + ]); + + const state0: StateConfig = { + sources: source0, + constants, + }; + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`LESS_THAN(2, 1)`); + + // prettier-ignore + const source1 = VM.createVMSources([ + op(Opcode.CONSTANT, 0), // 1 + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.LESS_THAN), + ]); + + const state1: StateConfig = { + sources: source1, + constants, + }; + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`LESS_THAN(1, 2)`); + }); + + it('should check that values are equal to each other', async () => { + const constants = [1, 2]; + + // prettier-ignore + const source0 = VM.createVMSources([ + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.EQUAL_TO), + ]); + + const state0: StateConfig = { + sources: source0, + constants, + }; + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`EQUAL_TO(2, 2)`); + + // prettier-ignore + const source1 = VM.createVMSources([ + op(Opcode.CONSTANT, 0), // 1 + op(Opcode.CONSTANT, 1), // 2 + op(Opcode.EQUAL_TO), + ]); + + const state1: StateConfig = { + sources: source1, + constants, + }; + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`EQUAL_TO(1, 2)`); + }); + + it('should check that a value is zero', async () => { + const constants = [0, 1]; + + // prettier-ignore + const source0 = VM.createVMSources([ + op(Opcode.CONSTANT, 0), + op(Opcode.ISZERO), + ]); + + const state0: StateConfig = { + sources: source0, + constants, + }; + const friendly0 = HumanFriendlySource.get(state0); + expect(friendly0).to.be.equals(`ISZERO(0)`); + + // prettier-ignore + const source1 = VM.createVMSources([ + op(Opcode.CONSTANT, 1), + op(Opcode.ISZERO), + ]); + + const state1: StateConfig = { + sources: source1, + constants, + }; + const friendly1 = HumanFriendlySource.get(state1); + expect(friendly1).to.be.equals(`ISZERO(1)`); + }); + + it('should return block.number and block.timestamp', () => { + const constants: number[] = []; + + const source0 = VM.createVMSources([ + // (BLOCK_NUMBER) + [Opcode.BLOCK_NUMBER], + ]); + + const state0: StateConfig = { + sources: source0, + constants, + }; + const friendly0 = HumanFriendlySource.get(state0); + + expect(friendly0).to.eq('CURRENT_BLOCK'); + + const source1 = VM.createVMSources([ + // (BLOCK_TIMESTAMP) + [Opcode.BLOCK_TIMESTAMP], + ]); + + const state1: StateConfig = { + sources: source1, + constants, + }; + const friendly1 = HumanFriendlySource.get(state1); + + expect(friendly1).to.eq('CURRENT_TIMESTAMP'); + }); + + it('should return correct remainder when using modulo op on sequence of numbers', () => { + const constants = [7, 4, 2]; + const v7 = op(Opcode.CONSTANT, 0); + const v4 = op(Opcode.CONSTANT, 1); + const v2 = op(Opcode.CONSTANT, 2); + + // prettier-ignore + const sources = VM.createVMSources([ + // (7 4 2 %) + v7, + v4, // -> r3 + v2, // -> r1 + op(Opcode.MOD, 3), + ]); + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('MOD(7, 4, 2)'); + }); + + it('should perform exponentiation on a sequence of numbers', () => { + const constants = [2, 4, 3]; + const v2 = op(Opcode.CONSTANT, 0); + const v4 = op(Opcode.CONSTANT, 1); + const v3 = op(Opcode.CONSTANT, 2); + + // prettier-ignore + const sources = VM.createVMSources([ + // (2 4 3 ^) + v2, + v4, + v3, + [Opcode.EXP, 3], + ]); + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('EXP(2, 4, 3)'); + }); + + it('should return the maximum of a sequence of numbers', () => { + const constants = [33, 11, 22]; + const v33 = op(Opcode.CONSTANT, 0); + const v11 = op(Opcode.CONSTANT, 1); + const v22 = op(Opcode.CONSTANT, 2); + + // prettier-ignore + const source = VM.createVMSources([ + // (22 11 33 max) + v22, + v11, + v33, + [Opcode.MAX, 3], + ]); + + const state: StateConfig = { + sources: source, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('MAX(22, 11, 33)'); + }); + + it('should return the minimum of a sequence of numbers', () => { + const constants = [33, 11, 22]; + const v33 = op(Opcode.CONSTANT, 0); + const v11 = op(Opcode.CONSTANT, 1); + const v22 = op(Opcode.CONSTANT, 2); + + // prettier-ignore + const source = VM.createVMSources([ + // (22 11 33 min) + v22, + v11, + v33, + [Opcode.MIN, 3], + ]); + + const state: StateConfig = { + sources: source, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('MIN(22, 11, 33)'); + }); + + it('should run a basic program (return current block number)', () => { + const constants: Array = []; + + // prettier-ignore + const source = VM.createVMSources([ + [Opcode.BLOCK_NUMBER] + ]); + + const state: StateConfig = { + sources: source, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('CURRENT_BLOCK'); + }); + + it('should handle a zipmap which loops 4 times', () => { + // The following 3 variables use zero-based counting. + + // Which index in `sources` array to use as our inner function to ZIPMAP. + const sourceIndex = 1; + + // Number of times to 'break up' our uint256 constants into a concatenated array of 'sub-constants'. + // In this case, we subdivide a constant 4 times, so we are left with 8 uint32 'sub-constants' concatenated together. + const loopSize = 3; + + // Number of constants to zip together. Here we are zipping 2 constants together. Hence, our inner function will + // accept 2 arguments at a time (arg0, arg1), which will be the sub-constants of the respective constants. + const valSize = 1; + + // Size of each 'sub-constant' in bytes, which can be determined by how many times we broke up our uint256. In this case we have 32-bit unsigned integers. + const valBytes = 32 / Math.pow(2, loopSize); + + // prettier-ignore + const constants = [ // a.k.a. 'vals' + concat([ // constant0 -> an array of sub-constants + bytify(1, valBytes), + bytify(2, valBytes), + bytify(3, valBytes), + bytify(4, valBytes), + bytify(5, valBytes), + bytify(6, valBytes), + bytify(7, valBytes), + bytify(8, valBytes), + ]), + concat([ // constant1 -> an array of sub-constants + bytify(10, valBytes), + bytify(20, valBytes), + bytify(30, valBytes), + bytify(40, valBytes), + bytify(50, valBytes), + bytify(60, valBytes), + bytify(70, valBytes), + bytify(80, valBytes), + ]), + ]; + + // prettier-ignore + const sources = [ + VM.createVMSources([ + // sourceIndex === 0 (main source) + [Opcode.CONSTANT, 0], // val0 + [Opcode.CONSTANT, 1], // val1 + [Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)], + ])[0], + VM.createVMSources([ + // sourceIndex === 1 (inner ZIPMAP function) + // (arg0 arg1 mul) (arg0 arg1 add) + [Opcode.CONSTANT, arg(0)], + [Opcode.CONSTANT, arg(1)], + [Opcode.MUL, 2], + [Opcode.CONSTANT, arg(0)], + [Opcode.CONSTANT, arg(1)], + [Opcode.ADD, 2], + ])[0], + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq(`ZIPMAP( + [1, 2, 3, 4, 5, 6, 7, 8], + [10, 20, 30, 40, 50, 60, 70, 80], + MUL(^0, ^1) ADD(^0, ^1) +)`); + }); + + it('should handle a zipmap which loops twice', () => { + // zero-based counting + const sourceIndex = 1; + const loopSize = 1; + const valSize = 2; + + const valBytes = 32 / Math.pow(2, loopSize); // 128-bit unsigned + + const constants = [ + concat([bytify(3, valBytes), bytify(1, valBytes)]), + concat([bytify(4, valBytes), bytify(2, valBytes)]), + concat([bytify(5, valBytes), bytify(3, valBytes)]), + ]; + + const sources = [ + VM.createVMSources([ + op(Opcode.CONSTANT, 2), // val0 + op(Opcode.CONSTANT, 1), // val1 + op(Opcode.CONSTANT, 0), // val2 + op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + ])[0], + VM.createVMSources([ + // (arg0 arg1 arg2 mul) (arg0 arg1 arg2 add) + op(Opcode.CONSTANT, arg(0)), + op(Opcode.CONSTANT, arg(1)), + op(Opcode.CONSTANT, arg(2)), + op(Opcode.MUL, 3), + op(Opcode.CONSTANT, arg(0)), + op(Opcode.CONSTANT, arg(1)), + op(Opcode.CONSTANT, arg(2)), + op(Opcode.ADD, 3), + ])[0], + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq(`ZIPMAP( + [5, 3], + [4, 2], + [3, 1], + MUL(^0, ^1, ^2) ADD(^0, ^1, ^2) +)`); + }); + + it('should handle a zipmap op with maxed sourceIndex and valSize', () => { + const constants = [10, 20, 30, 40, 50, 60, 70, 80]; + + const a0 = op(Opcode.CONSTANT, arg(0)); + const a1 = op(Opcode.CONSTANT, arg(1)); + const a2 = op(Opcode.CONSTANT, arg(2)); + const a3 = op(Opcode.CONSTANT, arg(3)); + const a4 = op(Opcode.CONSTANT, arg(4)); + const a5 = op(Opcode.CONSTANT, arg(5)); + const a6 = op(Opcode.CONSTANT, arg(6)); + const a7 = op(Opcode.CONSTANT, arg(7)); + + // zero-based counting + const sourceIndex = 1; + const loopSize = 0; // no subdivision of uint256, normal constants + const valSize = 7; + + const sources = [ + VM.createVMSources([ + op(Opcode.CONSTANT, 0), // val0 + op(Opcode.CONSTANT, 1), // val1 + op(Opcode.CONSTANT, 2), // val2 + op(Opcode.CONSTANT, 3), // val3 + op(Opcode.CONSTANT, 4), // val4 + op(Opcode.CONSTANT, 5), // val5 + op(Opcode.CONSTANT, 6), // val6 + op(Opcode.CONSTANT, 7), // val7 + op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + ])[0], + VM.createVMSources([ + // (arg0 arg1 arg2 ... add) (arg0 arg1 arg2 ... add) + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + op(Opcode.ADD, 32), // max no. items + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a0, + a1, + a2, + a3, + a4, + a5, + a6, + a7, + a0, + a1, + a2, + a3, + a4, + a5, + op(Opcode.ADD, 30), + ])[0], + ]; + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq(`ZIPMAP( + 10, + 20, + 30, + 40, + 50, + 60, + 70, + 80, + ADD(^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7) ADD(^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5) +)`); + }); + + it('should handle a zipmap op which runs multiple functions (across multiple fn vals)', () => { + const constants = [1, 2, 3]; + const v0 = op(Opcode.CONSTANT, 0); + const v1 = op(Opcode.CONSTANT, 1); + const v2 = op(Opcode.CONSTANT, 2); + + const a0 = op(Opcode.CONSTANT, arg(0)); + const a1 = op(Opcode.CONSTANT, arg(1)); + const a2 = op(Opcode.CONSTANT, arg(2)); + + // zero-based counting + const sourceIndex = 1; + const loopSize = 0; + const valSize = 2; + + const sources = [ + VM.createVMSources([ + v0, + v1, + v2, + op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + ])[0], + VM.createVMSources([ + // (arg0 arg1 arg2 mul) (arg1 arg2 arg0 arg1 arg2 ... add) + a0, + a1, + a2, + op(Opcode.MUL, 3), + a1, + a2, + a0, + a1, + a2, + a0, + a1, + a2, + a0, + a1, + a2, + a0, + a1, + a2, + op(Opcode.ADD, 14), + ])[0], + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq(`ZIPMAP( + 1, + 2, + 3, + MUL(^0, ^1, ^2) ADD(^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2) +)`); + }); + + it('should handle a zipmap op which runs multiple functions (using single inner zipmap function source)', () => { + const constants = [3, 4, 5]; + const v3 = op(Opcode.CONSTANT, 0); + const v4 = op(Opcode.CONSTANT, 1); + const v5 = op(Opcode.CONSTANT, 2); + + const a0 = op(Opcode.CONSTANT, arg(0)); + const a1 = op(Opcode.CONSTANT, arg(1)); + const a2 = op(Opcode.CONSTANT, arg(2)); + + // zero-based counting + const sourceIndex = 1; + const loopSize = 0; + const valSize = 2; + + const sources = [ + concat([ + v3, + v4, + v5, + op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + ]), + concat([ + // inner zipmap function source + // (arg0 arg1 arg2 mul) (arg0 arg1 ar2 add) + a0, + a1, + a2, + op(Opcode.MUL, 3), + a0, + a1, + a2, + op(Opcode.ADD, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq(`ZIPMAP( + 3, + 4, + 5, + MUL(^0, ^1, ^2) ADD(^0, ^1, ^2) +)`); + }); + + it('should handle a simple call op', () => { + const constants = [1, 2, 3]; + const v1 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + const v3 = op(Opcode.CONSTANT, 2); + + const a0 = op(Opcode.CONSTANT, arg(0)); + const a1 = op(Opcode.CONSTANT, arg(1)); + const a2 = op(Opcode.CONSTANT, arg(2)); + + // zero-based counting + const sourceIndex = 1; // 1 + const loopSize = 0; // 1 + const valSize = 2; // 3 + + const sources = [ + concat([ + v1, + v2, + v3, + op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), + ]), + concat([ + // (arg0 arg1 arg2 add) + a0, + a1, + a2, + op(Opcode.ADD, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq(`ZIPMAP( + 1, + 2, + 3, + ADD(^0, ^1, ^2) +)`); + }); + + it('should perform a calculation using the block number as a value', () => { + const constants = [1, 2, 3, 4, 6]; + + const one = op(Opcode.CONSTANT, 0); + const two = op(Opcode.CONSTANT, 1); + const three = op(Opcode.CONSTANT, 2); + const four = op(Opcode.CONSTANT, 3); + const six = op(Opcode.CONSTANT, 4); + + const sources = [ + concat([ + // (BLOCK_NUMBER (6 3 /) (3 4 (2 1 -) +) *) + op(Opcode.BLOCK_NUMBER), + six, + three, + op(Opcode.DIV, 2), + three, + four, + two, + one, + op(Opcode.SUB, 2), + op(Opcode.ADD, 3), + op(Opcode.MUL, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq( + 'MUL(CURRENT_BLOCK, DIV(6, 3), ADD(3, 4, SUB(2, 1)))' + ); + }); + + it('should calculate a mathematical expression (division, product, summation)', () => { + const constants = [2, 3]; + const v2 = op(Opcode.CONSTANT, 0); + const v3 = op(Opcode.CONSTANT, 1); + + const sources = [ + concat([ + // (((2 2 2 +) 3 *) 2 3 /) + v2, + v2, + v2, + op(Opcode.ADD, 3), + v3, + op(Opcode.MUL, 2), + v2, + v3, + op(Opcode.DIV, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('DIV(MUL(ADD(2, 2, 2), 3), 2, 3)'); + }); + + it('should return remainder of dividing an initial number by the product of a sequence of numbers', () => { + const constants = [3, 2, 13]; + const v3 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + const v13 = op(Opcode.CONSTANT, 2); + + const sources = [ + concat([ + // (13 2 3 %) + v13, + v2, + v3, + op(Opcode.MOD, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('MOD(13, 2, 3)'); + }); + + it('should divide an initial number by the product of a sequence of numbers', () => { + const constants = [3, 2, 12]; + const v3 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + const v12 = op(Opcode.CONSTANT, 2); + + const sources = [ + concat([ + // (12 2 3 /) + v12, + v2, + v3, + op(Opcode.DIV, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('DIV(12, 2, 3)'); + }); + + it('should multiply a sequence of numbers together', () => { + const constants = [5, 4, 3]; + const v5 = op(Opcode.CONSTANT, 0); + const v4 = op(Opcode.CONSTANT, 1); + const v3 = op(Opcode.CONSTANT, 2); + + const sources = [ + concat([ + // (3 4 5 *) + v3, + v4, + v5, + op(Opcode.MUL, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('MUL(3, 4, 5)'); + }); + + it('should subtract a sequence of numbers from an initial number', () => { + const constants = [3, 2, 10]; + const v3 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + const v10 = op(Opcode.CONSTANT, 2); + + const sources = [ + concat([ + // (10 2 3 -) + v10, + v2, + v3, + op(Opcode.SUB, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('SUB(10, 2, 3)'); + }); + + it('should add a sequence of numbers together', () => { + const constants = [3, 2, 1]; + const v3 = op(Opcode.CONSTANT, 0); + const v2 = op(Opcode.CONSTANT, 1); + const v1 = op(Opcode.CONSTANT, 2); + + const sources = [ + concat([ + // (1 2 3 +) + v1, + v2, + v3, + op(Opcode.ADD, 3), + ]), + ]; + + const state: StateConfig = { + sources: sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.eq('ADD(1, 2, 3)'); + }); + + it('should use saturating sub for diff where only some tiers would underflow', async () => { + const constants0 = [ + // 0x01000000020000000300000004000000050000000600000007 + timestampToReport([0, 1, 2, 3, 4, 5, 6, 7].reverse()), + // 0x0200000000000000040000000000000006000000000000000800000000 + timestampToReport([2, 0, 4, 0, 6, 0, 8, 0].reverse()), + ]; + + const vReport0 = op(Opcode.CONSTANT, 0); + const vReport1 = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const source0 = VM.createVMSources([ + vReport0, + vReport1, + op(Opcode.SATURATING_DIFF), + ]); + + const state: StateConfig = { + sources: source0, + constants: constants0, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal( + `SATURATING_DIFF(${constants0[0]}, ${constants0[1]})` + ); + }); + + it('should return ERC1155 batch balance result for multiple signers', async () => { + const [signer1, signer2] = await ethers.getSigners(); + const tokenERC1155 = await deployErc1155(); + + const tokenId = 0; + const length = 2; + + const constants = [ + signer1.address, + signer2.address, + tokenERC1155.address, + tokenId, + ]; + const vSigner1 = op(Opcode.CONSTANT, 0); + const vSigner2 = op(Opcode.CONSTANT, 1); + const vTokenAddr = op(Opcode.CONSTANT, 2); + const vTokenId = op(Opcode.CONSTANT, 3); + + // prettier-ignore + const sources = VM.createVMSources([ + vTokenAddr, + vSigner1, + vSigner2, + vTokenId, + vTokenId, + op(Opcode.IERC1155_BALANCE_OF_BATCH, length - 1) + ]); + + const state: StateConfig = { + sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal( + `IERC1155_BALANCE_OF_BATCH(${tokenERC1155.address}, ${signer1.address}, ${signer2.address}, ${tokenId}, ${tokenId})` + ); + }); + + it('should return ERC1155 balance of signer', async () => { + const [signer1] = await ethers.getSigners(); + const tokenERC1155 = await deployErc1155(); + + const tokenId = 0; + + const constants = [signer1.address, tokenERC1155.address, tokenId]; + const vSigner1 = op(Opcode.CONSTANT, 0); + const vTokenAddr = op(Opcode.CONSTANT, 1); + const vTokenId = op(Opcode.CONSTANT, 2); + + // prettier-ignore + const sources = VM.createVMSources([ + vTokenAddr, + vSigner1, + vTokenId, + op(Opcode.IERC1155_BALANCE_OF) + ]); + + const state: StateConfig = { + sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal( + `IERC1155_BALANCE_OF(${tokenERC1155.address}, ${signer1.address}, ${tokenId})` + ); + }); + + it('should return owner of specific ERC721 token', async () => { + const tokenERC721 = await deployErc721(); + + const nftId = 0; + const constants = [nftId, tokenERC721.address]; + const vNftId = op(Opcode.CONSTANT, 0); + const vTokenAddr = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const sources = VM.createVMSources([ + vTokenAddr, + vNftId, + op(Opcode.IERC721_OWNER_OF) + ]); + + const state: StateConfig = { + sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal( + `IERC721_OWNER_OF(${tokenERC721.address}, ${nftId})` + ); + }); + + it('should return ERC721 balance of signer', async () => { + const [signer1] = await ethers.getSigners(); + const tokenERC721 = await deployErc721(); + const constants = [signer1.address, tokenERC721.address]; + + const vSigner1 = op(Opcode.CONSTANT, 0); + const vTokenAddr = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const sources = VM.createVMSources([ + vTokenAddr, + vSigner1, + op(Opcode.IERC721_BALANCE_OF) + ]); + + const state: StateConfig = { + sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal( + `IERC721_BALANCE_OF(${tokenERC721.address}, ${signer1.address})` + ); + }); + + it('should return ERC20 total supply', async () => { + const tokenERC20 = await deployErc20(); + + const constants = [tokenERC20.address]; + const vTokenAddr = op(Opcode.CONSTANT, 0); + + // prettier-ignore + const sources = [ + concat([ + vTokenAddr, + op(Opcode.IERC20_TOTAL_SUPPLY) + ]), + ]; + + const state: StateConfig = { + sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal(`IERC20_TOTAL_SUPPLY(${tokenERC20.address})`); + }); + + it('should return ERC20 balance', async () => { + const [signer1] = await ethers.getSigners(); + const tokenERC20 = await deployErc20(); + + const constants = [signer1.address, tokenERC20.address]; + const vSigner1 = op(Opcode.CONSTANT, 0); + const vTokenAddr = op(Opcode.CONSTANT, 1); + + // prettier-ignore + const sources = VM.createVMSources([ + vTokenAddr, + vSigner1, + op(Opcode.IERC20_BALANCE_OF) + ]); + + const state: StateConfig = { + sources, + constants, + }; + const friendly = HumanFriendlySource.get(state); + + expect(friendly).to.be.equal( + `IERC20_BALANCE_OF(${tokenERC20.address}, ${signer1.address})` + ); + }); + + it('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { + const [arbitrary] = await ethers.getSigners(); + const ERC721Address = arbitrary.address; + const fixedPrice = '20'; + const reserveTokenDecimals = 18; + const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); + const initialSupply = ethers.BigNumber.from('2000').mul(ONE); + + const splitTimestamp = await Time.currentTime(); + const endTimestamp = Time.duration + .minutes(60) + .add(splitTimestamp) + .toNumber(); + const dutchAuctionstartPrice = 50; + + //1st phase constants + const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase + + // initial calculations for dutch auction 2nd phase + let dutchAuctionDuration = endTimestamp - splitTimestamp; + let balanceReserve = minimumRaise.mul(5); + let initWeight = initialSupply + .mul(dutchAuctionstartPrice) + .div(balanceReserve); + let weightChange = initWeight.sub(1).div(dutchAuctionDuration); + + // 2nd phase constants + const ReserveBalance = parseUnits( + // Virtual reserve token balance + balanceReserve.toString(), + reserveTokenDecimals + ); + + const InitWeight = parseUnits(initWeight.toString()); // initial weight + + const WeightChange = parseUnits( + weightChange.toNumber().toFixed(5).toString() + ); // weight change per timestamp + + const one = parseUnits((1).toString()); // minimum possible weight + + const saleConfig: StateConfig = { + constants: [ + splitTimestamp, // timestamp that splits the phases + ERC721Address, + FixedPrice, + 0, + ReserveBalance, + InitWeight, + WeightChange, + one, + ], + + sources: [ + concat([ + // Amount script + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC721_BALANCE_OF), + op(VM.Opcodes.ISZERO), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), + op(VM.Opcodes.EAGER_IF), + // Price script + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.MAX, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.EAGER_IF), + ]), + ], + }; + + const friendly = HumanFriendlySource.get(saleConfig); + + // prettier-ignore + const expectOutput = +`EAGER_IF( + EAGER_IF( + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + EAGER_IF( + ISZERO( + IERC721_BALANCE_OF( + ${ERC721Address}, + SENDER + ) + ), + 0, + CONTEXT[0] + ), + CONTEXT[0] + ), + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + DIV( + MUL( + ADD( + STORAGE( + ${FixedPrice} + ), + ${ReserveBalance} + ), + MAX( + SATURATING_SUB( + ${InitWeight}, + MUL( + SATURATING_SUB( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + ${WeightChange} + ) + ), + ${one} + ) + ), + STORAGE( + MAX( + SATURATING_SUB( + ${InitWeight}, + MUL( + SATURATING_SUB( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + ${WeightChange} + ) + ), + ${one} + ) + ) + ) +)`; + + expect(HumanFriendlySource.prettify(friendly)).to.be.equals(expectOutput); + }); +}); diff --git a/test/utils.ts b/test/utils.ts index 31cfc0e..ddaa58a 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -63,6 +63,9 @@ export interface Addresses { export const sixZeros = '000000'; export const eighteenZeros = '000000000000000000'; +export const max_uint256 = ethers.BigNumber.from( + '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' +); export const RESERVE_ONE = ethers.BigNumber.from('1' + sixZeros); export const ONE = ethers.BigNumber.from('1' + eighteenZeros); @@ -254,3 +257,34 @@ export const getEventArgs = async ( objectEvent.topics ); }; + +export function timestampToReport(timeNos: number[]): BigNumber { + assert(timeNos.length === 8); + + return ethers.BigNumber.from( + "0x" + + [...timeNos] + .reverse() + .map((i) => BigInt(i).toString(16).padStart(8, "0")) + .join("") + ); +} + +export function arg(valIndex: number): number { + let arg = 1; + arg <<= 7; + arg += valIndex; + return arg; +} + +/** + * Convert a number or hexadecimal expression to his representation as signed 8-bit expression + * @param _value - The value to convert + * @returns The signed expression + */ + export function getSigned8(_value: number): number { + if ((_value & 0x80) > 0) { + _value = _value - 0x100; + } + return _value; +} \ No newline at end of file From 340edb5846195c097453bd3037f04564ac3cb473 Mon Sep 17 00:00:00 2001 From: NanezX Date: Wed, 22 Jun 2022 04:12:30 -0400 Subject: [PATCH 021/125] fix doc generation --- api-extractor.json | 3 + docs/classes/buildreport.md | 10 +- docs/classes/buycap.md | 90 ++++ docs/classes/combinetier.md | 48 +- docs/classes/combinetiergenerator.md | 78 ++-- docs/classes/combinetierjs.md | 34 +- docs/classes/emissionserc20.md | 50 ++- docs/classes/emissionserc20js.md | 34 +- docs/classes/erc20balancetier.md | 194 +-------- docs/classes/erc20transfertier.md | 260 ----------- docs/classes/erc721balancetier.md | 190 +------- docs/classes/fixedprice.md | 3 - docs/classes/gatednft.md | 410 ------------------ docs/classes/humanfriendlysource.md | 69 +++ docs/classes/increasingprice.md | 3 - docs/classes/{itier.md => itierv2.md} | 22 +- docs/classes/linearemissions.md | 22 - docs/classes/orderbook.md | 203 +++++++++ docs/classes/pricecurve.md | 65 +-- docs/classes/rainjs.md | 32 +- docs/classes/redeemableerc20.md | 52 +-- docs/classes/sale.md | 78 ++-- docs/classes/saledurationinblocks.md | 80 ++-- docs/classes/saledurationintimestamp.md | 76 ++-- docs/classes/salejs.md | 34 +- docs/classes/salescriptfrom.md | 82 ++++ docs/classes/sequentialemissions.md | 22 - docs/classes/stake.md | 275 ++++++++++++ docs/classes/tiercontract.md | 24 +- docs/classes/verify.md | 10 +- docs/classes/verifytier.md | 13 +- docs/classes/vlbp.md | 3 - docs/classes/vm.md | 133 +++--- docs/enums/allstandardops.md | 94 ++-- docs/enums/buycapmode.md | 19 + docs/enums/combinetiercontext.md | 18 + docs/enums/combinetierstorage.md | 17 + docs/enums/debug.md | 21 + docs/enums/emissionserc20context.md | 18 + docs/enums/emissionserc20storage.md | 17 + docs/enums/orderbookcontext.md | 19 + docs/enums/orderbookstroage.md | 17 + docs/enums/salecontext.md | 18 + docs/enums/salestorage.md | 21 + docs/enums/transferrable.md | 19 - docs/enums/walletcapmode.md | 19 - docs/index.md | 47 +- docs/interfaces/erc20balancetierdeployargs.md | 43 -- .../interfaces/erc20transfertierdeployargs.md | 43 -- .../interfaces/erc721balancetierdeployargs.md | 43 -- docs/interfaces/gatedconfig.md | 108 ----- docs/interfaces/gatednftdeployarguments.md | 120 ----- docs/interfaces/royaltyinfo.md | 38 -- docs/interfaces/saleconfig.md | 52 +-- docs/interfaces/state.md | 82 ---- docs/interfaces/stateconfig.md | 26 -- docs/interfaces/storageopcodesrange.md | 43 ++ docs/namespaces/utils.md | 7 +- docs/namespaces/utils/variables/arg_1.md | 23 - .../utils/variables/paddeduint128.md | 10 + .../utils/variables/paddeduint160.md | 10 + .../utils/variables/paddeduint256.md | 4 +- .../utils/variables/paddeduint32.md | 2 +- .../utils/variables/paddeduint64.md | 10 + docs/namespaces/utils/variables/skip_1.md | 26 -- docs/types/addresses.md | 7 +- docs/types/bountyconfig.md | 12 + docs/types/combinetierdeployargs.md | 5 +- docs/types/combinetieropcodes.md | 12 - docs/types/depositconfig.md | 13 + docs/types/emissionserc20opcodes.md | 12 - docs/types/order.md | 18 + docs/types/orderbookopcodes.md | 13 + docs/types/orderconfig.md | 16 + docs/types/saleopcodes.md | 16 - docs/types/stakedeployargs.md | 14 + docs/types/withdrawconfig.md | 13 + package.json | 2 +- src/RainJS/CombineTierJS.ts | 80 ++-- src/RainJS/EmissionsERC20JS.ts | 80 ++-- src/RainJS/OrderbookJS.ts | 97 ++--- src/classes/vm.ts | 4 +- src/contracts/emissionsERC20.ts | 18 +- src/contracts/orderBook.ts | 14 +- src/contracts/redeemableERC20.ts | 6 +- src/contracts/sale.ts | 2 + .../script-generators/saleScriptGenerator.ts | 4 +- src/contracts/tiers/combineTier.ts | 2 + src/contracts/verify.ts | 2 +- 89 files changed, 1785 insertions(+), 2433 deletions(-) create mode 100644 docs/classes/buycap.md delete mode 100644 docs/classes/erc20transfertier.md delete mode 100644 docs/classes/gatednft.md create mode 100644 docs/classes/humanfriendlysource.md rename docs/classes/{itier.md => itierv2.md} (68%) create mode 100644 docs/classes/orderbook.md create mode 100644 docs/classes/salescriptfrom.md create mode 100644 docs/classes/stake.md create mode 100644 docs/enums/buycapmode.md create mode 100644 docs/enums/combinetiercontext.md create mode 100644 docs/enums/combinetierstorage.md create mode 100644 docs/enums/debug.md create mode 100644 docs/enums/emissionserc20context.md create mode 100644 docs/enums/emissionserc20storage.md create mode 100644 docs/enums/orderbookcontext.md create mode 100644 docs/enums/orderbookstroage.md create mode 100644 docs/enums/salecontext.md create mode 100644 docs/enums/salestorage.md delete mode 100644 docs/enums/transferrable.md delete mode 100644 docs/enums/walletcapmode.md delete mode 100644 docs/interfaces/erc20balancetierdeployargs.md delete mode 100644 docs/interfaces/erc20transfertierdeployargs.md delete mode 100644 docs/interfaces/erc721balancetierdeployargs.md delete mode 100644 docs/interfaces/gatedconfig.md delete mode 100644 docs/interfaces/gatednftdeployarguments.md delete mode 100644 docs/interfaces/royaltyinfo.md delete mode 100644 docs/interfaces/state.md create mode 100644 docs/interfaces/storageopcodesrange.md delete mode 100644 docs/namespaces/utils/variables/arg_1.md create mode 100644 docs/namespaces/utils/variables/paddeduint128.md create mode 100644 docs/namespaces/utils/variables/paddeduint160.md create mode 100644 docs/namespaces/utils/variables/paddeduint64.md delete mode 100644 docs/namespaces/utils/variables/skip_1.md create mode 100644 docs/types/bountyconfig.md delete mode 100644 docs/types/combinetieropcodes.md create mode 100644 docs/types/depositconfig.md delete mode 100644 docs/types/emissionserc20opcodes.md create mode 100644 docs/types/order.md create mode 100644 docs/types/orderbookopcodes.md create mode 100644 docs/types/orderconfig.md delete mode 100644 docs/types/saleopcodes.md create mode 100644 docs/types/stakedeployargs.md create mode 100644 docs/types/withdrawconfig.md diff --git a/api-extractor.json b/api-extractor.json index e4811fc..f734074 100644 --- a/api-extractor.json +++ b/api-extractor.json @@ -110,6 +110,9 @@ * DEFAULT VALUE: See api-extractor-defaults.json for the complete table of extractorMessageReporting mappings */ "extractorMessageReporting": { + "ae-wrong-input-file-type": { + "logLevel": "none" + }, "default": { "logLevel": "warning" // "addToApiReportFile": true diff --git a/docs/classes/buildreport.md b/docs/classes/buildreport.md index 36f9c54..a9f5c29 100644 --- a/docs/classes/buildreport.md +++ b/docs/classes/buildreport.md @@ -13,17 +13,15 @@ class BuildReport extends CombineTierGenerator | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./combinetiergenerator.md#argumentsLength-property) | `BigNumberish` | *Inherited from [CombineTierGenerator.argumentsLength](./combinetiergenerator.md#argumentsLength-property)* | | [constants](./combinetiergenerator.md#constants-property) | `BigNumberish[]` | *Inherited from [CombineTierGenerator.constants](./combinetiergenerator.md#constants-property)* | | [sources](./combinetiergenerator.md#sources-property) | `BytesLike[]` | *Inherited from [CombineTierGenerator.sources](./combinetiergenerator.md#sources-property)* | -| [stackLength](./combinetiergenerator.md#stackLength-property) | `BigNumberish` | *Inherited from [CombineTierGenerator.stackLength](./combinetiergenerator.md#stackLength-property)* | ## Methods | Method | Description | | --- | --- | -| [combine(reportVar, logic, mode, number)](./combinetiergenerator.md#combine-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combine()](./combinetiergenerator.md#combine-method-1)* | -| [holdingTimeTransferTier(reportVar, numberOfBlocks)](./combinetiergenerator.md#holdingTimeTransferTier-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.holdingTimeTransferTier()](./combinetiergenerator.md#holdingTimeTransferTier-method-1)* | -| [satDiff(reportVar)](./combinetiergenerator.md#satDiff-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.satDiff()](./combinetiergenerator.md#satDiff-method-1)* | -| [updateReportAtTierRange(startTier, endTier, number)](./combinetiergenerator.md#updateReportAtTierRange-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReportAtTierRange()](./combinetiergenerator.md#updateReportAtTierRange-method-1)* | +| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/buycap.md b/docs/classes/buycap.md new file mode 100644 index 0000000..9699f46 --- /dev/null +++ b/docs/classes/buycap.md @@ -0,0 +1,90 @@ + +# Class BuyCap + +The fisrt piece of script in a sale's amount/price pair script which determines the amoount or cap that can be bought. + +Signature: + +```typescript +class BuyCap +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [buyCapConfig](./buycap.md#buyCapConfig-property) | `StateConfig \| undefined` | | +| [constants](./buycap.md#constants-property) | `BigNumberish[]` | | +| [sources](./buycap.md#sources-property) | `BytesLike[]` | | + +## Methods + +| Method | Description | +| --- | --- | +| [applyWalletCap(mode, options)](./buycap.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet. | + +## Property Details + + + +### buyCapConfig + +Signature: + +```typescript +readonly buyCapConfig?: StateConfig | undefined; +``` + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` + +## Method Details + + + +### applyWalletCap(mode, options) + +Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet. + +Signature: + +```typescript +applyWalletCap(mode: BuyCapMode, options?: { + minWalletCap?: number; + maxWalletCap?: number; + tierAddress?: string; + tierMultiplier?: number[]; + tierActivation?: (number | string)[]; + }): BuyCap; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| mode | [BuyCapMode](../enums/buycapmode.md) | The mode that determines if there is max or min cap per wallet or both. | +| options |
{
    minWalletCap?: number;
    maxWalletCap?: number;
    tierAddress?: string;
    tierMultiplier?: number[];
    tierActivation?: (number \| string)[];
}
| (optional) Additional arguments to configure the cap per wallet behaviour: - (param) minWalletCap - The number for min cap per wallet, addresses cannot buy less number of rTKNs than this amount. - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. - (param) tierMultiplier - An array of each tiers' Multiplier value. - (param) tierActivation - An array of number of blocks for each tier that will be the required period of time for that tiered address to hold the tier's in order to be eligible for that tier's multiplier. | + +Returns: + +`BuyCap` + +this + diff --git a/docs/classes/combinetier.md b/docs/classes/combinetier.md index 4470463..8667ffa 100644 --- a/docs/classes/combinetier.md +++ b/docs/classes/combinetier.md @@ -47,7 +47,6 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | | [isChild](./combinetier.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this contract in a specific network. | | [nameBookReference](./combinetier.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | -| [Opcodes](./combinetier.md#Opcodes-property-static) | [CombineTierOpcodes](../types/combinetieropcodes.md) | All the opcodes avaialbles in the CombineTier contract. | ## Properties @@ -55,10 +54,13 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [connect](./combinetier.md#connect-property) | `(signer: Signer) => CombineTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [fnPtrs](./combinetier.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./combinetier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides \| undefined) => Promise` | It is NOT implemented in CombineTiers. Always will throw an error

*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* | +| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | +| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | +| [setTier](./combinetier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | It is NOT implemented in CombineTiers. Always will throw an error | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | +| [storageOpcodesRange](./combinetier.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for combineTier's storage opcodes | ## Static Methods @@ -73,7 +75,7 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | ## Static Property Details @@ -135,34 +137,32 @@ Should be implemented in each class to find the factory or main address in the b protected static readonly nameBookReference: string; ``` - +## Property Details + + -### Opcodes +### connect -All the opcodes avaialbles in the CombineTier contract. +Connect the current contract instance to a new ethers signer. -This expose all the standard opcodes along with the specific opcodes of the CombineTier. +*Overrides [RainContract.connect](./raincontract.md#connect-property)* Signature: ```typescript -static Opcodes: CombineTierOpcodes; +readonly connect: (signer: Signer) => CombineTier; ``` -## Property Details + - +### fnPtrs -### connect - -Connect the current contract instance to a new ethers signer. - -*Overrides [RainContract.connect](./raincontract.md#connect-property)* +Pointers to opcode functions, necessary for being able to read the packedBytes Signature: ```typescript -readonly connect: (signer: Signer) => CombineTier; +readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; ``` @@ -171,12 +171,20 @@ readonly connect: (signer: Signer) => CombineTier; It is NOT implemented in CombineTiers. Always will throw an error -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* +Signature: + +```typescript +readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; +``` + + + +### storageOpcodesRange -Users can set their own tier by calling `setTier` if is this option available on the Tier contract. ITier like BalanceTier does not allow this. +Returns the pointer and length for combineTier's storage opcodes Signature: ```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides | undefined) => Promise; +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; ``` diff --git a/docs/classes/combinetiergenerator.md b/docs/classes/combinetiergenerator.md index 52fa80d..ecd1cf1 100644 --- a/docs/classes/combinetiergenerator.md +++ b/docs/classes/combinetiergenerator.md @@ -17,32 +17,20 @@ new CombineTier(a tierAddress or a StateConfig) | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./combinetiergenerator.md#argumentsLength-property) | `BigNumberish` | | | [constants](./combinetiergenerator.md#constants-property) | `BigNumberish[]` | | | [sources](./combinetiergenerator.md#sources-property) | `BytesLike[]` | | -| [stackLength](./combinetiergenerator.md#stackLength-property) | `BigNumberish` | | ## Methods | Method | Description | | --- | --- | -| [combine(reportVar, logic, mode, number)](./combinetiergenerator.md#combine-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | -| [holdingTimeTransferTier(reportVar, numberOfBlocks)](./combinetiergenerator.md#holdingTimeTransferTier-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. | -| [satDiff(reportVar)](./combinetiergenerator.md#satDiff-method-1) | Saturating difference between 2 reports | -| [updateReportAtTierRange(startTier, endTier, number)](./combinetiergenerator.md#updateReportAtTierRange-method-1) | Method to update a report at given tier range (can be any range between 0 to 8) | +| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | +| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports | +| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. | +| [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8) | ## Property Details - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - ### constants @@ -63,63 +51,52 @@ constants: BigNumberish[]; sources: BytesLike[]; ``` - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` - ## Method Details - + -### combine(reportVar, logic, mode, number) +### combineWith(reporter, logic, mode, number) Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode Signature: ```typescript -combine(reportVar: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, number?: number): this; +combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, number?: number): CombineTierGenerator; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| reportVar | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | +| reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | | logic | `selectLteLogic` | selectLte logic | | mode | `selectLteMode` | selectLte mode | -| number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_NUMBER | +| number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_TIMESTAMP | Returns: -`this` +`CombineTierGenerator` this - + -### holdingTimeTransferTier(reportVar, numberOfBlocks) +### differenceFrom(reporter) -Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. +Saturating difference between 2 reports Signature: ```typescript -holdingTimeTransferTier(reportVar: string | StateConfig, numberOfBlocks: number | number[]): this; +differenceFrom(reporter: string | StateConfig): this; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| reportVar | `string \| StateConfig` | either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) | -| numberOfBlocks | `number \| number[]` | A number or an array of numbers represting the number of blocks a given tier must be held to get ALWAYS report or else it gets NEVER report. | +| reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | Returns: @@ -127,40 +104,43 @@ holdingTimeTransferTier(reportVar: string | StateConfig, numberOfBlocks: number this - + -### satDiff(reportVar) +### isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals) -Saturating difference between 2 reports +Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. Signature: ```typescript -satDiff(reportVar: string | StateConfig): this; +isTierHeldFor(reporter: string | StateConfig, numberOfBlocks: number | number[], thresholds?: (number | string)[], tokenDecimals?: number): CombineTierGenerator; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| reportVar | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | +| reporter | `string \| StateConfig` | either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) | +| numberOfBlocks | `number \| number[]` | A number or an array of numbers represting the number of blocks a given tier must be held to get ALWAYS report or else it gets NEVER report. | +| thresholds | `(number \| string)[]` | | +| tokenDecimals | `number` | | Returns: -`this` +`CombineTierGenerator` this - + -### updateReportAtTierRange(startTier, endTier, number) +### updateReport(startTier, endTier, number) Method to update a report at given tier range (can be any range between 0 to 8) Signature: ```typescript -updateReportAtTierRange(startTier: Tier, endTier: Tier, number?: number): this; +updateReport(startTier: Tier, endTier: Tier, number?: number): CombineTierGenerator; ``` #### Parameters @@ -169,11 +149,11 @@ updateReportAtTierRange(startTier: Tier, endTier: Tier, number?: number): this; | --- | --- | --- | | startTier | [Tier](../enums/tier.md) | start of the report updating range (exclusive) | | endTier | [Tier](../enums/tier.md) | end of the report updating range (inclusive) | -| number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_NUMBER | +| number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_TIMESTAMP | Returns: -`this` +`CombineTierGenerator` this diff --git a/docs/classes/combinetierjs.md b/docs/classes/combinetierjs.md index da4da7e..a331e23 100644 --- a/docs/classes/combinetierjs.md +++ b/docs/classes/combinetierjs.md @@ -9,17 +9,13 @@ class CombineTierJS extends RainJS ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [Opcodes](./combinetierjs.md#Opcodes-property-static) | `import("../contracts/tiers/combineTier").CombineTierOpcodes` | Local CombineTier Opcodes + AllstandardOps

*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* | - ## Properties | Property | Type | Description | | --- | --- | --- | -| [\_OPCODE\_](./combinetierjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes

*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | +| [\_CONTEXT\_](./combinetierjs.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime.

*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* | +| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | +| [\_STORAGE\_](./combinetierjs.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions)

*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* | | [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract

*Inherited from [RainJS.contract](./rainjs.md#contract-property)* | | [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJS.lastState](./rainjs.md#lastState-property)* | | [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider.

*Inherited from [RainJS.provider](./rainjs.md#provider-property)* | @@ -31,34 +27,34 @@ class CombineTierJS extends RainJS | --- | --- | | [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJS.run()](./rainjs.md#run-method-1)* | -## Static Property Details +## Property Details - + -### Opcodes +### \_CONTEXT\_ -Local CombineTier Opcodes + AllstandardOps +key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. -*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* +*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* Signature: ```typescript -static Opcodes: import("../contracts/tiers/combineTier").CombineTierOpcodes; +protected _CONTEXT_: ApplyOpFn; ``` -## Property Details + - +### \_STORAGE\_ -### \_OPCODE\_ +key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) -key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes +*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* -*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* +CombineTier doesnt have any STORAGE opcode by default and in its contract level, however in JSVM there is the ability to pass in custom opcode functions to it Signature: ```typescript -protected readonly _OPCODE_: ApplyOpFn; +protected _STORAGE_: ApplyOpFn; ``` diff --git a/docs/classes/emissionserc20.md b/docs/classes/emissionserc20.md index 5eb8e9f..9d3aefc 100644 --- a/docs/classes/emissionserc20.md +++ b/docs/classes/emissionserc20.md @@ -35,7 +35,6 @@ await EmissionsERC20.isChild(signer, newEmission.address); | [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | | [isChild](./emissionserc20.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this RedeemableERC20Factory on a specific network | | [nameBookReference](./emissionserc20.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | -| [Opcodes](./emissionserc20.md#Opcodes-property-static) | [EmissionsERC20Opcodes](../types/emissionserc20opcodes.md) | All the opcodes avaialbles in the EmissionsERC20 contract. | ## Properties @@ -51,12 +50,15 @@ await EmissionsERC20.isChild(signer, newEmission.address); | [connect](./emissionserc20.md#connect-property) | `(signer: Signer) => EmissionsERC20` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [decimals](./emissionserc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. | | [decreaseAllowance](./emissionserc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [fnPtrs](./emissionserc20.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [increaseAllowance](./emissionserc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | | [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | | [name](./emissionserc20.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./emissionserc20.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides \| undefined) => Promise` | It is NOT implemented in Emissions. Always will throw an error

*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* | +| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | +| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | +| [setTier](./emissionserc20.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | It is NOT implemented in Emissions. Always will throw an error | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | +| [storageOpcodesRange](./emissionserc20.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for emissionERC20's storage opcodes | | [symbol](./emissionserc20.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the symbol of the token, usually a shorter version of the name. | | [totalSupply](./emissionserc20.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens in existence. | | [transfer](./emissionserc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | @@ -75,7 +77,7 @@ await EmissionsERC20.isChild(signer, newEmission.address); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | ## Static Property Details @@ -119,20 +121,6 @@ Should be implemented in each class to find the factory or main address in the b protected static readonly nameBookReference: string; ``` - - -### Opcodes - -All the opcodes avaialbles in the EmissionsERC20 contract. - -This expose all the standard opcodes along with the specific opcodes of the EmissionsERC20. - -Signature: - -```typescript -static Opcodes: EmissionsERC20Opcodes; -``` - ## Property Details @@ -249,6 +237,18 @@ This is an alternative to `approve()` that can be used as a mitigation for probl readonly decreaseAllowance: (spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise; ``` + + +### fnPtrs + +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; +``` + ### increaseAllowance @@ -281,14 +281,22 @@ readonly name: (overrides?: ReadTxOverrides) => Promise; It is NOT implemented in Emissions. Always will throw an error -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* +Signature: + +```typescript +readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; +``` + + + +### storageOpcodesRange -Users can set their own tier by calling `setTier` if is this option available on the Tier contract. ITier like BalanceTier does not allow this. +Returns the pointer and length for emissionERC20's storage opcodes Signature: ```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides | undefined) => Promise; +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; ``` diff --git a/docs/classes/emissionserc20js.md b/docs/classes/emissionserc20js.md index cd34479..cba6f49 100644 --- a/docs/classes/emissionserc20js.md +++ b/docs/classes/emissionserc20js.md @@ -9,17 +9,13 @@ class EmissionsERC20JS extends RainJS ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [Opcodes](./emissionserc20js.md#Opcodes-property-static) | `import("../contracts/emissionsERC20").EmissionsERC20Opcodes` | Local EmissionsERC20 Opcodes + AllstandardOps

*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* | - ## Properties | Property | Type | Description | | --- | --- | --- | -| [\_OPCODE\_](./emissionserc20js.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes

*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | +| [\_CONTEXT\_](./emissionserc20js.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime.

*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* | +| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | +| [\_STORAGE\_](./emissionserc20js.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions)

*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* | | [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract

*Inherited from [RainJS.contract](./rainjs.md#contract-property)* | | [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJS.lastState](./rainjs.md#lastState-property)* | | [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider.

*Inherited from [RainJS.provider](./rainjs.md#provider-property)* | @@ -31,34 +27,34 @@ class EmissionsERC20JS extends RainJS | --- | --- | | [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJS.run()](./rainjs.md#run-method-1)* | -## Static Property Details +## Property Details - + -### Opcodes +### \_CONTEXT\_ -Local EmissionsERC20 Opcodes + AllstandardOps +key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. -*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* +*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* Signature: ```typescript -static Opcodes: import("../contracts/emissionsERC20").EmissionsERC20Opcodes; +protected _CONTEXT_: ApplyOpFn; ``` -## Property Details + - +### \_STORAGE\_ -### \_OPCODE\_ +key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) -key/value pair of opcodes and their functions for all standard opcodes + EmissionsERC20 local opcodes +*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* -*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* +EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, however in JSVM there is the ability to pass in custom opcode functions to it Signature: ```typescript -protected readonly _OPCODE_: ApplyOpFn; +protected _STORAGE_: ApplyOpFn; ``` diff --git a/docs/classes/erc20balancetier.md b/docs/classes/erc20balancetier.md index da4a317..fd69569 100644 --- a/docs/classes/erc20balancetier.md +++ b/docs/classes/erc20balancetier.md @@ -1,216 +1,50 @@ # Class ERC20BalanceTier -A class for deploying and calling methods on a ERC20BalanceTier. - -This class provides an easy way to deploy ERC20BalanceTiers using Rain's canonical factories, and methods for interacting with an already deployed ERC20BalanceTier. - -The `ERC20BalanceTier` simply checks the current balance of an erc20 against tier values. As the current balance is always read from the erc20 contract directly there is no historical block data. +class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalancTier in RainVM version 1.0 Signature: ```typescript -class ERC20BalanceTier extends TierContract -``` - -## Example - - -```typescript -import { ERC20BalanceTier } from 'rain-sdk' - -// To deploy a new ERC20BalanceTier, pass an ethers.js Signer and the config for the ERC20BalanceTier. -const newTier = await ERC20BalanceTier.deploy(signer, ERC20BalanceTierArgs); - -// To connect to an existing ERC20BalanceTier just pass the tier address, token address and an ethers.js Signer. -const existingTier = new ERC20BalanceTier(address, signer[, tokenAddress]); - -// Once you have a ERC20BalanceTier, you can call the smart contract methods: -const tierValues = await existingTier.tierValues(); - +class ERC20BalanceTier extends CombineTierGenerator ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deploy](./erc20balancetier.md#deploy-property-static) | `(signer: Signer, args: ERC20BalanceTierDeployArgs, overrides?: TxOverrides) => Promise` | Deploys a new ERC20BalanceTier. | -| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | -| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | -| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | -| [isChild](./erc20balancetier.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this contract in a specific network. | -| [nameBookReference](./erc20balancetier.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | - ## Properties | Property | Type | Description | | --- | --- | --- | -| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [addTokenAddress](./erc20balancetier.md#addTokenAddress-property) | `(tokenAddress: string) => ERC20BalanceTier` | Get a new instance with the token address provided.

This method must be used if the token address is not provided in construction moment. The class use this address to make calculations related with the Tier. The token address provided should be the same that the Tier is using to work correctly. | -| [connect](./erc20balancetier.md#connect-property) | `(signer: Signer) => ERC20BalanceTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./erc20balancetier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides \| undefined) => Promise` | It is NOT implemented in BalanceTiers. Always will throw an error

*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* | -| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [tierValues](./erc20balancetier.md#tierValues-property) | `(overrides?: ReadTxOverrides) => Promise` | Complements the default solidity accessor for `tierValues`. Returns all the values in a listrather than requiring an index be specified. | -| [token](./erc20balancetier.md#token-property) | `string` | ERC20 Token address that track the Tier | - -## Static Methods - -| Method | Description | -| --- | --- | -| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | -| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | -| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | +| [constants](./combinetiergenerator.md#constants-property) | `BigNumberish[]` | *Inherited from [CombineTierGenerator.constants](./combinetiergenerator.md#constants-property)* | +| [sources](./combinetiergenerator.md#sources-property) | `BytesLike[]` | *Inherited from [CombineTierGenerator.sources](./combinetiergenerator.md#sources-property)* | +| [tierValues](./erc20balancetier.md#tierValues-property) | `(number \| string)[]` | | +| [tokenAddress](./erc20balancetier.md#tokenAddress-property) | `string` | | ## Methods | Method | Description | | --- | --- | -| [amountToTier(account, desiredLevel)](./erc20balancetier.md#amountToTier-method-1) | Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`.

Take in mind: - If the `desired level` is higher than the current level, the amount returned will be the amount needed to obtain or transfer to the `account`. - If the `desired level` is lower than the current level, the amount returned will be the amount needed to remove or transfer out of the `account`. - If already have the `desired` tier, will return 0 | -| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | - -## Static Property Details - - - -### deploy - -Deploys a new ERC20BalanceTier. - -Signature: - -```typescript -static deploy: (signer: Signer, args: ERC20BalanceTierDeployArgs, overrides?: TxOverrides) => Promise; -``` - - - -### isChild - -Checks if address is registered as a child contract of this contract in a specific network. - -The methods require a signer that will be used to call to the Factory Contract and ask if the address provided is a child. Also it is necessary to get the current Chain ID using the provider in the signer. - -Signature: - -```typescript -static isChild: (signer: Signer, maybeChild: string) => Promise; -``` - - - -### nameBookReference - -Name reference to find the address of the contract in the book address. - -*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* - -Should be implemented in each class to find the factory or main address in the book. - -Signature: - -```typescript -protected static readonly nameBookReference: string; -``` +| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | ## Property Details - - -### addTokenAddress - -Get a new instance with the token address provided. - -This method must be used if the token address is not provided in construction moment. The class use this address to make calculations related with the Tier. The token address provided should be the same that the Tier is using to work correctly. - -Signature: - -```typescript -readonly addTokenAddress: (tokenAddress: string) => ERC20BalanceTier; -``` - - - -### connect - -Connect the current contract instance to a new ethers signer. - -*Overrides [RainContract.connect](./raincontract.md#connect-property)* - -Signature: - -```typescript -readonly connect: (signer: Signer) => ERC20BalanceTier; -``` - - - -### setTier - -It is NOT implemented in BalanceTiers. Always will throw an error - -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* - -Users can set their own tier by calling `setTier` if is this option available on the Tier contract. ITier like BalanceTier does not allow this. - -Signature: - -```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides | undefined) => Promise; -``` - ### tierValues -Complements the default solidity accessor for `tierValues`. Returns all the values in a listrather than requiring an index be specified. - Signature: ```typescript -readonly tierValues: (overrides?: ReadTxOverrides) => Promise; +readonly tierValues: (number | string)[]; ``` - - -### token + -ERC20 Token address that track the Tier +### tokenAddress Signature: ```typescript -readonly token: string; +readonly tokenAddress: string; ``` - -## Method Details - - - -### amountToTier(account, desiredLevel) - -Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`. - -Take in mind: - If the `desired level` is higher than the current level, the amount returned will be the amount needed to obtain or transfer to the `account`. - If the `desired level` is lower than the current level, the amount returned will be the amount needed to remove or transfer out of the `account`. - If already have the `desired` tier, will return 0 - -Signature: - -```typescript -amountToTier(account: string, desiredLevel: number): Promise; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| account | `string` | (optional) the account address to calculate. If not provided will use the signer of the instance | -| desiredLevel | `number` | the tier level desired to get | - -Returns: - -`Promise` - -The amount t - diff --git a/docs/classes/erc20transfertier.md b/docs/classes/erc20transfertier.md deleted file mode 100644 index 9345aee..0000000 --- a/docs/classes/erc20transfertier.md +++ /dev/null @@ -1,260 +0,0 @@ - -# Class ERC20TransferTier - -A class for deploying and calling methods on a ERC20TransferTier. - -This class provides an easy way to deploy ERC20TransferTiers using Rain's canonical factories, and methods for interacting with an already deployed ERC20TransferTier. - -The `ERC20TransferTier` takes ownership of an erc20 balance by transferring erc20 token to itself. The `msg.sender` must pay the difference on upgrade; the tiered address receives refunds on downgrade. This allows users to "gift" tiers to each other. As the transfer is a state changing event we can track historical block times. - -As the tiered address moves up/down tiers it sends/receives the value difference between its current tier only.The user is required to preapprove enough erc20 to cover the tier change or they will fail and lose gas. - -In addition to the standard accounting it requires that users transfer erc20 tokens to achieve a tier. Data is ignored, the only requirement is that the user has approved sufficient balance to gain the next tier. The 8 values for gainable tiers and erc20 contract must be set upon construction and are immutable. - -`⚠️ WARNING:` If a user sends erc20 tokens directly to the contract without calling `setTier` the FUNDS ARE LOST. ⚠️ - -Signature: - -```typescript -class ERC20TransferTier extends TierContract -``` - -## Example - - -```typescript -import { ERC20TransferTier } from 'rain-sdk' - -// To deploy a new ERC20TransferTier, pass an ethers.js Signer and the config for the ERC20TransferTier. -const newTier = await ERC20TransferTier.deploy(signer, ERC20TransferTierConfigArgs); - -// To connect to an existing ERC20TransferTier just pass the tier address, token address and an ethers.js Signer. -const existingTier = new ERC20TransferTier(address, tokenAddress, signer); - -// Once you have a ERC20TransferTier, you can call the smart contract methods: -const tierValues = await existingTier.tierValues(); - -``` - -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | -| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | -| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | -| [isChild](./erc20transfertier.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this ERC20TransferTierFactory on a specific network | -| [nameBookReference](./erc20transfertier.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [addTokenAddress](./erc20transfertier.md#addTokenAddress-property) | `(tokenAddress: string) => ERC20TransferTier` | Get a new instance with the token address provided.

This method must be used if the token address is not provided in construction moment. The class use this address to make calculations related with the Tier. The token address provided should be the same that the Tier is using to work correctly. | -| [connect](./erc20transfertier.md#connect-property) | `(signer: Signer) => ERC20TransferTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./erc20transfertier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | Updates the tier of an account tansfering balances of erc20 from/to the tiered account according to the difference in values.

*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* | -| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [tierValues](./erc20transfertier.md#tierValues-property) | `(overrides?: ReadTxOverrides) => Promise` | Complements the default solidity accessor for `tierValues`. Returns all the values in a listrather than requiring an index be specified. | -| [token](./erc20transfertier.md#token-property) | `string` | The ERC20 Token address that holds the Tier. | - -## Static Methods - -| Method | Description | -| --- | --- | -| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | -| [deploy(signer, args, overrides)](./erc20transfertier.md#deploy-method-static-1) | Deploys a new ERC20TransferTier. | -| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | -| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | - -## Methods - -| Method | Description | -| --- | --- | -| [amountToTier(account, desiredLevel)](./erc20transfertier.md#amountToTier-method-1) | Calculate how much amount of the token needed transfer to the tier contract or how much tokens the `account` will get back to reach the `desiredLevel`. | -| [approveTokenForTier(amount, overrides)](./erc20transfertier.md#approveTokenForTier-method-1) | | -| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | - -## Static Property Details - - - -### isChild - -Checks if address is registered as a child contract of this ERC20TransferTierFactory on a specific network - -Signature: - -```typescript -static isChild: (signer: Signer, maybeChild: string) => Promise; -``` - - - -### nameBookReference - -Name reference to find the address of the contract in the book address. - -*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* - -Should be implemented in each class to find the factory or main address in the book. - -Signature: - -```typescript -protected static readonly nameBookReference: string; -``` - -## Property Details - - - -### addTokenAddress - -Get a new instance with the token address provided. - -This method must be used if the token address is not provided in construction moment. The class use this address to make calculations related with the Tier. The token address provided should be the same that the Tier is using to work correctly. - -Signature: - -```typescript -readonly addTokenAddress: (tokenAddress: string) => ERC20TransferTier; -``` - - - -### connect - -Connect the current contract instance to a new ethers signer. - -*Overrides [RainContract.connect](./raincontract.md#connect-property)* - -Signature: - -```typescript -readonly connect: (signer: Signer) => ERC20TransferTier; -``` - - - -### setTier - -Updates the tier of an account tansfering balances of erc20 from/to the tiered account according to the difference in values. - -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* - -Users can set their own tier by calling `setTier`. - -Any failure to transfer in/out will rollback the tier change. The tiered account must ensure sufficient approvals before attempting to set a new tier. This throw an error if the user attempts to return to the ZERO tier. - -Signature: - -```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; -``` - - - -### tierValues - -Complements the default solidity accessor for `tierValues`. Returns all the values in a listrather than requiring an index be specified. - -Signature: - -```typescript -readonly tierValues: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### token - -The ERC20 Token address that holds the Tier. - -Signature: - -```typescript -readonly token: string; -``` - -## Static Method Details - - - -### deploy(signer, args, overrides) - -Deploys a new ERC20TransferTier. - -Signature: - -```typescript -static deploy(signer: Signer, args: ERC20TransferTierDeployArgs, overrides?: TxOverrides): Promise; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| signer | `Signer` | An ethers.js Signer | -| args | [ERC20TransferTierDeployArgs](../interfaces/erc20transfertierdeployargs.md) | Arguments for deploying a ERC20TransferTier | -| overrides | [TxOverrides](../interfaces/txoverrides.md) | | - -Returns: - -`Promise` - -A new ERC20TransferTier instance - -## Method Details - - - -### amountToTier(account, desiredLevel) - -Calculate how much amount of the token needed transfer to the tier contract or how much tokens the `account` will get back to reach the `desiredLevel`. - -Take in mind: - If the `account` directly send tokens to the ERC20TransferTier contract, those tokens are lost. All the calcualtions are make it with the tokens transfered by the account with setTier method. - If the `desired level` is higher than the current level, the amount returned will be the amount needed to obtain tier. - If the `desired level` is lower than the current level, the amount returned will be the amount that will get back. - If already have the `desired` tier, will return 0. - -Signature: - -```typescript -amountToTier(account: string, desiredLevel: number): Promise; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| account | `string` | (optional) the account address to calculate. If not provided will use the signer of the instance | -| desiredLevel | `number` | the tier level desired to get | - -Returns: - -`Promise` - -The amount t - - - -### approveTokenForTier(amount, overrides) - -Signature: - -```typescript -approveTokenForTier(amount: BigNumberish, overrides?: ReadTxOverrides): Promise; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| amount | `BigNumberish` | | -| overrides | [ReadTxOverrides](../interfaces/readtxoverrides.md) | | - -Returns: - -`Promise` - diff --git a/docs/classes/erc721balancetier.md b/docs/classes/erc721balancetier.md index 4d0c6d2..7e0ba85 100644 --- a/docs/classes/erc721balancetier.md +++ b/docs/classes/erc721balancetier.md @@ -1,212 +1,50 @@ # Class ERC721BalanceTier -A class for deploying and calling methods on a ERC721BalanceTier. The `ERC721BalanceTier` simply checks the current balance of an erc721 against tier values. As the current balance is always read from the erc721contract directly there is no historical block data. - -This class provides an easy way to deploy ERC721BalanceTiers using Rain's canonical factories, and methods for interacting with an already deployed ERC721BalanceTier. +class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC721BalancTier in RainVM version 1.0 Signature: ```typescript -class ERC721BalanceTier extends TierContract -``` - -## Example - - -```typescript -import { ERC721BalanceTier } from 'rain-sdk' - -// To deploy a new ERC721BalanceTier, pass an ethers.js Signer and the config for the ERC721BalanceTier. -const newTier = await ERC721BalanceTier.deploy(signer, ERC721BalanceTierConfigArgs); - -// To connect to an existing ERC721BalanceTier just pass the address and an ethers.js Signer. -const existingTier = new ERC721BalanceTier(address, signer); - -// Once you have a ERC721BalanceTier, you can call the smart contract methods: -const tierValues = await existingTier.tierValues(); - +class ERC721BalanceTier extends CombineTierGenerator ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deploy](./erc721balancetier.md#deploy-property-static) | `(signer: Signer, args: ERC721BalanceTierDeployArgs, overrides?: TxOverrides) => Promise` | Deploys a new ERC721BalanceTier. | -| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | -| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | -| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | -| [isChild](./erc721balancetier.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this ERC721BalanceTierFactory on a specific network | -| [nameBookReference](./erc721balancetier.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | - ## Properties | Property | Type | Description | | --- | --- | --- | -| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [addTokenAddress](./erc721balancetier.md#addTokenAddress-property) | `(tokenAddress: string) => ERC721BalanceTier` | Get a new instance with the token address provided.

This method must be used if the token address is not provided in construction moment. The class use this address to make calculations related with the Tier. The token address provided should be the same that the Tier is using to work correctly. | -| [connect](./erc721balancetier.md#connect-property) | `(signer: Signer) => ERC721BalanceTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./erc721balancetier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides \| undefined) => Promise` | It is NOT implemented in BalanceTiers. Always will throw an error

*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* | -| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [tierValues](./erc721balancetier.md#tierValues-property) | `(overrides?: ReadTxOverrides) => Promise` | Complements the default solidity accessor for `tierValues`. Returns all the values in a listrather than requiring an index be specified. | -| [token](./erc721balancetier.md#token-property) | `string` | ERC721 Token address that track the Tier | - -## Static Methods - -| Method | Description | -| --- | --- | -| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | -| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | -| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | +| [constants](./combinetiergenerator.md#constants-property) | `BigNumberish[]` | *Inherited from [CombineTierGenerator.constants](./combinetiergenerator.md#constants-property)* | +| [sources](./combinetiergenerator.md#sources-property) | `BytesLike[]` | *Inherited from [CombineTierGenerator.sources](./combinetiergenerator.md#sources-property)* | +| [tierValues](./erc721balancetier.md#tierValues-property) | `(number \| string)[]` | | +| [tokenAddress](./erc721balancetier.md#tokenAddress-property) | `string` | | ## Methods | Method | Description | | --- | --- | -| [amountToTier(account, desiredLevel)](./erc721balancetier.md#amountToTier-method-1) | Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`.

Take in mind: - If the `desired level` is higher than the current level, the amount returned will be the amount needed to obtain or transfer to the `account`. - If the `desired level` is lower than the current level, the amount returned will be the amount needed to remove or transfer out of the `account`. - If already have the `desired` tier, will return 0 | -| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | - -## Static Property Details - - - -### deploy - -Deploys a new ERC721BalanceTier. - -Signature: - -```typescript -static deploy: (signer: Signer, args: ERC721BalanceTierDeployArgs, overrides?: TxOverrides) => Promise; -``` - - - -### isChild - -Checks if address is registered as a child contract of this ERC721BalanceTierFactory on a specific network - -Signature: - -```typescript -static isChild: (signer: Signer, maybeChild: string) => Promise; -``` - - - -### nameBookReference - -Name reference to find the address of the contract in the book address. - -*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* - -Should be implemented in each class to find the factory or main address in the book. - -Signature: - -```typescript -protected static readonly nameBookReference: string; -``` +| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | ## Property Details - - -### addTokenAddress - -Get a new instance with the token address provided. - -This method must be used if the token address is not provided in construction moment. The class use this address to make calculations related with the Tier. The token address provided should be the same that the Tier is using to work correctly. - -Signature: - -```typescript -readonly addTokenAddress: (tokenAddress: string) => ERC721BalanceTier; -``` - - - -### connect - -Connect the current contract instance to a new ethers signer. - -*Overrides [RainContract.connect](./raincontract.md#connect-property)* - -Signature: - -```typescript -readonly connect: (signer: Signer) => ERC721BalanceTier; -``` - - - -### setTier - -It is NOT implemented in BalanceTiers. Always will throw an error - -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* - -Users can set their own tier by calling `setTier` if is this option available on the Tier contract. ITier like BalanceTier does not allow this. - -Signature: - -```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides | undefined) => Promise; -``` - ### tierValues -Complements the default solidity accessor for `tierValues`. Returns all the values in a listrather than requiring an index be specified. - -Signature: - -```typescript -readonly tierValues: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### token - -ERC721 Token address that track the Tier - Signature: ```typescript -readonly token: string; +readonly tierValues: (number | string)[]; ``` -## Method Details - - - -### amountToTier(account, desiredLevel) + -Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`. - -Take in mind: - If the `desired level` is higher than the current level, the amount returned will be the amount needed to obtain or transfer to the `account`. - If the `desired level` is lower than the current level, the amount returned will be the amount needed to remove or transfer out of the `account`. - If already have the `desired` tier, will return 0 +### tokenAddress Signature: ```typescript -amountToTier(account: string, desiredLevel: number): Promise; +readonly tokenAddress: string; ``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| account | `string` | (optional) the account address to calculate. If not provided will use the signer of the instance | -| desiredLevel | `number` | the tier level desired to get | - -Returns: - -`Promise` - -The amount t - diff --git a/docs/classes/fixedprice.md b/docs/classes/fixedprice.md index 8bba104..ea72f17 100644 --- a/docs/classes/fixedprice.md +++ b/docs/classes/fixedprice.md @@ -28,10 +28,8 @@ const saleType = new FixedPrice(price) | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./pricecurve.md#argumentsLength-property) | `BigNumberish` | *Inherited from [PriceCurve.argumentsLength](./pricecurve.md#argumentsLength-property)* | | [constants](./pricecurve.md#constants-property) | `BigNumberish[]` | *Inherited from [PriceCurve.constants](./pricecurve.md#constants-property)* | | [sources](./pricecurve.md#sources-property) | `BytesLike[]` | *Inherited from [PriceCurve.sources](./pricecurve.md#sources-property)* | -| [stackLength](./pricecurve.md#stackLength-property) | `BigNumberish` | *Inherited from [PriceCurve.stackLength](./pricecurve.md#stackLength-property)* | ## Methods @@ -39,7 +37,6 @@ const saleType = new FixedPrice(price) | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase.

*Inherited from [PriceCurve.applyExtraTimeDiscount()](./pricecurve.md#applyExtraTimeDiscount-method-1)* | | [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | -| [applyWalletCap(mode, options)](./pricecurve.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet.

*Inherited from [PriceCurve.applyWalletCap()](./pricecurve.md#applyWalletCap-method-1)* | ## Static Property Details diff --git a/docs/classes/gatednft.md b/docs/classes/gatednft.md deleted file mode 100644 index 9e39e3a..0000000 --- a/docs/classes/gatednft.md +++ /dev/null @@ -1,410 +0,0 @@ - -# Class GatedNFT - -//TODO: Add doc - -Signature: - -```typescript -class GatedNFT extends FactoryContract -``` - -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [deploy](./gatednft.md#deploy-property-static) | `(signer: Signer, args: GatedNFTDeployArguments, overrides?: TxOverrides) => Promise` | Deploys a new GatedNFT. | -| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | -| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | -| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | -| [isChild](./gatednft.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this GatedNFTFactory on a specific network | -| [nameBookReference](./gatednft.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [approve](./gatednft.md#approve-property) | `(to: string, tokenId: BigNumberish, overrides?: TxOverrides) => Promise` | Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred.

Only a single account can be approved at a time, so approving the zero address clears previous approvals.

Requirements:

- The caller must own the token or be an approved operator. - `tokenId` must exist. | -| [balanceOf](./gatednft.md#balanceOf-property) | `(owner: string, overrides?: ReadTxOverrides) => Promise` | Returns the number of tokens in `owner`'s account. | -| [connect](./gatednft.md#connect-property) | `(signer: Signer) => GatedNFT` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [getApproved](./gatednft.md#getApproved-property) | `(tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Returns the account approved for `tokenId` token.

Requirements:

- `tokenId` must exist. | -| [isApprovedForAll](./gatednft.md#isApprovedForAll-property) | `(owner: string, operator: string, overrides?: ReadTxOverrides) => Promise` | Returns if the `operator` is allowed to manage all of the assets of `owner`. | -| [mint](./gatednft.md#mint-property) | `(to: string, overrides?: TxOverrides) => Promise` | Mint a token and transfers it to `to`.

Requirements: - `to` should have the required tier - `to` should not exhausted his allowance | -| [name](./gatednft.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the token collection name. | -| [owner](./gatednft.md#owner-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the address of the current owner. | -| [ownerOf](./gatednft.md#ownerOf-property) | `(tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Returns the owner of the `tokenId` token.

Requirements:

- `tokenId` must exist. | -| [renounceOwnership](./gatednft.md#renounceOwnership-property) | `(overrides?: TxOverrides) => Promise` | Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner.

NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. | -| [royaltyInfo](./gatednft.md#royaltyInfo-property) | `(salePrice: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be payed in that same unit of exchange. | -| [safeTransferFrom](./gatednft.md#safeTransferFrom-property) | `(from: string, to: string, tokenId: BigNumberish, overrides?: TxOverrides) => Promise` | Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked.

Requirements:

- `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either approve() or setApprovalForAll(). - If `to` refers to a smart contract, it must implement `IERC721Receiver-onERC721Received`, which is called upon a safe transfer. | -| [safeTransferFromWithData](./gatednft.md#safeTransferFromWithData-property) | `(from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | Safely transfers `tokenId` token from `from` to `to`.

Requirements:

- `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either approve() or setApprovalForAll(). - If `to` refers to a smart contract, it must implement `IERC721Receiver-onERC721Received`, which is called upon a safe transfer. | -| [setApprovalForAll](./gatednft.md#setApprovalForAll-property) | `(operator: string, approved: boolean, overrides?: TxOverrides) => Promise` | Approve or remove `operator` as an operator for the caller. Operators can call `transferFrom()` or `safeTransferFrom()` for any token owned by the caller.

Requirements:

- The `operator` cannot be the caller. | -| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [supportsInterface](./gatednft.md#supportsInterface-property) | `(interfaceId: BytesLike, overrides?: ReadTxOverrides) => Promise` | Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165\#how-interfaces-are-identified\[EIP section\] to learn more about how these ids are created. | -| [symbol](./gatednft.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the token collection symbol. | -| [tier](./gatednft.md#tier-property) | `(overrides?: ReadTxOverrides) => Promise` | Tier contract to compare statuses against on transfer. | -| [tokenURI](./gatednft.md#tokenURI-property) | `(tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Returns the Uniform Resource Identifier (URI) for `tokenId` token. | -| [totalSupply](./gatednft.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the total amount of tokens stored by the contract. | -| [transferFrom](./gatednft.md#transferFrom-property) | `(from: string, to: string, tokenId: BigNumberish, overrides?: TxOverrides) => Promise` | Transfers `tokenId` token from `from` to `to`.

WARNING: Usage of this method is discouraged, use `safeTransferFrom()` whenever possible.

Requirements:

- `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either `approve()` or `setApprovalForAll()`. | -| [transferOwnership](./gatednft.md#transferOwnership-property) | `(newOwner: string, overrides?: TxOverrides) => Promise` | Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner. | -| [updateRoyaltyRecipient](./gatednft.md#updateRoyaltyRecipient-property) | `(royaltyRecipient: string, overrides?: TxOverrides) => Promise` | Update the royalty recipient. Requires the caller to be the current recipient | - -## Static Methods - -| Method | Description | -| --- | --- | -| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | -| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | -| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | - -## Methods - -| Method | Description | -| --- | --- | -| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | - -## Static Property Details - - - -### deploy - -Deploys a new GatedNFT. - -Signature: - -```typescript -static deploy: (signer: Signer, args: GatedNFTDeployArguments, overrides?: TxOverrides) => Promise; -``` - - - -### isChild - -Checks if address is registered as a child contract of this GatedNFTFactory on a specific network - -Signature: - -```typescript -static isChild: (signer: Signer, maybeChild: string) => Promise; -``` - - - -### nameBookReference - -Name reference to find the address of the contract in the book address. - -*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* - -Should be implemented in each class to find the factory or main address in the book. - -Signature: - -```typescript -protected static readonly nameBookReference: string; -``` - -## Property Details - - - -### approve - -Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. - -Only a single account can be approved at a time, so approving the zero address clears previous approvals. - -Requirements: - -- The caller must own the token or be an approved operator. - `tokenId` must exist. - -Signature: - -```typescript -readonly approve: (to: string, tokenId: BigNumberish, overrides?: TxOverrides) => Promise; -``` - - - -### balanceOf - -Returns the number of tokens in `owner`'s account. - -Signature: - -```typescript -readonly balanceOf: (owner: string, overrides?: ReadTxOverrides) => Promise; -``` - - - -### connect - -Connect the current contract instance to a new ethers signer. - -*Overrides [RainContract.connect](./raincontract.md#connect-property)* - -Signature: - -```typescript -readonly connect: (signer: Signer) => GatedNFT; -``` - - - -### getApproved - -Returns the account approved for `tokenId` token. - -Requirements: - -- `tokenId` must exist. - -Signature: - -```typescript -readonly getApproved: (tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise; -``` - - - -### isApprovedForAll - -Returns if the `operator` is allowed to manage all of the assets of `owner`. - -Signature: - -```typescript -readonly isApprovedForAll: (owner: string, operator: string, overrides?: ReadTxOverrides) => Promise; -``` - - - -### mint - -Mint a token and transfers it to `to`. - -Requirements: - `to` should have the required tier - `to` should not exhausted his allowance - -Signature: - -```typescript -readonly mint: (to: string, overrides?: TxOverrides) => Promise; -``` - - - -### name - -Returns the token collection name. - -Signature: - -```typescript -readonly name: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### owner - -Returns the address of the current owner. - -Signature: - -```typescript -readonly owner: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### ownerOf - -Returns the owner of the `tokenId` token. - -Requirements: - -- `tokenId` must exist. - -Signature: - -```typescript -readonly ownerOf: (tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise; -``` - - - -### renounceOwnership - -Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. - -NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. - -Signature: - -```typescript -readonly renounceOwnership: (overrides?: TxOverrides) => Promise; -``` - - - -### royaltyInfo - -Returns how much royalty is owed and to whom, based on a sale price that may be denominated in any unit of exchange. The royalty amount is denominated and should be payed in that same unit of exchange. - -Signature: - -```typescript -readonly royaltyInfo: (salePrice: BigNumberish, overrides?: ReadTxOverrides) => Promise; -``` - - - -### safeTransferFrom - -Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. - -Requirements: - -- `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this token by either approve() or setApprovalForAll(). - If `to` refers to a smart contract, it must implement `IERC721Receiver-onERC721Received`, which is called upon a safe transfer. - -Signature: - -```typescript -readonly safeTransferFrom: (from: string, to: string, tokenId: BigNumberish, overrides?: TxOverrides) => Promise; -``` - - - -### safeTransferFromWithData - -Safely transfers `tokenId` token from `from` to `to`. - -Requirements: - -- `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either approve() or setApprovalForAll(). - If `to` refers to a smart contract, it must implement `IERC721Receiver-onERC721Received`, which is called upon a safe transfer. - -Signature: - -```typescript -readonly safeTransferFromWithData: (from: string, to: string, tokenId: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; -``` - - - -### setApprovalForAll - -Approve or remove `operator` as an operator for the caller. Operators can call `transferFrom()` or `safeTransferFrom()` for any token owned by the caller. - -Requirements: - -- The `operator` cannot be the caller. - -Signature: - -```typescript -readonly setApprovalForAll: (operator: string, approved: boolean, overrides?: TxOverrides) => Promise; -``` - - - -### supportsInterface - -Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165\#how-interfaces-are-identified\[EIP section\] to learn more about how these ids are created. - -Signature: - -```typescript -readonly supportsInterface: (interfaceId: BytesLike, overrides?: ReadTxOverrides) => Promise; -``` - - - -### symbol - -Returns the token collection symbol. - -Signature: - -```typescript -readonly symbol: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### tier - -Tier contract to compare statuses against on transfer. - -Signature: - -```typescript -readonly tier: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### tokenURI - -Returns the Uniform Resource Identifier (URI) for `tokenId` token. - -Signature: - -```typescript -readonly tokenURI: (tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise; -``` - - - -### totalSupply - -Returns the total amount of tokens stored by the contract. - -Signature: - -```typescript -readonly totalSupply: (overrides?: ReadTxOverrides) => Promise; -``` - - - -### transferFrom - -Transfers `tokenId` token from `from` to `to`. - -WARNING: Usage of this method is discouraged, use `safeTransferFrom()` whenever possible. - -Requirements: - -- `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either `approve()` or `setApprovalForAll()`. - -Signature: - -```typescript -readonly transferFrom: (from: string, to: string, tokenId: BigNumberish, overrides?: TxOverrides) => Promise; -``` - - - -### transferOwnership - -Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner. - -Signature: - -```typescript -readonly transferOwnership: (newOwner: string, overrides?: TxOverrides) => Promise; -``` - - - -### updateRoyaltyRecipient - -Update the royalty recipient. Requires the caller to be the current recipient - -Signature: - -```typescript -readonly updateRoyaltyRecipient: (royaltyRecipient: string, overrides?: TxOverrides) => Promise; -``` diff --git a/docs/classes/humanfriendlysource.md b/docs/classes/humanfriendlysource.md new file mode 100644 index 0000000..58d3025 --- /dev/null +++ b/docs/classes/humanfriendlysource.md @@ -0,0 +1,69 @@ + +# Class HumanFriendlySource + +The generator of friendly human readable source. + +Parse a State to a more human readable form, so feel free to use it and make more friendly anyone that want to read the script that is being used in the code. + +If you find an issue or you want to propose a better way to show a specific script or opcodes, please feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues + +Signature: + +```typescript +class HumanFriendlySource +``` + +## Static Methods + +| Method | Description | +| --- | --- | +| [get(\_state)](./humanfriendlysource.md#get-method-static-1) | | +| [prettify(\_text, n)](./humanfriendlysource.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source with an indented | + +## Static Method Details + + + +### get(\_state) + +Signature: + +```typescript +static get(_state: StateConfig): string; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| \_state | [StateConfig](../interfaces/stateconfig.md) | | + +Returns: + +`string` + + + +### prettify(\_text, n) + +Make more readable the output from the HumanFriendly Source with an indented + +Signature: + +```typescript +static prettify(_text: string, n?: number): string; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| \_text | `string` | The output from the HumanFriendlySource | +| n | `number` | The amount spaces based of each indent | + +Returns: + +`string` + +The pretty output + diff --git a/docs/classes/increasingprice.md b/docs/classes/increasingprice.md index 5e8bb43..e696671 100644 --- a/docs/classes/increasingprice.md +++ b/docs/classes/increasingprice.md @@ -30,10 +30,8 @@ const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTi | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./pricecurve.md#argumentsLength-property) | `BigNumberish` | *Inherited from [PriceCurve.argumentsLength](./pricecurve.md#argumentsLength-property)* | | [constants](./pricecurve.md#constants-property) | `BigNumberish[]` | *Inherited from [PriceCurve.constants](./pricecurve.md#constants-property)* | | [sources](./pricecurve.md#sources-property) | `BytesLike[]` | *Inherited from [PriceCurve.sources](./pricecurve.md#sources-property)* | -| [stackLength](./pricecurve.md#stackLength-property) | `BigNumberish` | *Inherited from [PriceCurve.stackLength](./pricecurve.md#stackLength-property)* | ## Methods @@ -41,7 +39,6 @@ const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTi | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase.

*Inherited from [PriceCurve.applyExtraTimeDiscount()](./pricecurve.md#applyExtraTimeDiscount-method-1)* | | [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | -| [applyWalletCap(mode, options)](./pricecurve.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet.

*Inherited from [PriceCurve.applyWalletCap()](./pricecurve.md#applyWalletCap-method-1)* | ## Static Property Details diff --git a/docs/classes/itier.md b/docs/classes/itierv2.md similarity index 68% rename from docs/classes/itier.md rename to docs/classes/itierv2.md index 69d4e11..da8a66d 100644 --- a/docs/classes/itier.md +++ b/docs/classes/itierv2.md @@ -1,18 +1,18 @@ -# Class ITier +# Class ITierV2 -Class to interact with ITier contracts +Class to interact with ITierV2 contracts -Generic class to interact with any ITier contract in chain with the basic methods and functions. +Generic class to interact with any ITierV2 contract in chain with the basic methods and functions. -`ITier` is a simple interface that contracts can implement to provide membership lists for other contracts. +`ITierV2` is a simple interface that contracts can implement to provide membership lists for other contracts. -This class can be used to interact with any contract that implement the ITier interface in their code, but does not know if the contract has implemented the code. E.g: if a contract does not implementent `setTier` as a BalanceTier Contract, the call will be reverted. +This class can be used to interact with any contract that implement the ITierV2 interface in their code, but does not know if the contract has implemented the code. Signature: ```typescript -class ITier extends TierContract +class ITierV2 extends TierContract ``` ## Static Properties @@ -29,10 +29,10 @@ class ITier extends TierContract | Property | Type | Description | | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [connect](./itier.md#connect-property) | `(signer: Signer) => ITier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./itierv2.md#connect-property) | `(signer: Signer) => ITierV2` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./tiercontract.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | Updates the tier of an account.

*Inherited from [TierContract.setTier](./tiercontract.md#setTier-property)* | +| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | +| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | ## Static Methods @@ -48,7 +48,7 @@ class ITier extends TierContract | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | ## Property Details @@ -63,5 +63,5 @@ Connect the current contract instance to a new ethers signer. Signature: ```typescript -readonly connect: (signer: Signer) => ITier; +readonly connect: (signer: Signer) => ITierV2; ``` diff --git a/docs/classes/linearemissions.md b/docs/classes/linearemissions.md index d602723..5960b07 100644 --- a/docs/classes/linearemissions.md +++ b/docs/classes/linearemissions.md @@ -13,23 +13,11 @@ class LinearEmissions | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./linearemissions.md#argumentsLength-property) | `BigNumberish` | | | [constants](./linearemissions.md#constants-property) | `BigNumberish[]` | | | [sources](./linearemissions.md#sources-property) | `BytesLike[]` | | -| [stackLength](./linearemissions.md#stackLength-property) | `BigNumberish` | | ## Property Details - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - ### constants @@ -49,13 +37,3 @@ constants: BigNumberish[]; ```typescript sources: BytesLike[]; ``` - - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` diff --git a/docs/classes/orderbook.md b/docs/classes/orderbook.md new file mode 100644 index 0000000..06643e5 --- /dev/null +++ b/docs/classes/orderbook.md @@ -0,0 +1,203 @@ + +# Class OrderBook + +A class for calling method on a OrderBook. + +This class provides an easy way to interact with the OrderBook contract. + +Signature: + +```typescript +class OrderBook extends RainContract +``` + +## Example + + +```typescript +import { OrderBook } from 'rain-sdk' + +const orderBook = new OrderBook(address, signer); + +const addOrderArg = { + inputToken: token1Address; + inputVaultId: vaultID_1; + outputToken: token2Address; + outputVaultId: vaultID_2; + tracking: tracking; + vmStateConfig: _stateConfig; +} + +const tx = await orderBook.addOrder(addOrderArg); + +``` + +## Static Properties + +| Property | Type | Description | +| --- | --- | --- | +| [get](./orderbook.md#get-property-static) | `(signer: Signer) => Promise` | Get the OrderBook instance

The function ask to the provider inside of the ethers signer what is the chain identifier to get the address in this chain. | +| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | +| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | +| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | +| [nameBookReference](./orderbook.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | +| [Opcodes](./orderbook.md#Opcodes-property-static) | [OrderBookOpcodes](../types/orderbookopcodes.md) | All the opcodes avaialbles in the OrderBook contract. | + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [addOrder](./orderbook.md#addOrder-property) | `(orderConfig_: OrderConfig, overrides?: TxOverrides) => Promise` | | +| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | +| [clear](./orderbook.md#clear-property) | `(a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: TxOverrides) => Promise` | | +| [connect](./orderbook.md#connect-property) | `(signer: Signer) => OrderBook` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [deposit](./orderbook.md#deposit-property) | `(config_: DepositConfig, overrides?: TxOverrides) => Promise` | | +| [fnPtrs](./orderbook.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [removeOrder](./orderbook.md#removeOrder-property) | `(order_: Order, overrides?: TxOverrides) => Promise` | | +| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | +| [storageOpcodesRange](./orderbook.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [withdraw](./orderbook.md#withdraw-property) | `(config_: WithdrawConfig, overrides?: TxOverrides) => Promise` | | + +## Static Methods + +| Method | Description | +| --- | --- | +| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | + +## Static Property Details + + + +### get + +Get the OrderBook instance + +The function ask to the provider inside of the ethers signer what is the chain identifier to get the address in this chain. + +Signature: + +```typescript +static get: (signer: Signer) => Promise; +``` + + + +### nameBookReference + +Name reference to find the address of the contract in the book address. + +*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* + +Should be implemented in each class to find the factory or main address in the book. + +Signature: + +```typescript +protected static readonly nameBookReference: string; +``` + + + +### Opcodes + +All the opcodes avaialbles in the OrderBook contract. + +This expose all the standard opcodes along with the specific opcodes of the OrderBook. + +Signature: + +```typescript +static Opcodes: OrderBookOpcodes; +``` + +## Property Details + + + +### addOrder + +Signature: + +```typescript +readonly addOrder: (orderConfig_: OrderConfig, overrides?: TxOverrides) => Promise; +``` + + + +### clear + +Signature: + +```typescript +readonly clear: (a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: TxOverrides) => Promise; +``` + + + +### connect + +Connect the current contract instance to a new ethers signer. + +*Overrides [RainContract.connect](./raincontract.md#connect-property)* + +Signature: + +```typescript +readonly connect: (signer: Signer) => OrderBook; +``` + + + +### deposit + +Signature: + +```typescript +readonly deposit: (config_: DepositConfig, overrides?: TxOverrides) => Promise; +``` + + + +### fnPtrs + +Signature: + +```typescript +readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### removeOrder + +Signature: + +```typescript +readonly removeOrder: (order_: Order, overrides?: TxOverrides) => Promise; +``` + + + +### storageOpcodesRange + +Signature: + +```typescript +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### withdraw + +Signature: + +```typescript +readonly withdraw: (config_: WithdrawConfig, overrides?: TxOverrides) => Promise; +``` diff --git a/docs/classes/pricecurve.md b/docs/classes/pricecurve.md index e07a7b3..6b60f09 100644 --- a/docs/classes/pricecurve.md +++ b/docs/classes/pricecurve.md @@ -3,7 +3,7 @@ - PriceCurve is an class that all the other sale types (sub-classes) will inherit from. -- the order of calling the methods of this class is important, meaning in order to get the desired result for the sale, mthods should be called in correct order, although it is worth saying that even if the order is not followed, the result will still be reliable if that is been done by intention. For example if we call 'applyExtraTime' method after the the 'applyTierDiscount' method, the extra time discount will be applied to the result of 'applyTierDiscount' and if before that, it will be vice versa. The general order for calling these methods is: 1.applyExtraTimeDiscount 2.applyTierDiscount 3.applyWalletCap +- the order of calling the methods of this class is important, meaning in order to get the desired result for the sale, mthods should be called in correct order, although it is worth saying that even if the order is not followed, the result will still be reliable if that is been done by intention. For example if we call 'applyExtraTime' method after the the 'applyTierDiscount' method, the extra time discount will be applied to the result of 'applyTierDiscount' and if before that, it will be vice versa. The general order for calling these methods is: 1.applyExtraTimeDiscount 2.applyTierDiscount Signature: @@ -15,10 +15,8 @@ class PriceCurve | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./pricecurve.md#argumentsLength-property) | `BigNumberish` | | | [constants](./pricecurve.md#constants-property) | `BigNumberish[]` | | | [sources](./pricecurve.md#sources-property) | `BytesLike[]` | | -| [stackLength](./pricecurve.md#stackLength-property) | `BigNumberish` | | ## Methods @@ -26,20 +24,9 @@ class PriceCurve | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase. | | [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold. | -| [applyWalletCap(mode, options)](./pricecurve.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet. | ## Property Details - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - ### constants @@ -60,16 +47,6 @@ constants: BigNumberish[]; sources: BytesLike[]; ``` - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` - ## Method Details @@ -83,7 +60,7 @@ Method to apply extra time discount to the sale. if sale's continues into extra Signature: ```typescript -applyExtraTimeDiscount(endTimestamp: number, extraTimeDiscountThreshold: number, extraTimeDiscount: number): this; +applyExtraTimeDiscount(endTimestamp: number, extraTimeDiscountThreshold: number, extraTimeDiscount: number): PriceCurve; ``` #### Parameters @@ -96,7 +73,7 @@ applyExtraTimeDiscount(endTimestamp: number, extraTimeDiscountThreshold: number, Returns: -`this` +`PriceCurve` this @@ -109,7 +86,7 @@ Method to apply tiers' discounts to the sale. Tiered addresses will get discount Signature: ```typescript -applyTierDiscount(tierAddress: string, tierDiscount: number[], tierActivation?: (number | string)[]): this; +applyTierDiscount(tierAddress: string, tierDiscount: number[], tierActivation?: (number | string)[]): PriceCurve; ``` #### Parameters @@ -122,39 +99,7 @@ applyTierDiscount(tierAddress: string, tierDiscount: number[], tierActivation?: Returns: -`this` - -this - - - -### applyWalletCap(mode, options) - -Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet. - -Signature: - -```typescript -applyWalletCap(mode: WalletCapMode, options?: { - minWalletCap?: number; - maxWalletCap?: number; - tierMultiplierMode?: boolean; - tierAddress?: string; - tierMultiplier?: number[]; - tierActivation?: (number | string)[]; - }): this; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| mode | [WalletCapMode](../enums/walletcapmode.md) | The mode that determines if there is max or min cap per wallet or both. | -| options |
{
    minWalletCap?: number;
    maxWalletCap?: number;
    tierMultiplierMode?: boolean;
    tierAddress?: string;
    tierMultiplier?: number[];
    tierActivation?: (number \| string)[];
}
| (optional) Additional arguments to configure the cap per wallet behaviour: - (param) minWalletCap - The number for min cap per wallet, addresses cannot buy less number of rTKNs than this amount. - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. - (param) tierMultiplierMode - Set true in order to apply Multiplier for max cap per wallet. - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. - (param) tierMultiplier - An array of each tiers' Multiplier value. - (param) tierActivation - An array of number of blocks for each tier that will be the required period of time for that tiered address to hold the tier's in order to be eligible for that tier's multiplier. | - -Returns: - -`this` +`PriceCurve` this diff --git a/docs/classes/rainjs.md b/docs/classes/rainjs.md index c56cf57..2b2f318 100644 --- a/docs/classes/rainjs.md +++ b/docs/classes/rainjs.md @@ -9,17 +9,13 @@ class RainJS ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [Opcodes](./rainjs.md#Opcodes-property-static) | `typeof import("../classes/vm").AllStandardOps` | All of RainVM standard opcodes, i.e. AllStandardOps | - ## Properties | Property | Type | Description | | --- | --- | --- | +| [\_CONTEXT\_](./rainjs.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | Object that contains the CONTEXT opcode functions (i.e. local opcodes) the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. | | [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes | +| [\_STORAGE\_](./rainjs.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes) | | [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract | | [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs. | | [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider. | @@ -31,22 +27,20 @@ class RainJS | --- | --- | | [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS. | -## Static Property Details +## Property Details - + -### Opcodes +### \_CONTEXT\_ -All of RainVM standard opcodes, i.e. AllStandardOps +Object that contains the CONTEXT opcode functions (i.e. local opcodes) the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. Signature: ```typescript -static Opcodes: typeof import("../classes/vm").AllStandardOps; +protected _CONTEXT_?: ApplyOpFn; ``` -## Property Details - ### \_OPCODE\_ @@ -59,6 +53,18 @@ key/value pair of opcodes and their functions for all standard opcodes protected readonly _OPCODE_: ApplyOpFn; ``` + + +### \_STORAGE\_ + +Object that contains the STORAGE opcode functions (i.e. local opcodes) + +Signature: + +```typescript +protected _STORAGE_?: ApplyOpFn; +``` + ### contract diff --git a/docs/classes/redeemableerc20.md b/docs/classes/redeemableerc20.md index d5cb899..2235abf 100644 --- a/docs/classes/redeemableerc20.md +++ b/docs/classes/redeemableerc20.md @@ -54,7 +54,6 @@ await RedeemableERC20.isChild(signer, maybeChildAddress); | [allowance](./redeemableerc20.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through `transferFrom()`. This is zero by default.

This value changes when `approve()` or `transferFrom()` are called. | | [approve](./redeemableerc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Sets `amount` as the allowance of `spender` over the caller's tokens. | | [balanceOf](./redeemableerc20.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens owned by `account`. | -| [blockNumberForPhase](./redeemableerc20.md#blockNumberForPhase-property) | `(phaseBlocks: BigNumberish[], phase: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Pure function to reduce an array of phase blocks and phase to a specific block number. `Phase.ZERO` will always return block `0`. Every other phase will map to a block number in `phaseBlocks`. | | [burn](./redeemableerc20.md#burn-property) | `(amount: BigNumberish, overrides?: TxOverrides) => Promise` | Destroys `amount` tokens from the caller, reducing the total supply. Emits a `Transfer` event with `to` set to the zero address.

Requirements: - Caller MUST have at least `amount` tokens. | | [burnFrom](./redeemableerc20.md#burnFrom-property) | `(account: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Destroys `amount` tokens from `account`, deducting from the caller's allowance.

Requirements: - The caller must have allowance for `accounts`'s tokens of at least `amount`. | | [connect](./redeemableerc20.md#connect-property) | `(signer: Signer) => RedeemableERC20` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | @@ -70,12 +69,13 @@ await RedeemableERC20.isChild(signer, maybeChildAddress); | [minimumTier](./redeemableerc20.md#minimumTier-property) | `(overrides?: ReadTxOverrides) => Promise` | The minimum status that a user must hold to receive transfers during `Phase.ZERO`. | | [name](./redeemableerc20.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | | [newTreasuryAsset](./redeemableerc20.md#newTreasuryAsset-property) | `(newTreasuryAsset: string, overrides?: TxOverrides) => Promise` | Anon can emit a `TreasuryAsset` event to notify token holders that an asset could be redeemed by burning `RedeemableERC20` tokens.

As this is callable by anon the events should be filtered by the indexer to those from trusted entities only. | -| [phaseAtBlockNumber](./redeemableerc20.md#phaseAtBlockNumber-property) | `(phaseBlocks: BigNumberish[], blockNumber: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Pure function to reduce an array of phase blocks and block number to a specific `Phase`.

The phase will be the highest attained even if several phases have the same block number.

If every phase block is after the block number then `0` is returned.

If every phase block is before the block number then `MAX_PHASE` is returned. | -| [phaseBlocks](./redeemableerc20.md#phaseBlocks-property) | `(index: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Get a phaseBlock | +| [phaseAtTime](./redeemableerc20.md#phaseAtTime-property) | `(phaseTimes_: BigNumberish[], timestamp_: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Pure function to reduce an array of phase times and block timestamp to a specific `Phase`. The phase will be the highest attained even if several phases have the same timestamp. If every phase block is after the timestamp then `0` is returned. If every phase block is before the timestamp then `MAX_PHASE` is returned. | +| [phaseTimes](./redeemableerc20.md#phaseTimes-property) | `(arg0: BigNumberish, overrides?: ReadTxOverrides) => Promise` | 8 phases each as 32 bits to fit a single 32 byte word. | | [redeem](./redeemableerc20.md#redeem-property) | `(treasuryAssets: string[], redeemAmount: BigNumberish, overrides?: TxOverrides) => Promise` | Burn tokens for a prorata share of the current treasury. The assets to be redeemed for must be specified as an array. This keeps the redeem functionality:

- Gas efficient as we avoid tracking assets in storage - Decentralised as any user can deposit any asset to be redeemed - Error resistant as any individual asset reverting can be avoided by redeeming againt sans the problematic asset.

It is also a super sharp edge if someone burns their tokens prematurely or with an incorrect asset list. Implementing contracts are strongly encouraged to implement additional safety rails to prevent high value mistakes.

Only "vanilla" erc20 token balances are supported as treasury assets. I.e. if the balance is changing such as due to a rebasing token or other mechanism then the WRONG token amounts will be redeemed. The redemption calculation is very simple and naive in that it takes the current balance of this contract of the assets being claimed via redemption to calculate the "prorata" entitlement. If the contract's balance of the claimed token is changing between redemptions (other than due to the redemption itself) then each redemption will send incorrect amounts. | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | | [symbol](./redeemableerc20.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the symbol of the token, usually a shorter version of the name. | | [tier](./redeemableerc20.md#tier-property) | `(overrides?: ReadTxOverrides) => Promise` | Tier contract that produces the report that `minimumTier` is checked against. | +| [timeForPhase](./redeemableerc20.md#timeForPhase-property) | `(phaseTimes_: BigNumberish[], phase_: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Pure function to reduce an array of phase times and phase to a specific timestamp. `Phase.ZERO` will always return block `0`. Every other phase will map to a time in `phaseTimes_`. | | [totalSupply](./redeemableerc20.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens in existence. | | [transfer](./redeemableerc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | | [transferFrom](./redeemableerc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | @@ -176,18 +176,6 @@ Returns the amount of tokens owned by `account`. readonly balanceOf: (account: string, overrides?: ReadTxOverrides) => Promise; ``` - - -### blockNumberForPhase - -Pure function to reduce an array of phase blocks and phase to a specific block number. `Phase.ZERO` will always return block `0`. Every other phase will map to a block number in `phaseBlocks`. - -Signature: - -```typescript -readonly blockNumberForPhase: (phaseBlocks: BigNumberish[], phase: BigNumberish, overrides?: ReadTxOverrides) => Promise; -``` - ### burn @@ -390,34 +378,28 @@ As this is callable by anon the events should be filtered by the indexer to thos readonly newTreasuryAsset: (newTreasuryAsset: string, overrides?: TxOverrides) => Promise; ``` - - -### phaseAtBlockNumber - -Pure function to reduce an array of phase blocks and block number to a specific `Phase`. + -The phase will be the highest attained even if several phases have the same block number. +### phaseAtTime -If every phase block is after the block number then `0` is returned. - -If every phase block is before the block number then `MAX_PHASE` is returned. +Pure function to reduce an array of phase times and block timestamp to a specific `Phase`. The phase will be the highest attained even if several phases have the same timestamp. If every phase block is after the timestamp then `0` is returned. If every phase block is before the timestamp then `MAX_PHASE` is returned. Signature: ```typescript -readonly phaseAtBlockNumber: (phaseBlocks: BigNumberish[], blockNumber: BigNumberish, overrides?: ReadTxOverrides) => Promise; +readonly phaseAtTime: (phaseTimes_: BigNumberish[], timestamp_: BigNumberish, overrides?: ReadTxOverrides) => Promise; ``` - + -### phaseBlocks +### phaseTimes -Get a phaseBlock +8 phases each as 32 bits to fit a single 32 byte word. Signature: ```typescript -readonly phaseBlocks: (index: BigNumberish, overrides?: ReadTxOverrides) => Promise; +readonly phaseTimes: (arg0: BigNumberish, overrides?: ReadTxOverrides) => Promise; ``` @@ -462,6 +444,18 @@ Tier contract that produces the report that `minimumTier` is checked against. readonly tier: (overrides?: ReadTxOverrides) => Promise; ``` + + +### timeForPhase + +Pure function to reduce an array of phase times and phase to a specific timestamp. `Phase.ZERO` will always return block `0`. Every other phase will map to a time in `phaseTimes_`. + +Signature: + +```typescript +readonly timeForPhase: (phaseTimes_: BigNumberish[], phase_: BigNumberish, overrides?: ReadTxOverrides) => Promise; +``` + ### totalSupply diff --git a/docs/classes/sale.md b/docs/classes/sale.md index 25732ef..82294de 100644 --- a/docs/classes/sale.md +++ b/docs/classes/sale.md @@ -38,7 +38,6 @@ await existingSale.buy(config_) | [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | | [isChild](./sale.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this SaleFactory on a specific network | | [nameBookReference](./sale.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | -| [Opcodes](./sale.md#Opcodes-property-static) | [SaleOpcodes](../types/saleopcodes.md) | All the standard and Sale Opcodes | ## Properties @@ -46,19 +45,20 @@ await existingSale.buy(config_) | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [buy](./sale.md#buy-property) | `(config: BuyConfig, overrides?: TxOverrides) => Promise` | Main entrypoint to the sale. Sells rTKN in exchange for reserve token. The price curve is eval'd to produce a reserve price quote. Each 1 unit of rTKN costs `price` reserve token where BOTH the rTKN units and price are treated as 18 decimal fixed point values. If the reserve token has more or less precision by its own conventions (e.g. "decimals" method on ERC20 tokens) then the price will need to scale accordingly. The receipt is \_logged\_ rather than returned as it cannot be used in same block for a refund anyway due to cooldowns. | -| [calculatePrice](./sale.md#calculatePrice-property) | `(units: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Calculates the current reserve price quoted for 1 unit of rTKN. Used internally to process `buy` | -| [canEnd](./sale.md#canEnd-property) | `(overrides?: ReadTxOverrides) => Promise` | Can the sale end? Evals `canEndStatePointer` to a boolean that determines whether the sale can end (move from active to success/fail). Buying will fail if the sale has ended. If the sale is out of rTKN stock it can ALWAYS end and in this case will NOT eval the "can end" script. The sale can ONLY end if it is currently in active status. | -| [canStart](./sale.md#canStart-property) | `(overrides?: ReadTxOverrides) => Promise` | Can the sale start? Evals `canStartStatePointer` to a boolean that determines whether the sale can start (move from pending to active). Buying from and ending the sale will both always fail if the sale never started. The sale can ONLY start if it is currently in pending status. | +| [calculateBuy](./sale.md#calculateBuy-property) | `(targetUnits: BigNumberish, overrides?: ReadTxOverrides) => Promise<[BigNumber, BigNumber]>` | Calculates the current reserve price quoted for 1 unit of rTKN. Used internally to process `buy` | +| [canLive](./sale.md#canLive-property) | `(overrides?: ReadTxOverrides) => Promise` | Can the sale live? Evals the "can live" script. If a non zero value is returned then the sale can move from pending to active, or remain active. If a zero value is returned the sale can remain pending or move from active to a finalised status. An out of stock (0 remaining units) WILL ALWAYS return `false` without evaluating the script. | | [claimFees](./sale.md#claimFees-property) | `(recipient: string, overrides?: TxOverrides) => Promise` | After a sale ends in success all fees collected for a recipient can be cleared. If the raise is active or fails then fees cannot be claimed as they are set aside in case of refund. A failed raise implies that all buyers should immediately refund and zero fees claimed. | | [connect](./sale.md#connect-property) | `(signer: Signer) => Sale` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [end](./sale.md#end-property) | `(overrides?: TxOverrides) => Promise` | End the sale (move from active to success or fail). - `canEnd` MUST return true. | +| [end](./sale.md#end-property) | `(overrides?: TxOverrides) => Promise` | End the sale (move from active to success or fail). This is also done automatically inline with each `buy` call so is optional for anon to call outside of a purchase. - `canLive` MUST return true and sale status must be either `Active`. | +| [fnPtrs](./sale.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [getRedeemable](./sale.md#getRedeemable-property) | `(signer?: Signer) => Promise` | Obtain the instance redeemable token from this sale. | | [getReserve](./sale.md#getReserve-property) | `(signer?: Signer) => Promise` | Obtain the instance of the reserve from this sale as a generic ERC20 Token | | [refund](./sale.md#refund-property) | `(receipt: Receipt, overrides?: TxOverrides) => Promise` | Rollback a buy given its receipt. Ignoring gas (which cannot be refunded) the refund process rolls back all state changes caused by a buy, other than the receipt id increment. Refunds are limited by the global cooldown to mitigate rapid buy/refund cycling that could cause volatile price curves or other unwanted side effects for other sale participants. Cooldowns are bypassed if the sale ends and is a failure. | | [reserve](./sale.md#reserve-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the address of the token that sale prices are denominated in. MUST NOT change during the lifecycle of the sale contract. | | [saleStatus](./sale.md#saleStatus-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the current `SaleStatus` of the sale. Represents a linear progression of the sale through its major lifecycle events. | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [start](./sale.md#start-property) | `(overrides?: TxOverrides) => Promise` | Start the sale (move from pending to active). - `canStart` MUST return true. | +| [start](./sale.md#start-property) | `(overrides?: TxOverrides) => Promise` | Start the sale (move from pending to active). This is also done automatically inline with each `buy` call so is optional for anon to call outside of a purchase. - `canLive` MUST return true and sale status must be `Pending`. | +| [storageOpcodesRange](./sale.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for sale's storage opcodes | | [timeout](./sale.md#timeout-property) | `(overrides?: TxOverrides) => Promise` | Timeout the sale (move from pending or active to fail). The ONLY condition for a timeout is that the `saleTimeout` block set during initialize is in the past. This means that regardless of what happens re: starting, ending, buying, etc. if the sale does NOT manage to unambiguously end by the timeout block then it can timeout to a fail state. This means that any downstream escrows or similar can always expect that eventually they will see a pass/fail state and so are safe to lock funds while a Sale is active. | | [token](./sale.md#token-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the address of the token being sold in the sale. MUST NOT change during the lifecycle of the sale contract. | @@ -118,18 +118,6 @@ Should be implemented in each class to find the factory or main address in the b protected static readonly nameBookReference: string; ``` - - -### Opcodes - -All the standard and Sale Opcodes - -Signature: - -```typescript -static Opcodes: SaleOpcodes; -``` - ## Property Details @@ -144,40 +132,28 @@ Main entrypoint to the sale. Sells rTKN in exchange for reserve token. The price readonly buy: (config: BuyConfig, overrides?: TxOverrides) => Promise; ``` - + -### calculatePrice +### calculateBuy Calculates the current reserve price quoted for 1 unit of rTKN. Used internally to process `buy` Signature: ```typescript -readonly calculatePrice: (units: BigNumberish, overrides?: ReadTxOverrides) => Promise; -``` - - - -### canEnd - -Can the sale end? Evals `canEndStatePointer` to a boolean that determines whether the sale can end (move from active to success/fail). Buying will fail if the sale has ended. If the sale is out of rTKN stock it can ALWAYS end and in this case will NOT eval the "can end" script. The sale can ONLY end if it is currently in active status. - -Signature: - -```typescript -readonly canEnd: (overrides?: ReadTxOverrides) => Promise; +readonly calculateBuy: (targetUnits: BigNumberish, overrides?: ReadTxOverrides) => Promise<[BigNumber, BigNumber]>; ``` - + -### canStart +### canLive -Can the sale start? Evals `canStartStatePointer` to a boolean that determines whether the sale can start (move from pending to active). Buying from and ending the sale will both always fail if the sale never started. The sale can ONLY start if it is currently in pending status. +Can the sale live? Evals the "can live" script. If a non zero value is returned then the sale can move from pending to active, or remain active. If a zero value is returned the sale can remain pending or move from active to a finalised status. An out of stock (0 remaining units) WILL ALWAYS return `false` without evaluating the script. Signature: ```typescript -readonly canStart: (overrides?: ReadTxOverrides) => Promise; +readonly canLive: (overrides?: ReadTxOverrides) => Promise; ``` @@ -210,7 +186,7 @@ readonly connect: (signer: Signer) => Sale; ### end -End the sale (move from active to success or fail). - `canEnd` MUST return true. +End the sale (move from active to success or fail). This is also done automatically inline with each `buy` call so is optional for anon to call outside of a purchase. - `canLive` MUST return true and sale status must be either `Active`. Signature: @@ -218,6 +194,18 @@ End the sale (move from active to success or fail). - `canEnd` MUST return true. readonly end: (overrides?: TxOverrides) => Promise; ``` + + +### fnPtrs + +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; +``` + ### getRedeemable @@ -282,7 +270,7 @@ readonly saleStatus: (overrides?: ReadTxOverrides) => Promise; ### start -Start the sale (move from pending to active). - `canStart` MUST return true. +Start the sale (move from pending to active). This is also done automatically inline with each `buy` call so is optional for anon to call outside of a purchase. - `canLive` MUST return true and sale status must be `Pending`. Signature: @@ -290,6 +278,18 @@ Start the sale (move from pending to active). - `canStart` MUST return true. readonly start: (overrides?: TxOverrides) => Promise; ``` + + +### storageOpcodesRange + +Returns the pointer and length for sale's storage opcodes + +Signature: + +```typescript +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; +``` + ### timeout diff --git a/docs/classes/saledurationinblocks.md b/docs/classes/saledurationinblocks.md index ce1d475..09dcb3a 100644 --- a/docs/classes/saledurationinblocks.md +++ b/docs/classes/saledurationinblocks.md @@ -1,9 +1,9 @@ # Class SaleDurationInBlocks -- A class used for creating a VM state for Sale's canEnd/StartStateConfig based on block number. +- A class used for creating a VM state for Sale's canLive StateConfig based on block number. -- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. The general methods calling order in this class is: 1.applyExtarTime 2.applyOwner +- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. The general methods calling order in this class is: 1.applyExtarTime or afterMinimumRaise (one of which only) 2.applyOwner Signature: @@ -15,8 +15,8 @@ class SaleDurationInBlocks ```typescript -//For generating a canStart/End StateConfig for the sale pass in the required arguments to the constructor. -const saleType = new SaleDuration(blockNumber) +//For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. +const saleDuration = new SaleDuration(startBlockNumber, endBlockNumber) ``` @@ -24,76 +24,93 @@ const saleType = new SaleDuration(blockNumber) | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./saledurationinblocks.md#argumentsLength-property) | `BigNumberish` | | -| [blockNumber](./saledurationinblocks.md#blockNumber-property) | `number` | | | [constants](./saledurationinblocks.md#constants-property) | `BigNumberish[]` | | +| [endBlockNumber](./saledurationinblocks.md#endBlockNumber-property) | `number` | | | [sources](./saledurationinblocks.md#sources-property) | `BytesLike[]` | | -| [stackLength](./saledurationinblocks.md#stackLength-property) | `BigNumberish` | | +| [startBlockNumber](./saledurationinblocks.md#startBlockNumber-property) | `number` | | ## Methods | Method | Description | | --- | --- | -| [applyExtraTime(extraTimeBlocks, extraTimeAmount)](./saledurationinblocks.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTimeBlocks' more blocks). | -| [applyOwnership(ownerAddress)](./saledurationinblocks.md#applyOwnership-method-1) | Method to apply owner to the sale's canStart and/or canEnd function. Sale's canStart/End functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canStart/EndStateConfig, it can configured in a way that only a certain address can actually trigger the sale's start/end functions. | +| [afterMinimumRaise(minimumRaise, erc20decimals)](./saledurationinblocks.md#afterMinimumRaise-method-1) | A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. | +| [applyExtraTime(extraTimeBlocks, extraTimeAmount, erc20decimals)](./saledurationinblocks.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTimeBlocks' more blocks). | +| [applyOwnership(ownerAddress)](./saledurationinblocks.md#applyOwnership-method-1) | Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. | ## Property Details - + -### argumentsLength +### constants Signature: ```typescript -argumentsLength: BigNumberish; +constants: BigNumberish[]; ``` - + -### blockNumber +### endBlockNumber Signature: ```typescript -readonly blockNumber: number; +readonly endBlockNumber: number; ``` - + -### constants +### sources Signature: ```typescript -constants: BigNumberish[]; +sources: BytesLike[]; ``` - + -### sources +### startBlockNumber Signature: ```typescript -sources: BytesLike[]; +readonly startBlockNumber: number; ``` - +## Method Details + + + +### afterMinimumRaise(minimumRaise, erc20decimals) -### stackLength +A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. + +please note that this method should not be used with applyExtraTime as they are opossit of eachother and also the order of using this method along with other methods of this class is important Signature: ```typescript -stackLength: BigNumberish; +afterMinimumRaise(minimumRaise: number, erc20decimals?: number): SaleDurationInBlocks; ``` -## Method Details +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| minimumRaise | `number` | the minimumRaise parameter of the raise which is passed at the time of sale's deployment as part of the SaleConfig | +| erc20decimals | `number` | | + +Returns: + +`SaleDurationInBlocks` + +this -### applyExtraTime(extraTimeBlocks, extraTimeAmount) +### applyExtraTime(extraTimeBlocks, extraTimeAmount, erc20decimals) Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTimeBlocks' more blocks). @@ -102,7 +119,7 @@ Method to apply extra time to the sale duration. if the extra time criteria whic Signature: ```typescript -applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number): this; +applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, erc20decimals?: number): SaleDurationInBlocks; ``` #### Parameters @@ -111,10 +128,11 @@ applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number): this; | --- | --- | --- | | extraTimeBlocks | `number` | The amount of time (in blocks) that sale can continue for, if the extra time criteria has been met. | | extraTimeAmount | `number` | The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. | +| erc20decimals | `number` | | Returns: -`this` +`SaleDurationInBlocks` this @@ -122,14 +140,14 @@ this ### applyOwnership(ownerAddress) -Method to apply owner to the sale's canStart and/or canEnd function. Sale's canStart/End functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canStart/EndStateConfig, it can configured in a way that only a certain address can actually trigger the sale's start/end functions. +Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. - applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get the desired result. Signature: ```typescript -applyOwnership(ownerAddress: string): this; +applyOwnership(ownerAddress: string): SaleDurationInBlocks; ``` #### Parameters @@ -140,7 +158,7 @@ applyOwnership(ownerAddress: string): this; Returns: -`this` +`SaleDurationInBlocks` this diff --git a/docs/classes/saledurationintimestamp.md b/docs/classes/saledurationintimestamp.md index 659ffeb..31815b6 100644 --- a/docs/classes/saledurationintimestamp.md +++ b/docs/classes/saledurationintimestamp.md @@ -1,9 +1,9 @@ # Class SaleDurationInTimestamp -- A class used for creating a VM state for Sale's canEnd/StartStateConfig based on timestamp. +- A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. -- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. The general methods calling order in this class is: 1.applyExtarTime 2.applyOwner +- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. The general methods calling order in this class is: 1.applyExtarTime or afterMinimumRaise (one of which only) 2.applyOwner Signature: @@ -15,8 +15,8 @@ class SaleDurationInTimestamp ```typescript -//For generating a canStart/End StateConfig for the sale pass in the required arguments to the constructor. -const saleType = new SaleDuration(timestamp) +//For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. +const saleDuration = new SaleDuration(startTimestamp, endTimestamp) ``` @@ -24,39 +24,39 @@ const saleType = new SaleDuration(timestamp) | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./saledurationintimestamp.md#argumentsLength-property) | `BigNumberish` | | | [constants](./saledurationintimestamp.md#constants-property) | `BigNumberish[]` | | +| [endTimestamp](./saledurationintimestamp.md#endTimestamp-property) | `number` | | | [sources](./saledurationintimestamp.md#sources-property) | `BytesLike[]` | | -| [stackLength](./saledurationintimestamp.md#stackLength-property) | `BigNumberish` | | -| [timestamp](./saledurationintimestamp.md#timestamp-property) | `number` | | +| [startTimestamp](./saledurationintimestamp.md#startTimestamp-property) | `number` | | ## Methods | Method | Description | | --- | --- | -| [applyExtraTime(extraTime, extraTimeAmount)](./saledurationintimestamp.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). | -| [applyOwnership(ownerAddress)](./saledurationintimestamp.md#applyOwnership-method-1) | Method to apply owner to the sale's canStart and/or canEnd function. Sale's canStart/End functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canStart/EndStateConfig, it can configured in a way that only a certain address can actually trigger the sale's start/end functions. | +| [afterMinimumRaise(minimumRaise, erc20decimals)](./saledurationintimestamp.md#afterMinimumRaise-method-1) | A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. | +| [applyExtraTime(extraTime, extraTimeAmount, erc20decimals)](./saledurationintimestamp.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). | +| [applyOwnership(ownerAddress)](./saledurationintimestamp.md#applyOwnership-method-1) | Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. | ## Property Details - + -### argumentsLength +### constants Signature: ```typescript -argumentsLength: BigNumberish; +constants: BigNumberish[]; ``` - + -### constants +### endTimestamp Signature: ```typescript -constants: BigNumberish[]; +readonly endTimestamp: number; ``` @@ -69,40 +69,57 @@ constants: BigNumberish[]; sources: BytesLike[]; ``` - + -### stackLength +### startTimestamp Signature: ```typescript -stackLength: BigNumberish; +readonly startTimestamp: number; ``` - +## Method Details + + + +### afterMinimumRaise(minimumRaise, erc20decimals) + +A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. -### timestamp +please note that this method should not be used with applyExtraTime as they are opossit of eachother and also the order of using this method along with other methods of this class is important Signature: ```typescript -readonly timestamp: number; +afterMinimumRaise(minimumRaise: number, erc20decimals?: number): SaleDurationInTimestamp; ``` -## Method Details +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| minimumRaise | `number` | the minimumRaise parameter of the raise which is passed at the time of sale's deployment as part of the SaleConfig | +| erc20decimals | `number` | | + +Returns: + +`SaleDurationInTimestamp` + +this -### applyExtraTime(extraTime, extraTimeAmount) +### applyExtraTime(extraTime, extraTimeAmount, erc20decimals) Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). -- This method is designed for sale's canEndStateConfig and should 'not' be used for canStart +- If the sale has extra time discount, it is important that this method to be applied for canEndStateConfig of the sale. Signature: ```typescript -applyExtraTime(extraTime: number, extraTimeAmount: number): this; +applyExtraTime(extraTime: number, extraTimeAmount: number, erc20decimals?: number): SaleDurationInTimestamp; ``` #### Parameters @@ -111,10 +128,11 @@ applyExtraTime(extraTime: number, extraTimeAmount: number): this; | --- | --- | --- | | extraTime | `number` | The amount of time (in minutes) that sale can continue for, if the extra time criteria has been met. | | extraTimeAmount | `number` | The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. | +| erc20decimals | `number` | | Returns: -`this` +`SaleDurationInTimestamp` this @@ -122,14 +140,14 @@ this ### applyOwnership(ownerAddress) -Method to apply owner to the sale's canStart and/or canEnd function. Sale's canStart/End functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canStart/EndStateConfig, it can configured in a way that only a certain address can actually trigger the sale's start/end functions. +Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. - applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get the desired result. Signature: ```typescript -applyOwnership(ownerAddress: string): this; +applyOwnership(ownerAddress: string): SaleDurationInTimestamp; ``` #### Parameters @@ -140,7 +158,7 @@ applyOwnership(ownerAddress: string): this; Returns: -`this` +`SaleDurationInTimestamp` this diff --git a/docs/classes/salejs.md b/docs/classes/salejs.md index eae1f9d..dde7f06 100644 --- a/docs/classes/salejs.md +++ b/docs/classes/salejs.md @@ -9,17 +9,13 @@ class SaleJS extends RainJS ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [Opcodes](./salejs.md#Opcodes-property-static) | `import("../contracts/sale").SaleOpcodes` | Local Sale's opcodes + AllstandardOps

*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* | - ## Properties | Property | Type | Description | | --- | --- | --- | -| [\_OPCODE\_](./salejs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes + Sale local opcodes

*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | +| [\_CONTEXT\_](./salejs.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of CONTEXT opcodes of the sale JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime.

*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* | +| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | +| [\_STORAGE\_](./salejs.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of STORAGE opcodes of the sale JSVM

*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* | | [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract

*Inherited from [RainJS.contract](./rainjs.md#contract-property)* | | [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJS.lastState](./rainjs.md#lastState-property)* | | [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider.

*Inherited from [RainJS.provider](./rainjs.md#provider-property)* | @@ -31,34 +27,32 @@ class SaleJS extends RainJS | --- | --- | | [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJS.run()](./rainjs.md#run-method-1)* | -## Static Property Details +## Property Details - + -### Opcodes +### \_CONTEXT\_ -Local Sale's opcodes + AllstandardOps +key/value pair of CONTEXT opcodes of the sale JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. -*Overrides [RainJS.Opcodes](./rainjs.md#Opcodes-property-static)* +*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* Signature: ```typescript -static Opcodes: import("../contracts/sale").SaleOpcodes; +protected _CONTEXT_: ApplyOpFn; ``` -## Property Details - - + -### \_OPCODE\_ +### \_STORAGE\_ -key/value pair of opcodes and their functions for all standard opcodes + Sale local opcodes +key/value pair of STORAGE opcodes of the sale JSVM -*Overrides [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* +*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* Signature: ```typescript -protected readonly _OPCODE_: ApplyOpFn; +protected _STORAGE_: ApplyOpFn; ``` diff --git a/docs/classes/salescriptfrom.md b/docs/classes/salescriptfrom.md new file mode 100644 index 0000000..ad10642 --- /dev/null +++ b/docs/classes/salescriptfrom.md @@ -0,0 +1,82 @@ + +# Class SaleScriptFrom + +Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) + +Signature: + +```typescript +class SaleScriptFrom +``` + +## Example + + +```typescript +//For generating a sale compatible StateConfig for the sale pass in 2 individual scripts +(can use PriceCurves and CanLive classes). +const saleConfig = new SaleConfigBuilder(new FixedPrice, new CanLiveInTimestamp) + +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [buyCapScript](./salescriptfrom.md#buyCapScript-property) | `BuyCap \| StateConfig` | | +| [calculateBuyScript](./salescriptfrom.md#calculateBuyScript-property) | `PriceCurve \| StateConfig` | | +| [canLiveScript](./salescriptfrom.md#canLiveScript-property) | `SaleDurationInTimestamp \| SaleDurationInBlocks \| StateConfig` | | +| [constants](./salescriptfrom.md#constants-property) | `BigNumberish[]` | | +| [sources](./salescriptfrom.md#sources-property) | `BytesLike[]` | | + +## Property Details + + + +### buyCapScript + +Signature: + +```typescript +readonly buyCapScript: BuyCap | StateConfig; +``` + + + +### calculateBuyScript + +Signature: + +```typescript +readonly calculateBuyScript: PriceCurve | StateConfig; +``` + + + +### canLiveScript + +Signature: + +```typescript +readonly canLiveScript: SaleDurationInTimestamp | SaleDurationInBlocks | StateConfig; +``` + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` diff --git a/docs/classes/sequentialemissions.md b/docs/classes/sequentialemissions.md index 2d7c80b..1d023b1 100644 --- a/docs/classes/sequentialemissions.md +++ b/docs/classes/sequentialemissions.md @@ -13,23 +13,11 @@ class SequentialEmissions | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./sequentialemissions.md#argumentsLength-property) | `BigNumberish` | | | [constants](./sequentialemissions.md#constants-property) | `BigNumberish[]` | | | [sources](./sequentialemissions.md#sources-property) | `BytesLike[]` | | -| [stackLength](./sequentialemissions.md#stackLength-property) | `BigNumberish` | | ## Property Details - - -### argumentsLength - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - ### constants @@ -49,13 +37,3 @@ constants: BigNumberish[]; ```typescript sources: BytesLike[]; ``` - - - -### stackLength - -Signature: - -```typescript -stackLength: BigNumberish; -``` diff --git a/docs/classes/stake.md b/docs/classes/stake.md new file mode 100644 index 0000000..61ba646 --- /dev/null +++ b/docs/classes/stake.md @@ -0,0 +1,275 @@ + +# Class Stake + +A class for calling methods on a Stake. + +This class provides an easy way to interact with Stake contracts. + +Signature: + +```typescript +class Stake extends TierContract +``` + +## Example + + +```typescript +import { Stake } from 'rain-sdk'; + +// To get a instance of an already deployed stake contract, pass the contract address and an ethers.js Signer +const stake = new Stake(address, signer); + +// Check if an address is child from the factory deployed in the current chain. +await Stake.isChild(signer, maybeChildAddress); + +``` + +## Static Properties + +| Property | Type | Description | +| --- | --- | --- | +| [deploy](./stake.md#deploy-property-static) | `(signer: Signer, args: StakeDeployArgs, overrides?: TxOverrides) => Promise` | Deploys a new Stake. | +| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | +| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | +| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | +| [isChild](./stake.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this StakeFactory on a specific network | +| [nameBookReference](./stake.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | +| [allowance](./stake.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | | +| [approve](./stake.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [balanceOf](./stake.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | | +| [connect](./stake.md#connect-property) | `(signer: Signer) => Stake` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [decimals](./stake.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [decreaseAllowance](./stake.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [deposit](./stake.md#deposit-property) | `(amount_: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [increaseAllowance](./stake.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | +| [name](./stake.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | +| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | +| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | +| [supportsInterface](./stake.md#supportsInterface-property) | `(interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise` | | +| [symbol](./stake.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [totalSupply](./stake.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [transfer](./stake.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [transferFrom](./stake.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [withdraw](./stake.md#withdraw-property) | `(amount_: BigNumberish, overrides?: TxOverrides) => Promise` | | + +## Static Methods + +| Method | Description | +| --- | --- | +| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | +| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | +| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | +| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | + +## Static Property Details + + + +### deploy + +Deploys a new Stake. + +Signature: + +```typescript +static deploy: (signer: Signer, args: StakeDeployArgs, overrides?: TxOverrides) => Promise; +``` + + + +### isChild + +Checks if address is registered as a child contract of this StakeFactory on a specific network + +Signature: + +```typescript +static isChild: (signer: Signer, maybeChild: string) => Promise; +``` + + + +### nameBookReference + +Name reference to find the address of the contract in the book address. + +*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* + +Should be implemented in each class to find the factory or main address in the book. + +Signature: + +```typescript +protected static readonly nameBookReference: string; +``` + +## Property Details + + + +### allowance + +Signature: + +```typescript +readonly allowance: (owner: string, spender: string, overrides?: ReadTxOverrides) => Promise; +``` + + + +### approve + +Signature: + +```typescript +readonly approve: (spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### balanceOf + +Signature: + +```typescript +readonly balanceOf: (account: string, overrides?: ReadTxOverrides) => Promise; +``` + + + +### connect + +Connect the current contract instance to a new ethers signer. + +*Overrides [RainContract.connect](./raincontract.md#connect-property)* + +Signature: + +```typescript +readonly connect: (signer: Signer) => Stake; +``` + + + +### decimals + +Signature: + +```typescript +readonly decimals: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### decreaseAllowance + +Signature: + +```typescript +readonly decreaseAllowance: (spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### deposit + +Signature: + +```typescript +readonly deposit: (amount_: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### increaseAllowance + +Signature: + +```typescript +readonly increaseAllowance: (spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### name + +Signature: + +```typescript +readonly name: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### supportsInterface + +Signature: + +```typescript +readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; +``` + + + +### symbol + +Signature: + +```typescript +readonly symbol: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### totalSupply + +Signature: + +```typescript +readonly totalSupply: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### transfer + +Signature: + +```typescript +readonly transfer: (to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### transferFrom + +Signature: + +```typescript +readonly transferFrom: (from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +``` + + + +### withdraw + +Signature: + +```typescript +readonly withdraw: (amount_: BigNumberish, overrides?: TxOverrides) => Promise; +``` diff --git a/docs/classes/tiercontract.md b/docs/classes/tiercontract.md index e1d1444..35d6118 100644 --- a/docs/classes/tiercontract.md +++ b/docs/classes/tiercontract.md @@ -25,8 +25,8 @@ abstract class TierContract extends FactoryContract | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [connect](./raincontract.md#connect-property) | `(signer: Signer) => RainContract` | Connect the current contract instance to a new ethers signer.

*Inherited from [RainContract.connect](./raincontract.md#connect-property)* | | [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts. | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`. | -| [setTier](./tiercontract.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | Updates the tier of an account. | +| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`. | +| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | ## Static Methods @@ -42,7 +42,7 @@ abstract class TierContract extends FactoryContract | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. | +| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. | ## Property Details @@ -69,35 +69,31 @@ There are 9 possible tier, starting with tier 0 for `0` offset or "never held an Signature: ```typescript -readonly report: (account: string, overrides?: ReadTxOverrides) => Promise; +readonly report: (account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; ``` - + -### setTier - -Updates the tier of an account. - -Users can set their own tier by calling `setTier` if is this option available on the Tier contract. ITier like BalanceTier does not allow this. +### reportTimeForTier Signature: ```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; +readonly reportTimeForTier: (account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; ``` ## Method Details -### currentTier(account, block) +### currentTier(account, timestamp) Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. Signature: ```typescript -currentTier(account: string, block?: number): Promise; +currentTier(account: string, timestamp?: number): Promise; ``` #### Parameters @@ -105,7 +101,7 @@ currentTier(account: string, block?: number): Promise; | Parameter | Type | Description | | --- | --- | --- | | account | `string` | address to check the current tier | -| block | `number` | (optional) check the level tier of an account with respect to a specific block | +| timestamp | `number` | (optional) check the level tier of an account with respect to a specific timestamp | Returns: diff --git a/docs/classes/verify.md b/docs/classes/verify.md index b2cc000..1e57da4 100644 --- a/docs/classes/verify.md +++ b/docs/classes/verify.md @@ -70,7 +70,7 @@ const existingVerify = new Verify(address, signer) | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | | [state](./verify.md#state-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Typed accessor into states. | | [status](./verify.md#status-property) | `typeof VerifyStatus` | Summary statuses derived from a `State` by comparing the `Since` times against a specific block number. | -| [statusAtBlock](./verify.md#statusAtBlock-property) | `(state: VerifyState, blockNumber: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Derives a single `Status` from a `State` and a reference block number. | +| [statusAtTime](./verify.md#statusAtTime-property) | `(state_: VerifyState, timestamp_: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Derives a single `Status` from a `State` and a reference timestamp. | | [supportsInterface](./verify.md#supportsInterface-property) | `(interfaceId: BytesLike, overrides?: ReadTxOverrides) => Promise` | Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165\#how-interfaces-are-identified\[EIP section\] to learn more about how these ids are created. | ## Static Methods @@ -437,16 +437,16 @@ Summary statuses derived from a `State` by comparing the `Since` times against a status: typeof VerifyStatus; ``` - + -### statusAtBlock +### statusAtTime -Derives a single `Status` from a `State` and a reference block number. +Derives a single `Status` from a `State` and a reference timestamp. Signature: ```typescript -readonly statusAtBlock: (state: VerifyState, blockNumber: BigNumberish, overrides?: ReadTxOverrides) => Promise; +readonly statusAtTime: (state_: VerifyState, timestamp_: BigNumberish, overrides?: ReadTxOverrides) => Promise; ``` diff --git a/docs/classes/verifytier.md b/docs/classes/verifytier.md index 6e14fd7..7ab6b0b 100644 --- a/docs/classes/verifytier.md +++ b/docs/classes/verifytier.md @@ -47,8 +47,9 @@ const report = await existingTier.report(address); | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [connect](./verifytier.md#connect-property) | `(signer: Signer) => VerifyTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [setTier](./verifytier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides \| undefined) => Promise` | It is NOT implemented in VerifyTiers. Always will throw an error

*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* | +| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | +| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | +| [setTier](./verifytier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | It is NOT implemented in VerifyTiers. Always will throw an error | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | ## Static Methods @@ -64,7 +65,7 @@ const report = await existingTier.report(address); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, block)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | ## Static Property Details @@ -130,12 +131,8 @@ readonly connect: (signer: Signer) => VerifyTier; It is NOT implemented in VerifyTiers. Always will throw an error -*Overrides [TierContract.setTier](./tiercontract.md#setTier-property)* - -Users can set their own tier by calling `setTier` if is this option available on the Tier contract. ITier like BalanceTier does not allow this. - Signature: ```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides | undefined) => Promise; +readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; ``` diff --git a/docs/classes/vlbp.md b/docs/classes/vlbp.md index 51e0b5e..03dabef 100644 --- a/docs/classes/vlbp.md +++ b/docs/classes/vlbp.md @@ -30,10 +30,8 @@ const saleType = new vLBP(startPrice, startTimestamp, endTimestamp, minimumRaise | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./pricecurve.md#argumentsLength-property) | `BigNumberish` | *Inherited from [PriceCurve.argumentsLength](./pricecurve.md#argumentsLength-property)* | | [constants](./pricecurve.md#constants-property) | `BigNumberish[]` | *Inherited from [PriceCurve.constants](./pricecurve.md#constants-property)* | | [sources](./pricecurve.md#sources-property) | `BytesLike[]` | *Inherited from [PriceCurve.sources](./pricecurve.md#sources-property)* | -| [stackLength](./pricecurve.md#stackLength-property) | `BigNumberish` | *Inherited from [PriceCurve.stackLength](./pricecurve.md#stackLength-property)* | ## Methods @@ -41,7 +39,6 @@ const saleType = new vLBP(startPrice, startTimestamp, endTimestamp, minimumRaise | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase.

*Inherited from [PriceCurve.applyExtraTimeDiscount()](./pricecurve.md#applyExtraTimeDiscount-method-1)* | | [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | -| [applyWalletCap(mode, options)](./pricecurve.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet.

*Inherited from [PriceCurve.applyWalletCap()](./pricecurve.md#applyWalletCap-method-1)* | ## Static Property Details diff --git a/docs/classes/vm.md b/docs/classes/vm.md index c27fffd..2813b79 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -19,12 +19,13 @@ class VM | Method | Description | | --- | --- | +| [combiner(config1, config2, options)](./vm.md#combiner-method-static-1) | Combines 2 individual VM scripts | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | -| [makeOwner(config, ownerAddress, options)](./vm.md#makeOwner-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | -| [tierBasedDiscounter(config, tierAddress, tierDiscount, options)](./vm.md#tierBasedDiscounter-method-static-1) | Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. | -| [tierBasedMultiplier(config, tierAddress, tierMultiplier, options)](./vm.md#tierBasedMultiplier-method-static-1) | Multiply the result of a VM script based on the holding tier of a tier contract. | -| [timeSliceScripts(configs, times, inBlockNumber)](./vm.md#timeSliceScripts-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | -| [vmCombiner(config1, config2, options)](./vm.md#vmCombiner-method-static-1) | Combines 2 individual VM scripts | +| [pair(amountConfig, priceConfig)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | +| [toOwnerMaker(config, ownerAddress, options)](./vm.md#toOwnerMaker-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | +| [toTierDiscounter(config, tierAddress, tierDiscount, options)](./vm.md#toTierDiscounter-method-static-1) | Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. | +| [toTierMultiplier(config, tierAddress, tierMultiplier, options)](./vm.md#toTierMultiplier-method-static-1) | Multiply the result of a VM script based on the holding tier of a tier contract. | +| [toTimeSlicer(configs, times, inBlockNumber)](./vm.md#toTimeSlicer-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | ## Static Property Details @@ -42,6 +43,38 @@ static Opcodes: typeof AllStandardOps; ## Static Method Details + + +### combiner(config1, config2, options) + +Combines 2 individual VM scripts + +- please be aware if your script has STACK opcode, as STACK is relative to script and cannot be handled by this method and needs to be dealt with manualy before calling this method. + +Signature: + +```typescript +static combiner(config1: StateConfig, config2: StateConfig, options?: { + index?: number; + numberOfSources?: number; + position?: number[]; + }): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | the first VM script that will be combined. (default sits at top) | +| config2 | [StateConfig](../interfaces/stateconfig.md) | the second VM script that will be combined. (default sits at bottom) | +| options |
{
    index?: number;
    numberOfSources?: number;
    position?: number[];
}
| used for additional configuraions: - (param) index - to identify which sources item in config1.sources the combination starts at, if not specified, it will be 0. - (param) - numberOfSources - for specifying how many sources item to combine. - (param) position - An array representing the positions of config1 script where config2 sources will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. | + +Returns: + +`StateConfig` + +combined VM script. + ### createVMSources(OPerands) @@ -51,14 +84,14 @@ Create a VM sources to be ready to use in any call just providing the combinatio Signature: ```typescript -static createVMSources(OPerands: OPerand[]): [Uint8Array]; +static createVMSources(OPerands: (OPerand | Uint8Array)[]): [Uint8Array]; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| OPerands | `OPerand[]` | All the configuration with the opcodes and operands. If any combination does not have an operand with an opcode, a 0 (zero) will be use with the opcode as the operand. Please | +| OPerands | `(OPerand \| Uint8Array)[]` | All the configuration with the opcodes and operands. If any combination does not have an operand with an opcode, a 0 (zero) will be use with the opcode as the operand. Please | Returns: @@ -66,9 +99,34 @@ static createVMSources(OPerands: OPerand[]): [Uint8Array]; A source - + + +### pair(amountConfig, priceConfig) + +method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc + +Signature: + +```typescript +static pair(amountConfig: StateConfig, priceConfig: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| amountConfig | [StateConfig](../interfaces/stateconfig.md) | amount's StateConfig, the config sitting at top and returning the first value | +| priceConfig | [StateConfig](../interfaces/stateconfig.md) | price's StateConfig, the config sitting at bottom and returning the second value | + +Returns: + +`StateConfig` + +a + + -### makeOwner(config, ownerAddress, options) +### toOwnerMaker(config, ownerAddress, options) Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. @@ -77,9 +135,8 @@ Make an address the owner of a VM Script - checks the sender address against the Signature: ```typescript -static makeOwner(config: StateConfig, ownerAddress: string, options?: { +static toOwnerMaker(config: StateConfig, ownerAddress: string, options?: { index?: number; - numberOfSources?: number; position?: number[]; notOwnerVar?: StateConfig | number; }): StateConfig; @@ -91,7 +148,7 @@ static makeOwner(config: StateConfig, ownerAddress: string, options?: { | --- | --- | --- | | config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | | ownerAddress | `string` | the address that is going to be the owner of the main VM script. | -| options |
{
    index?: number;
    numberOfSources?: number;
    position?: number[];
    notOwnerVar?: StateConfig \| number;
}
| used for additional configuraions: - (param) index - to identify which sources item in config.sources the combination starts at, if not specified, it will be 0. - (param) numberOfSource - for specifying how many sources item to combine. - (param) position - An array representing the positions of config script where notOwnerVar sources (if exists) will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. | +| options |
{
    index?: number;
    position?: number[];
    notOwnerVar?: StateConfig \| number;
}
| used for additional configuraions: - (param) index - to identify which sources item in config.sources the combination starts at, if not specified, it will be 0. - (param) position - An array representing the positions of config script where notOwnerVar sources (if exists) will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. | Returns: @@ -99,16 +156,16 @@ static makeOwner(config: StateConfig, ownerAddress: string, options?: { a VM script. - + -### tierBasedDiscounter(config, tierAddress, tierDiscount, options) +### toTierDiscounter(config, tierAddress, tierDiscount, options) Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. Signature: ```typescript -static tierBasedDiscounter(config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { +static toTierDiscounter(config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { index?: number; tierActivation?: (string | number)[]; }): StateConfig; @@ -129,16 +186,16 @@ static tierBasedDiscounter(config: StateConfig, tierAddress: string, tierDiscoun a VM script - + -### tierBasedMultiplier(config, tierAddress, tierMultiplier, options) +### toTierMultiplier(config, tierAddress, tierMultiplier, options) Multiply the result of a VM script based on the holding tier of a tier contract. Signature: ```typescript -static tierBasedMultiplier(config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { +static toTierMultiplier(config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { index?: number; tierActivation?: (string | number)[]; }): StateConfig; @@ -159,16 +216,16 @@ static tierBasedMultiplier(config: StateConfig, tierAddress: string, tierMultipl a VM script - + -### timeSliceScripts(configs, times, inBlockNumber) +### toTimeSlicer(configs, times, inBlockNumber) A method to merge multiple (more than 1) scripts to be executed based on time slices. Signature: ```typescript -static timeSliceScripts(configs: StateConfig[], times: number[], inBlockNumber?: boolean): StateConfig; +static toTimeSlicer(configs: StateConfig[], times: number[], inBlockNumber?: boolean): StateConfig; ``` #### Parameters @@ -176,7 +233,7 @@ static timeSliceScripts(configs: StateConfig[], times: number[], inBlockNumber?: | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | An array of StateConfigs that will be merged and executed at runtime in order by time slices | -| times | `number[]` | An array of numbers representing either BLOCK\_NUMBER or TIMESTAMP that time slices will be between each of the 2 items in the array | +| times | `number[]` | An array of numbers representing either BLOCK\_NUMBER or TIMESTAMP that time slices will be between each of the 2 items in the array its length should be number of configs - 1. | | inBlockNumber | `boolean` | (optional) false by default which means the time slices will be based on TIMESTAMP, pass true to base it on BLOCK\_NUMBER | Returns: @@ -185,35 +242,3 @@ static timeSliceScripts(configs: StateConfig[], times: number[], inBlockNumber?: a VM script - - -### vmCombiner(config1, config2, options) - -Combines 2 individual VM scripts - -- please be aware if your script has DUP opcode, as DUP is relative to script and cannot be handled by this method and needs to be dealt with manualy before calling this method. - -Signature: - -```typescript -static vmCombiner(config1: StateConfig, config2: StateConfig, options?: { - index?: number; - numberOfSources?: number; - position?: number[]; - }): StateConfig; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config1 | [StateConfig](../interfaces/stateconfig.md) | the first VM script that will be combined. (default sits at top) | -| config2 | [StateConfig](../interfaces/stateconfig.md) | the second VM script that will be combined. (default sits at bottom) | -| options |
{
    index?: number;
    numberOfSources?: number;
    position?: number[];
}
| used for additional configuraions: - (param) index - to identify which sources item in config1.sources the combination starts at, if not specified, it will be 0. - (param) numberOfSource - for specifying how many sources item to combine. - (param) position - An array representing the positions of config1 script where config2 sources will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. | - -Returns: - -`StateConfig` - -combined VM script. - diff --git a/docs/enums/allstandardops.md b/docs/enums/allstandardops.md index be0ac6e..e03736e 100644 --- a/docs/enums/allstandardops.md +++ b/docs/enums/allstandardops.md @@ -13,51 +13,51 @@ enum AllStandardOps | Member | Value | Description | | --- | --- | --- | -| ADD | `16` | Opcode for addition. | -| ALWAYS | `36` | Opcode to stack a report that has always been held for all tiers. | -| ANY | `33` | Opcode for ANY. | -| BLOCK\_NUMBER | `5` | Opcode for the block number. | -| BLOCK\_TIMESTAMP | `6` | Opcode for the block timestamp. | -| DEBUG | `4` | ABI encodes the entire stack and logs it to the hardhat console. | -| DIV | `22` | Opcode for division | -| DUP | `2` | Duplicates the value atoptions.index `operand_` to the top of the stack | -| EAGER\_IF | `28` | Eager because BOTH x\_ and y\_ must be eagerly evaluated before EAGER\_IF will select one of them. If both x\_ and y\_ are cheap (e.g. constant values) then this may also be the simplest and cheapest way to select one of them. If either x\_ or y\_ is expensive consider using the conditional form of OP\_SKIP to carefully avoid it instead. | -| EQUAL\_TO | `29` | Opcode for EQUAL\_TO. | -| EVERY | `32` | Opcode for EVERY. | -| EXP | `24` | Opcode for exponentiation. | -| GREATER\_THAN | `31` | Opcode for GREATER\_THAN. | -| IERC1155\_BALANCE\_OF | `44` | Opcode for `IERC1155` `balanceOf`. | -| IERC1155\_BALANCE\_OF\_BATCH | `45` | Number of provided opcodes for `IERC1155Ops`. | -| IERC20\_BALANCE\_OF | `40` | Opcode for `IERC20` `balanceOf`. | -| IERC20\_TOTAL\_SUPPLY | `41` | Opcode for `IERC20` `totalSupply`. | -| IERC721\_BALANCE\_OF | `42` | Opcode for `IERC721` `balanceOf`. | -| IERC721\_OWNER\_OF | `43` | Number of provided opcodes for `IERC721Ops`. | -| ISZERO | `27` | Opcode for ISZERO. | -| length | `46` | Length of the Standard Opcodes | -| LESS\_THAN | `30` | Opcode for LESS\_THAN. | -| MAX | `26` | Opcode for maximum. | -| MIN | `25` | Opcode for minimum. | -| MOD | `23` | Opcode for modulo. | -| MUL | `20` | Opcode for multiplication. | -| NEVER | `35` | Opcode to stack a report that has never been held for all tiers. | -| REPORT | `34` | Opcode to call `report` on an `ITier` contract. | -| SATURATING\_ADD | `17` | Opcode for saturating addition. | -| SATURATING\_DIFF | `37` | Opcode to calculate the tierwise diff of two reports. | -| SATURATING\_MUL | `21` | Opcode for saturating multiplication. | -| SATURATING\_SUB | `19` | Opcode for saturating subtraction. | -| SCALE\_BY | `13` | Opcode to rescale an arbitrary fixed point number by some OOMs. | -| SCALE18 | `11` | Opcode to rescale some fixed point number to 18 OOMs in situ. | -| SCALE18\_DECIMALS | `15` | Opcode for stacking number of fixed point decimals used. | -| SCALE18\_DIV | `10` | Opcode for division. | -| SCALE18\_MUL | `9` | Opcode for multiplication. | -| SCALE18\_ONE | `14` | Opcode for stacking the definition of one. | -| SCALEN | `12` | Opcode to rescale an 18 OOMs fixed point number to scale N. | -| SELECT\_LTE | `39` | Opcode to tierwise select the best block lte a reference block. | -| SENDER | `7` | Opcode for the `msg.sender`. | -| SKIP | `0` | | -| SUB | `18` | Opcode for subtraction. | -| THIS\_ADDRESS | `8` | Opcode for `this` address of the current contract. | -| UPDATE\_BLOCKS\_FOR\_TIER\_RANGE | `38` | Opcode to update the blocks over a range of tiers for a report. | -| VAL | `1` | Copies a value either off `constants` or `arguments` to the top of the stack. The high bit of the operand specifies which, `0` for `constants` and `1` for `arguments`. | -| ZIPMAP | `3` | Takes N values off the stack, interprets them as an array then zips and maps a source from `sources` over them. The source has access to the original constants using `1 0` and to zipped arguments as `1 1`. | +| ADD | `33` | Opcode for addition. | +| ANY | `23` | Opcode for ANY. | +| BLOCK\_NUMBER | `14` | Opcode for the block number. | +| BLOCK\_TIMESTAMP | `17` | Opcode for the block timestamp. | +| CONSTANT | `0` | Copies a value either off `constants` or `arguments` to the top of the stack. arguments will go at the end of the constants array. | +| CONTEXT | `2` | stacks an item of the contextual array of values of an underlying contract passed by caller when calling the contract's methods. operand is the index to access the desired item in the array. | +| DEBUG | `5` | ABI encodes the entire stack and logs it to the hardhat console. | +| DIV | `34` | Opcode for division | +| EAGER\_IF | `24` | Eager because BOTH x\_ and y\_ must be eagerly evaluated before EAGER\_IF will select one of them. If both x\_ and y\_ are cheap (e.g. constant values) then this may also be the simplest and cheapest way to select one of them. If either x\_ or y\_ is expensive consider using the conditional form of OP\_SKIP to carefully avoid it instead. | +| EQUAL\_TO | `25` | Opcode for EQUAL\_TO. | +| EVERY | `26` | Opcode for EVERY. | +| EXP | `35` | Opcode for exponentiation. | +| GREATER\_THAN | `27` | Opcode for GREATER\_THAN. | +| IERC1155\_BALANCE\_OF | `12` | Opcode for `IERC1155` `balanceOf`. | +| IERC1155\_BALANCE\_OF\_BATCH | `13` | Number of provided opcodes for `IERC1155Ops`. | +| IERC20\_BALANCE\_OF | `6` | Opcode for `IERC20` `balanceOf`. | +| IERC20\_SNAPSHOT\_BALANCE\_OF\_AT | `8` | Opcode for `IERC20` use an Snapshot `balanceOfAt`. | +| IERC20\_SNAPSHOT\_TOTAL\_SUPPLY\_AT | `9` | Opcode for `IERC20` use an Snapshot `totalSupplyAt`. | +| IERC20\_TOTAL\_SUPPLY | `7` | Opcode for `IERC20` `totalSupply`. | +| IERC721\_BALANCE\_OF | `10` | Opcode for `IERC721` `balanceOf`. | +| IERC721\_OWNER\_OF | `11` | Number of provided opcodes for `IERC721Ops`. | +| ISZERO | `28` | Opcode for ISZERO. | +| ITIERV2\_REPORT | `41` | Opcode to call `report` on an `ITierV2` contract. | +| ITIERV2\_REPORT\_TIME\_FOR\_TIER | `42` | Opcode to call `reportTimeForTier` on an `ITierV2` contract. | +| length | `46` | length of available opcodes | +| LESS\_THAN | `29` | Opcode for LESS\_THAN. | +| MAX | `36` | Opcode for maximum. | +| MIN | `37` | Opcode for minimum. | +| MOD | `38` | Opcode for modulo. | +| MUL | `39` | Opcode for multiplication. | +| SATURATING\_ADD | `30` | Opcode for saturating addition. | +| SATURATING\_DIFF | `43` | Opcode to calculate the tierwise diff of two reports. | +| SATURATING\_MUL | `31` | Opcode for saturating multiplication. | +| SATURATING\_SUB | `32` | Opcode for saturating subtraction. | +| SCALE\_BY | `21` | Opcode to rescale an arbitrary fixed point number by some OOMs. | +| SCALE18 | `18` | Opcode to rescale some fixed point number to 18 OOMs in situ. | +| SCALE18\_DIV | `19` | Opcode for division. | +| SCALE18\_MUL | `20` | Opcode for multiplication. | +| SCALEN | `22` | Opcode to rescale an 18 OOMs fixed point number to scale N. | +| SELECT\_LTE | `44` | Opcode to tierwise select the best block lte a reference block. | +| SENDER | `15` | Opcode for the `msg.sender`. | +| STACK | `1` | Duplicates any value in the stack to the top of the stack. The operand specifies the index to copy from. | +| STORAGE | `3` | used as local opcodes i.e. opcodes to stack the contract's storage contents i.e. porperties/variables. operand determines the storage location to be stacked. | +| SUB | `40` | Opcode for subtraction. | +| THIS\_ADDRESS | `16` | Opcode for `this` address of the current contract. | +| UPDATE\_TIMES\_FOR\_TIER\_RANGE | `45` | Opcode to update the timestamp over a range of tiers for a report. | +| ZIPMAP | `4` | Takes N values off the stack, interprets them as an array then zips and maps a source from `sources` over them. The source has access to the original constants using `1 0` and to zipped arguments as `1 1`. | diff --git a/docs/enums/buycapmode.md b/docs/enums/buycapmode.md new file mode 100644 index 0000000..ebd79b3 --- /dev/null +++ b/docs/enums/buycapmode.md @@ -0,0 +1,19 @@ + +# Enum BuyCapMode + +Standard cap per wallet modes + +Signature: + +```typescript +enum BuyCapMode +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| both | `2` | both minimum and maximum buy cap, i.e. cannot buy less than a specefied amount and more than another specified amount | +| max | `1` | maximum buy cap, i.e. cannot buy more than a specefied amount | +| min | `0` | minimum buy cap, i.e. cannot buy less than a specefied amount | + diff --git a/docs/enums/combinetiercontext.md b/docs/enums/combinetiercontext.md new file mode 100644 index 0000000..cfee3ab --- /dev/null +++ b/docs/enums/combinetiercontext.md @@ -0,0 +1,18 @@ + +# Enum CombineTierContext + +Enum for operand of the combineTier's CONTEXT opcode + +Signature: + +```typescript +enum CombineTierContext +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| Account | `0` | 0 or the index of the context array in the combineTier contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the account that report is being call for. | +| length | `1` | length of CombineTier's valid context opcodes | + diff --git a/docs/enums/combinetierstorage.md b/docs/enums/combinetierstorage.md new file mode 100644 index 0000000..d9c2c0e --- /dev/null +++ b/docs/enums/combinetierstorage.md @@ -0,0 +1,17 @@ + +# Enum CombineTierStorage + +Enum for operand of the CombineTier's STORAGE opcode + +Signature: + +```typescript +enum CombineTierStorage +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| length | `0` | length of CombineTier's valid storage opcodes | + diff --git a/docs/enums/debug.md b/docs/enums/debug.md new file mode 100644 index 0000000..bfa2850 --- /dev/null +++ b/docs/enums/debug.md @@ -0,0 +1,21 @@ + +# Enum Debug + +Enum for DEBUG opcode operands + +Signature: + +```typescript +enum Debug +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| length | `4` | length of DEBUG's valid operands | +| Stack | `2` | current state of stack | +| StackIndex | `3` | current stack index | +| StateAbi | `0` | ABI of the current state of State | +| StatePacked | `1` | current state of State as packed bytes | + diff --git a/docs/enums/emissionserc20context.md b/docs/enums/emissionserc20context.md new file mode 100644 index 0000000..6b1fc53 --- /dev/null +++ b/docs/enums/emissionserc20context.md @@ -0,0 +1,18 @@ + +# Enum EmissionsERC20Context + +Enum for operand of the emissionsERC20's CONTEXT opcode + +Signature: + +```typescript +enum EmissionsERC20Context +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| ClaimantAccount | `0` | 0 or the index of the context array in the emissionsERC20 contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the claimant account that report is being call for. | +| length | `1` | length of EmissionsERC20's valid context opcodes | + diff --git a/docs/enums/emissionserc20storage.md b/docs/enums/emissionserc20storage.md new file mode 100644 index 0000000..a08797e --- /dev/null +++ b/docs/enums/emissionserc20storage.md @@ -0,0 +1,17 @@ + +# Enum EmissionsERC20Storage + +Enum for operand of the EmissionsERC20's STORAGE opcode + +Signature: + +```typescript +enum EmissionsERC20Storage +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| length | `0` | length of EmissionsERC20's valid storage opcodes | + diff --git a/docs/enums/orderbookcontext.md b/docs/enums/orderbookcontext.md new file mode 100644 index 0000000..a162358 --- /dev/null +++ b/docs/enums/orderbookcontext.md @@ -0,0 +1,19 @@ + +# Enum OrderbookContext + +Enum for operand of the Orderbook's CONTEXT opcode + +Signature: + +```typescript +enum OrderbookContext +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| CounterParty | `1` | 1 or the index of the context array in the Oderbook CONTEXT opcode stacks the counterparty address | +| length | `2` | length of Orderbook's valid context opcodes | +| OrderHash | `0` | 0 or the index of the context array for Orderbook CONTEXT opcode stacks the Orderhash | + diff --git a/docs/enums/orderbookstroage.md b/docs/enums/orderbookstroage.md new file mode 100644 index 0000000..f75d0e3 --- /dev/null +++ b/docs/enums/orderbookstroage.md @@ -0,0 +1,17 @@ + +# Enum OrderbookStroage + +Enum for operand of the Orderbook's STORAGE opcode + +Signature: + +```typescript +enum OrderbookStroage +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| length | `0` | length of Orederbook's valid storage opcodes | + diff --git a/docs/enums/salecontext.md b/docs/enums/salecontext.md new file mode 100644 index 0000000..2de57ef --- /dev/null +++ b/docs/enums/salecontext.md @@ -0,0 +1,18 @@ + +# Enum SaleContext + +Enum for operand of the sale's CONTEXT opcode + +Signature: + +```typescript +enum SaleContext +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| CurrentBuyUnits | `0` | 0 or the index of the context array in the sale contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the rTKN units/amount of the current buy. | +| length | `1` | length of Sale's valid context opcode | + diff --git a/docs/enums/salestorage.md b/docs/enums/salestorage.md new file mode 100644 index 0000000..99e8015 --- /dev/null +++ b/docs/enums/salestorage.md @@ -0,0 +1,21 @@ + +# Enum SaleStorage + +Enum for operand of the sale's Storage Opcodes + +Signature: + +```typescript +enum SaleStorage +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| length | `4` | length of Sale's valid storage opcodes | +| RemainingUnits | `0` | 0 or the location of the \_remainingUnits property in the sale contract used as the operand for STORAGE opcode operand for STORAGE opcode to stack remaining rTKN units. | +| ReserveAddress | `3` | 3 or the location of the \_reserve property in the sale contract used as the operand for STORAGE opcode. operand for STORAGE opcode to stack the address of the reserve token. | +| TokenAddress | `2` | 2 or the location of the \_token property in the sale contract used as the operand for STORAGE opcode. operand for STORAGE opcode to stack the address of the rTKN. | +| TotalReserveIn | `1` | 1 or the location of the \_totalReserveIn property in the sale contract used as the operand for STORAGE opcode. operand for STORAGE opcode to stack total reserve taken in so far. | + diff --git a/docs/enums/transferrable.md b/docs/enums/transferrable.md deleted file mode 100644 index 8b0960d..0000000 --- a/docs/enums/transferrable.md +++ /dev/null @@ -1,19 +0,0 @@ - -# Enum Transferrable - -Determine the status about how the GatedNFT contract will handle the transfers - -Signature: - -```typescript -enum Transferrable -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| NonTransferrable | `0` | Transfer not supported | -| TierGatedTransferrable | `2` | Address required a specific tier | -| Transferrable | `1` | Transfer supported | - diff --git a/docs/enums/walletcapmode.md b/docs/enums/walletcapmode.md deleted file mode 100644 index 4e39cd5..0000000 --- a/docs/enums/walletcapmode.md +++ /dev/null @@ -1,19 +0,0 @@ - -# Enum WalletCapMode - -Standard cap per wallet modes - -Signature: - -```typescript -enum WalletCapMode -``` - -## Enumeration Members - -| Member | Value | Description | -| --- | --- | --- | -| both | `2` | | -| max | `1` | | -| min | `0` | | - diff --git a/docs/index.md b/docs/index.md index 53802f2..307c1c5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -6,6 +6,7 @@ | --- | --- | | [AddressBook](./classes/addressbook.md) | Class related to handle and obtain all the addresses and tools (like Subgraph) deployed by chain and stored in the SDK. | | [BuildReport](./classes/buildreport.md) | A class for creating a report-like script which inherits from CombineTierGenerator | +| [BuyCap](./classes/buycap.md) | The fisrt piece of script in a sale's amount/price pair script which determines the amoount or cap that can be bought. | | [CombineTier](./classes/combinetier.md) | Class for deploying and calling methods on a CombineTier contract, providin easy way to interact with deployed CombineTiers. | | [CombineTierGenerator](./classes/combinetiergenerator.md) | The script generator for generating CombineTier scripts although it is worth mentioning that the usecases would not be only limited to CombineTier contract and can be used for any script. | | [CombineTierJS](./classes/combinetierjs.md) | - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. | @@ -13,27 +14,29 @@ | [EmissionsERC20JS](./classes/emissionserc20js.md) | - The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. | | [ERC1155](./classes/erc1155.md) | A generic ERC1155 interface to get connected to any ERC1155 address and make transactions. | | [ERC20](./classes/erc20.md) | A generic ERC20 interface to get connected to any ERC20 address and make transactions. | -| [ERC20BalanceTier](./classes/erc20balancetier.md) | A class for deploying and calling methods on a ERC20BalanceTier. | -| [ERC20TransferTier](./classes/erc20transfertier.md) | A class for deploying and calling methods on a ERC20TransferTier. | +| [ERC20BalanceTier](./classes/erc20balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalancTier in RainVM version 1.0 | | [ERC721](./classes/erc721.md) | A generic ERC721 interface to get connected to any ERC721 address and make transactions. | -| [ERC721BalanceTier](./classes/erc721balancetier.md) | A class for deploying and calling methods on a ERC721BalanceTier. The `ERC721BalanceTier` simply checks the current balance of an erc721 against tier values. As the current balance is always read from the erc721contract directly there is no historical block data. | +| [ERC721BalanceTier](./classes/erc721balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC721BalancTier in RainVM version 1.0 | | [FactoryContract](./classes/factorycontract.md) | All contract factory should use this instead of directly Rain contract to take advantage of specific method to factories | | [FixedPrice](./classes/fixedprice.md) | - A sub-class of PriceCurve for creating a Fixed Price sale type. The price is a constant value over the span of the sale. | -| [GatedNFT](./classes/gatednft.md) | //TODO: Add doc | +| [HumanFriendlySource](./classes/humanfriendlysource.md) | The generator of friendly human readable source. | | [IncreasingPrice](./classes/increasingprice.md) | - A sub-class of PriceCurve for creating an linear Increasing sale type. | -| [ITier](./classes/itier.md) | Class to interact with ITier contracts | +| [ITierV2](./classes/itierv2.md) | Class to interact with ITierV2 contracts | | [LinearEmissions](./classes/linearemissions.md) | A linear minting emissions over a period of time. holding more before claiming would result in a more reward. | | [NoticeBoard](./classes/noticeboard.md) | A class for calling method on a NoticeBoard. | +| [OrderBook](./classes/orderbook.md) | A class for calling method on a OrderBook. | | [PriceCurve](./classes/pricecurve.md) | - PriceCurve is an class that all the other sale types (sub-classes) will inherit from. | | [RainContract](./classes/raincontract.md) | //TODO: Add doc | | [RainJS](./classes/rainjs.md) | - The javascript version of the RainVM, basically does the same job RainVM does but off-chain. | | [RedeemableERC20](./classes/redeemableerc20.md) | A class for calling methods on a RedeemableERC20. | | [RedeemableERC20ClaimEscrow](./classes/redeemableerc20claimescrow.md) | A class for calling methods on a RedeemableERC20ClaimEscrow. | | [Sale](./classes/sale.md) | A class for deploying and calling methods on a Sale. | -| [SaleDurationInBlocks](./classes/saledurationinblocks.md) | - A class used for creating a VM state for Sale's canEnd/StartStateConfig based on block number. | -| [SaleDurationInTimestamp](./classes/saledurationintimestamp.md) | - A class used for creating a VM state for Sale's canEnd/StartStateConfig based on timestamp. | +| [SaleDurationInBlocks](./classes/saledurationinblocks.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on block number. | +| [SaleDurationInTimestamp](./classes/saledurationintimestamp.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. | | [SaleJS](./classes/salejs.md) | - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. | +| [SaleScriptFrom](./classes/salescriptfrom.md) | Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) | | [SequentialEmissions](./classes/sequentialemissions.md) | A sequential minting emission, minting can only be done once in every period of time, also can set a max reward with increment over the span of several periods. | +| [Stake](./classes/stake.md) | A class for calling methods on a Stake. | | [TierContract](./classes/tiercontract.md) | Combine the static methods that are present in factories with the ITier instance methods. Should be use to the TierFactories. | | [Verify](./classes/verify.md) | A class for deploying and calling methods on a Verify. | | [VerifyTier](./classes/verifytier.md) | A class for deploying and calling methods on a VerifyTier.

A contract that is `VerifyTier` expects to derive tiers from the time the account was approved by the underlying `Verify` contract. The approval block numbers defer to `State.since` returned from `Verify.state`. | @@ -45,10 +48,18 @@ | Enumeration | Description | | --- | --- | | [AllStandardOps](./enums/allstandardops.md) | All the standard Op Codes | +| [BuyCapMode](./enums/buycapmode.md) | Standard cap per wallet modes | +| [CombineTierContext](./enums/combinetiercontext.md) | Enum for operand of the combineTier's CONTEXT opcode | +| [CombineTierStorage](./enums/combinetierstorage.md) | Enum for operand of the CombineTier's STORAGE opcode | +| [Debug](./enums/debug.md) | Enum for DEBUG opcode operands | +| [EmissionsERC20Context](./enums/emissionserc20context.md) | Enum for operand of the emissionsERC20's CONTEXT opcode | +| [EmissionsERC20Storage](./enums/emissionserc20storage.md) | Enum for operand of the EmissionsERC20's STORAGE opcode | +| [OrderbookContext](./enums/orderbookcontext.md) | Enum for operand of the Orderbook's CONTEXT opcode | +| [OrderbookStroage](./enums/orderbookstroage.md) | Enum for operand of the Orderbook's STORAGE opcode | +| [SaleContext](./enums/salecontext.md) | Enum for operand of the sale's CONTEXT opcode | +| [SaleStorage](./enums/salestorage.md) | Enum for operand of the sale's Storage Opcodes | | [Tier](./enums/tier.md) | All the contract tier levels availables in all ITier contracts. | -| [Transferrable](./enums/transferrable.md) | Determine the status about how the GatedNFT contract will handle the transfers | | [VerifyStatus](./enums/verifystatus.md) | Summary statuses derived from a `State` by comparing the `Since` times against a specific block number. | -| [WalletCapMode](./enums/walletcapmode.md) | Standard cap per wallet modes | ## Interfaces @@ -57,24 +68,18 @@ | [ApplyOpFn](./interfaces/applyopfn.md) | An interface for creating a key/value pair of custom opcodes functions to override. | | [BuyConfig](./interfaces/buyconfig.md) | The configuration that is need it to buy in the sale | | [EmissionsERC20DeployArgs](./interfaces/emissionserc20deployargs.md) | Everything required by the `EmissionsERC20` constructor. | -| [ERC20BalanceTierDeployArgs](./interfaces/erc20balancetierdeployargs.md) | Constructor config for ERC20BalanceTier | | [ERC20Config](./interfaces/erc20config.md) | Constructor config for standard Open Zeppelin ERC20. | -| [ERC20TransferTierDeployArgs](./interfaces/erc20transfertierdeployargs.md) | Constructor config for ERC20TransferTier | -| [ERC721BalanceTierDeployArgs](./interfaces/erc721balancetierdeployargs.md) | Constructor config for ERC721BalanceTier | | [Evidence](./interfaces/evidence.md) | Structure of arbitrary evidence to support any action taken. Priviledged roles are expected to provide evidence just as applicants as an audit trail will be preserved permanently in the logs. | -| [GatedConfig](./interfaces/gatedconfig.md) | Configuration of the basic information that will be added to the ERC721 NFT | -| [GatedNFTDeployArguments](./interfaces/gatednftdeployarguments.md) | | | [NoticeStruct](./interfaces/noticestruct.md) | | | [ReadTxOverrides](./interfaces/readtxoverrides.md) | More read about `ReadTxOverrides` that comes from CallOverrides of ethers | | [Receipt](./interfaces/receipt.md) | The receipt that contain the information of the buy | | [RedeemableERC20DeployArgs](./interfaces/redeemableerc20deployargs.md) | Everything required by the `RedeemableERC20` constructor. | -| [RoyaltyInfo](./interfaces/royaltyinfo.md) | | | [SaleConfig](./interfaces/saleconfig.md) | The configuration of the sale | | [SaleDeployArguments](./interfaces/saledeployarguments.md) | Arguments to deploy/create a new Sale | | [SaleRedeemableERC20Config](./interfaces/saleredeemableerc20config.md) | Configuration that will have the Redeemable of the Sale | -| [State](./interfaces/state.md) | Everything required to evaluate and track the state of a rain script. As this is a struct it will be in memory when passed to `RainVM` and so will be modified by reference internally. This is important for gas efficiency; the stack, arguments and stackIndex will likely be mutated by the running script. | | [StateConfig](./interfaces/stateconfig.md) | Config required to build a new `State`. | | [StateJS](./interfaces/statejs.md) | - An interface, StateJS is basically javascript version of 'State' struct in RainVM, although it doesn't need stackLength and argumentsLength to operate. It receives a regular RainVM in the constructor and initiates the stack for it and all opcodes do their operations to the stack. | +| [StorageOpcodesRange](./interfaces/storageopcodesrange.md) | Interface for accessible by vm storage's slots range available for a contract to be used as local opcodes. | | [TxOverrides](./interfaces/txoverrides.md) | More read about `TxOverrides` that comes from Overrides of ethers | | [VerifyDeployArgs](./interfaces/verifydeployargs.md) | Config to initialize a Verify contract with. | | [VerifyState](./interfaces/verifystate.md) | Records the block a verify session reaches each status. If a status is not reached it is left as UNINITIALIZED, i.e. 0xFFFFFFFF. Most accounts will never be banned so most accounts will never reach every status, which is a good thing. | @@ -90,12 +95,16 @@ | Type Alias | Description | | --- | --- | | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | +| [BountyConfig](./types/bountyconfig.md) | | | [CombineTierDeployArgs](./types/combinetierdeployargs.md) | The argument of the CombineTier. The StateConfig will be deployed as a pointer under VM State Pointer. | -| [CombineTierOpcodes](./types/combinetieropcodes.md) | Type for the opcodes availables in a CombineTier instance. | +| [DepositConfig](./types/depositconfig.md) | | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | -| [EmissionsERC20Opcodes](./types/emissionserc20opcodes.md) | Type for the opcodes availables in a EmissionsERC20 instance. | | [OpcodeFN](./types/opcodefn.md) | A type for functions to override the default opcodes functions with it. | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | -| [SaleOpcodes](./types/saleopcodes.md) | Type for the opcodes availables in a CombineTier instance. | +| [Order](./types/order.md) | Order | +| [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | +| [OrderConfig](./types/orderconfig.md) | | +| [StakeDeployArgs](./types/stakedeployargs.md) | | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | +| [WithdrawConfig](./types/withdrawconfig.md) | | diff --git a/docs/interfaces/erc20balancetierdeployargs.md b/docs/interfaces/erc20balancetierdeployargs.md deleted file mode 100644 index bc3c03f..0000000 --- a/docs/interfaces/erc20balancetierdeployargs.md +++ /dev/null @@ -1,43 +0,0 @@ - -# Interface ERC20BalanceTierDeployArgs - -Constructor config for ERC20BalanceTier - -Signature: - -```typescript -interface ERC20BalanceTierDeployArgs -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [erc20](./erc20balancetierdeployargs.md#erc20-property) | `string` | The erc20 token contract to check the balance of at `report` time | -| [tierValues](./erc20balancetierdeployargs.md#tierValues-property) | `BigNumberish[]` | 8 values corresponding to minimum erc20 balances for tier 1 through tier 8 | - -## Property Details - - - -### erc20 - -The erc20 token contract to check the balance of at `report` time - -Signature: - -```typescript -erc20: string; -``` - - - -### tierValues - -8 values corresponding to minimum erc20 balances for tier 1 through tier 8 - -Signature: - -```typescript -tierValues: BigNumberish[]; -``` diff --git a/docs/interfaces/erc20transfertierdeployargs.md b/docs/interfaces/erc20transfertierdeployargs.md deleted file mode 100644 index e6493aa..0000000 --- a/docs/interfaces/erc20transfertierdeployargs.md +++ /dev/null @@ -1,43 +0,0 @@ - -# Interface ERC20TransferTierDeployArgs - -Constructor config for ERC20TransferTier - -Signature: - -```typescript -interface ERC20TransferTierDeployArgs -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [erc20](./erc20transfertierdeployargs.md#erc20-property) | `string` | The erc20 token contract to transfer balances from/to during `setTier` | -| [tierValues](./erc20transfertierdeployargs.md#tierValues-property) | `BigNumberish[]` | 8 values corresponding to minimum erc20 balances for tiers ONE through EIGHT | - -## Property Details - - - -### erc20 - -The erc20 token contract to transfer balances from/to during `setTier` - -Signature: - -```typescript -erc20: string; -``` - - - -### tierValues - -8 values corresponding to minimum erc20 balances for tiers ONE through EIGHT - -Signature: - -```typescript -tierValues: BigNumberish[]; -``` diff --git a/docs/interfaces/erc721balancetierdeployargs.md b/docs/interfaces/erc721balancetierdeployargs.md deleted file mode 100644 index f2204b1..0000000 --- a/docs/interfaces/erc721balancetierdeployargs.md +++ /dev/null @@ -1,43 +0,0 @@ - -# Interface ERC721BalanceTierDeployArgs - -Constructor config for ERC721BalanceTier - -Signature: - -```typescript -interface ERC721BalanceTierDeployArgs -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [erc721](./erc721balancetierdeployargs.md#erc721-property) | `string` | The erc721 token contract to check the balance of at `report` time | -| [tierValues](./erc721balancetierdeployargs.md#tierValues-property) | `BigNumberish[]` | 8 values corresponding to minimum erc721 balances for tier 1 through tier 8 | - -## Property Details - - - -### erc721 - -The erc721 token contract to check the balance of at `report` time - -Signature: - -```typescript -erc721: string; -``` - - - -### tierValues - -8 values corresponding to minimum erc721 balances for tier 1 through tier 8 - -Signature: - -```typescript -tierValues: BigNumberish[]; -``` diff --git a/docs/interfaces/gatedconfig.md b/docs/interfaces/gatedconfig.md deleted file mode 100644 index 8a7b63b..0000000 --- a/docs/interfaces/gatedconfig.md +++ /dev/null @@ -1,108 +0,0 @@ - -# Interface GatedConfig - -Configuration of the basic information that will be added to the ERC721 NFT - -Signature: - -```typescript -interface GatedConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [animationHash](./gatedconfig.md#animationHash-property) | `BytesLike` | The hash of the NFT animation | -| [animationUrl](./gatedconfig.md#animationUrl-property) | `string` | An animation url of the NFT | -| [description](./gatedconfig.md#description-property) | `string` | Description that will contain the GatedNFT | -| [imageHash](./gatedconfig.md#imageHash-property) | `BytesLike` | The hash of the NFT image | -| [imageUrl](./gatedconfig.md#imageUrl-property) | `string` | An image url of the NFT | -| [name](./gatedconfig.md#name-property) | `string` | Name of the token as defined by Open Zeppelin ERC721 | -| [symbol](./gatedconfig.md#symbol-property) | `string` | Symbol of the token as defined by Open Zeppelin ERC721 | - -## Property Details - - - -### animationHash - -The hash of the NFT animation - -Signature: - -```typescript -animationHash: BytesLike; -``` - - - -### animationUrl - -An animation url of the NFT - -Signature: - -```typescript -animationUrl: string; -``` - - - -### description - -Description that will contain the GatedNFT - -Signature: - -```typescript -description: string; -``` - - - -### imageHash - -The hash of the NFT image - -Signature: - -```typescript -imageHash: BytesLike; -``` - - - -### imageUrl - -An image url of the NFT - -Signature: - -```typescript -imageUrl: string; -``` - - - -### name - -Name of the token as defined by Open Zeppelin ERC721 - -Signature: - -```typescript -name: string; -``` - - - -### symbol - -Symbol of the token as defined by Open Zeppelin ERC721 - -Signature: - -```typescript -symbol: string; -``` diff --git a/docs/interfaces/gatednftdeployarguments.md b/docs/interfaces/gatednftdeployarguments.md deleted file mode 100644 index a748481..0000000 --- a/docs/interfaces/gatednftdeployarguments.md +++ /dev/null @@ -1,120 +0,0 @@ - -# Interface GatedNFTDeployArguments - - -Signature: - -```typescript -interface GatedNFTDeployArguments -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [config](./gatednftdeployarguments.md#config-property) | [GatedConfig](./gatedconfig.md) | Configuration of the basic information that will be added to the ERC721 NFT | -| [maxMintable](./gatednftdeployarguments.md#maxMintable-property) | `BigNumberish` | Maximun of tokens that will be mint in the contract | -| [maxPerAddress](./gatednftdeployarguments.md#maxPerAddress-property) | `BigNumberish` | Maximun of mint that is allowed per address | -| [minimumStatus](./gatednftdeployarguments.md#minimumStatus-property) | `BigNumberish` | Minimum tier required for mints and transfers. Can be '0'. | -| [royaltyBPS](./gatednftdeployarguments.md#royaltyBPS-property) | `BigNumberish` | The royalty BPS | -| [royaltyRecipient](./gatednftdeployarguments.md#royaltyRecipient-property) | `string` | The royalty recipient | -| [tier](./gatednftdeployarguments.md#tier-property) | `string` | Tier contract to compare statuses against on any transaction. | -| [transferrable](./gatednftdeployarguments.md#transferrable-property) | [Transferrable](../enums/transferrable.md) | Determine the status about how the GatedNFT contract will handle the transfers | - -## Property Details - - - -### config - -Configuration of the basic information that will be added to the ERC721 NFT - -Signature: - -```typescript -config: GatedConfig; -``` - - - -### maxMintable - -Maximun of tokens that will be mint in the contract - -Signature: - -```typescript -maxMintable: BigNumberish; -``` - - - -### maxPerAddress - -Maximun of mint that is allowed per address - -Signature: - -```typescript -maxPerAddress: BigNumberish; -``` - - - -### minimumStatus - -Minimum tier required for mints and transfers. Can be '0'. - -Signature: - -```typescript -minimumStatus: BigNumberish; -``` - - - -### royaltyBPS - -The royalty BPS - -Signature: - -```typescript -royaltyBPS: BigNumberish; -``` - - - -### royaltyRecipient - -The royalty recipient - -Signature: - -```typescript -royaltyRecipient: string; -``` - - - -### tier - -Tier contract to compare statuses against on any transaction. - -Signature: - -```typescript -tier: string; -``` - - - -### transferrable - -Determine the status about how the GatedNFT contract will handle the transfers - -Signature: - -```typescript -transferrable: Transferrable; -``` diff --git a/docs/interfaces/royaltyinfo.md b/docs/interfaces/royaltyinfo.md deleted file mode 100644 index 639740f..0000000 --- a/docs/interfaces/royaltyinfo.md +++ /dev/null @@ -1,38 +0,0 @@ - -# Interface RoyaltyInfo - - -Signature: - -```typescript -interface RoyaltyInfo -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [receiver](./royaltyinfo.md#receiver-property) | `string` | | -| [royaltyAmount](./royaltyinfo.md#royaltyAmount-property) | `BigNumber` | | - -## Property Details - - - -### receiver - -Signature: - -```typescript -receiver: string; -``` - - - -### royaltyAmount - -Signature: - -```typescript -royaltyAmount: BigNumber; -``` diff --git a/docs/interfaces/saleconfig.md b/docs/interfaces/saleconfig.md index 194be2c..2a87ca4 100644 --- a/docs/interfaces/saleconfig.md +++ b/docs/interfaces/saleconfig.md @@ -13,54 +13,16 @@ interface SaleConfig | Property | Type | Description | | --- | --- | --- | -| [calculatePriceStateConfig](./saleconfig.md#calculatePriceStateConfig-property) | [StateConfig](./stateconfig.md) | State config for the script that defines the current price quoted by a Sale. | -| [canEndStateConfig](./saleconfig.md#canEndStateConfig-property) | [StateConfig](./stateconfig.md) | State config for the script that allows a Sale to end. IMPORTANT: A Sale can always end if/when its rTKN sells out, regardless of the result of this script. | -| [canStartStateConfig](./saleconfig.md#canStartStateConfig-property) | [StateConfig](./stateconfig.md) | State config for the script that allows a Sale to start. | | [cooldownDuration](./saleconfig.md#cooldownDuration-property) | `BigNumberish` | The amount of blocks after each buy/refund, before a user is allowed another buy/refund. | | [dustSize](./saleconfig.md#dustSize-property) | `BigNumberish` | The minimum amount of rTKN that must remain in the Sale contract unless it is all purchased, clearing the raise to 0 stock and thus ending the raise. | | [minimumRaise](./saleconfig.md#minimumRaise-property) | `BigNumberish` | defines the amount of reserve required to raise tha defines success/fail of the sale. Reaching the minimum raise DOES NOT cause the raise to end early (unless the "can end" script allows it of course). | | [recipient](./saleconfig.md#recipient-property) | `string` | The recipient of the proceeds of a Sale, if/when the Sale is successful. | | [reserve](./saleconfig.md#reserve-property) | `string` | The reserve token the Sale is deonominated in. | | [saleTimeout](./saleconfig.md#saleTimeout-property) | `BigNumberish` | The number of blocks before this sale can timeout. SHOULD be well after the expected end time as a timeout will fail an active or pending sale regardless of any funds raised. | +| [vmStateConfig](./saleconfig.md#vmStateConfig-property) | [StateConfig](./stateconfig.md) | SateConfig that has both canLive and calculateBuy StateConfigs for a sale. The first item in the sources is the canLive StateConfig and the second item in the sources is the calculateBuy StateConfig. | ## Property Details - - -### calculatePriceStateConfig - -State config for the script that defines the current price quoted by a Sale. - -Signature: - -```typescript -calculatePriceStateConfig: StateConfig; -``` - - - -### canEndStateConfig - -State config for the script that allows a Sale to end. IMPORTANT: A Sale can always end if/when its rTKN sells out, regardless of the result of this script. - -Signature: - -```typescript -canEndStateConfig: StateConfig; -``` - - - -### canStartStateConfig - -State config for the script that allows a Sale to start. - -Signature: - -```typescript -canStartStateConfig: StateConfig; -``` - ### cooldownDuration @@ -132,3 +94,15 @@ The number of blocks before this sale can timeout. SHOULD be well after the expe ```typescript saleTimeout: BigNumberish; ``` + + + +### vmStateConfig + +SateConfig that has both canLive and calculateBuy StateConfigs for a sale. The first item in the sources is the canLive StateConfig and the second item in the sources is the calculateBuy StateConfig. + +Signature: + +```typescript +vmStateConfig: StateConfig; +``` diff --git a/docs/interfaces/state.md b/docs/interfaces/state.md deleted file mode 100644 index 459f4d4..0000000 --- a/docs/interfaces/state.md +++ /dev/null @@ -1,82 +0,0 @@ - -# Interface State - -Everything required to evaluate and track the state of a rain script. As this is a struct it will be in memory when passed to `RainVM` and so will be modified by reference internally. This is important for gas efficiency; the stack, arguments and stackIndex will likely be mutated by the running script. - -Signature: - -```typescript -interface State -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [arguments](./state.md#arguments-property) | `BigNumberish[]` | `ZIPMAP` populates arguments which can be copied to the stack by `VAL`. | -| [constants](./state.md#constants-property) | `BigNumberish[]` | Constants that can be copied to the stack by index by `VAL`. | -| [sources](./state.md#sources-property) | `BytesLike[]` | Sources available to be executed by `eval`. Notably `ZIPMAP` can also select a source to execute by index. | -| [stack](./state.md#stack-property) | `BigNumberish[]` | Stack is the general purpose runtime state that opcodes can read from and write to according to their functionality. | -| [stackIndex](./state.md#stackIndex-property) | `BigNumberish` | Opcodes write to the stack at the stack index and can consume from the stack by decrementing the index and reading between the old and new stack index. IMPORANT: The stack is never zeroed out so the index must be used to find the "top" of the stack as the result of an `eval`. | - -## Property Details - - - -### arguments - -`ZIPMAP` populates arguments which can be copied to the stack by `VAL`. - -Signature: - -```typescript -arguments: BigNumberish[]; -``` - - - -### constants - -Constants that can be copied to the stack by index by `VAL`. - -Signature: - -```typescript -constants: BigNumberish[]; -``` - - - -### sources - -Sources available to be executed by `eval`. Notably `ZIPMAP` can also select a source to execute by index. - -Signature: - -```typescript -sources: BytesLike[]; -``` - - - -### stack - -Stack is the general purpose runtime state that opcodes can read from and write to according to their functionality. - -Signature: - -```typescript -stack: BigNumberish[]; -``` - - - -### stackIndex - -Opcodes write to the stack at the stack index and can consume from the stack by decrementing the index and reading between the old and new stack index. IMPORANT: The stack is never zeroed out so the index must be used to find the "top" of the stack as the result of an `eval`. - -Signature: - -```typescript -stackIndex: BigNumberish; -``` diff --git a/docs/interfaces/stateconfig.md b/docs/interfaces/stateconfig.md index fefbd26..af7b7fb 100644 --- a/docs/interfaces/stateconfig.md +++ b/docs/interfaces/stateconfig.md @@ -13,25 +13,11 @@ interface StateConfig | Property | Type | Description | | --- | --- | --- | -| [argumentsLength](./stateconfig.md#argumentsLength-property) | `BigNumberish` | Sets the length of the uint256\[\] of the arguments. | | [constants](./stateconfig.md#constants-property) | `BigNumberish[]` | Constants verbatim. | | [sources](./stateconfig.md#sources-property) | `BytesLike[]` | Sources verbatim. | -| [stackLength](./stateconfig.md#stackLength-property) | `BigNumberish` | Sets the length of the uint256\[\] of the stack. | ## Property Details - - -### argumentsLength - -Sets the length of the uint256\[\] of the arguments. - -Signature: - -```typescript -argumentsLength: BigNumberish; -``` - ### constants @@ -55,15 +41,3 @@ Sources verbatim. ```typescript sources: BytesLike[]; ``` - - - -### stackLength - -Sets the length of the uint256\[\] of the stack. - -Signature: - -```typescript -stackLength: BigNumberish; -``` diff --git a/docs/interfaces/storageopcodesrange.md b/docs/interfaces/storageopcodesrange.md new file mode 100644 index 0000000..0e0f987 --- /dev/null +++ b/docs/interfaces/storageopcodesrange.md @@ -0,0 +1,43 @@ + +# Interface StorageOpcodesRange + +Interface for accessible by vm storage's slots range available for a contract to be used as local opcodes. + +Signature: + +```typescript +interface StorageOpcodesRange +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [length](./storageopcodesrange.md#length-property) | `BigNumberish` | Length of the storage opcodes of a contract, i.e. the number of local opcodes | +| [pointer](./storageopcodesrange.md#pointer-property) | `BigNumberish` | pointer to the storage slot of the first property of properties of a contract used as STORAGE opcode. | + +## Property Details + + + +### length + +Length of the storage opcodes of a contract, i.e. the number of local opcodes + +Signature: + +```typescript +length: BigNumberish; +``` + + + +### pointer + +pointer to the storage slot of the first property of properties of a contract used as STORAGE opcode. + +Signature: + +```typescript +pointer: BigNumberish; +``` diff --git a/docs/namespaces/utils.md b/docs/namespaces/utils.md index 53732d0..4289e5e 100644 --- a/docs/namespaces/utils.md +++ b/docs/namespaces/utils.md @@ -12,10 +12,8 @@ | Function | Description | | --- | --- | -| [arg(valIndex)](./utils/variables/arg_1.md) | function to pack the operand for VAL opcode of ZIPMAP arguments | | [callSize(sourceIndex, loopSize, valSize)](./utils/variables/callsize_1.md) | Constructs the operand for RainVM's `call` AllStandardOps by packing 3 numbers into a single byte. All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 \* 32 bytes) on the stack. | | [selectLte(logic, mode, length)](./utils/variables/selectlte_1.md) | function to set up the operand for a SELECT\_LTE opcode | -| [skip(places, conditional)](./utils/variables/skip_1.md) | function for the operand of the SKIP opcode | | [tierRange(startTier, endTier)](./utils/variables/tierrange_1.md) | function to pack start/end tier range into a byte size number for the UPDATE\_BLOCKS\_FOR\_TIER\_RANGE opcode | ## Variables @@ -28,8 +26,11 @@ | [hexlify](./utils/variables/hexlify.md) | ethers hexlify | | [hexZeroPad](./utils/variables/hexzeropad.md) | ethers hexZeroPad | | [op](./utils/variables/op.md) | Converts an opcode and operand to bytes, and returns their concatenation. | -| [paddedUInt256](./utils/variables/paddeduint256.md) | Utility function that transforms a BigNumber from the output of the ITier contract report | +| [paddedUInt128](./utils/variables/paddeduint128.md) | Utility function to produce 128 bits size hexString | +| [paddedUInt160](./utils/variables/paddeduint160.md) | Utility function that transforms a BigNumberish to an ether address (40 char length hexString) | +| [paddedUInt256](./utils/variables/paddeduint256.md) | Utility function that transforms a BigNumberish from the output of the ITierV2 contract report | | [paddedUInt32](./utils/variables/paddeduint32.md) | Utility function to produce 32 bits size hexString | +| [paddedUInt64](./utils/variables/paddeduint64.md) | Utility function to produce 64 bits size hexString | | [parseUnits](./utils/variables/parseunits.md) | ethers parseUnits | | [replaceAt](./utils/variables/replaceat.md) | Replace a value in a BytesLike. Set `replacement` in the `index` on the `original` BytesLike value | | [zeroPad](./utils/variables/zeropad.md) | ethers zeroPad | diff --git a/docs/namespaces/utils/variables/arg_1.md b/docs/namespaces/utils/variables/arg_1.md deleted file mode 100644 index 871ab93..0000000 --- a/docs/namespaces/utils/variables/arg_1.md +++ /dev/null @@ -1,23 +0,0 @@ - -# Function utils.arg() - -function to pack the operand for VAL opcode of ZIPMAP arguments - -Signature: - -```typescript -function arg(valIndex: number): number; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| valIndex | `number` | index of the ZIPMAP arguments | - -Returns: - -`number` - -a byte size number - diff --git a/docs/namespaces/utils/variables/paddeduint128.md b/docs/namespaces/utils/variables/paddeduint128.md new file mode 100644 index 0000000..24d398a --- /dev/null +++ b/docs/namespaces/utils/variables/paddeduint128.md @@ -0,0 +1,10 @@ + +# Variable utils.paddedUInt128 + +Utility function to produce 128 bits size hexString + +Signature: + +```typescript +paddedUInt128: (number: BigNumberish) => string +``` diff --git a/docs/namespaces/utils/variables/paddeduint160.md b/docs/namespaces/utils/variables/paddeduint160.md new file mode 100644 index 0000000..1efdd70 --- /dev/null +++ b/docs/namespaces/utils/variables/paddeduint160.md @@ -0,0 +1,10 @@ + +# Variable utils.paddedUInt160 + +Utility function that transforms a BigNumberish to an ether address (40 char length hexString) + +Signature: + +```typescript +paddedUInt160: (address: BigNumberish) => string +``` diff --git a/docs/namespaces/utils/variables/paddeduint256.md b/docs/namespaces/utils/variables/paddeduint256.md index fd62afd..91692f9 100644 --- a/docs/namespaces/utils/variables/paddeduint256.md +++ b/docs/namespaces/utils/variables/paddeduint256.md @@ -1,10 +1,10 @@ # Variable utils.paddedUInt256 -Utility function that transforms a BigNumber from the output of the ITier contract report +Utility function that transforms a BigNumberish from the output of the ITierV2 contract report Signature: ```typescript -paddedUInt256: (report: BigNumber) => string +paddedUInt256: (report: BigNumberish) => string ``` diff --git a/docs/namespaces/utils/variables/paddeduint32.md b/docs/namespaces/utils/variables/paddeduint32.md index 6e86286..cedf510 100644 --- a/docs/namespaces/utils/variables/paddeduint32.md +++ b/docs/namespaces/utils/variables/paddeduint32.md @@ -6,5 +6,5 @@ Utility function to produce 32 bits size hexString Signature: ```typescript -paddedUInt32: (number: number | BytesLike | Hexable) => string +paddedUInt32: (number: BigNumberish) => string ``` diff --git a/docs/namespaces/utils/variables/paddeduint64.md b/docs/namespaces/utils/variables/paddeduint64.md new file mode 100644 index 0000000..2a90f2c --- /dev/null +++ b/docs/namespaces/utils/variables/paddeduint64.md @@ -0,0 +1,10 @@ + +# Variable utils.paddedUInt64 + +Utility function to produce 64 bits size hexString + +Signature: + +```typescript +paddedUInt64: (number: BigNumberish) => string +``` diff --git a/docs/namespaces/utils/variables/skip_1.md b/docs/namespaces/utils/variables/skip_1.md deleted file mode 100644 index 0428b18..0000000 --- a/docs/namespaces/utils/variables/skip_1.md +++ /dev/null @@ -1,26 +0,0 @@ - -# Function utils.skip() - -function for the operand of the SKIP opcode - -- SKIP is no longer available - -Signature: - -```typescript -function skip(places: number, conditional?: boolean): number; -``` - -## Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| places | `number` | | -| conditional | `boolean` | | - -Returns: - -`number` - -a byte size number - diff --git a/docs/types/addresses.md b/docs/types/addresses.md index 0b88b4e..2b3012b 100644 --- a/docs/types/addresses.md +++ b/docs/types/addresses.md @@ -8,18 +8,17 @@ Type for all the addresses stored in the Book. ```typescript type Addresses = { [key: string]: string; + vmStateBuilder: string; redeemableERC20Factory: string; verifyFactory: string; verifyTierFactory: string; - erc20BalanceTierFactory: string; - erc20TransferTierFactory: string; combineTierFactory: string; - erc721BalanceTierFactory: string; - gatedNFTFactory: string; redeemableERC20ClaimEscrow: string; noticeBoard: string; emissionsERC20Factory: string; saleFactory: string; alwaysTier: string; + stakeFactory: string; + orderBook: string; }; ``` diff --git a/docs/types/bountyconfig.md b/docs/types/bountyconfig.md new file mode 100644 index 0000000..da27615 --- /dev/null +++ b/docs/types/bountyconfig.md @@ -0,0 +1,12 @@ + +# Type BountyConfig + + +Signature: + +```typescript +type BountyConfig = { + aVaultId: BigNumberish; + bVaultId: BigNumberish; +}; +``` diff --git a/docs/types/combinetierdeployargs.md b/docs/types/combinetierdeployargs.md index bf8ace7..ec66e18 100644 --- a/docs/types/combinetierdeployargs.md +++ b/docs/types/combinetierdeployargs.md @@ -8,5 +8,8 @@ It will be built with the desired configuration for the CombineTier allowing to Signature: ```typescript -type CombineTierDeployArgs = StateConfig; +type CombineTierDeployArgs = { + combinedTiersLength: BigNumberish; + sourceConfig: StateConfig; +}; ``` diff --git a/docs/types/combinetieropcodes.md b/docs/types/combinetieropcodes.md deleted file mode 100644 index 4d71101..0000000 --- a/docs/types/combinetieropcodes.md +++ /dev/null @@ -1,12 +0,0 @@ - -# Type CombineTierOpcodes - -Type for the opcodes availables in a CombineTier instance. - -Signature: - -```typescript -type CombineTierOpcodes = typeof AllStandardOps & { - ACCOUNT: number; -}; -``` diff --git a/docs/types/depositconfig.md b/docs/types/depositconfig.md new file mode 100644 index 0000000..b687b8f --- /dev/null +++ b/docs/types/depositconfig.md @@ -0,0 +1,13 @@ + +# Type DepositConfig + + +Signature: + +```typescript +type DepositConfig = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; +``` diff --git a/docs/types/emissionserc20opcodes.md b/docs/types/emissionserc20opcodes.md deleted file mode 100644 index bf7cc70..0000000 --- a/docs/types/emissionserc20opcodes.md +++ /dev/null @@ -1,12 +0,0 @@ - -# Type EmissionsERC20Opcodes - -Type for the opcodes availables in a EmissionsERC20 instance. - -Signature: - -```typescript -type EmissionsERC20Opcodes = typeof AllStandardOps & { - CLAIMANT_ACCOUNT: number; -}; -``` diff --git a/docs/types/order.md b/docs/types/order.md new file mode 100644 index 0000000..9dd2c2c --- /dev/null +++ b/docs/types/order.md @@ -0,0 +1,18 @@ + +# Type Order + +Order + +Signature: + +```typescript +type Order = { + owner: string; + inputToken: string; + inputVaultId: BigNumberish; + outputToken: string; + outputVaultId: BigNumberish; + tracking: BigNumberish; + vmState: BytesLike; +}; +``` diff --git a/docs/types/orderbookopcodes.md b/docs/types/orderbookopcodes.md new file mode 100644 index 0000000..576fb58 --- /dev/null +++ b/docs/types/orderbookopcodes.md @@ -0,0 +1,13 @@ + +# Type OrderBookOpcodes + +Type for the opcodes availables in a OrderBook instance. + +Signature: + +```typescript +type OrderBookOpcodes = typeof AllStandardOps & { + ORDER_FUNDS_CLEARED: number; + COUNTERPARTY_FUNDS_CLEARED: number; +}; +``` diff --git a/docs/types/orderconfig.md b/docs/types/orderconfig.md new file mode 100644 index 0000000..4d6f376 --- /dev/null +++ b/docs/types/orderconfig.md @@ -0,0 +1,16 @@ + +# Type OrderConfig + + +Signature: + +```typescript +type OrderConfig = { + inputToken: string; + inputVaultId: BigNumberish; + outputToken: string; + outputVaultId: BigNumberish; + tracking: BigNumberish; + vmStateConfig: StateConfig; +}; +``` diff --git a/docs/types/saleopcodes.md b/docs/types/saleopcodes.md deleted file mode 100644 index 7997e46..0000000 --- a/docs/types/saleopcodes.md +++ /dev/null @@ -1,16 +0,0 @@ - -# Type SaleOpcodes - -Type for the opcodes availables in a CombineTier instance. - -Signature: - -```typescript -type SaleOpcodes = typeof VM.Opcodes & { - REMAINING_UNITS: number; - TOTAL_RESERVE_IN: number; - CURRENT_BUY_UNITS: number; - TOKEN_ADDRESS: number; - RESERVE_ADDRESS: number; -}; -``` diff --git a/docs/types/stakedeployargs.md b/docs/types/stakedeployargs.md new file mode 100644 index 0000000..56ae4c3 --- /dev/null +++ b/docs/types/stakedeployargs.md @@ -0,0 +1,14 @@ + +# Type StakeDeployArgs + + +Signature: + +```typescript +type StakeDeployArgs = { + token: string; + initialRatio: BigNumberish; + name: string; + symbol: string; +}; +``` diff --git a/docs/types/withdrawconfig.md b/docs/types/withdrawconfig.md new file mode 100644 index 0000000..3f08e88 --- /dev/null +++ b/docs/types/withdrawconfig.md @@ -0,0 +1,13 @@ + +# Type WithdrawConfig + + +Signature: + +```typescript +type WithdrawConfig = { + token: string; + vaultId: BigNumberish; + amount: BigNumberish; +}; +``` diff --git a/package.json b/package.json index 01c15ad..a598433 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "1.1.0", + "version": "2.0.0", "license": "CAL", "main": "dist/index.js", "typings": "dist/index.d.ts", diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts index fcc4a95..d1e6efd 100644 --- a/src/RainJS/CombineTierJS.ts +++ b/src/RainJS/CombineTierJS.ts @@ -1,46 +1,41 @@ -import { BigNumber, Contract, Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; -import { +import { BigNumber, Contract, Signer } from 'ethers'; +import { StateConfig } from '../classes/vm'; +import { ApplyOpFn, RainJS, StateJS } from './RainJS'; +import { CombineTierContext, - CombineTierStorage -} from "../contracts/tiers/combineTier"; - + CombineTierStorage, +} from '../contracts/tiers/combineTier'; /** * @public - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. * @see CombineTier.sol in contracts - * + * */ export class CombineTierJS extends RainJS { - /** * Constructor of CombineTierJS to create a instance of this class with CombineTier's local opcodes. * @see RainJS - * + * * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class + * @param options - (optional) additional arguments for instantiating this class * (a Signer, a CombineTier Contract and custom opcode functions) - * + * */ constructor( state: StateConfig, options?: { - signer?: Signer, - contract?: Contract, - applyOpFn?: ApplyOpFn, - storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the CombineTierJS's CONTEXT opcode function + signer?: Signer; + contract?: Contract; + applyOpFn?: ApplyOpFn; + storageOpFn?: ApplyOpFn; // for overriding the CombineTierJS's STORAGE opcode function + contextOpFn?: ApplyOpFn; // for overriding the CombineTierJS's CONTEXT opcode function } ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ); + super(state, { + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + }); // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction @@ -48,12 +43,12 @@ export class CombineTierJS extends RainJS { if (options?.storageOpFn && options.storageOpFn[i]) { this._STORAGE_[i] = options.storageOpFn[i]; } - }; + } for (let i = 0; i < CombineTierContext.length; i++) { if (options?.contextOpFn && options.contextOpFn[i]) { this._CONTEXT_[i] = options.contextOpFn[i]; } - }; + } } /** @@ -61,25 +56,24 @@ export class CombineTierJS extends RainJS { * the required value need to be passed to "run" method as the context array in "data" object. * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. */ - protected _CONTEXT_: ApplyOpFn = { - [CombineTierContext.Account] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.context != undefined) { + protected _CONTEXT_: ApplyOpFn = { + [CombineTierContext.Account]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (data && data.context != undefined) { state.stack.push( - BigNumber.from( - data.context[CombineTierContext.Account] - ) - ) - } - else throw new Error("Undefined buy units") + BigNumber.from(data.context[CombineTierContext.Account]) + ); + } else throw new Error('Undefined buy units'); }, - } + }; /** - * key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) - * @remark CombineTier doesnt have any STORAGE opcode by default and in its contract level, + * key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) + * @remarks CombineTier doesnt have any STORAGE opcode by default and in its contract level, * however in JSVM there is the ability to pass in custom opcode functions to it */ - protected _STORAGE_: ApplyOpFn = {}; - -} \ No newline at end of file + protected _STORAGE_: ApplyOpFn = {}; +} diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts index d9920cd..97d8897 100644 --- a/src/RainJS/EmissionsERC20JS.ts +++ b/src/RainJS/EmissionsERC20JS.ts @@ -1,46 +1,41 @@ -import { BigNumber, Contract, Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; -import { +import { BigNumber, Contract, Signer } from 'ethers'; +import { StateConfig } from '../classes/vm'; +import { ApplyOpFn, RainJS, StateJS } from './RainJS'; +import { EmissionsERC20Context, - EmissionsERC20Storage -} from "../contracts/emissionsERC20"; - + EmissionsERC20Storage, +} from '../contracts/emissionsERC20'; /** * @public - The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. * @see EmissionsERC20.sol in contracts - * + * */ export class EmissionsERC20JS extends RainJS { - /** * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. * @see RainJS - * + * * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class + * @param options - (optional) additional arguments for instantiating this class * (a Signer, a EmissionsERC20JS Contract and custom opcode functions) - * + * */ constructor( state: StateConfig, options?: { - signer?: Signer, - contract?: Contract, - applyOpFn?: ApplyOpFn, - storageOpFn?: ApplyOpFn, // for overriding the EmissionsERC20's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the EmissionsERC20's CONTEXT opcode function + signer?: Signer; + contract?: Contract; + applyOpFn?: ApplyOpFn; + storageOpFn?: ApplyOpFn; // for overriding the EmissionsERC20's STORAGE opcode function + contextOpFn?: ApplyOpFn; // for overriding the EmissionsERC20's CONTEXT opcode function } ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ); + super(state, { + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + }); // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction @@ -48,12 +43,12 @@ export class EmissionsERC20JS extends RainJS { if (options?.storageOpFn && options.storageOpFn[i]) { this._STORAGE_[i] = options.storageOpFn[i]; } - }; + } for (let i = 0; i < EmissionsERC20Context.length; i++) { if (options?.contextOpFn && options.contextOpFn[i]) { this._CONTEXT_[i] = options.contextOpFn[i]; } - }; + } } /** @@ -61,25 +56,24 @@ export class EmissionsERC20JS extends RainJS { * the required value need to be passed to "run" method as the context array in "data" object. * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. */ - protected _CONTEXT_: ApplyOpFn = { - [EmissionsERC20Context.ClaimantAccount] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.context != undefined) { + protected _CONTEXT_: ApplyOpFn = { + [EmissionsERC20Context.ClaimantAccount]: async ( + state: StateJS, + operand: number, + data?: any + ) => { + if (data && data.context != undefined) { state.stack.push( - BigNumber.from( - data.context[EmissionsERC20Context.ClaimantAccount] - ) - ) - } - else throw new Error("Undefined buy units") + BigNumber.from(data.context[EmissionsERC20Context.ClaimantAccount]) + ); + } else throw new Error('Undefined buy units'); }, - } + }; /** - * key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) - * @remark EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, + * key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) + * @remarks EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, * however in JSVM there is the ability to pass in custom opcode functions to it */ - protected _STORAGE_: ApplyOpFn = {}; - -} \ No newline at end of file + protected _STORAGE_: ApplyOpFn = {}; +} diff --git a/src/RainJS/OrderbookJS.ts b/src/RainJS/OrderbookJS.ts index 66d33a0..6fea339 100644 --- a/src/RainJS/OrderbookJS.ts +++ b/src/RainJS/OrderbookJS.ts @@ -1,43 +1,39 @@ -import { BigNumber, Contract, Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; -import { OrderBook, OrderbookContext } from "../contracts/orderBook"; +import { BigNumber, Contract, Signer } from 'ethers'; +import { StateConfig } from '../classes/vm'; +import { ApplyOpFn, RainJS, StateJS } from './RainJS'; +import { OrderBook, OrderbookContext } from '../contracts/orderBook'; // @TODO - not complete, local opcodes functions need to be added /** * @public - The javascript version of OrderbookVM which inherits RainJS with local Orderbook opcodes. * @see Orderbook.sol in contracts - * + * */ export class OrderbookJS extends RainJS { - /** * Constructor of OrderbookJS to create a instance of this class with Orderbook's local opcodes. * @see RainJS - * + * * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class + * @param options - (optional) additional arguments for instantiating this class * (a Signer, a Orderbook Contract and custom opcode functions) - * + * */ constructor( state: StateConfig, options?: { - signer?: Signer, - contract?: Contract, - applyOpFn?: ApplyOpFn, - storageOpFn?: ApplyOpFn, // for overriding the OrderbookJS's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the OrderbookJS's CONTEXT opcode function + signer?: Signer; + contract?: Contract; + applyOpFn?: ApplyOpFn; + storageOpFn?: ApplyOpFn; // for overriding the OrderbookJS's STORAGE opcode function + contextOpFn?: ApplyOpFn; // for overriding the OrderbookJS's CONTEXT opcode function } ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ); + super(state, { + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + }); // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction @@ -48,7 +44,7 @@ export class OrderbookJS extends RainJS { if (options?.contextOpFn && options.contextOpFn[i]) { this._CONTEXT_[i] = options.contextOpFn[i]; } - }; + } } protected _OPCODE_: ApplyOpFn = { @@ -57,17 +53,13 @@ export class OrderbookJS extends RainJS { state: StateJS, operand: number, data?: any - ) => { - - }, + ) => {}, [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async ( state: StateJS, operand: number, data?: any - ) => { - - } + ) => {}, }; /** @@ -75,35 +67,36 @@ export class OrderbookJS extends RainJS { * the required value need to be passed to "run" method as the context array in "data" object. * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. */ - protected _CONTEXT_: ApplyOpFn = { - [OrderbookContext.OrderHash]: (state: StateJS, operand: number, data?: any) => { - if(data && data.context != undefined) { + protected _CONTEXT_: ApplyOpFn = { + [OrderbookContext.OrderHash]: ( + state: StateJS, + operand: number, + data?: any + ) => { + if (data && data.context != undefined) { state.stack.push( - BigNumber.from( - data.context[OrderbookContext.OrderHash] - ) - ) - } - else throw new Error("Undefined buy units") + BigNumber.from(data.context[OrderbookContext.OrderHash]) + ); + } else throw new Error('Undefined buy units'); }, - [OrderbookContext.CounterParty]: (state: StateJS, operand: number, data?: any) => { - if(data && data.context != undefined) { + [OrderbookContext.CounterParty]: ( + state: StateJS, + operand: number, + data?: any + ) => { + if (data && data.context != undefined) { state.stack.push( - BigNumber.from( - data.context[OrderbookContext.CounterParty] - ) - ) - } - else throw new Error("Undefined buy units") + BigNumber.from(data.context[OrderbookContext.CounterParty]) + ); + } else throw new Error('Undefined buy units'); }, - } + }; /** - * key/value pair of STORAGE opcodes of the Orderbook JSVM (empty with no functions) - * @remark Orderbook doesnt have any STORAGE opcode by default and in its contract level, + * key/value pair of STORAGE opcodes of the Orderbook JSVM (empty with no functions) + * @remarks Orderbook doesnt have any STORAGE opcode by default and in its contract level, * however in JSVM there is the ability to pass in custom opcode functions to it */ - protected _STORAGE_: ApplyOpFn = {}; - -} \ No newline at end of file + protected _STORAGE_: ApplyOpFn = {}; +} diff --git a/src/classes/vm.ts b/src/classes/vm.ts index ae49c7a..f6bf5ff 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -12,7 +12,7 @@ import { arrayify, } from '../utils'; -/* +/** * @public * * All the standard Op Codes @@ -237,6 +237,7 @@ export interface StateConfig { } /** + * @public * Interface for accessible by vm storage's slots range available for a contract to be * used as local opcodes. */ @@ -253,6 +254,7 @@ export interface StorageOpcodesRange { } /** + * @public * Enum for DEBUG opcode operands */ export enum Debug { diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index a3c2cec..fdba5e0 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -17,13 +17,13 @@ import { ContractTransaction, } from 'ethers'; - /** + * @public * Enum for operand of the emissionsERC20's CONTEXT opcode */ - export enum EmissionsERC20Context { +export enum EmissionsERC20Context { /** - * 0 or the index of the context array in the emissionsERC20 + * 0 or the index of the context array in the emissionsERC20 * contract used as the operand for CONTEXT opcode. * operand for CONTEXT opcode to stack the claimant account that report is being call for. */ @@ -31,17 +31,18 @@ import { /** * length of EmissionsERC20's valid context opcodes */ - length + length, } /** + * @public * Enum for operand of the EmissionsERC20's STORAGE opcode */ - export enum EmissionsERC20Storage { +export enum EmissionsERC20Storage { /** * length of EmissionsERC20's valid storage opcodes */ - length + length, } /** @@ -75,7 +76,6 @@ export class EmissionsERC20 extends TierContract { * */ constructor(address: string, signer: Signer) { - EmissionsERC20.checkAddress(address); super(address, signer); @@ -365,7 +365,7 @@ export class EmissionsERC20 extends TierContract { /** * Pointers to opcode functions, necessary for being able to read the packedBytes - * + * * @param override - @see ReadTxOverrides * @returns the opcode functions pointers */ @@ -373,7 +373,7 @@ export class EmissionsERC20 extends TierContract { /** * Returns the pointer and length for emissionERC20's storage opcodes - * + * * @param override - @see ReadTxOverrides * @returns a StorageOpcodesRange */ diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index 604f7b1..a5c7d00 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -189,9 +189,10 @@ export type WithdrawConfig = { }; /** + * @public * Enum for operand of the Orderbook's CONTEXT opcode */ - export enum OrderbookContext { +export enum OrderbookContext { /** * 0 or the index of the context array for Orderbook CONTEXT opcode * stacks the Orderhash @@ -205,15 +206,16 @@ export type WithdrawConfig = { /** * length of Orderbook's valid context opcodes */ - length -}; + length, +} /** + * @public * Enum for operand of the Orderbook's STORAGE opcode */ - export enum OrderbookStroage { +export enum OrderbookStroage { /** * length of Orederbook's valid storage opcodes */ - length -} \ No newline at end of file + length, +} diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index fdd78ec..46d0ebc 100644 --- a/src/contracts/redeemableERC20.ts +++ b/src/contracts/redeemableERC20.ts @@ -383,7 +383,7 @@ export class RedeemableERC20 extends FactoryContract { * returned. * @param phaseTimes_ - Fixed array of phase times to compare against. * @param timestamp_ - Determine the relevant phase relative to this time. - * @return phase_ The "current" phase relative to the timestamp and phase + * @returns phase_ The "current" phase relative to the timestamp and phase * times list. */ public readonly phaseAtTime: ( @@ -453,10 +453,10 @@ export class RedeemableERC20 extends FactoryContract { * specific timestamp. * `Phase.ZERO` will always return block `0`. * Every other phase will map to a time in `phaseTimes_`. - * + * * @param phaseTimes_ - Fixed array of phase blocks to compare against. * @param phase_ - Determine the relevant block number for this phase. - * @return timestamp_ The timestamp for the phase according to + * @returns timestamp_ The timestamp for the phase according to * `phaseTimes_`. */ public readonly timeForPhase: ( diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index 88c0e8b..b221d38 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -12,6 +12,7 @@ import { /** + * @public * Enum for operand of the sale's Storage Opcodes */ export enum SaleStorage { @@ -46,6 +47,7 @@ export enum SaleStorage { }; /** + * @public * Enum for operand of the sale's CONTEXT opcode */ export enum SaleContext { diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 2695d50..f894722 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -471,7 +471,7 @@ export class SaleDurationInTimestamp { * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount * that needs to be raiseed so the raises status becomes "success" after raise ends. * - * @remark please note that this method should not be used with applyExtraTime as they are opossit + * @remarks please note that this method should not be used with applyExtraTime as they are opossit * of eachother and also the order of using this method along with other methods of this class is * important * @@ -661,7 +661,7 @@ export class SaleDurationInBlocks { * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount * that needs to be raiseed so the raises status becomes "success" after raise ends. * - * @remark please note that this method should not be used with applyExtraTime as they are opossit + * @remarks please note that this method should not be used with applyExtraTime as they are opossit * of eachother and also the order of using this method along with other methods of this class is * important * diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index f5a9fc1..aa107d8 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -22,6 +22,7 @@ export type CombineTierDeployArgs = { }; /** + * @public * Enum for operand of the combineTier's CONTEXT opcode */ export enum CombineTierContext { @@ -38,6 +39,7 @@ export enum CombineTierContext { } /** + * @public * Enum for operand of the CombineTier's STORAGE opcode */ export enum CombineTierStorage { diff --git a/src/contracts/verify.ts b/src/contracts/verify.ts index c9b5adb..61380d7 100644 --- a/src/contracts/verify.ts +++ b/src/contracts/verify.ts @@ -348,7 +348,7 @@ export class Verify extends FactoryContract { * Derives a single `Status` from a `State` and a reference timestamp. * @param state_ - The raw `State` to reduce into a `Status`. * @param timestamp_ - The timestamp to compare `State` against. - * @return status_ The status in `State` given `timestamp_`. + * @returns status_ The status in `State` given `timestamp_`. */ public readonly statusAtTime: ( state_: VerifyState, From 2b410a87e7d34c26d78d9469239a43422794bb02 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Wed, 22 Jun 2022 11:53:01 +0000 Subject: [PATCH 022/125] some updates and debugs --- src/RainJS/CombineTierJS.ts | 6 ++--- src/RainJS/EmissionsERC20JS.ts | 6 ++--- src/RainJS/RainJS.ts | 12 ++++----- src/RainJS/SaleJS.ts | 24 ++++++++++------- .../emissionsERC20ScriptGenerator.ts | 27 +++---------------- .../script-generators/saleScriptGenerator.ts | 8 +++--- 6 files changed, 33 insertions(+), 50 deletions(-) diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts index fcc4a95..71680c8 100644 --- a/src/RainJS/CombineTierJS.ts +++ b/src/RainJS/CombineTierJS.ts @@ -1,4 +1,4 @@ -import { BigNumber, Contract, Signer } from "ethers"; +import { BigNumber, Signer } from "ethers"; import { StateConfig } from "../classes/vm"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; import { @@ -27,7 +27,7 @@ export class CombineTierJS extends RainJS { state: StateConfig, options?: { signer?: Signer, - contract?: Contract, + contract?: string, applyOpFn?: ApplyOpFn, storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function contextOpFn?: ApplyOpFn // for overriding the CombineTierJS's CONTEXT opcode function @@ -38,7 +38,7 @@ export class CombineTierJS extends RainJS { { signer: options?.signer, contract: options?.contract, - applyOpFn: options?.applyOpFn + applyOpFn: options?.applyOpFn, } ); diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts index d9920cd..c4d0b50 100644 --- a/src/RainJS/EmissionsERC20JS.ts +++ b/src/RainJS/EmissionsERC20JS.ts @@ -1,4 +1,4 @@ -import { BigNumber, Contract, Signer } from "ethers"; +import { BigNumber, Signer } from "ethers"; import { StateConfig } from "../classes/vm"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; import { @@ -27,7 +27,7 @@ export class EmissionsERC20JS extends RainJS { state: StateConfig, options?: { signer?: Signer, - contract?: Contract, + contract?: string, applyOpFn?: ApplyOpFn, storageOpFn?: ApplyOpFn, // for overriding the EmissionsERC20's STORAGE opcode function contextOpFn?: ApplyOpFn // for overriding the EmissionsERC20's CONTEXT opcode function @@ -38,7 +38,7 @@ export class EmissionsERC20JS extends RainJS { { signer: options?.signer, contract: options?.contract, - applyOpFn: options?.applyOpFn + applyOpFn: options?.applyOpFn, } ); diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 3f41db5..39594be 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -1,4 +1,4 @@ -import { BigNumber, Contract, ethers, Signer } from 'ethers'; +import { BigNumber, ethers, Signer } from 'ethers'; import { Tier } from '../classes/tierContract'; import { StateConfig, VM } from '../classes/vm'; import { ERC1155 } from '../contracts/generics/erc1155'; @@ -90,7 +90,7 @@ export class RainJS { /** * An ethers Contract */ - public contract?: Contract; + public contract?: string; /** * Object that contains the CONTEXT opcode functions (i.e. local opcodes) @@ -116,7 +116,7 @@ export class RainJS { options?: { signer?: Signer; provider?: Provider; - contract?: Contract; + contract?: string; applyOpFn?: ApplyOpFn; storageOpFn?: ApplyOpFn; // for overriding the CombineTierJS's STORAGE opcode function contextOpFn?: ApplyOpFn; // for overriding the CombineTierJS's CONTEXT opcode function @@ -524,16 +524,16 @@ export class RainJS { if (this.signer != undefined) { state.stack.push(BigNumber.from(await this.signer.getAddress())); } - else throw new Error("undefined signer") + else throw new Error("undefined signer or signer address") }, - [VM.Opcodes.THIS_ADDRESS]: async ( + [VM.Opcodes.THIS_ADDRESS]: ( state: StateJS, operand: number, data?: any ) => { if (this.contract != undefined) { - state.stack.push(BigNumber.from(this.contract.address)); + state.stack.push(BigNumber.from(this.contract)); } else throw new Error('Undefined contract'); }, diff --git a/src/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts index aa31706..68f2977 100644 --- a/src/RainJS/SaleJS.ts +++ b/src/RainJS/SaleJS.ts @@ -1,8 +1,8 @@ -import { BigNumber, Contract, Signer } from "ethers"; +import { BigNumber, Signer } from "ethers"; import { StateConfig } from "../classes/vm"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; import { ERC20 } from "../contracts/generics/erc20"; -import { SaleContext, SaleStorage } from "../contracts/sale"; +import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; @@ -27,7 +27,7 @@ export class SaleJS extends RainJS { state: StateConfig, options?: { signer?: Signer, - contract?: Contract, + contract?: string, applyOpFn?: ApplyOpFn, storageOpFn?: ApplyOpFn, // for overriding the SaleJS's STORAGE opcode function contextOpFn?: ApplyOpFn // for overriding the SaleJS's CONTEXT opcode function @@ -38,7 +38,7 @@ export class SaleJS extends RainJS { { signer: options?.signer, contract: options?.contract, - applyOpFn: options?.applyOpFn + applyOpFn: options?.applyOpFn, } ); @@ -64,14 +64,15 @@ export class SaleJS extends RainJS { [SaleStorage.RemainingUnits] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { - const rTKNAddress_ = await this.contract.token(); + const salecontract_ = new Sale(this.contract, this.signer); + const rTKNAddress_ = await salecontract_.token(); const rTKNContract_ = new ERC20( rTKNAddress_, this.signer ); state.stack.push( BigNumber.from( - await rTKNContract_.balanceOf(this.contract.address) + await rTKNContract_.balanceOf(this.contract) ) ) } @@ -81,14 +82,15 @@ export class SaleJS extends RainJS { [SaleStorage.TotalReserveIn] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { - const reserveAddress_ = await this.contract.reserve(); + const salecontract_ = new Sale(this.contract, this.signer); + const reserveAddress_ = await salecontract_.reserve(); const reserveContract_ = new ERC20( reserveAddress_, this.signer ); state.stack.push( BigNumber.from( - await reserveContract_.balanceOf(this.contract.address) + await reserveContract_.balanceOf(this.contract) ) ) } @@ -98,9 +100,10 @@ export class SaleJS extends RainJS { [SaleStorage.TokenAddress] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { + const salecontract_ = new Sale(this.contract, this.signer); state.stack.push( BigNumber.from( - await this.contract.token() + await salecontract_.token() ) ) } @@ -110,9 +113,10 @@ export class SaleJS extends RainJS { [SaleStorage.ReserveAddress] : async(state: StateJS, operand: number, data?: any) => { if (this.signer && this.contract != undefined) { + const salecontract_ = new Sale(this.contract, this.signer); state.stack.push( BigNumber.from( - await this.contract.reserve() + await salecontract_.reserve() ) ) } diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index 7f8fdbc..c87d7f0 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -154,38 +154,18 @@ export class LinearEmissions { // prettier-ignore const REWARD = () => concat([ + op(VM.Opcodes.CONSTANT, 5), op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.MUL, 2), - ]); - - // prettier-ignore - const PROGRESS = () => - concat([ - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.MIN, 2), - ]); - - // prettier-ignore - const MULTIPLIER = () => - concat([ - PROGRESS(), - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.ADD, 2), ]); // prettier-ignore const FN = () => concat([ REWARD(), - MULTIPLIER(), + op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), ]); @@ -249,7 +229,6 @@ export class LinearEmissions { ethers.constants.MaxUint256, config.tierAddress, BASE_REWARD_PER_TIER, - BLOCKS_PER_PERIOD, BN_ONE, BN_ONE_REWARD, ]; diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 2695d50..2369c49 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -490,10 +490,10 @@ export class SaleDurationInTimestamp { constants: [MinimumRaise], sources: [ concat([ - op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.EVERY, 2), ]), ], }; @@ -680,10 +680,10 @@ export class SaleDurationInBlocks { constants: [MinimumRaise], sources: [ concat([ - op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), + op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.EVERY, 2), ]), ], }; From b3479456151b87f21ec2c950acfd67e08f85c570 Mon Sep 17 00:00:00 2001 From: NanezX Date: Thu, 23 Jun 2022 00:33:56 -0400 Subject: [PATCH 023/125] - Fixed issue with Eslint that disallowed run it - Added to the Source Friendly Generator more functionality and configurations. --- .eslintignore | 10 + .eslintrc.js | 7 +- docs/classes/humanfriendlysource.md | 19 +- docs/index.md | 2 + docs/namespaces/utils.md | 2 +- docs/namespaces/utils/variables/callsize_1.md | 4 +- docs/types/config.md | 13 + docs/types/prettifyconfig.md | 13 + package.json | 2 +- src/RainJS/CombineTierJS.ts | 2 +- src/RainJS/EmissionsERC20JS.ts | 2 +- src/RainJS/OrderbookJS.ts | 4 +- src/RainJS/RainJS.ts | 126 ++--- src/RainJS/SaleJS.ts | 10 +- src/classes/vm.ts | 34 +- src/friendlySource.ts | 141 +++++- src/utils.ts | 49 +- test/.eslintrc.js | 6 +- test/friendlySource.test.ts | 434 ++++++++++++++++++ 19 files changed, 732 insertions(+), 148 deletions(-) create mode 100644 .eslintignore create mode 100644 docs/types/config.md create mode 100644 docs/types/prettifyconfig.md diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..fadc50e --- /dev/null +++ b/.eslintignore @@ -0,0 +1,10 @@ +## Deps +node_modules + +## Hardhat +artifacts +cache +contracts +dist +typechain +/src/typechain \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index f1a0ce2..fe2e66e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,9 +1,6 @@ module.exports = { - extends: [ - 'react-app', - 'prettier/@typescript-eslint', - 'plugin:prettier/recommended', - ], + ignorePatterns: ['./src/typechain/*'], + extends: ['react-app'], settings: { react: { version: '999.999.999', diff --git a/docs/classes/humanfriendlysource.md b/docs/classes/humanfriendlysource.md index 58d3025..863375f 100644 --- a/docs/classes/humanfriendlysource.md +++ b/docs/classes/humanfriendlysource.md @@ -17,19 +17,19 @@ class HumanFriendlySource | Method | Description | | --- | --- | -| [get(\_state)](./humanfriendlysource.md#get-method-static-1) | | -| [prettify(\_text, n)](./humanfriendlysource.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source with an indented | +| [get(\_state, \_config)](./humanfriendlysource.md#get-method-static-1) | | +| [prettify(\_text, \_config)](./humanfriendlysource.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis | ## Static Method Details -### get(\_state) +### get(\_state, \_config) Signature: ```typescript -static get(_state: StateConfig): string; +static get(_state: StateConfig, _config?: Config): string; ``` #### Parameters @@ -37,6 +37,7 @@ static get(_state: StateConfig): string; | Parameter | Type | Description | | --- | --- | --- | | \_state | [StateConfig](../interfaces/stateconfig.md) | | +| \_config | [Config](../types/config.md) | | Returns: @@ -44,14 +45,16 @@ static get(_state: StateConfig): string; -### prettify(\_text, n) +### prettify(\_text, \_config) -Make more readable the output from the HumanFriendly Source with an indented +Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis + +If the string is already indentend, the method will wrongly generate the string Signature: ```typescript -static prettify(_text: string, n?: number): string; +static prettify(_text: string, _config?: PrettifyConfig): string; ``` #### Parameters @@ -59,7 +62,7 @@ static prettify(_text: string, n?: number): string; | Parameter | Type | Description | | --- | --- | --- | | \_text | `string` | The output from the HumanFriendlySource | -| n | `number` | The amount spaces based of each indent | +| \_config | [PrettifyConfig](../types/prettifyconfig.md) | The configuration of the prettify method (experimental) | Returns: diff --git a/docs/index.md b/docs/index.md index 307c1c5..36ef0f5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -97,6 +97,7 @@ | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | | [BountyConfig](./types/bountyconfig.md) | | | [CombineTierDeployArgs](./types/combinetierdeployargs.md) | The argument of the CombineTier. The StateConfig will be deployed as a pointer under VM State Pointer. | +| [Config](./types/config.md) | Specific the configuration of the generation method | | [DepositConfig](./types/depositconfig.md) | | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | | [OpcodeFN](./types/opcodefn.md) | A type for functions to override the default opcodes functions with it. | @@ -104,6 +105,7 @@ | [Order](./types/order.md) | Order | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | | +| [PrettifyConfig](./types/prettifyconfig.md) | Specific the configuration of the Prettify method. | | [StakeDeployArgs](./types/stakedeployargs.md) | | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | | [WithdrawConfig](./types/withdrawconfig.md) | | diff --git a/docs/namespaces/utils.md b/docs/namespaces/utils.md index 4289e5e..7b07e3a 100644 --- a/docs/namespaces/utils.md +++ b/docs/namespaces/utils.md @@ -12,7 +12,7 @@ | Function | Description | | --- | --- | -| [callSize(sourceIndex, loopSize, valSize)](./utils/variables/callsize_1.md) | Constructs the operand for RainVM's `call` AllStandardOps by packing 3 numbers into a single byte. All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 \* 32 bytes) on the stack. | +| [callSize(sourceIndex, loopSize, valSize)](./utils/variables/callsize_1.md) | Constructs the operand for RainVM's `zipmap` opcode by packing 3 numbers into a single byte. All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 \* 32 bytes) on the stack. | | [selectLte(logic, mode, length)](./utils/variables/selectlte_1.md) | function to set up the operand for a SELECT\_LTE opcode | | [tierRange(startTier, endTier)](./utils/variables/tierrange_1.md) | function to pack start/end tier range into a byte size number for the UPDATE\_BLOCKS\_FOR\_TIER\_RANGE opcode | diff --git a/docs/namespaces/utils/variables/callsize_1.md b/docs/namespaces/utils/variables/callsize_1.md index 6b7e494..d5af02a 100644 --- a/docs/namespaces/utils/variables/callsize_1.md +++ b/docs/namespaces/utils/variables/callsize_1.md @@ -1,7 +1,7 @@ # Function utils.callSize() -Constructs the operand for RainVM's `call` AllStandardOps by packing 3 numbers into a single byte. All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 \* 32 bytes) on the stack. +Constructs the operand for RainVM's `zipmap` opcode by packing 3 numbers into a single byte. All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 \* 32 bytes) on the stack. Signature: @@ -21,5 +21,3 @@ function callSize(sourceIndex: number, loopSize: number, valSize: number): numbe `number` -a byte size number - diff --git a/docs/types/config.md b/docs/types/config.md new file mode 100644 index 0000000..4ed11c0 --- /dev/null +++ b/docs/types/config.md @@ -0,0 +1,13 @@ + +# Type Config + +Specific the configuration of the generation method + +Signature: + +```typescript +type Config = { + contract?: string; + pretty?: boolean; +}; +``` diff --git a/docs/types/prettifyconfig.md b/docs/types/prettifyconfig.md new file mode 100644 index 0000000..582d50d --- /dev/null +++ b/docs/types/prettifyconfig.md @@ -0,0 +1,13 @@ + +# Type PrettifyConfig + +Specific the configuration of the Prettify method. + +Signature: + +```typescript +type PrettifyConfig = { + n?: number; + length?: number; +}; +``` diff --git a/package.json b/package.json index a598433..b9a1827 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "build": "tsdx build", "nix-build": "nix-shell --run yarn build", "test": "npx hardhat test", - "lint": "tsdx lint src", + "lint": "npx eslint \"src/**\"", "prepare": "tsdx build", "size": "size-limit", "analyze": "size-limit --why", diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts index d1e6efd..2c2f10d 100644 --- a/src/RainJS/CombineTierJS.ts +++ b/src/RainJS/CombineTierJS.ts @@ -62,7 +62,7 @@ export class CombineTierJS extends RainJS { operand: number, data?: any ) => { - if (data && data.context != undefined) { + if (data && data.context !== undefined) { state.stack.push( BigNumber.from(data.context[CombineTierContext.Account]) ); diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts index 97d8897..bf001b4 100644 --- a/src/RainJS/EmissionsERC20JS.ts +++ b/src/RainJS/EmissionsERC20JS.ts @@ -62,7 +62,7 @@ export class EmissionsERC20JS extends RainJS { operand: number, data?: any ) => { - if (data && data.context != undefined) { + if (data && data.context !== undefined) { state.stack.push( BigNumber.from(data.context[EmissionsERC20Context.ClaimantAccount]) ); diff --git a/src/RainJS/OrderbookJS.ts b/src/RainJS/OrderbookJS.ts index 6fea339..9221d0e 100644 --- a/src/RainJS/OrderbookJS.ts +++ b/src/RainJS/OrderbookJS.ts @@ -73,7 +73,7 @@ export class OrderbookJS extends RainJS { operand: number, data?: any ) => { - if (data && data.context != undefined) { + if (data && data.context !== undefined) { state.stack.push( BigNumber.from(data.context[OrderbookContext.OrderHash]) ); @@ -85,7 +85,7 @@ export class OrderbookJS extends RainJS { operand: number, data?: any ) => { - if (data && data.context != undefined) { + if (data && data.context !== undefined) { state.stack.push( BigNumber.from(data.context[OrderbookContext.CounterParty]) ); diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 3f41db5..af58562 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -166,7 +166,7 @@ export class RainJS { const sourcesIndex = index ? index : 0; for (let i = 0; i < this.state.sources[sourcesIndex].length; i++) { - if (this.applyOpFn != undefined) { + if (this.applyOpFn !== undefined) { if ( Object.keys(this.applyOpFn).includes( this.state.sources[sourcesIndex][i].toString() @@ -242,13 +242,13 @@ export class RainJS { [VM.Opcodes.CONSTANT]: (state: StateJS, operand: number, data?: any) => { if (operand < state.constants.length) { - if (state.constants[operand] != undefined) { + if (state.constants[operand] !== undefined) { state.stack.push(state.constants[operand]); } else throw new Error('out-of-bound constants'); } else { if ( - state.argumentsStack[operand - state.constants.length] != undefined + state.argumentsStack[operand - state.constants.length] !== undefined ) { state.stack.push( state.argumentsStack[operand - state.constants.length] @@ -292,13 +292,13 @@ export class RainJS { const sourceIndex_ = operand & 7; const numberOfVals_ = (operand & 224) >> 5; const a_ = (operand & 24) >> 3; - const valSize_ = a_ == 3 ? 8 : a_ == 2 ? 16 : a_ == 1 ? 32 : 64; + const valSize_ = a_ === 3 ? 8 : a_ === 2 ? 16 : a_ === 1 ? 32 : 64; const loopSize_ = 64 / valSize_; const items_ = state.stack.splice(-(numberOfVals_ + 1)); let _startIndex = 64 - valSize_; let _endIndex = 64; - if (items_.length == numberOfVals_ + 1) { + if (items_.length === numberOfVals_ + 1) { for (let i = 0; i < loopSize_; i++) { state.argumentsStack.splice(-(numberOfVals_ + 1)); for (let j = 0; j < items_.length; j++) { @@ -312,7 +312,7 @@ export class RainJS { ); } for (let i = 0; i < this.state.sources[sourceIndex_].length; i++) { - if (this.applyOpFn != undefined) { + if (this.applyOpFn !== undefined) { if ( Object.keys(this.applyOpFn).includes( this.state.sources[sourceIndex_][i].toString() @@ -364,7 +364,7 @@ export class RainJS { ) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { + if (item1_ && item2_ && this.signer !== undefined) { const account_ = paddedUInt160(item2_); const erc20Address_ = paddedUInt160(item1_); const erc20Contract_ = new ERC20(erc20Address_, this.signer); @@ -379,7 +379,7 @@ export class RainJS { data?: any ) => { const item_ = state.stack.pop(); - if (item_ && this.signer != undefined) { + if (item_ && this.signer !== undefined) { const erc20Address_ = paddedUInt160(item_); const erc20Contract_ = new ERC20(erc20Address_, this.signer); state.stack.push(await erc20Contract_.totalSupply()); @@ -395,7 +395,7 @@ export class RainJS { const item3_ = state.stack.pop(); const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer != undefined) { + if (item1_ && item2_ && item3_ && this.signer !== undefined) { const snapshotId_ = item3_; const account_ = paddedUInt160(item2_); const erc20Address_ = paddedUInt160(item1_); @@ -412,7 +412,7 @@ export class RainJS { ) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { + if (item1_ && item2_ && this.signer !== undefined) { const snapshotId_ = item2_; const erc20Address_ = paddedUInt160(item1_); const erc20Snapshot_ = ERC20Snapshot__factory.connect(erc20Address_, this.signer); @@ -428,7 +428,7 @@ export class RainJS { ) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { + if (item1_ && item2_ && this.signer !== undefined) { const account_ = paddedUInt160(item2_); const erc721Address_ = paddedUInt160(item1_); const erc721Contract_ = new ERC721(erc721Address_, this.signer); @@ -444,7 +444,7 @@ export class RainJS { ) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined) { + if (item1_ && item2_ && this.signer !== undefined) { const tokenId_ = BigNumber.from(item2_); const erc721Address_ = paddedUInt160(item1_); const erc721Contract_ = new ERC721(erc721Address_, this.signer); @@ -463,7 +463,7 @@ export class RainJS { const item3_ = state.stack.pop(); const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer != undefined) { + if (item1_ && item2_ && item3_ && this.signer !== undefined) { const id_ = BigNumber.from(item3_); const account_ = paddedUInt160(item2_); const erc1155Address_ = paddedUInt160(item1_); @@ -485,8 +485,8 @@ export class RainJS { item1_ && item2_ && item3_ && - this.signer != undefined && - item2_.length == item3_.length + this.signer !== undefined && + item2_.length === item3_.length ) { const tokenIds_: BigNumber[] = []; for (let i = 0; i < item3_.length; i++) { @@ -510,7 +510,7 @@ export class RainJS { operand: number, data?: any ) => { - if (this.provider != undefined) { + if (this.provider !== undefined) { state.stack.push(BigNumber.from(await this.provider.getBlockNumber())); } else throw new Error('Undefined Provider'); @@ -521,7 +521,7 @@ export class RainJS { operand: number, data?: any ) => { - if (this.signer != undefined) { + if (this.signer !== undefined) { state.stack.push(BigNumber.from(await this.signer.getAddress())); } else throw new Error("undefined signer") @@ -532,7 +532,7 @@ export class RainJS { operand: number, data?: any ) => { - if (this.contract != undefined) { + if (this.contract !== undefined) { state.stack.push(BigNumber.from(this.contract.address)); } else throw new Error('Undefined contract'); @@ -543,7 +543,7 @@ export class RainJS { operand: number, data?: any ) => { - if (this.provider != undefined) { + if (this.provider !== undefined) { state.stack.push( BigNumber.from( (await this.provider.getBlock(await this.provider.getBlockNumber())) @@ -556,7 +556,7 @@ export class RainJS { [VM.Opcodes.SCALE18]: (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); - if (item_ != undefined) { + if (item_ !== undefined) { state.stack.push( operand <= 18 ? item_.mul((10 ** (18 - operand)).toString()) @@ -569,7 +569,7 @@ export class RainJS { [VM.Opcodes.SCALE18_DIV]: (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { state.stack.push( (operand <= 18 ? item1_.mul((10 ** (18 - operand)).toString()) @@ -583,7 +583,7 @@ export class RainJS { [VM.Opcodes.SCALE18_MUL]: (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { state.stack.push( item2_.mul( operand <= 18 @@ -597,7 +597,7 @@ export class RainJS { [VM.Opcodes.SCALE_BY]: (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); - if (item_ != undefined) { + if (item_ !== undefined) { if (operand > 127) { operand = 256 - operand; state.stack.push( @@ -615,7 +615,7 @@ export class RainJS { [VM.Opcodes.SCALEN]: (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); - if (item_ != undefined) { + if (item_ !== undefined) { state.stack.push( operand <= 18 ? item_.div((10 ** (18 - operand)).toString()) @@ -631,7 +631,7 @@ export class RainJS { let _item; for (let i = 0; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { if (_item.gt(0)) { _check = ethers.constants.One; break; @@ -639,7 +639,7 @@ export class RainJS { } else throw new Error('Undefined stack variables'); } - if (_check != undefined) { + if (_check !== undefined) { state.stack.push(_check); } else throw new Error('Undefined stack variable'); @@ -649,7 +649,7 @@ export class RainJS { const false_ = state.stack.pop(); const true_ = state.stack.pop(); const condition_ = state.stack.pop(); - if (false_ && true_ && condition_ != undefined) { + if (false_ && true_ && condition_ !== undefined) { state.stack.push(condition_.gt(0) ? true_ : false_); } else throw new Error('Undefined stack variables'); @@ -658,7 +658,7 @@ export class RainJS { [VM.Opcodes.EQUAL_TO]: (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { state.stack.push( item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero ); @@ -672,7 +672,7 @@ export class RainJS { let _item; for (let i = 0; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { if (_item.isZero()) { _check = ethers.constants.Zero; break; @@ -680,7 +680,7 @@ export class RainJS { } else throw new Error('Undefined stack variables'); } - if (_check != undefined) { + if (_check !== undefined) { state.stack.push(_check); } else throw new Error('Undefined stack variable'); @@ -693,7 +693,7 @@ export class RainJS { ) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { state.stack.push( item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero ); @@ -703,7 +703,7 @@ export class RainJS { [VM.Opcodes.ISZERO]: (state: StateJS, operand: number, data?: any) => { const item_ = state.stack.pop(); - if (item_ != undefined) { + if (item_ !== undefined) { state.stack.push( item_.isZero() ? ethers.constants.One : ethers.constants.Zero ); @@ -714,7 +714,7 @@ export class RainJS { [VM.Opcodes.LESS_THAN]: (state: StateJS, operand: number, data?: any) => { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { state.stack.push( item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero ); @@ -732,7 +732,7 @@ export class RainJS { let _item; for (let i = 0; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.add(_item); _accumulator = _accumulator.gt(ethers.constants.MaxUint256) ? ethers.constants.MaxUint256 @@ -751,10 +751,10 @@ export class RainJS { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); let _item; - if (_accumulator != undefined) { + if (_accumulator !== undefined) { for (let i = 1; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator?.sub(_item); _accumulator = _accumulator.gt(0) ? _accumulator @@ -777,7 +777,7 @@ export class RainJS { let _item; for (let i = 0; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.mul(_item); _accumulator = _accumulator.gt(ethers.constants.MaxUint256) ? ethers.constants.MaxUint256 @@ -793,7 +793,7 @@ export class RainJS { let _accumulator = ethers.constants.Zero; for (let i = 0; i < operand; i++) { _item = state.stack.pop(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.add(_item); if (_accumulator.gt(ethers.constants.MaxUint256)) { throw new Error('max numeric range overflow'); @@ -808,10 +808,10 @@ export class RainJS { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); let _item; - if (_accumulator != undefined) { + if (_accumulator !== undefined) { for (let i = 1; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.div(_item); } else throw new Error('Undefined stack variables'); @@ -825,10 +825,10 @@ export class RainJS { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); let _item; - if (_accumulator != undefined) { + if (_accumulator !== undefined) { for (let i = 1; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.pow(_item); if (_accumulator.gt(ethers.constants.MaxUint256)) { throw new Error('max numeric range overflow'); @@ -851,7 +851,7 @@ export class RainJS { [VM.Opcodes.MIN]: (state: StateJS, operand: number, data?: any) => { const items_ = state.stack.splice(-operand); - if (items_.length == operand) { + if (items_.length === operand) { state.stack.push(items_.reduce((e, m) => (e.lt(m) ? e : m))); } else throw new Error('Undefined stack variables'); @@ -861,10 +861,10 @@ export class RainJS { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); let _item; - if (_accumulator != undefined) { + if (_accumulator !== undefined) { for (let i = 1; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.mod(_item); } else throw new Error('Undefined stack variables'); @@ -879,7 +879,7 @@ export class RainJS { let _item; for (let i = 0; i < operand; i++) { _item = state.stack.pop(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.mul(_item); if (_accumulator.gt(ethers.constants.MaxUint256)) { throw new Error('max numeric range overflow'); @@ -894,10 +894,10 @@ export class RainJS { const items_ = state.stack.splice(-operand); let _accumulator = items_.shift(); let _item; - if (_accumulator != undefined) { + if (_accumulator !== undefined) { for (let i = 1; i < operand; i++) { _item = items_.shift(); - if (_item != undefined) { + if (_item !== undefined) { _accumulator = _accumulator.sub(_item); } else throw new Error('Undefined stack variables'); @@ -919,7 +919,7 @@ export class RainJS { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined && context_.length != operand) { + if (item1_ && item2_ && this.signer !== undefined && context_.length !== operand) { const account_ = paddedUInt160(item2_); const iTierV2Contract = new ITierV2( paddedUInt160(item1_), @@ -939,11 +939,11 @@ export class RainJS { ) => { const context_ = operand ? state.stack.splice(-operand) : []; const item3_ = state.stack.pop(); - if (item3_ != undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer != undefined && context_.length != operand) { + if (item1_ && item2_ && this.signer !== undefined && context_.length !== operand) { const tier_ = item3_; const account_ = paddedUInt160(item2_); const iTierV2Contract = new ITierV2( @@ -967,7 +967,7 @@ export class RainJS { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { const report1_ = paddedUInt256(item1_).substring(2); const report2_ = paddedUInt256(item2_).substring(2); let _startIndex = 0; @@ -1008,13 +1008,13 @@ export class RainJS { //building an array of each tier's report against blockNumber_ //tiers greater than blockNumber_ will get "ffffffff" - if (item_ != undefined) { + if (item_ !== undefined) { const blockNumber_ = paddedUInt32(item_); for (let i = 0; i < length_; i++) { let _startIndex = 0; let _endIndex = 8; _item = state.stack.pop(); - if (_item != undefined) { + if (_item !== undefined) { _reports[i] = paddedUInt256(_item).substring(2); for (let j = 0; j < 8; j++) { _reportsAtTier[j].push( @@ -1034,25 +1034,25 @@ export class RainJS { // logic_ and mode_ selections if (logic_) { for (let i = 0; i < 8; i++) { - if (mode_ == 0) { + if (mode_ === 0) { _reportsAtTier[i] = [ _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), ]; } - else if (mode_ == 1) { + else if (mode_ === 1) { //filter out "ffffffff" _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e != 'ffffffff' + (e) => e !== 'ffffffff' ); _reportsAtTier[i] = _reportsAtTier[i].length > 0 ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] : ['ffffffff']; } - else if (mode_ == 2) { + else if (mode_ === 2) { //filter out "ffffffff" _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e != 'ffffffff' + (e) => e !== 'ffffffff' ); _reportsAtTier[i] = _reportsAtTier[i].length > 0 @@ -1063,19 +1063,19 @@ export class RainJS { } else { for (let i = 0; i < 8; i++) { - if (mode_ == 0) { + if (mode_ === 0) { //check if "ffffffff" exists within the tier's array _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') ? ['ffffffff'] : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; } - else if (mode_ == 1) { + else if (mode_ === 1) { //check if "ffffffff" exists within the tier's array _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') ? ['ffffffff'] : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; } - else if (mode_ == 2) { + else if (mode_ === 2) { //check if "ffffffff" exists within the tier's array _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') ? ['ffffffff'] @@ -1100,7 +1100,7 @@ export class RainJS { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ != undefined) { + if (item1_ && item2_ !== undefined) { const _blockNumber = paddedUInt32(item2_); const _report = paddedUInt256(item1_).substring(2); let _startIndex = (8 - endTier_) * 8; diff --git a/src/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts index aa31706..fb442af 100644 --- a/src/RainJS/SaleJS.ts +++ b/src/RainJS/SaleJS.ts @@ -63,7 +63,7 @@ export class SaleJS extends RainJS { [SaleStorage.RemainingUnits] : async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { + if (this.signer && this.contract !== undefined) { const rTKNAddress_ = await this.contract.token(); const rTKNContract_ = new ERC20( rTKNAddress_, @@ -80,7 +80,7 @@ export class SaleJS extends RainJS { [SaleStorage.TotalReserveIn] : async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { + if (this.signer && this.contract !== undefined) { const reserveAddress_ = await this.contract.reserve(); const reserveContract_ = new ERC20( reserveAddress_, @@ -97,7 +97,7 @@ export class SaleJS extends RainJS { [SaleStorage.TokenAddress] : async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { + if (this.signer && this.contract !== undefined) { state.stack.push( BigNumber.from( await this.contract.token() @@ -109,7 +109,7 @@ export class SaleJS extends RainJS { [SaleStorage.ReserveAddress] : async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract != undefined) { + if (this.signer && this.contract !== undefined) { state.stack.push( BigNumber.from( await this.contract.reserve() @@ -128,7 +128,7 @@ export class SaleJS extends RainJS { protected _CONTEXT_: ApplyOpFn = { [SaleContext.CurrentBuyUnits] : async(state: StateJS, operand: number, data?: any) => { - if(data && data.context != undefined) { + if(data && data.context !== undefined) { state.stack.push( BigNumber.from( data.context[SaleContext.CurrentBuyUnits] diff --git a/src/classes/vm.ts b/src/classes/vm.ts index f6bf5ff..9daa9de 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -349,7 +349,7 @@ export class VM { } ): StateConfig { const NumberOfSources = - options?.numberOfSources != undefined ? options.numberOfSources : 1; + options?.numberOfSources !== undefined ? options.numberOfSources : 1; let sourceModify1; let sourceModify2; @@ -360,25 +360,25 @@ export class VM { for (let i = 0; i < config1.sources.length; i++) { let src = arrayify(config1.sources[i], { allowMissingPrefix: true }); for (let j = 0; j < src.length; j++) { - if (src[j] == 4) { + if (src[j] === 4) { argCount += (src[j + 1] >> 5) + 1; } j++; } } - if (NumberOfSources == 0) { + if (NumberOfSources === 0) { for (let i = 0; i < config1.sources.length; i++) { sourceModify1 = arrayify(config1.sources[i], { allowMissingPrefix: true, }); for (let j = 0; j < sourceModify1.length; j++) { - if (sourceModify1[j] == 0) { + if (sourceModify1[j] === 0) { if (sourceModify1[j + 1] >= config1.constants.length) { sourceModify1[j + 1] += config2.constants.length; } } - if (sourceModify1[j] == 4) { + if (sourceModify1[j] === 4) { sourceModify1[j + 1]++; } j++; @@ -390,14 +390,14 @@ export class VM { allowMissingPrefix: true, }); for (let j = 0; j < sourceModify2.length; j++) { - if (sourceModify2[j] == 0) { + if (sourceModify2[j] === 0) { if (sourceModify2[j + 1] < config2.constants.length) { sourceModify2[j + 1] += config1.constants.length; } else { sourceModify2[j + 1] += argCount + config1.constants.length; } } - if (sourceModify2[j] == 4) { + if (sourceModify2[j] === 4) { sourceModify2[j + 1] += config1.sources.length; } j++; @@ -419,7 +419,7 @@ export class VM { allowMissingPrefix: true, }); for (let j = 0; j < sourceModify1.length; j++) { - if (sourceModify1[j] == 0) { + if (sourceModify1[j] === 0) { if (sourceModify1[j + 1] >= config1.constants.length) { sourceModify1[j + 1] += config2.constants.length; } @@ -433,14 +433,14 @@ export class VM { allowMissingPrefix: true, }); for (let j = 0; j < sourceModify2.length; j++) { - if (sourceModify2[j] == 0) { + if (sourceModify2[j] === 0) { if (sourceModify2[j + 1] < config2.constants.length) { sourceModify2[j + 1] += config1.constants.length; } else { sourceModify2[j + 1] += config1.constants.length + argCount; } } - if (sourceModify2[j] == 4) { + if (sourceModify2[j] === 4) { const srcIndexIncrement = config1.sources.length - NumberOfSources; const srcIndex = sourceModify2[j + 1] & 7; sourceModify2[j + 1] = @@ -453,7 +453,7 @@ export class VM { config2.sources[i] = sourceModify2; } - if (options?.position && options.position.length == NumberOfSources) { + if (options?.position && options.position.length === NumberOfSources) { for (let i = 0; i < NumberOfSources; i++) { const sourceModify = arrayify(config1.sources[Index + i], { allowMissingPrefix: true, @@ -485,20 +485,20 @@ export class VM { let argModify; let opernadArr = []; - if (srcModify[j] == 4) { + if (srcModify[j] === 4) { argModify = arrayify(sources[srcModify[j + 1] & 7], { allowMissingPrefix: true, }); for (let k = 0; k < argModify.length; k++) { - if (argModify[k] == 0 && argModify[k + 1] >= constants.length) { + if (argModify[k] === 0 && argModify[k + 1] >= constants.length) { opernadArr.push(argModify[k + 1]); } k++; } offsetReset = opernadArr.reduce((e, m) => (e < m ? e : m)); for (let k = 0; k < argModify.length; k++) { - if (argModify[k] == 0 && argModify[k + 1] >= constants.length) { + if (argModify[k] === 0 && argModify[k + 1] >= constants.length) { argModify[k + 1] -= offsetReset; argModify[k + 1] += constants.length + offset; } @@ -534,7 +534,7 @@ export class VM { }); for (let i = 0; i < _stackOpcodeModify.length; i++) { - if (_stackOpcodeModify[i] == 1) { + if (_stackOpcodeModify[i] === 1) { _stackOpcodeModify[i + 1]++; } i++; @@ -924,7 +924,7 @@ export class VM { times: number[], inBlockNumber: boolean = false ): StateConfig { - if (configs.length == times.length + 1) { + if (configs.length === times.length + 1) { let _result: StateConfig; const SLICER = (i: number): StateConfig => { @@ -945,7 +945,7 @@ export class VM { _result = VM.combiner(SLICER(0), configs[0]); for (let i = 1; i < configs.length; i++) { - if (i + 1 == configs.length) { + if (i + 1 === configs.length) { _result = VM.combiner(_result, configs[i]); } else { _result = VM.combiner(_result, SLICER(i)); diff --git a/src/friendlySource.ts b/src/friendlySource.ts index 4e4b14a..d41dff3 100644 --- a/src/friendlySource.ts +++ b/src/friendlySource.ts @@ -1,5 +1,9 @@ import { BytesLike, BigNumberish, BigNumber } from 'ethers'; import { AllStandardOps, StateConfig } from './classes/vm'; +import { CombineTierContext } from './contracts/tiers/combineTier'; +import { EmissionsERC20Context } from './contracts/emissionsERC20'; +import { OrderbookContext } from './contracts/orderBook'; +import { SaleContext } from './contracts/sale'; import { arrayify, paddedUInt256 } from './utils'; interface OpMeta { @@ -21,6 +25,39 @@ interface State { type Pair = [number, number]; +/** + * @public + * + * Specific the configuration of the generation method + */ +export type Config = { + /** + * With this we can get the context. + * This will be the contract name eg: sale, combineTier + */ + contract?: string; + /** + * Enable the prettify to the result of get + */ + pretty?: boolean; +}; + +/** + * @public + * + * Specific the configuration of the Prettify method. + */ +export type PrettifyConfig = { + /** + * Multiplier to the indent space + */ + n?: number; + /** + * Max length to each line + */ + length?: number; +}; + const newOpMeta: OpMeta[] = [ { opcode: AllStandardOps.CONSTANT, @@ -267,8 +304,16 @@ const newOpMeta: OpMeta[] = [ */ export class HumanFriendlySource { private static opMeta: OpMeta[] = newOpMeta; + private static _context: string | undefined; + private static _pretty: boolean; + + public static get( + _state: StateConfig, + _config: Config = { contract: '', pretty: false } + ): string { + this._context = _config?.contract?.toLowerCase(); + this._pretty = _config.pretty ? true : false; - public static get(_state: StateConfig): string { // public static get(sources: BytesLike[], constants: BigNumberish[]): string { const state: State = { stackIndex: 0, @@ -277,32 +322,61 @@ export class HumanFriendlySource { constants: _state.constants, }; - return this._eval(state, 0); + const _result = this._eval(state, 0); + return this._pretty ? this.prettify(_result) : _result; } /** - * Make more readable the output from the HumanFriendly Source with an indented + * Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis + * + * @remarks + * If the string is already indentend, the method will wrongly generate the string + * * @param _text - The output from the HumanFriendlySource - * @param n - The amount spaces based of each indent - * @returns The pretty output + * @param _config - The configuration of the prettify method (experimental) + * @returns The pretty output */ - public static prettify (_text: string, n: number = 2): string { + public static prettify(_text: string, _config: PrettifyConfig = {}): string { + let { n, length } = _config; + if (!n) n = 2; + if (!length) length = 20; + + _text = _text.replace(/\s/g, ''); let space = ' '; let counter = 0; + let skip = 0; for (let i = 0; i < _text.length; i++) { - if (_text[i] === '(' || _text[i] === ',') { - if (_text[i] !== ',') counter++; - _text = - _text.slice(0, i + 1) + - '\n' + - space.repeat(_text[i] !== ',' ? counter * n : counter * n - 1) + - _text.slice(i + 1); + if ( + _text[i] === '(' || + _text[i] === '[' || + (_text[i] === ',' && skip === 0) + ) { + if ( + _text[i] === ',' || + this.needIndent(_text, i, length - counter * n) + ) { + if (_text[i] !== ',') counter++; + _text = + _text.slice(0, i + 1) + + '\n' + + space.repeat(counter * n) + + _text.slice(i + 1); + } else { + skip++; + } } - if (_text[i] === ')') { - counter--; - _text = - _text.slice(0, i) + '\n' + space.repeat(counter * n) + _text.slice(i); - i = i + counter * n + 1; + if (_text[i] === ')' || _text[i] === ']') { + if (skip === 0) { + counter--; + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); + i = i + counter * n + 1; + } else { + skip--; + } } } return _text; @@ -379,8 +453,21 @@ export class HumanFriendlySource { }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'CONTEXT') { + // + let context: string; + if (this._context === 'sale') { + context = SaleContext[op.operand]; + } else if (this._context === 'emissions') { + context = EmissionsERC20Context[op.operand]; + } else if (this._context === 'orderbook') { + context = OrderbookContext[op.operand]; + } else if (this._context === 'combinetier') { + context = CombineTierContext[op.operand]; + } else { + context = `CONTEXT[${op.operand}]`; + } state.stack[_stackIndex] = { - val: `CONTEXT[${op.operand}]`, + val: context, consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); @@ -576,4 +663,20 @@ export class HumanFriendlySource { const endTier_ = (_op >> 4) & 0x0f; return [startTier_, endTier_]; } + + private static needIndent(text: string, index: number, max: number): boolean { + const openRef = text[index]; + const closeRef = openRef === '(' ? ')' : ']'; + text = text.slice(index + 1); + + let counter = 0; + for (let i = 0; i < text.length && i < max + 1; i++) { + if (text[i] === openRef) counter++; + if (text[i] === closeRef) { + if (counter === 0) return false; + counter--; + } + } + return true; + } } diff --git a/src/utils.ts b/src/utils.ts index 1d0e912..77237ca 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -99,7 +99,10 @@ export const paddedUInt256 = (report: BigNumberish): string => { if (BigNumber.from(report).gt(ethers.constants.MaxUint256)) { throw new Error(`${report} exceeds max uint256`); } - return '0x' + hexlify(report, {allowMissingPrefix: true}).substring(2).padStart(64, '0'); + return ( + '0x' + + hexlify(report, { allowMissingPrefix: true }).substring(2).padStart(64, '0') + ); }; /** @@ -110,10 +113,12 @@ export const paddedUInt256 = (report: BigNumberish): string => { * @returns a 8 char hexString (without 0x prefix) */ export const paddedUInt32 = (number: BigNumberish): string => { - if (BigNumber.from(number).gt("0xffffffff")) { + if (BigNumber.from(number).gt('0xffffffff')) { throw new Error(`${number} exceeds max uint32`); } - return hexlify(number, {allowMissingPrefix: true}).substring(2).padStart(8, '0'); + return hexlify(number, { allowMissingPrefix: true }) + .substring(2) + .padStart(8, '0'); }; /** @@ -141,15 +146,14 @@ export function tierRange(startTier: number, endTier: number): number { /** * @public - * Constructs the operand for RainVM's `call` AllStandardOps by packing 3 numbers into a single byte. + * Constructs the operand for RainVM's `zipmap` opcode by packing 3 numbers into a single byte. * All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) - * on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 * 32 bytes) on the stack. + * on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements + * (4 * 32 bytes) on the stack. * * @param sourceIndex - index of function source in `immutableSourceConfig.sources` * @param loopSize - number of times to subdivide vals, reduces uint size but allows for more vals (range 0-7) * @param valSize - number of vals in outer stack (range 0-7) - * - * @returns a byte size number */ export function callSize( sourceIndex: number, @@ -221,11 +225,13 @@ export const replaceAt = ( * * @returns a 16 character hexString (without 0x prefix) */ - export const paddedUInt64 = (number: BigNumberish): string => { - if (BigNumber.from(number).gt("0xffffffffffffffff")) { +export const paddedUInt64 = (number: BigNumberish): string => { + if (BigNumber.from(number).gt('0xffffffffffffffff')) { throw new Error(`${number} exceeds max uint64`); } - return hexlify(number, {allowMissingPrefix: true}).substring(2).padStart(16, '0'); + return hexlify(number, { allowMissingPrefix: true }) + .substring(2) + .padStart(16, '0'); }; /** @@ -235,11 +241,13 @@ export const replaceAt = ( * * @returns a 32 character hexString (without 0x prefix) */ - export const paddedUInt128 = (number: BigNumberish): string => { - if (BigNumber.from(number).gt("0xffffffffffffffffffffffffffffffff")) { +export const paddedUInt128 = (number: BigNumberish): string => { + if (BigNumber.from(number).gt('0xffffffffffffffffffffffffffffffff')) { throw new Error(`${number} exceeds max uint128`); } - return hexlify(number, {allowMissingPrefix: true}).substring(2).padStart(32, '0'); + return hexlify(number, { allowMissingPrefix: true }) + .substring(2) + .padStart(32, '0'); }; /** @@ -249,9 +257,16 @@ export const replaceAt = ( * @param report - value as bignumberish * @returns hexadecimal string as an ether address (40 char length hexString) */ - export const paddedUInt160 = (address: BigNumberish): string => { - if (BigNumber.from(address).gt("0xffffffffffffffffffffffffffffffffffffffff")) { +export const paddedUInt160 = (address: BigNumberish): string => { + if ( + BigNumber.from(address).gt('0xffffffffffffffffffffffffffffffffffffffff') + ) { throw new Error(`${address} exceeds max uint160`); } - return '0x' + hexlify(address, {allowMissingPrefix: true}).substring(2).padStart(40, '0'); -}; \ No newline at end of file + return ( + '0x' + + hexlify(address, { allowMissingPrefix: true }) + .substring(2) + .padStart(40, '0') + ); +}; diff --git a/test/.eslintrc.js b/test/.eslintrc.js index 7929d89..84a44c5 100644 --- a/test/.eslintrc.js +++ b/test/.eslintrc.js @@ -1,9 +1,5 @@ module.exports = { - extends: [ - 'react-app', - 'prettier/@typescript-eslint', - 'plugin:prettier/recommended', - ], + extends: ['react-app'], settings: { react: { version: '999.999.999', diff --git a/test/friendlySource.test.ts b/test/friendlySource.test.ts index 926c1e3..dfbec63 100644 --- a/test/friendlySource.test.ts +++ b/test/friendlySource.test.ts @@ -36,6 +36,10 @@ const { } = utils; const Opcode = AllStandardOps; +const a = true ? 1: 2; +if (a == 2) { + // +} describe('Human Friendly Source Generator', () => { it('should generate the human friendly from an exponentiation op source', async () => { @@ -1743,4 +1747,434 @@ describe('Human Friendly Source Generator', () => { expect(HumanFriendlySource.prettify(friendly)).to.be.equals(expectOutput); }); + + it('should generate the friendly source with the correct context if the contract where is provided', async () => { + const [arbitrary] = await ethers.getSigners(); + const ERC721Address = arbitrary.address; + const fixedPrice = '20'; + const reserveTokenDecimals = 18; + const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); + const initialSupply = ethers.BigNumber.from('2000').mul(ONE); + + const splitTimestamp = await Time.currentTime(); + const endTimestamp = Time.duration + .minutes(60) + .add(splitTimestamp) + .toNumber(); + const dutchAuctionstartPrice = 50; + + //1st phase constants + const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase + + // initial calculations for dutch auction 2nd phase + let dutchAuctionDuration = endTimestamp - splitTimestamp; + let balanceReserve = minimumRaise.mul(5); + let initWeight = initialSupply + .mul(dutchAuctionstartPrice) + .div(balanceReserve); + let weightChange = initWeight.sub(1).div(dutchAuctionDuration); + + // 2nd phase constants + const ReserveBalance = parseUnits( + // Virtual reserve token balance + balanceReserve.toString(), + reserveTokenDecimals + ); + + const InitWeight = parseUnits(initWeight.toString()); // initial weight + + const WeightChange = parseUnits( + weightChange.toNumber().toFixed(5).toString() + ); // weight change per timestamp + + const one = parseUnits((1).toString()); // minimum possible weight + + const saleConfig: StateConfig = { + constants: [ + splitTimestamp, // timestamp that splits the phases + ERC721Address, + FixedPrice, + 0, + ReserveBalance, + InitWeight, + WeightChange, + one, + ], + + sources: [ + concat([ + // Amount script + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC721_BALANCE_OF), + op(VM.Opcodes.ISZERO), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), + op(VM.Opcodes.EAGER_IF), + // Price script + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.MAX, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.EAGER_IF), + ]), + ], + }; + + const friendlyUgly = HumanFriendlySource.get(saleConfig, { + contract: 'SALE', + }); + + const expectedOutputUgly = `EAGER_IF(EAGER_IF(LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), EAGER_IF(ISZERO(IERC721_BALANCE_OF(${ERC721Address}, SENDER)), 0, CurrentBuyUnits), CurrentBuyUnits), LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), DIV(MUL(ADD(STORAGE(${FixedPrice}), ${ReserveBalance}), MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one})), STORAGE(MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one}))))`; + + expect(friendlyUgly).to.be.equals(expectedOutputUgly); + + // prettier-ignore + const expectOutputPretty = +`EAGER_IF( + EAGER_IF( + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + EAGER_IF( + ISZERO( + IERC721_BALANCE_OF( + ${ERC721Address}, + SENDER + ) + ), + 0, + CurrentBuyUnits + ), + CurrentBuyUnits + ), + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + DIV( + MUL( + ADD( + STORAGE( + ${FixedPrice} + ), + ${ReserveBalance} + ), + MAX( + SATURATING_SUB( + ${InitWeight}, + MUL( + SATURATING_SUB( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + ${WeightChange} + ) + ), + ${one} + ) + ), + STORAGE( + MAX( + SATURATING_SUB( + ${InitWeight}, + MUL( + SATURATING_SUB( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + ${WeightChange} + ) + ), + ${one} + ) + ) + ) +)`; + + const friendlyPretty = HumanFriendlySource.get(saleConfig, { + contract: 'SALE', + pretty: true, + }); + + expect(friendlyPretty).to.be.equals(expectOutputPretty); + }); + + it('should generate the friendly source with the correct context and already prettified if the config is set', async () => { + const [arbitrary] = await ethers.getSigners(); + const ERC721Address = arbitrary.address; + const fixedPrice = '20'; + const reserveTokenDecimals = 18; + const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); + const initialSupply = ethers.BigNumber.from('2000').mul(ONE); + + const splitTimestamp = await Time.currentTime(); + const endTimestamp = Time.duration + .minutes(60) + .add(splitTimestamp) + .toNumber(); + const dutchAuctionstartPrice = 50; + + //1st phase constants + const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase + + // initial calculations for dutch auction 2nd phase + let dutchAuctionDuration = endTimestamp - splitTimestamp; + let balanceReserve = minimumRaise.mul(5); + let initWeight = initialSupply + .mul(dutchAuctionstartPrice) + .div(balanceReserve); + let weightChange = initWeight.sub(1).div(dutchAuctionDuration); + + // 2nd phase constants + const ReserveBalance = parseUnits( + // Virtual reserve token balance + balanceReserve.toString(), + reserveTokenDecimals + ); + + const InitWeight = parseUnits(initWeight.toString()); // initial weight + + const WeightChange = parseUnits( + weightChange.toNumber().toFixed(5).toString() + ); // weight change per timestamp + + const one = parseUnits((1).toString()); // minimum possible weight + + const saleConfig: StateConfig = { + constants: [ + splitTimestamp, // timestamp that splits the phases + ERC721Address, + FixedPrice, + 0, + ReserveBalance, + InitWeight, + WeightChange, + one, + ], + + sources: [ + concat([ + // Amount script + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC721_BALANCE_OF), + op(VM.Opcodes.ISZERO), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), + op(VM.Opcodes.EAGER_IF), + // Price script + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.ADD, 2), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.MAX, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.EAGER_IF), + ]), + ], + }; + + const friendlyUgly = HumanFriendlySource.get(saleConfig, { + contract: 'SALE', + }); + + const expectedOutputUgly = `EAGER_IF(EAGER_IF(LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), EAGER_IF(ISZERO(IERC721_BALANCE_OF(${ERC721Address}, SENDER)), 0, CurrentBuyUnits), CurrentBuyUnits), LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), DIV(MUL(ADD(STORAGE(${FixedPrice}), ${ReserveBalance}), MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one})), STORAGE(MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one}))))`; + + expect(friendlyUgly).to.be.equals(expectedOutputUgly); + + // prettier-ignore + const expectOutputPretty = +`EAGER_IF( + EAGER_IF( + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + EAGER_IF( + ISZERO( + IERC721_BALANCE_OF( + ${ERC721Address}, + SENDER + ) + ), + 0, + CurrentBuyUnits + ), + CurrentBuyUnits + ), + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + DIV( + MUL( + ADD( + STORAGE( + ${FixedPrice} + ), + ${ReserveBalance} + ), + MAX( + SATURATING_SUB( + ${InitWeight}, + MUL( + SATURATING_SUB( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + ${WeightChange} + ) + ), + ${one} + ) + ), + STORAGE( + MAX( + SATURATING_SUB( + ${InitWeight}, + MUL( + SATURATING_SUB( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), + ${WeightChange} + ) + ), + ${one} + ) + ) + ) +)`; + + const friendlyPretty = HumanFriendlySource.get(saleConfig, { + contract: 'SALE', + pretty: true, + }); + + expect(friendlyPretty).to.be.equals(expectOutputPretty); + }); + + it('brackets prettify', async () => { + const report = paddedUInt256( + ethers.BigNumber.from( + '0x' + + paddedUInt32(1) + + paddedUInt32(0) + + paddedUInt32(3) + + paddedUInt32(0) + + paddedUInt32(5) + + paddedUInt32(0) + + paddedUInt32(7) + + paddedUInt32(8) + ) + ); + + const reportMax = max_uint256; + + const constants = [report, reportMax]; + + const vReport = op(Opcode.CONSTANT, 0); + const vReportMax = op(Opcode.CONSTANT, 1); + + // BEGIN zipmap args + + const argReport = op(Opcode.CONSTANT, arg(0)); + const argReportMax = op(Opcode.CONSTANT, arg(1)); + + // END zipmap args + + // prettier-ignore + const ZIPMAP_FN = () => + concat([ + argReport, + op(Opcode.ISZERO), + argReportMax, + argReport, + op(Opcode.EAGER_IF), + ]); + + // prettier-ignore + const SOURCE = () => + concat([ + vReport, + vReportMax, + op(Opcode.ZIPMAP, callSize(1, 3, 1)), + ]); + + const state: StateConfig = { + // sources: [SOURCE()], + sources: [SOURCE(), ZIPMAP_FN()], + constants, + }; + + const friendlyPretty = HumanFriendlySource.get(state, { + pretty: true, + }); + + const expectedOutput = `ZIPMAP( + [ + "00000001", + "00000000", + "00000003", + "00000000", + "00000005", + "00000000", + "00000007", + "00000008" + ], + [ + "FFFFFFFF", + "FFFFFFFF", + "FFFFFFFF", + "FFFFFFFF", + "FFFFFFFF", + "FFFFFFFF", + "FFFFFFFF", + "FFFFFFFF" + ], + EAGER_IF(ISZERO(^0),^1,^0) +)`; + + expect(friendlyPretty).to.be.equals(expectedOutput); + }); }); From 607855d4ad99262357c4eb98a9159791f989718c Mon Sep 17 00:00:00 2001 From: NanezX Date: Mon, 4 Jul 2022 11:46:48 -0400 Subject: [PATCH 024/125] missinfix source friendly --- package.json | 2 +- src/friendlySource.ts | 498 +++++++++++++++--- src/index.ts | 2 +- src/typechain/LibCommitmentTest.ts | 144 +++++ src/typechain/LibSeedTest.ts | 98 ++++ src/typechain/OrderBook.ts | 5 +- src/typechain/RandomTest.ts | 227 ++++++++ src/typechain/SeedDance.ts | 169 ++++++ src/typechain/SeedDanceTest.ts | 276 ++++++++++ .../EmissionsERC20Factory__factory.ts | 2 +- .../factories/EmissionsERC20__factory.ts | 2 +- .../factories/LibCommitmentTest__factory.ts | 117 ++++ .../factories/LibSeedTest__factory.ts | 82 +++ .../OrderBookStateBuilder__factory.ts | 2 +- src/typechain/factories/OrderBook__factory.ts | 7 +- .../factories/PhasedScheduleTest__factory.ts | 2 +- .../factories/RandomTest__factory.ts | 193 +++++++ .../RedeemableERC20Reentrant__factory.ts | 2 +- .../ReserveTokenERC20Snapshot__factory.ts | 2 +- .../factories/SaleEscrowWrapper__factory.ts | 2 +- .../factories/SaleFactory__factory.ts | 2 +- .../factories/SaleReentrant__factory.ts | 2 +- src/typechain/factories/Sale__factory.ts | 2 +- .../factories/SeedDanceTest__factory.ts | 236 +++++++++ src/typechain/factories/SeedDance__factory.ts | 167 ++++++ src/typechain/hardhat.d.ts | 45 ++ src/typechain/index.ts | 10 + test/1_initSDK.test.ts | 2 +- yarn.lock | 4 +- 29 files changed, 2219 insertions(+), 85 deletions(-) create mode 100644 src/typechain/LibCommitmentTest.ts create mode 100644 src/typechain/LibSeedTest.ts create mode 100644 src/typechain/RandomTest.ts create mode 100644 src/typechain/SeedDance.ts create mode 100644 src/typechain/SeedDanceTest.ts create mode 100644 src/typechain/factories/LibCommitmentTest__factory.ts create mode 100644 src/typechain/factories/LibSeedTest__factory.ts create mode 100644 src/typechain/factories/RandomTest__factory.ts create mode 100644 src/typechain/factories/SeedDanceTest__factory.ts create mode 100644 src/typechain/factories/SeedDance__factory.ts diff --git a/package.json b/package.json index a598433..edcda3e 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ } ], "devDependencies": { - "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c", + "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#f184482cca57c72db22ba97649d5f84a1b7ad291", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", "@nomiclabs/hardhat-waffle": "^2.0.1", diff --git a/src/friendlySource.ts b/src/friendlySource.ts index 4e4b14a..aefdf08 100644 --- a/src/friendlySource.ts +++ b/src/friendlySource.ts @@ -1,6 +1,11 @@ import { BytesLike, BigNumberish, BigNumber } from 'ethers'; import { AllStandardOps, StateConfig } from './classes/vm'; -import { arrayify, paddedUInt256 } from './utils'; +import { + arrayify, + paddedUInt256, + selectLteLogic, + selectLteMode, +} from './utils'; interface OpMeta { opcode: number; @@ -12,15 +17,75 @@ interface OpInfo extends OpMeta { operand: number; } +/** + * State that contain the information about the script. + */ interface State { stackIndex: BigNumberish; - stack: { val: any; consumed: boolean }[]; + stack: Stack[]; sources: BytesLike[]; constants: BigNumberish[]; } +/** + * A type to indentify the status of each value in the stack + */ +type Stack = { + /** + * Current value + */ + val: any; + /** + * Flag to identify if a value was read and use it. + * This means that after mix with other value in stack will be deleted + */ + consumed: boolean; + /** + * Flag to identify if the value was duplicate. + * A value that was duplicate will be considered as consumed, but still accessible in the stack. + * At the end, if the value was not mixed, will be discard to the final output + */ + wasDup?: boolean; +}; + +/** + * Type identify the pair relate to the [opcode, operand] + */ type Pair = [number, number]; +/** + * @public + * + * Specific the configuration of the generation method + */ +export type Config = { + /** + * With this we can get the context. + * This will be the contract name eg: sale, combineTier (It's not case-sensitive) + */ + contract?: string; + /** + * Enable the prettify to the result of get + */ + pretty?: boolean; +}; + +/** + * @public + * + * Specific the configuration of the Prettify method. + */ +export type PrettifyConfig = { + /** + * Multiplier to the indent space + */ + n?: number; + /** + * Max length to each line + */ + length?: number; +}; + const newOpMeta: OpMeta[] = [ { opcode: AllStandardOps.CONSTANT, @@ -259,17 +324,30 @@ const newOpMeta: OpMeta[] = [ * The generator of friendly human readable source. * * @remarks - * Parse a State to a more human readable form, so feel free to use it and make more friendly - * anyone that want to read the script that is being used in the code. + * Parse an State/Script to a more human readable form, making easier to understand. This form allow to the users read exactly + * what the Script is made for, like the conditions, values used, etc. Also, anyone can learn to write their own scripts + * if use the Human Form to see the output for each combination that they made. * * If you find an issue or you want to propose a better way to show a specific script or opcodes, please * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ export class HumanFriendlySource { private static opMeta: OpMeta[] = newOpMeta; + private static _context: string | undefined; + private static _pretty: boolean; - public static get(_state: StateConfig): string { - // public static get(sources: BytesLike[], constants: BigNumberish[]): string { + /** + * Obtain the friendly output from an script. + * @param _state - The state or script to generate the friendly version @see StateConfig + * @param _config - The configuration that will run the generator. @see Config + * @returns + */ + public static get( + _state: StateConfig, + _config: Config = { contract: '', pretty: false } + ): string { + this._context = _config?.contract?.toLowerCase(); + this._pretty = _config.pretty ? true : false; const state: State = { stackIndex: 0, stack: [], @@ -277,45 +355,111 @@ export class HumanFriendlySource { constants: _state.constants, }; - return this._eval(state, 0); + const _result = this._eval(state, 0); + return this._pretty ? this.prettify(_result) : _result; } /** - * Make more readable the output from the HumanFriendly Source with an indented + * Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis + * + * @remarks + * If the string is already indentend, the method will wrongly generate the string + * * @param _text - The output from the HumanFriendlySource - * @param n - The amount spaces based of each indent - * @returns The pretty output + * @param _config - The configuration of the prettify method (experimental) + * @returns The pretty output */ - public static prettify (_text: string, n: number = 2): string { + public static prettify(_text: string, _config: PrettifyConfig = {}): string { + let { n, length } = _config; + if (!n) n = 2; + if (!length) length = 20; + + _text = _text.replace(/\s/g, ''); let space = ' '; let counter = 0; + let skip = 0; for (let i = 0; i < _text.length; i++) { - if (_text[i] === '(' || _text[i] === ',') { - if (_text[i] !== ',') counter++; - _text = - _text.slice(0, i + 1) + - '\n' + - space.repeat(_text[i] !== ',' ? counter * n : counter * n - 1) + - _text.slice(i + 1); + if (_text[i] === ',' && skip > 0) { + _text = _text.slice(0, i + 1) + space + _text.slice(i + 1); } - if (_text[i] === ')') { - counter--; - _text = - _text.slice(0, i) + '\n' + space.repeat(counter * n) + _text.slice(i); - i = i + counter * n + 1; + if ( + _text[i] === '(' || + _text[i] === '[' || + (_text[i] === ',' && skip === 0) + ) { + if ( + _text[i] === ',' || + this.needIndent(_text, i, length - counter * n) + ) { + if (_text[i] !== ',') counter++; + _text = + _text.slice(0, i + 1) + + '\n' + + space.repeat(counter * n) + + _text.slice(i + 1); + } else { + skip++; + } + } + if (_text[i] === ')' || _text[i] === ']') { + if (skip === 0) { + counter--; + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); + i = i + counter * n + 1; + } else { + skip--; + } } } return _text; } - private static _eval = (state: State, sourceIndex: number) => { + private static _eval = (_state: State, sourceIndex: number) => { let i = 0; let op: OpInfo; + let state: State = { + stackIndex: 0, + stack: [], + sources: _state.sources, + constants: _state.constants, + }; + const ops = this.pairs(state.sources[sourceIndex]).map((pair) => { - const opmeta = this.opMeta.find((opmeta) => opmeta.opcode === pair[0]); + let opmeta = this.opMeta.find((opmeta) => opmeta.opcode === pair[0]); if (typeof opmeta === 'undefined') { - throw Error(`Unknown opcode: ${pair[0]}`); + // Search with local opcodes if context provided + if (this._context) { + const _contract = this._context; + if (_contract === 'sale') { + opmeta = opSaleMeta.find((opmeta) => opmeta.opcode === pair[0]); + } else if (_contract === 'combinetier') { + opmeta = opCombineTierMeta.find( + (opmeta) => opmeta.opcode === pair[0] + ); + } else if (_contract === 'emissions') { + opmeta = opEmissionsMeta.find( + (opmeta) => opmeta.opcode === pair[0] + ); + } else if (_contract === 'gameassets') { + opmeta = opEmissionsMeta.find( + (opmeta) => opmeta.opcode === pair[0] + ); + } else { + throw Error( + `Unknown opcode: ${pair[0]} using context ${_contract}` + ); + } + } + + // still undefined + if (typeof opmeta === 'undefined') { + throw Error(`Unknown opcode: ${pair[0]}`); + } } return { @@ -344,43 +488,100 @@ export class HumanFriendlySource { state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'blockNumber') { state.stack[_stackIndex] = { - val: 'CURRENT_BLOCK', + val: 'BLOCK_NUMBER()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'DUP') { + state.stack[op.operand].consumed = true; + state.stack[op.operand].wasDup = true; + const valueDup = { + val: state.stack[op.operand].val, + consumed: false, + }; + state.stack.push(valueDup); + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'msgSender') { state.stack[_stackIndex] = { - val: 'SENDER', + val: 'SENDER()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'thisAddress') { state.stack[_stackIndex] = { - val: 'THIS_ADDRESS', + val: 'THIS_ADDRESS()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'blockTimestamp') { state.stack[_stackIndex] = { - val: 'CURRENT_TIMESTAMP', + val: 'BLOCK_TIMESTAMP()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'SCALE18_DECIMALS') { state.stack[_stackIndex] = { - val: 'SCALE18_DECIMALS', + val: 'SCALE18_DECIMALS()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'SCALE18_ONE') { state.stack[_stackIndex] = { - val: 'SCALE18_ONE', + val: 'SCALE18_ONE()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'NEVER') { + state.stack[_stackIndex] = { + val: 'NEVER()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'REMAINING_UNITS') { + state.stack[_stackIndex] = { + val: 'REMAINING_UNITS()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'TOTAL_RESERVE_IN') { + state.stack[_stackIndex] = { + val: 'TOTAL_RESERVE_IN()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'CURRENT_BUY_UNITS') { + state.stack[_stackIndex] = { + val: 'CURRENT_BUY_UNITS()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'TOKEN_ADDRESS') { + state.stack[_stackIndex] = { + val: 'TOKEN_ADDRESS()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'CONTEXT') { + } else if (op.input === 'RESERVE_ADDRESS') { state.stack[_stackIndex] = { - val: `CONTEXT[${op.operand}]`, + val: 'RESERVE_ADDRESS()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'ACCOUNT') { + state.stack[_stackIndex] = { + val: 'ACCOUNT()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'CLAIMANT_ACCOUNT') { + state.stack[_stackIndex] = { + val: 'CLAIMANT_ACCOUNT()', + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'CURRENT_UNITS') { + state.stack[_stackIndex] = { + val: 'CURRENT_UNITS()', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); @@ -401,22 +602,28 @@ export class HumanFriendlySource { }; private static zipmap = (state: State, operand: number) => { - let tempString = `ZIPMAP(\n`; - const sourceIndex = operand & 0x07; const stepSize = (operand >> 3) & 0x03; const valLength = (operand >> 5) & 0x07; + const amountValues = `${2 ** stepSize}`; + + let tempString = `ZIPMAP_${amountValues}(\n`; let tempArr = []; + let leng = state.stack.length - 1; + + for (let i = leng - valLength; i <= leng; i++) { + if (stepSize > 0) { + const divided = this.divideArray(state.stack[i].val, stepSize); + const _value = + typeof divided === 'string' + ? divided + : JSON.stringify(Array.from(divided)).replace(/,/g, ', '); + tempArr.push(_value); + } else { + tempArr.push(state.stack[i].val); + } - for (let i = 0; i <= valLength; i++) { - tempArr.push( - stepSize > 0 - ? JSON.stringify( - Array.from(this.divideArray(state.stack[i].val, stepSize)) - ).replace(/,/g, ', ') - : state.stack[i].val - ); state.stack[i].consumed = true; } @@ -425,7 +632,15 @@ export class HumanFriendlySource { tempString += tempArr.map((entry) => ' ' + entry).join(`,\n`); tempString += `\n)`; - state.stack[BigNumber.from(state.stackIndex).toNumber()] = { + state.stackIndex = BigNumber.from(state.stackIndex).sub(valLength); + + // Minus 1 becuase the zipmap is not added yet + const baseIndex = BigNumber.from(state.stackIndex).toNumber() - 1; + + // Cleaning the stack + state.stack = this.cleanStack(state.stack, baseIndex); + + state.stack[baseIndex] = { val: tempString, consumed: false, }; @@ -441,6 +656,7 @@ export class HumanFriendlySource { let operandFlag = false; let tierRangeFlag = false; + let selectLteFlag = false; if ( op.opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH || @@ -460,12 +676,32 @@ export class HumanFriendlySource { op.opcode === AllStandardOps.SCALE18_DIV || op.opcode === AllStandardOps.SCALE18_MUL ) { - baseIndex = _stackIndex - 2; + const _stackLength = this.identifyZipmap(state.stack, 2); + + // At least one zipmap was found to fll all the required stack from MIN + if (_stackLength !== -1) { + baseIndex = _stackIndex - _stackLength; + } + // Since no zipmap was found, the stack could fill the the stack required + else { + baseIndex = _stackIndex - 2; + } + cursor = baseIndex; tempArr = [state.stack[cursor].val + '*10**18']; // } else if (op.opcode === AllStandardOps.EAGER_IF) { - baseIndex = _stackIndex - 3; + const _stackLength = this.identifyZipmap(state.stack, 3); + + // At least one zipmap was found to fll all the required stack from MIN + if (_stackLength !== -1) { + baseIndex = _stackIndex - _stackLength; + } + // Since no zipmap was found, the stack could fill the the stack required + else { + baseIndex = _stackIndex - 3; + } + cursor = baseIndex; tempArr = [state.stack[cursor].val]; // @@ -475,8 +711,18 @@ export class HumanFriendlySource { op.opcode === AllStandardOps.IERC20_TOTAL_SUPPLY || this.flagOp(op.opcode) ) { + const _stackLength = this.identifyZipmap(state.stack, 1); + + // At least one zipmap was found to fll all the required stack from MIN + if (_stackLength !== -1) { + baseIndex = _stackIndex - _stackLength; + } + // Since no zipmap was found, the stack could fill the the stack required + else { + baseIndex = _stackIndex - 1; + } + operandFlag = this.flagOp(op.opcode); - baseIndex = _stackIndex - 1; cursor = baseIndex; tempArr = [state.stack[cursor].val]; // @@ -487,21 +733,85 @@ export class HumanFriendlySource { op.opcode === AllStandardOps.SATURATING_DIFF || op.opcode === AllStandardOps.IERC721_OWNER_OF || op.opcode === AllStandardOps.IERC721_BALANCE_OF || - op.opcode === AllStandardOps.IERC20_BALANCE_OF + op.opcode === AllStandardOps.IERC20_BALANCE_OF || + op.opcode === AllStandardOps.REPORT ) { - baseIndex = _stackIndex - 2; + const _stackLength = this.identifyZipmap(state.stack, 2); + + // At least one zipmap was found to fll all the required stack from MIN + if (_stackLength !== -1) { + baseIndex = _stackIndex - _stackLength; + } + // Since no zipmap was found, the stack could fill the the stack required + else { + baseIndex = _stackIndex - 2; + } + cursor = baseIndex; tempArr = [state.stack[cursor].val]; // + } else if (op.opcode === AllStandardOps.SELECT_LTE) { + const _stackLength = this.identifyZipmap(state.stack, 3); + + // At least one zipmap was found to fll all the required stack from MIN + if (_stackLength !== -1) { + baseIndex = _stackIndex - _stackLength; + } + // Since no zipmap was found, the stack could fill the the stack required + else { + baseIndex = _stackIndex - 3; + } + + selectLteFlag = true; + cursor = baseIndex; + tempArr = []; + } else if ( + op.opcode === AllStandardOps.MIN || + op.opcode === AllStandardOps.MAX || + op.opcode === AllStandardOps.ADD || + op.opcode === AllStandardOps.SUB || + op.opcode === AllStandardOps.MUL || + op.opcode === AllStandardOps.DIV || + op.opcode === AllStandardOps.SATURATING_ADD || + op.opcode === AllStandardOps.SATURATING_SUB || + op.opcode === AllStandardOps.SATURATING_MUL + ) { + const operand = this.identifyZipmap(state.stack, op.operand); + + // At least one zipmap was found to fll all the required stack from MIN + if (operand !== -1) { + baseIndex = _stackIndex - operand; + } + // Since no zipmap was found, the stack could fill the the stack required + else if (_stackIndex >= op.operand) { + baseIndex = _stackIndex - op.operand; + } + // All the stack should fill the requiremnte (?) + else { + baseIndex = 0; + } + cursor = baseIndex; + tempArr = [state.stack[cursor].val]; } else { tempArr = [state.stack[cursor].val]; } state.stack[cursor].consumed = true; - while (cursor < top || operandFlag || tierRangeFlag) { + while (cursor < top || operandFlag || tierRangeFlag || selectLteFlag) { cursor++; - if (operandFlag) { + if (selectLteFlag) { + const logic_ = op.operand >> 7; + const mode_ = (op.operand >> 5) & 0x3; + const reportsLength_ = op.operand & 0x1f; + let selectLteText = 'Invalid selectLte'; + if ((logic_ === 0 || logic_ === 1) && mode_ >= 0 && mode_ <= 2) { + selectLteText = `${selectLteLogic[logic_]}, ${selectLteMode[mode_]}, ${reportsLength_}`; + } + tempArr.push(selectLteText); + selectLteFlag = false; + cursor -= 2; + } else if (operandFlag) { tempArr.push(this.getSigned8(op.operand)); operandFlag = false; } else if (tierRangeFlag) { @@ -527,6 +837,9 @@ export class HumanFriendlySource { consumed: false, }; state.stackIndex = baseIndex + 1; + + // Cleaning the stack + state.stack = this.cleanStack(state.stack, state.stackIndex); }; private static flagOp(_a: number) { @@ -546,7 +859,7 @@ export class HumanFriendlySource { private static divideArray = ( arr: Uint8Array | string | BigNumber, times: number - ): (number | string)[] => { + ): (number | string)[] | string => { if (arr.constructor === Uint8Array) { let n = arr.length; for (let i = 0; i < times; i++) { @@ -554,10 +867,22 @@ export class HumanFriendlySource { } return Array.from(arr.filter((_, i) => i % n === n - 1)); } else { - // If it's not an Uint8Array, then it's an HexString or BigNumber comming from constants. - // Mostly these case should come from reports. Raise an issue on repo if you see any error. - let value = paddedUInt256(BigNumber.from(arr)); - return value.slice(2).match(/.{1,8}/g)!; + try { + /** + * If it's not an Uint8Array, then it's an possible HexString or BigNumber comming from constants. + * Mostly these cases should come from reports. Raise an issue on repo if you see any error. + */ + BigNumber.from(arr); + + const _eachLength = (32 / 2 ** times) * 2; + const regex = new RegExp(`.{1,${_eachLength}}`, 'g'); + let value = paddedUInt256(BigNumber.from(arr)); + + return value.slice(2).match(regex)!; + } catch (e) { + // If fail, we just return the value normally as string + return arr.toString(); + } } }; @@ -569,11 +894,64 @@ export class HumanFriendlySource { } private static tierRangeFromOp(_op: number): [number, number] { - // op_.val & 0x0f, // 00001111 - // op_.val & 0xf0, // 11110000 - const startTier_ = _op & 0x0f; const endTier_ = (_op >> 4) & 0x0f; return [startTier_, endTier_]; } + + private static needIndent(text: string, index: number, max: number): boolean { + const openRef = text[index]; + const closeRef = openRef === '(' ? ')' : ']'; + text = text.slice(index + 1); + + let counter = 0; + for (let i = 0; i < text.length && i < max + 1; i++) { + if (text[i] === openRef) counter++; + if (text[i] === closeRef) { + if (counter === 0) return false; + counter--; + } + } + return true; + } + + private static cleanStack( + _stack: Stack[], + length: number + ): { val: any; consumed: boolean }[] { + let j = 0; + let k = 0; + let _newStack: { val: any; consumed: boolean }[] = []; + while (j < length) { + if (!_stack[k].consumed || (_stack[k].consumed && _stack[k].wasDup)) { + _newStack[j] = _stack[k]; + j++; + } + k++; + } + return _newStack; + } + + private static identifyZipmap( + _stack: { val: any; consumed: boolean }[], + stackToRead: number + ): number { + if (stackToRead <= 0) { + return -1; + } + let zipmapCounter = 0; + let _stackReturn = stackToRead; + let i = _stack.length - 1; + + while (i >= 0 && _stack.length - i <= _stackReturn) { + const _text: string = _stack[i].val.toString(); + if (_text.slice(0, 6) === 'ZIPMAP') { + zipmapCounter++; + const _zipmapStack = parseInt(_text.slice(7, 8)); + _stackReturn -= _zipmapStack; + } + i--; + } + return _stackReturn === stackToRead ? -1 : _stackReturn + zipmapCounter; + } } diff --git a/src/index.ts b/src/index.ts index 781a5e6..b8864b0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -35,4 +35,4 @@ export * from './contracts/generics/erc1155'; export * from './contracts/stake'; export * from './contracts/orderBook'; -export * from './friendlySource'; \ No newline at end of file +export * from './friendlySource'; diff --git a/src/typechain/LibCommitmentTest.ts b/src/typechain/LibCommitmentTest.ts new file mode 100644 index 0000000..69dd339 --- /dev/null +++ b/src/typechain/LibCommitmentTest.ts @@ -0,0 +1,144 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface LibCommitmentTestInterface extends utils.Interface { + functions: { + "eq(uint256,uint256)": FunctionFragment; + "fromSecret(uint256)": FunctionFragment; + "zero()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "eq", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "fromSecret", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "zero", values?: undefined): string; + + decodeFunctionResult(functionFragment: "eq", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "fromSecret", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "zero", data: BytesLike): Result; + + events: {}; +} + +export interface LibCommitmentTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LibCommitmentTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise<[boolean] & { eq_: boolean }>; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { commitment_: BigNumber }>; + + zero( + overrides?: CallOverrides + ): Promise<[BigNumber] & { zero_: BigNumber }>; + }; + + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + zero(overrides?: CallOverrides): Promise; + + callStatic: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + zero(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + zero(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + eq( + a_: BigNumberish, + b_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + fromSecret( + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + zero(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/LibSeedTest.ts b/src/typechain/LibSeedTest.ts new file mode 100644 index 0000000..250ceea --- /dev/null +++ b/src/typechain/LibSeedTest.ts @@ -0,0 +1,98 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface LibSeedTestInterface extends utils.Interface { + functions: { + "with(uint256,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "with", + values: [BigNumberish, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "with", data: BytesLike): Result; + + events: {}; +} + +export interface LibSeedTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: LibSeedTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + with( + seed_: BigNumberish, + val_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { newSeed_: BigNumber }>; + }; + + with( + seed_: BigNumberish, + val_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + callStatic: { + with( + seed_: BigNumberish, + val_: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + with( + seed_: BigNumberish, + val_: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + with( + seed_: BigNumberish, + val_: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/OrderBook.ts b/src/typechain/OrderBook.ts index f25003b..b1af4ed 100644 --- a/src/typechain/OrderBook.ts +++ b/src/typechain/OrderBook.ts @@ -113,7 +113,6 @@ export type OrderConfigStruct = { inputVaultId: BigNumberish; outputToken: string; outputVaultId: BigNumberish; - tracking: BigNumberish; vmStateConfig: StateConfigStruct; }; @@ -122,14 +121,12 @@ export type OrderConfigStructOutput = [ BigNumber, string, BigNumber, - BigNumber, StateConfigStructOutput ] & { inputToken: string; inputVaultId: BigNumber; outputToken: string; outputVaultId: BigNumber; - tracking: BigNumber; vmStateConfig: StateConfigStructOutput; }; @@ -145,7 +142,7 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface OrderBookInterface extends utils.Interface { functions: { - "addOrder((address,uint256,address,uint256,uint256,(bytes[],uint256[])))": FunctionFragment; + "addOrder((address,uint256,address,uint256,(bytes[],uint256[])))": FunctionFragment; "clear((address,address,uint256,address,uint256,uint256,bytes),(address,address,uint256,address,uint256,uint256,bytes),(uint256,uint256))": FunctionFragment; "deposit((address,uint256,uint256))": FunctionFragment; "fnPtrs()": FunctionFragment; diff --git a/src/typechain/RandomTest.ts b/src/typechain/RandomTest.ts new file mode 100644 index 0000000..30e023f --- /dev/null +++ b/src/typechain/RandomTest.ts @@ -0,0 +1,227 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface RandomTestInterface extends utils.Interface { + functions: { + "microLottery(uint256,uint256,uint256)": FunctionFragment; + "randomId(uint256,uint256)": FunctionFragment; + "shuffle(uint256,uint256)": FunctionFragment; + "shuffleIdAtIndex(uint256)": FunctionFragment; + "shuffled()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "microLottery", + values: [BigNumberish, BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "randomId", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "shuffle", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "shuffleIdAtIndex", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "shuffled", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "microLottery", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "randomId", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "shuffle", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "shuffleIdAtIndex", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "shuffled", data: BytesLike): Result; + + events: {}; +} + +export interface RandomTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: RandomTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + microLottery( + seed_: BigNumberish, + max_: BigNumberish, + n_: BigNumberish, + overrides?: CallOverrides + ): Promise<[BigNumber] & { item_: BigNumber }>; + + randomId( + seed_: BigNumberish, + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffle( + seed_: BigNumberish, + len_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffleIdAtIndex( + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffled(overrides?: CallOverrides): Promise<[string]>; + }; + + microLottery( + seed_: BigNumberish, + max_: BigNumberish, + n_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + randomId( + seed_: BigNumberish, + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffle( + seed_: BigNumberish, + len_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffleIdAtIndex( + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffled(overrides?: CallOverrides): Promise; + + callStatic: { + microLottery( + seed_: BigNumberish, + max_: BigNumberish, + n_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + randomId( + seed_: BigNumberish, + index_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + shuffle( + seed_: BigNumberish, + len_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + shuffleIdAtIndex( + index_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + shuffled(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + microLottery( + seed_: BigNumberish, + max_: BigNumberish, + n_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + randomId( + seed_: BigNumberish, + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffle( + seed_: BigNumberish, + len_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffleIdAtIndex( + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffled(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + microLottery( + seed_: BigNumberish, + max_: BigNumberish, + n_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + randomId( + seed_: BigNumberish, + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffle( + seed_: BigNumberish, + len_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffleIdAtIndex( + index_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + shuffled(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/SeedDance.ts b/src/typechain/SeedDance.ts new file mode 100644 index 0000000..8aad013 --- /dev/null +++ b/src/typechain/SeedDance.ts @@ -0,0 +1,169 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type TimeBoundStruct = { + baseDuration: BigNumberish; + maxExtraTime: BigNumberish; +}; + +export type TimeBoundStructOutput = [number, number] & { + baseDuration: number; + maxExtraTime: number; +}; + +export interface SeedDanceInterface extends utils.Interface { + functions: { + "canRevealUntil(uint256,uint256,(uint32,uint32),address)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "canRevealUntil", + values: [BigNumberish, BigNumberish, TimeBoundStruct, string] + ): string; + + decodeFunctionResult( + functionFragment: "canRevealUntil", + data: BytesLike + ): Result; + + events: { + "Commit(address,uint256)": EventFragment; + "Reveal(address,uint256,uint256)": EventFragment; + "Start(address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Commit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Reveal"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Start"): EventFragment; +} + +export type CommitEvent = TypedEvent< + [string, BigNumber], + { sender: string; commitment: BigNumber } +>; + +export type CommitEventFilter = TypedEventFilter; + +export type RevealEvent = TypedEvent< + [string, BigNumber, BigNumber], + { sender: string; secret: BigNumber; newSeed: BigNumber } +>; + +export type RevealEventFilter = TypedEventFilter; + +export type StartEvent = TypedEvent< + [string, BigNumber], + { sender: string; initialSeed: BigNumber } +>; + +export type StartEventFilter = TypedEventFilter; + +export interface SeedDance extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SeedDanceInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { until_: BigNumber }>; + }; + + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + + callStatic: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Commit(address,uint256)"( + sender?: null, + commitment?: null + ): CommitEventFilter; + Commit(sender?: null, commitment?: null): CommitEventFilter; + + "Reveal(address,uint256,uint256)"( + sender?: null, + secret?: null, + newSeed?: null + ): RevealEventFilter; + Reveal(sender?: null, secret?: null, newSeed?: null): RevealEventFilter; + + "Start(address,uint256)"( + sender?: null, + initialSeed?: null + ): StartEventFilter; + Start(sender?: null, initialSeed?: null): StartEventFilter; + }; + + estimateGas: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/SeedDanceTest.ts b/src/typechain/SeedDanceTest.ts new file mode 100644 index 0000000..0977d11 --- /dev/null +++ b/src/typechain/SeedDanceTest.ts @@ -0,0 +1,276 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type TimeBoundStruct = { + baseDuration: BigNumberish; + maxExtraTime: BigNumberish; +}; + +export type TimeBoundStructOutput = [number, number] & { + baseDuration: number; + maxExtraTime: number; +}; + +export interface SeedDanceTestInterface extends utils.Interface { + functions: { + "canRevealUntil(uint256,uint256,(uint32,uint32),address)": FunctionFragment; + "commit(uint256)": FunctionFragment; + "reveal((uint32,uint32),uint256)": FunctionFragment; + "sharedSeed()": FunctionFragment; + "start(uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "canRevealUntil", + values: [BigNumberish, BigNumberish, TimeBoundStruct, string] + ): string; + encodeFunctionData( + functionFragment: "commit", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "reveal", + values: [TimeBoundStruct, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "sharedSeed", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "start", values: [BigNumberish]): string; + + decodeFunctionResult( + functionFragment: "canRevealUntil", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "commit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "reveal", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "sharedSeed", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "start", data: BytesLike): Result; + + events: { + "Commit(address,uint256)": EventFragment; + "Reveal(address,uint256,uint256)": EventFragment; + "Start(address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Commit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Reveal"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Start"): EventFragment; +} + +export type CommitEvent = TypedEvent< + [string, BigNumber], + { sender: string; commitment: BigNumber } +>; + +export type CommitEventFilter = TypedEventFilter; + +export type RevealEvent = TypedEvent< + [string, BigNumber, BigNumber], + { sender: string; secret: BigNumber; newSeed: BigNumber } +>; + +export type RevealEventFilter = TypedEventFilter; + +export type StartEvent = TypedEvent< + [string, BigNumber], + { sender: string; initialSeed: BigNumber } +>; + +export type StartEventFilter = TypedEventFilter; + +export interface SeedDanceTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SeedDanceTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { until_: BigNumber }>; + + commit( + commitment_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + reveal( + timeBound_: TimeBoundStruct, + secret_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + sharedSeed(overrides?: CallOverrides): Promise<[BigNumber]>; + + start( + initialSeed_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + + commit( + commitment_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + reveal( + timeBound_: TimeBoundStruct, + secret_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + sharedSeed(overrides?: CallOverrides): Promise; + + start( + initialSeed_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + + commit(commitment_: BigNumberish, overrides?: CallOverrides): Promise; + + reveal( + timeBound_: TimeBoundStruct, + secret_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + sharedSeed(overrides?: CallOverrides): Promise; + + start(initialSeed_: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + "Commit(address,uint256)"( + sender?: null, + commitment?: null + ): CommitEventFilter; + Commit(sender?: null, commitment?: null): CommitEventFilter; + + "Reveal(address,uint256,uint256)"( + sender?: null, + secret?: null, + newSeed?: null + ): RevealEventFilter; + Reveal(sender?: null, secret?: null, newSeed?: null): RevealEventFilter; + + "Start(address,uint256)"( + sender?: null, + initialSeed?: null + ): StartEventFilter; + Start(sender?: null, initialSeed?: null): StartEventFilter; + }; + + estimateGas: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + + commit( + commitment_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + reveal( + timeBound_: TimeBoundStruct, + secret_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + sharedSeed(overrides?: CallOverrides): Promise; + + start( + initialSeed_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + canRevealUntil( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundStruct, + owner_: string, + overrides?: CallOverrides + ): Promise; + + commit( + commitment_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + reveal( + timeBound_: TimeBoundStruct, + secret_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + sharedSeed(overrides?: CallOverrides): Promise; + + start( + initialSeed_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/factories/EmissionsERC20Factory__factory.ts b/src/typechain/factories/EmissionsERC20Factory__factory.ts index 82db14b..b37f6ca 100644 --- a/src/typechain/factories/EmissionsERC20Factory__factory.ts +++ b/src/typechain/factories/EmissionsERC20Factory__factory.ts @@ -182,7 +182,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b5060405162005b4838038062005b48833981016040819052610031916100d7565b600160009081556040518290610046906100c9565b6001600160a01b039091168152602001604051809103906000f080158015610072573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610107565b614a03806200114583390190565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b60805161101c620001296000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea264697066735822122092db2cc19742fd6f43f56df92b02c0c21b66b182e3062b7265698b8ff346a4ac64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212207b4beb1aa0ffca5ba829d07a348772f9b306347d84c216e6fb1f6034ca844d5e64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b5060405162005b4838038062005b48833981016040819052610031916100d7565b600160009081556040518290610046906100c9565b6001600160a01b039091168152602001604051809103906000f080158015610072573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610107565b614a03806200114583390190565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b60805161101c620001296000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea264697066735822122035cd70ba92b0361856385d86d44cc9b6b0befa242681f7c398c5a947ef3d715064736f6c634300080a003360c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212205d92d2ff6027c75bd5d5bd6649dd86bdd6ab4dab7ab584f5989fd4865e81be9264736f6c634300080a0033"; type EmissionsERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20__factory.ts b/src/typechain/factories/EmissionsERC20__factory.ts index 512eead..6afa6be 100644 --- a/src/typechain/factories/EmissionsERC20__factory.ts +++ b/src/typechain/factories/EmissionsERC20__factory.ts @@ -651,7 +651,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212207b4beb1aa0ffca5ba829d07a348772f9b306347d84c216e6fb1f6034ca844d5e64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212205d92d2ff6027c75bd5d5bd6649dd86bdd6ab4dab7ab584f5989fd4865e81be9264736f6c634300080a0033"; type EmissionsERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/LibCommitmentTest__factory.ts b/src/typechain/factories/LibCommitmentTest__factory.ts new file mode 100644 index 0000000..34f022f --- /dev/null +++ b/src/typechain/factories/LibCommitmentTest__factory.ts @@ -0,0 +1,117 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + LibCommitmentTest, + LibCommitmentTestInterface, +} from "../LibCommitmentTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "Commitment", + name: "a_", + type: "uint256", + }, + { + internalType: "Commitment", + name: "b_", + type: "uint256", + }, + ], + name: "eq", + outputs: [ + { + internalType: "bool", + name: "eq_", + type: "bool", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "Secret", + name: "secret_", + type: "uint256", + }, + ], + name: "fromSecret", + outputs: [ + { + internalType: "Commitment", + name: "commitment_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "zero", + outputs: [ + { + internalType: "Commitment", + name: "zero_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610168806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063320cbc3f1461004657806332148d731461006c578063bc1b392d1461008e575b600080fd5b6100596100543660046100f7565b610095565b6040519081526020015b60405180910390f35b61007e61007a366004610110565b1490565b6040519015158152602001610063565b6000610059565b60006100a0826100a6565b92915050565b6000816040516020016100bb91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60006020828403121561010957600080fd5b5035919050565b6000806040838503121561012357600080fd5b5050803592602090910135915056fea2646970667358221220ff52ac4a8382167015769be3c3b910fb64be85227e41b56a715cc1cba5a4a33d64736f6c634300080a0033"; + +type LibCommitmentTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LibCommitmentTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LibCommitmentTest__factory extends ContractFactory { + constructor(...args: LibCommitmentTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): LibCommitmentTest { + return super.attach(address) as LibCommitmentTest; + } + connect(signer: Signer): LibCommitmentTest__factory { + return super.connect(signer) as LibCommitmentTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LibCommitmentTestInterface { + return new utils.Interface(_abi) as LibCommitmentTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LibCommitmentTest { + return new Contract(address, _abi, signerOrProvider) as LibCommitmentTest; + } +} diff --git a/src/typechain/factories/LibSeedTest__factory.ts b/src/typechain/factories/LibSeedTest__factory.ts new file mode 100644 index 0000000..f66d554 --- /dev/null +++ b/src/typechain/factories/LibSeedTest__factory.ts @@ -0,0 +1,82 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { LibSeedTest, LibSeedTestInterface } from "../LibSeedTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "Seed", + name: "seed_", + type: "uint256", + }, + { + internalType: "uint256", + name: "val_", + type: "uint256", + }, + ], + name: "with", + outputs: [ + { + internalType: "Seed", + name: "newSeed_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5060cd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632d586d6014602d575b600080fd5b606460383660046076565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b60405190815260200160405180910390f35b60008060408385031215608857600080fd5b5050803592602090910135915056fea26469706673582212203810bacd4cb9926abbf150c419abb9138f07de1f745e670d97ec91b004d5c03264736f6c634300080a0033"; + +type LibSeedTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: LibSeedTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class LibSeedTest__factory extends ContractFactory { + constructor(...args: LibSeedTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): LibSeedTest { + return super.attach(address) as LibSeedTest; + } + connect(signer: Signer): LibSeedTest__factory { + return super.connect(signer) as LibSeedTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): LibSeedTestInterface { + return new utils.Interface(_abi) as LibSeedTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): LibSeedTest { + return new Contract(address, _abi, signerOrProvider) as LibSeedTest; + } +} diff --git a/src/typechain/factories/OrderBookStateBuilder__factory.ts b/src/typechain/factories/OrderBookStateBuilder__factory.ts index 79edc06..2b8eb46 100644 --- a/src/typechain/factories/OrderBookStateBuilder__factory.ts +++ b/src/typechain/factories/OrderBookStateBuilder__factory.ts @@ -233,7 +233,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c7a1760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a0526200070d565b6060620000746200019e60201b62000d051760201c565b620000b4604080516060810182526001600160401b036200055d602090811b620010461782168184015262000557901b6200104017168183015290815290565b604051602001620000c792919062000692565b604051602081830303815290604052905090565b6000806200011583604051602001620000f59190620006b3565b6040516020818303038152906040526200038d60201b62000e931760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000167620003bb60201b62000ebf1760201c565b604080516060810182526001600160401b036200055d602090811b62001046179190911690820181905281830152908152620000b4565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000557831b6200104017811660e083018190526200055d841b62001046178216610100840181905262000563851b6200104c17831661012085018190526101408501839052610160850183905261018085018390526101a0850181905262000569861b620010521784166101c0860152620005b6861b620010c71784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e08501829052620005bc861b620010cd17841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e084018190526105008401819052610520840152620005ff841b6200113c17821661054084015262000605841b6200114217821661056084015261058083018190526200060b90931b6200114817166105a08201526105c08082019290925290815290565b6060815182604051602001620003a5929190620006cf565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200055d831b6200104617811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a08301819052620005bc90931b620010cd17166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005ac5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005fb5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620005a3565b5090565b60020190565b60030190565b6000601f8216806200064e5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620005a3565b92915050565b6000815160005b818110156200067757602081850181015186830152016200065b565b8181111562000687576000828601525b509290920192915050565b6000620006ab620006a4838662000654565b8462000654565b949350505050565b600081526000620006c8600183018462000654565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620006ab600e83018462000654565b60805160a051611f72620007336000396000610723015260006106f60152611f726000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611a47565b6100cd565b60405161008c9190611b65565b60405180910390f35b61007f6104c8565b6100b06100ab366004611bb6565b610682565b005b61007f6100c0366004611c06565b610986565b61007f610ad7565b606060006100da856111bb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c6a565b60200151905060008060005b86518110156102f0578387828151811061017457610174611cb9565b602002602001015160a0018181525050600285518161019557610195611ce8565b048782815181106101a8576101a8611cb9565b602002602001015160c00181815250506101db888883815181106101ce576101ce611cb9565b6020026020010151610682565b61020b8782815181106101f0576101f0611cb9565b602002602001015160800151846112f990919063ffffffff16565b925061023d87828151811061022257610222611cb9565b602002602001015160600151836112f990919063ffffffff16565b915086818151811061025157610251611cb9565b60200260200101516020015187828151811061026f5761026f611cb9565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff81111561031357610313611716565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611cb9565b602002602001015182828151811061037f5761037f611cb9565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b1611716565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611cb9565b6020026020010151610986565b82828151811061042d5761042d611cb9565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f611716565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250611310565b96505050505050505b9392505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104660e08401819052610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526110cd6101c08501526101e08401819052610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840181905261038084018190526103a084018190526103c084018190526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084018190526105408401819052610560840181905261058084018190526105a084018190526105c080850182905284528451808401865291820181905281850152928352915b60405160200161066e929190611d17565b604051602081830303815290604052905090565b805182515181106106ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b600061071a7f000000000000000000000000000000000000000000000000000000000000000061144d565b905060006107477f000000000000000000000000000000000000000000000000000000000000000061144d565b905060008080600080602088026020018a5101519050805193505b8385101561090b576002850194508481015180601e1a935080601f1a925050600683101561082657826107b65789602001515189608001510182106107a657600080fd5b604089018051600101905261080d565b60018314156107cf57886040015182106107a657600080fd5b60028314156107e857604089018051600101905261080d565b600383141561080d578860a00151821061080157600080fd5b60408901805160010190525b6004831415610821576108218a8a8461147b565b6108ee565b8860c001518310610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108b28463ffffffff8416565b60408c018051919091039081905260608c01516108ce916112f9565b60608c01526108e08463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610901916112f9565b60608a0152610762565b606089015160ff101561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a1757610a17611716565b6040519080825280601f01601f191660200182016040528015610a41576020820181803683370190505b509050600660018381018160005b82821015610ac95781890151601f1a6002830615610aab5785811015610a7d57600182019181908801602101535b858110610aab57600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610abc5780826020018801535b5060019182019101610a4f565b509398975050505050505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104060e08401819052611046610100850181905261104c61012086018190526101408601839052610160860183905261018086018390526101a086018190526110526101c08701526110c76101e0870181905261020087018190526102208701819052610240870152610260860182905261028086018390526102a086018390526102c086018290526102e086018290526110cd61030087018190526103208701919091526103408601839052610360860181905261038086018390526103a086018290526103c086018390526103e08601819052610400860181905261042086018190526104408601819052610460860181905261048086018190526104a086018190526104c086018190526104e08601819052610500860181905261052086015261113c61054086015261114261056086015261058085018290526111486105a08601526105c080860183905285528551808501875292830152818501529283529161065d565b600080610ca583604051602001610c919190611d46565b604051602081830303815290604052610e93565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cff576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104060e08201819052611046610100830181905261104c61012084018190526101408401839052610160840183905261018084018390526101a084018190526110526101c08501526110c76101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e084018290526110cd61030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083015261113c61054083015261114261056083015261058082018190526111486105a08301526105c082810191909152815290565b6060815182604051602001610ea9929190611d6c565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104660e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110cd6101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b60008082116110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b50600090565b6000808211611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b60020190565b60030190565b6000601f8216806111b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926111ef911661144d565b90508051600014156111b55761129c6112978473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112929190810190611e03565b61151a565b610c7a565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c1836111bb565b60008183101561130957816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161135c9190611e7a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113989291602001611eb0565b604051602081830303815290604052905060005b8560400151518110156114445781866040015182815181106113d0576113d0611cb9565b60200260200101515160001b876040015183815181106113f2576113f2611cb9565b602002602001015160405160200161140c93929190611ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016113ac565b50949350505050565b60606111b58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611624565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114c591906112f9565b606084015260808301516114d990826112f9565b60808401528251600783168085526001600385811c161b919060005b8381101561150f576115078888610682565b6001016114f5565b505090935250505050565b6060602082518161152d5761152d611ce8565b0615611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b600060108351816115a8576115a8611ce8565b0467ffffffffffffffff8111156115c1576115c1611716565b6040519080825280601f01601f1916602001820160405280156115eb576020820181803683370190505b509050600060025b845182101561161b5780830180516020848801810151909117909152909101906002016115f3565b50909392505050565b6060833b806116435750506040805160208101909152600081526104c1565b808411156116615750506040805160208101909152600081526104c1565b838310156116ac576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b83830384820360008282106116c157826116c3565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611714611f0d565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176857611768611716565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117b5576117b5611716565b604052919050565b600067ffffffffffffffff8211156117d7576117d7611716565b5060051b60200190565b600067ffffffffffffffff8211156117fb576117fb611716565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261183857600080fd5b813561184b611846826117e1565b61176e565b81815284602083860101111561186057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261188e57600080fd5b8135602061189e611846836117bd565b82815260059290921b840181019181810190868411156118bd57600080fd5b8286015b848110156118d857803583529183019183016118c1565b509695505050505050565b6000604082840312156118f557600080fd5b6118fd611745565b9050813567ffffffffffffffff8082111561191757600080fd5b818401915084601f83011261192b57600080fd5b8135602061193b611846836117bd565b82815260059290921b8401810191818101908884111561195a57600080fd5b8286015b84811015611992578035868111156119765760008081fd5b6119848b86838b0101611827565b84525091830191830161195e565b50865250858101359350828411156119a957600080fd5b6119b58785880161187d565b818601525050505092915050565b600060e082840312156119d557600080fd5b60405160e0810181811067ffffffffffffffff821117156119f8576119f8611716565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a5c57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a8057600080fd5b925060208481013567ffffffffffffffff80821115611a9e57600080fd5b611aaa888389016118e3565b94506040870135915080821115611ac057600080fd5b508501601f81018713611ad257600080fd5b8035611ae0611846826117bd565b81815260e0918202830184019184820191908a841115611aff57600080fd5b938501935b83851015611b2557611b168b866119c3565b83529384019391850191611b04565b5080955050505050509250925092565b60005b83811015611b50578181015183820152602001611b38565b83811115611b5f576000848401525b50505050565b6020815260008251806020840152611b84816040850160208701611b35565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611bca57600080fd5b823567ffffffffffffffff811115611be157600080fd5b611bed858286016118e3565b925050611bfd84602085016119c3565b90509250929050565b60008060408385031215611c1957600080fd5b823567ffffffffffffffff80821115611c3157600080fd5b611c3d86838701611827565b93506020850135915080821115611c5357600080fd5b50611c6085828601611827565b9150509250929050565b600060408284031215611c7c57600080fd5b6040516040810181811067ffffffffffffffff82111715611c9f57611c9f611716565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611d29818460208801611b35565b835190830190611d3d818360208801611b35565b01949350505050565b6000815260008251611d5f816001850160208701611b35565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611df581600e850160208701611b35565b91909101600e019392505050565b600060208284031215611e1557600080fd5b815167ffffffffffffffff811115611e2c57600080fd5b8201601f81018413611e3d57600080fd5b8051611e4b611846826117e1565b818152856020838501011115611e6057600080fd5b611e71826020830160208601611b35565b95945050505050565b815160009082906020808601845b83811015611ea457815185529382019390820190600101611e88565b50929695505050505050565b82815260008251611ec8816020850160208701611b35565b919091016020019392505050565b60008451611ee8818460208901611b35565b82018481528351611f00816020808501908801611b35565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220e97abc24d5a563a1c2bac18acd632acf90c5167dfec286831ed902b2a6c9c36c64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c7a1760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a0526200070d565b6060620000746200019e60201b62000d051760201c565b620000b4604080516060810182526001600160401b036200055d602090811b620010461782168184015262000557901b6200104017168183015290815290565b604051602001620000c792919062000692565b604051602081830303815290604052905090565b6000806200011583604051602001620000f59190620006b3565b6040516020818303038152906040526200038d60201b62000e931760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000167620003bb60201b62000ebf1760201c565b604080516060810182526001600160401b036200055d602090811b62001046179190911690820181905281830152908152620000b4565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000557831b6200104017811660e083018190526200055d841b62001046178216610100840181905262000563851b6200104c17831661012085018190526101408501839052610160850183905261018085018390526101a0850181905262000569861b620010521784166101c0860152620005b6861b620010c71784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e08501829052620005bc861b620010cd17841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e084018190526105008401819052610520840152620005ff841b6200113c17821661054084015262000605841b6200114217821661056084015261058083018190526200060b90931b6200114817166105a08201526105c08082019290925290815290565b6060815182604051602001620003a5929190620006cf565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200055d831b6200104617811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a08301819052620005bc90931b620010cd17166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005ac5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005fb5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620005a3565b5090565b60020190565b60030190565b6000601f8216806200064e5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620005a3565b92915050565b6000815160005b818110156200067757602081850181015186830152016200065b565b8181111562000687576000828601525b509290920192915050565b6000620006ab620006a4838662000654565b8462000654565b949350505050565b600081526000620006c8600183018462000654565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620006ab600e83018462000654565b60805160a051611f72620007336000396000610723015260006106f60152611f726000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611a47565b6100cd565b60405161008c9190611b65565b60405180910390f35b61007f6104c8565b6100b06100ab366004611bb6565b610682565b005b61007f6100c0366004611c06565b610986565b61007f610ad7565b606060006100da856111bb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c6a565b60200151905060008060005b86518110156102f0578387828151811061017457610174611cb9565b602002602001015160a0018181525050600285518161019557610195611ce8565b048782815181106101a8576101a8611cb9565b602002602001015160c00181815250506101db888883815181106101ce576101ce611cb9565b6020026020010151610682565b61020b8782815181106101f0576101f0611cb9565b602002602001015160800151846112f990919063ffffffff16565b925061023d87828151811061022257610222611cb9565b602002602001015160600151836112f990919063ffffffff16565b915086818151811061025157610251611cb9565b60200260200101516020015187828151811061026f5761026f611cb9565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff81111561031357610313611716565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611cb9565b602002602001015182828151811061037f5761037f611cb9565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b1611716565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611cb9565b6020026020010151610986565b82828151811061042d5761042d611cb9565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f611716565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250611310565b96505050505050505b9392505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104660e08401819052610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526110cd6101c08501526101e08401819052610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840181905261038084018190526103a084018190526103c084018190526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084018190526105408401819052610560840181905261058084018190526105a084018190526105c080850182905284528451808401865291820181905281850152928352915b60405160200161066e929190611d17565b604051602081830303815290604052905090565b805182515181106106ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b600061071a7f000000000000000000000000000000000000000000000000000000000000000061144d565b905060006107477f000000000000000000000000000000000000000000000000000000000000000061144d565b905060008080600080602088026020018a5101519050805193505b8385101561090b576002850194508481015180601e1a935080601f1a925050600683101561082657826107b65789602001515189608001510182106107a657600080fd5b604089018051600101905261080d565b60018314156107cf57886040015182106107a657600080fd5b60028314156107e857604089018051600101905261080d565b600383141561080d578860a00151821061080157600080fd5b60408901805160010190525b6004831415610821576108218a8a8461147b565b6108ee565b8860c001518310610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108b28463ffffffff8416565b60408c018051919091039081905260608c01516108ce916112f9565b60608c01526108e08463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610901916112f9565b60608a0152610762565b606089015160ff101561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a1757610a17611716565b6040519080825280601f01601f191660200182016040528015610a41576020820181803683370190505b509050600660018381018160005b82821015610ac95781890151601f1a6002830615610aab5785811015610a7d57600182019181908801602101535b858110610aab57600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610abc5780826020018801535b5060019182019101610a4f565b509398975050505050505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104060e08401819052611046610100850181905261104c61012086018190526101408601839052610160860183905261018086018390526101a086018190526110526101c08701526110c76101e0870181905261020087018190526102208701819052610240870152610260860182905261028086018390526102a086018390526102c086018290526102e086018290526110cd61030087018190526103208701919091526103408601839052610360860181905261038086018390526103a086018290526103c086018390526103e08601819052610400860181905261042086018190526104408601819052610460860181905261048086018190526104a086018190526104c086018190526104e08601819052610500860181905261052086015261113c61054086015261114261056086015261058085018290526111486105a08601526105c080860183905285528551808501875292830152818501529283529161065d565b600080610ca583604051602001610c919190611d46565b604051602081830303815290604052610e93565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cff576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104060e08201819052611046610100830181905261104c61012084018190526101408401839052610160840183905261018084018390526101a084018190526110526101c08501526110c76101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e084018290526110cd61030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083015261113c61054083015261114261056083015261058082018190526111486105a08301526105c082810191909152815290565b6060815182604051602001610ea9929190611d6c565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104660e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110cd6101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b60008082116110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b50600090565b6000808211611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b60020190565b60030190565b6000601f8216806111b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926111ef911661144d565b90508051600014156111b55761129c6112978473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112929190810190611e03565b61151a565b610c7a565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c1836111bb565b60008183101561130957816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161135c9190611e7a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113989291602001611eb0565b604051602081830303815290604052905060005b8560400151518110156114445781866040015182815181106113d0576113d0611cb9565b60200260200101515160001b876040015183815181106113f2576113f2611cb9565b602002602001015160405160200161140c93929190611ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016113ac565b50949350505050565b60606111b58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611624565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114c591906112f9565b606084015260808301516114d990826112f9565b60808401528251600783168085526001600385811c161b919060005b8381101561150f576115078888610682565b6001016114f5565b505090935250505050565b6060602082518161152d5761152d611ce8565b0615611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b600060108351816115a8576115a8611ce8565b0467ffffffffffffffff8111156115c1576115c1611716565b6040519080825280601f01601f1916602001820160405280156115eb576020820181803683370190505b509050600060025b845182101561161b5780830180516020848801810151909117909152909101906002016115f3565b50909392505050565b6060833b806116435750506040805160208101909152600081526104c1565b808411156116615750506040805160208101909152600081526104c1565b838310156116ac576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b83830384820360008282106116c157826116c3565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611714611f0d565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176857611768611716565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117b5576117b5611716565b604052919050565b600067ffffffffffffffff8211156117d7576117d7611716565b5060051b60200190565b600067ffffffffffffffff8211156117fb576117fb611716565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261183857600080fd5b813561184b611846826117e1565b61176e565b81815284602083860101111561186057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261188e57600080fd5b8135602061189e611846836117bd565b82815260059290921b840181019181810190868411156118bd57600080fd5b8286015b848110156118d857803583529183019183016118c1565b509695505050505050565b6000604082840312156118f557600080fd5b6118fd611745565b9050813567ffffffffffffffff8082111561191757600080fd5b818401915084601f83011261192b57600080fd5b8135602061193b611846836117bd565b82815260059290921b8401810191818101908884111561195a57600080fd5b8286015b84811015611992578035868111156119765760008081fd5b6119848b86838b0101611827565b84525091830191830161195e565b50865250858101359350828411156119a957600080fd5b6119b58785880161187d565b818601525050505092915050565b600060e082840312156119d557600080fd5b60405160e0810181811067ffffffffffffffff821117156119f8576119f8611716565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a5c57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a8057600080fd5b925060208481013567ffffffffffffffff80821115611a9e57600080fd5b611aaa888389016118e3565b94506040870135915080821115611ac057600080fd5b508501601f81018713611ad257600080fd5b8035611ae0611846826117bd565b81815260e0918202830184019184820191908a841115611aff57600080fd5b938501935b83851015611b2557611b168b866119c3565b83529384019391850191611b04565b5080955050505050509250925092565b60005b83811015611b50578181015183820152602001611b38565b83811115611b5f576000848401525b50505050565b6020815260008251806020840152611b84816040850160208701611b35565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611bca57600080fd5b823567ffffffffffffffff811115611be157600080fd5b611bed858286016118e3565b925050611bfd84602085016119c3565b90509250929050565b60008060408385031215611c1957600080fd5b823567ffffffffffffffff80821115611c3157600080fd5b611c3d86838701611827565b93506020850135915080821115611c5357600080fd5b50611c6085828601611827565b9150509250929050565b600060408284031215611c7c57600080fd5b6040516040810181811067ffffffffffffffff82111715611c9f57611c9f611716565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611d29818460208801611b35565b835190830190611d3d818360208801611b35565b01949350505050565b6000815260008251611d5f816001850160208701611b35565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611df581600e850160208701611b35565b91909101600e019392505050565b600060208284031215611e1557600080fd5b815167ffffffffffffffff811115611e2c57600080fd5b8201601f81018413611e3d57600080fd5b8051611e4b611846826117e1565b818152856020838501011115611e6057600080fd5b611e71826020830160208601611b35565b95945050505050565b815160009082906020808601845b83811015611ea457815185529382019390820190600101611e88565b50929695505050505050565b82815260008251611ec8816020850160208701611b35565b919091016020019392505050565b60008451611ee8818460208901611b35565b82018481528351611f00816020808501908801611b35565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220cb961504815b449788a0b158592231794a46cfeba7d8afbf57aa34a436f23aa864736f6c634300080a0033"; type OrderBookStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OrderBook__factory.ts b/src/typechain/factories/OrderBook__factory.ts index 3a142ca..270585e 100644 --- a/src/typechain/factories/OrderBook__factory.ts +++ b/src/typechain/factories/OrderBook__factory.ts @@ -383,11 +383,6 @@ const _abi = [ name: "outputVaultId", type: "uint256", }, - { - internalType: "uint256", - name: "tracking", - type: "uint256", - }, { components: [ { @@ -676,7 +671,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200496b3803806200496b83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516148c9620000a26000396000610d9e01526000610dbf01526148c96000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063bb93549b1161005b578063bb93549b146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806384e07cdc146100aa575b600080fd5b61009561009036600461379a565b610135565b005b6100956100a53660046137ed565b610258565b6100956100b8366004613a5d565b6103ac565b6100956100cb366004613afb565b610d97565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b3660046137ed565b610e60565b610128610f5a565b6040516101049190613bac565b6101426020820182613bbf565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983613bdc565b61113f565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b9033908590613c9c565b60405180910390a15b5050565b336000908152600160209081526040822090829061027890850185613bbf565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf908401358361118e565b90506102cb8183613d8d565b336000908152600160209081526040822091906102ea90870187613bbf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613ddc565b60405180910390a16103a7338261038a6020870187613bbf565b73ffffffffffffffffffffffffffffffffffffffff1691906111a8565b505050565b60006103b78461113f565b905060006103c48461113f565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff1614610463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff1614610500576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610578576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b61061b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b6040516106569493929190613e81565b60405180910390a16106906040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61069d8b60c0015161127c565b90506106e16106d960405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff168152506113e8565b82600061143c565b5080602001516001826000015103815181106106ff576106ff613edf565b60200260200101519450806020015160028260000151038151811061072657610726613edf565b6020026020010151925061073d8a60c0015161127c565b90506107796106d960405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff168152506113e8565b50806020015160018260000151038151811061079757610797613edf565b6020026020010151935080602001516002826000015103815181106107be576107be613edf565b6020026020010151915050610875600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361118e90919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e01518352905220549092506108c990829061118e565b90506108df6108d88285611712565b839061118e565b85526108f56108ee8386611712565b829061118e565b6020860152845115158061090d575060008560200151115b610973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b845161097f9085611712565b604086015260208501516109939084611712565b606086015250508251159150610a8b9050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b01518352905290812080549091906109fe908490613d8d565b909155505060a086015160011615610a3657805160008481526002602052604081208054909190610a30908490613f0e565b90915550505b60a086015160021615610a8b5780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610a85908490613f0e565b90915550505b602081015115610b8757602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610af0908490613d8d565b909155505060a085015160011615610b2f578060200151600260008481526020019081526020016000206000828254610b299190613f0e565b90915550505b60a085015160021615610b875760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610b81908490613f0e565b90915550505b604081015115610bf257604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610bec908490613f0e565b90915550505b606081015115610c5c576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610c56908490613f0e565b90915550505b60608101518151600091610c6f91613d8d565b9050600082604001518360200151610c879190613d8d565b90508115610ce25733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610cdc908490613f0e565b90915550505b8015610d3d5733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610d37908490613f0e565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b6000610dec7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610de785613fb0565b611731565b90506000610df98261113f565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb890610e539033908590614100565b60405180910390a1505050565b33600090815260016020908152604080832090840135929091610e8590850185613bbf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee39190613f0e565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a903390849061412f565b60405180910390a1610f5733306040840135610f396020860186613bbf565b73ffffffffffffffffffffffffffffffffffffffff169291906119bf565b50565b604080516105e08101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611e6860e08201819052611f5c610100830152611fe86101208301526121096101408301526101608201526121b26101808201526122ba6101a082015261238e6101c082015261258b6101e08201526125966102008201526125a16102208201526125ac6102408201526125b76102608201526125eb6102808201526126516102a08201526126b76102c08201526126eb6102e082015261271f6103008201526127546103208201526127af61034082015261280561036082015261282e6103808201526128856103a08201526128b26103c08201526129096103e08201526129746104008201526129d1610420820152612a0f610440820152612a48610460820152612a7c610480820152612aae6104a0820152612ae06104c0820152612b126104e0820152612b46610500820152612b98610520820152612bd1610540820152612c83610560820152612db0610580820152612e0c6105a0820152612ec66105c080830191909152815260408051606081018252612f426020820152612f7d8183015290815260405160200161112b929190614159565b604051602081830303815290604052905090565b6000816040516020016111529190614188565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b600081831061119d578161119f565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a23565b6112ae6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6112e06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561131457611314613809565b60405190808252806020026020018201604052801561133d578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561137457611374613809565b60405190808252806020026020018201604052801561139d578160200160208202803683370190505b5090506020870151602002604001870160005b848110156113d75781602082026020018401528151602001820191506001810190506113b0565b505060408501525091949350505050565b60606113f261377c565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff16818301526040516114259183910161419b565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156116f8576003890198508886015180601f1a975061ffff8160081c16985050600688101561167057876114bf57866020028401518252602082019150611683565b60018814156114dc57602087028301518252602082019150611683565b6002881415611569578c518760200210611552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d01518252602082019150611683565b60038814156115b157600061159f6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611683565b60048814156115cd576115c68d8d848a611b2f565b9150611683565b6060876115fb578c6040516020016115e5919061425c565b604051602081830303815290604052905061165a565b60018814156116145761160d8d611c9c565b905061165a565b6002881415611630576020808e01516040516115e592016142f3565b600388141561165a578c516040805160208101929092520160405160208183030381529060405290505b80511561166a5761166a81611dd9565b50611683565b8761167f888463ffffffff8416565b9250505b60208c0151518c5111156116f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b61147a565b6020838303048c52509750505050505050505b9392505050565b6000670de0b6b3a76400006117278385614358565b61119f9190614395565b6117b36040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b6117f36040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6118546040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081611814579050509050818160008151811061187d5761187d613edf565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff16815260200185606001518152602001856080015181526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860a00151866040518463ffffffff1660e01b815260040161194e939291906143d0565b6000604051808303816000875af115801561196d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526119b391908101906144c3565b90529695505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a1d9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111fa565b50505050565b6000611a85826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130019092919063ffffffff16565b8051909150156103a75780806020019051810190611aa3919061453a565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b600060078216600383811c16828082611b6e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611bb9565b8260011415611b9257506fffffffffffffffffffffffffffffffff90506080611bb9565b8260021415611bae575067ffffffffffffffff90506040611bb9565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611bdc57611bdc613809565b604051908082528060200260200182016040528015611c05578160200160208202803683370190505b50905060208082019083028a03815b8b821015611c2c578151815260209182019101611c14565b505060608b015160808c015160209081029091010160005b610100811015611c8a5760208502830182845b82811015611c73578051841c8a16825260209182019101611c57565b505050611c818e8e8b61143c565b9b508501611c44565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611ce891906142f3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611d24929160200161455c565b604051602081830303815290604052905060005b856040015151811015611dd0578186604001518281518110611d5c57611d5c613edf565b60200260200101515160001b87604001518381518110611d7e57611d7e613edf565b6020026020010151604051602001611d9893929190614582565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611d38565b50949350505050565b610f5781604051602401611ded9190613bac565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613018565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611f2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f4f91906145b9565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fdc91906145b9565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156120d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120fb91906145b9565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611f0e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612273573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061229791906145d2565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016120ba565b60008060008467ffffffffffffffff8111156123ac576123ac613809565b6040519080825280602002602001820160405280156123d5578160200160208202803683370190505b50905060008567ffffffffffffffff8111156123f3576123f3613809565b60405190808252806020026020018201604052801561241c578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612471578251815260209283019201612459565b5050602088028101602084015b8183101561249657825181526020928301920161247e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906124f090879087906004016145ef565b600060405180830381865afa15801561250d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526125539190810190614652565b9050846020820160208a0281015b8082101561257c578151835260209283019290910190612561565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611fdc8287613039565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611f4f8261264b858a613039565b906130ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611f4f826126b1858a613039565b90611712565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611fdc82876130cf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611fdc828761311a565b6000602083028203805b838110156127495780518015612740578252612749565b50602001612729565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156127495780516128265760008252612749565b60200161280f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561294757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156129665750805160209091019061295f8382613178565b9250612919565b505081526020019392505050565b6020828102820380516000928201835b85821080156129b257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612966575080516020909101906129ca83826131b3565b9250612984565b6020828102820380516000928201835b85821080156129f05750826000105b1561296657508051602090910190612a0883826131e2565b92506129e1565b600060208302820380516000602083015b858110156129665780518301915082821015612a3b57600080fd5b9091508190602001612a20565b600060208302820380516000602083015b85811015612966578051915081612a6f57600080fd5b9181900491602001612a59565b6020828102820380516000928201835b8582101561296657508051602090910190612aa781846147f8565b9250612a8c565b6020828102820380516000928201835b858210156129665750805182811115612ad5578092505b602082019150612abe565b6020828102820380516000928201835b858210156129665750805182811015612b07578092505b602082019150612af0565b600060208302820380516000602083015b85811015612966578051915081612b3957600080fd5b9181900691602001612b23565b60006020830282038051600080602084015b86811015612b89578315612b81578051925082840291508284830414612b7d57600080fd5b8193505b602001612b58565b50505081526020019392505050565b600060208302820380516000602083015b858110156129665780518303915082821115612bc457600080fd5b9091508190602001612ba9565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906120ba9086908690600401614804565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90612d5c90879087908790600401614833565b602060405180830381865afa158015612d79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d9d91906145b9565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183611f4f83836131f8565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115612e3a57612e3a613809565b604051908082528060200260200182016040528015612e63578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612e9f57815181602001860152602082019150602081019050612e7d565b50505190506000612eb283838989613257565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085612f33858585856133a7565b90955250949695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b6060613010848460008561344d565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561304e57839150506111a2565b826012111561307a5750601282900361306881600a6147f8565b6130729085614358565b9150506111a2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016130a981600a6147f8565b6130729085614395565b5092915050565b600081611727670de0b6b3a764000085614358565b600081810b6130df5750816111a2565b60008260000b1315613107576130f682600a614868565b6131009084614358565b90506111a2565b60ff6000839003166130a981600a6147f8565b600080601283141561312f57839150506111a2565b8260121115613149575060128290036130a981600a6147f8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161306881600a6147f8565b600082820183811061318a5780613010565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b6000826131c2575060006111a2565b828202828482816131d5576131d5614329565b04141561318a5780613010565b60008183116131f257600061119f565b50900390565b60008060015b6008811161324f57600061321286836135e3565b9050600061322086846135e3565b9050600061322e83836131e2565b905061323e856001860383613690565b945050600190920191506131fe9050565b509392505050565b835160009081908190819060015b600881116133995760009250828761329e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6132a2565b5060005b60005b83811015613357576132d08c82815181106132c2576132c2613edf565b6020026020010151846135e3565b95508a861161332257886132ef576132e8868361118e565b9150613319565b6001891415613302576132e88683613719565b600289148015613310575084155b15613319578591505b6001945061334f565b8961334f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613357565b6001016132a5565b508361338057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61338e866001840383613690565b955050600101613265565b509298975050505050505050565b6000826008811115613415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156134415763ffffffff6020820290811b199890981685891b17979150600101613419565b50959695505050505050565b6060824710156134df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b61355d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516135869190614877565b60006040518083038185875af1925050503d80600081146135c3576040519150601f19603f3d011682016040523d82523d6000602084013e6135c8565b606091505b50915091506135d8828286613729565b979650505050505050565b6000816008811115613651576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b8261365f57600091506130b3565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156136fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561119d578161119f565b6060831561373857508161170b565b8251156137485782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190613bac565b60405180604001604052806002906020820280368337509192915050565b6000602082840312156137ac57600080fd5b813567ffffffffffffffff8111156137c357600080fd5b820160e0818503121561170b57600080fd5b6000606082840312156137e757600080fd5b50919050565b6000606082840312156137ff57600080fd5b61119f83836137d5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561385b5761385b613809565b60405290565b60405160c0810167ffffffffffffffff8111828210171561385b5761385b613809565b6040805190810167ffffffffffffffff8111828210171561385b5761385b613809565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156138ee576138ee613809565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b8035613923816138f6565b919050565b600067ffffffffffffffff82111561394257613942613809565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261397f57600080fd5b813561399261398d82613928565b6138a7565b8181528460208386010111156139a757600080fd5b816020850160208301376000918101602001919091529392505050565b600060e082840312156139d657600080fd5b6139de613838565b90506139e982613918565b81526139f760208301613918565b602082015260408201356040820152613a1260608301613918565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff811115613a4557600080fd5b613a518482850161396e565b60c08301525092915050565b60008060008385036080811215613a7357600080fd5b843567ffffffffffffffff80821115613a8b57600080fd5b613a97888389016139c4565b95506020870135915080821115613aad57600080fd5b50613aba878288016139c4565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613aed57600080fd5b506040840190509250925092565b600060208284031215613b0d57600080fd5b813567ffffffffffffffff811115613b2457600080fd5b820160c0818503121561170b57600080fd5b60005b83811015613b51578181015183820152602001613b39565b83811115611a1d5750506000910152565b60008151808452613b7a816020860160208601613b36565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061119f6020830184613b62565b600060208284031215613bd157600080fd5b813561170b816138f6565b60006111a236836139c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613c1d57600080fd5b830160208101925035905067ffffffffffffffff811115613c3d57600080fd5b803603831315613c4c57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528335613cca816138f6565b811660408401526020840135613cdf816138f6565b8181166060850152505060408301356080830152613cff60608401613918565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613d3d60c0840184613be8565b60e0610100850152613d5461012085018284613c53565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613d9f57613d9f613d5e565b500390565b8035613daf816138f6565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613e066020830185613da4565b826080830152949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c085015261301060e0850182613b62565b73ffffffffffffffffffffffffffffffffffffffff8516815260a060208201526000613eb060a0830186613e14565b8281036040840152613ec28186613e14565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008219821115613f2157613f21613d5e565b500190565b600067ffffffffffffffff821115613f4057613f40613809565b5060051b60200190565b600082601f830112613f5b57600080fd5b81356020613f6b61398d83613f26565b82815260059290921b84018101918181019086841115613f8a57600080fd5b8286015b84811015613fa55780358352918301918301613f8e565b509695505050505050565b600060c08236031215613fc257600080fd5b613fca613861565b8235613fd5816138f6565b8152602083810135818301526040840135613fef816138f6565b80604084015250606084013560608301526080840135608083015260a084013567ffffffffffffffff8082111561402557600080fd5b81860191506040823603121561403a57600080fd5b614042613884565b82358281111561405157600080fd5b830136601f82011261406257600080fd5b803561407061398d82613f26565b81815260059190911b8201860190868101903683111561408f57600080fd5b8784015b838110156140c7578035878111156140ab5760008081fd5b6140b9368b8389010161396e565b845250918801918801614093565b50845250505082840135828111156140de57600080fd5b6140ea36828601613f4a565b9482019490945260a08501525091949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130106040830184613e14565b73ffffffffffffffffffffffffffffffffffffffff831681526080810161170b6020830184613da4565b6000835161416b818460208801613b36565b83519083019061417f818360208801613b36565b01949350505050565b60208152600061119f6020830184613e14565b60008183825b60028110156141c05781518352602092830192909101906001016141a1565b50505060408201905092915050565b600081518084526020808501945080840160005b838110156141ff578151875295820195908201906001016141e3565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b8581101561424f57838303895261423d838351613b62565b98850198925090840190600101614225565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261428260c08401826141cf565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526142be838361420a565b92506060860151915080858403016080860152506142dc82826141cf565b915050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561431d57815185529382019390820190600101614301565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561439057614390613d5e565b500290565b6000826143cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261440b8388018361420a565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261444684836141cf565b898103848b01528a51808252878c019550908701925060005b818110156144b15785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e09093019260010161445f565b50919c9b505050505050505050505050565b6000602082840312156144d557600080fd5b815167ffffffffffffffff8111156144ec57600080fd5b8201601f810184136144fd57600080fd5b805161450b61398d82613928565b81815285602083850101111561452057600080fd5b614531826020830160208601613b36565b95945050505050565b60006020828403121561454c57600080fd5b8151801515811461170b57600080fd5b82815260008251614574816020850160208701613b36565b919091016020019392505050565b60008451614594818460208901613b36565b820184815283516145ac816020808501908801613b36565b0160200195945050505050565b6000602082840312156145cb57600080fd5b5051919050565b6000602082840312156145e457600080fd5b815161170b816138f6565b604080825283519082018190526000906020906060840190828701845b8281101561463e57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161460c565b50505083810382850152613d5481866141cf565b6000602080838503121561466557600080fd5b825167ffffffffffffffff81111561467c57600080fd5b8301601f8101851361468d57600080fd5b805161469b61398d82613f26565b81815260059190911b820183019083810190878311156146ba57600080fd5b928401925b828410156135d8578351825292840192908401906146bf565b600181815b8085111561473157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561471757614717613d5e565b8085161561472457918102915b93841c93908002906146dd565b509250929050565b600082614748575060016111a2565b81614755575060006111a2565b816001811461476b576002811461477557614791565b60019150506111a2565b60ff84111561478657614786613d5e565b50506001821b6111a2565b5060208310610133831016604e8410600b84101617156147b4575081810a6111a2565b6147be83836146d8565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147f0576147f0613d5e565b029392505050565b600061119f8383614739565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061301060408301846141cf565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061453160608301846141cf565b600061119f60ff841683614739565b60008251614889818460208701613b36565b919091019291505056fea26469706673582212208dbafb7bcd48b014402a0a55130cd0c770b52b90593b84266a98db1f404653c064736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162004a3c38038062004a3c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161499a620000a260003960006103b3015260006103d4015261499a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806384e07cdc1161005b57806384e07cdc146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806355958f19146100aa575b600080fd5b610095610090366004613853565b610135565b005b6100956100a53660046138a6565b610258565b6100956100b83660046138c2565b6103ac565b6100956100cb366004613b51565b610475565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b3660046138a6565b610e60565b610128610f5a565b6040516101049190613c65565b6101426020820182613c78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983613c95565b61113f565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b9033908590613d55565b60405180910390a15b5050565b336000908152600160209081526040822090829061027890850185613c78565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf908401358361118e565b90506102cb8183613e46565b336000908152600160209081526040822091906102ea90870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613e95565b60405180910390a16103a7338261038a6020870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1691906111a8565b505050565b60006104017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103fc85613f57565b61127c565b9050600061040e8261113f565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb8906104689033908590614108565b60405180910390a1505050565b60006104808461113f565b9050600061048d8461113f565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6106e46040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b60405161071f9493929190614137565b60405180910390a16107596040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6107668b60c00151611518565b90506107aa6107a260405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b8260006116d8565b5080602001516001826000015103815181106107c8576107c8614195565b6020026020010151945080602001516002826000015103815181106107ef576107ef614195565b602002602001015192506108068a60c00151611518565b90506108426107a260405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b50806020015160018260000151038151811061086057610860614195565b60200260200101519350806020015160028260000151038151811061088757610887614195565b602002602001015191505061093e600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361118e90919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e015183529052205490925061099290829061118e565b90506109a86109a182856119ac565b839061118e565b85526109be6109b783866119ac565b829061118e565b602086015284511515806109d6575060008560200151115b610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b8451610a4890856119ac565b60408601526020850151610a5c90846119ac565b606086015250508251159150610b549050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b0151835290529081208054909190610ac7908490613e46565b909155505060a086015160011615610aff57805160008481526002602052604081208054909190610af99084906141c4565b90915550505b60a086015160021615610b545780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610b4e9084906141c4565b90915550505b602081015115610c5057602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610bb9908490613e46565b909155505060a085015160011615610bf8578060200151600260008481526020019081526020016000206000828254610bf291906141c4565b90915550505b60a085015160021615610c505760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610c4a9084906141c4565b90915550505b604081015115610cbb57604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610cb59084906141c4565b90915550505b606081015115610d25576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610d1f9084906141c4565b90915550505b60608101518151600091610d3891613e46565b9050600082604001518360200151610d509190613e46565b90508115610dab5733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610da59084906141c4565b90915550505b8015610e065733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610e009084906141c4565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b33600090815260016020908152604080832090840135929091610e8590850185613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee391906141c4565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a90339084906141dc565b60405180910390a1610f5733306040840135610f396020860186613c78565b73ffffffffffffffffffffffffffffffffffffffff169291906119cb565b50565b604080516105e08101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611f2160e082018190526120156101008301526120a16101208301526121c261014083015261016082015261226b6101808201526123736101a08201526124476101c08201526126446101e082015261264f61020082015261265a6102208201526126656102408201526126706102608201526126a461028082015261270a6102a08201526127706102c08201526127a46102e08201526127d861030082015261280d6103208201526128686103408201526128be6103608201526128e761038082015261293e6103a082015261296b6103c08201526129c26103e0820152612a2d610400820152612a8a610420820152612ac8610440820152612b01610460820152612b35610480820152612b676104a0820152612b996104c0820152612bcb6104e0820152612bff610500820152612c51610520820152612c8a610540820152612d3c610560820152612e69610580820152612ec56105a0820152612f7f6105c080830191909152815260408051606081018252612ffb60208201526130368183015290815260405160200161112b929190614206565b604051602081830303815290604052905090565b6000816040516020016111529190614235565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b600081831061119d578161119f565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a2f565b6112fe6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b61133e6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b61139f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161135f57905050905081816000815181106113c8576113c8614195565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff1681526020018560600151815260200161145f866080015160000151611b3b565b81526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860800151866040518463ffffffff1660e01b81526004016114a5939291906142f9565b6000604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261150a91908101906143ec565b9052925050505b9392505050565b61154a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61157c6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156115b0576115b06138fd565b6040519080825280602002602001820160405280156115d9578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611610576116106138fd565b604051908082528060200260200182016040528015611639578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561167357816020820260200184015281516020018201915060018101905061164c565b505060408501525091949350505050565b606061168e613835565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff16818301526040516116c191839101614463565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611994576003890198508886015180601f1a975061ffff8160081c16985050600688101561190c578761175b5786602002840151825260208201915061191f565b60018814156117785760208702830151825260208201915061191f565b6002881415611805578c5187602002106117ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d0151825260208201915061191f565b600388141561184d57600061183b6040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061191f565b6004881415611869576118628d8d848a611be8565b915061191f565b606087611897578c6040516020016118819190614497565b60405160208183030381529060405290506118f6565b60018814156118b0576118a98d611d55565b90506118f6565b60028814156118cc576020808e0151604051611881920161452e565b60038814156118f6578c516040805160208101929092520160405160208183030381529060405290505b8051156119065761190681611e92565b5061191f565b8761191b888463ffffffff8416565b9250505b60208c0151518c51111561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b611716565b602083830304909b529b9a5050505050505050505050565b6000670de0b6b3a76400006119c18385614593565b61119f91906145d0565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111fa565b50505050565b6000611a91826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130ba9092919063ffffffff16565b8051909150156103a75780806020019051810190611aaf919061460b565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b6000602e602f600160026003855b8751811015611bdd576000888281518110611b6657611b66614195565b60200260200101519050600060018201825181015b80821015611bcd578151601f1a925089831015611b9757611bc2565b89831415611ba457998717995b88831415611bb157998617995b858b1415611bc2578b519450611bcd565b600282019150611b7b565b505060019092019150611b499050565b505050505050919050565b600060078216600383811c16828082611c2757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611c72565b8260011415611c4b57506fffffffffffffffffffffffffffffffff90506080611c72565b8260021415611c67575067ffffffffffffffff90506040611c72565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611c9557611c956138fd565b604051908082528060200260200182016040528015611cbe578160200160208202803683370190505b50905060208082019083028a03815b8b821015611ce5578151815260209182019101611ccd565b505060608b015160808c015160209081029091010160005b610100811015611d435760208502830182845b82811015611d2c578051841c8a16825260209182019101611d10565b505050611d3a8e8e8b6116d8565b9b508501611cfd565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611da1919061452e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ddd929160200161462d565b604051602081830303815290604052905060005b856040015151811015611e89578186604001518281518110611e1557611e15614195565b60200260200101515160001b87604001518381518110611e3757611e37614195565b6020026020010151604051602001611e5193929190614653565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611df1565b50949350505050565b610f5781604051602401611ea69190613c65565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526130d1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612008919061468a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612071573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612095919061468a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b4919061468a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa15801561232c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235091906146a3565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612173565b60008060008467ffffffffffffffff811115612465576124656138fd565b60405190808252806020026020018201604052801561248e578160200160208202803683370190505b50905060008567ffffffffffffffff8111156124ac576124ac6138fd565b6040519080825280602002602001820160405280156124d5578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561252a578251815260209283019201612512565b5050602088028101602084015b8183101561254f578251815260209283019201612537565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125a990879087906004016146c0565b600060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261260c9190810190614723565b9050846020820160208a0281015b8082101561263557815183526020928301929091019061261a565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876130f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200882612704858a6130f2565b90613173565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836120088261276a858a6130f2565b906119ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826120958287613188565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876131d3565b6000602083028203805b8381101561280257805180156127f9578252612802565b506020016127e2565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156128025780516128df5760008252612802565b6020016128c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a188382613231565b92506129d2565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a6b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a83838261326c565b9250612a3d565b6020828102820380516000928201835b8582108015612aa95750826000105b15612a1f57508051602090910190612ac1838261329b565b9250612a9a565b600060208302820380516000602083015b85811015612a1f5780518301915082821015612af457600080fd5b9091508190602001612ad9565b600060208302820380516000602083015b85811015612a1f578051915081612b2857600080fd5b9181900491602001612b12565b6020828102820380516000928201835b85821015612a1f57508051602090910190612b6081846148c9565b9250612b45565b6020828102820380516000928201835b85821015612a1f5750805182811115612b8e578092505b602082019150612b77565b6020828102820380516000928201835b85821015612a1f5750805182811015612bc0578092505b602082019150612ba9565b600060208302820380516000602083015b85811015612a1f578051915081612bf257600080fd5b9181900691602001612bdc565b60006020830282038051600080602084015b86811015612c42578315612c3a578051925082840291508284830414612c3657600080fd5b8193505b602001612c11565b50505081526020019392505050565b600060208302820380516000602083015b85811015612a1f5780518303915082821115612c7d57600080fd5b9091508190602001612c62565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061217390869086906004016148d5565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90612e1590879087908790600401614904565b602060405180830381865afa158015612e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e56919061468a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200883836132b1565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115612ef357612ef36138fd565b604051908082528060200260200182016040528015612f1c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612f5857815181602001860152602082019150602081019050612f36565b50505190506000612f6b83838989613310565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085612fec85858585613460565b90955250949695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b60606130c98484600085613506565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561310757839150506111a2565b82601211156131335750601282900361312181600a6148c9565b61312b9085614593565b9150506111a2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161316281600a6148c9565b61312b90856145d0565b5092915050565b6000816119c1670de0b6b3a764000085614593565b600081810b6131985750816111a2565b60008260000b13156131c0576131af82600a614939565b6131b99084614593565b90506111a2565b60ff60008390031661316281600a6148c9565b60008060128314156131e857839150506111a2565b82601211156132025750601282900361316281600a6148c9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161312181600a6148c9565b600082820183811061324357806130c9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b60008261327b575060006111a2565b8282028284828161328e5761328e614564565b04141561324357806130c9565b60008183116132ab57600061119f565b50900390565b60008060015b600881116133085760006132cb868361369c565b905060006132d9868461369c565b905060006132e7838361329b565b90506132f7856001860383613749565b945050600190920191506132b79050565b509392505050565b835160009081908190819060015b600881116134525760009250828761335757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61335b565b5060005b60005b83811015613410576133898c828151811061337b5761337b614195565b60200260200101518461369c565b95508a86116133db57886133a8576133a1868361118e565b91506133d2565b60018914156133bb576133a186836137d2565b6002891480156133c9575084155b156133d2578591505b60019450613408565b89613408577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613410565b60010161335e565b508361343957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613447866001840383613749565b95505060010161331e565b509298975050505050505050565b60008260088111156134ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156134fa5763ffffffff6020820290811b199890981685891b179791506001016134d2565b50959695505050505050565b606082471015613598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b613616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161363f9190614948565b60006040518083038185875af1925050503d806000811461367c576040519150601f19603f3d011682016040523d82523d6000602084013e613681565b606091505b50915091506136918282866137e2565b979650505050505050565b600081600881111561370a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b82613718576000915061316c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156137b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561119d578161119f565b606083156137f1575081611511565b8251156138015782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190613c65565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561386557600080fd5b813567ffffffffffffffff81111561387c57600080fd5b820160e0818503121561151157600080fd5b6000606082840312156138a057600080fd5b50919050565b6000606082840312156138b857600080fd5b61119f838361388e565b6000602082840312156138d457600080fd5b813567ffffffffffffffff8111156138eb57600080fd5b820160a0818503121561151157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b60405290565b60405160a0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b6040805190810167ffffffffffffffff8111828210171561394f5761394f6138fd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139e2576139e26138fd565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b8035613a17816139ea565b919050565b600067ffffffffffffffff821115613a3657613a366138fd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613a7357600080fd5b8135613a86613a8182613a1c565b61399b565b818152846020838601011115613a9b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e08284031215613aca57600080fd5b613ad261392c565b9050613add82613a0c565b8152613aeb60208301613a0c565b602082015260408201356040820152613b0660608301613a0c565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff811115613b3957600080fd5b613b4584828501613a62565b60c08301525092915050565b60008060008385036080811215613b6757600080fd5b843567ffffffffffffffff80821115613b7f57600080fd5b613b8b88838901613ab8565b95506020870135915080821115613ba157600080fd5b50613bae87828801613ab8565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613be157600080fd5b506040840190509250925092565b60005b83811015613c0a578181015183820152602001613bf2565b83811115611a295750506000910152565b60008151808452613c33816020860160208601613bef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061119f6020830184613c1b565b600060208284031215613c8a57600080fd5b8135611511816139ea565b60006111a23683613ab8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cd657600080fd5b830160208101925035905067ffffffffffffffff811115613cf657600080fd5b803603831315613d0557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528335613d83816139ea565b811660408401526020840135613d98816139ea565b8181166060850152505060408301356080830152613db860608401613a0c565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613df660c0840184613ca1565b60e0610100850152613e0d61012085018284613d0c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613e5857613e58613e17565b500390565b8035613e68816139ea565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613ebf6020830185613e5d565b826080830152949350505050565b600067ffffffffffffffff821115613ee757613ee76138fd565b5060051b60200190565b600082601f830112613f0257600080fd5b81356020613f12613a8183613ecd565b82815260059290921b84018101918181019086841115613f3157600080fd5b8286015b84811015613f4c5780358352918301918301613f35565b509695505050505050565b600060a08236031215613f6957600080fd5b613f71613955565b8235613f7c816139ea565b8152602083810135818301526040840135613f96816139ea565b604083015260608481013590830152608084013567ffffffffffffffff80821115613fc057600080fd5b818601915060408236031215613fd557600080fd5b613fdd613978565b823582811115613fec57600080fd5b830136601f820112613ffd57600080fd5b803561400b613a8182613ecd565b81815260059190911b8201860190868101903683111561402a57600080fd5b8784015b83811015614062578035878111156140465760008081fd5b614054368b83890101613a62565b84525091880191880161402e565b508452505050828401358281111561407957600080fd5b61408536828601613ef1565b9482019490945260808501525091949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c08501526130c960e0850182613c1b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c9604083018461409b565b73ffffffffffffffffffffffffffffffffffffffff8516815260a06020820152600061416660a083018661409b565b8281036040840152614178818661409b565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156141d7576141d7613e17565b500190565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016115116020830184613e5d565b60008351614218818460208801613bef565b83519083019061422c818360208801613bef565b01949350505050565b60208152600061119f602083018461409b565b600082825180855260208086019550808260051b84010181860160005b848110156142b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261429f838351613c1b565b98840198925090830190600101614265565b5090979650505050505050565b600081518084526020808501945080840160005b838110156142ee578151875295820195908201906001016142d2565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261433483880183614248565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261436f84836142be565b898103848b01528a51808252878c019550908701925060005b818110156143da5785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e090930192600101614388565b50919c9b505050505050505050505050565b6000602082840312156143fe57600080fd5b815167ffffffffffffffff81111561441557600080fd5b8201601f8101841361442657600080fd5b8051614434613a8182613a1c565b81815285602083850101111561444957600080fd5b61445a826020830160208601613bef565b95945050505050565b60008183825b6002811015614488578151835260209283019290910190600101614469565b50505060408201905092915050565b60208152815160208201526000602083015160a060408401526144bd60c08401826142be565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526144f98383614248565b925060608601519150808584030160808601525061451782826142be565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156145585781518552938201939082019060010161453c565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cb576145cb613e17565b500290565b600082614606577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561461d57600080fd5b8151801515811461151157600080fd5b82815260008251614645816020850160208701613bef565b919091016020019392505050565b60008451614665818460208901613bef565b8201848152835161467d816020808501908801613bef565b0160200195945050505050565b60006020828403121561469c57600080fd5b5051919050565b6000602082840312156146b557600080fd5b8151611511816139ea565b604080825283519082018190526000906020906060840190828701845b8281101561470f57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016146dd565b50505083810382850152613e0d81866142be565b6000602080838503121561473657600080fd5b825167ffffffffffffffff81111561474d57600080fd5b8301601f8101851361475e57600080fd5b805161476c613a8182613ecd565b81815260059190911b8201830190838101908783111561478b57600080fd5b928401925b8284101561369157835182529284019290840190614790565b600181815b8085111561480257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147e8576147e8613e17565b808516156147f557918102915b93841c93908002906147ae565b509250929050565b600082614819575060016111a2565b81614826575060006111a2565b816001811461483c576002811461484657614862565b60019150506111a2565b60ff84111561485757614857613e17565b50506001821b6111a2565b5060208310610133831016604e8410600b8410161715614885575081810a6111a2565b61488f83836147a9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c1576148c1613e17565b029392505050565b600061119f838361480a565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c960408301846142be565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061445a60608301846142be565b600061119f60ff84168361480a565b6000825161495a818460208701613bef565b919091019291505056fea2646970667358221220239580f40b1076943fe774c660864fec18ec1db7ff153f86ddc9b8c90949056b64736f6c634300080a0033"; type OrderBookConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/PhasedScheduleTest__factory.ts b/src/typechain/factories/PhasedScheduleTest__factory.ts index 740dd50..0de1e67 100644 --- a/src/typechain/factories/PhasedScheduleTest__factory.ts +++ b/src/typechain/factories/PhasedScheduleTest__factory.ts @@ -129,7 +129,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061001961001e565b610194565b600054600163ffffffff909116106100385761003861017e565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261008960008260086100cd565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101595791602002820160005b8382111561012757835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100e3565b80156101575782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610127565b505b50610165929150610169565b5090565b5b80821115610165576000815560010161016a565b634e487b7160e01b600052600160045260246000fd5b61074e806101a36000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635d521c10116100505780635d521c101461009a57806393c96557146100ad578063e2c45a40146100d557600080fd5b8063055ad42e1461006c5780631cf355e814610087575b600080fd5b6100746100df565b6040519081526020015b60405180910390f35b6100746100953660046105af565b610149565b6100746100a83660046105af565b610188565b6100c06100bb366004610639565b6101d5565b60405163ffffffff909116815260200161007e565b6100dd610205565b005b60408051610100810191829052600091610144919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100fd579050505050505042610188565b905090565b600080821161015957600061017b565b82610165600184610681565b6008811061017557610175610698565b60200201515b63ffffffff169392505050565b60005b60088110156101cf578281600881106101a6576101a6610698565b602002015163ffffffff168210156101bd576101cf565b806101c7816106c7565b91505061018b565b92915050565b600081600881106101e557600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b600061020f6100df565b905061021a81610244565b61022e610228826001610700565b426102be565b61024161023c826001610700565b610244565b50565b808061024e6100df565b146102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b80421115610328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016102b1565b63ffffffff8110610395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016102b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201806103c16100df565b14610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016102b1565b6000816008811061043b5761043b610698565b60088104919091015460079091166004026101000a900463ffffffff908116146104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016102b1565b81600082600881106104d5576104d5610698565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161055a9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146105aa57600080fd5b919050565b60008061012083850312156105c357600080fd5b83601f8401126105d257600080fd5b60405161010080820182811067ffffffffffffffff821117156105f7576105f7610567565b6040528401818682111561060a57600080fd5b855b8281101561062b5761061d81610596565b82526020918201910161060c565b509196903595509350505050565b60006020828403121561064b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561069357610693610652565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106f9576106f9610652565b5060010190565b6000821982111561071357610713610652565b50019056fea2646970667358221220f10950c720afa7975c9075e2586137ef3be91fde5e056735d42771893c84967364736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061001961001e565b610194565b600054600163ffffffff909116106100385761003861017e565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915261008960008260086100cd565b50604080513381526000602082018190528183015290517fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d39181900360600190a150565b6001830191839082156101595791602002820160005b8382111561012757835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026100e3565b80156101575782816101000a81549063ffffffff0219169055600401602081600301049283019260010302610127565b505b50610165929150610169565b5090565b5b80821115610165576000815560010161016a565b634e487b7160e01b600052600160045260246000fd5b61074e806101a36000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80635d521c10116100505780635d521c101461009a57806393c96557146100ad578063e2c45a40146100d557600080fd5b8063055ad42e1461006c5780631cf355e814610087575b600080fd5b6100746100df565b6040519081526020015b60405180910390f35b6100746100953660046105af565b610149565b6100746100a83660046105af565b610188565b6100c06100bb366004610639565b6101d5565b60405163ffffffff909116815260200161007e565b6100dd610205565b005b60408051610100810191829052600091610144919083906008908280855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116100fd579050505050505042610188565b905090565b600080821161015957600061017b565b82610165600184610681565b6008811061017557610175610698565b60200201515b63ffffffff169392505050565b60005b60088110156101cf578281600881106101a6576101a6610698565b602002015163ffffffff168210156101bd576101cf565b806101c7816106c7565b91505061018b565b92915050565b600081600881106101e557600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b600061020f6100df565b905061021a81610244565b61022e610228826001610700565b426102be565b61024161023c826001610700565b610244565b50565b808061024e6100df565b146102ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b5050565b80421115610328576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016102b1565b63ffffffff8110610395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016102b1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8201806103c16100df565b14610428576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016102b1565b6000816008811061043b5761043b610698565b60088104919091015460079091166004026101000a900463ffffffff908116146104c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016102b1565b81600082600881106104d5576104d5610698565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d333848460405161055a9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146105aa57600080fd5b919050565b60008061012083850312156105c357600080fd5b83601f8401126105d257600080fd5b60405161010080820182811067ffffffffffffffff821117156105f7576105f7610567565b6040528401818682111561060a57600080fd5b855b8281101561062b5761061d81610596565b82526020918201910161060c565b509196903595509350505050565b60006020828403121561064b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561069357610693610652565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156106f9576106f9610652565b5060010190565b6000821982111561071357610713610652565b50019056fea26469706673582212205a781da37236a1b50056073b30f46103781d9087b3280d753cae8fb4327b631c64736f6c634300080a0033"; type PhasedScheduleTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RandomTest__factory.ts b/src/typechain/factories/RandomTest__factory.ts new file mode 100644 index 0000000..33209da --- /dev/null +++ b/src/typechain/factories/RandomTest__factory.ts @@ -0,0 +1,193 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { RandomTest, RandomTestInterface } from "../RandomTest"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [ + { + internalType: "uint256", + name: "seed_", + type: "uint256", + }, + { + internalType: "uint256", + name: "max_", + type: "uint256", + }, + { + internalType: "uint256", + name: "n_", + type: "uint256", + }, + ], + name: "microLottery", + outputs: [ + { + internalType: "uint256", + name: "item_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "seed_", + type: "uint256", + }, + { + internalType: "uint256", + name: "index_", + type: "uint256", + }, + ], + name: "randomId", + outputs: [ + { + internalType: "uint256", + name: "id_", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "seed_", + type: "uint256", + }, + { + internalType: "uint256", + name: "len_", + type: "uint256", + }, + ], + name: "shuffle", + outputs: [ + { + internalType: "bytes", + name: "shuffled_", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "index_", + type: "uint256", + }, + ], + name: "shuffleIdAtIndex", + outputs: [ + { + internalType: "uint256", + name: "id_", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "shuffled", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610d1e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806361d4ba9b1161005057806361d4ba9b146100b25780638f1ea97f146100c5578063bffa7fe8146100d857600080fd5b80631715b9ee1461006c57806329fa6d0214610092575b600080fd5b61007f61007a366004610a22565b61011d565b6040519081526020015b60405180910390f35b6100a56100a0366004610a4e565b610132565b6040516100899190610ae6565b61007f6100c0366004610a4e565b61025e565b61007f6100d3366004610af9565b610305565b6000546100f89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610089565b600061012a848484610429565b949350505050565b606060005a905061014384846105e6565b915060005a90506101aa6040518060400160405280601a81526020017f73687566666c652067617320757365643a2025732025732025730000000000008152508583856101909190610b41565b8761019b8688610b41565b6101a59190610b58565b6106e0565b6101b8565b60405180910390fd5b5a91506101c48361077b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555a90506102566040518060400160405280601481526020017f73746f726167652067617320757365643a20257300000000000000000000000081525082846102519190610b41565b610806565b505092915050565b60026001556000805a905061027d848460009182526020526040902090565b915060005a90506102c36040518060400160405280600d81526020017f72616e646f6d2069643a2025730000000000000000000000000000000000000081525084610806565b60408051808201909152600e81527f72616e646f6d206761733a2025730000000000000000000000000000000000006020820152610256906102518385610b41565b600180556000805a60005490915073ffffffffffffffffffffffffffffffffffffffff16610333818561089b565b925060005a90506103796040518060400160405280600e81526020017f73687566666c652069643a20257300000000000000000000000000000000000081525085610806565b60408051808201909152601581527f73687566666c6520696e646578206761733a202573000000000000000000000060208201526103bb906102518386610b41565b60006103c8866001610b93565b90505a93506103d7838261089b565b505a91506104206040518060400160405280601781526020017f73687566666c6520696e6465782067617320323a20257300000000000000000081525083866102519190610b41565b50505050919050565b6000828210610494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4d41585f4e00000000000000000000000000000000000000000000000000000060448201526064016101af565b60ff8311156104ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4d41585f4d41580000000000000000000000000000000000000000000000000060448201526064016101af565b60008367ffffffffffffffff81111561051a5761051a610bab565b6040519080825280601f01601f191660200182016040528015610544576020820181803683370190505b509050610561565b8082015160ff168061055b5750815b92915050565b846000526020810160018201600186035b858111156105bf57610584818361054c565b60206000908120908190526001830190068401537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610572565b5060206000908120908190526105db906001870190068261054c565b979650505050505050565b60608160020267ffffffffffffffff81111561060457610604610bab565b6040519080825280601f01601f19166020018201604052801561062e576020820181803683370190505b50905082600052600281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff600185035b80156106d65760028102840180518381168061067b5750825b602060002080600052600185018106905060028102880180518781168061069f5750825b948916909417909452509085161790527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610662565b5050505092915050565b610775848484846040516024016106fa9493929190610bda565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f08ee5666000000000000000000000000000000000000000000000000000000001790526108c5565b50505050565b6000806107a6836040516020016107929190610c09565b6040516020818303038152906040526108e6565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610800576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b610897828260405160240161081c929190610c2f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d0000000000000000000000000000000000000000000000000000000001790526108c5565b5050565b60008082600202905060006108b4858384600201610912565b6002015161ffff1695945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016108fc929190610c51565b6040516020818303038152906040529050919050565b606061012a84610923856001610b93565b61092e856001610b93565b61093a565b9392505050565b6060833b80610959575050604080516020810190915260008152610933565b80841115610977575050604080516020810190915260008152610933565b838310156109c2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101af565b83830384820360008282106109d757826109d9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600080600060608486031215610a3757600080fd5b505081359360208301359350604090920135919050565b60008060408385031215610a6157600080fd5b50508035926020909101359150565b60005b83811015610a8b578181015183820152602001610a73565b838111156107755750506000910152565b60008151808452610ab4816020860160208601610a70565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109336020830184610a9c565b600060208284031215610b0b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b5357610b53610b12565b500390565b600082610b8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610ba657610ba6610b12565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b608081526000610bed6080830187610a9c565b6020830195909552506040810192909252606090910152919050565b6000815260008251610c22816001850160208701610a70565b9190910160010192915050565b604081526000610c426040830185610a9c565b90508260208301529392505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251610cda81600e850160208701610a70565b91909101600e01939250505056fea2646970667358221220d9d210a39ffb04403e87db3d26c02898ac4dcfdee4d08cafa650d02bf29bd71c64736f6c634300080a0033"; + +type RandomTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: RandomTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class RandomTest__factory extends ContractFactory { + constructor(...args: RandomTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): RandomTest { + return super.attach(address) as RandomTest; + } + connect(signer: Signer): RandomTest__factory { + return super.connect(signer) as RandomTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): RandomTestInterface { + return new utils.Interface(_abi) as RandomTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): RandomTest { + return new Contract(address, _abi, signerOrProvider) as RandomTest; + } +} diff --git a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts index 5c09ade..4d57965 100644 --- a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts +++ b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts @@ -389,7 +389,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea26469706673582212203da6fe6dd3ae6a6d044877288ebd8924392158089fadcec96be127d7cb4ca3e064736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea2646970667358221220b4e2011c649cee801701b6a7ab4a7d10b92d6db89d21b6d0b2caf29fb3cfffb964736f6c634300080a0033"; type RedeemableERC20ReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts index fa51c4e..b2dbc37 100644 --- a/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts +++ b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts @@ -376,7 +376,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b90840152815191929162000062916003916200030f565b508051620000789060049060208401906200030f565b505050620000a33360066009620000909190620003cb565b6200009d90600a620004e5565b620000a9565b62000567565b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000112600083836200019f565b8060026000828254620001269190620003cb565b90915550506001600160a01b0382166000908152602081905260408120805483929062000155908490620003cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b7838383620001db60201b620005491760201c565b6001600160a01b038316620001e057620001d1826200020b565b620001db62000243565b505050565b6001600160a01b038216620001fa57620001d1836200020b565b62000205836200020b565b620001db825b6001600160a01b0381166000908152600560209081526040808320918390529091205462000240919062000255565b62000255565b50565b6200025360066200023a60025490565b565b600062000261620002a4565b9050806200026f84620002c2565b1015620001db578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620002bd60086200030b60201b6200054e1760201c565b905090565b8054600090620002d457506000919050565b81548290620002e690600190620004fa565b81548110620002f957620002f962000514565b90600052602060002001549050919050565b5490565b8280546200031d906200052a565b90600052602060002090601f0160209004810192826200034157600085556200038c565b82601f106200035c57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038c5782518255916020019190600101906200036f565b506200039a9291506200039e565b5090565b5b808211156200039a57600081556001016200039f565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003e157620003e1620003b5565b500190565b600181815b80851115620004275781600019048211156200040b576200040b620003b5565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003b5565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003b5565b0290505b92915050565b6000620004f383836200042f565b9392505050565b6000828210156200050f576200050f620003b5565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200053f57607f821691505b602082108114156200056157634e487b7160e01b600052602260045260246000fd5b50919050565b61123e80620005776000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063981b24d011610066578063981b24d0146101f8578063a457c2d71461020b578063a9059cbb1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101a8578063902d55a5146101de57806395d89b41146101e65780639711715a146101ee57600080fd5b80632e0f2625116100d35780632e0f26251461016b578063313ce5671461017357806339509351146101825780634ee2cd7e1461019557600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610277565b60405161011a9190610e64565b60405180910390f35b610136610131366004610efb565b610309565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610f25565b610323565b61014a600681565b6040516006815260200161011a565b610136610190366004610efb565b610347565b61014a6101a3366004610efb565b610393565b61014a6101b6366004610f61565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014a610406565b61010d610420565b6101f661042f565b005b61014a610206366004610f7c565b61043a565b610136610219366004610efb565b610465565b61013661022c366004610efb565b61053b565b61014a61023f366004610f95565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461028690610fc8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290610fc8565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b600033610317818585610552565b60019150505b92915050565b600033610331858285610705565b61033c8585856107dc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610317908290869061038e90879061104b565b610552565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120819081906103c7908590610a9a565b91509150816103fb5773ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020546103fd565b805b95945050505050565b6104126006600961104b565b61041d90600a61117b565b81565b60606004805461028690610fc8565b610437610bd2565b50565b600080600061044a846006610a9a565b915091508161045b5760025461045d565b805b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033c8286868403610552565b6000336103178185856107dc565b505050565b5490565b73ffffffffffffffffffffffffffffffffffffffff83166105f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d657818110156107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610525565b6107d68484848403610552565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610525565b61092d838383610c2c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a2790849061104b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8d91815260200190565b60405180910390a36107d6565b60008060008411610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433230536e617073686f743a2069642069732030000000000000000000006044820152606401610525565b610b0f610c8e565b841115610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610525565b6000610b848486610c9e565b8454909150811415610b9d576000809250925050610bcb565b6001846001018281548110610bb457610bb4611187565b90600052602060002001549250925050610bcb565b505b9250929050565b6000610be2600880546001019055565b6000610bec610c8e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051610c1f91815260200190565b60405180910390a1919050565b73ffffffffffffffffffffffffffffffffffffffff8316610c5857610c5082610d61565b610549610da0565b73ffffffffffffffffffffffffffffffffffffffff8216610c7c57610c5083610d61565b610c8583610d61565b61054982610d61565b6000610c9960085490565b905090565b8154600090610caf5750600061031d565b82546000905b80821015610d0b576000610cc98383610db0565b905084868281548110610cde57610cde611187565b90600052602060002001541115610cf757809150610d05565b610d0281600161104b565b92505b50610cb5565b600082118015610d4057508385610d236001856111b6565b81548110610d3357610d33611187565b9060005260206000200154145b15610d5957610d506001836111b6565b9250505061031d565b50905061031d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832091839052909120546104379190610dd2565b610dd2565b610dae6006610d9b60025490565b565b6000610dbf60028484186111cd565b610dcb9084841661104b565b9392505050565b6000610ddc610c8e565b905080610de884610e1c565b1015610549578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b8054600090610e2d57506000919050565b81548290610e3d906001906111b6565b81548110610e4d57610e4d611187565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5f57600080fd5b60008060408385031215610f0e57600080fd5b610f1783610ed7565b946020939093013593505050565b600080600060608486031215610f3a57600080fd5b610f4384610ed7565b9250610f5160208501610ed7565b9150604084013590509250925092565b600060208284031215610f7357600080fd5b610dcb82610ed7565b600060208284031215610f8e57600080fd5b5035919050565b60008060408385031215610fa857600080fd5b610fb183610ed7565b9150610fbf60208401610ed7565b90509250929050565b600181811c90821680610fdc57607f821691505b60208210811415611016577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561105e5761105e61101c565b500190565b600181815b80851115610bc957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110a2576110a261101c565b808516156110af57918102915b93841c9390800290611068565b6000826110cb5750600161031d565b816110d85750600061031d565b81600181146110ee57600281146110f857611114565b600191505061031d565b60ff8411156111095761110961101c565b50506001821b61031d565b5060208310610133831016604e8410600b8410161715611137575081810a61031d565b6111418383611063565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111735761117361101c565b029392505050565b6000610dcb83836110bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111c8576111c861101c565b500390565b600082611203577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea26469706673582212207e6c076f70b34e24b98659f2d80032d3a270089bad260fe7090735167864b31764736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b90840152815191929162000062916003916200030f565b508051620000789060049060208401906200030f565b505050620000a33360066009620000909190620003cb565b6200009d90600a620004e5565b620000a9565b62000567565b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000112600083836200019f565b8060026000828254620001269190620003cb565b90915550506001600160a01b0382166000908152602081905260408120805483929062000155908490620003cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b7838383620001db60201b620005491760201c565b6001600160a01b038316620001e057620001d1826200020b565b620001db62000243565b505050565b6001600160a01b038216620001fa57620001d1836200020b565b62000205836200020b565b620001db825b6001600160a01b0381166000908152600560209081526040808320918390529091205462000240919062000255565b62000255565b50565b6200025360066200023a60025490565b565b600062000261620002a4565b9050806200026f84620002c2565b1015620001db578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620002bd60086200030b60201b6200054e1760201c565b905090565b8054600090620002d457506000919050565b81548290620002e690600190620004fa565b81548110620002f957620002f962000514565b90600052602060002001549050919050565b5490565b8280546200031d906200052a565b90600052602060002090601f0160209004810192826200034157600085556200038c565b82601f106200035c57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038c5782518255916020019190600101906200036f565b506200039a9291506200039e565b5090565b5b808211156200039a57600081556001016200039f565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003e157620003e1620003b5565b500190565b600181815b80851115620004275781600019048211156200040b576200040b620003b5565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003b5565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003b5565b0290505b92915050565b6000620004f383836200042f565b9392505050565b6000828210156200050f576200050f620003b5565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200053f57607f821691505b602082108114156200056157634e487b7160e01b600052602260045260246000fd5b50919050565b61123e80620005776000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063981b24d011610066578063981b24d0146101f8578063a457c2d71461020b578063a9059cbb1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101a8578063902d55a5146101de57806395d89b41146101e65780639711715a146101ee57600080fd5b80632e0f2625116100d35780632e0f26251461016b578063313ce5671461017357806339509351146101825780634ee2cd7e1461019557600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610277565b60405161011a9190610e64565b60405180910390f35b610136610131366004610efb565b610309565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610f25565b610323565b61014a600681565b6040516006815260200161011a565b610136610190366004610efb565b610347565b61014a6101a3366004610efb565b610393565b61014a6101b6366004610f61565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014a610406565b61010d610420565b6101f661042f565b005b61014a610206366004610f7c565b61043a565b610136610219366004610efb565b610465565b61013661022c366004610efb565b61053b565b61014a61023f366004610f95565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461028690610fc8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290610fc8565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b600033610317818585610552565b60019150505b92915050565b600033610331858285610705565b61033c8585856107dc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610317908290869061038e90879061104b565b610552565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120819081906103c7908590610a9a565b91509150816103fb5773ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020546103fd565b805b95945050505050565b6104126006600961104b565b61041d90600a61117b565b81565b60606004805461028690610fc8565b610437610bd2565b50565b600080600061044a846006610a9a565b915091508161045b5760025461045d565b805b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033c8286868403610552565b6000336103178185856107dc565b505050565b5490565b73ffffffffffffffffffffffffffffffffffffffff83166105f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d657818110156107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610525565b6107d68484848403610552565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610525565b61092d838383610c2c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a2790849061104b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8d91815260200190565b60405180910390a36107d6565b60008060008411610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433230536e617073686f743a2069642069732030000000000000000000006044820152606401610525565b610b0f610c8e565b841115610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610525565b6000610b848486610c9e565b8454909150811415610b9d576000809250925050610bcb565b6001846001018281548110610bb457610bb4611187565b90600052602060002001549250925050610bcb565b505b9250929050565b6000610be2600880546001019055565b6000610bec610c8e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051610c1f91815260200190565b60405180910390a1919050565b73ffffffffffffffffffffffffffffffffffffffff8316610c5857610c5082610d61565b610549610da0565b73ffffffffffffffffffffffffffffffffffffffff8216610c7c57610c5083610d61565b610c8583610d61565b61054982610d61565b6000610c9960085490565b905090565b8154600090610caf5750600061031d565b82546000905b80821015610d0b576000610cc98383610db0565b905084868281548110610cde57610cde611187565b90600052602060002001541115610cf757809150610d05565b610d0281600161104b565b92505b50610cb5565b600082118015610d4057508385610d236001856111b6565b81548110610d3357610d33611187565b9060005260206000200154145b15610d5957610d506001836111b6565b9250505061031d565b50905061031d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832091839052909120546104379190610dd2565b610dd2565b610dae6006610d9b60025490565b565b6000610dbf60028484186111cd565b610dcb9084841661104b565b9392505050565b6000610ddc610c8e565b905080610de884610e1c565b1015610549578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b8054600090610e2d57506000919050565b81548290610e3d906001906111b6565b81548110610e4d57610e4d611187565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5f57600080fd5b60008060408385031215610f0e57600080fd5b610f1783610ed7565b946020939093013593505050565b600080600060608486031215610f3a57600080fd5b610f4384610ed7565b9250610f5160208501610ed7565b9150604084013590509250925092565b600060208284031215610f7357600080fd5b610dcb82610ed7565b600060208284031215610f8e57600080fd5b5035919050565b60008060408385031215610fa857600080fd5b610fb183610ed7565b9150610fbf60208401610ed7565b90509250929050565b600181811c90821680610fdc57607f821691505b60208210811415611016577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561105e5761105e61101c565b500190565b600181815b80851115610bc957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110a2576110a261101c565b808516156110af57918102915b93841c9390800290611068565b6000826110cb5750600161031d565b816110d85750600061031d565b81600181146110ee57600281146110f857611114565b600191505061031d565b60ff8411156111095761110961101c565b50506001821b61031d565b5060208310610133831016604e8410600b8410161715611137575081810a61031d565b6111418383611063565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111735761117361101c565b029392505050565b6000610dcb83836110bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111c8576111c861101c565b500390565b600082611203577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220d4557594e164e4f662efbc400df419915790fc3a9a5ec6c67b5504532e1fd9fe64736f6c634300080a0033"; type ReserveTokenERC20SnapshotConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleEscrowWrapper__factory.ts b/src/typechain/factories/SaleEscrowWrapper__factory.ts index f11b694..523b9d9 100644 --- a/src/typechain/factories/SaleEscrowWrapper__factory.ts +++ b/src/typechain/factories/SaleEscrowWrapper__factory.ts @@ -108,7 +108,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061077e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806394eda7de1161005057806394eda7de14610102578063bc926d0014610115578063c9a396e91461015b57600080fd5b8063074f28071461007757806334672acc1461008c578063597704381461009f575b600080fd5b61008a610085366004610676565b610194565b005b61008a61009a366004610676565b6101a1565b6100d86100ad366004610676565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a610110366004610676565b6101aa565b61014e610123366004610676565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6040516100f991906106c9565b6100d8610169366004610676565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b61019d816101b3565b5050565b61019d81610333565b61019d816104d7565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120549091168061032d5760008373ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561022f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610253919061070a565b905073ffffffffffffffffffffffffffffffffffffffff81166102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f52455345525645000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff168181600281111561036f5761036f61069a565b111561037b5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190610727565b905060028160038111156104025761040261069a565b141561045d5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b60038160038111156104715761047161069a565b14156104cd5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160205260408120549091168061032d5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610577919061070a565b905073ffffffffffffffffffffffffffffffffffffffff81166105f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102ce565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461067357600080fd5b50565b60006020828403121561068857600080fd5b813561069381610651565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310610704577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561071c57600080fd5b815161069381610651565b60006020828403121561073957600080fd5b81516004811061069357600080fdfea26469706673582212208d1ac659060defa663cb55242479996b377dc48a88e85b5954d25b08019a44d764736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061077e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806394eda7de1161005057806394eda7de14610102578063bc926d0014610115578063c9a396e91461015b57600080fd5b8063074f28071461007757806334672acc1461008c578063597704381461009f575b600080fd5b61008a610085366004610676565b610194565b005b61008a61009a366004610676565b6101a1565b6100d86100ad366004610676565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152600160205260409020541690565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008a610110366004610676565b6101aa565b61014e610123366004610676565b73ffffffffffffffffffffffffffffffffffffffff1660009081526002602052604090205460ff1690565b6040516100f991906106c9565b6100d8610169366004610676565b73ffffffffffffffffffffffffffffffffffffffff9081166000908152602081905260409020541690565b61019d816101b3565b5050565b61019d81610333565b61019d816104d7565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120549091168061032d5760008373ffffffffffffffffffffffffffffffffffffffff1663cd3293de6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561022f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610253919061070a565b905073ffffffffffffffffffffffffffffffffffffffff81166102d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f52455345525645000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff168181600281111561036f5761036f61069a565b111561037b5792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190610727565b905060028160038111156104025761040261069a565b141561045d5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b60038160038111156104715761047161069a565b14156104cd5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160205260408120549091168061032d5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610553573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610577919061070a565b905073ffffffffffffffffffffffffffffffffffffffff81166105f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102ce565b73ffffffffffffffffffffffffffffffffffffffff938416600090815260016020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016948216949094179093555090919050565b73ffffffffffffffffffffffffffffffffffffffff8116811461067357600080fd5b50565b60006020828403121561068857600080fd5b813561069381610651565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6020810160038310610704577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b91905290565b60006020828403121561071c57600080fd5b815161069381610651565b60006020828403121561073957600080fd5b81516004811061069357600080fdfea26469706673582212206540a09ab8f4c2a44dc037b84be3807a75af56f452c6bf98c4d6bae4a2dc9af164736f6c634300080a0033"; type SaleEscrowWrapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleFactory__factory.ts b/src/typechain/factories/SaleFactory__factory.ts index e6c38d3..6f5aba2 100644 --- a/src/typechain/factories/SaleFactory__factory.ts +++ b/src/typechain/factories/SaleFactory__factory.ts @@ -239,7 +239,7 @@ const _abi = [ ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b5060405162006ddb38038062006ddb833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b6159a3806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea2646970667358221220f66008c5379d659feecefa4569278f026b8542c44f7a90810a25709643cb868b64736f6c634300080a00336101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea26469706673582212207290bde46e6fc9fa75e950867d45bdf6578fc6e66b45ca1c51018961ee7f8bc064736f6c634300080a0033"; + "0x60a06040523480156200001157600080fd5b5060405162006ddb38038062006ddb833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b6159a3806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea2646970667358221220e3eef224e8797cb9b10ccecbe6ab8e1bb13cb6d44116f47500122da877eebdd264736f6c634300080a00336101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea264697066735822122078425b57b61d0cf4d634d2b8a85eec102266c7dbba468b3f65c1a8ebace070a364736f6c634300080a0033"; type SaleFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleReentrant__factory.ts b/src/typechain/factories/SaleReentrant__factory.ts index c97252e..229210e 100644 --- a/src/typechain/factories/SaleReentrant__factory.ts +++ b/src/typechain/factories/SaleReentrant__factory.ts @@ -418,7 +418,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea26469706673582212206d67b12b0ff4fd47b9aae10cc78ef55f6c42c4d7d52a21d47698340d7cc0683064736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220f97fa3a92bfa3e45a43592f581cb7337ce9d1d9584453661015bd3d8931fd48464736f6c634300080a0033"; type SaleReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Sale__factory.ts b/src/typechain/factories/Sale__factory.ts index e1295b0..8d6cb3a 100644 --- a/src/typechain/factories/Sale__factory.ts +++ b/src/typechain/factories/Sale__factory.ts @@ -743,7 +743,7 @@ const _abi = [ ]; const _bytecode = - "0x6101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea26469706673582212207290bde46e6fc9fa75e950867d45bdf6578fc6e66b45ca1c51018961ee7f8bc064736f6c634300080a0033"; + "0x6101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea264697066735822122078425b57b61d0cf4d634d2b8a85eec102266c7dbba468b3f65c1a8ebace070a364736f6c634300080a0033"; type SaleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SeedDanceTest__factory.ts b/src/typechain/factories/SeedDanceTest__factory.ts new file mode 100644 index 0000000..c141e80 --- /dev/null +++ b/src/typechain/factories/SeedDanceTest__factory.ts @@ -0,0 +1,236 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { SeedDanceTest, SeedDanceTestInterface } from "../SeedDanceTest"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "Commitment", + name: "commitment", + type: "uint256", + }, + ], + name: "Commit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "Secret", + name: "secret", + type: "uint256", + }, + { + indexed: false, + internalType: "Seed", + name: "newSeed", + type: "uint256", + }, + ], + name: "Reveal", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "Seed", + name: "initialSeed", + type: "uint256", + }, + ], + name: "Start", + type: "event", + }, + { + inputs: [ + { + internalType: "Seed", + name: "seed_", + type: "uint256", + }, + { + internalType: "uint256", + name: "start_", + type: "uint256", + }, + { + components: [ + { + internalType: "uint32", + name: "baseDuration", + type: "uint32", + }, + { + internalType: "uint32", + name: "maxExtraTime", + type: "uint32", + }, + ], + internalType: "struct TimeBound", + name: "timeBound_", + type: "tuple", + }, + { + internalType: "address", + name: "owner_", + type: "address", + }, + ], + name: "canRevealUntil", + outputs: [ + { + internalType: "uint256", + name: "until_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "Commitment", + name: "commitment_", + type: "uint256", + }, + ], + name: "commit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "uint32", + name: "baseDuration", + type: "uint32", + }, + { + internalType: "uint32", + name: "maxExtraTime", + type: "uint32", + }, + ], + internalType: "struct TimeBound", + name: "timeBound_", + type: "tuple", + }, + { + internalType: "Secret", + name: "secret_", + type: "uint256", + }, + ], + name: "reveal", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "sharedSeed", + outputs: [ + { + internalType: "Seed", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "Seed", + name: "initialSeed_", + type: "uint256", + }, + ], + name: "start", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506106be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806395805dad1161005057806395805dad146100a657806398d4e2e9146100b9578063f4f98ad5146100c157600080fd5b8063453024871461006c5780637fbc62af14610081575b600080fd5b61007f61007a3660046105b3565b6100d4565b005b61009461008f3660046105de565b6100e2565b60405190815260200160405180910390f35b61007f6100b4366004610640565b610165565b600054610094565b61007f6100cf366004610640565b610171565b6100de828261017a565b5050565b82801561015d576000836020015163ffffffff1661013d878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8161014a5761014a610659565b855163ffffffff16919006019190910190505b949350505050565b61016e8161030c565b50565b61016e816103fd565b600054600154610192919063ffffffff1684336100e2565b421115610200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43414e545f52455645414c00000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61022061020c826104c4565b336000908152600260205260409020541490565b610286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f5345435245540000000000000000000000000000000000000000000060448201526064016101f7565b3360008181526002602090815260408083208390558254815180840191909152808201869052815180820383018152606082018084528151919094012093849055939091526080830184905260a083018290525190917fbd515cb7fe6810ea1d996c4efb3231c8b281498ca8062a4ec905d41943824bdf919081900360c00190a1505050565b60015463ffffffff161561038b5760015463ffffffff16421061038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000164263ffffffff16179055600081905560408051338152602081018390527fcfb9c5312b25ec7b809d61e638df25f749eae5d5c25399e1c93d1d319bfd582191015b60405180910390a150565b60015463ffffffff161561047c5760015463ffffffff16421061047c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b33600081815260026020908152604091829020849055815192835282018390527f5e1dd8c4451717d5ca4ffbefdada35e22e0871220b9ed9dd03a351f0938c5ed791016103f2565b6000816040516020016104d991815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b803563ffffffff8116811461052957600080fd5b919050565b60006040828403121561054057600080fd5b6040516040810181811067ffffffffffffffff8211171561058a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290508061059983610515565b81526105a760208401610515565b60208201525092915050565b600080606083850312156105c657600080fd5b6105d0848461052e565b946040939093013593505050565b60008060008060a085870312156105f457600080fd5b843593506020850135925061060c866040870161052e565b9150608085013573ffffffffffffffffffffffffffffffffffffffff8116811461063557600080fd5b939692955090935050565b60006020828403121561065257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220f6d3e4b0441fc8901451c23a922cf6fd960c6dd0ebc2782685943f99a7de273664736f6c634300080a0033"; + +type SeedDanceTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SeedDanceTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SeedDanceTest__factory extends ContractFactory { + constructor(...args: SeedDanceTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): SeedDanceTest { + return super.attach(address) as SeedDanceTest; + } + connect(signer: Signer): SeedDanceTest__factory { + return super.connect(signer) as SeedDanceTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SeedDanceTestInterface { + return new utils.Interface(_abi) as SeedDanceTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SeedDanceTest { + return new Contract(address, _abi, signerOrProvider) as SeedDanceTest; + } +} diff --git a/src/typechain/factories/SeedDance__factory.ts b/src/typechain/factories/SeedDance__factory.ts new file mode 100644 index 0000000..bea1179 --- /dev/null +++ b/src/typechain/factories/SeedDance__factory.ts @@ -0,0 +1,167 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { SeedDance, SeedDanceInterface } from "../SeedDance"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "Commitment", + name: "commitment", + type: "uint256", + }, + ], + name: "Commit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "Secret", + name: "secret", + type: "uint256", + }, + { + indexed: false, + internalType: "Seed", + name: "newSeed", + type: "uint256", + }, + ], + name: "Reveal", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "Seed", + name: "initialSeed", + type: "uint256", + }, + ], + name: "Start", + type: "event", + }, + { + inputs: [ + { + internalType: "Seed", + name: "seed_", + type: "uint256", + }, + { + internalType: "uint256", + name: "start_", + type: "uint256", + }, + { + components: [ + { + internalType: "uint32", + name: "baseDuration", + type: "uint32", + }, + { + internalType: "uint32", + name: "maxExtraTime", + type: "uint32", + }, + ], + internalType: "struct TimeBound", + name: "timeBound_", + type: "tuple", + }, + { + internalType: "address", + name: "owner_", + type: "address", + }, + ], + name: "canRevealUntil", + outputs: [ + { + internalType: "uint256", + name: "until_", + type: "uint256", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80637fbc62af14610030575b600080fd5b61004361003e3660046100f1565b610055565b60405190815260200160405180910390f35b8280156100d0576000836020015163ffffffff166100b0878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b816100bd576100bd6101e6565b855163ffffffff16919006019190910190505b949350505050565b803563ffffffff811681146100ec57600080fd5b919050565b60008060008084860360a081121561010857600080fd5b853594506020860135935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561014357600080fd5b506040516040810181811067ffffffffffffffff8211171561018e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525061019f604087016100d8565b81526101ad606087016100d8565b60208201529150608085013573ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122014cb0d9ea3b35210ca6d0ae98a4c8bb2d205e44306c12599a6c0c3e83a7c16be64736f6c634300080a0033"; + +type SeedDanceConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SeedDanceConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SeedDance__factory extends ContractFactory { + constructor(...args: SeedDanceConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): SeedDance { + return super.attach(address) as SeedDance; + } + connect(signer: Signer): SeedDance__factory { + return super.connect(signer) as SeedDance__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SeedDanceInterface { + return new utils.Interface(_abi) as SeedDanceInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SeedDance { + return new Contract(address, _abi, signerOrProvider) as SeedDance; + } +} diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index 00a3f77..c7a976e 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -132,6 +132,10 @@ declare module "hardhat/types/runtime" { name: "Cooldown", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "SeedDance", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC20Redeem", signerOrOptions?: ethers.Signer | FactoryOptions @@ -232,6 +236,10 @@ declare module "hardhat/types/runtime" { name: "PhasedTest", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "RandomTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ReadWriteTier", signerOrOptions?: ethers.Signer | FactoryOptions @@ -280,6 +288,14 @@ declare module "hardhat/types/runtime" { name: "VerifyCallbackTest", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "LibCommitmentTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "LibSeedTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "RedeemableERC20ClaimEscrowWrapper", signerOrOptions?: ethers.Signer | FactoryOptions @@ -288,6 +304,10 @@ declare module "hardhat/types/runtime" { name: "SaleEscrowWrapper", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "SeedDanceTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "TierReportTest", signerOrOptions?: ethers.Signer | FactoryOptions @@ -495,6 +515,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "SeedDance", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC20Redeem", address: string, @@ -620,6 +645,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "RandomTest", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ReadWriteTier", address: string, @@ -680,6 +710,16 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "LibCommitmentTest", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "LibSeedTest", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "RedeemableERC20ClaimEscrowWrapper", address: string, @@ -690,6 +730,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "SeedDanceTest", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "TierReportTest", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 627d5d1..4cb77aa 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -30,6 +30,7 @@ export type { EmissionsERC20 } from "./EmissionsERC20"; export type { EmissionsERC20Factory } from "./EmissionsERC20Factory"; export type { IClaim } from "./IClaim"; export type { Cooldown } from "./Cooldown"; +export type { SeedDance } from "./SeedDance"; export type { ERC20Redeem } from "./ERC20Redeem"; export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; @@ -55,6 +56,7 @@ export type { FnPtrsTest } from "./FnPtrsTest"; export type { MockISale } from "./MockISale"; export type { PhasedScheduleTest } from "./PhasedScheduleTest"; export type { PhasedTest } from "./PhasedTest"; +export type { RandomTest } from "./RandomTest"; export type { ReadWriteTier } from "./ReadWriteTier"; export type { RedeemableERC20Reentrant } from "./RedeemableERC20Reentrant"; export type { ReserveToken } from "./ReserveToken"; @@ -67,8 +69,11 @@ export type { SaleReentrant } from "./SaleReentrant"; export type { SaturatingMathTest } from "./SaturatingMathTest"; export type { StackHeightTest } from "./StackHeightTest"; export type { VerifyCallbackTest } from "./VerifyCallbackTest"; +export type { LibCommitmentTest } from "./LibCommitmentTest"; +export type { LibSeedTest } from "./LibSeedTest"; export type { RedeemableERC20ClaimEscrowWrapper } from "./RedeemableERC20ClaimEscrowWrapper"; export type { SaleEscrowWrapper } from "./SaleEscrowWrapper"; +export type { SeedDanceTest } from "./SeedDanceTest"; export type { TierReportTest } from "./TierReportTest"; export type { TierV2Test } from "./TierV2Test"; export type { CombineTier } from "./CombineTier"; @@ -113,6 +118,7 @@ export { EmissionsERC20__factory } from "./factories/EmissionsERC20__factory"; export { EmissionsERC20Factory__factory } from "./factories/EmissionsERC20Factory__factory"; export { IClaim__factory } from "./factories/IClaim__factory"; export { Cooldown__factory } from "./factories/Cooldown__factory"; +export { SeedDance__factory } from "./factories/SeedDance__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; @@ -138,6 +144,7 @@ export { FnPtrsTest__factory } from "./factories/FnPtrsTest__factory"; export { MockISale__factory } from "./factories/MockISale__factory"; export { PhasedScheduleTest__factory } from "./factories/PhasedScheduleTest__factory"; export { PhasedTest__factory } from "./factories/PhasedTest__factory"; +export { RandomTest__factory } from "./factories/RandomTest__factory"; export { ReadWriteTier__factory } from "./factories/ReadWriteTier__factory"; export { RedeemableERC20Reentrant__factory } from "./factories/RedeemableERC20Reentrant__factory"; export { ReserveToken__factory } from "./factories/ReserveToken__factory"; @@ -150,8 +157,11 @@ export { SaleReentrant__factory } from "./factories/SaleReentrant__factory"; export { SaturatingMathTest__factory } from "./factories/SaturatingMathTest__factory"; export { StackHeightTest__factory } from "./factories/StackHeightTest__factory"; export { VerifyCallbackTest__factory } from "./factories/VerifyCallbackTest__factory"; +export { LibCommitmentTest__factory } from "./factories/LibCommitmentTest__factory"; +export { LibSeedTest__factory } from "./factories/LibSeedTest__factory"; export { RedeemableERC20ClaimEscrowWrapper__factory } from "./factories/RedeemableERC20ClaimEscrowWrapper__factory"; export { SaleEscrowWrapper__factory } from "./factories/SaleEscrowWrapper__factory"; +export { SeedDanceTest__factory } from "./factories/SeedDanceTest__factory"; export { TierReportTest__factory } from "./factories/TierReportTest__factory"; export { TierV2Test__factory } from "./factories/TierV2Test__factory"; export { CombineTier__factory } from "./factories/CombineTier__factory"; diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index f663bc7..10907ee 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -75,7 +75,7 @@ before('Initializing and deploying contracts to hardhat network', async () => { const OrderBookFactory = await ethers.getContractFactory('OrderBook'); // ⚠️ Deployments to hardhat test network ⚠️ - const vmStateBuilder = await vmStateBuilderFactory.deploy(); + const aaaaaaaaaaaaaaaaaaaaaa = await vmStateBuilderFactory.deploy(); const RedeemableERC20Factory = await RedeemableERC20FactoryFactory.deploy(); const VerifyFactory = await VerifyFactoryFactory.deploy(); const VerifyTierFactory = await VerifyTierFactoryFactory.deploy(); diff --git a/yarn.lock b/yarn.lock index c192783..c177f34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -944,9 +944,9 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c": +"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#f184482cca57c72db22ba97649d5f84a1b7ad291": version "0.0.16" - resolved "git+https://github.com/beehive-innovation/rain-protocol.git#5a35b097475d37fd5f44446922a32025708c1f8c" + resolved "git+https://github.com/beehive-innovation/rain-protocol.git#f184482cca57c72db22ba97649d5f84a1b7ad291" dependencies: "@openzeppelin/contracts" "^4.3.3" "@openzeppelin/contracts-upgradeable" "^4.4.1" From 8513ad55ce8760be1fbc1d7ef62a0eee7557408d Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Tue, 5 Jul 2022 09:16:14 +0000 Subject: [PATCH 025/125] VM Simulation + MatchMaker + some fixes vmSimulation environment for vm contracts (sale, orderbook, etc), orderbook MatchMaker, and some fixes --- src/RainJS/OrderbookJS.ts | 65 +- src/RainJS/RainJS.ts | 25 +- src/RainJS/SaleJS.ts | 5 +- src/RainJS/matchmaker.ts | 362 +++++ src/RainJS/types.ts | 168 ++ src/RainJS/vmSimulation.ts | 1361 +++++++++++++++++ src/classes/vm.ts | 77 +- src/contracts/emissionsERC20.ts | 11 +- src/contracts/sale.ts | 4 +- .../combineTierScriptGenerator.ts | 63 +- .../emissionsERC20ScriptGenerator.ts | 2 +- .../script-generators/saleScriptGenerator.ts | 183 +-- src/contracts/tiers/combineTier.ts | 11 +- test/1_initSDK.test.ts | 2 +- test/2_sale.test.ts | 10 +- test/3_verify.test.ts | 2 +- test/4_tiers.test.ts | 2 +- test/5_escrow.test.ts | 14 +- test/7_RainJS.test.ts | 96 +- ...ource.test.ts => 8_friendlySource.test.ts} | 24 +- test/utils.ts | 4 +- 21 files changed, 2223 insertions(+), 268 deletions(-) create mode 100644 src/RainJS/matchmaker.ts create mode 100644 src/RainJS/types.ts create mode 100644 src/RainJS/vmSimulation.ts rename test/{friendlySource.test.ts => 8_friendlySource.test.ts} (99%) diff --git a/src/RainJS/OrderbookJS.ts b/src/RainJS/OrderbookJS.ts index 9221d0e..117d5df 100644 --- a/src/RainJS/OrderbookJS.ts +++ b/src/RainJS/OrderbookJS.ts @@ -1,7 +1,9 @@ -import { BigNumber, Contract, Signer } from 'ethers'; +import { BigNumber, Signer } from 'ethers'; import { StateConfig } from '../classes/vm'; import { ApplyOpFn, RainJS, StateJS } from './RainJS'; import { OrderBook, OrderbookContext } from '../contracts/orderBook'; +//import { AddressBook } from '../addresses'; + // @TODO - not complete, local opcodes functions need to be added /** @@ -10,6 +12,12 @@ import { OrderBook, OrderbookContext } from '../contracts/orderBook'; * */ export class OrderbookJS extends RainJS { + + /** + * + */ + public chainId?: number; + /** * Constructor of OrderbookJS to create a instance of this class with Orderbook's local opcodes. * @see RainJS @@ -23,10 +31,11 @@ export class OrderbookJS extends RainJS { state: StateConfig, options?: { signer?: Signer; - contract?: Contract; + contract?: string; applyOpFn?: ApplyOpFn; storageOpFn?: ApplyOpFn; // for overriding the OrderbookJS's STORAGE opcode function contextOpFn?: ApplyOpFn; // for overriding the OrderbookJS's CONTEXT opcode function + chainId?: number } ) { super(state, { @@ -37,7 +46,7 @@ export class OrderbookJS extends RainJS { // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction - if (options?.storageOpFn) { + if (options?.storageOpFn !== undefined) { this._STORAGE_ = options.storageOpFn; } for (let i = 0; i < OrderbookContext.length; i++) { @@ -45,21 +54,66 @@ export class OrderbookJS extends RainJS { this._CONTEXT_[i] = options.contextOpFn[i]; } } + if (options && options.chainId !== undefined) { + this.chainId = options.chainId; + } + } + + /** + * + * @param chainId + */ + public setChainId (chainId: number) { + this.chainId = chainId; } protected _OPCODE_: ApplyOpFn = { ...this._OPCODE_, + + + [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async ( + state: StateJS, operand: number, data?: any - ) => {}, + ) => { + // if (this.chainId && data.chainId !== undefined) { + // const chainId = this.chainId !== undefined ? this.chainId : data.chainId; + // const EndPoint = AddressBook.getSubgraphEndpoint(chainId); + // let subgraphData = await fetch(EndPoint, { + // method: 'POST', + // headers: { + // 'Content-Type': 'application/json', + // }, + // body: JSON.stringify({ + // query: ` + // query { + // redeemableEscrowDeposits(where: + // {iSaleAddress:"${SALE_ADDRESS}"} + // ) { + // id + + // } + // } + // ` + // }) + // }); + // subgraphData = await subgraphData.json(); + // subgraphData = subgraphData.data.redeemableEscrowDeposits[0]; + + // state.stack.push(BigNumber.from(subgraphData)) + // } + // else throw new Error("undefined chainID") + }, [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async ( state: StateJS, operand: number, data?: any - ) => {}, + ) => { + + }, }; /** @@ -99,4 +153,5 @@ export class OrderbookJS extends RainJS { * however in JSVM there is the ability to pass in custom opcode functions to it */ protected _STORAGE_: ApplyOpFn = {}; + } diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index c85a0d7..2a8ff7c 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -6,8 +6,9 @@ import { ERC20 } from '../contracts/generics/erc20'; import { ERC721 } from '../contracts/generics/erc721'; import { ITierV2 } from '../contracts/tiers/iTierV2'; import { Provider } from '../types'; -import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; import { ERC20Snapshot__factory } from '../typechain'; +import { eighteenZeros } from './types'; +import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; /** @@ -227,10 +228,11 @@ export class RainJS { * * @returns - An array represting the final state of the RainJS stack. */ - public async run(data?: any): Promise { - await this.eval(data); - this.lastState.push(...this.state.stack.splice(-this.state.stack.length)); - const result_ = this.lastState[this.lastState.length - 1]; + public async run(data?: any, index?: number): Promise { + this.lastState.splice(-this.lastState.length); + await this.eval(data, index); + const result_ = this.state.stack.splice(-this.state.stack.length); + this.lastState.push(...result_); return result_; } @@ -571,10 +573,10 @@ export class RainJS { const item1_ = state.stack.pop(); if (item1_ && item2_ !== undefined) { state.stack.push( - (operand <= 18 + ((operand <= 18 ? item1_.mul((10 ** (18 - operand)).toString()) : item1_.div((10 ** (operand - 18)).toString()) - ).div(item2_) + ).mul(eighteenZeros)).div(item2_) ); } else throw new Error('Undefined stack variables'); @@ -585,11 +587,12 @@ export class RainJS { const item1_ = state.stack.pop(); if (item1_ && item2_ !== undefined) { state.stack.push( - item2_.mul( + (item2_.mul( operand <= 18 ? item1_.mul((10 ** (18 - operand)).toString()) : item1_.div((10 ** (operand - 18)).toString()) - ) + ) + ).div(eighteenZeros) ); } else throw new Error('Undefined stack variables'); @@ -919,7 +922,7 @@ export class RainJS { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined && context_.length !== operand) { + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { const account_ = paddedUInt160(item2_); const iTierV2Contract = new ITierV2( paddedUInt160(item1_), @@ -943,7 +946,7 @@ export class RainJS { const item2_ = state.stack.pop(); const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined && context_.length !== operand) { + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { const tier_ = item3_; const account_ = paddedUInt160(item2_); const iTierV2Contract = new ITierV2( diff --git a/src/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts index 7fe3206..3fb0073 100644 --- a/src/RainJS/SaleJS.ts +++ b/src/RainJS/SaleJS.ts @@ -3,6 +3,7 @@ import { StateConfig } from "../classes/vm"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; import { ERC20 } from "../contracts/generics/erc20"; import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; +import { parseUnits } from "../utils"; @@ -134,8 +135,8 @@ export class SaleJS extends RainJS { async(state: StateJS, operand: number, data?: any) => { if(data && data.context !== undefined) { state.stack.push( - BigNumber.from( - data.context[SaleContext.CurrentBuyUnits] + parseUnits( + data.context[SaleContext.CurrentBuyUnits].toString() ) ) } diff --git a/src/RainJS/matchmaker.ts b/src/RainJS/matchmaker.ts new file mode 100644 index 0000000..c2dc3f8 --- /dev/null +++ b/src/RainJS/matchmaker.ts @@ -0,0 +1,362 @@ +import { BigNumber } from "ethers"; +import { OrderbookJS } from "./OrderbookJS"; +import { VM } from "../classes/vm"; +import { OrderbookSimulation } from "./vmSimulation"; +import { FixedPrice, IncreasingPrice } from "../contracts/script-generators/saleScriptGenerator"; +import { parseUnits } from "../utils"; +import { + order, + erc20s, + eighteenZeros, + bountyConfig +} from "./types"; + + +/** + * Interface for matchmaker forcasting a script + */ +export interface forcast { + [orderHash: string]: { + minP: BigNumber, + maxP: BigNumber, + minOut: BigNumber, + maxOut: BigNumber, + minIn:BigNumber, + maxIn: BigNumber + } +} + +/** + * @public + * A class for finding matches among orders off-chain in a simulated environment + */ +export class MatchMaker extends OrderbookSimulation { + + /** + * The forcast property of the matchmaker + */ + public orderForcast: forcast = {}; + + /** + * The type of stores all the found matches + */ + public foundMatches: {orderA: string, orderB: string}[] = []; + + /** + * Method that inherits from the parent class addOrder and after perfroming that will execute orderEval method + * + * @param order - the order to be added + * + * @return void + */ + public async addOrder(order: order): Promise { + super.addOrder(order); + await this.orderEval(order) + }; + + // public async deposit( + // sender: string, + // tokenAddress: string, + // vaultId: string, + // units: number, + // tokenDecimals: number = 18 + // ): Promise { + // let vaultBalanceFlag = this.vaults[sender][tokenAddress].vaultId[vaultId].isZero() ? true : false; + // super.deposit(sender, tokenAddress, vaultId, units, tokenDecimals); + // for (let i = 0; i < Object.keys(this.orders).length; i++) { + // if ( + // vaultBalanceFlag && + // Object.values(this.orders)[i].owner === sender && + // Object.values(this.orders)[i].outputToken === tokenAddress && + // Object.values(this.orders)[i].outputVaultId === vaultId + // ) { + // await this.orderEval(this.orders[Object.keys(this.orders)[i]], this.timestamp, this.blockNumber) + // } + // } + // } + + /** + * Method to evaluate and forcast the order's script + * + * @param order - the order to be evaluated + * + * @returns void + */ + public async orderEval(order: order, timestamp?: number, blockNumber?: number) { + this.script = order.vmConfig; + const jsvm = new OrderbookJS(this.script, {applyOpFn: this.OpFns}); + const result1 = await jsvm.run({context: [order.orderHash], timestamp, blockNumber}); + + const out1 = result1[0]; + const p1 = result1[1]; + const in1 = out1.mul(p1).div(eighteenZeros); + + let _timestamp = timestamp ? timestamp + 3600 : 3600; + let _blockNumber = blockNumber ? blockNumber + 1800 : 1800; + + const result2 = await jsvm.run({context: [order.orderHash], timestamp: _timestamp, blockNumber: _blockNumber}) + + const out2 = result2[0]; + const p2 = result2[1]; + const in2 = out2.mul(p2).div(eighteenZeros); + + this.orderForcast[order.orderHash] = { + minP: p2.gt(p1) ? p1 : p2, + maxP: p2.gt(p1) ? p2 : p1, + minOut: out2.gt(out1) ? out1 : out2, + maxOut: out2.gt(out1) ? out2 : out1, + minIn: in2.gt(in1) ? in1 : in2, + maxIn: in2.gt(in1) ? in2 : in1, + } + } + + /** + * The main method to perform matchmaking and find matches among orders + * + * @param bountyConfig - the BountyConfig of this matchmaker class + * + * @returns + */ + public async makeMatch(bountyConfig: bountyConfig) : Promise<{orderA: string, orderB: string}[]> { + + const orderHashs = Object.keys(this.orders); + let result = []; + + if (orderHashs.length > 1) { + for(let i = 0; i 1; + + matchmaker.addAssets(tokens); + matchmaker.setSender(sender6); + + console.log("checking sender1 balance of token 0x2:") + console.log("sender1 token0x2 balance before adding order and depositing: " + matchmaker.erc20s["0x2"].balanceOf[sender1].div(eighteenZeros).toNumber()); + + console.log("---------------------------------------") + console.log("adding orders") + await matchmaker.addOrder(order1); + await matchmaker.addOrder(order3); + await matchmaker.addOrder(order2); + await matchmaker.addOrder(order4); + + console.log("---------------------------------------") + console.log("checking output valut balances of sener1 and sender3") + console.log("sender1 outputValt balance before depositing: " + matchmaker.vaults[sender1]["0x2"].vaultId["0x201"].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance before depositing: " + matchmaker.vaults[sender3]["0x1"].vaultId["0x103"].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance before depositing: " + matchmaker.vaults[sender2]["0x3"].vaultId["0x302"].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance before depositing: " + matchmaker.vaults[sender4]["0x2"].vaultId["0x204"].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("depositing 30 tokens for order1 and 40 tokens for order3") + matchmaker.deposit(sender1, "0x2", "0x201", 30); + matchmaker.deposit(sender3, "0x1", "0x103", 40); + matchmaker.deposit(sender2, "0x3", "0x302", 70); + matchmaker.deposit(sender4, "0x2", "0x204", 60); + + console.log("---------------------------------------") + console.log("checking the balances of sender1 and sender3 output vaults") + + console.log("sender1 outputValt balance after depositing: " + matchmaker.vaults[sender1]["0x2"].vaultId["0x201"].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance after depositing: " + matchmaker.vaults[sender3]["0x1"].vaultId["0x103"].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance after depositing: " + matchmaker.vaults[sender2]["0x3"].vaultId["0x302"].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance after depositing: " + matchmaker.vaults[sender4]["0x2"].vaultId["0x204"].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("checking sender1 balance of token 0x2") + console.log("sender1 token0x2 balance after dpositing: " + matchmaker.erc20s["0x2"].balanceOf[sender1].div(eighteenZeros).toNumber()) + + console.log("---------------------------------------") + console.log("performing the match") + + var t = timer("benchmark") + await matchmaker.makeMatch(bountyConfig1); + let result = t.stop() + + console.log("---------------------------------------") + console.log("checking output balances of sender1's and sender3's output vaults") + console.log("sender1 outputValt balance after matching: " + matchmaker.vaults[sender1]["0x2"].vaultId["0x201"].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance after matching: " + matchmaker.vaults[sender3]["0x1"].vaultId["0x103"].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance after matching: " + matchmaker.vaults[sender2]["0x3"].vaultId["0x302"].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance after matching: " + matchmaker.vaults[sender4]["0x2"].vaultId["0x204"].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("checking input balances of sender1's and sender3's output vaults") + console.log("sender1 inputValt balance after matching: " + matchmaker.vaults[sender1]["0x1"].vaultId["0x101"].div("100000000000000").toNumber()/10000) + console.log("sender3 inputValt balance after matching: " + matchmaker.vaults[sender3]["0x2"].vaultId["0x203"].div("100000000000000").toNumber()/10000) + console.log("sender2 inputValt balance after matching: " + matchmaker.vaults[sender2]["0x2"].vaultId["0x202"].div("100000000000000").toNumber()/10000) + console.log("sender4 inputValt balance after matching: " + matchmaker.vaults[sender4]["0x3"].vaultId["0x304"].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("checking total bounty balance") + console.log("total bounties collected of token0x2: " + Object.values(matchmaker.vaults[sender6]["0x2"].vaultId).reduce((e, m) => e.add(m)) + .div("100000000000000").toNumber()/10000) + console.log("total bounties collected of token0x1: " + Object.values(matchmaker.vaults[sender6]["0x1"].vaultId).reduce((e, m) => e.add(m)) + .div("100000000000000").toNumber()/10000) + console.log("total bounties collected of token0x3: " + Object.values(matchmaker.vaults[sender6]["0x3"].vaultId).reduce((e, m) => e.add(m)) + .div("100000000000000").toNumber()/10000) + // console.log("bounty aOutput of token0x2 Vault0x88 balance: " + matchmaker.vaults[sender6]["0x2"].vaultId["0x88"].div("10000000000000000").toNumber()/100) + // console.log("bounty bOutput of token0x1 Vault0x99 balance: " + matchmaker.vaults[sender6]["0x1"].vaultId["0x99"].div("10000000000000000").toNumber()/100) + // console.log("bounty aOutput of token0x1 Vault0x88 balance: " + matchmaker.vaults[sender6]["0x1"].vaultId["0x88"].div("10000000000000000").toNumber()/100) + // console.log("bounty bOutput of token0x2 Vault0x99 balance: " + matchmaker.vaults[sender6]["0x2"].vaultId["0x99"].div("10000000000000000").toNumber()/100) + + // second matchmaking round + // increasing the timestamp for second matchmaking + // matchmaker.timestamp = 1700 + + // let result2 = await matchmaker.makeMatch(); + // console.log(result2); + + console.log("---------------------------------------") + console.log(result.name + " of this matchmaking round: " + result.time + " ms") + } + catch(err){ + console.log(err) + } +} +bot() diff --git a/src/RainJS/types.ts b/src/RainJS/types.ts new file mode 100644 index 0000000..fd53af5 --- /dev/null +++ b/src/RainJS/types.ts @@ -0,0 +1,168 @@ +import { BigNumber} from 'ethers'; +import { isHexString } from 'ethers/lib/utils'; +import { StateConfig} from '../classes/vm'; +import { paddedUInt160 } from '../utils'; + + +// 18 decimals or i.e "DECIMALS" - used for fixed point match +export const eighteenZeros = "1000000000000000000"; + +/** + * type for simulating and storing ITier contract data + */ +export interface itiers { + [address: string]: { + report: { + [wallet: string]: BigNumber + } + } +} + +/** + * type for simulating and storing ERC20token contract data + */ +export interface erc20 { + totalSupply: BigNumber, + decimals: number, + balanceOf: { + [wallet: string]: BigNumber + }, + snapshots?: { + [id: string]: { + totalSupplyAt: BigNumber, + balanceOfAt: { + [wallet: string]: BigNumber + } + } + } +} + +/** + * type for simulating and storing ERC721 contract data + */ +export interface erc721 { + [id: string]: { + ownerOf: string + } +} + +/** + * type for simulating and storing ERC1155 contract data + */ +export interface erc1155 { + [id: string]: { + balanceOf: { + [wallet: string]: BigNumber + } + } +} + +/** + * type for simulating and storing multiple ERC20 tokens + */ +export interface erc20s { + [address: string]: erc20 +} + +/** + * type for simulating and storing multiple ERC721 tokens + */ +export interface erc721s { + [address: string]: erc721 +} + +/** + * type for simulating and storing multiple ERC1155 tokens + */ +export interface erc1155s { + [address: string]: erc1155 +} + +/** + * type for simulating and storing orderbook Vaults data + */ +export interface vaults { + [owner: string]: { + [tokenAddress: string]: { + vaultId: { + [vaultId: string]: BigNumber + } + } + } +} + +/** + * type for simulating and storing orderbook Order data + */ +export interface order { + orderHash: string, + owner: string, + inputToken: string, + outputToken: string, + inputVaultId: string, + outputVaultId: string, + vmConfig: StateConfig +} + +/** + * type for simulating and storing multiple orderbook Orders + */ +export interface orders { + [orderHash: string]: order +} + +/** + * type for bounty config + */ +export interface bountyConfig { + aVaultId: string, + bVaultId: string, +} + +/** + * type for simulating and storing matched order cleared funds + */ +export interface clearedFunds { + [orderHash: string]: BigNumber +} + +/** + * type for simulating and storing matched order counterparty cleared funds + */ +export interface clearedCounterPartyFunds { + [orderHash: string]: { + [counterPartyAddress: string]: BigNumber + } +} + +/** + * function to check if the strings values of the simulatioin types are correct + * + * @param address - address string to check + * + * @returns boolean + */ +export function isAddress(address: string) : boolean { + return ( + isHexString(address) || + // eslint-disable-next-line no-new-wrappers + typeof new Number(address) === "number" || + BigNumber.from(address)._isBigNumber + ) +} + +/** + * function to convert address's strings to to a standard 40 char length hex string format for simulation types + * + * @remark should be used for all the string type properties of the simulatioin's types + * + * @param address - address string to convert + * + * @returns new string in standard hex string format + */ +export function toAddress(address: string) : string { + if (isAddress(address)) { + return paddedUInt160(BigNumber.from(address)) + } + else throw new Error("not a valid address") +} \ No newline at end of file diff --git a/src/RainJS/vmSimulation.ts b/src/RainJS/vmSimulation.ts new file mode 100644 index 0000000..cd5ff43 --- /dev/null +++ b/src/RainJS/vmSimulation.ts @@ -0,0 +1,1361 @@ +import { SaleJS } from "./SaleJS"; +import { BigNumber, ethers } from "ethers"; +import { OrderbookJS } from "./OrderbookJS"; +import { Tier } from "../classes/tierContract"; +import { StateConfig, VM } from "../classes/vm"; +import { SaleStorage } from "../contracts/sale"; +import { CombineTierJS } from "./CombineTierJS"; +import { OrderBook } from "../contracts/orderBook"; +import { EmissionsERC20JS } from "./EmissionsERC20JS"; +import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; +import { + parseUnits, + paddedUInt32, + paddedUInt160, + paddedUInt256, +} from "../utils"; +import { + order, + erc20s, + itiers, + orders, + vaults, + erc721s, + erc1155s, + clearedFunds, + bountyConfig, + erc20,eighteenZeros, + clearedCounterPartyFunds, + toAddress +} from "./types"; + + + +/** + * @public + * A class for creating a simulation environment for running pure RainVM off-chain using JSVM. + */ +export class vmSimulation { + + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender?: string; + + /** + * A property of type erc20s that act like a storage for simulation and stores the erc20 token data. + * this is needed for IERC20 related opcodes @see erc20s and @see erc20 + */ + public erc20s: erc20s = {}; + + /** + * A property of type erc721s that act like a storage for simulation and stores the erc721 token data. + * this is needed for IERC721 related opcodes @see erc721s and @see erc721 + */ + public erc721s: erc721s = {}; + + /** + * A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. + * this is needed for IERC1155 related opcodes @see erc1155s and @see erc1155 + */ + public erc1155s: erc1155s = {}; + + /** + * A property of type itiers that act like a storage for simulation of Rain tier contracts. + * this is needed for ITIERV2_REPORT and ITIERV2_REPORT_TIME_FOR_TIER opcodes. @see itiers + */ + public iTiers: itiers = {}; + + /** + * The contract address of this simulation that the simulation is done for. this is needed for THIS_ADDRESS opcode + * simulation and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address?: string; + + /** + * The script to simulate @see StateConfig + */ + public script?: StateConfig; + + /** + * A property for producing timestamp for the class which will be used in BLOCK_TIMESTAMP opcode + * but BLOCK_TIMESTAMP opcode can also be passed at runtime + */ + public timestamp?: () => number; + + /** + * A property for producing block number for the class which will be used in BLOCK_NUMBER opcode + * but BLOCK_NUMBER opcode can also be passed at runtime + */ + public blockNumber?: () => number; + + /** + * Opcodes functions body for simulation that use the class properties/types. @see ApplyOpFn and @see OpcodeFN + */ + protected OpFns: ApplyOpFn = { + + [VM.Opcodes.BLOCK_NUMBER]: (state: StateJS, operand: number, data?: any) => { + if (data && data.blockNumber !== undefined) { + state.stack.push(BigNumber.from(data.blockNumber)) + } + else if (this.blockNumber !== undefined) { + state.stack.push(BigNumber.from(this.blockNumber())) + } + else throw new Error("undefined block number") + }, + + [VM.Opcodes.BLOCK_TIMESTAMP]: (state: StateJS, operand: number, data?: any) => { + if (data && data.timestamp !== undefined) { + state.stack.push(BigNumber.from(data.timestamp)) + } + if (this.timestamp !== undefined) { + state.stack.push(BigNumber.from(this.timestamp())) + } + else throw new Error("undefined block timestamp") + }, + + [VM.Opcodes.SENDER]: (state: StateJS, operand: number, data?: any) => { + if (this.sender !== undefined) + state.stack.push(BigNumber.from(this.sender)) + else throw new Error("undefined sender") + }, + + [VM.Opcodes.THIS_ADDRESS]: (state: StateJS, operand: number, data?: any) => { + if (this.address !== undefined) + state.stack.push(BigNumber.from(this.address)) + else throw new Error("undefined contract") + }, + + [VM.Opcodes.ITIERV2_REPORT]: (state: StateJS, operand: number, data?: any) => { + const context_ = operand ? state.stack.splice(-operand) : []; + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined && context_.length !== operand) { + const account_ = paddedUInt160(item2_); + let iTierV2Contract; + if (this.iTiers[paddedUInt160(item1_)] !== undefined) { + iTierV2Contract = this.iTiers[paddedUInt160(item1_)]; + } + else throw new Error("iTier contract does not exist") + + if (iTierV2Contract.report[account_] !== undefined) { + state.stack.push(iTierV2Contract.report[account_]); + } + else throw new Error("report doesn not exist for this address") + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.ITIERV2_REPORT_TIME_FOR_TIER]: (state: StateJS, operand: number, data?: any) => { + const context_ = operand ? state.stack.splice(-operand) : []; + const item3_ = state.stack.pop(); + if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined && context_.length === operand) { + let iTierV2Contract; + const tier_ = item3_; + const account_ = paddedUInt160(item2_); + if (this.iTiers[paddedUInt160(item1_)] !== undefined) { + iTierV2Contract = this.iTiers[paddedUInt160(item1_)]; + } + else throw new Error("iTier contract does not exist") + if (iTierV2Contract.report[account_] !== undefined) { + state.stack.push( + BigNumber.from( + paddedUInt256(iTierV2Contract.report[account_]) + .substring(2) + .slice( + (-(tier_.toNumber() - 8) * 8), + (-(tier_.toNumber() - 9) * 8) + ) + ) + ) + } + else throw new Error("report doesn not exist for this address") + } + else throw new Error('Undefined stack variables'); + } + else throw new Error("not valid tier"); + }, + + [VM.Opcodes.IERC20_BALANCE_OF]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + state.stack.push(erc20Contract_.balanceOf[account_] ?? ethers.constants.Zero); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC20_TOTAL_SUPPLY]: (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ !== undefined) { + const erc20Address_ = paddedUInt160(item_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + state.stack.push(erc20Contract_.totalSupply); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC721_BALANCE_OF]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const account_ = paddedUInt160(item2_); + const erc721Address_ = paddedUInt160(item1_); + let erc721Contract_; + if (this.erc721s[erc721Address_] !== undefined) { + erc721Contract_ = this.erc721s[erc721Address_] + } + else throw new Error("erc721 token does not exist") + let counter = 0; + for (let i = 0; i < Object.keys(erc721Contract_).length; i++) { + if (Object.values(erc721Contract_)[i].ownerOf === account_) counter++ + } + state.stack.push(BigNumber.from(counter)); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC721_OWNER_OF]: (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const tokenId_ = item2_.toNumber(); + const erc721Address_ = paddedUInt160(item1_); + let erc721Contract_; + if (this.erc721s[erc721Address_] !== undefined) { + erc721Contract_ = this.erc721s[erc721Address_] + } + else throw new Error("erc721 token does not exist") + if (erc721Contract_[tokenId_] !== undefined) { + state.stack.push( + BigNumber.from(erc721Contract_[tokenId_].ownerOf) + ) + } + else throw new Error("token ID doesn not exist") + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF]: (state: StateJS, operand: number, data?: any) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ !== undefined) { + const id_ = item3_.toNumber(); + const account_ = paddedUInt160(item2_); + const erc1155Address_ = paddedUInt160(item1_); + let erc1155Contract_; + if (this.erc1155s[erc1155Address_] !== undefined) { + erc1155Contract_ = this.erc1155s[erc1155Address_] + } + else throw new Error("erc1155 token doesn not exist") + if (erc1155Contract_[id_] !== undefined) { + state.stack.push(erc1155Contract_[id_].balanceOf[account_] ?? ethers.constants.Zero); + } + else throw new Error("token ID doesn not exist") + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: (state: StateJS, operand: number, data?: any) => { + const item3_ = state.stack.splice(-(operand + 1)); + const item2_ = state.stack.splice(-(operand + 1)); + const item1_ = state.stack.pop(); + if ( + item1_ && + item2_ && + item3_ && + item2_.length === item3_.length + ) { + const tokenIds_: number[] = []; + for (let i = 0; i < item3_.length; i++) { + tokenIds_.push(item3_[i].toNumber()); + } + const accounts_: string[] = []; + for (let i = 0; i < item2_.length; i++) { + accounts_.push(paddedUInt160(item2_[i])); + } + const erc1155Address_ = paddedUInt160(item1_); + let erc1155Contract_; + if (this.erc1155s[erc1155Address_] !== undefined) { + erc1155Contract_ = this.erc1155s[erc1155Address_] + } + else throw new Error("erc1155 token doesn not exist") + let balanceOfBatch: BigNumber[] = []; + for (let i = 0; i < tokenIds_.length; i++) { + if (Object.keys(erc1155Contract_).includes(tokenIds_[i].toString())) { + balanceOfBatch.push( + erc1155Contract_[tokenIds_[i]].balanceOf[accounts_[i]] ?? ethers.constants.Zero + ) + } + } + state.stack.push( + ...balanceOfBatch + ); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT]: (state: StateJS, operand: number, data?: number) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ !== undefined) { + const snapshotId_ = item3_.toNumber(); + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + if (erc20Contract_.snapshots && erc20Contract_.snapshots[snapshotId_] !== undefined) { + state.stack.push(erc20Contract_.snapshots[snapshotId_].balanceOfAt[account_] ?? ethers.constants.Zero); + } + else throw new Error("no snapshot has created for this token") + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT]: (state: StateJS, operand: number, data?: number) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const snapshotId_ = item2_.toNumber(); + const erc20Address_ = paddedUInt160(item1_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + if (erc20Contract_.snapshots && erc20Contract_.snapshots[snapshotId_] !== undefined) { + state.stack.push(erc20Contract_.snapshots[snapshotId_].totalSupplyAt); + } + else throw new Error("no snapshot has created for this token") + } + else throw new Error('Undefined stack variables'); + } + } + + /** + * Method to set the class sender property + * + * @param senderAddress - a string number/hex string + */ + public setSender(senderAddress: string) { + this.sender = toAddress(senderAddress); + } + + /** + * Method to set the class address property + * + * @param contractAddress - a string number/hex string + */ + public setContractAddress(contractAddress: string) { + this.address = toAddress(contractAddress); + } + + /** + * Method to set the class script + * + * @param script - A StateConfig + */ + public setScript(script: StateConfig) { + this.script = script; + } + + /** + * Method to add assets i.e erc20/721/1155 types objects + * + * @param erc20s - An object of type erc20s + * @param erc721s - An object of type erc721s + * @param erc1155s - An object of type erc1155s + */ + public addAssets(erc20s?: erc20s, erc721s?: erc721s, erc1155s?: erc1155s) { + if (erc20s) { + for (let i = 0; i < Object.keys(erc20s).length; i++) { + if (Object.keys(this.erc20s).includes(Object.keys(erc20s)[i])) { + delete this.erc20s[Object.keys(erc20s)[i]] + } + } + this.erc20s = {...this.erc20s, ...erc20s} + } + if (erc721s) { + for (let i = 0; i < Object.keys(erc721s).length; i++) { + if (Object.keys(this.erc721s).includes(Object.keys(erc721s)[i])) { + delete this.erc721s[Object.keys(erc721s)[i]] + } + } + this.erc721s = {...this.erc721s, ...erc721s} + } + if (erc1155s) { + for (let i = 0; i < Object.keys(erc1155s).length; i++) { + if (Object.keys(this.erc1155s).includes(Object.keys(erc1155s)[i])) { + delete this.erc1155s[Object.keys(erc1155s)[i]] + } + } + this.erc1155s = {...this.erc1155s, ...erc1155s} + } + } + + /** + * Method to add tier contract types objects to the class (iTiers) + * + * @param iTiers - An Object of itiers type + */ + public addITiers (iTiers: itiers) { + for (let i = 0; i < Object.keys(iTiers).length; i++) { + if (Object.keys(this.iTiers).includes(Object.keys(iTiers)[i])) { + delete this.iTiers[Object.keys(iTiers)[i]] + } + } + this.iTiers = { + ...this.iTiers, + ...iTiers + } + } + + /** + * Method to run the script using JSVM + * + * @param data - (optional) the additional data that needs to be passed at the runtime such as timestamp used in BLOCK_TIMESTAMP opcode. + * @param index - (optional) the ENTRYPOINT or the index in the script sources to run + * + * @returns An array of BigNumbers, which are the stacked result of the script + */ + public async runScript (data?: any, index?: number): Promise { + if (this.script !== undefined) { + let simulation = new RainJS( + this.script, + {applyOpFn: this.OpFns} + ) + let result = simulation.run(data, index); + return result; + } + else throw new Error("no script to execute") + } +} + +/** + * @public + * A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. + */ +export class SaleSimulation extends vmSimulation { + + /** + * The sale address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * The reedeemable token of this sale i.e rTKN which needs to a string number or hex string @see erc20 + */ + public token: erc20; + + /** + * The reserve token of this sale as an erc20 type object @see erc20 + */ + public reserve: erc20; + + /** + * The reserve token addres of this sale as an erc20 type object + */ + public tokenAddress: string; + + /** + * The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string + */ + public reserveAddress: string; + + /** + * Constructor of this class + * + * @param address - A string number or hex string + * @param tokenAddress - A string number or hex string of the rTKN address + * @param reserveAddress - A string number or hex string of the reserve token address + * @param token - the rTKN + * @param reserve - the reserve token + */ + constructor ( + address: string, + tokenAddress: string, + reserveAddress: string, + token: erc20, + reserve: erc20 + ) { + super(); + this.token = token; + this.address = toAddress(address); + this.reserve = reserve; + this.tokenAddress = toAddress(tokenAddress); + this.reserveAddress = toAddress(reserveAddress); + + if (this.erc20s[this.tokenAddress] === undefined) { + this.erc20s[this.tokenAddress] = this.token; + } + if (this.erc20s[this.reserveAddress] === undefined) { + this.erc20s[this.reserveAddress] = this.reserve; + } + if (this.erc20s[this.tokenAddress].balanceOf[this.address] === undefined) { + this.erc20s[this.tokenAddress].balanceOf[this.address] = this.token.balanceOf[this.address] + } + if (this.erc20s[this.reserveAddress].balanceOf[this.address] === undefined) { + this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address] + } + } + + /** + * Sale storage opcodes's functions body that use the class properties/types. @see ApplyOpFn and @see OpcodeFN + */ + private storageOps: ApplyOpFn = { + [SaleStorage.RemainingUnits]: (state: StateJS, operand: number, data?: any) => { + state.stack.push(this.token.balanceOf[this.address]) + }, + [SaleStorage.TotalReserveIn]: (state: StateJS, operand: number, data?: any) => { + state.stack.push(this.reserve.balanceOf[this.address]) + }, + [SaleStorage.TokenAddress]: (state: StateJS, operand: number, data?: any) => { + state.stack.push(BigNumber.from(this.tokenAddress)) + }, + [SaleStorage.ReserveAddress]: (state: StateJS, operand: number, data?: any) => { + state.stack.push(BigNumber.from(this.reserveAddress)) + } + }; + + /** + * Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. + * requires the class's sender property to be defined + * + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns a boolean represting if the sale can live (active status - 1) or not + */ + public async canLive(timestamp?: number, blockNumber?: number) : Promise { + let canLive: boolean; + const canLive_entrypoint = 0; + if (this.script && this.sender !== undefined) { + let simulation = new SaleJS( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {timestamp, blockNumber}, + canLive_entrypoint + ); + canLive = result_[0].isZero() ? false : true; + } + else throw new Error("no script or sender to execute canLive"); + return canLive; + } + + /** + * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. + * requires the class's sender property to be defined + * + * @param units - Units to get the calculation for + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return a pair of BigNumbers represting amount and price + */ + public async calculateBuy( + units: number, + timestamp?: number, + blockNumber?: number + ): Promise<[BigNumber, BigNumber]> { + let maxUnits; + let price; + const amount_price_entrypoint = 1; + + if (this.script && this.sender !== undefined) { + let simulation = new SaleJS( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {context: [units], timestamp, blockNumber}, + amount_price_entrypoint + ); + maxUnits = result_[result_.length - 2]; + price = result_[result_.length - 1]; + } + else throw new Error("no script or sender to execute calculateBuy") + return [maxUnits, price]; + } + + /** + * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. + * requires the class's sender property to be defined. + * + * @remark after running this method all the defined class's related types/storage will get updated with new + * values that are result of the JSVM running the script. + * + * @param units - Units to get the calculation for + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return void + */ + public async buy( + units: number, + timestamp?: number, + blockNumber?: number + ): Promise { + const amount_price_entrypoint = 1; + + if (this.script && this.sender !== undefined) { + let simulation = new SaleJS( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {context: [units], timestamp, blockNumber}, + amount_price_entrypoint + ); + const maxUnits = result_[result_.length - 2]; + const price = result_[result_.length - 1]; + const Value_ = (maxUnits.mul(price)).div(eighteenZeros); + + if (Value_.lte(this.erc20s[this.reserveAddress].balanceOf[this.sender])) { + if (this.token.balanceOf[this.address].gte(maxUnits)) { + + this.reserve.balanceOf[this.address] = this.reserve.balanceOf[this.address].add(Value_); + this.token.balanceOf[this.address] = this.token.balanceOf[this.address].sub(maxUnits); + + this.erc20s[this.reserveAddress].balanceOf[this.address] = + this.erc20s[this.reserveAddress].balanceOf[this.address] + .add(Value_); + + this.erc20s[this.tokenAddress].balanceOf[this.address] = + this.erc20s[this.tokenAddress].balanceOf[this.address] + .sub(maxUnits); + + this.erc20s[this.reserveAddress].balanceOf[this.sender] = + this.erc20s[this.reserveAddress].balanceOf[this.sender] + .sub(Value_); + + this.erc20s[this.tokenAddress].balanceOf[this.sender] = + this.erc20s[this.tokenAddress].balanceOf[this.sender] + ? this.erc20s[this.tokenAddress].balanceOf[this.sender].add(maxUnits) + : maxUnits; + + this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; + this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; + + } + else { + this.reserve.balanceOf[this.address] = + this.reserve.balanceOf[this.address] + .add((this.token.balanceOf[this.address].mul(price)).div(eighteenZeros)); + + this.erc20s[this.tokenAddress].balanceOf[this.sender] = + this.erc20s[this.tokenAddress].balanceOf[this.sender] + ? this.erc20s[this.tokenAddress].balanceOf[this.sender] + .add(this.erc20s[this.tokenAddress].balanceOf[this.sender]) + : this.token.balanceOf[this.address]; + + this.erc20s[this.reserveAddress].balanceOf[this.sender] = + this.erc20s[this.reserveAddress].balanceOf[this.sender] + .sub((this.erc20s[this.tokenAddress].balanceOf[this.sender].mul(price)).div(eighteenZeros)); + + this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; + this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; + + this.token.balanceOf[this.address] = ethers.constants.Zero; + + this.erc20s[this.tokenAddress].balanceOf[this.address] = ethers.constants.Zero; + this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address]; + } + } + else throw new Error("insufficient balance") + } + else throw new Error("no script or sender to perform the buy") + } +} + + +/** + * @public + * A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. + * + * @remark + * this class is compatible with @see erc20 interface and @see itiers interface with using its address + */ +export class EmissionSmiulation extends vmSimulation { + + /** + * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender: string; + + /** + * The current totalSupply of the emissions token which can increase everytime a successful mint happens + */ + public totalSupply: BigNumber = ethers.constants.Zero; + + /** + * The decimals value of the emissions token which is 18 + */ + public readonly decimals: number = 18 + + /** + * The report of each claimant which is compatible and can be stored in @see itiers interface as well + */ + public report: {[wallet: string]: BigNumber} = {}; + + /** + * The balance of emission token holders which is compatible with @see erc20 interface + */ + public balanceOf: {[wallet: string]: BigNumber} = {}; + + /** + * Constructor of this class + * + * @param address - this EmissionsERC20 class adress which needs to be a string number or hex string + * @param sender - the sender which needs to be string number or hex string + * @param reports - the reports of claimants + * @param balances - the balances of token holders + * @param initialSupply - (optional) emissions token initial supply for the sender + */ + constructor ( + address: string, + sender: string, + reports: {[wallet: string]: BigNumber} = {}, + balances: {[wallet: string]: BigNumber} = {}, + initialSupply: BigNumber = ethers.constants.Zero, + ) { + super(); + this.address = toAddress(address); + this.sender = toAddress(sender); + this.report = reports; + this.balanceOf = balances; + this.totalSupply = initialSupply; + if (initialSupply.gt(0)) { + if (this.erc20s[this.address] === undefined) { + this.erc20s[this.address] = { + totalSupply: this.totalSupply, + decimals: 18, + balanceOf: {[this.sender]: BigNumber.from(initialSupply)} + } + } + if ( + this.erc20s[this.address].balanceOf[this.sender] === undefined || + this.erc20s[this.address].balanceOf[this.sender].isZero() + ) { + this.erc20s[this.address].balanceOf[this.sender] = BigNumber.from(initialSupply) + } + if (this.balanceOf[this.sender] === undefined) { + this.balanceOf[this.sender] = BigNumber.from(initialSupply) + } + else throw new Error("undefined sender") + } + } + + /** + * Method to calculate the cliamable amount for the claimant by running the script by JSVM + * + * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return A BigNumber that represents the claimable amount + */ + public async calculateClaim( + claimantAccount: string, + timestamp?: number, + blockNumber?: number + ) : Promise { + const entrypoint = 0; + const _claimantAccount = toAddress(claimantAccount) + + if (this.script !== undefined) { + if (this.report[_claimantAccount] === undefined) { + this.report[_claimantAccount] = ethers.constants.Zero; + } + let simulation = new EmissionsERC20JS( + this.script, + {applyOpFn: this.OpFns} + ); + let claimUnits = await simulation.run( + {context: [_claimantAccount], timestamp, blockNumber}, + entrypoint + ); + return claimUnits[0] + } + else throw new Error("no script or sender to execute calculateClaim"); + } + + /** + * The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM + * + * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return the minted amount in a BigNumber format + */ + public async claim ( + claimantAccount: string, + timestamp?: number, + blockNumber?: number + ) : Promise { + const entrypoint = 0; + const _claimantAccount = toAddress(claimantAccount) + + if (this.script !== undefined) { + if (this.report[_claimantAccount] === undefined) { + this.report[_claimantAccount] = ethers.constants.Zero; + } + + if (this.balanceOf[_claimantAccount] === undefined) { + this.balanceOf[_claimantAccount] = ethers.constants.Zero; + } + + if (this.erc20s[this.address].balanceOf[_claimantAccount] === undefined) { + this.erc20s[this.address].balanceOf[_claimantAccount] = ethers.constants.Zero; + } + + let simulation = new EmissionsERC20JS( + this.script, + {applyOpFn: this.OpFns} + ); + let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp()! : timestamp!).repeat(8))) + let mintUnits = await simulation.run( + {context: [_claimantAccount], timestamp, blockNumber}, + entrypoint + ); + + if (mintUnits[0].gt(ethers.constants.Zero)) { + this.totalSupply = this.totalSupply.add(mintUnits[0]); + this.balanceOf[_claimantAccount] = this.balanceOf[_claimantAccount].add(mintUnits[0]); + this.report[_claimantAccount] = newReport; + this.erc20s[this.address].balanceOf[_claimantAccount] = + this.erc20s[this.address].balanceOf[_claimantAccount].add(mintUnits[0]); + } + + return mintUnits[0]; + } + throw new Error("no script to execute") + } +} + + +/** + * @public + * A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. + * + * @remark + * this class is compatible with @see itiers interface with using its address + */ +export class CombinetierSimulation extends vmSimulation { + + /** + * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * The report of each account which is compatible and can be stored in @see itiers interface as well + */ + public report: {[wallet: string]: BigNumber} = {}; + + /** + * Constructor of this class + * + * @param address - this CombineTier class adress which needs to be a string number or hex string + * @param reports - (optional) the initial reports object + */ + constructor (address: string, reports?: {[wallet: string]: BigNumber}) { + super(); + this.address = address; + if (reports !== undefined) { + this.report = reports; + } + } + + /** + * Method to get the report for an account which then will be stored in the class's report property and can be + * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of + * the account it is been called for + * + * @param account - the account to get and update the report for which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns the report of the account in a 64 char length hex string + */ + public async setReport( + account: string, + timestamp?: number, + blockNumber?: number + ): Promise { + const entrypoint = 0; + const _account = toAddress(account) + + if (this.script !== undefined) { + let simulation = new CombineTierJS( + this.script, + {applyOpFn: this.OpFns} + ); + const newReport = (await simulation.run( + {context: [_account], timestamp, blockNumber}, + entrypoint + ))[0]; + this.report[_account] = newReport; + + return paddedUInt256(newReport); + } + else throw new Error("no script to execute") + } +} + + +/** + * @public + * A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. + * or to be used to perform off-chain matchmaking based on. + */ +export class OrderbookSimulation extends vmSimulation { + + /** + * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender: string; + + /** + * The property that stores all the data of the class's vaults @see vault + */ + public vaults: vaults = {}; + + /** + * The property that stores all the data of the class's orders, @see orders and @see order + */ + public orders: orders = {}; + + /** + * The property that stores all the data of an order's total cleared amount, @see clearedFunds + */ + public clearedFunds: clearedFunds = {}; + + /** + * The property that stores all the data of an order's total cleared amount to a specific counterparty address + * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds + */ + public clearedCounterPartyFunds: clearedCounterPartyFunds = {}; + + /** + * Constructor of this class + * + * @param address - this Orderbook's class adress which needs to be a string number or hex string + * @param sender - the sender which needs to be string number or hex string + * @param vaults - (optinal) the initial vaults object (vaults storage) + * @param orders - (optional) the initial orders + */ + constructor(address: string, sender: string, vaults?: vaults, orders?: orders) { + super(); + this.address = toAddress(address); + this.sender = toAddress(sender); + if (vaults !== undefined) { + this.vaults = vaults; + } + if (orders !== undefined) { + this.orders = orders; + } + } + + /** + * Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. @see ApplyOpFn and @see OpcodeFN + */ + protected OpFns: ApplyOpFn = { + + ...this.OpFns, + + [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: + (state: StateJS, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ !== undefined) { + const orderHash = paddedUInt256(item_); + if (this.clearedFunds[orderHash] !== undefined) { + state.stack.push(this.clearedFunds[orderHash]); + } + else throw new Error("no record of cleared funds for this orderHash") + } + else throw new Error("undefined stack value") + }, + [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: + (state: StateJS, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const orderHash = paddedUInt256(item1_); + const counterParty = paddedUInt160(item2_); + if (this.clearedCounterPartyFunds[orderHash][counterParty] !== undefined) { + state.stack.push(this.clearedCounterPartyFunds[orderHash][counterParty]) + } + else throw new Error("no record of cleared funds for this orderHash's counterparty") + } + else throw new Error("undefined stack values") + } + }; + + /** + * Method to submit an order into the class orders + * + * @param order - the order to add + * @return void + */ + public addOrder(order: order): void { + this.orders[order.orderHash] = order; + + if (this.vaults[order.owner] === undefined) { + this.vaults[order.owner] = { + [order.inputToken]: { + vaultId: { + [order.inputVaultId]: ethers.constants.Zero + } + }, + [order.outputToken]: { + vaultId: { + [order.outputVaultId]: ethers.constants.Zero + } + } + } + } + if (this.vaults[order.owner][order.inputToken] === undefined) { + this.vaults[order.owner][order.inputToken] = { + vaultId: { + [order.inputVaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[order.owner][order.outputToken] === undefined) { + this.vaults[order.owner][order.outputToken] = { + vaultId: { + [order.outputVaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] === undefined) { + this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] = ethers.constants.Zero; + } + if (this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] === undefined) { + this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] = ethers.constants.Zero + } + } + + + /** + * Method to remove an order from the class's orders + * + * @param order - the order to remove + * @return void + */ + public removeOrder(order: order | string): void { + if (typeof order === "string") { + delete(this.orders[order]) + } + else { + delete(this.orders[order.orderHash]) + } + } + + /** + * Method to dposit some units of token of tokenAddress into the vaultId of the sender + * + * @param sender - sender that deposit is done for + * @param tokenAddress - the address of the token + * @param vaultId - the vault ID to deposit + * @param units - amount of token to deposit + * @param tokenDecimals - (optional) decimals of the token, 18 will be used as default + * + * @return void + */ + public deposit ( + sender: string, + tokenAddress: string, + vaultId: string, + units: number, + tokenDecimals: number = 18 + ): void { + const _sender = toAddress(sender); + const units_ = parseUnits( + units.toString(), + tokenDecimals + ); + if (this.erc20s[tokenAddress].balanceOf[_sender]) { + if (this.erc20s[tokenAddress].balanceOf[_sender].gte(units_)) { + this.erc20s[tokenAddress].balanceOf[_sender] = + this.erc20s[tokenAddress].balanceOf[_sender].sub(units_) + } + else throw new Error("insufficient balance") + } + if (this.erc20s[tokenAddress].balanceOf[this.address]) { + this.erc20s[tokenAddress].balanceOf[this.address] = + this.erc20s[tokenAddress].balanceOf[this.address].add(units_) + } + else { + this.erc20s[tokenAddress] = { + balanceOf: { + [this.address]: units_ + }, + decimals: tokenDecimals, + totalSupply: units_ + } + } + if (this.vaults[_sender] === undefined) { + this.vaults[_sender] = { + [tokenAddress]: { + vaultId: { + [vaultId]: ethers.constants.Zero + } + } + } + } + if (this.vaults[_sender][tokenAddress] === undefined) { + this.vaults[_sender][tokenAddress] = { + vaultId: { + [vaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { + this.vaults[_sender][tokenAddress].vaultId[vaultId] = ethers.constants.Zero; + } + this.vaults[_sender][tokenAddress].vaultId[vaultId] = + this.vaults[_sender][tokenAddress].vaultId[vaultId].add(units_); + } + + /** + * Method to withdraw some units of token of tokenAddress from VaultId of the sender + * + * @param sender - sender that withdraw is done for + * @param tokenAddress - the address of the token + * @param vaultId - the vault ID to withdraw + * @param units - amount of token to withdraw + * + * @return void + */ + public withdraw ( + sender: string, + tokenAddress: string, + vaultId: string, + units: number, + tokenDecimals: number = 18 + ): void { + const _sender = toAddress(sender); + + if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { + throw new Error("this vault doesnt not exist") + } + else { + const units_ = parseUnits(units.toString(), tokenDecimals); + if (this.erc20s[tokenAddress].balanceOf[_sender]) { + this.erc20s[tokenAddress].balanceOf[_sender] = + this.erc20s[tokenAddress].balanceOf[_sender].add(units_) + } + if (this.erc20s[tokenAddress].balanceOf[this.address]) { + if (this.erc20s[tokenAddress].balanceOf[this.address].gte(units_)) { + this.erc20s[tokenAddress].balanceOf[this.address] = + this.erc20s[tokenAddress].balanceOf[this.address].sub(units_) + } + else this.erc20s[tokenAddress].balanceOf[this.address] = ethers.constants.Zero + } + + this.vaults[_sender][tokenAddress].vaultId[vaultId] = + this.vaults[_sender][tokenAddress].vaultId[vaultId].gte(units_) + ? this.vaults[_sender][tokenAddress].vaultId[vaultId].sub(units_) + : ethers.constants.Zero + } + } + + /** + * Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class + * + * @param a - order A to clear + * @param b - order B to clear + * @param bountyConfig - the BountyConfig type to collect bounties of this clear + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return void + */ + public async clear ( + a: order, + b: order, + bountyConfig: bountyConfig, + timestamp?: number, + blockNumber?: number + ): Promise { + if (a.vmConfig && b.vmConfig && this.sender !== undefined) { + const entrypoint = 0; + const aJS = new OrderbookJS(a.vmConfig, {applyOpFn: this.OpFns}); + const bJS = new OrderbookJS(b.vmConfig, {applyOpFn: this.OpFns}); + + const aResult_ = await aJS.run( + {context: [a.orderHash, b.owner], timestamp, blockNumber}, + entrypoint + ); + const bResult_ = await bJS.run( + {context: [b.orderHash, a.owner], timestamp, blockNumber}, + entrypoint + ); + + const aOutputMax = aResult_[aResult_.length - 2]; + const bOutputMax = bResult_[bResult_.length - 2]; + const aPrice = aResult_[aResult_.length - 1]; + const bPrice = bResult_[bResult_.length - 1]; + + const aStateChangeOutput = aOutputMax.gt((bOutputMax.mul(bPrice)).div(eighteenZeros)) + ? (bOutputMax.mul(bPrice)).div(eighteenZeros) + : aOutputMax; + const bStateChangeOutput = bOutputMax.gt((aOutputMax.mul(aPrice)).div(eighteenZeros)) + ? (aOutputMax.mul(aPrice)).div(eighteenZeros) + : bOutputMax; + + if (!aStateChangeOutput.isZero() || !bStateChangeOutput.isZero()) { + + const aStateChangeInput = (aStateChangeOutput.mul(aPrice)).div(eighteenZeros); + const bStateChangeInput = (bStateChangeOutput.mul(bPrice)).div(eighteenZeros); + + if (!aStateChangeOutput.sub(bStateChangeInput).isNegative() && !bStateChangeOutput.sub(aStateChangeInput).isNegative()) { + + if (this.vaults[this.sender] === undefined) { + this.vaults[this.sender] = { + [a.outputToken]: { + vaultId: { + [bountyConfig.aVaultId]: ethers.constants.Zero + } + }, + [b.outputToken]: { + vaultId: { + [bountyConfig.bVaultId]: ethers.constants.Zero + } + }, + } + } + + if (this.vaults[this.sender][a.outputToken] === undefined) { + this.vaults[this.sender][a.outputToken] = { + vaultId: { + [bountyConfig.aVaultId]: ethers.constants.Zero + } + } + } + + if (this.vaults[this.sender][b.outputToken] === undefined) { + this.vaults[this.sender][b.outputToken] = { + vaultId: { + [bountyConfig.bVaultId]: ethers.constants.Zero + } + } + } + + if (this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] === undefined) { + this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = ethers.constants.Zero + } + + if (this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] === undefined) { + this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = ethers.constants.Zero + } + + if(this.clearedFunds[a.orderHash] === undefined) { + this.clearedFunds[a.orderHash] = ethers.constants.Zero + } + + if(this.clearedFunds[b.orderHash] === undefined) { + this.clearedFunds[b.orderHash] = ethers.constants.Zero + } + + if(this.clearedCounterPartyFunds[a.orderHash] === undefined) { + this.clearedCounterPartyFunds[a.orderHash] = { + [b.owner]: ethers.constants.Zero + } + } + + if(this.clearedCounterPartyFunds[b.orderHash] === undefined) { + this.clearedCounterPartyFunds[b.orderHash] = { + [a.owner]: ethers.constants.Zero + } + } + + this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = + this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] + .add(aStateChangeOutput.sub(bStateChangeInput)); + + this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = + this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] + .add(bStateChangeOutput.sub(aStateChangeInput)); + + this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId] = + this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].gte(aStateChangeOutput) + ? this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].sub(aStateChangeOutput) + : ethers.constants.Zero; + + this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId] = + this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].gte(bStateChangeOutput) + ? this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].sub(bStateChangeOutput) + : ethers.constants.Zero; + + this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId] = + this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId].add(aStateChangeInput); + + this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId] = + this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId].add(bStateChangeInput); + + this.clearedCounterPartyFunds[a.orderHash][b.owner] = + this.clearedCounterPartyFunds[a.orderHash][b.owner].add(aStateChangeOutput); + + this.clearedCounterPartyFunds[b.orderHash][a.owner] = + this.clearedCounterPartyFunds[b.orderHash][a.owner].add(bStateChangeOutput); + + console.log(` + ******************************************************************** + + Order ${"0x" + a.orderHash.substring(2).padStart(40, "0")} + Successfully Cleared Agaisnt + Order ${"0x" + b.orderHash.substring(2).padStart(40, "0")} + + ******************************************************************** + `); + + } + else console.log("negative clear not possible") + } + } + else console.log("one or more orders have no script"); + } + +} \ No newline at end of file diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 9daa9de..639b024 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -529,21 +529,57 @@ export class VM { amountConfig: StateConfig, priceConfig: StateConfig ): StateConfig { - let _stackOpcodeModify = arrayify(priceConfig.sources[0], { - allowMissingPrefix: true, - }); - for (let i = 0; i < _stackOpcodeModify.length; i++) { - if (_stackOpcodeModify[i] === 1) { - _stackOpcodeModify[i + 1]++; + for (let i = 0; i < priceConfig.sources.length; i++) { + let _stackOpcodeModify = arrayify( + priceConfig.sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < _stackOpcodeModify.length; j++) { + if (_stackOpcodeModify[j] === 1) { + _stackOpcodeModify[j + 1]++; + } + j++; } - i++; + priceConfig.sources[i] = _stackOpcodeModify; } - priceConfig.sources[0] = _stackOpcodeModify; - return VM.combiner(amountConfig, priceConfig); } + /** + * A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. + * + * @param configs - An array of StateConfigs to combine together and its lengths should be more than 2 + * (can use VM.pair() method for combining 2 configs - @see pair) + * + * @returns a @see StateConfig + */ + public static multi(configs: StateConfig[]) : StateConfig { + + if (configs.length > 2) { + let _result: StateConfig = configs[0]; + + for (let i = 1; i < configs.length; i++) { + for (let j = 0; j < configs[i].sources.length; j++) { + let _stackOpcodeModify = arrayify( + configs[i].sources[j], + {allowMissingPrefix: true} + ); + for (let k = 0; k < _stackOpcodeModify.length; k++) { + if (_stackOpcodeModify[k] === 1) { + _stackOpcodeModify[k + 1] = _stackOpcodeModify[k + 1] + i; + } + k++; + } + configs[i].sources[j] = _stackOpcodeModify; + } + _result = VM.combiner(_result, configs[i]) + } + return _result; + } + else throw new Error("not a valid argument") + } + /** * Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final * result will be determined by the main VM script and if it fails it will be 0 by default. @@ -561,7 +597,7 @@ export class VM { * * @returns a VM script. @see StateConfig */ - public static toOwnerMaker( + public static makeOwnership( config: StateConfig, ownerAddress: string, options?: { @@ -573,12 +609,16 @@ export class VM { let _result: StateConfig; const Index = options?.index ? options.index : 0; - const MAKE_OWNER = (i: any) => - concat([ - op(VM.Opcodes.CONSTANT, i), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.EQUAL_TO), - ]); + const MAKE_OWNER = { + constants: [ownerAddress], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.EQUAL_TO), + ]) + ] + } if (options?.notOwnerVar && typeof options.notOwnerVar === 'object') { _result = this.combiner(config, options.notOwnerVar, { @@ -605,10 +645,7 @@ export class VM { } _result = this.combiner( - { - constants: [ownerAddress], - sources: [MAKE_OWNER(0)], - }, + MAKE_OWNER, _result, { index: Index } ); diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index fdba5e0..faabc62 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -29,7 +29,14 @@ export enum EmissionsERC20Context { */ ClaimantAccount, /** - * length of EmissionsERC20's valid context opcodes + * 1 or the index of the context array in the emissioinsERC20 + * contract used as the operand for CONTEXT opcode. + * operand for CONTEXT opcode to stack the tier that reportTimeForTier is being call for. + * The tier (between 1 to 8) used for tierTimeForTier and it has no use for "ITIERV2_REPORT" opcode + */ + Tier, + /** + * length of EmissionsERC20's valid context opcodes - 2 */ length, } @@ -40,7 +47,7 @@ export enum EmissionsERC20Context { */ export enum EmissionsERC20Storage { /** - * length of EmissionsERC20's valid storage opcodes + * length of EmissionsERC20's valid storage opcodes - 0 */ length, } diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index b221d38..0dc08b5 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -41,7 +41,7 @@ export enum SaleStorage { */ ReserveAddress, /** - * length of Sale's valid storage opcodes + * length of Sale's valid storage opcodes - 4 */ length }; @@ -58,7 +58,7 @@ export enum SaleContext { */ CurrentBuyUnits, /** - * length of Sale's valid context opcode + * length of Sale's valid context opcode - 1 */ length } diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index a4876e2..a6706fd 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -32,19 +32,64 @@ export class CombineTierGenerator { * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) */ constructor(reporter: string | StateConfig) { - if (typeof reporter == 'string') { - this.constants = [reporter]; - this.sources = [ + + let report_: StateConfig; + + const singleReport_ = { + constants: [ + paddedUInt256( + paddedUInt32('8') + + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + ), + "0" + ], + sources: [ concat([ - op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.THIS_ADDRESS), op(VM.Opcodes.CONTEXT, CombineTierContext.Account), op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), + op(VM.Opcodes.ADD, 8) ]), - ]; - } else { - this.constants = reporter.constants; - this.sources = reporter.sources; + concat([ + op(VM.Opcodes.CONTEXT, CombineTierContext.Tier), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.EAGER_IF) + ]) + ] + }; + + if (typeof reporter == 'string') { + report_ = { + constants: [reporter], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONTEXT, CombineTierContext.Account), + op(VM.Opcodes.ITIERV2_REPORT), + ]) + ] + } + } + else { + report_ = reporter; } + + report_ = VM.combiner(report_, singleReport_, {numberOfSources: 0}) + + this.constants = report_.constants; + this.sources = report_.sources; + } /** @@ -523,4 +568,4 @@ export class ERC20BalanceTier extends CombineTierGenerator { ]; super({constants, sources}); } -} +} \ No newline at end of file diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index c87d7f0..bbf7e34 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -211,7 +211,7 @@ export class LinearEmissions { op(VM.Opcodes.BLOCK_NUMBER), op( VM.Opcodes.SELECT_LTE, - selectLte(selectLteLogic.any, selectLteMode.max, 2) + selectLte(selectLteLogic.every, selectLteMode.max, 2) ), op(VM.Opcodes.SATURATING_DIFF), ]); diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 4815464..2fe530a 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -1,7 +1,7 @@ -import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; +import { BigNumberish, BytesLike } from 'ethers'; import { SaleContext, SaleStorage } from '../sale'; import { StateConfig, VM } from '../../classes/vm'; -import { parseUnits, concat, op, arrayify } from '../../utils'; +import { parseUnits, concat, op } from '../../utils'; /** * @public @@ -171,14 +171,14 @@ export class FixedPrice extends PriceCurve { * Constructs a new raw FixedPrice sale type to be used in a Sale contract. * * @param price - The constant price of the rTKN. - * @param erc20decimals - (optional) Number of decimals of the reserve asset (default value 18). + * @param reserveTokenDecimals - (optional) Number of decimals of the reserve asset (default value 18). * * @returns a VM StateConfig * */ - constructor(price: BigNumberish, erc20decimals: number = 18) { + constructor(price: number, reserveTokenDecimals: number = 18) { super({ - constants: [parseUnits(BigNumber.from(price).toString(), erc20decimals)], + constants: [parseUnits(price.toString(), reserveTokenDecimals)], sources: [concat([FixedPrice.FIXED_PRICE_SOURCES()])], }); } @@ -210,7 +210,7 @@ export class vLBP extends PriceCurve { * @param endTimestamp - End timestamp of the sale. * @param minimumRaise - Used for virtualizing the seed amount and calculating the assets' weights. * @param initialSupply - Used for calculating the assets' weights. - * @param erc20decimals - (optional) Number of decimals of the reserve asset. (default value 18) + * @param reserveTokenDecimals - (optional) Number of decimals of the reserve asset. (default value 18) * * @returns a VM StateConfig * @@ -221,7 +221,7 @@ export class vLBP extends PriceCurve { endTimestamp: number, minimumRaise: number, initialSupply: number, - erc20decimals: number = 18 + reserveTokenDecimals: number = 18 ) { let raiseDuration = endTimestamp - startTimestamp; let balanceReserve = minimumRaise * 5; @@ -229,7 +229,7 @@ export class vLBP extends PriceCurve { let weightChange = (initWeight - 1) / raiseDuration; super({ constants: [ - parseUnits(balanceReserve.toString(), erc20decimals), + parseUnits(balanceReserve.toString(), reserveTokenDecimals), parseUnits(initWeight.toString()), parseUnits(weightChange.toFixed(5).toString()), startTimestamp, @@ -279,7 +279,7 @@ export class IncreasingPrice extends PriceCurve { * @param endPrice - The ending price of the sale for rTKN. * @param startTimestamp - Start timestamp of the sale. * @param endTimestamp - End timestamp of the sale - * @param erc20decimals - (optional) Number of decimals of the reserve asset. (default value 18) + * @param reserveTokenDecimals - (optional) Number of decimals of the reserve asset. (default value 18) * * @returns a VM StateConfig * @@ -289,15 +289,15 @@ export class IncreasingPrice extends PriceCurve { endPrice: number, startTimestamp: number, endTimestamp: number, - erc20decimals: number = 18 + reserveTokenDecimals: number = 18 ) { let raiseDuration = endTimestamp - startTimestamp; let priceChange = (endPrice - startPrice) / raiseDuration; super({ constants: [ - parseUnits(startPrice.toString(), erc20decimals), - parseUnits(endPrice.toString(), erc20decimals), - parseUnits(priceChange.toFixed(5).toString()), + parseUnits(startPrice.toString(), reserveTokenDecimals), + parseUnits(endPrice.toString(), reserveTokenDecimals), + parseUnits(priceChange.toFixed(5).toString(), reserveTokenDecimals), startTimestamp, ], sources: [concat([IncreasingPrice.INC_PRICE_SOURCES()])], @@ -329,10 +329,8 @@ export class IncreasingPrice extends PriceCurve { * * @remarks - Like all the method calls, order of calling methods in this class is important in order to produce * the desired result, although calling in any order will produce a reliable result, that depends on what the - * intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. - * The general methods calling order in this class is: - * 1.applyExtarTime or afterMinimumRaise (one of which only) - * 2.applyOwner + * intention is. Methods afterMinimumRaise and applyExtratime should not be used together as they are opposite of + * eachother and will cancel eachother out. * * @example * ```typescript @@ -389,11 +387,11 @@ export class SaleDurationInTimestamp { public applyExtraTime( extraTime: number, extraTimeAmount: number, - erc20decimals: number = 18 + reserveTokenDecimals: number = 18 ): SaleDurationInTimestamp { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), - erc20decimals + reserveTokenDecimals ); const ExtraTime = extraTime * 60 + this.endTimestamp; @@ -421,52 +419,6 @@ export class SaleDurationInTimestamp { return this; } - /** - * Method to apply owner to the sale's canLive function. - * Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's - * canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. - * - * @remarks - applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get - * the desired result. - * - * @param ownerAddress - The address that will be the owner, only this wallet address can start or end a raise if this method is applied. - * - * @returns this - * - */ - public applyOwnership(ownerAddress: string): SaleDurationInTimestamp { - this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); - - let src = arrayify(this.sources[0], { allowMissingPrefix: true }); - src = src.slice(0, src.length - 2); - - let _top = src.slice(0, 6); - _top = concat([ - op(VM.Opcodes.CONSTANT, this.constants.length - 3), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.EQUAL_TO), - _top, - op(VM.Opcodes.EVERY, 2), - ]); - - let _bottom = src.slice(6); - _bottom = concat([ - op(VM.Opcodes.CONSTANT, this.constants.length - 3), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.EQUAL_TO), - op(VM.Opcodes.CONSTANT, this.constants.length - 2), - op(VM.Opcodes.CONSTANT, this.constants.length - 1), - op(VM.Opcodes.EAGER_IF), - _bottom, - op(VM.Opcodes.ANY, 2), - op(VM.Opcodes.EVERY, 2), - ]); - - this.sources = [concat([_top, _bottom])]; - - return this; - } - /** * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount * that needs to be raiseed so the raises status becomes "success" after raise ends. @@ -482,9 +434,9 @@ export class SaleDurationInTimestamp { */ public afterMinimumRaise( minimumRaise: number, - erc20decimals: number = 18 + reserveTokenDecimals: number = 18 ): SaleDurationInTimestamp { - const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); + const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); let _minimumRaise: StateConfig = { constants: [MinimumRaise], @@ -519,10 +471,8 @@ export class SaleDurationInTimestamp { * * @remarks - Like all the method calls, order of calling methods in this class is important in order to produce * the desired result, although calling in any order will produce a reliable result, that depends on what the - * intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. - * The general methods calling order in this class is: - * 1.applyExtarTime or afterMinimumRaise (one of which only) - * 2.applyOwner + * intention is. Methods afterMinimumRaise and applyExtratime should not be used together as they are opposite of + * eachother and will cancel eachother out. * * @example * ```typescript @@ -579,11 +529,11 @@ export class SaleDurationInBlocks { public applyExtraTime( extraTimeBlocks: number, extraTimeAmount: number, - erc20decimals: number = 18 + reserveTokenDecimals: number = 18 ): SaleDurationInBlocks { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), - erc20decimals + reserveTokenDecimals ); const ExtraTime = extraTimeBlocks + this.endBlockNumber; @@ -611,52 +561,6 @@ export class SaleDurationInBlocks { return this; } - /** - * Method to apply owner to the sale's canLive function. - * Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's - * canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. - * - * @remarks - applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get - * the desired result. - * - * @param ownerAddress - The address that will be the owner, only this wallet address can start or end a raise if this method is applied. - * - * @returns this - * - */ - public applyOwnership(ownerAddress: string): SaleDurationInBlocks { - this.constants.push(ownerAddress, 0, ethers.constants.MaxUint256); - - let src = arrayify(this.sources[0], { allowMissingPrefix: true }); - src = src.slice(0, src.length - 2); - - let _top = src.slice(0, 6); - _top = concat([ - op(VM.Opcodes.CONSTANT, this.constants.length - 3), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.EQUAL_TO), - _top, - op(VM.Opcodes.EVERY, 2), - ]); - - let _bottom = src.slice(6); - _bottom = concat([ - op(VM.Opcodes.CONSTANT, this.constants.length - 3), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.EQUAL_TO), - op(VM.Opcodes.CONSTANT, this.constants.length - 2), - op(VM.Opcodes.CONSTANT, this.constants.length - 1), - op(VM.Opcodes.EAGER_IF), - _bottom, - op(VM.Opcodes.ANY, 2), - op(VM.Opcodes.EVERY, 2), - ]); - - this.sources = [concat([_top, _bottom])]; - - return this; - } - /** * A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount * that needs to be raiseed so the raises status becomes "success" after raise ends. @@ -672,9 +576,9 @@ export class SaleDurationInBlocks { */ public afterMinimumRaise( minimumRaise: number, - erc20decimals: number = 18 + reserveTokenDecimals: number = 18 ): SaleDurationInBlocks { - const MinimumRaise = parseUnits(minimumRaise.toString(), erc20decimals); + const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); let _minimumRaise: StateConfig = { constants: [MinimumRaise], @@ -818,7 +722,9 @@ export class BuyCap { this.constants = maxCapConfig.constants; this.sources = maxCapConfig.sources; - } else { + + } + else { maxCapConfig = { constants: [parseUnits(options.maxWalletCap.toString()).add(1)], sources: [concat([op(VM.Opcodes.CONSTANT, 0), MAX_CAP_SOURCES()])], @@ -852,18 +758,21 @@ export class BuyCap { { tierActivation: options.tierActivation } ); - bothCapConfig = VM.combiner(bothCapConfig, { - constants: [1, parseUnits(options.minWalletCap.toString()).sub(1)], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.ADD, 2), - MAX_CAP_SOURCES(), - MIN_CAP_SOURCES(1), - op(VM.Opcodes.EVERY, 2), - ]), - ], - }); + bothCapConfig = VM.combiner( + bothCapConfig, + { + constants: [1, parseUnits(options.minWalletCap.toString()).sub(1)], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.ADD, 2), + MAX_CAP_SOURCES(), + MIN_CAP_SOURCES(1), + op(VM.Opcodes.EVERY, 2), + ]) + ] + } + ); bothCapConfig = VM.combiner(bothCapConfig, this); @@ -874,7 +783,9 @@ export class BuyCap { this.constants = bothCapConfig.constants; this.sources = bothCapConfig.sources; - } else { + + } + else { bothCapConfig = { constants: [ parseUnits(options.maxWalletCap.toString()).add(1), @@ -914,7 +825,7 @@ export class BuyCap { * const saleConfig = new SaleConfigBuilder(new FixedPrice, new CanLiveInTimestamp) * ``` */ -export class SaleScriptFrom { +export class SaleVmFrom { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index aa107d8..21c864e 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -33,7 +33,14 @@ export enum CombineTierContext { */ Account, /** - * length of CombineTier's valid context opcodes + * 1 or the index of the context array in the combineTier + * contract used as the operand for CONTEXT opcode. + * operand for CONTEXT opcode to stack the tier that reportTimeForTier is being call for. + * The tier (between 1 to 8) used for tierTimeForTier and it has no use for "ITIERV2_REPORT" opcode + */ + Tier, + /** + * length of CombineTier's valid context opcodes - 2 */ length, } @@ -44,7 +51,7 @@ export enum CombineTierContext { */ export enum CombineTierStorage { /** - * length of CombineTier's valid storage opcodes + * length of CombineTier's valid storage opcodes - 0 */ length, } diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index f663bc7..7f9ff85 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -8,7 +8,6 @@ import { deployErc1155, zeroAddress, } from './utils'; - import { VM, AddressBook, @@ -29,6 +28,7 @@ import { } from '../src'; const { op } = utils; + /** * Addresses saved that are in SDK BookAddresses deployed to Hardhat network. * **These addresses are deterministically generated with the HH signers.** diff --git a/test/2_sale.test.ts b/test/2_sale.test.ts index cbf91e8..7ac192e 100644 --- a/test/2_sale.test.ts +++ b/test/2_sale.test.ts @@ -17,7 +17,7 @@ import { CombineTier, SaleDurationInTimestamp, SaleDurationInBlocks, - SaleScriptFrom, + SaleVmFrom, BuyCap, } from '../src'; import { BigNumber } from 'ethers'; @@ -56,7 +56,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { - vmStateConfig: new SaleScriptFrom( + vmStateConfig: new SaleVmFrom( new SaleDurationInBlocks(startBlock, startBlock + saleDuration), new BuyCap(), { sources, constants } @@ -107,7 +107,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { - vmStateConfig: new SaleScriptFrom( + vmStateConfig: new SaleVmFrom( new SaleDurationInBlocks(startBlock, endBlock), new BuyCap(), { sources, constants } @@ -181,7 +181,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { - vmStateConfig: new SaleScriptFrom( + vmStateConfig: new SaleVmFrom( new SaleDurationInTimestamp(startTimestamp, endTimestamp), new BuyCap(), { sources, constants } @@ -255,7 +255,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { - vmStateConfig: new SaleScriptFrom( + vmStateConfig: new SaleVmFrom( new SaleDurationInBlocks(startBlock, endBlock), new BuyCap(), { sources, constants } diff --git a/test/3_verify.test.ts b/test/3_verify.test.ts index d5287ec..d943566 100644 --- a/test/3_verify.test.ts +++ b/test/3_verify.test.ts @@ -1,9 +1,9 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; - import { Verify } from '../src'; import { Time } from './utils'; + describe('Verify', () => { it('should deploy a Verify child', async () => { const [signer] = await ethers.getSigners(); diff --git a/test/4_tiers.test.ts b/test/4_tiers.test.ts index 0b715d7..e3febc9 100644 --- a/test/4_tiers.test.ts +++ b/test/4_tiers.test.ts @@ -1,9 +1,9 @@ import { ethers } from 'hardhat'; import { expect } from 'chai'; import { expectAsyncError, chainId } from './utils'; - import { AddressBook, Verify, VerifyTier, CombineTier } from '../src'; + describe('SDK - VerifyTier', () => { it('should deploy an VerifyTier child', async () => { const [deployer, signer] = await ethers.getSigners(); diff --git a/test/5_escrow.test.ts b/test/5_escrow.test.ts index fbcc244..aa4f1f2 100644 --- a/test/5_escrow.test.ts +++ b/test/5_escrow.test.ts @@ -1,7 +1,8 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; - +import type { DepositEvent } from '../src/typechain/RedeemableERC20ClaimEscrow'; +import { RedeemableERC20ClaimEscrow__factory } from '../src/typechain/factories/RedeemableERC20ClaimEscrow__factory'; import { ONE, Time, @@ -13,7 +14,6 @@ import { SaleStatus, getEventArgs, } from './utils'; - import { FixedPrice, RedeemableERC20ClaimEscrow, @@ -22,12 +22,12 @@ import { SaleDurationInBlocks, AddressBook, ERC20, - SaleScriptFrom, + SaleVmFrom, BuyCap, } from '../src'; -import { RedeemableERC20ClaimEscrow__factory } from '../src/typechain/factories/RedeemableERC20ClaimEscrow__factory'; -import type { DepositEvent } from '../src/typechain/RedeemableERC20ClaimEscrow'; + + const EscrowInterface = RedeemableERC20ClaimEscrow__factory.createInterface(); /** @@ -65,10 +65,10 @@ const deploySale = async ( // All configs calculated outside of deploy method const saleConfig = { - vmStateConfig: new SaleScriptFrom( + vmStateConfig: new SaleVmFrom( new SaleDurationInBlocks(startBlock, endBlock), new BuyCap(), - new FixedPrice('75', 6), + new FixedPrice(75, 6), ), // canStartStateConfig: new SaleDurationInBlocks(startBlock), // canEndStateConfig: new SaleDurationInBlocks(endBlock), diff --git a/test/7_RainJS.test.ts b/test/7_RainJS.test.ts index e457ff4..dce1fbd 100644 --- a/test/7_RainJS.test.ts +++ b/test/7_RainJS.test.ts @@ -1,7 +1,7 @@ import { assert } from 'chai'; import { ethers } from 'hardhat'; import { BigNumber } from 'ethers'; -import { expectAsyncError, Tier, Time } from './utils'; +import { expectAsyncError, ONE, Tier, Time } from './utils'; import { StateConfig, RainJS, OpcodeFN, ApplyOpFn, VM } from '../src'; import { op, @@ -45,11 +45,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from(111 + 111 + (1 + 2 + 3)); assert( - expected.eq(result), + expected.eq(result[0]), ` The addition operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -135,7 +135,7 @@ describe('SDK - RainJS', () => { ); assert( - expected.eq(result), + expected.eq(result[0]), ` zipmap operation failed: expected: ${expected} @@ -169,11 +169,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from(block + (1 + 2 + 3)); assert( - expected.eq(result), + expected.eq(result[0]), ` The addition operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -205,11 +205,11 @@ describe('SDK - RainJS', () => { await Time.advanceBlock(1); assert( - expected.eq(result), + expected.eq(result[0]), ` The addition operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); } }); @@ -242,11 +242,11 @@ describe('SDK - RainJS', () => { await Time.advanceBlock(1); assert( - expected.eq(result), + expected.eq(result[0]), ` The subtraction operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); } }); @@ -276,11 +276,11 @@ describe('SDK - RainJS', () => { await Time.advanceBlock(1); assert( - expected.eq(result), + expected.eq(result[0]), ` The multiplication operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); } }); @@ -311,11 +311,11 @@ describe('SDK - RainJS', () => { await Time.advanceBlock(1); assert( - expected.eq(result), + expected.eq(result[0]), ` The division operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); } }); @@ -342,11 +342,11 @@ describe('SDK - RainJS', () => { const expected = ethers.constants.MaxUint256; assert( - expected.eq(result), + expected.eq(result[0]), ` The saturating add operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -372,11 +372,11 @@ describe('SDK - RainJS', () => { const expected = ethers.constants.MaxUint256; assert( - expected.eq(result), + expected.eq(result[0]), ` The saturating mul operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -399,11 +399,11 @@ describe('SDK - RainJS', () => { const expected = ethers.constants.Zero; assert( - expected.eq(result), + expected.eq(result[0]), ` The saturating sub operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -426,11 +426,11 @@ describe('SDK - RainJS', () => { const expected = ethers.constants.Two; assert( - expected.eq(result), + expected.eq(result[0]), ` The mod operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -453,17 +453,17 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('32'); assert( - expected.eq(result), + expected.eq(result[0]), ` The exponention operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); it('should perform scale18_mul operation correctly', async () => { const script: StateConfig = { - constants: ['0x22', '0x44'], + constants: ['0x22', BigNumber.from('0x44').mul(ONE)], sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), @@ -479,11 +479,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('0x22').mul('10000000000000').mul('0x44'); assert( - expected.eq(result), + expected.eq(result[0]), ` The scale18 mul operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -502,14 +502,14 @@ describe('SDK - RainJS', () => { const rainJs = new RainJS(script); const result = await rainJs.run(); - const expected = BigNumber.from('0x22').mul('100000000').div('0x44'); + const expected = BigNumber.from('0x22').mul('100000000').mul(ONE).div('0x44'); assert( - expected.eq(result), + expected.eq(result[0]), ` The scale18 div operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -527,11 +527,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('22000000000000000001'); assert( - expected.eq(result), + expected.eq(result[0]), ` The scale18 operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -547,11 +547,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('44371'); assert( - expected.eq(result), + expected.eq(result[0]), ` The scalen operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -569,11 +569,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('443711838001274368'); assert( - expected.eq(result), + expected.eq(result[0]), ` The scale_by operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -598,11 +598,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('10'); assert( - expected.eq(result), + expected.eq(result[0]), ` The min operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -628,11 +628,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('60'); assert( - expected.eq(result), + expected.eq(result[0]), ` The max operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -658,11 +658,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('30'); assert( - expected.eq(result), + expected.eq(result[0]), ` The eager_if operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -701,11 +701,11 @@ describe('SDK - RainJS', () => { const expected = BigNumber.from('30'); assert( - expected.eq(result), + expected.eq(result[0]), ` The operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -741,11 +741,11 @@ describe('SDK - RainJS', () => { ); assert( - expected.eq(result), + expected.eq(result[0]), ` The operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); @@ -788,11 +788,11 @@ describe('SDK - RainJS', () => { ); assert( - expected.eq(result), + expected.eq(result[0]), ` The operation failed: expected ${expected} - got ${result}` + got ${result[0]}` ); }); diff --git a/test/friendlySource.test.ts b/test/8_friendlySource.test.ts similarity index 99% rename from test/friendlySource.test.ts rename to test/8_friendlySource.test.ts index dfbec63..5e0dbfe 100644 --- a/test/friendlySource.test.ts +++ b/test/8_friendlySource.test.ts @@ -1,6 +1,5 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; - import { VM, HumanFriendlySource, @@ -25,6 +24,7 @@ import { deployErc1155, } from './utils'; + const { bytify, op, @@ -356,7 +356,7 @@ describe('Human Friendly Source Generator', () => { expect(friendly0).to.eq(`ZIPMAP( ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], - ["FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF"], + ["ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff"], EAGER_IF(ISZERO(^0), ^1, ^0) )`); }); @@ -1614,7 +1614,7 @@ describe('Human Friendly Source Generator', () => { // 2nd phase constants const ReserveBalance = parseUnits( - // Virtual reserve token balance + // Virtualizing reserve token balance as vLBP seed balance balanceReserve.toString(), reserveTokenDecimals ); @@ -1748,7 +1748,7 @@ describe('Human Friendly Source Generator', () => { expect(HumanFriendlySource.prettify(friendly)).to.be.equals(expectOutput); }); - it('should generate the friendly source with the correct context if the contract where is provided', async () => { + it('should generate the friendly source with the correct context if the contract type is provided', async () => { const [arbitrary] = await ethers.getSigners(); const ERC721Address = arbitrary.address; const fixedPrice = '20'; @@ -2163,14 +2163,14 @@ describe('Human Friendly Source Generator', () => { "00000008" ], [ - "FFFFFFFF", - "FFFFFFFF", - "FFFFFFFF", - "FFFFFFFF", - "FFFFFFFF", - "FFFFFFFF", - "FFFFFFFF", - "FFFFFFFF" + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff", + "ffffffff" ], EAGER_IF(ISZERO(^0),^1,^0) )`; diff --git a/test/utils.ts b/test/utils.ts index ddaa58a..e407d89 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -63,9 +63,7 @@ export interface Addresses { export const sixZeros = '000000'; export const eighteenZeros = '000000000000000000'; -export const max_uint256 = ethers.BigNumber.from( - '0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' -); +export const max_uint256 = ethers.constants.MaxUint256; export const RESERVE_ONE = ethers.BigNumber.from('1' + sixZeros); export const ONE = ethers.BigNumber.from('1' + eighteenZeros); From 608bcfba86f2f4030861a095fb64ddf8814a9ad9 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Wed, 6 Jul 2022 18:49:08 +0000 Subject: [PATCH 026/125] new template functions --- src/classes/vm.ts | 302 +++++++++++++++++- .../combineTierScriptGenerator.ts | 208 ++++++++++++ 2 files changed, 509 insertions(+), 1 deletion(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 639b024..cb0375a 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -999,4 +999,304 @@ export class VM { return _result; } else throw new Error('invalid number of times or configs arguments'); } -} + + /** + * Method to create a simple time based rule + * + * @param timestamp - the timestamp to set the rule for + * @param type - type of the check, meaning current timestamp to be gt, gte, lt, lte than the "timestamp" + * + * @returns A @see StateConfig + */ + public static beforeAfterTime( + timestamp: number, + type: "gt" | "lt" | "gte" | "lte" + ): StateConfig { + let src = new Uint8Array(); + + if (type === "gte") { + timestamp = timestamp == 0 ? 0 : timestamp - 1; + src = op(VM.Opcodes.GREATER_THAN) + } + if (type === "lte") { + timestamp++; + src = op(VM.Opcodes.LESS_THAN) + } + if (type === "lt") { + src = op(VM.Opcodes.GREATER_THAN) + } + if (type === "gt") { + src = op(VM.Opcodes.LESS_THAN) + } + + return { + constants: [timestamp], + sources: [ + concat([ + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + src + ]) + ] + }; + } + + + /** + * Method to create a simple block number based rule + * + * @param blockNumber - the block number to set the rule for + * @param type - type of the check, meaning current block number to be gt, gte, lt, lte than the "blockNumber" + * + * @returns A @see StateConfig + */ + public static beforeAfterBlock( + blockNumber: number, + type: "gt" | "lt" | "gte" | "lte" + ): StateConfig { + let src = new Uint8Array(); + + if (type === "gte") { + blockNumber = blockNumber == 0 ? 0 : blockNumber - 1; + src = op(VM.Opcodes.GREATER_THAN) + } + if (type === "lte") { + blockNumber++; + src = op(VM.Opcodes.LESS_THAN) + } + if (type === "lt") { + src = op(VM.Opcodes.GREATER_THAN) + } + if (type === "gt") { + src = op(VM.Opcodes.LESS_THAN) + } + + return { + constants: [blockNumber], + sources: [ + concat([ + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + src + ]) + ] + }; + } + + /** + * Method to multiply multiple scripts together + * + * @param configs - an array of configs to multiply + * + * @returns a @see StateConfig + */ + public static mulTogether(configs: StateConfig[]): StateConfig { + let result_ = VM.multi(configs) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.MUL, configs.length) + ]) + + return result_; + } + + /** + * Method to add multiple scripts together + * + * @param configs - an array of configs to add + * + * @returns a @see StateConfig + */ + public static addTogether(configs: StateConfig[]): StateConfig { + let result_ = VM.multi(configs) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.ADD, configs.length) + ]) + + return result_; + } + + /** + * Method to and multiple scripts together ie EVERY + * + * @param configs - an array of configs to and + * + * @returns a @see StateConfig + */ + public static and(configs: StateConfig[]): StateConfig { + let result_ = VM.multi(configs) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EVERY, configs.length) + ]) + + return result_; + } + + /** + * Method to or multiple scripts together ie ANY + * + * @param configs - an array of configs to or + * + * @returns a @see StateConfig + */ + public static or(configs: StateConfig[]): StateConfig { + let result_ = VM.multi(configs) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.ANY, configs.length) + ]) + + return result_; + } + + /** + * Method to create an if/else script + * + * @param condition - the condition script ie the if check statement + * @param ifStatement - the script(statement) if the check passes + * @param elseStatement - the script(statement) if the check fails + * + * @returns a @see StateConfig + */ + public static ifelse( + condition: StateConfig, + ifStatement: StateConfig, + elseStatement: StateConfig + ): StateConfig { + + let result_ = VM.multi([condition, ifStatement, elseStatement]) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EAGER_IF) + ]) + + return result_; + } + + /** + * Methdo to create a simple signle value script, ie CONTANT + * + * @param value - the value + * + * @returns a @see StateConfig + */ + public static constant(value: BigNumberish): StateConfig { + if (!(value instanceof BigNumber)) { + value = BigNumber.from(value); + } + + return { + constants: [value], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])] + }; + } + + /** + * Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not + * + * @param config - the script to check + * + * @returns a @see StateConfig + */ + public static isZero(config: StateConfig): StateConfig { + config.sources[0] = concat([ + config.sources[0], + op(VM.Opcodes.ISZERO) + ]) + + return config; + } + + /** + * Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not + * + * @param config1 - first script + * @param config2 - second script + * + * @returns a @see StateConfig + */ + public static isEqual(config1: StateConfig, config2: StateConfig): StateConfig { + let result_ = VM.pair(config1, config2); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EQUAL_TO) + ]) + + return result_; + } + + /** + * Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not + * + * @param config1 - first script + * @param config2 - second script + * + * @returns a @see StateConfig + */ + public static gt(config1: StateConfig, config2: StateConfig): StateConfig { + let result_ = VM.pair(config1, config2); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EQUAL_TO) + ]) + + return result_; + } + + /** + * Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not + * + * @param config1 - first script + * @param config2 - second script + * + * @returns a @see StateConfig + */ + public static lt(config1: StateConfig, config2: StateConfig): StateConfig { + let result_ = VM.pair(config1, config2); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EQUAL_TO) + ]) + + return result_; + } + + /** + * Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not + * + * @param config1 - first script + * @param config2 - second script + * + * @returns a @see StateConfig + */ + public static gte(config1: StateConfig, config2: StateConfig): StateConfig { + let result_ = VM.pair(config1, config2); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EQUAL_TO) + ]) + + return result_; + } + + /** + * Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not + * + * @param config1 - first script + * @param config2 - second script + * + * @returns a @see StateConfig + */ + public static lte(config1: StateConfig, config2: StateConfig): StateConfig { + let result_ = VM.pair(config1, config2); + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EQUAL_TO) + ]) + + return result_; + } + +} \ No newline at end of file diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index a6706fd..65ab843 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -22,6 +22,7 @@ import { * @example new CombineTier(a tierAddress or a StateConfig) */ export class CombineTierGenerator { + // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -568,4 +569,211 @@ export class ERC20BalanceTier extends CombineTierGenerator { ]; super({constants, sources}); } +} + +/** + * @public + * class to create a the vmStateConfig for CombineTier as BalanceTier. + * this will perform similar to ERC1155BalancTier witha certain toke ID + * + */ + export class ERC1155BalanceTier extends CombineTierGenerator { + + /** + * Constructor for ERC1155BalanceTier vmStateConfig + * + * @param tierValues - an array of 8 values for each tier values + * @param tokenId - ID of the token + * @param tokenAddress - the ERC1155 token address + */ + constructor ( + public readonly tierValues: (number | string)[], + public readonly tokenId: BigNumber, + public readonly tokenAddress: string, + ) { + const constants = [ + paddedUInt256( + paddedUInt32(tierValues[7].toString()) + + paddedUInt32(tierValues[6].toString()) + + paddedUInt32(tierValues[5].toString()) + + paddedUInt32(tierValues[4].toString()) + + paddedUInt32(tierValues[3].toString()) + + paddedUInt32(tierValues[2].toString()) + + paddedUInt32(tierValues[1].toString()) + + paddedUInt32(tierValues[0].toString()) + ), + tokenAddress, + tokenId, + paddedUInt256( + paddedUInt32('7') + + paddedUInt32('6') + + paddedUInt32('5') + + paddedUInt32('4') + + paddedUInt32('3') + + paddedUInt32('2') + + paddedUInt32('1') + + paddedUInt32('0') + ), + "0xffffffff", + "0", + "100000000" + ]; + const sources = [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), + op(VM.Opcodes.ADD, 8), + ]), + concat([ + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.IERC1155_BALANCE_OF), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.EXP, 2), + op(VM.Opcodes.MUL, 2), + ]) + ]; + super({constants, sources}); + } +} + +/** + * A class to generate the StateConfig out of EVM assets' opcodes + */ +export class AssetOp extends CombineTierGenerator { + + /** + * Constructor of this class + * + * @param type - the type of the asset script + * @param address - an array of address(es) of the asset(s) contract(s), only IERC20-Balance-of-Batch uses more than 1 address + * @param id - an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id + */ + constructor( + type: + "erc20-balance-of" | + "erc20-total-supply" | + "snapshot-balance-of" | + "snapshot-total-supply" | + "erc721-balance-of" | + "erc721-owner-of" | + "erc1155-balance-of" | + "erc1155-balance-of-batch", + address: string[], + id?: BigNumber[] + ) { + let script: StateConfig; + + if (type === "erc20-balance-of" && address[0]) { + script = { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC20_BALANCE_OF), + ]) + ] + } + } + else if (type === "erc20-total-supply" && address[0]) { + script = { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.IERC20_TOTAL_SUPPLY) + ]) + ] + } + } + else if (type === "snapshot-balance-of" && address[0] && id?.length) { + script = { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT) + ]) + ] + } + } + else if (type === "snapshot-total-supply" && address[0] && id?.length) { + script = { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT) + ]) + ] + } + } + else if (type === "erc721-balance-of" && address[0]) { + script = { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC721_BALANCE_OF) + ]) + ] + } + } + else if (type === "erc721-owner-of" && address[0] && id?.length) { + script = { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC721_OWNER_OF) + ]) + ] + } + } + else if (type === "erc1155-balance-of" && address[0] && id?.length) { + script = { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC1155_BALANCE_OF) + ]) + ] + } + } + else if (type === "erc1155-balance-of-batch" && address.length == id?.length) { + let i = 0; + let sources: Uint8Array[] = []; + for (i; i < address.length; i++) { + sources.push(op(VM.Opcodes.CONSTANT, i)) + }; + sources.push(op(VM.Opcodes.SENDER)); + for (i; i < address.length * 2; i++) { + sources.push(op(VM.Opcodes.CONSTANT, i)) + }; + script = { + constants: [...address, ...id], + sources + } + } + else throw new Error("not valid arguments for constructor") + super(script) + } + } \ No newline at end of file From f6a625a290a0f679722059bbc1d1201f8a10ec53 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Wed, 6 Jul 2022 18:50:14 +0000 Subject: [PATCH 027/125] Update vm.ts --- src/classes/vm.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index cb0375a..1d25737 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1015,7 +1015,7 @@ export class VM { let src = new Uint8Array(); if (type === "gte") { - timestamp = timestamp == 0 ? 0 : timestamp - 1; + timestamp = timestamp === 0 ? 0 : timestamp - 1; src = op(VM.Opcodes.GREATER_THAN) } if (type === "lte") { @@ -1057,7 +1057,7 @@ export class VM { let src = new Uint8Array(); if (type === "gte") { - blockNumber = blockNumber == 0 ? 0 : blockNumber - 1; + blockNumber = blockNumber === 0 ? 0 : blockNumber - 1; src = op(VM.Opcodes.GREATER_THAN) } if (type === "lte") { From 17e1c57d5974d2fba53f14cdd23c7af5513a42cf Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 7 Jul 2022 20:05:52 +0000 Subject: [PATCH 028/125] increasing-decreasing price template --- .../script-generators/saleScriptGenerator.ts | 53 +- src/typechain/ERC165Upgradeable.ts | 106 ++++ src/typechain/ERC721Upgradeable.ts | 537 ++++++++++++++++++ src/typechain/IERC165Upgradeable.ts | 95 ++++ src/typechain/IERC2981Upgradeable.ts | 141 +++++ src/typechain/IERC721MetadataUpgradeable.ts | 531 +++++++++++++++++ src/typechain/IERC721ReceiverUpgradeable.ts | 113 ++++ src/typechain/IERC721Upgradeable.ts | 480 ++++++++++++++++ src/typechain/OwnableUpgradeable.ts | 167 ++++++ .../factories/ERC165Upgradeable__factory.ts | 58 ++ .../factories/ERC721Upgradeable__factory.ts | 404 +++++++++++++ .../factories/IERC165Upgradeable__factory.ts | 45 ++ .../factories/IERC2981Upgradeable__factory.ts | 74 +++ .../IERC721MetadataUpgradeable__factory.ts | 360 ++++++++++++ .../IERC721ReceiverUpgradeable__factory.ts | 64 +++ .../factories/IERC721Upgradeable__factory.ts | 311 ++++++++++ .../factories/OwnableUpgradeable__factory.ts | 91 +++ src/typechain/hardhat.d.ts | 90 +++ src/typechain/index.ts | 24 +- 19 files changed, 3714 insertions(+), 30 deletions(-) create mode 100644 src/typechain/ERC165Upgradeable.ts create mode 100644 src/typechain/ERC721Upgradeable.ts create mode 100644 src/typechain/IERC165Upgradeable.ts create mode 100644 src/typechain/IERC2981Upgradeable.ts create mode 100644 src/typechain/IERC721MetadataUpgradeable.ts create mode 100644 src/typechain/IERC721ReceiverUpgradeable.ts create mode 100644 src/typechain/IERC721Upgradeable.ts create mode 100644 src/typechain/OwnableUpgradeable.ts create mode 100644 src/typechain/factories/ERC165Upgradeable__factory.ts create mode 100644 src/typechain/factories/ERC721Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC165Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC2981Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC721MetadataUpgradeable__factory.ts create mode 100644 src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts create mode 100644 src/typechain/factories/IERC721Upgradeable__factory.ts create mode 100644 src/typechain/factories/OwnableUpgradeable__factory.ts diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 2fe530a..16a9483 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -177,15 +177,10 @@ export class FixedPrice extends PriceCurve { * */ constructor(price: number, reserveTokenDecimals: number = 18) { - super({ - constants: [parseUnits(price.toString(), reserveTokenDecimals)], - sources: [concat([FixedPrice.FIXED_PRICE_SOURCES()])], - }); + super( + VM.constant(parseUnits((price).toString(), reserveTokenDecimals)) + ); } - - // fixed price script - public static FIXED_PRICE_SOURCES = () => - concat([op(VM.Opcodes.CONSTANT, 0)]); } /** @@ -261,25 +256,25 @@ export class vLBP extends PriceCurve { } /** - * @public - A sub-class of PriceCurve for creating an linear Increasing sale type. + * @public - A sub-class of PriceCurve for creating an linear Increasing or Decreasing sale type. * * @remarks - Price starts at 'startPrice' and goes to 'endPrice' over the span of the sale's duration. * * @example * ```typescript - * //For generating a Increasing Price sale type pass in the required arguments to the constructor. + * //For generating a Increasing/Decreasing Price sale type pass in the required arguments to the constructor. * const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTimestamp) * ``` */ -export class IncreasingPrice extends PriceCurve { +export class IncDecPrice extends PriceCurve { /** - * Constructs a new raw linear Increasing Price sale type to be used in a Sale contract. + * Constructs a new raw linear Increasing or Decreasing Price sale type to be used in a Sale contract. * * @param startPrice - The starting price of the sale for rTKN. * @param endPrice - The ending price of the sale for rTKN. * @param startTimestamp - Start timestamp of the sale. * @param endTimestamp - End timestamp of the sale - * @param reserveTokenDecimals - (optional) Number of decimals of the reserve asset. (default value 18) + * @param reserveTokenDecimals - (optional) decimals of the reserve asset. (default value 18) * * @returns a VM StateConfig * @@ -291,8 +286,11 @@ export class IncreasingPrice extends PriceCurve { endTimestamp: number, reserveTokenDecimals: number = 18 ) { + const isInc = endPrice >= startPrice ? true : false; let raiseDuration = endTimestamp - startTimestamp; - let priceChange = (endPrice - startPrice) / raiseDuration; + let priceChange = isInc + ? (endPrice - startPrice) / raiseDuration + : (startPrice - endPrice) / raiseDuration; super({ constants: [ parseUnits(startPrice.toString(), reserveTokenDecimals), @@ -300,12 +298,14 @@ export class IncreasingPrice extends PriceCurve { parseUnits(priceChange.toFixed(5).toString(), reserveTokenDecimals), startTimestamp, ], - sources: [concat([IncreasingPrice.INC_PRICE_SOURCES()])], + sources: [ + concat([IncDecPrice.INC_DEC_PRICE_SOURCES(isInc)]) + ], }); } - // linear increasing price script - public static INC_PRICE_SOURCES = () => + // linear increasing/decreasing price script + public static INC_DEC_PRICE_SOURCES = (isInc: boolean) => concat([ op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.CONSTANT, 3), @@ -313,10 +313,11 @@ export class IncreasingPrice extends PriceCurve { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.ADD, 2), + isInc ? op(VM.Opcodes.ADD, 2) : op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.MIN, 2), - ]); + ] + ); } /** @@ -338,7 +339,7 @@ export class IncreasingPrice extends PriceCurve { * const saleDuration = new SaleDuration(startTimestamp, endTimestamp) * ``` */ -export class SaleDurationInTimestamp { +export class BetweenTimestamps { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -388,7 +389,7 @@ export class SaleDurationInTimestamp { extraTime: number, extraTimeAmount: number, reserveTokenDecimals: number = 18 - ): SaleDurationInTimestamp { + ): this { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), reserveTokenDecimals @@ -435,7 +436,7 @@ export class SaleDurationInTimestamp { public afterMinimumRaise( minimumRaise: number, reserveTokenDecimals: number = 18 - ): SaleDurationInTimestamp { + ): this { const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); let _minimumRaise: StateConfig = { @@ -480,7 +481,7 @@ export class SaleDurationInTimestamp { * const saleDuration = new SaleDuration(startBlockNumber, endBlockNumber) * ``` */ -export class SaleDurationInBlocks { +export class BetweenBlocks { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -530,7 +531,7 @@ export class SaleDurationInBlocks { extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDecimals: number = 18 - ): SaleDurationInBlocks { + ): this { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), reserveTokenDecimals @@ -577,7 +578,7 @@ export class SaleDurationInBlocks { public afterMinimumRaise( minimumRaise: number, reserveTokenDecimals: number = 18 - ): SaleDurationInBlocks { + ): this { const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); let _minimumRaise: StateConfig = { @@ -839,7 +840,7 @@ export class SaleVmFrom { */ constructor( public readonly canLiveScript: - | SaleDurationInTimestamp + | BetweenTimestamps | SaleDurationInBlocks | StateConfig, public readonly buyCapScript: BuyCap | StateConfig, diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/ERC165Upgradeable.ts new file mode 100644 index 0000000..1846fc0 --- /dev/null +++ b/src/typechain/ERC165Upgradeable.ts @@ -0,0 +1,106 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface ERC165UpgradeableInterface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: { + "Initialized(uint8)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface ERC165Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC165UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + }; + + estimateGas: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/ERC721Upgradeable.ts b/src/typechain/ERC721Upgradeable.ts new file mode 100644 index 0000000..06721a3 --- /dev/null +++ b/src/typechain/ERC721Upgradeable.ts @@ -0,0 +1,537 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface ERC721UpgradeableInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "approve", + values: [string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [string, string, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Initialized(uint8)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + { owner: string; approved: string; tokenId: BigNumber } +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + { owner: string; operator: string; approved: boolean } +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + { from: string; to: string; tokenId: BigNumber } +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC721Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC721UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + Approval( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "Transfer(address,address,uint256)"( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + Transfer( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC165Upgradeable.ts b/src/typechain/IERC165Upgradeable.ts new file mode 100644 index 0000000..1e55fb4 --- /dev/null +++ b/src/typechain/IERC165Upgradeable.ts @@ -0,0 +1,95 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC165UpgradeableInterface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC165Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC165UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/IERC2981Upgradeable.ts b/src/typechain/IERC2981Upgradeable.ts new file mode 100644 index 0000000..b8e7e21 --- /dev/null +++ b/src/typechain/IERC2981Upgradeable.ts @@ -0,0 +1,141 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC2981UpgradeableInterface extends utils.Interface { + functions: { + "royaltyInfo(uint256,uint256)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "royaltyInfo", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "royaltyInfo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC2981Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC2981UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/IERC721MetadataUpgradeable.ts b/src/typechain/IERC721MetadataUpgradeable.ts new file mode 100644 index 0000000..1121973 --- /dev/null +++ b/src/typechain/IERC721MetadataUpgradeable.ts @@ -0,0 +1,531 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC721MetadataUpgradeableInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "approve", + values: [string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [string, string, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + { owner: string; approved: string; tokenId: BigNumber } +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + { owner: string; operator: string; approved: boolean } +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + { from: string; to: string; tokenId: BigNumber } +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC721MetadataUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721MetadataUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { operator: string }>; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + Approval( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + Transfer( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC721ReceiverUpgradeable.ts b/src/typechain/IERC721ReceiverUpgradeable.ts new file mode 100644 index 0000000..d9fb87d --- /dev/null +++ b/src/typechain/IERC721ReceiverUpgradeable.ts @@ -0,0 +1,113 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC721ReceiverUpgradeableInterface extends utils.Interface { + functions: { + "onERC721Received(address,address,uint256,bytes)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "onERC721Received", + values: [string, string, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC721ReceiverUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721ReceiverUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC721Upgradeable.ts b/src/typechain/IERC721Upgradeable.ts new file mode 100644 index 0000000..e4a1bd5 --- /dev/null +++ b/src/typechain/IERC721Upgradeable.ts @@ -0,0 +1,480 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC721UpgradeableInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "approve", + values: [string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [string, string, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + { owner: string; approved: string; tokenId: BigNumber } +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + { owner: string; operator: string; approved: boolean } +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + { from: string; to: string; tokenId: BigNumber } +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC721Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { operator: string }>; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + Approval( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + Transfer( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/OwnableUpgradeable.ts b/src/typechain/OwnableUpgradeable.ts new file mode 100644 index 0000000..a703651 --- /dev/null +++ b/src/typechain/OwnableUpgradeable.ts @@ -0,0 +1,167 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface OwnableUpgradeableInterface extends utils.Interface { + functions: { + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface OwnableUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OwnableUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts new file mode 100644 index 0000000..b85fb69 --- /dev/null +++ b/src/typechain/factories/ERC165Upgradeable__factory.ts @@ -0,0 +1,58 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + ERC165Upgradeable, + ERC165UpgradeableInterface, +} from "../ERC165Upgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class ERC165Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): ERC165UpgradeableInterface { + return new utils.Interface(_abi) as ERC165UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC165Upgradeable { + return new Contract(address, _abi, signerOrProvider) as ERC165Upgradeable; + } +} diff --git a/src/typechain/factories/ERC721Upgradeable__factory.ts b/src/typechain/factories/ERC721Upgradeable__factory.ts new file mode 100644 index 0000000..9a017d9 --- /dev/null +++ b/src/typechain/factories/ERC721Upgradeable__factory.ts @@ -0,0 +1,404 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + ERC721Upgradeable, + ERC721UpgradeableInterface, +} from "../ERC721Upgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + 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: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + 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: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + 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: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea26469706673582212206d6095494c27553541fe0f0e51f0544e9a2d2bf8f3d6c40b03226902630ce7cb64736f6c634300080a0033"; + +type ERC721UpgradeableConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC721UpgradeableConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC721Upgradeable__factory extends ContractFactory { + constructor(...args: ERC721UpgradeableConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): ERC721Upgradeable { + return super.attach(address) as ERC721Upgradeable; + } + connect(signer: Signer): ERC721Upgradeable__factory { + return super.connect(signer) as ERC721Upgradeable__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC721UpgradeableInterface { + return new utils.Interface(_abi) as ERC721UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC721Upgradeable { + return new Contract(address, _abi, signerOrProvider) as ERC721Upgradeable; + } +} diff --git a/src/typechain/factories/IERC165Upgradeable__factory.ts b/src/typechain/factories/IERC165Upgradeable__factory.ts new file mode 100644 index 0000000..9eed671 --- /dev/null +++ b/src/typechain/factories/IERC165Upgradeable__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC165Upgradeable, + IERC165UpgradeableInterface, +} from "../IERC165Upgradeable"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class IERC165Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC165UpgradeableInterface { + return new utils.Interface(_abi) as IERC165UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC165Upgradeable { + return new Contract(address, _abi, signerOrProvider) as IERC165Upgradeable; + } +} diff --git a/src/typechain/factories/IERC2981Upgradeable__factory.ts b/src/typechain/factories/IERC2981Upgradeable__factory.ts new file mode 100644 index 0000000..95e46af --- /dev/null +++ b/src/typechain/factories/IERC2981Upgradeable__factory.ts @@ -0,0 +1,74 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC2981Upgradeable, + IERC2981UpgradeableInterface, +} from "../IERC2981Upgradeable"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "uint256", + name: "salePrice", + type: "uint256", + }, + ], + name: "royaltyInfo", + outputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "uint256", + name: "royaltyAmount", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class IERC2981Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC2981UpgradeableInterface { + return new utils.Interface(_abi) as IERC2981UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC2981Upgradeable { + return new Contract(address, _abi, signerOrProvider) as IERC2981Upgradeable; + } +} diff --git a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts b/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts new file mode 100644 index 0000000..41562db --- /dev/null +++ b/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts @@ -0,0 +1,360 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC721MetadataUpgradeable, + IERC721MetadataUpgradeableInterface, +} from "../IERC721MetadataUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + 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: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + 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: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC721MetadataUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC721MetadataUpgradeableInterface { + return new utils.Interface(_abi) as IERC721MetadataUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721MetadataUpgradeable { + return new Contract( + address, + _abi, + signerOrProvider + ) as IERC721MetadataUpgradeable; + } +} diff --git a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts new file mode 100644 index 0000000..4d54c21 --- /dev/null +++ b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts @@ -0,0 +1,64 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC721ReceiverUpgradeable, + IERC721ReceiverUpgradeableInterface, +} from "../IERC721ReceiverUpgradeable"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "onERC721Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC721ReceiverUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC721ReceiverUpgradeableInterface { + return new utils.Interface(_abi) as IERC721ReceiverUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721ReceiverUpgradeable { + return new Contract( + address, + _abi, + signerOrProvider + ) as IERC721ReceiverUpgradeable; + } +} diff --git a/src/typechain/factories/IERC721Upgradeable__factory.ts b/src/typechain/factories/IERC721Upgradeable__factory.ts new file mode 100644 index 0000000..6da8e4a --- /dev/null +++ b/src/typechain/factories/IERC721Upgradeable__factory.ts @@ -0,0 +1,311 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC721Upgradeable, + IERC721UpgradeableInterface, +} from "../IERC721Upgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + 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: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + 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: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC721Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC721UpgradeableInterface { + return new utils.Interface(_abi) as IERC721UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721Upgradeable { + return new Contract(address, _abi, signerOrProvider) as IERC721Upgradeable; + } +} diff --git a/src/typechain/factories/OwnableUpgradeable__factory.ts b/src/typechain/factories/OwnableUpgradeable__factory.ts new file mode 100644 index 0000000..3100f92 --- /dev/null +++ b/src/typechain/factories/OwnableUpgradeable__factory.ts @@ -0,0 +1,91 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + OwnableUpgradeable, + OwnableUpgradeableInterface, +} from "../OwnableUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class OwnableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): OwnableUpgradeableInterface { + return new utils.Interface(_abi) as OwnableUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OwnableUpgradeable { + return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable; + } +} diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index 00a3f77..0aaa152 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -12,6 +12,22 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { + getContractFactory( + name: "Factory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "OwnableUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC2981Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -32,10 +48,34 @@ declare module "hardhat/types/runtime" { name: "IERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ERC721Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721MetadataUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721ReceiverUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ContextUpgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ERC165Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC165Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "AccessControl", signerOrOptions?: ethers.Signer | FactoryOptions @@ -345,6 +385,26 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractAt( + name: "Factory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "OwnableUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC2981Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "Initializable", address: string, @@ -370,11 +430,41 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ERC721Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721MetadataUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721ReceiverUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ContextUpgradeable", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ERC165Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC165Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "AccessControl", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 627d5d1..ddb7eda 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,12 +1,22 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export type { Factory } from "./Factory"; +export type { IFactory } from "./IFactory"; +export type { OwnableUpgradeable } from "./OwnableUpgradeable"; +export type { IERC2981Upgradeable } from "./IERC2981Upgradeable"; export type { Initializable } from "./Initializable"; export type { ERC20Upgradeable } from "./ERC20Upgradeable"; export type { ERC20BurnableUpgradeable } from "./ERC20BurnableUpgradeable"; export type { IERC20MetadataUpgradeable } from "./IERC20MetadataUpgradeable"; export type { IERC20Upgradeable } from "./IERC20Upgradeable"; +export type { ERC721Upgradeable } from "./ERC721Upgradeable"; +export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; +export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; +export type { IERC721Upgradeable } from "./IERC721Upgradeable"; export type { ContextUpgradeable } from "./ContextUpgradeable"; +export type { ERC165Upgradeable } from "./ERC165Upgradeable"; +export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; export type { ERC1155 } from "./ERC1155"; @@ -33,8 +43,6 @@ export type { Cooldown } from "./Cooldown"; export type { ERC20Redeem } from "./ERC20Redeem"; export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; -export type { Factory } from "./Factory"; -export type { IFactory } from "./IFactory"; export type { NoticeBoard } from "./NoticeBoard"; export type { OrderBook } from "./OrderBook"; export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; @@ -84,12 +92,22 @@ export type { AllStandardOpsStateBuilder } from "./AllStandardOpsStateBuilder"; export type { RainVM } from "./RainVM"; export type { VMStateBuilder } from "./VMStateBuilder"; +export { Factory__factory } from "./factories/Factory__factory"; +export { IFactory__factory } from "./factories/IFactory__factory"; +export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; +export { IERC2981Upgradeable__factory } from "./factories/IERC2981Upgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; export { ERC20Upgradeable__factory } from "./factories/ERC20Upgradeable__factory"; export { ERC20BurnableUpgradeable__factory } from "./factories/ERC20BurnableUpgradeable__factory"; export { IERC20MetadataUpgradeable__factory } from "./factories/IERC20MetadataUpgradeable__factory"; export { IERC20Upgradeable__factory } from "./factories/IERC20Upgradeable__factory"; +export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; +export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; +export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; +export { IERC721Upgradeable__factory } from "./factories/IERC721Upgradeable__factory"; export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; +export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; +export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { ERC1155__factory } from "./factories/ERC1155__factory"; @@ -116,8 +134,6 @@ export { Cooldown__factory } from "./factories/Cooldown__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; -export { Factory__factory } from "./factories/Factory__factory"; -export { IFactory__factory } from "./factories/IFactory__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; export { OrderBook__factory } from "./factories/OrderBook__factory"; export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; From 6886b677166c2398487fa0346fd98220d48baa70 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 7 Jul 2022 20:06:12 +0000 Subject: [PATCH 029/125] Update saleScriptGenerator.ts --- src/contracts/script-generators/saleScriptGenerator.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 16a9483..dab5af9 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -841,7 +841,7 @@ export class SaleVmFrom { constructor( public readonly canLiveScript: | BetweenTimestamps - | SaleDurationInBlocks + | BetweenBlocks | StateConfig, public readonly buyCapScript: BuyCap | StateConfig, public readonly calculateBuyScript: PriceCurve | StateConfig From 77ac2b70d985652cd1109b1c15572c1010cb36bd Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 7 Jul 2022 20:57:55 +0000 Subject: [PATCH 030/125] fix tests --- test/2_sale.test.ts | 12 ++++++------ test/5_escrow.test.ts | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/test/2_sale.test.ts b/test/2_sale.test.ts index 7ac192e..47698b7 100644 --- a/test/2_sale.test.ts +++ b/test/2_sale.test.ts @@ -15,8 +15,8 @@ import { VM, Sale, CombineTier, - SaleDurationInTimestamp, - SaleDurationInBlocks, + BetweenTimestamps, + BetweenBlocks, SaleVmFrom, BuyCap, } from '../src'; @@ -57,7 +57,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleVmFrom( - new SaleDurationInBlocks(startBlock, startBlock + saleDuration), + new BetweenBlocks(startBlock, startBlock + saleDuration), new BuyCap(), { sources, constants } ), @@ -108,7 +108,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleVmFrom( - new SaleDurationInBlocks(startBlock, endBlock), + new BetweenBlocks(startBlock, endBlock), new BuyCap(), { sources, constants } ), @@ -182,7 +182,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleVmFrom( - new SaleDurationInTimestamp(startTimestamp, endTimestamp), + new BetweenTimestamps(startTimestamp, endTimestamp), new BuyCap(), { sources, constants } ), @@ -256,7 +256,7 @@ describe('SDK - Sale', () => { // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleVmFrom( - new SaleDurationInBlocks(startBlock, endBlock), + new BetweenBlocks(startBlock, endBlock), new BuyCap(), { sources, constants } ), diff --git a/test/5_escrow.test.ts b/test/5_escrow.test.ts index aa4f1f2..0be5187 100644 --- a/test/5_escrow.test.ts +++ b/test/5_escrow.test.ts @@ -19,7 +19,7 @@ import { RedeemableERC20ClaimEscrow, Sale, RedeemableERC20, - SaleDurationInBlocks, + BetweenBlocks, AddressBook, ERC20, SaleVmFrom, @@ -66,12 +66,12 @@ const deploySale = async ( // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleVmFrom( - new SaleDurationInBlocks(startBlock, endBlock), + new BetweenBlocks(startBlock, endBlock), new BuyCap(), new FixedPrice(75, 6), ), - // canStartStateConfig: new SaleDurationInBlocks(startBlock), - // canEndStateConfig: new SaleDurationInBlocks(endBlock), + // canStartStateConfig: new BetweenBlocks(startBlock), + // canEndStateConfig: new BetweenBlocks(endBlock), // calculatePriceStateConfig: new FixedPrice('75', 6), recipient: recipient.address, reserve: saleReserve.address, From d3e0624f50f61a6a52c4a646f6220b569ebc3ee8 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Sat, 9 Jul 2022 22:59:25 +0000 Subject: [PATCH 031/125] ERC20 with faucet template + toFixed fix --- src/RainJS/matchmaker.ts | 4 +- .../emissionsERC20ScriptGenerator.ts | 84 ++++++++++++++++++- .../script-generators/saleScriptGenerator.ts | 6 +- 3 files changed, 85 insertions(+), 9 deletions(-) diff --git a/src/RainJS/matchmaker.ts b/src/RainJS/matchmaker.ts index c2dc3f8..21291f2 100644 --- a/src/RainJS/matchmaker.ts +++ b/src/RainJS/matchmaker.ts @@ -2,7 +2,7 @@ import { BigNumber } from "ethers"; import { OrderbookJS } from "./OrderbookJS"; import { VM } from "../classes/vm"; import { OrderbookSimulation } from "./vmSimulation"; -import { FixedPrice, IncreasingPrice } from "../contracts/script-generators/saleScriptGenerator"; +import { FixedPrice, IncDecPrice } from "../contracts/script-generators/saleScriptGenerator"; import { parseUnits } from "../utils"; import { order, @@ -220,7 +220,7 @@ let tokens: erc20s = { // some scripts for orders const scriptA = VM.pair(new FixedPrice(4), new FixedPrice(2)); const scriptB = VM.pair(new FixedPrice(10), new FixedPrice(0.4)); -const scriptC = VM.pair(new FixedPrice(2), new IncreasingPrice(0.1, 8, 1, 900)); +const scriptC = VM.pair(new FixedPrice(2), new IncDecPrice(0.1, 8, 1, 900)); // simulating some orders usinf the data above const order1 : order = { diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index bbf7e34..84194b9 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -12,6 +12,7 @@ import { paddedUInt256, selectLteLogic, selectLteMode, + parseUnits, } from '../../utils'; /** @@ -90,7 +91,7 @@ export class LinearEmissions { ) ); - const PERIODIC_REWARD_TIER5 = BigNumber.from(config.periodicRewards.tier4) + const PERIODIC_REWARD_TIER5 = BigNumber.from(config.periodicRewards.tier5) .mul(BN_ONE_REWARD) .sub( PERIODIC_REWARD_TIER4.add(PERIODIC_REWARD_TIER3) @@ -98,7 +99,7 @@ export class LinearEmissions { .add(PERIODIC_REWARD_TIER1) ); - const PERIODIC_REWARD_TIER6 = BigNumber.from(config.periodicRewards.tier4) + const PERIODIC_REWARD_TIER6 = BigNumber.from(config.periodicRewards.tier6) .mul(BN_ONE_REWARD) .sub( PERIODIC_REWARD_TIER5.add(PERIODIC_REWARD_TIER4) @@ -107,7 +108,7 @@ export class LinearEmissions { .add(PERIODIC_REWARD_TIER1) ); - const PERIODIC_REWARD_TIER7 = BigNumber.from(config.periodicRewards.tier4) + const PERIODIC_REWARD_TIER7 = BigNumber.from(config.periodicRewards.tier7) .mul(BN_ONE_REWARD) .sub( PERIODIC_REWARD_TIER6.add(PERIODIC_REWARD_TIER5) @@ -117,7 +118,7 @@ export class LinearEmissions { .add(PERIODIC_REWARD_TIER1) ); - const PERIODIC_REWARD_TIER8 = BigNumber.from(config.periodicRewards.tier4) + const PERIODIC_REWARD_TIER8 = BigNumber.from(config.periodicRewards.tier8) .mul(BN_ONE_REWARD) .sub( PERIODIC_REWARD_TIER7.add(PERIODIC_REWARD_TIER6) @@ -586,3 +587,78 @@ export class SequentialEmissions { ]; } } + +/** + * @public + * A class to creat a an ERC20 token with ability to be a faucet. owner can mint extar token if i=the token is not fixed supply. + * It can be claimed x number of tokens once every number of blocks passed which is defined by the faucet at the time of deployment. + */ + export class CreateERC20 { + + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + /** + * constructor of this class + * + * @param ownerAddress - address of the owner of the token + * @param mintUnits - amount of tokens to be able to mint each time by calling the contract's "claim" function by the owner, pass zero to get fixed supply token + * @param faucet - argument to make a faucet for the token with ability to be minted x number of tokens each x number of blocks passed. + * (param) - blocks - number of blocks needs to pass before being able to do another faucet claim - cannot be zero + * (param) - units - number of token to be transfered by the fuacet each time it is triggered (at each claim) + */ + constructor( + ownerAddress: string, + mintUnits: number, + faucet?: { + blocks: number, + units: number + } + ) { + if (faucet) { + this.constants = [ + ownerAddress, + parseUnits(mintUnits.toString(), 18), + faucet.blocks ? faucet.blocks : 1, + parseUnits(faucet.units.toString(), 18), + "0x1" + paddedUInt32(0).repeat(7), + "0" + ]; + this.sources = [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.THIS_ADDRESS), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + ]) + ]; + } + else { + this.constants = [ownerAddress, parseUnits(mintUnits.toString(), 18), "0"]; + this.sources = [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.EQUAL_TO), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.EAGER_IF) + ]) + ]; + } + } +} \ No newline at end of file diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index dab5af9..d37b5e8 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -226,11 +226,11 @@ export class vLBP extends PriceCurve { constants: [ parseUnits(balanceReserve.toString(), reserveTokenDecimals), parseUnits(initWeight.toString()), - parseUnits(weightChange.toFixed(5).toString()), + parseUnits(weightChange.toFixed(17).toString()), startTimestamp, parseUnits((1).toString()), ], - sources: [concat([vLBP.vLBP_SOURCES()])], + sources: [vLBP.vLBP_SOURCES()], }); } @@ -295,7 +295,7 @@ export class IncDecPrice extends PriceCurve { constants: [ parseUnits(startPrice.toString(), reserveTokenDecimals), parseUnits(endPrice.toString(), reserveTokenDecimals), - parseUnits(priceChange.toFixed(5).toString(), reserveTokenDecimals), + parseUnits(priceChange.toFixed(reserveTokenDecimals != 18 ? reserveTokenDecimals : 17).toString(), reserveTokenDecimals), startTimestamp, ], sources: [ From 49ab0eaa553f15fe8f526dbb595716951f17671a Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:29:55 +0000 Subject: [PATCH 032/125] Update for VM tier methods added toTierValues and updated toTierMultiplier and toTierDiscounter to vm2 --- src/classes/vm.ts | 287 +++++++++++++++--- .../script-generators/saleScriptGenerator.ts | 34 ++- 2 files changed, 269 insertions(+), 52 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 1d25737..7d1fc69 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -10,6 +10,7 @@ import { selectLteLogic, callSize, arrayify, + parseUnits, } from '../utils'; /** @@ -658,15 +659,16 @@ export class VM { } /** - * Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. + * Deducts percentage off of the result of a VM script based on a tier contract. * * @param config - the main VM script * @param tierAddress - the contract address of the tier contract. * @param tierDiscount - an array of 8 items - the discount value (range 0 - 99) of each tier are the 8 items of the array. * @param options - used for additional configuraions: * - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - * - (param) tierActivation An array of numbers, representing the amount of blocks each tier must hold in order to get the discount, - * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 blocks to get the discount. + * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the discount, + * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the discount.(used for stake tier contract) + * - (param) tierContext an array of values mostly used for stake tier contracts. * * @returns a VM script @see StateConfig */ @@ -675,10 +677,12 @@ export class VM { tierAddress: string, tierDiscount: number[], options?: { - index?: number; - tierActivation?: (string | number)[]; + index?: number, + tierActivation?: (string | number)[], + tierContext?: BigNumber[] } ): StateConfig { + let CONTEXT_ = concat([]); const Index = options?.index ? options.index : 0; const TierDiscount = paddedUInt256( @@ -695,20 +699,31 @@ export class VM { ) ); + if (options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8) { + CONTEXT_ = concat([ + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + ]) + } + + const TIER_BASED_DIS = () => concat([ op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.CONSTANT, 3), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), + op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), - op(VM.Opcodes.BLOCK_NUMBER), + CONTEXT_, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, selectLte(selectLteLogic.every, selectLteMode.first, 2) @@ -726,15 +741,12 @@ export class VM { const ACTIVATION_TIME = () => concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.BLOCK_NUMBER), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + CONTEXT_, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 4), ]); @@ -746,13 +758,16 @@ export class VM { ]); const ACTIVATION_TIME_FN = () => concat([ - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 14), + op(VM.Opcodes.CONSTANT, 15), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 3), ]); - const _discounterConfig: StateConfig = options?.tierActivation + + + const _discounterConfig: StateConfig = + options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 ? { constants: [ ethers.constants.MaxUint256, @@ -772,6 +787,7 @@ export class VM { paddedUInt32(options.tierActivation[0]) ) ), + ...options.tierContext ], sources: [ concat([ @@ -781,7 +797,7 @@ export class VM { ]), concat([ ACTIVATION_TIME_FN(), - TIER_BASED_DIS_FN(5), + TIER_BASED_DIS_FN(13), op(VM.Opcodes.EAGER_IF), ]), ], @@ -803,15 +819,16 @@ export class VM { } /** - * Multiply the result of a VM script based on the holding tier of a tier contract. + * Multiply the result of a VM script based on a tier contract. * * @param config - the main VM script * @param tierAddress - the contract address of the tier contract. * @param tierMultiplier - an array of 8 items - the multiplier value (2 decimals max) of each tier are the 8 items of the array. * @param options - used for additional configuraions: * - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - * - (param) tierActivation An array of numbers, representing the amount of blocks each tier must hold in order to get the multiplier, - * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 blocks to get the multiplier. + * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the multiplier, + * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the multiplier.(used for stake tier contract) + * - (param) tierContext an array of values mostly used for stake tier contracts. * * @returns a VM script @see StateConfig */ @@ -820,10 +837,12 @@ export class VM { tierAddress: string, tierMultiplier: number[], options?: { - index?: number; - tierActivation?: (string | number)[]; + index?: number, + tierActivation?: (string | number)[], + tierContext?: BigNumber[] } ): StateConfig { + let CONTEXT_ = concat([]); const Index = options?.index ? options.index : 0; const TierMultiplier = paddedUInt256( @@ -840,15 +859,27 @@ export class VM { ) ); + if (options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8) { + CONTEXT_ = concat([ + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 13), + ]) + } + const TIER_BASED_MUL = () => concat([ op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), - op(VM.Opcodes.BLOCK_NUMBER), + CONTEXT_, + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, selectLte(selectLteLogic.every, selectLteMode.first, 2) @@ -865,15 +896,12 @@ export class VM { const ACTIVATION_TIME = () => concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.BLOCK_NUMBER), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.UPDATE_BLOCKS_FOR_TIER_RANGE, tierRange(0, 8)), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - // TODO: @rouzwelt - // @ts-ignore - op(VM.Opcodes.REPORT), + CONTEXT_, + op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 5), ]); @@ -888,13 +916,14 @@ export class VM { ]); const ACTIVATION_TIME_FN = () => concat([ - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.CONSTANT, 16), op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 3), ]); - const _multiplierConfig: StateConfig = options?.tierActivation + const _multiplierConfig: StateConfig = + options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 ? { constants: [ ethers.constants.MaxUint256, @@ -915,6 +944,7 @@ export class VM { paddedUInt32(options.tierActivation[0]) ) ), + ...options.tierContext, ], sources: [ concat([ @@ -924,7 +954,7 @@ export class VM { ]), concat([ ACTIVATION_TIME_FN(), - TIER_BASED_MUL_FN(6), + TIER_BASED_MUL_FN(14), op(VM.Opcodes.EAGER_IF), ]), ], @@ -1299,4 +1329,175 @@ export class VM { return result_; } + /** + * Produce different values from the result of a VM script based on a tier contract. + * + * @param config - the main VM script + * @param tierAddress - the contract address of the tier contract. + * @param tierValues - an array of 8 items - the value (6 decimals max) of each tier are the 8 items of the array. + * @param ascending - true if the tierValues are ascending and false if descending + * @param options - used for additional configuraions: + * - (param) index to identify which sources item in config.sources the TierValues applies to, if not specified, it will be 0. + * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the different value, + * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the respective value. (used for stake tier contract) + * - (param) tierContext an array of values mostly used for stake tier contracts. + * - (param) finalDecimals produce the final values in this fixed decimals - 0 by deafult + * + * @returns a VM script @see StateConfig + */ + public static toTierValues( + config: StateConfig, + tierAddress: string, + tierValues: number[], + ascending: boolean, + options?: { + index?: number, + tierActivation?: (string | number)[], + tierContext?: BigNumber[], + finalDecimals?: number + } + ): StateConfig { + let CONTEXT_ = concat([]); + const Index = options?.index ? options.index : 0; + const Decimals = ("1").padEnd( + (options?.finalDecimals ? options.finalDecimals - 6 >= 0 ? options.finalDecimals - 6 : 6 - options.finalDecimals : 0), + "0" + ); + + const TierValues = paddedUInt256( + BigNumber.from( + '0x' + + paddedUInt32(parseUnits(tierValues[7].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[6].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[5].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[4].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[3].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[2].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[1].toString(), 6)) + + paddedUInt32(parseUnits(tierValues[0].toString(), 6)) + ) + ); + + if (options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8) { + CONTEXT_ = concat([ + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.CONSTANT, 14), + ]) + } + + const TIER_BASED_VAL = () => + concat([ + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SENDER), + CONTEXT_, + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op( + VM.Opcodes.SELECT_LTE, + selectLte(selectLteLogic.every, selectLteMode.first, 2) + ), + ]); + const TIER_BASED_VAL_ZIPMAP = (valSize: number) => + concat([ + op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), + ascending ? op(VM.Opcodes.MAX, 8) : op(VM.Opcodes.MIN, 8), + op(VM.Opcodes.CONSTANT, 5), + options?.finalDecimals + ? options?.finalDecimals - 6 >= 0 + ? op(VM.Opcodes.MUL, 2) + : op(VM.Opcodes.DIV, 2) + : op(VM.Opcodes.MUL, 2), + ascending ? op(VM.Opcodes.MAX, 2) : op(VM.Opcodes.MIN, 2), + ]); + const ACTIVATION_TIME = () => + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SENDER), + CONTEXT_, + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.SATURATING_DIFF), + op(VM.Opcodes.CONSTANT, 6), + ]); + const TIER_BASED_VAL_FN = (i: number) => + concat([ + op(VM.Opcodes.CONSTANT, i), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, i), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.EAGER_IF), + ]); + const ACTIVATION_TIME_FN = () => + concat([ + op(VM.Opcodes.CONSTANT, 16), + op(VM.Opcodes.CONSTANT, 17), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 3), + ]); + + const _multiplierConfig: StateConfig = + options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 + ? { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierValues, + ascending ? '0' : '0xffffffff', + '0xffffffff', + Decimals, + paddedUInt256( + BigNumber.from( + '0x' + + paddedUInt32(options.tierActivation[7]) + + paddedUInt32(options.tierActivation[6]) + + paddedUInt32(options.tierActivation[5]) + + paddedUInt32(options.tierActivation[4]) + + paddedUInt32(options.tierActivation[3]) + + paddedUInt32(options.tierActivation[2]) + + paddedUInt32(options.tierActivation[1]) + + paddedUInt32(options.tierActivation[0]) + ) + ), + ...options.tierContext, + ], + sources: [ + concat([ + TIER_BASED_VAL(), + ACTIVATION_TIME(), + TIER_BASED_VAL_ZIPMAP(2), + ]), + concat([ + ACTIVATION_TIME_FN(), + TIER_BASED_VAL_FN(15), + op(VM.Opcodes.EAGER_IF), + ]), + ], + } + : { + constants: [ + ethers.constants.MaxUint256, + tierAddress, + TierValues, + ascending ? '0' : '0xffffffff', + '0xffffffff', + Decimals + ], + sources: [ + concat([TIER_BASED_VAL(), TIER_BASED_VAL_ZIPMAP(0)]), + TIER_BASED_VAL_FN(6), + ], + }; + + return VM.combiner(config, _multiplierConfig, { index: Index }); + } } \ No newline at end of file diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index d37b5e8..14320f9 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -1,4 +1,4 @@ -import { BigNumberish, BytesLike } from 'ethers'; +import { BigNumber, BigNumberish, BytesLike } from 'ethers'; import { SaleContext, SaleStorage } from '../sale'; import { StateConfig, VM } from '../../classes/vm'; import { parseUnits, concat, op } from '../../utils'; @@ -131,22 +131,30 @@ export class PriceCurve { * * @param tierAddress - The Tier contract address. * @param tierDiscount - An array of each tiers' discount ranging between 0 - 99. - * @param tierActivation - (optional) An array of number of blocks for each tier that will be the required period - * of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. - * + * @param options - (optional) used for stake tier contracts + * - (param) tierActivation - An array of number of timestamps for each tier that will be the required period + * of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. + * - (param) tierContext - an array of 8 items represtenting stake contract thresholds * @returns this * */ public applyTierDiscount( tierAddress: string, tierDiscount: number[], - tierActivation?: (number | string)[] + options?: { + tierActivation: (number | string)[], + tierContext: BigNumber[] + } + ): PriceCurve { const _discountConfig = VM.toTierDiscounter( this, tierAddress, tierDiscount, - { tierActivation } + { + tierActivation: options?.tierActivation, + tierContext: options?.tierContext + } ); this.constants = _discountConfig.constants; @@ -641,8 +649,9 @@ export class BuyCap { * - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. * - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. * - (param) tierMultiplier - An array of each tiers' Multiplier value. - * - (param) tierActivation - An array of number of blocks for each tier that will be the required period of time for that tiered + * - (param) tierActivation - An array of number of timestamps for each tier that will be the required period of time for that tiered * address to hold the tier's in order to be eligible for that tier's multiplier. + * - (param) tierContext - an array of 8 items represtenting stake contract thresholds * * @returns this * @@ -655,6 +664,7 @@ export class BuyCap { tierAddress?: string; tierMultiplier?: number[]; tierActivation?: (number | string)[]; + tierContext?: BigNumber[] } ): BuyCap { const MIN_CAP_SOURCES = (i: number) => @@ -703,7 +713,10 @@ export class BuyCap { }, options.tierAddress, options.tierMultiplier, - { tierActivation: options.tierActivation } + { + tierActivation: options.tierActivation, + tierContext: options.tierContext + } ); maxCapConfig = VM.combiner(maxCapConfig, { constants: [1], @@ -756,7 +769,10 @@ export class BuyCap { bothCapConfig, options.tierAddress, options.tierMultiplier, - { tierActivation: options.tierActivation } + { + tierActivation: options.tierActivation, + tierContext: options.tierContext + } ); bothCapConfig = VM.combiner( From e98cc799bdbf79fc18e6336e905ddc30cccc15d7 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:40:53 +0000 Subject: [PATCH 033/125] Update vm.ts --- src/classes/vm.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 7d1fc69..d3ef20e 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -878,7 +878,7 @@ export class VM { op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, @@ -901,7 +901,7 @@ export class VM { op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 5), ]); @@ -1397,7 +1397,7 @@ export class VM { op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, @@ -1424,7 +1424,7 @@ export class VM { op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 6), ]); From 5d80086324609ae32847db327635ac6c565760f8 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:44:19 +0000 Subject: [PATCH 034/125] Update vm.ts --- src/classes/vm.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index d3ef20e..86731d6 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1445,7 +1445,7 @@ export class VM { op(VM.Opcodes.CONSTANT, 3), ]); - const _multiplierConfig: StateConfig = + const _tierValuesConfig: StateConfig = options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 ? { constants: [ @@ -1498,6 +1498,6 @@ export class VM { ], }; - return VM.combiner(config, _multiplierConfig, { index: Index }); + return VM.combiner(config, _tierValuesConfig, { index: Index }); } } \ No newline at end of file From 3919a318eee066786384806b137dba047a2a3cad Mon Sep 17 00:00:00 2001 From: NanezX Date: Mon, 11 Jul 2022 23:09:40 -0400 Subject: [PATCH 035/125] still fix on friendly source --- src/contracts/orderBook.ts | 2 +- src/contracts/tiers/erc20BalanceTier.ts | 206 ------------------------ src/friendlySource.ts | 107 ++++++++---- test/1_initSDK.test.ts | 2 +- test/friendlySource.test.ts | 157 +++++++++--------- 5 files changed, 161 insertions(+), 313 deletions(-) delete mode 100644 src/contracts/tiers/erc20BalanceTier.ts diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index a5c7d00..ae1e2e8 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -213,7 +213,7 @@ export enum OrderbookContext { * @public * Enum for operand of the Orderbook's STORAGE opcode */ -export enum OrderbookStroage { +export enum OrderbookStorage { /** * length of Orederbook's valid storage opcodes */ diff --git a/src/contracts/tiers/erc20BalanceTier.ts b/src/contracts/tiers/erc20BalanceTier.ts deleted file mode 100644 index 16c5c1b..0000000 --- a/src/contracts/tiers/erc20BalanceTier.ts +++ /dev/null @@ -1,206 +0,0 @@ -// import { Signer, BigNumberish, BigNumber, BytesLike } from 'ethers'; -// import { TierContract } from '../../classes/tierContract'; -// import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; -// import { -// ERC20BalanceTier__factory, -// ERC20BalanceTierFactory__factory, -// IERC20__factory, -// } from '../../typechain'; - -// /** -// * @public -// * A class for deploying and calling methods on a ERC20BalanceTier. -// * -// * @remarks -// * This class provides an easy way to deploy ERC20BalanceTiers using Rain's canonical factories, -// * and methods for interacting with an already deployed ERC20BalanceTier. -// * -// * The `ERC20BalanceTier` simply checks the current balance of an erc20 against tier values. -// * As the current balance is always read from the erc20 contract directly there is no historical -// * block data. -// * -// * @example -// * ```typescript -// * import { ERC20BalanceTier } from 'rain-sdk' -// * -// * // To deploy a new ERC20BalanceTier, pass an ethers.js Signer and the config for the ERC20BalanceTier. -// * const newTier = await ERC20BalanceTier.deploy(signer, ERC20BalanceTierArgs); -// * -// * // To connect to an existing ERC20BalanceTier just pass the tier address, token address and an ethers.js Signer. -// * const existingTier = new ERC20BalanceTier(address, signer[, tokenAddress]); -// * -// * // Once you have a ERC20BalanceTier, you can call the smart contract methods: -// * const tierValues = await existingTier.tierValues(); -// * ``` -// * -// */ -// export class ERC20BalanceTier extends TierContract { -// protected static readonly nameBookReference: string = -// 'erc20BalanceTierFactory'; - -// /** -// * Constructs a new ERC20BalanceTier from a known address. -// * -// * @param address - The address of the ERC20BalanceTier contract -// * @param signer - An ethers.js Signer -// * @returns A new ERC20BalanceTier instance -// * -// */ -// constructor(address: string, signer: Signer, tokenAddress: string = '') { -// ERC20BalanceTier.checkAddress(address); -// super(address, signer); -// const _erc20balanceTier = ERC20BalanceTier__factory.connect( -// address, -// signer -// ); -// this.tierValues = _erc20balanceTier.tierValues; -// this.token = tokenAddress; -// } - -// /** -// * ERC20 Token address that track the Tier -// */ -// public readonly token: string; - -// /** -// * Deploys a new ERC20BalanceTier. -// * -// * @param signer - An ethers.js Signer -// * @param args - Arguments for deploying a ERC20BalanceTier @see ERC20BalanceTierDeployArgs -// * @param overrides - @see TxOverrides -// * @returns A new ERC20BalanceTier instance -// */ -// public static deploy = async ( -// signer: Signer, -// args: ERC20BalanceTierDeployArgs, -// overrides: TxOverrides = {} -// ): Promise => { -// const erc20BalanceTierFactory = ERC20BalanceTierFactory__factory.connect( -// this.getBookAddress(await this.getChainId(signer)), -// signer -// ); - -// const tx = await erc20BalanceTierFactory.createChildTyped(args, overrides); -// const receipt = await tx.wait(); -// const address = this.getNewChildFromReceipt( -// receipt, -// erc20BalanceTierFactory -// ); -// return new ERC20BalanceTier(address, signer, args.erc20); -// }; - -// public readonly connect = (signer: Signer): ERC20BalanceTier => { -// return new ERC20BalanceTier(this.address, signer, this.token); -// }; - -// /** -// * Get a new instance with the token address provided. -// * -// * This method must be used if the token address is not provided in construction moment. The class use -// * this address to make calculations related with the Tier. The token address provided should be the -// * same that the Tier is using to work correctly. -// * @param tokenAddress - The ERC20 token address related to the tier -// * @returns A new instance with the token address ready to use the helper methods -// */ -// public readonly addTokenAddress = ( -// tokenAddress: string -// ): ERC20BalanceTier => { -// return new ERC20BalanceTier(this.address, this.signer, tokenAddress); -// }; - -// /** -// * Checks if address is registered as a child contract of this contract in a specific network. -// * -// * @remarks -// * The methods require a signer that will be used to call to the Factory Contract and ask if the -// * address provided is a child. Also it is necessary to get the current Chain ID using the provider -// * in the signer. -// * -// * @param signer - An ethers.js Signer -// * @param maybeChild - Address to check registration for. -// * @returns `true` if address was deployed by this contract factory, otherwise `false` -// */ -// public static isChild = async ( -// signer: Signer, -// maybeChild: string -// ): Promise => { -// return await this._isChild(signer, maybeChild); -// }; - -// /** -// * Calculate how much amount of the token needed transfer to or transfer out of the account to reach a `desiredLevel`. -// * -// * Take in mind: -// * - If the `desired level` is higher than the current level, the amount returned will be the amount -// * needed to obtain or transfer to the `account`. -// * - If the `desired level` is lower than the current level, the amount returned will be the amount -// * needed to remove or transfer out of the `account`. -// * - If already have the `desired` tier, will return 0 -// * -// * @param desiredLevel - the tier level desired to get -// * @param account - (optional) the account address to calculate. If not provided will use the signer of -// * the instance -// * @returns The amount t -// */ -// public async amountToTier( -// account: string, -// desiredLevel: number -// ): Promise { -// if (!this.token) { -// throw new Error( -// 'Missing ERC20 Token address in the instance. Please, use addTokenAddress' -// ); -// } - -// const token = IERC20__factory.connect(this.token, this.signer); -// const values = await this.tierValues(); - -// const amountDestiny = desiredLevel -// ? values[desiredLevel - 1] -// : BigNumber.from(0); - -// const amountOrigin = await token.balanceOf( -// account || (await this.signer.getAddress()) -// ); - -// return amountDestiny.sub(amountOrigin).abs(); -// } - -// /** -// * It is NOT implemented in BalanceTiers. Always will throw an error -// */ -// public readonly setTier = async ( -// account: string, -// endTier: BigNumberish, -// data: BytesLike, -// overrides?: TxOverrides -// ): Promise => { -// throw new Error('SET TIER: NOT IMPLEMENTED'); -// }; - -// /** -// * Complements the default solidity accessor for `tierValues`. Returns all the values in a -// * listrather than requiring an index be specified. -// * -// * @param overrides - @see ReadTxOverrides -// * @returns The immutable `tierValues[8]`. -// */ -// public readonly tierValues: ( -// overrides?: ReadTxOverrides -// ) => Promise; -// } - -// /** -// * @public -// * Constructor config for ERC20BalanceTier -// */ -// export interface ERC20BalanceTierDeployArgs { -// /** -// * The erc20 token contract to check the balance of at `report` time -// */ -// erc20: string; -// /** -// * 8 values corresponding to minimum erc20 balances for tier 1 through tier 8 -// */ -// tierValues: BigNumberish[]; -// } diff --git a/src/friendlySource.ts b/src/friendlySource.ts index aefdf08..2e223d7 100644 --- a/src/friendlySource.ts +++ b/src/friendlySource.ts @@ -1,5 +1,12 @@ import { BytesLike, BigNumberish, BigNumber } from 'ethers'; import { AllStandardOps, StateConfig } from './classes/vm'; +import { CombineTierStorage } from './contracts/tiers/combineTier'; +import { + EmissionsERC20Context, + EmissionsERC20Storage, +} from './contracts/emissionsERC20'; +import { OrderbookContext, OrderbookStorage } from './contracts/orderBook'; +import { SaleContext, SaleStorage } from './contracts/sale'; import { arrayify, paddedUInt256, @@ -100,12 +107,12 @@ const newOpMeta: OpMeta[] = [ { opcode: AllStandardOps.CONTEXT, name: 'CONTEXT', - input: 'CONTEXT', // TODO + input: 'CONTEXT', }, { opcode: AllStandardOps.STORAGE, name: 'STORAGE', - input: 'takeFromStack', + input: 'STORAGE', }, { opcode: AllStandardOps.ZIPMAP, @@ -432,30 +439,6 @@ export class HumanFriendlySource { const ops = this.pairs(state.sources[sourceIndex]).map((pair) => { let opmeta = this.opMeta.find((opmeta) => opmeta.opcode === pair[0]); if (typeof opmeta === 'undefined') { - // Search with local opcodes if context provided - if (this._context) { - const _contract = this._context; - if (_contract === 'sale') { - opmeta = opSaleMeta.find((opmeta) => opmeta.opcode === pair[0]); - } else if (_contract === 'combinetier') { - opmeta = opCombineTierMeta.find( - (opmeta) => opmeta.opcode === pair[0] - ); - } else if (_contract === 'emissions') { - opmeta = opEmissionsMeta.find( - (opmeta) => opmeta.opcode === pair[0] - ); - } else if (_contract === 'gameassets') { - opmeta = opEmissionsMeta.find( - (opmeta) => opmeta.opcode === pair[0] - ); - } else { - throw Error( - `Unknown opcode: ${pair[0]} using context ${_contract}` - ); - } - } - // still undefined if (typeof opmeta === 'undefined') { throw Error(`Unknown opcode: ${pair[0]}`); @@ -473,6 +456,12 @@ export class HumanFriendlySource { op = ops[i]; i++; + console.log('=================='); + console.log('op: ', op); + console.log('_stackIndex: ', _stackIndex); + console.log('state.stack: ', state.stack); + console.log('=================='); + if (op.input === 'constantIndex') { if (op.operand < 128) { state.stack[_stackIndex] = { @@ -488,7 +477,7 @@ export class HumanFriendlySource { state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'blockNumber') { state.stack[_stackIndex] = { - val: 'BLOCK_NUMBER()', + val: 'CURRENT_BLOCK', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); @@ -515,7 +504,7 @@ export class HumanFriendlySource { state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'blockTimestamp') { state.stack[_stackIndex] = { - val: 'BLOCK_TIMESTAMP()', + val: 'CURRENT_TIMESTAMP', consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); @@ -585,6 +574,56 @@ export class HumanFriendlySource { consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else if (op.input === 'CONTEXT') { + // + let context = `CONTEXT Argument ${op.operand} passed to contract function at call`; + let valid = true; + if (this._context === 'sale') { + valid = isValidContext(op.operand, SaleContext.length); + context = SaleContext[op.operand]; + } + // + else if (this._context === 'emissions') { + valid = isValidContext(op.operand, EmissionsERC20Context.length); + context = EmissionsERC20Context[op.operand]; + } + // + else if (this._context === 'orderbook') { + valid = isValidContext(op.operand, OrderbookContext.length); + context = OrderbookContext[op.operand]; + } + + if (valid) { + state.stack[_stackIndex] = { + val: context, + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } else { + throw new Error( + `Wrong context value '${op.operand}' given for the context '${this._context}'` + ); + } + } else if (op.input === 'STORAGE') { + // + let storage = ''; + if (this._context === 'sale') { + storage = SaleStorage[op.operand]; + } else if (this._context === 'emissions') { + storage = EmissionsERC20Storage[op.operand]; + } else if (this._context === 'orderbook') { + storage = OrderbookStorage[op.operand]; + } else if (this._context === 'combinetier') { + storage = CombineTierStorage[op.operand]; + } else { + throw new Error('Not contract/context provided to get the STORAGE'); + } + + state.stack[_stackIndex] = { + val: storage, + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); } else if (op.input === 'takeFromStack') { this.applyOp(state, op); } else if (op.input === 'zipmap') { @@ -734,7 +773,7 @@ export class HumanFriendlySource { op.opcode === AllStandardOps.IERC721_OWNER_OF || op.opcode === AllStandardOps.IERC721_BALANCE_OF || op.opcode === AllStandardOps.IERC20_BALANCE_OF || - op.opcode === AllStandardOps.REPORT + op.opcode === AllStandardOps.ITIERV2_REPORT ) { const _stackLength = this.identifyZipmap(state.stack, 2); @@ -955,3 +994,13 @@ export class HumanFriendlySource { return _stackReturn === stackToRead ? -1 : _stackReturn + zipmapCounter; } } + +/** + * Check the operand agains the length of the EnumContext to see if it's valid + * @param _operand - Operand to check + * @param _length - The length in the enum Context + */ +function isValidContext(_operand: number, _length: number): boolean { + if (_operand >= 0 && _operand < _length) return true; + return false; +} diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index 10907ee..f663bc7 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -75,7 +75,7 @@ before('Initializing and deploying contracts to hardhat network', async () => { const OrderBookFactory = await ethers.getContractFactory('OrderBook'); // ⚠️ Deployments to hardhat test network ⚠️ - const aaaaaaaaaaaaaaaaaaaaaa = await vmStateBuilderFactory.deploy(); + const vmStateBuilder = await vmStateBuilderFactory.deploy(); const RedeemableERC20Factory = await RedeemableERC20FactoryFactory.deploy(); const VerifyFactory = await VerifyFactoryFactory.deploy(); const VerifyTierFactory = await VerifyTierFactoryFactory.deploy(); diff --git a/test/friendlySource.test.ts b/test/friendlySource.test.ts index 926c1e3..e07a466 100644 --- a/test/friendlySource.test.ts +++ b/test/friendlySource.test.ts @@ -37,7 +37,7 @@ const { const Opcode = AllStandardOps; -describe('Human Friendly Source Generator', () => { +describe.only('Human Friendly Source Generator', () => { it('should generate the human friendly from an exponentiation op source', async () => { const constants = [5, 2]; @@ -350,7 +350,7 @@ describe('Human Friendly Source Generator', () => { const friendly0 = HumanFriendlySource.get(state); - expect(friendly0).to.eq(`ZIPMAP( + expect(friendly0).to.eq(`ZIPMAP_8( ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], ["FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF", "FFFFFFFF"], EAGER_IF(ISZERO(^0), ^1, ^0) @@ -866,7 +866,7 @@ describe('Human Friendly Source Generator', () => { }; const friendly = HumanFriendlySource.get(state); - expect(friendly).to.eq(`ZIPMAP( + expect(friendly).to.eq(`ZIPMAP_8( [1, 2, 3, 4, 5, 6, 7, 8], [10, 20, 30, 40, 50, 60, 70, 80], MUL(^0, ^1) ADD(^0, ^1) @@ -913,7 +913,7 @@ describe('Human Friendly Source Generator', () => { }; const friendly = HumanFriendlySource.get(state); - expect(friendly).to.eq(`ZIPMAP( + expect(friendly).to.eq(`ZIPMAP_2( [5, 3], [4, 2], [3, 1], @@ -1024,7 +1024,7 @@ describe('Human Friendly Source Generator', () => { }; const friendly = HumanFriendlySource.get(state); - expect(friendly).to.eq(`ZIPMAP( + expect(friendly).to.eq(`ZIPMAP_1( 10, 20, 30, @@ -1089,7 +1089,7 @@ describe('Human Friendly Source Generator', () => { }; const friendly = HumanFriendlySource.get(state); - expect(friendly).to.eq(`ZIPMAP( + expect(friendly).to.eq(`ZIPMAP_1( 1, 2, 3, @@ -1139,7 +1139,7 @@ describe('Human Friendly Source Generator', () => { }; const friendly = HumanFriendlySource.get(state); - expect(friendly).to.eq(`ZIPMAP( + expect(friendly).to.eq(`ZIPMAP_1( 3, 4, 5, @@ -1184,7 +1184,7 @@ describe('Human Friendly Source Generator', () => { }; const friendly = HumanFriendlySource.get(state); - expect(friendly).to.eq(`ZIPMAP( + expect(friendly).to.eq(`ZIPMAP_1( 1, 2, 3, @@ -1582,7 +1582,7 @@ describe('Human Friendly Source Generator', () => { ); }); - it('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { + it.only('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { const [arbitrary] = await ethers.getSigners(); const ERC721Address = arbitrary.address; const fixedPrice = '20'; @@ -1675,72 +1675,77 @@ describe('Human Friendly Source Generator', () => { ], }; - const friendly = HumanFriendlySource.get(saleConfig); - - // prettier-ignore - const expectOutput = -`EAGER_IF( - EAGER_IF( - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - EAGER_IF( - ISZERO( - IERC721_BALANCE_OF( - ${ERC721Address}, - SENDER - ) - ), - 0, - CONTEXT[0] - ), - CONTEXT[0] - ), - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - DIV( - MUL( - ADD( - STORAGE( - ${FixedPrice} - ), - ${ReserveBalance} - ), - MAX( - SATURATING_SUB( - ${InitWeight}, - MUL( - SATURATING_SUB( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${WeightChange} - ) - ), - ${one} - ) - ), - STORAGE( - MAX( - SATURATING_SUB( - ${InitWeight}, - MUL( - SATURATING_SUB( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${WeightChange} - ) - ), - ${one} - ) - ) - ) -)`; - - expect(HumanFriendlySource.prettify(friendly)).to.be.equals(expectOutput); + const friendly = HumanFriendlySource.get(saleConfig, { + contract: 'sale', + pretty: true, + }); + + console.log(friendly); + + // // prettier-ignore + // const expectOutput = + // `EAGER_IF( + // EAGER_IF( + // LESS_THAN( + // CURRENT_TIMESTAMP, + // ${splitTimestamp} + // ), + // EAGER_IF( + // ISZERO( + // IERC721_BALANCE_OF( + // ${ERC721Address}, + // SENDER + // ) + // ), + // 0, + // CONTEXT[0] + // ), + // CONTEXT[0] + // ), + // LESS_THAN( + // CURRENT_TIMESTAMP, + // ${splitTimestamp} + // ), + // DIV( + // MUL( + // ADD( + // STORAGE( + // ${FixedPrice} + // ), + // ${ReserveBalance} + // ), + // MAX( + // SATURATING_SUB( + // ${InitWeight}, + // MUL( + // SATURATING_SUB( + // CURRENT_TIMESTAMP, + // ${splitTimestamp} + // ), + // ${WeightChange} + // ) + // ), + // ${one} + // ) + // ), + // STORAGE( + // MAX( + // SATURATING_SUB( + // ${InitWeight}, + // MUL( + // SATURATING_SUB( + // CURRENT_TIMESTAMP, + // ${splitTimestamp} + // ), + // ${WeightChange} + // ) + // ), + // ${one} + // ) + // ) + // ) + // )`; + + // expect(HumanFriendlySource.prettify(friendly)).to.be.equals(expectOutput); }); }); From ac32c6881ebf130a8b9383b2cb2ade92c44dc201 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Wed, 13 Jul 2022 16:45:14 +0000 Subject: [PATCH 036/125] stake test --- test/9_stake.test.ts | 74 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 test/9_stake.test.ts diff --git a/test/9_stake.test.ts b/test/9_stake.test.ts new file mode 100644 index 0000000..93ac589 --- /dev/null +++ b/test/9_stake.test.ts @@ -0,0 +1,74 @@ +import { expect } from 'chai'; +import { ethers } from 'hardhat'; +import { ERC20, Stake } from '../src'; +import { ReserveToken } from '../typechain'; + +describe('SDK - Stake', () => { + + it('should deploy a Stake child correctly', async () => { + const [deployer, staker] = await ethers.getSigners(); + const TokenFactory = await ethers.getContractFactory( + 'ReserveToken', + deployer + ); + const erc20Contract = await TokenFactory.deploy() as ReserveToken; + const erc20Address = erc20Contract.address; + + // Create the instances + const erc20Deployer = new ERC20(erc20Address, deployer); + const reserveToken = erc20Deployer.connect(staker); + + // Transfer tokens from the deployer to the staker with the instances + const amountToTransfer = '50000000'; + await erc20Deployer.approve(staker.address, amountToTransfer); + await reserveToken.transferFrom( + deployer.address, + staker.address, + amountToTransfer + ); + expect(await reserveToken.balanceOf(staker.address)).to.be.equals( + amountToTransfer + ); + + + console.log("userA balance of reserveToken before deploying the stake contract: " + (await reserveToken.balanceOf(staker.address))) + console.log("--------------------------------------------------------------------") + + console.log("deploying the stake contract with initial ratio of 1:1") + console.log("--------------------------------------------------------------------") + + const stake = await Stake.deploy(staker, { + token: reserveToken.address, + initialRatio: "1000000000000000000000000000000", + name: "stToken", + symbol: "sss" + }) + console.log("stake contract deployed") + console.log("--------------------------------------------------------------------") + + console.log("stToken totalSupply before deposit: " + (await stake.totalSupply())) + console.log("reserveToken balance of stake contract before deposit: " + (await reserveToken.balanceOf(stake.address))) + console.log("--------------------------------------------------------------------") + + console.log("userA depositing 20 reserveToken into stake") + await reserveToken.approve(stake.address, ethers.constants.MaxUint256); + await stake.deposit("20000000") + console.log("--------------------------------------------------------------------") + + console.log("stToken totalSupply after deposit: " + (await stake.totalSupply())) + console.log("reserveToken balance of stake contract after deposit: " + (await reserveToken.balanceOf(stake.address))) + console.log("userA balance of stToken after depositing into stake: " + (await stake.balanceOf(staker.address))) + console.log("userA balance of reserveToken after depositing into stake: " + (await reserveToken.balanceOf(staker.address))) + console.log("--------------------------------------------------------------------") + + console.log("userA withdrawing 10 reserveToken from stake") + await stake.withdraw("10000000") + console.log("--------------------------------------------------------------------") + + console.log("stToken totalSupply after withdraw: " + (await stake.totalSupply())) + console.log("reserveToken balance of stake contract after withdraw: " + (await reserveToken.balanceOf(stake.address))) + console.log("userA balance of stToken after withdrawing from stake: " + (await stake.balanceOf(staker.address))) + console.log("userA balance of reserveToken after withdrawing from stake: " + (await reserveToken.balanceOf(staker.address))) + + }); +}) \ No newline at end of file From 29eb1991ee0f47d633f941b97fd25a86c972276f Mon Sep 17 00:00:00 2001 From: NanezX Date: Wed, 13 Jul 2022 17:42:07 -0400 Subject: [PATCH 037/125] fix source generator --- src/friendlySource.ts | 10 +- src/typechain/ERC165Upgradeable.ts | 106 ---- src/typechain/ERC721Upgradeable.ts | 537 ------------------ src/typechain/IERC165Upgradeable.ts | 95 ---- src/typechain/IERC2981Upgradeable.ts | 141 ----- src/typechain/IERC721MetadataUpgradeable.ts | 531 ----------------- src/typechain/IERC721ReceiverUpgradeable.ts | 113 ---- src/typechain/IERC721Upgradeable.ts | 480 ---------------- src/typechain/OwnableUpgradeable.ts | 167 ------ .../factories/ERC165Upgradeable__factory.ts | 58 -- .../factories/ERC721Upgradeable__factory.ts | 404 ------------- .../factories/IERC165Upgradeable__factory.ts | 45 -- .../factories/IERC2981Upgradeable__factory.ts | 74 --- .../IERC721MetadataUpgradeable__factory.ts | 360 ------------ .../IERC721ReceiverUpgradeable__factory.ts | 64 --- .../factories/IERC721Upgradeable__factory.ts | 311 ---------- .../factories/OwnableUpgradeable__factory.ts | 91 --- src/typechain/hardhat.d.ts | 90 --- src/typechain/index.ts | 24 +- test/8_friendlySource.test.ts | 324 +---------- 20 files changed, 39 insertions(+), 3986 deletions(-) delete mode 100644 src/typechain/ERC165Upgradeable.ts delete mode 100644 src/typechain/ERC721Upgradeable.ts delete mode 100644 src/typechain/IERC165Upgradeable.ts delete mode 100644 src/typechain/IERC2981Upgradeable.ts delete mode 100644 src/typechain/IERC721MetadataUpgradeable.ts delete mode 100644 src/typechain/IERC721ReceiverUpgradeable.ts delete mode 100644 src/typechain/IERC721Upgradeable.ts delete mode 100644 src/typechain/OwnableUpgradeable.ts delete mode 100644 src/typechain/factories/ERC165Upgradeable__factory.ts delete mode 100644 src/typechain/factories/ERC721Upgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC165Upgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC2981Upgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721MetadataUpgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721Upgradeable__factory.ts delete mode 100644 src/typechain/factories/OwnableUpgradeable__factory.ts diff --git a/src/friendlySource.ts b/src/friendlySource.ts index 2e223d7..ac8c324 100644 --- a/src/friendlySource.ts +++ b/src/friendlySource.ts @@ -417,9 +417,13 @@ export class HumanFriendlySource { space.repeat(counter * n) + _text.slice(i); i = i + counter * n + 1; + if (counter === 0 && (_text[i + 1] || _text[i + 1])) { + _text = _text.slice(0, i + 1) + '\n\n' + _text.slice(i + 1); + } } else { skip--; } + } } return _text; @@ -456,12 +460,6 @@ export class HumanFriendlySource { op = ops[i]; i++; - console.log('=================='); - console.log('op: ', op); - console.log('_stackIndex: ', _stackIndex); - console.log('state.stack: ', state.stack); - console.log('=================='); - if (op.input === 'constantIndex') { if (op.operand < 128) { state.stack[_stackIndex] = { diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/ERC165Upgradeable.ts deleted file mode 100644 index 1846fc0..0000000 --- a/src/typechain/ERC165Upgradeable.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ERC165UpgradeableInterface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: { - "Initialized(uint8)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; -} - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface ERC165Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC165UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - }; - - estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/ERC721Upgradeable.ts b/src/typechain/ERC721Upgradeable.ts deleted file mode 100644 index 06721a3..0000000 --- a/src/typechain/ERC721Upgradeable.ts +++ /dev/null @@ -1,537 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ERC721UpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Initialized(uint8)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ERC721Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC721UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC165Upgradeable.ts b/src/typechain/IERC165Upgradeable.ts deleted file mode 100644 index 1e55fb4..0000000 --- a/src/typechain/IERC165Upgradeable.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC165UpgradeableInterface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC165Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC165UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC2981Upgradeable.ts b/src/typechain/IERC2981Upgradeable.ts deleted file mode 100644 index b8e7e21..0000000 --- a/src/typechain/IERC2981Upgradeable.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC2981UpgradeableInterface extends utils.Interface { - functions: { - "royaltyInfo(uint256,uint256)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "royaltyInfo", - values: [BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "royaltyInfo", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC2981Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC2981UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC721MetadataUpgradeable.ts b/src/typechain/IERC721MetadataUpgradeable.ts deleted file mode 100644 index 1121973..0000000 --- a/src/typechain/IERC721MetadataUpgradeable.ts +++ /dev/null @@ -1,531 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721MetadataUpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721MetadataUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721MetadataUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: string }>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC721ReceiverUpgradeable.ts b/src/typechain/IERC721ReceiverUpgradeable.ts deleted file mode 100644 index d9fb87d..0000000 --- a/src/typechain/IERC721ReceiverUpgradeable.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721ReceiverUpgradeableInterface extends utils.Interface { - functions: { - "onERC721Received(address,address,uint256,bytes)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "onERC721Received", - values: [string, string, BigNumberish, BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "onERC721Received", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC721ReceiverUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721ReceiverUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC721Upgradeable.ts b/src/typechain/IERC721Upgradeable.ts deleted file mode 100644 index e4a1bd5..0000000 --- a/src/typechain/IERC721Upgradeable.ts +++ /dev/null @@ -1,480 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721UpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: string }>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/OwnableUpgradeable.ts b/src/typechain/OwnableUpgradeable.ts deleted file mode 100644 index a703651..0000000 --- a/src/typechain/OwnableUpgradeable.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface OwnableUpgradeableInterface extends utils.Interface { - functions: { - "owner()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [string] - ): string; - - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - - events: { - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; -} - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface OwnableUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: OwnableUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - owner(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( - newOwner: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - }; - - estimateGas: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts deleted file mode 100644 index b85fb69..0000000 --- a/src/typechain/factories/ERC165Upgradeable__factory.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - ERC165Upgradeable, - ERC165UpgradeableInterface, -} from "../ERC165Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class ERC165Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): ERC165UpgradeableInterface { - return new utils.Interface(_abi) as ERC165UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC165Upgradeable { - return new Contract(address, _abi, signerOrProvider) as ERC165Upgradeable; - } -} diff --git a/src/typechain/factories/ERC721Upgradeable__factory.ts b/src/typechain/factories/ERC721Upgradeable__factory.ts deleted file mode 100644 index 9a017d9..0000000 --- a/src/typechain/factories/ERC721Upgradeable__factory.ts +++ /dev/null @@ -1,404 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC721Upgradeable, - ERC721UpgradeableInterface, -} from "../ERC721Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - 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: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "_data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea26469706673582212206d6095494c27553541fe0f0e51f0544e9a2d2bf8f3d6c40b03226902630ce7cb64736f6c634300080a0033"; - -type ERC721UpgradeableConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC721UpgradeableConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC721Upgradeable__factory extends ContractFactory { - constructor(...args: ERC721UpgradeableConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC721Upgradeable { - return super.attach(address) as ERC721Upgradeable; - } - connect(signer: Signer): ERC721Upgradeable__factory { - return super.connect(signer) as ERC721Upgradeable__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC721UpgradeableInterface { - return new utils.Interface(_abi) as ERC721UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC721Upgradeable { - return new Contract(address, _abi, signerOrProvider) as ERC721Upgradeable; - } -} diff --git a/src/typechain/factories/IERC165Upgradeable__factory.ts b/src/typechain/factories/IERC165Upgradeable__factory.ts deleted file mode 100644 index 9eed671..0000000 --- a/src/typechain/factories/IERC165Upgradeable__factory.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC165Upgradeable, - IERC165UpgradeableInterface, -} from "../IERC165Upgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class IERC165Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC165UpgradeableInterface { - return new utils.Interface(_abi) as IERC165UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC165Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC165Upgradeable; - } -} diff --git a/src/typechain/factories/IERC2981Upgradeable__factory.ts b/src/typechain/factories/IERC2981Upgradeable__factory.ts deleted file mode 100644 index 95e46af..0000000 --- a/src/typechain/factories/IERC2981Upgradeable__factory.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC2981Upgradeable, - IERC2981UpgradeableInterface, -} from "../IERC2981Upgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "uint256", - name: "salePrice", - type: "uint256", - }, - ], - name: "royaltyInfo", - outputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "royaltyAmount", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class IERC2981Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC2981UpgradeableInterface { - return new utils.Interface(_abi) as IERC2981UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC2981Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC2981Upgradeable; - } -} diff --git a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts b/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts deleted file mode 100644 index 41562db..0000000 --- a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721MetadataUpgradeable, - IERC721MetadataUpgradeableInterface, -} from "../IERC721MetadataUpgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721MetadataUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721MetadataUpgradeableInterface { - return new utils.Interface(_abi) as IERC721MetadataUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721MetadataUpgradeable { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721MetadataUpgradeable; - } -} diff --git a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts deleted file mode 100644 index 4d54c21..0000000 --- a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721ReceiverUpgradeable, - IERC721ReceiverUpgradeableInterface, -} from "../IERC721ReceiverUpgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721ReceiverUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721ReceiverUpgradeableInterface { - return new utils.Interface(_abi) as IERC721ReceiverUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721ReceiverUpgradeable { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721ReceiverUpgradeable; - } -} diff --git a/src/typechain/factories/IERC721Upgradeable__factory.ts b/src/typechain/factories/IERC721Upgradeable__factory.ts deleted file mode 100644 index 6da8e4a..0000000 --- a/src/typechain/factories/IERC721Upgradeable__factory.ts +++ /dev/null @@ -1,311 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721Upgradeable, - IERC721UpgradeableInterface, -} from "../IERC721Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721UpgradeableInterface { - return new utils.Interface(_abi) as IERC721UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC721Upgradeable; - } -} diff --git a/src/typechain/factories/OwnableUpgradeable__factory.ts b/src/typechain/factories/OwnableUpgradeable__factory.ts deleted file mode 100644 index 3100f92..0000000 --- a/src/typechain/factories/OwnableUpgradeable__factory.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - OwnableUpgradeable, - OwnableUpgradeableInterface, -} from "../OwnableUpgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class OwnableUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): OwnableUpgradeableInterface { - return new utils.Interface(_abi) as OwnableUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): OwnableUpgradeable { - return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable; - } -} diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index 50eb0f2..c7a976e 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -12,22 +12,6 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { - getContractFactory( - name: "Factory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "OwnableUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC2981Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -48,34 +32,10 @@ declare module "hardhat/types/runtime" { name: "IERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC721Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721MetadataUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721ReceiverUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ContextUpgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "AccessControl", signerOrOptions?: ethers.Signer | FactoryOptions @@ -405,26 +365,6 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractAt( - name: "Factory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "OwnableUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC2981Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "Initializable", address: string, @@ -450,41 +390,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC721Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721MetadataUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721ReceiverUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ContextUpgradeable", address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC165Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC165Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "AccessControl", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index b65ba88..4cb77aa 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,22 +1,12 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { Factory } from "./Factory"; -export type { IFactory } from "./IFactory"; -export type { OwnableUpgradeable } from "./OwnableUpgradeable"; -export type { IERC2981Upgradeable } from "./IERC2981Upgradeable"; export type { Initializable } from "./Initializable"; export type { ERC20Upgradeable } from "./ERC20Upgradeable"; export type { ERC20BurnableUpgradeable } from "./ERC20BurnableUpgradeable"; export type { IERC20MetadataUpgradeable } from "./IERC20MetadataUpgradeable"; export type { IERC20Upgradeable } from "./IERC20Upgradeable"; -export type { ERC721Upgradeable } from "./ERC721Upgradeable"; -export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; -export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; -export type { IERC721Upgradeable } from "./IERC721Upgradeable"; export type { ContextUpgradeable } from "./ContextUpgradeable"; -export type { ERC165Upgradeable } from "./ERC165Upgradeable"; -export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; export type { ERC1155 } from "./ERC1155"; @@ -44,6 +34,8 @@ export type { SeedDance } from "./SeedDance"; export type { ERC20Redeem } from "./ERC20Redeem"; export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; +export type { Factory } from "./Factory"; +export type { IFactory } from "./IFactory"; export type { NoticeBoard } from "./NoticeBoard"; export type { OrderBook } from "./OrderBook"; export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; @@ -97,22 +89,12 @@ export type { AllStandardOpsStateBuilder } from "./AllStandardOpsStateBuilder"; export type { RainVM } from "./RainVM"; export type { VMStateBuilder } from "./VMStateBuilder"; -export { Factory__factory } from "./factories/Factory__factory"; -export { IFactory__factory } from "./factories/IFactory__factory"; -export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; -export { IERC2981Upgradeable__factory } from "./factories/IERC2981Upgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; export { ERC20Upgradeable__factory } from "./factories/ERC20Upgradeable__factory"; export { ERC20BurnableUpgradeable__factory } from "./factories/ERC20BurnableUpgradeable__factory"; export { IERC20MetadataUpgradeable__factory } from "./factories/IERC20MetadataUpgradeable__factory"; export { IERC20Upgradeable__factory } from "./factories/IERC20Upgradeable__factory"; -export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; -export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; -export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; -export { IERC721Upgradeable__factory } from "./factories/IERC721Upgradeable__factory"; export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; -export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; -export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { ERC1155__factory } from "./factories/ERC1155__factory"; @@ -140,6 +122,8 @@ export { SeedDance__factory } from "./factories/SeedDance__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; +export { Factory__factory } from "./factories/Factory__factory"; +export { IFactory__factory } from "./factories/IFactory__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; export { OrderBook__factory } from "./factories/OrderBook__factory"; export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; diff --git a/test/8_friendlySource.test.ts b/test/8_friendlySource.test.ts index 044cfac..07f57ba 100644 --- a/test/8_friendlySource.test.ts +++ b/test/8_friendlySource.test.ts @@ -24,7 +24,6 @@ import { deployErc1155, } from './utils'; - const { bytify, op, @@ -36,12 +35,12 @@ const { } = utils; const Opcode = AllStandardOps; -const a = true ? 1: 2; +const a = true ? 1 : 2; if (a == 2) { // } -describe.only('Human Friendly Source Generator', () => { +describe('Human Friendly Source Generator', () => { it('should generate the human friendly from an exponentiation op source', async () => { const constants = [5, 2]; @@ -1586,7 +1585,7 @@ describe.only('Human Friendly Source Generator', () => { ); }); - it.only('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { + it('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { const [arbitrary] = await ethers.getSigners(); const ERC721Address = arbitrary.address; const fixedPrice = '20'; @@ -1679,211 +1678,42 @@ describe.only('Human Friendly Source Generator', () => { ], }; + // @ts-ignore const friendly = HumanFriendlySource.get(saleConfig, { contract: 'sale', pretty: true, }); - console.log(friendly); - - // // prettier-ignore - // const expectOutput = - // `EAGER_IF( - // EAGER_IF( - // LESS_THAN( - // CURRENT_TIMESTAMP, - // ${splitTimestamp} - // ), - // EAGER_IF( - // ISZERO( - // IERC721_BALANCE_OF( - // ${ERC721Address}, - // SENDER - // ) - // ), - // 0, - // CONTEXT[0] - // ), - // CONTEXT[0] - // ), - // LESS_THAN( - // CURRENT_TIMESTAMP, - // ${splitTimestamp} - // ), - // DIV( - // MUL( - // ADD( - // STORAGE( - // ${FixedPrice} - // ), - // ${ReserveBalance} - // ), - // MAX( - // SATURATING_SUB( - // ${InitWeight}, - // MUL( - // SATURATING_SUB( - // CURRENT_TIMESTAMP, - // ${splitTimestamp} - // ), - // ${WeightChange} - // ) - // ), - // ${one} - // ) - // ), - // STORAGE( - // MAX( - // SATURATING_SUB( - // ${InitWeight}, - // MUL( - // SATURATING_SUB( - // CURRENT_TIMESTAMP, - // ${splitTimestamp} - // ), - // ${WeightChange} - // ) - // ), - // ${one} - // ) - // ) - // ) - // )`; - - // expect(HumanFriendlySource.prettify(friendly)).to.be.equals(expectOutput); - }); - - it('should generate the friendly source with the correct context if the contract type is provided', async () => { - const [arbitrary] = await ethers.getSigners(); - const ERC721Address = arbitrary.address; - const fixedPrice = '20'; - const reserveTokenDecimals = 18; - const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); - const initialSupply = ethers.BigNumber.from('2000').mul(ONE); - - const splitTimestamp = await Time.currentTime(); - const endTimestamp = Time.duration - .minutes(60) - .add(splitTimestamp) - .toNumber(); - const dutchAuctionstartPrice = 50; - - //1st phase constants - const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase - - // initial calculations for dutch auction 2nd phase - let dutchAuctionDuration = endTimestamp - splitTimestamp; - let balanceReserve = minimumRaise.mul(5); - let initWeight = initialSupply - .mul(dutchAuctionstartPrice) - .div(balanceReserve); - let weightChange = initWeight.sub(1).div(dutchAuctionDuration); - - // 2nd phase constants - const ReserveBalance = parseUnits( - // Virtual reserve token balance - balanceReserve.toString(), - reserveTokenDecimals - ); - - const InitWeight = parseUnits(initWeight.toString()); // initial weight - - const WeightChange = parseUnits( - weightChange.toNumber().toFixed(5).toString() - ); // weight change per timestamp - - const one = parseUnits((1).toString()); // minimum possible weight - - const saleConfig: StateConfig = { - constants: [ - splitTimestamp, // timestamp that splits the phases - ERC721Address, - FixedPrice, - 0, - ReserveBalance, - InitWeight, - WeightChange, - one, - ], - - sources: [ - concat([ - // Amount script - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.IERC721_BALANCE_OF), - op(VM.Opcodes.ISZERO), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand - op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), - op(VM.Opcodes.EAGER_IF), - // Price script - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.MAX, 2), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand - op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.EAGER_IF), - ]), - ], - }; - - const friendlyUgly = HumanFriendlySource.get(saleConfig, { - contract: 'SALE', - }); - - const expectedOutputUgly = `EAGER_IF(EAGER_IF(LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), EAGER_IF(ISZERO(IERC721_BALANCE_OF(${ERC721Address}, SENDER)), 0, CurrentBuyUnits), CurrentBuyUnits), LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), DIV(MUL(ADD(STORAGE(${FixedPrice}), ${ReserveBalance}), MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one})), STORAGE(MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one}))))`; - - expect(friendlyUgly).to.be.equals(expectedOutputUgly); - // prettier-ignore - const expectOutputPretty = + const expectOutput = `EAGER_IF( + LESS_THAN( + CURRENT_TIMESTAMP, + ${splitTimestamp} + ), EAGER_IF( - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - EAGER_IF( - ISZERO( - IERC721_BALANCE_OF( - ${ERC721Address}, - SENDER - ) - ), - 0, - CurrentBuyUnits + ISZERO( + IERC721_BALANCE_OF( + ${ERC721Address}, + SENDER() + ) ), + 0, CurrentBuyUnits ), + CurrentBuyUnits +) + +EAGER_IF( LESS_THAN( CURRENT_TIMESTAMP, ${splitTimestamp} ), + ${FixedPrice}, DIV( MUL( ADD( - STORAGE( - ${FixedPrice} - ), + TotalReserveIn, ${ReserveBalance} ), MAX( @@ -1900,33 +1730,14 @@ describe.only('Human Friendly Source Generator', () => { ${one} ) ), - STORAGE( - MAX( - SATURATING_SUB( - ${InitWeight}, - MUL( - SATURATING_SUB( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${WeightChange} - ) - ), - ${one} - ) - ) + RemainingUnits ) )`; - const friendlyPretty = HumanFriendlySource.get(saleConfig, { - contract: 'SALE', - pretty: true, - }); - - expect(friendlyPretty).to.be.equals(expectOutputPretty); + expect(friendly).to.be.equals(expectOutput); }); - it('should generate the friendly source with the correct context and already prettified if the config is set', async () => { + it('should throw an error if the script use STORAGE op and does not provide the contact/context', async () => { const [arbitrary] = await ethers.getSigners(); const ERC721Address = arbitrary.address; const fixedPrice = '20'; @@ -2019,84 +1830,11 @@ describe.only('Human Friendly Source Generator', () => { ], }; - const friendlyUgly = HumanFriendlySource.get(saleConfig, { - contract: 'SALE', - }); - - const expectedOutputUgly = `EAGER_IF(EAGER_IF(LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), EAGER_IF(ISZERO(IERC721_BALANCE_OF(${ERC721Address}, SENDER)), 0, CurrentBuyUnits), CurrentBuyUnits), LESS_THAN(CURRENT_TIMESTAMP, ${splitTimestamp}), DIV(MUL(ADD(STORAGE(${FixedPrice}), ${ReserveBalance}), MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one})), STORAGE(MAX(SATURATING_SUB(${InitWeight}, MUL(SATURATING_SUB(CURRENT_TIMESTAMP, ${splitTimestamp}), ${WeightChange})), ${one}))))`; - - expect(friendlyUgly).to.be.equals(expectedOutputUgly); - - // prettier-ignore - const expectOutputPretty = -`EAGER_IF( - EAGER_IF( - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - EAGER_IF( - ISZERO( - IERC721_BALANCE_OF( - ${ERC721Address}, - SENDER - ) - ), - 0, - CurrentBuyUnits - ), - CurrentBuyUnits - ), - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - DIV( - MUL( - ADD( - STORAGE( - ${FixedPrice} - ), - ${ReserveBalance} - ), - MAX( - SATURATING_SUB( - ${InitWeight}, - MUL( - SATURATING_SUB( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${WeightChange} - ) - ), - ${one} - ) - ), - STORAGE( - MAX( - SATURATING_SUB( - ${InitWeight}, - MUL( - SATURATING_SUB( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${WeightChange} - ) - ), - ${one} - ) - ) - ) -)`; - - const friendlyPretty = HumanFriendlySource.get(saleConfig, { - contract: 'SALE', - pretty: true, - }); - - expect(friendlyPretty).to.be.equals(expectOutputPretty); + expect(() => { + HumanFriendlySource.get(saleConfig, { + pretty: true, + }); + }).to.throw('Not contract/context provided to get the STORAGE'); }); it('brackets prettify', async () => { @@ -2156,7 +1894,7 @@ describe.only('Human Friendly Source Generator', () => { pretty: true, }); - const expectedOutput = `ZIPMAP( + const expectedOutput = `ZIPMAP_8( [ "00000001", "00000000", @@ -2177,7 +1915,7 @@ describe.only('Human Friendly Source Generator', () => { "ffffffff", "ffffffff" ], - EAGER_IF(ISZERO(^0),^1,^0) + EAGER_IF(ISZERO(^0), ^1, ^0) )`; expect(friendlyPretty).to.be.equals(expectedOutput); From 3c4336b12ddd0c3e404f513a604c215113079ccb Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 14 Jul 2022 12:30:44 +0000 Subject: [PATCH 038/125] upgrade for SDK - friendly source debug and update - jsvm update - new script generator methods and templates - added docs - tests for orderbook and stake - some refactors, debugs, fixes and cleanups --- src/RainJS/CombineTierJS.ts | 53 +- src/RainJS/EmissionsERC20JS.ts | 54 +- src/RainJS/OrderbookJS.ts | 92 +- src/RainJS/RainJS.ts | 105 +- src/RainJS/SaleJS.ts | 44 +- src/RainJS/matchmaker.ts | 149 +- src/RainJS/types.ts | 35 +- src/RainJS/vmSimulation.ts | 41 +- src/classes/factoryContract.ts | 2 +- src/classes/rainContract.ts | 2 +- src/classes/tierContract.ts | 49 +- src/classes/vm.ts | 416 +++- src/contracts/emissionsERC20.ts | 68 +- src/contracts/generics/erc1155.ts | 5 +- src/contracts/generics/erc20.ts | 21 +- src/contracts/generics/erc721.ts | 5 +- src/contracts/noticeBoard.ts | 7 + src/contracts/orderBook.ts | 156 +- src/contracts/redeemableERC20.ts | 40 +- src/contracts/redeemableERC20ClaimEscrow.ts | 7 + src/contracts/sale.ts | 25 +- .../combineTierScriptGenerator.ts | 311 +-- .../emissionsERC20ScriptGenerator.ts | 104 +- .../script-generators/saleScriptGenerator.ts | 26 +- src/contracts/stake.ts | 207 +- src/contracts/tiers/combineTier.ts | 38 +- src/contracts/tiers/iTierV2.ts | 27 +- src/contracts/tiers/verifyTier.ts | 29 +- src/contracts/verify.ts | 13 +- src/index.ts | 5 +- src/typechain/ERC165Upgradeable.ts | 106 + src/typechain/ERC721.ts | 10 +- src/typechain/ERC721Burnable.ts | 10 +- src/typechain/ERC721Upgradeable.ts | 537 +++++ src/typechain/IERC165Upgradeable.ts | 95 + src/typechain/IERC20Permit.ts | 168 ++ src/typechain/IERC2981Upgradeable.ts | 141 ++ src/typechain/IERC721MetadataUpgradeable.ts | 531 +++++ src/typechain/IERC721ReceiverUpgradeable.ts | 113 + src/typechain/IERC721Upgradeable.ts | 480 ++++ src/typechain/OwnableUpgradeable.ts | 167 ++ src/typechain/ReserveTokenERC721.ts | 10 +- .../AllStandardOpsStateBuilder__factory.ts | 2 +- .../factories/AllStandardOpsTest__factory.ts | 2 +- .../factories/CombineTierFactory__factory.ts | 2 +- .../factories/CombineTier__factory.ts | 2 +- src/typechain/factories/ERC1155__factory.ts | 2 +- .../factories/ERC165Upgradeable__factory.ts | 58 + .../factories/ERC20PulleeTest__factory.ts | 2 +- .../factories/ERC20Redeem__factory.ts | 2 +- .../factories/ERC20Upgradeable__factory.ts | 2 +- src/typechain/factories/ERC20__factory.ts | 2 +- .../factories/ERC721Burnable__factory.ts | 2 +- .../factories/ERC721Upgradeable__factory.ts | 404 ++++ src/typechain/factories/ERC721__factory.ts | 4 +- .../EmissionsERC20Factory__factory.ts | 2 +- .../factories/EmissionsERC20__factory.ts | 2 +- .../factories/FnPtrsTest__factory.ts | 2 +- .../factories/IERC165Upgradeable__factory.ts | 45 + .../factories/IERC20Permit__factory.ts | 98 + .../factories/IERC2981Upgradeable__factory.ts | 74 + .../IERC721MetadataUpgradeable__factory.ts | 360 +++ .../IERC721ReceiverUpgradeable__factory.ts | 64 + .../factories/IERC721Upgradeable__factory.ts | 311 +++ .../OrderBookStateBuilder__factory.ts | 2 +- src/typechain/factories/OrderBook__factory.ts | 2 +- .../factories/OwnableUpgradeable__factory.ts | 91 + ...eemableERC20ClaimEscrowWrapper__factory.ts | 2 +- .../RedeemableERC20ClaimEscrow__factory.ts | 2 +- .../RedeemableERC20Factory__factory.ts | 2 +- .../RedeemableERC20Reentrant__factory.ts | 2 +- .../factories/RedeemableERC20__factory.ts | 2 +- .../factories/ReserveToken18__factory.ts | 2 +- .../factories/ReserveTokenERC1155__factory.ts | 2 +- .../ReserveTokenERC20Snapshot__factory.ts | 2 +- .../factories/ReserveTokenERC721__factory.ts | 4 +- .../factories/ReserveTokenTest__factory.ts | 2 +- .../factories/ReserveToken__factory.ts | 2 +- .../factories/SaleFactory__factory.ts | 2 +- .../factories/SaleReentrant__factory.ts | 2 +- src/typechain/factories/Sale__factory.ts | 2 +- .../factories/StackHeightTest__factory.ts | 2 +- .../factories/StakeFactory__factory.ts | 2 +- src/typechain/factories/Stake__factory.ts | 2 +- .../factories/VMStateBuilder__factory.ts | 2 +- .../factories/VerifyCallbackTest__factory.ts | 2 +- .../factories/VerifyFactory__factory.ts | 2 +- .../factories/VerifyTierFactory__factory.ts | 2 +- .../factories/VerifyTier__factory.ts | 2 +- src/typechain/factories/Verify__factory.ts | 2 +- src/typechain/hardhat.d.ts | 99 + src/typechain/index.ts | 26 +- src/utils.ts | 28 +- test/1_initSDK.test.ts | 22 +- test/2_sale.test.ts | 19 +- test/3_verify.test.ts | 2 +- test/4_tiers.test.ts | 26 +- test/5_escrow.test.ts | 8 +- test/{7_RainJS.test.ts => 6_RainJS.test.ts} | 0 ...ource.test.ts => 7_FriendlySource.test.ts} | 2 +- test/8_Stake.test.ts | 495 ++++ test/9_Orderbook.test.ts | 533 +++++ test/9_stake.test.ts | 74 - test/utils.ts | 188 +- yarn.lock | 2015 +++++++++-------- 105 files changed, 7568 insertions(+), 2060 deletions(-) create mode 100644 src/typechain/ERC165Upgradeable.ts create mode 100644 src/typechain/ERC721Upgradeable.ts create mode 100644 src/typechain/IERC165Upgradeable.ts create mode 100644 src/typechain/IERC20Permit.ts create mode 100644 src/typechain/IERC2981Upgradeable.ts create mode 100644 src/typechain/IERC721MetadataUpgradeable.ts create mode 100644 src/typechain/IERC721ReceiverUpgradeable.ts create mode 100644 src/typechain/IERC721Upgradeable.ts create mode 100644 src/typechain/OwnableUpgradeable.ts create mode 100644 src/typechain/factories/ERC165Upgradeable__factory.ts create mode 100644 src/typechain/factories/ERC721Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC165Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC20Permit__factory.ts create mode 100644 src/typechain/factories/IERC2981Upgradeable__factory.ts create mode 100644 src/typechain/factories/IERC721MetadataUpgradeable__factory.ts create mode 100644 src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts create mode 100644 src/typechain/factories/IERC721Upgradeable__factory.ts create mode 100644 src/typechain/factories/OwnableUpgradeable__factory.ts rename test/{7_RainJS.test.ts => 6_RainJS.test.ts} (100%) rename test/{8_friendlySource.test.ts => 7_FriendlySource.test.ts} (99%) create mode 100644 test/8_Stake.test.ts create mode 100644 test/9_Orderbook.test.ts delete mode 100644 test/9_stake.test.ts diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts index 21f7048..6f60ee8 100644 --- a/src/RainJS/CombineTierJS.ts +++ b/src/RainJS/CombineTierJS.ts @@ -1,10 +1,7 @@ -import { BigNumber, Signer } from 'ethers'; +import { Signer } from 'ethers'; import { StateConfig } from '../classes/vm'; -import { ApplyOpFn, RainJS, StateJS } from './RainJS'; -import { - CombineTierContext, - CombineTierStorage, -} from '../contracts/tiers/combineTier'; +import { ApplyOpFn, RainJS } from './RainJS'; +import { CombineTierStorage } from '../contracts/tiers/combineTier'; /** * @public - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. @@ -12,6 +9,17 @@ import { * */ export class CombineTierJS extends RainJS { + + /** + * CombineTierJS can have any length for context + */ + protected readonly ContextLength = NaN; + + /** + * CombineTierJS valid storage range + */ + protected readonly StorageRange = CombineTierStorage.length; + /** * Constructor of CombineTierJS to create a instance of this class with CombineTier's local opcodes. * @see RainJS @@ -27,8 +35,8 @@ export class CombineTierJS extends RainJS { signer?: Signer, contract?: string, applyOpFn?: ApplyOpFn, + contextLength?: number, storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the CombineTierJS's CONTEXT opcode function } ) { super( @@ -37,42 +45,17 @@ export class CombineTierJS extends RainJS { signer: options?.signer, contract: options?.contract, applyOpFn: options?.applyOpFn, + contextLength: options?.contextLength, } ); // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction - for (let i = 0; i < CombineTierStorage.length; i++) { - if (options?.storageOpFn && options.storageOpFn[i]) { - this._STORAGE_[i] = options.storageOpFn[i]; - } - } - for (let i = 0; i < CombineTierContext.length; i++) { - if (options?.contextOpFn && options.contextOpFn[i]) { - this._CONTEXT_[i] = options.contextOpFn[i]; - } + if (options?.storageOpFn) { + this._STORAGE_ = options.storageOpFn; } } - /** - * key/value pair of CONTEXT opcodes of the CombineTier JSVM - * the required value need to be passed to "run" method as the context array in "data" object. - * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - */ - protected _CONTEXT_: ApplyOpFn = { - [CombineTierContext.Account]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (data && data.context !== undefined) { - state.stack.push( - BigNumber.from(data.context[CombineTierContext.Account]) - ); - } else throw new Error('Undefined buy units'); - }, - }; - /** * key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) * @remarks CombineTier doesnt have any STORAGE opcode by default and in its contract level, diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts index 369ae8c..093f76d 100644 --- a/src/RainJS/EmissionsERC20JS.ts +++ b/src/RainJS/EmissionsERC20JS.ts @@ -1,10 +1,7 @@ -import { BigNumber, Signer } from "ethers"; +import { Signer } from "ethers"; import { StateConfig } from "../classes/vm"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; -import { - EmissionsERC20Context, - EmissionsERC20Storage, -} from '../contracts/emissionsERC20'; +import { ApplyOpFn, RainJS } from "./RainJS"; +import { EmissionsERC20Context, EmissionsERC20Storage } from "../contracts/emissionsERC20"; /** * @public - The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. @@ -12,6 +9,17 @@ import { * */ export class EmissionsERC20JS extends RainJS { + + /** + * EmissionsERC20JS valid storage range + */ + protected readonly StorageRange = EmissionsERC20Storage.length; + + /** + * EmissionsERC20JS valid context length + */ + protected readonly ContextLength = EmissionsERC20Context.length; + /** * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. * @see RainJS @@ -27,8 +35,8 @@ export class EmissionsERC20JS extends RainJS { signer?: Signer, contract?: string, applyOpFn?: ApplyOpFn, + storageRange?: number; storageOpFn?: ApplyOpFn, // for overriding the EmissionsERC20's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the EmissionsERC20's CONTEXT opcode function } ) { super( @@ -36,43 +44,17 @@ export class EmissionsERC20JS extends RainJS { { signer: options?.signer, contract: options?.contract, - applyOpFn: options?.applyOpFn, + applyOpFn: options?.applyOpFn } ); // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction - for (let i = 0; i < EmissionsERC20Storage.length; i++) { - if (options?.storageOpFn && options.storageOpFn[i]) { - this._STORAGE_[i] = options.storageOpFn[i]; - } - } - for (let i = 0; i < EmissionsERC20Context.length; i++) { - if (options?.contextOpFn && options.contextOpFn[i]) { - this._CONTEXT_[i] = options.contextOpFn[i]; - } + if (options?.storageOpFn) { + this._STORAGE_ = options.storageOpFn; } } - /** - * key/value pair of CONTEXT opcodes of the CombineTier JSVM - * the required value need to be passed to "run" method as the context array in "data" object. - * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - */ - protected _CONTEXT_: ApplyOpFn = { - [EmissionsERC20Context.ClaimantAccount]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (data && data.context !== undefined) { - state.stack.push( - BigNumber.from(data.context[EmissionsERC20Context.ClaimantAccount]) - ); - } else throw new Error('Undefined buy units'); - }, - }; - /** * key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) * @remarks EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, diff --git a/src/RainJS/OrderbookJS.ts b/src/RainJS/OrderbookJS.ts index 117d5df..f22c5f2 100644 --- a/src/RainJS/OrderbookJS.ts +++ b/src/RainJS/OrderbookJS.ts @@ -1,8 +1,7 @@ -import { BigNumber, Signer } from 'ethers'; +import { Signer } from 'ethers'; import { StateConfig } from '../classes/vm'; import { ApplyOpFn, RainJS, StateJS } from './RainJS'; -import { OrderBook, OrderbookContext } from '../contracts/orderBook'; -//import { AddressBook } from '../addresses'; +import { OrderBook, OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; // @TODO - not complete, local opcodes functions need to be added @@ -14,9 +13,19 @@ import { OrderBook, OrderbookContext } from '../contracts/orderBook'; export class OrderbookJS extends RainJS { /** - * + * OrderbookJS valid storage range */ - public chainId?: number; + protected readonly StorageRange = OrderbookStorage.length; + + /** + * OrderbookJS valid context length + */ + protected readonly ContextLength = OrderbookContext.length; + + // /** + // * + // */ + // public chainId?: number; /** * Constructor of OrderbookJS to create a instance of this class with Orderbook's local opcodes. @@ -34,43 +43,39 @@ export class OrderbookJS extends RainJS { contract?: string; applyOpFn?: ApplyOpFn; storageOpFn?: ApplyOpFn; // for overriding the OrderbookJS's STORAGE opcode function - contextOpFn?: ApplyOpFn; // for overriding the OrderbookJS's CONTEXT opcode function chainId?: number } ) { - super(state, { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - }); + super( + state, + { + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + } + ); // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction if (options?.storageOpFn !== undefined) { this._STORAGE_ = options.storageOpFn; } - for (let i = 0; i < OrderbookContext.length; i++) { - if (options?.contextOpFn && options.contextOpFn[i]) { - this._CONTEXT_[i] = options.contextOpFn[i]; - } - } - if (options && options.chainId !== undefined) { - this.chainId = options.chainId; - } + // if (options && options.chainId !== undefined) { + // this.chainId = options.chainId; + // } } - /** - * - * @param chainId - */ - public setChainId (chainId: number) { - this.chainId = chainId; - } + // /** + // * + // * @param chainId + // */ + // public setChainId (chainId: number) { + // this.chainId = chainId; + // } protected _OPCODE_: ApplyOpFn = { - ...this._OPCODE_, - + ...this._OPCODE_, [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async ( @@ -116,37 +121,6 @@ export class OrderbookJS extends RainJS { }, }; - /** - * key/value pair of CONTEXT opcodes of the Orderbook JSVM - * the required value need to be passed to "run" method as the context array in "data" object. - * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - */ - protected _CONTEXT_: ApplyOpFn = { - [OrderbookContext.OrderHash]: ( - state: StateJS, - operand: number, - data?: any - ) => { - if (data && data.context !== undefined) { - state.stack.push( - BigNumber.from(data.context[OrderbookContext.OrderHash]) - ); - } else throw new Error('Undefined buy units'); - }, - - [OrderbookContext.CounterParty]: ( - state: StateJS, - operand: number, - data?: any - ) => { - if (data && data.context !== undefined) { - state.stack.push( - BigNumber.from(data.context[OrderbookContext.CounterParty]) - ); - } else throw new Error('Undefined buy units'); - }, - }; - /** * key/value pair of STORAGE opcodes of the Orderbook JSVM (empty with no functions) * @remarks Orderbook doesnt have any STORAGE opcode by default and in its contract level, diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 2a8ff7c..48d7356 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -1,13 +1,12 @@ -import { BigNumber, ethers, Signer } from 'ethers'; +import { eighteenZeros } from './types'; import { Tier } from '../classes/tierContract'; import { StateConfig, VM } from '../classes/vm'; +import { BigNumber, ethers, Signer } from 'ethers'; import { ERC1155 } from '../contracts/generics/erc1155'; import { ERC20 } from '../contracts/generics/erc20'; import { ERC721 } from '../contracts/generics/erc721'; import { ITierV2 } from '../contracts/tiers/iTierV2'; -import { Provider } from '../types'; import { ERC20Snapshot__factory } from '../typechain'; -import { eighteenZeros } from './types'; import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; @@ -84,26 +83,24 @@ export class RainJS { public signer?: Signer; /** - * An ethers provider. + * The contract address of the instance of this class used for THIS_ADDRESS opcode */ - public provider?: Provider; + public contract?: string; /** - * An ethers Contract + * Object that contains the STORAGE opcode functions (i.e. local opcodes) */ - public contract?: string; + protected _STORAGE_?: ApplyOpFn; /** - * Object that contains the CONTEXT opcode functions (i.e. local opcodes) - * the required value need to be passed to "run" method as the context array in "data" object. - * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. + * Length of the valid context argument accessible by eval */ - protected _CONTEXT_?: ApplyOpFn; + protected readonly ContextLength: number = 0; /** - * Object that contains the STORAGE opcode functions (i.e. local opcodes) + * Range of available storage variables accessible by eval */ - protected _STORAGE_?: ApplyOpFn; + protected readonly StorageRange: number = 0; /** * The constructor of RainJS which initiates the RainJS and also a StateJS for a RainVM script. @@ -116,11 +113,11 @@ export class RainJS { state: StateConfig, options?: { signer?: Signer; - provider?: Provider; contract?: string; applyOpFn?: ApplyOpFn; - storageOpFn?: ApplyOpFn; // for overriding the CombineTierJS's STORAGE opcode function - contextOpFn?: ApplyOpFn; // for overriding the CombineTierJS's CONTEXT opcode function + contextLength?: number; + storageRange?: number; + storageOpFn?: ApplyOpFn; // for providing STORAGE opcode functions } ) { const stack: BigNumber[] = []; @@ -144,12 +141,18 @@ export class RainJS { this.applyOpFn = options?.applyOpFn; this.signer = options?.signer; this.contract = options?.contract; - this.provider = options?.provider ?? options?.signer?.provider; + + // assigning the StorageRange and ContextLength + if (options?.contextLength) { + this.ContextLength = options.contextLength; + } + if (options?.storageRange) { + this.StorageRange = options.storageRange; + } - // assigning custom functions to the STORAGE/CONTEXT functions + // assigning custom functions to the STORAGE functions // custom functions should be passed at the time construction this._STORAGE_ = options?.storageOpFn; - this._CONTEXT_ = options?.contextOpFn; } /** @@ -269,10 +272,22 @@ export class RainJS { operand: number, data?: any ) => { - if (this._CONTEXT_) { - await this._CONTEXT_[operand](state, operand, data); + if (this.ContextLength) { + if (this.ContextLength > 0 && operand < this.ContextLength) { + if (data?.context && data.context[operand] !== undefined) { + state.stack.push( + BigNumber.from(data.context[operand]) + ); + } else throw new Error('Undefined context'); + } + else throw new Error("out-of-bounds context") + } + else if (data?.context && data.context[operand] !== undefined) { + state.stack.push( + BigNumber.from(data.context[operand]) + ); } - else throw new Error('no or out of bounds contexxt opcode'); + else throw new Error('Undefined context'); }, [VM.Opcodes.STORAGE]: async ( @@ -280,10 +295,16 @@ export class RainJS { operand: number, data?: any ) => { - if (this._STORAGE_) { - await this._STORAGE_[operand](state, operand, data); - } - else throw new Error('no or out-of-bound storage opcode'); + if (this.StorageRange > 0 && operand < this.StorageRange) { + if (this._STORAGE_) { + if (this._STORAGE_[operand]) { + await this._STORAGE_[operand](state, operand, data); + } + else throw new Error('no or out-of-bound storage opcode') + } + else {}; + } + else {}; }, [VM.Opcodes.ZIPMAP]: async ( @@ -512,10 +533,14 @@ export class RainJS { operand: number, data?: any ) => { - if (this.provider !== undefined) { - state.stack.push(BigNumber.from(await this.provider.getBlockNumber())); + if (this.signer !== undefined) { + const _provider = this.signer.provider; + if (_provider !== undefined) { + state.stack.push(BigNumber.from(await _provider.getBlockNumber())); + } + else throw new Error("undefined Provider") } - else throw new Error('Undefined Provider'); + else throw new Error('Undefined Signer'); }, [VM.Opcodes.SENDER]: async ( @@ -545,15 +570,19 @@ export class RainJS { operand: number, data?: any ) => { - if (this.provider !== undefined) { - state.stack.push( - BigNumber.from( - (await this.provider.getBlock(await this.provider.getBlockNumber())) - .timestamp - ) - ); + if (this.signer !== undefined) { + const _provider = this.signer.provider; + if (_provider !== undefined) { + state.stack.push( + BigNumber.from( + (await _provider.getBlock(await _provider.getBlockNumber())) + .timestamp + ) + ); + } + else throw new Error("Undefined provider") } - else throw new Error('Undefined Provider'); + else throw new Error('Undefined Signer'); }, [VM.Opcodes.SCALE18]: (state: StateJS, operand: number, data?: any) => { @@ -1126,4 +1155,4 @@ export class RainJS { else throw new Error('Undefined stack variables'); }, }; -} +} \ No newline at end of file diff --git a/src/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts index 3fb0073..35bdf88 100644 --- a/src/RainJS/SaleJS.ts +++ b/src/RainJS/SaleJS.ts @@ -3,8 +3,6 @@ import { StateConfig } from "../classes/vm"; import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; import { ERC20 } from "../contracts/generics/erc20"; import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; -import { parseUnits } from "../utils"; - /** @@ -14,6 +12,15 @@ import { parseUnits } from "../utils"; */ export class SaleJS extends RainJS { + /** + * SaleJS valid storage range + */ + protected readonly StorageRange = SaleStorage.length; + + /** + * SaleJS valid context length + */ + protected readonly ContextLength = SaleContext.length; /** * Constructor of SaleJS to create a instance of this class with Sale's local opcodes. @@ -31,7 +38,6 @@ export class SaleJS extends RainJS { contract?: string, applyOpFn?: ApplyOpFn, storageOpFn?: ApplyOpFn, // for overriding the SaleJS's STORAGE opcode function - contextOpFn?: ApplyOpFn // for overriding the SaleJS's CONTEXT opcode function } ) { super( @@ -45,16 +51,9 @@ export class SaleJS extends RainJS { // assigning custom functions to the STORAGE/CONTEXT functions // custom functions should be passed at the time construction - for (let i = 0; i < SaleStorage.length; i++) { - if (options?.storageOpFn && options.storageOpFn[i]) { - this._STORAGE_[i] = options.storageOpFn[i]; - } - }; - for (let i = 0; i < SaleContext.length; i++) { - if (options?.contextOpFn && options.contextOpFn[i]) { - this._CONTEXT_[i] = options.contextOpFn[i]; - } - }; + if (options?.storageOpFn) { + this._STORAGE_ = options.storageOpFn; + } }; /** @@ -124,24 +123,5 @@ export class SaleJS extends RainJS { else throw new Error("Undefined Signer or Sale Contract") }, }; - - /** - * key/value pair of CONTEXT opcodes of the sale JSVM - * the required value need to be passed to "run" method as the context array in "data" object. - * the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - */ - protected _CONTEXT_: ApplyOpFn = { - [SaleContext.CurrentBuyUnits] : - async(state: StateJS, operand: number, data?: any) => { - if(data && data.context !== undefined) { - state.stack.push( - parseUnits( - data.context[SaleContext.CurrentBuyUnits].toString() - ) - ) - } - else throw new Error("Undefined buy units") - }, - } } \ No newline at end of file diff --git a/src/RainJS/matchmaker.ts b/src/RainJS/matchmaker.ts index 21291f2..552f910 100644 --- a/src/RainJS/matchmaker.ts +++ b/src/RainJS/matchmaker.ts @@ -1,9 +1,9 @@ import { BigNumber } from "ethers"; -import { OrderbookJS } from "./OrderbookJS"; import { VM } from "../classes/vm"; +import { OrderbookJS } from "./OrderbookJS"; import { OrderbookSimulation } from "./vmSimulation"; -import { FixedPrice, IncDecPrice } from "../contracts/script-generators/saleScriptGenerator"; -import { parseUnits } from "../utils"; +import { FixedPrice, IncDecPrice } from "../../src"; +import { paddedUInt160, paddedUInt256, parseUnits } from "../utils"; import { order, erc20s, @@ -173,16 +173,19 @@ var timer = function(name: string) { }; //simulating some addresses -let sender1 = "0x11111"; -let sender2 = "0x22222"; -let sender3 = "0x33333"; -let sender4 = "0x44444"; -let sender6 = "0x66666"; -let orderbook = "0x55555"; - +let sender1 = paddedUInt160("0x11111"); +let sender2 = paddedUInt160("0x22222"); +let sender3 = paddedUInt160("0x33333"); +let sender4 = paddedUInt160("0x44444"); +let sender6 = paddedUInt160("0x66666"); +let orderbook = paddedUInt160("0x55555"); + +const token1 = paddedUInt160("0x1") +const token2 = paddedUInt160("0x2") +const token3 = paddedUInt160("0x3") //simulating some erc20 tokens let tokens: erc20s = { - "0x1": { + [token1]: { totalSupply: parseUnits((1000).toString()), decimals: 18, balanceOf: { @@ -193,7 +196,7 @@ let tokens: erc20s = { [orderbook]: parseUnits((0).toString()), } }, - "0x2": { + [token2]: { totalSupply: parseUnits((2000).toString()), decimals: 18, balanceOf: { @@ -204,7 +207,7 @@ let tokens: erc20s = { [orderbook]: parseUnits((0).toString()), } }, - "0x3": { + [token3]: { totalSupply: parseUnits((500).toString()), decimals: 18, balanceOf: { @@ -223,60 +226,76 @@ const scriptB = VM.pair(new FixedPrice(10), new FixedPrice(0.4)); const scriptC = VM.pair(new FixedPrice(2), new IncDecPrice(0.1, 8, 1, 900)); // simulating some orders usinf the data above +const orderHash1 = paddedUInt256("0x1abc") +const vaultId101 = paddedUInt256("0x0101") +const vaultId201 = paddedUInt256("0x0201") + +const orderHash2 = paddedUInt256("0x2abc") +const vaultId202 = paddedUInt256("0x0202") +const vaultId302 = paddedUInt256("0x0302") + +const orderHash3 = paddedUInt256("0x3abc") +const vaultId203 = paddedUInt256("0x0203") +const vaultId103 = paddedUInt256("0x0103") + +const orderHash4 = paddedUInt256("0x4abc") +const vaultId304 = paddedUInt256("0x0304") +const vaultId204 = paddedUInt256("0x0204") + const order1 : order = { - orderHash: "0x1abc", + orderHash: orderHash1, owner: sender1, - inputToken: "0x1", - outputToken: "0x2", - inputVaultId: "0x101", - outputVaultId: "0x201", + inputToken: token1, + outputToken: token2, + inputVaultId: vaultId101, + outputVaultId: vaultId201, vmConfig: scriptA }; const order2 : order = { - orderHash: "0x2abc", + orderHash: orderHash2, owner: sender2, - inputToken: "0x2", - outputToken: "0x3", - inputVaultId: "0x202", - outputVaultId: "0x302", + inputToken: token2, + outputToken: token3, + inputVaultId: vaultId202, + outputVaultId: vaultId302, vmConfig: scriptC }; const order3 : order = { - orderHash: "0x3abc", + orderHash: orderHash3, owner: sender3, - inputToken: "0x2", - outputToken: "0x1", - inputVaultId: "0x203", - outputVaultId: "0x103", + inputToken: token2, + outputToken: token1, + inputVaultId: vaultId203, + outputVaultId: vaultId103, vmConfig: scriptB }; const order4 : order = { - orderHash: "0x4abc", + orderHash: orderHash4, owner: sender4, - inputToken: "0x3", - outputToken: "0x2", - inputVaultId: "0x304", - outputVaultId: "0x204", + inputToken: token3, + outputToken: token2, + inputVaultId: vaultId304, + outputVaultId: vaultId204, vmConfig: scriptB }; // bounty config for performing the matchmaking const bountyConfig1: bountyConfig = { - aVaultId: "0x88", - bVaultId: "0x99" + aVaultId: paddedUInt256("0x88"), + bVaultId: paddedUInt256("0x99") } // simulating an orderbook cycle async function bot() { try{ const matchmaker = new MatchMaker(orderbook, sender6); - matchmaker.timestamp = () => 1; + matchmaker.timestamp = 1; matchmaker.addAssets(tokens); matchmaker.setSender(sender6); console.log("checking sender1 balance of token 0x2:") - console.log("sender1 token0x2 balance before adding order and depositing: " + matchmaker.erc20s["0x2"].balanceOf[sender1].div(eighteenZeros).toNumber()); + console.log("sender1 token0x2 balance before adding order and depositing: " + matchmaker.erc20s[token2].balanceOf[sender1].div(eighteenZeros).toNumber()); console.log("---------------------------------------") console.log("adding orders") @@ -287,29 +306,29 @@ async function bot() { console.log("---------------------------------------") console.log("checking output valut balances of sener1 and sender3") - console.log("sender1 outputValt balance before depositing: " + matchmaker.vaults[sender1]["0x2"].vaultId["0x201"].div("100000000000000").toNumber()/10000) - console.log("sender3 outputValt balance before depositing: " + matchmaker.vaults[sender3]["0x1"].vaultId["0x103"].div("100000000000000").toNumber()/10000) - console.log("sender2 outputValt balance before depositing: " + matchmaker.vaults[sender2]["0x3"].vaultId["0x302"].div("100000000000000").toNumber()/10000) - console.log("sender4 outputValt balance before depositing: " + matchmaker.vaults[sender4]["0x2"].vaultId["0x204"].div("100000000000000").toNumber()/10000) + console.log("sender1 outputValt balance before depositing: " + matchmaker.vaults[sender1][token2].vaultId[vaultId201].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance before depositing: " + matchmaker.vaults[sender3][token1].vaultId[vaultId103].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance before depositing: " + matchmaker.vaults[sender2][token3].vaultId[vaultId302].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance before depositing: " + matchmaker.vaults[sender4][token2].vaultId[vaultId204].div("100000000000000").toNumber()/10000) console.log("---------------------------------------") console.log("depositing 30 tokens for order1 and 40 tokens for order3") - matchmaker.deposit(sender1, "0x2", "0x201", 30); - matchmaker.deposit(sender3, "0x1", "0x103", 40); - matchmaker.deposit(sender2, "0x3", "0x302", 70); - matchmaker.deposit(sender4, "0x2", "0x204", 60); + matchmaker.deposit(sender1, token2, vaultId201, 30); + matchmaker.deposit(sender3, token1, vaultId103, 40); + matchmaker.deposit(sender2, token3, vaultId302, 70); + matchmaker.deposit(sender4, token2, vaultId204, 60); console.log("---------------------------------------") console.log("checking the balances of sender1 and sender3 output vaults") - console.log("sender1 outputValt balance after depositing: " + matchmaker.vaults[sender1]["0x2"].vaultId["0x201"].div("100000000000000").toNumber()/10000) - console.log("sender3 outputValt balance after depositing: " + matchmaker.vaults[sender3]["0x1"].vaultId["0x103"].div("100000000000000").toNumber()/10000) - console.log("sender2 outputValt balance after depositing: " + matchmaker.vaults[sender2]["0x3"].vaultId["0x302"].div("100000000000000").toNumber()/10000) - console.log("sender4 outputValt balance after depositing: " + matchmaker.vaults[sender4]["0x2"].vaultId["0x204"].div("100000000000000").toNumber()/10000) + console.log("sender1 outputValt balance after depositing: " + matchmaker.vaults[sender1][token2].vaultId[vaultId201].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance after depositing: " + matchmaker.vaults[sender3][token1].vaultId[vaultId103].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance after depositing: " + matchmaker.vaults[sender2][token3].vaultId[vaultId302].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance after depositing: " + matchmaker.vaults[sender4][token2].vaultId[vaultId204].div("100000000000000").toNumber()/10000) console.log("---------------------------------------") console.log("checking sender1 balance of token 0x2") - console.log("sender1 token0x2 balance after dpositing: " + matchmaker.erc20s["0x2"].balanceOf[sender1].div(eighteenZeros).toNumber()) + console.log("sender1 token0x2 balance after dpositing: " + matchmaker.erc20s[token2].balanceOf[sender1].div(eighteenZeros).toNumber()) console.log("---------------------------------------") console.log("performing the match") @@ -320,30 +339,30 @@ async function bot() { console.log("---------------------------------------") console.log("checking output balances of sender1's and sender3's output vaults") - console.log("sender1 outputValt balance after matching: " + matchmaker.vaults[sender1]["0x2"].vaultId["0x201"].div("100000000000000").toNumber()/10000) - console.log("sender3 outputValt balance after matching: " + matchmaker.vaults[sender3]["0x1"].vaultId["0x103"].div("100000000000000").toNumber()/10000) - console.log("sender2 outputValt balance after matching: " + matchmaker.vaults[sender2]["0x3"].vaultId["0x302"].div("100000000000000").toNumber()/10000) - console.log("sender4 outputValt balance after matching: " + matchmaker.vaults[sender4]["0x2"].vaultId["0x204"].div("100000000000000").toNumber()/10000) + console.log("sender1 outputValt balance after matching: " + matchmaker.vaults[sender1][token2].vaultId[vaultId201].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance after matching: " + matchmaker.vaults[sender3][token1].vaultId[vaultId103].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance after matching: " + matchmaker.vaults[sender2][token3].vaultId[vaultId302].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance after matching: " + matchmaker.vaults[sender4][token2].vaultId[vaultId204].div("100000000000000").toNumber()/10000) console.log("---------------------------------------") console.log("checking input balances of sender1's and sender3's output vaults") - console.log("sender1 inputValt balance after matching: " + matchmaker.vaults[sender1]["0x1"].vaultId["0x101"].div("100000000000000").toNumber()/10000) - console.log("sender3 inputValt balance after matching: " + matchmaker.vaults[sender3]["0x2"].vaultId["0x203"].div("100000000000000").toNumber()/10000) - console.log("sender2 inputValt balance after matching: " + matchmaker.vaults[sender2]["0x2"].vaultId["0x202"].div("100000000000000").toNumber()/10000) - console.log("sender4 inputValt balance after matching: " + matchmaker.vaults[sender4]["0x3"].vaultId["0x304"].div("100000000000000").toNumber()/10000) + console.log("sender1 inputValt balance after matching: " + matchmaker.vaults[sender1][token1].vaultId[vaultId101].div("100000000000000").toNumber()/10000) + console.log("sender3 inputValt balance after matching: " + matchmaker.vaults[sender3][token2].vaultId[vaultId203].div("100000000000000").toNumber()/10000) + console.log("sender2 inputValt balance after matching: " + matchmaker.vaults[sender2][token2].vaultId[vaultId202].div("100000000000000").toNumber()/10000) + console.log("sender4 inputValt balance after matching: " + matchmaker.vaults[sender4][token3].vaultId[vaultId304].div("100000000000000").toNumber()/10000) console.log("---------------------------------------") console.log("checking total bounty balance") - console.log("total bounties collected of token0x2: " + Object.values(matchmaker.vaults[sender6]["0x2"].vaultId).reduce((e, m) => e.add(m)) + console.log("total bounties collected of token0x2: " + Object.values(matchmaker.vaults[sender6][token2].vaultId).reduce((e, m) => e.add(m)) .div("100000000000000").toNumber()/10000) - console.log("total bounties collected of token0x1: " + Object.values(matchmaker.vaults[sender6]["0x1"].vaultId).reduce((e, m) => e.add(m)) + console.log("total bounties collected of token0x1: " + Object.values(matchmaker.vaults[sender6][token1].vaultId).reduce((e, m) => e.add(m)) .div("100000000000000").toNumber()/10000) - console.log("total bounties collected of token0x3: " + Object.values(matchmaker.vaults[sender6]["0x3"].vaultId).reduce((e, m) => e.add(m)) + console.log("total bounties collected of token0x3: " + Object.values(matchmaker.vaults[sender6][token3].vaultId).reduce((e, m) => e.add(m)) .div("100000000000000").toNumber()/10000) - // console.log("bounty aOutput of token0x2 Vault0x88 balance: " + matchmaker.vaults[sender6]["0x2"].vaultId["0x88"].div("10000000000000000").toNumber()/100) - // console.log("bounty bOutput of token0x1 Vault0x99 balance: " + matchmaker.vaults[sender6]["0x1"].vaultId["0x99"].div("10000000000000000").toNumber()/100) - // console.log("bounty aOutput of token0x1 Vault0x88 balance: " + matchmaker.vaults[sender6]["0x1"].vaultId["0x88"].div("10000000000000000").toNumber()/100) - // console.log("bounty bOutput of token0x2 Vault0x99 balance: " + matchmaker.vaults[sender6]["0x2"].vaultId["0x99"].div("10000000000000000").toNumber()/100) + // console.log("bounty aOutput of token0x2 Vault0x88 balance: " + matchmaker.vaults[sender6][token2].vaultId[paddedUInt256("0x88")].div("10000000000000000").toNumber()/100) + // console.log("bounty bOutput of token0x1 Vault0x99 balance: " + matchmaker.vaults[sender6][token1].vaultId[paddedUInt256("0x99")].div("10000000000000000").toNumber()/100) + // console.log("bounty aOutput of token0x1 Vault0x88 balance: " + matchmaker.vaults[sender6][token1].vaultId[paddedUInt256("0x88")].div("10000000000000000").toNumber()/100) + // console.log("bounty bOutput of token0x2 Vault0x99 balance: " + matchmaker.vaults[sender6][token2].vaultId[paddedUInt256("0x99")].div("10000000000000000").toNumber()/100) // second matchmaking round // increasing the timestamp for second matchmaking diff --git a/src/RainJS/types.ts b/src/RainJS/types.ts index fd53af5..c4be0de 100644 --- a/src/RainJS/types.ts +++ b/src/RainJS/types.ts @@ -1,7 +1,6 @@ import { BigNumber} from 'ethers'; import { isHexString } from 'ethers/lib/utils'; import { StateConfig} from '../classes/vm'; -import { paddedUInt160 } from '../utils'; // 18 decimals or i.e "DECIMALS" - used for fixed point match @@ -142,27 +141,17 @@ export interface clearedCounterPartyFunds { * * @returns boolean */ -export function isAddress(address: string) : boolean { - return ( - isHexString(address) || - // eslint-disable-next-line no-new-wrappers - typeof new Number(address) === "number" || - BigNumber.from(address)._isBigNumber - ) -} - -/** - * function to convert address's strings to to a standard 40 char length hex string format for simulation types - * - * @remark should be used for all the string type properties of the simulatioin's types - * - * @param address - address string to convert - * - * @returns new string in standard hex string format - */ -export function toAddress(address: string) : string { - if (isAddress(address)) { - return paddedUInt160(BigNumber.from(address)) +export function isValidString(address: string) : boolean { + if (isHexString(address) || !isNaN(Number(address))) { + return true + } + else { + try { + BigInt(address) + return true + } + catch(err) { + return false + } } - else throw new Error("not a valid address") } \ No newline at end of file diff --git a/src/RainJS/vmSimulation.ts b/src/RainJS/vmSimulation.ts index cd5ff43..ba4cbec 100644 --- a/src/RainJS/vmSimulation.ts +++ b/src/RainJS/vmSimulation.ts @@ -25,8 +25,7 @@ import { clearedFunds, bountyConfig, erc20,eighteenZeros, - clearedCounterPartyFunds, - toAddress + clearedCounterPartyFunds } from "./types"; @@ -82,13 +81,13 @@ export class vmSimulation { * A property for producing timestamp for the class which will be used in BLOCK_TIMESTAMP opcode * but BLOCK_TIMESTAMP opcode can also be passed at runtime */ - public timestamp?: () => number; + public timestamp?: number; /** * A property for producing block number for the class which will be used in BLOCK_NUMBER opcode * but BLOCK_NUMBER opcode can also be passed at runtime */ - public blockNumber?: () => number; + public blockNumber?: number; /** * Opcodes functions body for simulation that use the class properties/types. @see ApplyOpFn and @see OpcodeFN @@ -100,7 +99,7 @@ export class vmSimulation { state.stack.push(BigNumber.from(data.blockNumber)) } else if (this.blockNumber !== undefined) { - state.stack.push(BigNumber.from(this.blockNumber())) + state.stack.push(BigNumber.from(this.blockNumber)) } else throw new Error("undefined block number") }, @@ -110,7 +109,7 @@ export class vmSimulation { state.stack.push(BigNumber.from(data.timestamp)) } if (this.timestamp !== undefined) { - state.stack.push(BigNumber.from(this.timestamp())) + state.stack.push(BigNumber.from(this.timestamp)) } else throw new Error("undefined block timestamp") }, @@ -359,7 +358,7 @@ export class vmSimulation { * @param senderAddress - a string number/hex string */ public setSender(senderAddress: string) { - this.sender = toAddress(senderAddress); + this.sender = paddedUInt160(senderAddress); } /** @@ -368,7 +367,7 @@ export class vmSimulation { * @param contractAddress - a string number/hex string */ public setContractAddress(contractAddress: string) { - this.address = toAddress(contractAddress); + this.address = paddedUInt160(contractAddress); } /** @@ -502,10 +501,10 @@ export class SaleSimulation extends vmSimulation { ) { super(); this.token = token; - this.address = toAddress(address); + this.address = paddedUInt160(address); this.reserve = reserve; - this.tokenAddress = toAddress(tokenAddress); - this.reserveAddress = toAddress(reserveAddress); + this.tokenAddress = paddedUInt160(tokenAddress); + this.reserveAddress = paddedUInt160(reserveAddress); if (this.erc20s[this.tokenAddress] === undefined) { this.erc20s[this.tokenAddress] = this.token; @@ -750,8 +749,8 @@ export class EmissionSmiulation extends vmSimulation { initialSupply: BigNumber = ethers.constants.Zero, ) { super(); - this.address = toAddress(address); - this.sender = toAddress(sender); + this.address = paddedUInt160(address); + this.sender = paddedUInt160(sender); this.report = reports; this.balanceOf = balances; this.totalSupply = initialSupply; @@ -791,7 +790,7 @@ export class EmissionSmiulation extends vmSimulation { blockNumber?: number ) : Promise { const entrypoint = 0; - const _claimantAccount = toAddress(claimantAccount) + const _claimantAccount = paddedUInt160(claimantAccount) if (this.script !== undefined) { if (this.report[_claimantAccount] === undefined) { @@ -825,7 +824,7 @@ export class EmissionSmiulation extends vmSimulation { blockNumber?: number ) : Promise { const entrypoint = 0; - const _claimantAccount = toAddress(claimantAccount) + const _claimantAccount = paddedUInt160(claimantAccount) if (this.script !== undefined) { if (this.report[_claimantAccount] === undefined) { @@ -844,7 +843,7 @@ export class EmissionSmiulation extends vmSimulation { this.script, {applyOpFn: this.OpFns} ); - let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp()! : timestamp!).repeat(8))) + let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp : timestamp!).repeat(8))) let mintUnits = await simulation.run( {context: [_claimantAccount], timestamp, blockNumber}, entrypoint @@ -916,7 +915,7 @@ export class CombinetierSimulation extends vmSimulation { blockNumber?: number ): Promise { const entrypoint = 0; - const _account = toAddress(account) + const _account = paddedUInt160(account) if (this.script !== undefined) { let simulation = new CombineTierJS( @@ -986,8 +985,8 @@ export class OrderbookSimulation extends vmSimulation { */ constructor(address: string, sender: string, vaults?: vaults, orders?: orders) { super(); - this.address = toAddress(address); - this.sender = toAddress(sender); + this.address = paddedUInt160(address); + this.sender = paddedUInt160(sender); if (vaults !== undefined) { this.vaults = vaults; } @@ -1110,7 +1109,7 @@ export class OrderbookSimulation extends vmSimulation { units: number, tokenDecimals: number = 18 ): void { - const _sender = toAddress(sender); + const _sender = paddedUInt160(sender); const units_ = parseUnits( units.toString(), tokenDecimals @@ -1175,7 +1174,7 @@ export class OrderbookSimulation extends vmSimulation { units: number, tokenDecimals: number = 18 ): void { - const _sender = toAddress(sender); + const _sender = paddedUInt160(sender); if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { throw new Error("this vault doesnt not exist") diff --git a/src/classes/factoryContract.ts b/src/classes/factoryContract.ts index 5ce5ff1..889a394 100644 --- a/src/classes/factoryContract.ts +++ b/src/classes/factoryContract.ts @@ -1,6 +1,6 @@ -import { ContractReceipt, Contract, Signer, utils } from 'ethers'; import { Factory__factory } from '../typechain'; import { RainContract } from './rainContract'; +import { ContractReceipt, Contract, Signer, utils } from 'ethers'; /** * @public diff --git a/src/classes/rainContract.ts b/src/classes/rainContract.ts index 607b54a..f304818 100644 --- a/src/classes/rainContract.ts +++ b/src/classes/rainContract.ts @@ -1,6 +1,6 @@ -import { Signer, utils, BigNumberish, Overrides, CallOverrides } from 'ethers'; import { AddressBook } from '../addresses'; import type { Provider } from '../types'; +import { Signer, utils, BigNumberish, Overrides, CallOverrides } from 'ethers'; /** * @public diff --git a/src/classes/tierContract.ts b/src/classes/tierContract.ts index e8c6cb0..b8f01af 100644 --- a/src/classes/tierContract.ts +++ b/src/classes/tierContract.ts @@ -1,8 +1,14 @@ -import { Signer, BigNumber, BigNumberish } from 'ethers'; +import { paddedUInt256 } from '../utils'; import { ReadTxOverrides } from './rainContract'; import { FactoryContract } from './factoryContract'; -import { ITierV2__factory } from '../typechain'; -import { paddedUInt256 } from '../utils'; +import { BigNumber, BigNumberish, Signer } from 'ethers'; +import { + Stake, + ITierV2, + VerifyTier, + CombineTier, + EmissionsERC20 +} from '../typechain'; /** * @public @@ -54,26 +60,32 @@ export enum Tier { * Should be use to the TierFactories. */ export abstract class TierContract extends FactoryContract { - constructor(address: string, signer: Signer) { + + constructor( + address: string, + signer: Signer, + tierContract: VerifyTier | CombineTier | ITierV2 | Stake | EmissionsERC20 + ) { super(address, signer); - const tier = ITierV2__factory.connect(address, signer); - this.report = tier.report; - this.reportTimeForTier = tier.reportTimeForTier; + + this.report = tierContract.report; + this.reportTimeForTier = tierContract.reportTimeForTier; } /** {@inheritDoc Tier} */ public readonly levels = Tier; /** + * @public * A tier report is a `uint256` that contains each of the block numbers each tier has been * held continously since as a `uint32`. * * @remarks - * There are 9 possible tier, starting with tier 0 - * for `0` offset or "never held any tier" then working up through 8x 4 byte offsets to the - * full 256 bits. + * There are 9 possible tier, starting with tier 0 for `0` offset or "never held any tier" + * and then working up through 8x 4 byte offsets to the full 256 bits. * * @param account - Account to get the report for. + * @param context - A contextual argument depending on the implementing tier contract, array of values passed to the method at runtime * @param overrides - @see ReadTxOverrides * @returns The report blocks encoded as a uint256. */ @@ -83,6 +95,23 @@ export abstract class TierContract extends FactoryContract { overrides?: ReadTxOverrides ) => Promise; + /** + * @public + * Same as report but only returns the time for a single tier. Often the implementing contract + * can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one + * or a few tiers it MAY be much cheaper to request only those tiers individually. + * + * @remarks + * The return value + * is a `uint256` for gas efficiency but the values will be bounded by `type(uint32).max` as no single + * tier can report a value higher than this. + * + * @param account - Account to get the report for + * @param tier - Tier to get the single report for + * @param context - A contextual argument depending on the implementing tier contract, array of values passed to the method at runtime + * @param overrides - @see ReadTxOverrides + * @returns A single tier report of max uint32 size encoded as uint256 + */ public readonly reportTimeForTier: ( account: string, tier: BigNumberish, diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 86731d6..a187120 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1,3 +1,4 @@ +import { Tier } from './tierContract'; import { BytesLike, BigNumberish, utils, BigNumber, ethers } from 'ethers'; import { paddedUInt256, @@ -558,25 +559,25 @@ export class VM { public static multi(configs: StateConfig[]) : StateConfig { if (configs.length > 2) { - let _result: StateConfig = configs[0]; - - for (let i = 1; i < configs.length; i++) { - for (let j = 0; j < configs[i].sources.length; j++) { - let _stackOpcodeModify = arrayify( - configs[i].sources[j], - {allowMissingPrefix: true} - ); - for (let k = 0; k < _stackOpcodeModify.length; k++) { - if (_stackOpcodeModify[k] === 1) { - _stackOpcodeModify[k + 1] = _stackOpcodeModify[k + 1] + i; + let _result: StateConfig = configs[0]; + + for (let i = 1; i < configs.length; i++) { + for (let j = 0; j < configs[i].sources.length; j++) { + let _stackOpcodeModify = arrayify( + configs[i].sources[j], + {allowMissingPrefix: true} + ); + for (let k = 0; k < _stackOpcodeModify.length; k++) { + if (_stackOpcodeModify[k] === 1) { + _stackOpcodeModify[k + 1] = _stackOpcodeModify[k + 1] + i; + } + k++; } - k++; + configs[i].sources[j] = _stackOpcodeModify; } - configs[i].sources[j] = _stackOpcodeModify; + _result = VM.combiner(_result, configs[i]) } - _result = VM.combiner(_result, configs[i]) - } - return _result; + return _result; } else throw new Error("not a valid argument") } @@ -598,7 +599,7 @@ export class VM { * * @returns a VM script. @see StateConfig */ - public static makeOwnership( + public static setOwnership( config: StateConfig, ownerAddress: string, options?: { @@ -672,7 +673,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static toTierDiscounter( + public static setDiscountForTiers( config: StateConfig, tierAddress: string, tierDiscount: number[], @@ -682,7 +683,6 @@ export class VM { tierContext?: BigNumber[] } ): StateConfig { - let CONTEXT_ = concat([]); const Index = options?.index ? options.index : 0; const TierDiscount = paddedUInt256( @@ -699,18 +699,25 @@ export class VM { ) ); - if (options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8) { - CONTEXT_ = concat([ - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 8), - op(VM.Opcodes.CONSTANT, 9), - op(VM.Opcodes.CONSTANT, 10), - op(VM.Opcodes.CONSTANT, 11), - op(VM.Opcodes.CONSTANT, 12), - ]) - } + + const CONTEXT_ = options?.tierContext && options.tierContext.length === 8 + ? { + constants: options.tierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + ]) + } + : { + constants: [], + sources: concat([]) + } const TIER_BASED_DIS = () => @@ -721,8 +728,8 @@ export class VM { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, @@ -745,8 +752,8 @@ export class VM { op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 4), ]); @@ -767,7 +774,7 @@ export class VM { const _discounterConfig: StateConfig = - options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 + options?.tierActivation && options.tierActivation.length === 8 ? { constants: [ ethers.constants.MaxUint256, @@ -787,7 +794,7 @@ export class VM { paddedUInt32(options.tierActivation[0]) ) ), - ...options.tierContext + ...CONTEXT_.constants ], sources: [ concat([ @@ -797,7 +804,7 @@ export class VM { ]), concat([ ACTIVATION_TIME_FN(), - TIER_BASED_DIS_FN(13), + TIER_BASED_DIS_FN(5 + CONTEXT_.constants.length), op(VM.Opcodes.EAGER_IF), ]), ], @@ -808,10 +815,11 @@ export class VM { tierAddress, TierDiscount, '100', + ...CONTEXT_.constants ], sources: [ concat([TIER_BASED_DIS(), TIER_BASED_DIS_ZIPMAP(0)]), - TIER_BASED_DIS_FN(4), + TIER_BASED_DIS_FN(4 + CONTEXT_.constants.length), ], }; @@ -832,7 +840,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static toTierMultiplier( + public static setMultiplierForTiers( config: StateConfig, tierAddress: string, tierMultiplier: number[], @@ -842,7 +850,6 @@ export class VM { tierContext?: BigNumber[] } ): StateConfig { - let CONTEXT_ = concat([]); const Index = options?.index ? options.index : 0; const TierMultiplier = paddedUInt256( @@ -859,17 +866,24 @@ export class VM { ) ); - if (options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8) { - CONTEXT_ = concat([ - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 8), - op(VM.Opcodes.CONSTANT, 9), - op(VM.Opcodes.CONSTANT, 10), - op(VM.Opcodes.CONSTANT, 11), - op(VM.Opcodes.CONSTANT, 12), - op(VM.Opcodes.CONSTANT, 13), - ]) + + const CONTEXT_ = options?.tierContext && options.tierContext.length === 8 + ? { + constants: options.tierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 13), + ]) + } + : { + constants: [], + sources: concat([]) } const TIER_BASED_MUL = () => @@ -877,8 +891,8 @@ export class VM { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, @@ -900,8 +914,8 @@ export class VM { op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 5), ]); @@ -923,7 +937,7 @@ export class VM { ]); const _multiplierConfig: StateConfig = - options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 + options?.tierActivation && options.tierActivation.length === 8 ? { constants: [ ethers.constants.MaxUint256, @@ -944,7 +958,7 @@ export class VM { paddedUInt32(options.tierActivation[0]) ) ), - ...options.tierContext, + ...CONTEXT_.constants, ], sources: [ concat([ @@ -954,7 +968,7 @@ export class VM { ]), concat([ ACTIVATION_TIME_FN(), - TIER_BASED_MUL_FN(14), + TIER_BASED_MUL_FN(6 + CONTEXT_.constants.length), op(VM.Opcodes.EAGER_IF), ]), ], @@ -966,10 +980,11 @@ export class VM { TierMultiplier, '100', '0xffffffff', + ...CONTEXT_.constants ], sources: [ concat([TIER_BASED_MUL(), TIER_BASED_MUL_ZIPMAP(0)]), - TIER_BASED_MUL_FN(5), + TIER_BASED_MUL_FN(5 + CONTEXT_.constants.length), ], }; @@ -986,7 +1001,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static toTimeSlicer( + public static setTimers( configs: StateConfig[], times: number[], inBlockNumber: boolean = false @@ -1147,12 +1162,46 @@ export class VM { return result_; } + /** + * Method to get maximum of multiple scripts + * + * @param configs - an array of configs to get maximum of + * + * @returns a @see StateConfig + */ + public static max(configs: StateConfig[]): StateConfig { + let result_ = VM.multi(configs) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.MAX, configs.length) + ]) + + return result_; + } + + /** + * Method to get minimum of multiple scripts + * + * @param configs - an array of configs to get minimum of + * + * @returns a @see StateConfig + */ + public static min(configs: StateConfig[]): StateConfig { + let result_ = VM.multi(configs) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.MIN, configs.length) + ]) + + return result_; + } + /** * Method to and multiple scripts together ie EVERY * * @param configs - an array of configs to and * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static and(configs: StateConfig[]): StateConfig { let result_ = VM.multi(configs) @@ -1169,7 +1218,7 @@ export class VM { * * @param configs - an array of configs to or * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static or(configs: StateConfig[]): StateConfig { let result_ = VM.multi(configs) @@ -1228,7 +1277,7 @@ export class VM { * * @param config - the script to check * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static isZero(config: StateConfig): StateConfig { config.sources[0] = concat([ @@ -1245,7 +1294,7 @@ export class VM { * @param config1 - first script * @param config2 - second script * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static isEqual(config1: StateConfig, config2: StateConfig): StateConfig { let result_ = VM.pair(config1, config2); @@ -1263,13 +1312,13 @@ export class VM { * @param config1 - first script * @param config2 - second script * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static gt(config1: StateConfig, config2: StateConfig): StateConfig { let result_ = VM.pair(config1, config2); result_.sources[0] = concat([ result_.sources[0], - op(VM.Opcodes.EQUAL_TO) + op(VM.Opcodes.GREATER_THAN) ]) return result_; @@ -1281,13 +1330,13 @@ export class VM { * @param config1 - first script * @param config2 - second script * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static lt(config1: StateConfig, config2: StateConfig): StateConfig { let result_ = VM.pair(config1, config2); result_.sources[0] = concat([ result_.sources[0], - op(VM.Opcodes.EQUAL_TO) + op(VM.Opcodes.LESS_THAN) ]) return result_; @@ -1299,13 +1348,14 @@ export class VM { * @param config1 - first script * @param config2 - second script * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static gte(config1: StateConfig, config2: StateConfig): StateConfig { let result_ = VM.pair(config1, config2); result_.sources[0] = concat([ result_.sources[0], - op(VM.Opcodes.EQUAL_TO) + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ISZERO) ]) return result_; @@ -1317,13 +1367,14 @@ export class VM { * @param config1 - first script * @param config2 - second script * - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ public static lte(config1: StateConfig, config2: StateConfig): StateConfig { let result_ = VM.pair(config1, config2); result_.sources[0] = concat([ result_.sources[0], - op(VM.Opcodes.EQUAL_TO) + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.ISZERO) ]) return result_; @@ -1335,7 +1386,7 @@ export class VM { * @param config - the main VM script * @param tierAddress - the contract address of the tier contract. * @param tierValues - an array of 8 items - the value (6 decimals max) of each tier are the 8 items of the array. - * @param ascending - true if the tierValues are ascending and false if descending + * @param ascending - true if the tierValues (argument above) are ascending and false if descending from tier 1 to 8 * @param options - used for additional configuraions: * - (param) index to identify which sources item in config.sources the TierValues applies to, if not specified, it will be 0. * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the different value, @@ -1345,7 +1396,7 @@ export class VM { * * @returns a VM script @see StateConfig */ - public static toTierValues( + public static setValueForTiers( config: StateConfig, tierAddress: string, tierValues: number[], @@ -1357,7 +1408,6 @@ export class VM { finalDecimals?: number } ): StateConfig { - let CONTEXT_ = concat([]); const Index = options?.index ? options.index : 0; const Decimals = ("1").padEnd( (options?.finalDecimals ? options.finalDecimals - 6 >= 0 ? options.finalDecimals - 6 : 6 - options.finalDecimals : 0), @@ -1378,17 +1428,24 @@ export class VM { ) ); - if (options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8) { - CONTEXT_ = concat([ - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 8), - op(VM.Opcodes.CONSTANT, 9), - op(VM.Opcodes.CONSTANT, 10), - op(VM.Opcodes.CONSTANT, 11), - op(VM.Opcodes.CONSTANT, 12), - op(VM.Opcodes.CONSTANT, 13), - op(VM.Opcodes.CONSTANT, 14), - ]) + + const CONTEXT_ = options?.tierContext && options.tierContext.length === 8 + ? { + constants: options.tierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.CONSTANT, 14), + ]) + } + : { + constants: [], + sources: concat([]) } const TIER_BASED_VAL = () => @@ -1396,8 +1453,8 @@ export class VM { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, @@ -1423,8 +1480,8 @@ export class VM { op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.SENDER), - CONTEXT_, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.length), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 6), ]); @@ -1446,7 +1503,7 @@ export class VM { ]); const _tierValuesConfig: StateConfig = - options?.tierActivation && options.tierActivation.length === 8 && options?.tierContext && options.tierContext.length === 8 + options?.tierActivation && options.tierActivation.length === 8 ? { constants: [ ethers.constants.MaxUint256, @@ -1468,7 +1525,7 @@ export class VM { paddedUInt32(options.tierActivation[0]) ) ), - ...options.tierContext, + ...CONTEXT_.constants, ], sources: [ concat([ @@ -1478,7 +1535,7 @@ export class VM { ]), concat([ ACTIVATION_TIME_FN(), - TIER_BASED_VAL_FN(15), + TIER_BASED_VAL_FN(7 + CONTEXT_.constants.length), op(VM.Opcodes.EAGER_IF), ]), ], @@ -1490,14 +1547,181 @@ export class VM { TierValues, ascending ? '0' : '0xffffffff', '0xffffffff', - Decimals + Decimals, + ...CONTEXT_.constants ], sources: [ concat([TIER_BASED_VAL(), TIER_BASED_VAL_ZIPMAP(0)]), - TIER_BASED_VAL_FN(6), + TIER_BASED_VAL_FN(6 + CONTEXT_.constants.length), ], }; return VM.combiner(config, _tierValuesConfig, { index: Index }); } + + /** + * A method to generate the StateConfig out of EVM assets' opcodes + * + * @param type - the type of the asset script + * @param address - an array of address(es) of the asset(s) contract(s), only IERC20-Balance-of-Batch uses more than 1 address + * @param id - an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id + * + * @returns a VM script @see StateConfig + */ + public static getAsset( + type: + "erc20-balance-of" | + "erc20-total-supply" | + "snapshot-balance-of" | + "snapshot-total-supply" | + "erc721-balance-of" | + "erc721-owner-of" | + "erc1155-balance-of" | + "erc1155-balance-of-batch", + address: string[], + id?: BigNumber[] + ) : StateConfig { + + if (type === "erc20-balance-of" && address[0]) { + return { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC20_BALANCE_OF), + ]) + ] + } + } + else if (type === "erc20-total-supply" && address[0]) { + return { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.IERC20_TOTAL_SUPPLY) + ]) + ] + } + } + else if (type === "snapshot-balance-of" && address[0] && id?.length) { + return { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT) + ]) + ] + } + } + else if (type === "snapshot-total-supply" && address[0] && id?.length) { + return { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT) + ]) + ] + } + } + else if (type === "erc721-balance-of" && address[0]) { + return { + constants: [address[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.IERC721_BALANCE_OF) + ]) + ] + } + } + else if (type === "erc721-owner-of" && address[0] && id?.length) { + return { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC721_OWNER_OF) + ]) + ] + } + } + else if (type === "erc1155-balance-of" && address[0] && id?.length) { + return { + constants: [address[0], id[0]], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SENDER), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.IERC1155_BALANCE_OF) + ]) + ] + } + } + else if (type === "erc1155-balance-of-batch" && address.length === id?.length) { + let i = 0; + let sources: Uint8Array[] = []; + for (i; i < address.length; i++) { + sources.push(op(VM.Opcodes.CONSTANT, i)) + }; + sources.push(op(VM.Opcodes.SENDER)); + for (i; i < address.length * 2; i++) { + sources.push(op(VM.Opcodes.CONSTANT, i)) + }; + return { + constants: [...address, ...id], + sources + } + } + else throw new Error("not valid arguments for constructor") + } + + /** + * Method to check if an address has any tier status or not, i.e if is in tier contract or not + * + * @param tierConfig - the tier report config @see CombineTierGenerator + * @returns a VM script @see StateConfig + */ + public static hasAnyTier( + tierConfig: StateConfig, + ) : StateConfig { + + return VM.isZero( + VM.isEqual( + tierConfig, + VM.constant(ethers.constants.MaxUint256) + ) + ) + } + + /** + * Method to check if an address has at least the "TIER" status + * + * @param tierConfig - the tier report config @see CombineTierGenerator + * @param tier - the minimum tier needed to be held + * @returns a VM script @see StateConfig + */ + public static hasMinTier( + tierConfig: StateConfig, + tier: Tier + ) : StateConfig { + + const reportCheck = paddedUInt256( + "0x" + + paddedUInt32("0xffffffff").repeat(8 - tier) + + paddedUInt32("0").repeat(tier) + ) + + return VM.gte(tierConfig, VM.constant(reportCheck)) + } + } \ No newline at end of file diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index faabc62..c6ad48b 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -1,5 +1,12 @@ import { TierContract } from '../classes/tierContract'; import { StateConfig, StorageOpcodesRange } from '../classes/vm'; +import { + Signer, + BigNumber, + BytesLike, + BigNumberish, + ContractTransaction, +} from 'ethers'; import { EmissionsERC20__factory, EmissionsERC20Factory__factory, @@ -9,13 +16,7 @@ import { TxOverrides, ReadTxOverrides, } from '../classes/rainContract'; -import { - Signer, - BigNumber, - BytesLike, - BigNumberish, - ContractTransaction, -} from 'ethers'; + /** * @public @@ -28,13 +29,6 @@ export enum EmissionsERC20Context { * operand for CONTEXT opcode to stack the claimant account that report is being call for. */ ClaimantAccount, - /** - * 1 or the index of the context array in the emissioinsERC20 - * contract used as the operand for CONTEXT opcode. - * operand for CONTEXT opcode to stack the tier that reportTimeForTier is being call for. - * The tier (between 1 to 8) used for tierTimeForTier and it has no use for "ITIERV2_REPORT" opcode - */ - Tier, /** * length of EmissionsERC20's valid context opcodes - 2 */ @@ -85,8 +79,8 @@ export class EmissionsERC20 extends TierContract { constructor(address: string, signer: Signer) { EmissionsERC20.checkAddress(address); - super(address, signer); const _emission = EmissionsERC20__factory.connect(address, signer); + super(address, signer, _emission); this.allowDelegatedClaims = _emission.allowDelegatedClaims; this.allowance = _emission.allowance; @@ -131,6 +125,13 @@ export class EmissionsERC20 extends TierContract { return new EmissionsERC20(address, signer); }; + /** + * @public + * Conncect to this EmissionsERC20 contract with another signer + * + * @param signer - the signer to get connected to the EmissionsERC20 instance + * @returns the EmissionsERC20 instance with the new signer + */ public readonly connect = (signer: Signer): EmissionsERC20 => { return new EmissionsERC20(this.address, signer); }; @@ -149,18 +150,6 @@ export class EmissionsERC20 extends TierContract { return await this._isChild(signer, maybeChild); }; - /** - * It is NOT implemented in Emissions. Always will throw an error - */ - public readonly setTier = async ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ) => { - throw new Error('SET TIER: NOT IMPLEMENTED'); - }; - /** * Whether the claimant must be the caller of `claim`. If `false` then * accounts other than claimant can claim. This may or may not be @@ -198,8 +187,7 @@ export class EmissionsERC20 extends TierContract { ) => Promise; /** - * Sets `amount` as the allowance of `spender` over the caller's tokens. - * + * Approve spend limit `amount` as the allowance for a `spender` over this tokens. * * @param spender - The addess that will get approved * @param amount - The amount that `spender` is allowed to spend @@ -216,7 +204,7 @@ export class EmissionsERC20 extends TierContract { * * @param account - Account address to get the balance * @param overrides - @see ReadTxOverrides - * @returns Amount of tokens that the owner have + * @returns Amount of tokens that the owner has */ public readonly balanceOf: ( account: string, @@ -263,7 +251,7 @@ export class EmissionsERC20 extends TierContract { ) => Promise; /** - * Returns the number of decimals used to get its user representation. + * Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) * * @param overrides - @see ReadTxOverrides * @returns The decimals of the Emissions contract @@ -271,7 +259,7 @@ export class EmissionsERC20 extends TierContract { public readonly decimals: (overrides?: ReadTxOverrides) => Promise; /** - * Atomically decreases the allowance granted to `spender` by the caller. + * Automatically decreases the allowance granted to `spender` for this token. * * This is an alternative to `approve()` that can be used as a mitigation for * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. @@ -287,7 +275,7 @@ export class EmissionsERC20 extends TierContract { ) => Promise; /** - * Atomically increases the allowance granted to `spender` by the caller. + * Automically increases the allowance granted to `spender` for this token. * * This is an alternative to `approve()` that can be used as a mitigation for * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. @@ -306,7 +294,7 @@ export class EmissionsERC20 extends TierContract { * Returns the name of the token. * * @param overrides - @see ReadTxOverrides - * @returns The name of the Emissions contract + * @returns The name of this EmissionsERC20 token */ public readonly name: (overrides?: ReadTxOverrides) => Promise; @@ -314,7 +302,7 @@ export class EmissionsERC20 extends TierContract { * Returns the symbol of the token, usually a shorter version of the name. * * @param overrides - @see ReadTxOverrides - * @returns The symbol of the Emissions contract + * @returns The symbol of this EmissionsERC20 token */ public readonly symbol: (overrides?: ReadTxOverrides) => Promise; @@ -322,14 +310,14 @@ export class EmissionsERC20 extends TierContract { * Returns the amount of tokens in existence. * * @param overrides - @see ReadTxOverrides - * @returns The total supply that have the Emissions + * @returns The current total supply of this token */ public readonly totalSupply: ( overrides?: ReadTxOverrides ) => Promise; /** - * Moves `amount` tokens from the caller's account to `to`. + * Moves `amount` of tokens from the caller's account to `to`. * * Requirements: * @@ -347,7 +335,7 @@ export class EmissionsERC20 extends TierContract { ) => Promise; /** - * Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is + * Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is * then deducted from the caller's allowance. * * NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. @@ -373,7 +361,7 @@ export class EmissionsERC20 extends TierContract { /** * Pointers to opcode functions, necessary for being able to read the packedBytes * - * @param override - @see ReadTxOverrides + * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; @@ -381,7 +369,7 @@ export class EmissionsERC20 extends TierContract { /** * Returns the pointer and length for emissionERC20's storage opcodes * - * @param override - @see ReadTxOverrides + * @param overrides - @see ReadTxOverrides * @returns a StorageOpcodesRange */ public readonly storageOpcodesRange: ( diff --git a/src/contracts/generics/erc1155.ts b/src/contracts/generics/erc1155.ts index d006633..81d8fca 100644 --- a/src/contracts/generics/erc1155.ts +++ b/src/contracts/generics/erc1155.ts @@ -1,4 +1,5 @@ import { ERC1155Burnable__factory } from '../../typechain'; +import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; import { BigNumberish, BigNumber, @@ -6,7 +7,7 @@ import { Signer, ContractTransaction, } from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; + /** * @public @@ -70,7 +71,7 @@ export class ERC1155 { }; /** - * Connect the current instance to a new signer + * Connect the current instance of ERC1155 to a new signer * * @param signer - The new signer which will be connected * @returns The instance with a new signer diff --git a/src/contracts/generics/erc20.ts b/src/contracts/generics/erc20.ts index a19c618..feb4c00 100644 --- a/src/contracts/generics/erc20.ts +++ b/src/contracts/generics/erc20.ts @@ -76,7 +76,7 @@ export class ERC20 { }; /** - * Connect the current instance to a new signer + * Connect the current instance of the ERC20 to a new signer * * @param signer - The new signer which will be connected * @returns The instance with a new signer @@ -114,8 +114,7 @@ export class ERC20 { ) => Promise; /** - * Sets `amount` as the allowance of `spender` over the caller's tokens. - * + * Approve spend limit `amount` as the allowance for a `spender` over this tokens. * * @param spender - The addess that will get approved * @param amount - The amount that `spender` is allowed to spend @@ -132,7 +131,7 @@ export class ERC20 { * * @param account - Account address to get the balance * @param overrides - @see ReadTxOverrides - * @returns Amount of tokens that the owner have + * @returns Amount of tokens that the owner has */ public readonly balanceOf: ( account: string, @@ -176,7 +175,7 @@ export class ERC20 { public readonly decimals: (overrides?: ReadTxOverrides) => Promise; /** - * Atomically decreases the allowance granted to `spender` by the caller. + * Automatically decreases the allowance granted to `spender` for this token. * * This is an alternative to `approve()` that can be used as a mitigation for * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. @@ -192,7 +191,7 @@ export class ERC20 { ) => Promise; /** - * Atomically increases the allowance granted to `spender` by the caller. + * Automically increases the allowance granted to `spender` for this token. * * This is an alternative to `approve()` that can be used as a mitigation for * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. @@ -211,7 +210,7 @@ export class ERC20 { * Returns the name of the token. * * @param overrides - @see ReadTxOverrides - * @returns The name of the Redeemable + * @returns The name of this token */ public readonly name: (overrides?: ReadTxOverrides) => Promise; @@ -219,7 +218,7 @@ export class ERC20 { * Returns the symbol of the token, usually a shorter version of the name. * * @param overrides - @see ReadTxOverrides - * @returns The symbol of the Emissions contract + * @returns The symbol of this token */ public readonly symbol: (overrides?: ReadTxOverrides) => Promise; @@ -227,14 +226,14 @@ export class ERC20 { * Returns the amount of tokens in existence. * * @param overrides - @see ReadTxOverrides - * @returns The total supply that have the Emissions + * @returns The current total supply of this token */ public readonly totalSupply: ( overrides?: ReadTxOverrides ) => Promise; /** - * Moves `amount` tokens from the caller's account to `to`. + * Moves `amount` of tokens from the caller's account to `to`. * * Requirements: * @@ -252,7 +251,7 @@ export class ERC20 { ) => Promise; /** - * Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is + * Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is * then deducted from the caller's allowance. * * NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. diff --git a/src/contracts/generics/erc721.ts b/src/contracts/generics/erc721.ts index 3ba701b..60bf13a 100644 --- a/src/contracts/generics/erc721.ts +++ b/src/contracts/generics/erc721.ts @@ -1,4 +1,5 @@ import { ERC721Burnable__factory } from '../../typechain'; +import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; import { BigNumberish, BigNumber, @@ -6,7 +7,7 @@ import { Signer, ContractTransaction, } from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; + /** * @public @@ -78,7 +79,7 @@ export class ERC721 { }; /** - * Connect the current instance to a new signer + * Connect the current instance of ERC721 to a new signer * * @param signer - The new signer which will be connected * @returns The instance with a new signer diff --git a/src/contracts/noticeBoard.ts b/src/contracts/noticeBoard.ts index ca2833e..651f909 100644 --- a/src/contracts/noticeBoard.ts +++ b/src/contracts/noticeBoard.ts @@ -68,6 +68,13 @@ export class NoticeBoard extends RainContract { ); }; + /** + * @public + * Conncect to this Noticeboard contract with another signer + * + * @param signer - the signer to get connected to the noticeboard instance + * @returns the Noticeboard instance with the new signer + */ public readonly connect = (signer: Signer): NoticeBoard => { return new NoticeBoard(this.address, signer); }; diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index ae1e2e8..3f3e749 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -1,3 +1,4 @@ +import { OrderBook__factory } from '../typechain'; import { Signer, BigNumberish, BytesLike, ContractTransaction } from 'ethers'; import { RainContract, @@ -9,7 +10,6 @@ import { StorageOpcodesRange, AllStandardOps, } from '../classes/vm'; -import { OrderBook__factory } from '../typechain'; /** * @public @@ -22,7 +22,7 @@ export type OrderBookOpcodes = typeof AllStandardOps & { /** * @public - * A class for calling method on a OrderBook. + * A class for calling method on a Rain OrderBook contract. * * @remarks * This class provides an easy way to interact with the OrderBook contract. @@ -31,6 +31,8 @@ export type OrderBookOpcodes = typeof AllStandardOps & { * ```typescript * import { OrderBook } from 'rain-sdk' * + * const orderBook = await Orderbook.get(signer); + * or * const orderBook = new OrderBook(address, signer); * * const addOrderArg = { @@ -45,7 +47,6 @@ export type OrderBookOpcodes = typeof AllStandardOps & { * const tx = await orderBook.addOrder(addOrderArg); * ``` */ - export class OrderBook extends RainContract { protected static readonly nameBookReference: string = 'orderBook'; @@ -55,9 +56,10 @@ export class OrderBook extends RainContract { * @param address - The address of the OrderBook contract * @param signer - An ethers.js Signer * @returns A new OrderBook instance - * */ constructor(address: string, signer: Signer) { + OrderBook.checkAddress(address); + super(address, signer); const _orderBook = OrderBook__factory.connect(address, signer); @@ -74,7 +76,7 @@ export class OrderBook extends RainContract { * All the opcodes avaialbles in the OrderBook contract. * * @remarks - * This expose all the standard opcodes along with the specific opcodes of the OrderBook. + * This expose all the standard opcodes along with the specific local OrderBook opcodes. */ public static Opcodes: OrderBookOpcodes = { ...AllStandardOps, @@ -86,7 +88,7 @@ export class OrderBook extends RainContract { * Get the OrderBook instance * * The function ask to the provider inside of the ethers signer what is the chain - * identifier to get the address in this chain. + * identifier to get the address of the Orderbook Contract in this chain and connect to it. * * @param signer - ethers signer connected to the instance * @returns A OrderBook instance @@ -98,46 +100,117 @@ export class OrderBook extends RainContract { ); }; + /** + * Connect to this Orderbook instance with a new signer + * + * @param signer - The new signer which will be connected + * @returns The Orderbook Contract instance with a new signer + */ public readonly connect = (signer: Signer): OrderBook => { return new OrderBook(this.address, signer); }; + /** + * @public + * Adds an order config for signer (as the owner) into the Orderbook + * + * @param orderConfig_ - @see OrderConfig The order with signer as owner to be added to this Orderbook contract + * @param overrides - @see TxOverrides + */ public readonly addOrder: ( orderConfig_: OrderConfig, overrides?: TxOverrides ) => Promise; - public readonly clear: ( - a_: Order, - b_: Order, - bountyConfig_: BountyConfig, + /** + * @public + * Removes an order from the Orderbook completely. + * + * @param order_ - @see Order The order to be removed from this Orderbook contract + * @param overrides - @see TxOverrides + */ + public readonly removeOrder: ( + order_: Order, overrides?: TxOverrides ) => Promise; + /** + * @public + * Allows the sender to deposit any tokens into their own vaults. + * The deposit will be 'config_.amount' of the 'config_.token' into 'config_.vaultId' + * + * @param config_ - @see DepositConfig All config required to deposit. Consists of 'amount', 'token' address and 'vaultId' + * @param overrides - @see TxOverrides + */ public readonly deposit: ( config_: DepositConfig, overrides?: TxOverrides ) => Promise; - public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + /** + * @public + * Allows the sender to withdraw any tokens from their own vaults. Notably if the amount is less than the current vault + * balance then the vault will be cleared to 0 rather than the withdraw transaction reverting. + * The withdraw will be 'config_.amount' of the 'config_.token' from 'config_.vaultId' + * + * @param config_ - @see WithdrawConfig All config required to withdraw. Consists of 'amount', 'token' address and 'vaultId'. + * @param overrides - @see TxOverrides + */ + public readonly withdraw: ( + config_: WithdrawConfig, + overrides?: TxOverrides + ) => Promise; - public readonly removeOrder: ( - order_: Order, + /** + * @public + * Clears 2 matching order against each other, a_ inputToken must match to b_ outputToken and + * a_ outputToken must match to b_ inputToken. Order a_ clears into Order b_ and vice versa. + * The difference of the clearing amounts will go into the bounty's vaults and if any of them are negative + * then the transaction will revert + * + * @param a_ - @see Order The first order + * @param b_ - @see Order The second order + * @param bountyConfig_ - @see BountyConfig The corresponding vault IDs of the bounty + * @param overrides - @see TxOverrides + * @returns + */ + public readonly clear: ( + a_: Order, + b_: Order, + bountyConfig_: BountyConfig, overrides?: TxOverrides ) => Promise; + /** + * Returns the pointer and length for sale's storage opcodes + * + * @param overrides - @see ReadTxOverrides + * @returns a StorageOpcodesRange + */ public readonly storageOpcodesRange: ( overrides?: ReadTxOverrides ) => Promise; - public readonly withdraw: ( - config_: WithdrawConfig, - overrides?: TxOverrides - ) => Promise; + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + } /** * @public + * A type for an order configuration without any specific owner + * + * 'inputToken' address - the desired token to be recieved if order clears + * 'inputVaultId' corresponding inputToken vault + * 'outputToken' address - the token to be paid if order clears + * 'outputVaultId' corresponding outputToken vault + * 'tracking' the tracking state of the order + * 'vmState' the @see StateConfig that determines the Amount and Price of the order */ export type OrderConfig = { inputToken: string; @@ -150,7 +223,16 @@ export type OrderConfig = { /** * @public - * Order + * Type for an order containing all that is required in an order. + * An Order is an @see OrderConfig with an owner + * + * 'owner' of this order + * 'inputToken' address - the desired token to be recieved if order clears + * 'inputVaultId' corresponding inputToken vault + * 'outputToken' address - the token to be paid if order clears + * 'outputVaultId' corresponding outputToken vault + * 'tracking' the tracking state of the order + * 'vmState' the @see StateConfig that determines the Amount and Price of the order */ export type Order = { owner: string; @@ -164,14 +246,11 @@ export type Order = { /** * @public - */ -export type BountyConfig = { - aVaultId: BigNumberish; - bVaultId: BigNumberish; -}; - -/** - * @public + * Type for depositing some token amount into a vault used in @see deposit + * + * 'token' which is the token address to be deposited + * 'vaultId' of the signer that token is being deposited + * 'amount' of token to be deposited into the vault */ export type DepositConfig = { token: string; @@ -181,6 +260,11 @@ export type DepositConfig = { /** * @public + * Type for withdrawing some token amount from a vault used in @see withdraw + * + * 'token' which is the token address to be withdrawn + * 'vaultId' of the signer that token is being withdrawn + * 'amount' of token to be withdrawn from the vault */ export type WithdrawConfig = { token: string; @@ -188,6 +272,26 @@ export type WithdrawConfig = { amount: BigNumberish; }; +/** + * @public + * Type for bounty vaultIds used when in @see clear when clearing 2 orders that will collect the bounties into its vaults + */ +export type BountyConfig = { + aVaultId: BigNumberish; + bVaultId: BigNumberish; +}; + +/** + * @public + * Type for changes in state of an orderbook vaults after an successful clear + */ +export type ClearStateChange = { + aOutput: BigNumberish; + bOutput: BigNumberish; + aInput: BigNumberish; + bInput: BigNumberish; +}; + /** * @public * Enum for operand of the Orderbook's CONTEXT opcode diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index 46d0ebc..49c8637 100644 --- a/src/contracts/redeemableERC20.ts +++ b/src/contracts/redeemableERC20.ts @@ -1,15 +1,7 @@ -import { Signer, BigNumber, BigNumberish, ContractTransaction } from 'ethers'; -import { - ERC20Config, - TxOverrides, - ReadTxOverrides, -} from '../classes/rainContract'; import { FactoryContract } from '../classes/factoryContract'; - -import { - RedeemableERC20__factory, - RedeemableERC20Factory__factory, -} from '../typechain'; +import { Signer, BigNumber, BigNumberish, ContractTransaction } from 'ethers'; +import { ERC20Config, TxOverrides, ReadTxOverrides } from '../classes/rainContract'; +import { RedeemableERC20__factory, RedeemableERC20Factory__factory } from '../typechain'; /** * @public @@ -115,6 +107,13 @@ export class RedeemableERC20 extends FactoryContract { return new RedeemableERC20(address, signer); }; + /** + * @public + * Conncect to this RedeemableErc20 contract with another signer + * + * @param signer - the signer to get connected to the RedeemableErc20 instance + * @returns the RedeemableErc20 instance with the new signer + */ public readonly connect = (signer: Signer): RedeemableERC20 => { return new RedeemableERC20(this.address, signer); }; @@ -152,8 +151,7 @@ export class RedeemableERC20 extends FactoryContract { ) => Promise; /** - * Sets `amount` as the allowance of `spender` over the caller's tokens. - * + * Approve spend limit `amount` as the allowance for a `spender` over this tokens. * * @param spender - The addess that will get approved * @param amount - The amount that `spender` is allowed to spend @@ -170,7 +168,7 @@ export class RedeemableERC20 extends FactoryContract { * * @param account - Account address to get the balance * @param overrides - @see ReadTxOverrides - * @returns Amount of tokens that the owner have + * @returns Amount of tokens that the owner has */ public readonly balanceOf: ( account: string, @@ -221,7 +219,7 @@ export class RedeemableERC20 extends FactoryContract { ) => Promise; /** - * Returns the number of decimals used to get its user representation. + * Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) * * @param overrides - @see ReadTxOverrides * @returns The decimals of the Redeemable contract @@ -229,7 +227,7 @@ export class RedeemableERC20 extends FactoryContract { public readonly decimals: (overrides?: ReadTxOverrides) => Promise; /** - * Atomically decreases the allowance granted to `spender` by the caller. + * Automatically decreases the allowance granted to `spender` for this token. * * This is an alternative to `approve()` that can be used as a mitigation for * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. @@ -302,7 +300,7 @@ export class RedeemableERC20 extends FactoryContract { ) => Promise; /** - * Atomically increases the allowance granted to `spender` by the caller. + * Automically increases the allowance granted to `spender` for this token. * * This is an alternative to `approve()` that can be used as a mitigation for * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. @@ -436,7 +434,7 @@ export class RedeemableERC20 extends FactoryContract { * Returns the symbol of the token, usually a shorter version of the name. * * @param overrides - @see ReadTxOverrides - * @returns The symbol of the Emissions contract + * @returns The symbol of this RedeemableERC20 token */ public readonly symbol: (overrides?: ReadTxOverrides) => Promise; @@ -469,14 +467,14 @@ export class RedeemableERC20 extends FactoryContract { * Returns the amount of tokens in existence. * * @param overrides - @see ReadTxOverrides - * @returns The total supply that have the Emissions + * @returns The current total supply of this token */ public readonly totalSupply: ( overrides?: ReadTxOverrides ) => Promise; /** - * Moves `amount` tokens from the caller's account to `to`. + * Moves `amount` of tokens from the caller's account to `to`. * * Requirements: * @@ -494,7 +492,7 @@ export class RedeemableERC20 extends FactoryContract { ) => Promise; /** - * Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is + * Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is * then deducted from the caller's allowance. * * NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. diff --git a/src/contracts/redeemableERC20ClaimEscrow.ts b/src/contracts/redeemableERC20ClaimEscrow.ts index 9bcc880..6850676 100644 --- a/src/contracts/redeemableERC20ClaimEscrow.ts +++ b/src/contracts/redeemableERC20ClaimEscrow.ts @@ -107,6 +107,13 @@ export class RedeemableERC20ClaimEscrow extends RainContract { ); }; + /** + * @public + * Conncect to this RedeemableERC20ClaimEscrow contract with another signer + * + * @param signer - the signer to get connected to the RedeemableERC20ClaimEscrow instance + * @returns the RedeemableERC20ClaimEscrow instance with the new signer + */ public readonly connect = (signer: Signer): RedeemableERC20ClaimEscrow => { return new RedeemableERC20ClaimEscrow( this.address, diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index 0dc08b5..75094ba 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -1,14 +1,10 @@ -import { BigNumberish, BigNumber, Signer, ContractTransaction } from 'ethers'; -import { StateConfig, StorageOpcodesRange } from '../classes/vm'; -import { FactoryContract } from '../classes/factoryContract'; -import { RedeemableERC20 } from './redeemableERC20'; import { ERC20 } from './generics/erc20'; +import { RedeemableERC20 } from './redeemableERC20'; +import { FactoryContract } from '../classes/factoryContract'; +import { StateConfig, StorageOpcodesRange } from '../classes/vm'; import { Sale__factory, SaleFactory__factory } from '../typechain'; -import { - ERC20Config, - TxOverrides, - ReadTxOverrides, -} from '../classes/rainContract'; +import { BigNumberish, BigNumber, Signer, ContractTransaction } from 'ethers'; +import { ERC20Config, TxOverrides, ReadTxOverrides } from '../classes/rainContract'; /** @@ -148,6 +144,13 @@ export class Sale extends FactoryContract { return new Sale(address, signer); }; + /** + * @public + * Conncect to this Sale contract with another signer + * + * @param signer - the signer to get connected to the Sale instance + * @returns the Sale instance with the new signer + */ public readonly connect = (signer: Signer): Sale => { return new Sale(this.address, signer); }; @@ -333,7 +336,7 @@ export class Sale extends FactoryContract { /** * Pointers to opcode functions, necessary for being able to read the packedBytes * - * @param override - @see ReadTxOverrides + * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; @@ -341,7 +344,7 @@ export class Sale extends FactoryContract { /** * Returns the pointer and length for sale's storage opcodes * - * @param override - @see ReadTxOverrides + * @param overrides - @see ReadTxOverrides * @returns a StorageOpcodesRange */ public readonly storageOpcodesRange: ( diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 65ab843..d0569b6 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -1,7 +1,6 @@ import { StateConfig, VM } from '../../classes/vm'; -import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; -import { CombineTierContext } from '../tiers/combineTier'; import { Tier } from '../../classes/tierContract'; +import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; import { concat, op, @@ -31,8 +30,39 @@ export class CombineTierGenerator { * Constructor for this class * * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) + * @param optioins - (optional) used for additional configuration of the script + * - (param) accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] + * - (param) hasReportForSingleTier - (optional) Used to determine if this script needs to have a second + * script used for getting the ITIERV2_TIME_FOR_TIER for a combineTier contract reportTimeForTier, default is false + * - (param) tierContext - (optional) an array of 8 values used as Stake thresholds or in general as REPORT opcodes context */ - constructor(reporter: string | StateConfig) { + constructor( + reporter: string | StateConfig, + options?: { + accountOrSender?: boolean, + hasReportForSingleTier?: boolean, + tierContext?: BigNumber[] + } + ) { + const CONTEXT_ = options?.tierContext && typeof reporter === "string" + ? { + constants: options.tierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + ]) + } + : { + constants: [], + sources: concat([]) + } let report_: StateConfig; @@ -53,14 +83,14 @@ export class CombineTierGenerator { sources: [ concat([ op(VM.Opcodes.THIS_ADDRESS), - op(VM.Opcodes.CONTEXT, CombineTierContext.Account), + options?.accountOrSender ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), op(VM.Opcodes.ADD, 8) ]), concat([ - op(VM.Opcodes.CONTEXT, CombineTierContext.Tier), + op(VM.Opcodes.CONTEXT, 1), op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.EQUAL_TO), op(VM.Opcodes.CONSTANT, 2), @@ -76,8 +106,9 @@ export class CombineTierGenerator { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.CONTEXT, CombineTierContext.Account), - op(VM.Opcodes.ITIERV2_REPORT), + options?.accountOrSender ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), ]) ] } @@ -86,7 +117,7 @@ export class CombineTierGenerator { report_ = reporter; } - report_ = VM.combiner(report_, singleReport_, {numberOfSources: 0}) + report_ = options?.hasReportForSingleTier ? VM.combiner(report_, singleReport_, {numberOfSources: 0}) : report_; this.constants = report_.constants; this.sources = report_.sources; @@ -99,6 +130,8 @@ export class CombineTierGenerator { * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) * @param logic - selectLte logic * @param mode - selectLte mode + * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP * * @returns this @@ -107,12 +140,10 @@ export class CombineTierGenerator { reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, + accountOrSender?: boolean, number?: number ): CombineTierGenerator { - const _buttom: StateConfig = - typeof reporter == 'string' - ? new CombineTierGenerator(reporter) - : reporter; + const _buttom = new CombineTierGenerator(reporter, {accountOrSender}) const _combiner: StateConfig = { constants: number ? [number] : [], @@ -172,14 +203,13 @@ export class CombineTierGenerator { * Saturating difference between 2 reports * * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) + * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * * @returns this */ - public differenceFrom(reporter: string | StateConfig): this { - const _buttom: StateConfig = - typeof reporter == 'string' - ? new CombineTierGenerator(reporter) - : reporter; + public differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this { + const _buttom = new CombineTierGenerator(reporter, {accountOrSender}) const _differ: StateConfig = { constants: [], @@ -196,47 +226,16 @@ export class CombineTierGenerator { } /** - * Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. - * - * @param reporter - either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) - * @param numberOfBlocks - A number or an array of numbers represting the number of blocks a given tier must be held to get ALWAYS report or else it gets NEVER report. + * Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. * + * @param duration - A number or an array of numbers represting the duration in timestamp a given + * tier must be held to get ALWAYS report or else it gets NEVER report. + * * @returns this */ public isTierHeldFor( - reporter: string | StateConfig, - numberOfBlocks: number | number[], - thresholds?: (number | string)[], - tokenDecimals: number = 18 + duration: number | number[] ): CombineTierGenerator { - let stakeContext: StateConfig = { - constants: [], - sources: [] - }; - if (thresholds && thresholds.length > 0) { - for (let i = 0; i < thresholds.length; i++) { - stakeContext.constants.push( - parseUnits(thresholds[i].toString(), tokenDecimals) - ); - stakeContext.sources.push( - concat([ - op(VM.Opcodes.CONSTANT, i) - ]) - ); - } - stakeContext.sources = [ - concat([ - ...stakeContext.sources - ]) - ]; - } - - const _report: StateConfig = - typeof reporter == 'string' - ? stakeContext.constants.length > 0 - ? VM.combiner(new CombineTierGenerator(reporter), stakeContext, {position: [2]}) - : new CombineTierGenerator(reporter) - : reporter; const _shifter = paddedUInt256( paddedUInt32('7') + @@ -253,44 +252,44 @@ export class CombineTierGenerator { BigNumber.from( '0x' + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[7] + typeof duration == 'number' + ? duration + : duration[7] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[6] + typeof duration == 'number' + ? duration + : duration[6] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[5] + typeof duration == 'number' + ? duration + : duration[5] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[4] + typeof duration == 'number' + ? duration + : duration[4] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[3] + typeof duration == 'number' + ? duration + : duration[3] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[2] + typeof duration == 'number' + ? duration + : duration[2] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[1] + typeof duration == 'number' + ? duration + : duration[1] ) + paddedUInt32( - typeof numberOfBlocks == 'number' - ? numberOfBlocks - : numberOfBlocks[0] + typeof duration == 'number' + ? duration + : duration[0] ) ) ); @@ -321,7 +320,7 @@ export class CombineTierGenerator { ], }; - _result = VM.combiner(_report, _result); + _result = VM.combiner(this, _result); this.constants = _result.constants; this.sources = _result.sources; @@ -338,9 +337,18 @@ export class BuildReport extends CombineTierGenerator { * Contructor of this class * * @param number - (optional) A number or an array of numbers represting the report at each tier, - * if not passed, BLOCK_TIMESTAMP will be used to creat the report of each tier + * if not passed, BLOCK_TIMESTAMP will be used to creat the report of each tier which would result in + * a dynamic report when the script is executed by combineTier contract report function + * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] + * @param hasReportForSingleTier - (optional) Used to determine if this script needs to be combined with another + * script used for getting the ITIERV2_TIME_FOR_TIER, default is false */ - constructor(number?: number | number[]) { + constructor( + number?: number | number[], + accountOrSender?: boolean, + hasReportForSingleTier?: boolean, + ) { let _result: StateConfig; if (number != undefined) { @@ -425,7 +433,7 @@ export class BuildReport extends CombineTierGenerator { ], }; } - super(_result); + super(_result, {hasReportForSingleTier, accountOrSender}); } }; @@ -497,7 +505,7 @@ export class ERC20BalanceTier extends CombineTierGenerator { op(VM.Opcodes.MUL, 2), ]) ]; - super({constants, sources}); + super({constants, sources}, {hasReportForSingleTier: true, accountOrSender: true}); } }; @@ -517,7 +525,7 @@ export class ERC20BalanceTier extends CombineTierGenerator { */ constructor ( public readonly tierValues: (number | string)[], - public readonly tokenAddress: string, + public readonly tokenAddress: string ) { const constants = [ paddedUInt256( @@ -567,7 +575,7 @@ export class ERC20BalanceTier extends CombineTierGenerator { op(VM.Opcodes.MUL, 2), ]) ]; - super({constants, sources}); + super({constants, sources}, {hasReportForSingleTier: true, accountOrSender: true}); } } @@ -641,139 +649,6 @@ export class ERC20BalanceTier extends CombineTierGenerator { op(VM.Opcodes.MUL, 2), ]) ]; - super({constants, sources}); - } -} - -/** - * A class to generate the StateConfig out of EVM assets' opcodes - */ -export class AssetOp extends CombineTierGenerator { - - /** - * Constructor of this class - * - * @param type - the type of the asset script - * @param address - an array of address(es) of the asset(s) contract(s), only IERC20-Balance-of-Batch uses more than 1 address - * @param id - an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id - */ - constructor( - type: - "erc20-balance-of" | - "erc20-total-supply" | - "snapshot-balance-of" | - "snapshot-total-supply" | - "erc721-balance-of" | - "erc721-owner-of" | - "erc1155-balance-of" | - "erc1155-balance-of-batch", - address: string[], - id?: BigNumber[] - ) { - let script: StateConfig; - - if (type === "erc20-balance-of" && address[0]) { - script = { - constants: [address[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.IERC20_BALANCE_OF), - ]) - ] - } - } - else if (type === "erc20-total-supply" && address[0]) { - script = { - constants: [address[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.IERC20_TOTAL_SUPPLY) - ]) - ] - } - } - else if (type === "snapshot-balance-of" && address[0] && id?.length) { - script = { - constants: [address[0], id[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT) - ]) - ] - } - } - else if (type === "snapshot-total-supply" && address[0] && id?.length) { - script = { - constants: [address[0], id[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT) - ]) - ] - } - } - else if (type === "erc721-balance-of" && address[0]) { - script = { - constants: [address[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.IERC721_BALANCE_OF) - ]) - ] - } - } - else if (type === "erc721-owner-of" && address[0] && id?.length) { - script = { - constants: [address[0], id[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.IERC721_OWNER_OF) - ]) - ] - } - } - else if (type === "erc1155-balance-of" && address[0] && id?.length) { - script = { - constants: [address[0], id[0]], - sources: [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.IERC1155_BALANCE_OF) - ]) - ] - } - } - else if (type === "erc1155-balance-of-batch" && address.length == id?.length) { - let i = 0; - let sources: Uint8Array[] = []; - for (i; i < address.length; i++) { - sources.push(op(VM.Opcodes.CONSTANT, i)) - }; - sources.push(op(VM.Opcodes.SENDER)); - for (i; i < address.length * 2; i++) { - sources.push(op(VM.Opcodes.CONSTANT, i)) - }; - script = { - constants: [...address, ...id], - sources - } - } - else throw new Error("not valid arguments for constructor") - super(script) + super({constants, sources}, {hasReportForSingleTier: true, accountOrSender: true}); } - } \ No newline at end of file diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index 84194b9..69f4015 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -1,7 +1,7 @@ -import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; -import { EmissionsERC20Context } from '../emissionsERC20'; -import { Tier } from '../../classes/tierContract'; import { VM } from '../../classes/vm'; +import { Tier } from '../../classes/tierContract'; +import { EmissionsERC20Context } from '../emissionsERC20'; +import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; import { concat, op, @@ -44,6 +44,7 @@ export type EmissionsConfig = { tier8: number; }; numberOfIncrements?: number; + tierContext?: BigNumber[]; }; /** @@ -64,6 +65,25 @@ export class LinearEmissions { const eighteenZeros = '000000000000000000'; const sixZeros = '000000'; + const CONTEXT_ = config.tierContext && config.tierContext.length === 8 + ? { + constants: config.tierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + ]) + } + : { + constants: [], + sources: concat([]) + } + const BN_ONE = BigNumber.from('1' + eighteenZeros); // We're using uints, so we need to scale reward per block up to get out of the decimal places, but a precision of 18 zeros is @@ -155,8 +175,8 @@ export class LinearEmissions { // prettier-ignore const REWARD = () => concat([ - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 5 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 6 + CONTEXT_.constants.length), op(VM.Opcodes.MUL, 2), ]); @@ -174,7 +194,7 @@ export class LinearEmissions { const CURRENT_BLOCK_AS_REPORT = () => concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) @@ -200,7 +220,8 @@ export class LinearEmissions { VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount ), - op(VM.Opcodes.ITIERV2_REPORT), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), ]); // prettier-ignore @@ -209,7 +230,7 @@ export class LinearEmissions { CURRENT_BLOCK_AS_REPORT(), TIER_REPORT(), LAST_CLAIM_REPORT(), - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.SELECT_LTE, selectLte(selectLteLogic.every, selectLteMode.max, 2) @@ -232,6 +253,7 @@ export class LinearEmissions { BASE_REWARD_PER_TIER, BN_ONE, BN_ONE_REWARD, + ...CONTEXT_.constants ]; this.sources = [SOURCE(), FN()]; } @@ -256,6 +278,25 @@ export class SequentialEmissions { const eighteenZeros = '000000000000000000'; const sixZeros = '000000'; + const CONTEXT_ = config.tierContext && config.tierContext.length === 8 + ? { + constants: config.tierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.CONSTANT, 14), + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.CONSTANT, 16), + op(VM.Opcodes.CONSTANT, 17), + op(VM.Opcodes.CONSTANT, 18), + ]) + } + : { + constants: [], + sources: concat([]) + } + const BN_ONE = BigNumber.from('1' + eighteenZeros); // We're using uints, so we need to scale reward per block up to get out of the decimal places, but a precision of 18 zeros is @@ -472,26 +513,29 @@ export class SequentialEmissions { 1, '10', 2, + ...CONTEXT_.constants ]; this.sources = [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op( VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT) ), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), - op(VM.Opcodes.ITIERV2_REPORT), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.THIS_ADDRESS), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), - op(VM.Opcodes.ITIERV2_REPORT), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 3), @@ -503,17 +547,17 @@ export class SequentialEmissions { op(VM.Opcodes.DIV, 2), ]), concat([ - op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.GREATER_THAN), op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.CONSTANT, 7), @@ -527,15 +571,15 @@ export class SequentialEmissions { op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), @@ -545,21 +589,21 @@ export class SequentialEmissions { op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.CONSTANT, 13 + CONTEXT_.constants.length), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.CONSTANT, 8), op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.ADD, 2), @@ -570,14 +614,14 @@ export class SequentialEmissions { op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.CONSTANT, 13 + CONTEXT_.constants.length), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONSTANT, 14), - op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 14 + CONTEXT_.constants.length), + op(VM.Opcodes.CONSTANT, 11 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONSTANT, 12 + CONTEXT_.constants.length), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), op(VM.Opcodes.SATURATING_SUB, 2), @@ -628,13 +672,13 @@ export class SequentialEmissions { this.sources = [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.EQUAL_TO), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.THIS_ADDRESS), - op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.DIV, 2), @@ -652,7 +696,7 @@ export class SequentialEmissions { this.sources = [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.CONTEXT, EmissionsERC20Context.ClaimantAccount), op(VM.Opcodes.EQUAL_TO), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.CONSTANT, 2), diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 14320f9..b1860ab 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -142,12 +142,12 @@ export class PriceCurve { tierAddress: string, tierDiscount: number[], options?: { - tierActivation: (number | string)[], - tierContext: BigNumber[] + tierActivation?: (number | string)[], + tierContext?: BigNumber[] } ): PriceCurve { - const _discountConfig = VM.toTierDiscounter( + const _discountConfig = VM.setDiscountForTiers( this, tierAddress, tierDiscount, @@ -615,7 +615,7 @@ export class BetweenBlocks { * or cap that can be bought. * */ -export class BuyCap { +export class BuyAmount { // StateConfig Properties of this class public constants: BigNumberish[]; public sources: BytesLike[]; @@ -623,7 +623,7 @@ export class BuyCap { /** * Constructor for this class * - * @param buyCapConfig - (optional) a custom StateConfig as the BuyCap (amount) script + * @param buyCapConfig - (optional) a custom StateConfig as the BuyAmount (amount) script * if not passed the current buy units (CONTEXT, 0) will be used as the amount in * amount/price script pair for the sale. */ @@ -666,7 +666,7 @@ export class BuyCap { tierActivation?: (number | string)[]; tierContext?: BigNumber[] } - ): BuyCap { + ): BuyAmount { const MIN_CAP_SOURCES = (i: number) => concat([ op(VM.Opcodes.CONSTANT, i), @@ -687,7 +687,8 @@ export class BuyCap { op(VM.Opcodes.GREATER_THAN), ]); - if (mode == BuyCapMode.min && options?.minWalletCap) { + if (mode == BuyCapMode.min && options?.minWalletCap !== undefined) { + options.minWalletCap = options.minWalletCap === 0 ? 1 : options.minWalletCap; let minCapConfig: StateConfig = { constants: [parseUnits(options.minWalletCap.toString()).sub(1)], sources: [MIN_CAP_SOURCES(0)], @@ -702,11 +703,11 @@ export class BuyCap { this.constants = minCapConfig.constants; this.sources = minCapConfig.sources; } - if (mode == BuyCapMode.max && options?.maxWalletCap) { + if (mode == BuyCapMode.max && options?.maxWalletCap !== undefined) { let maxCapConfig: StateConfig; if (options.tierMultiplier && options.tierAddress) { - maxCapConfig = VM.toTierMultiplier( + maxCapConfig = VM.setMultiplierForTiers( { constants: [parseUnits(options.maxWalletCap.toString())], sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], @@ -756,8 +757,9 @@ export class BuyCap { if ( mode == BuyCapMode.both && options?.minWalletCap && - options?.maxWalletCap + options?.maxWalletCap !== undefined ) { + options.minWalletCap = options.minWalletCap === 0 ? 1 : options.minWalletCap; let bothCapConfig: StateConfig; if (options.tierMultiplier && options.tierAddress) { @@ -765,7 +767,7 @@ export class BuyCap { constants: [parseUnits(options.maxWalletCap.toString())], sources: [concat([op(VM.Opcodes.CONSTANT, 0)])], }; - bothCapConfig = VM.toTierMultiplier( + bothCapConfig = VM.setMultiplierForTiers( bothCapConfig, options.tierAddress, options.tierMultiplier, @@ -859,7 +861,7 @@ export class SaleVmFrom { | BetweenTimestamps | BetweenBlocks | StateConfig, - public readonly buyCapScript: BuyCap | StateConfig, + public readonly buyCapScript: BuyAmount | StateConfig, public readonly calculateBuyScript: PriceCurve | StateConfig ) { let _saleConfig = VM.pair(buyCapScript, calculateBuyScript); diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts index b4fed36..306e259 100644 --- a/src/contracts/stake.ts +++ b/src/contracts/stake.ts @@ -1,3 +1,6 @@ +import { TierContract } from '../classes/tierContract'; +import { Stake__factory, StakeFactory__factory } from '../typechain'; +import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; import { Signer, BigNumber, @@ -5,10 +8,6 @@ import { BytesLike, ContractTransaction, } from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; -import { TierContract } from '../classes/tierContract'; - -import { Stake__factory, StakeFactory__factory } from '../typechain'; /** * @public @@ -28,7 +27,6 @@ import { Stake__factory, StakeFactory__factory } from '../typechain'; * await Stake.isChild(signer, maybeChildAddress); *``` */ - export class Stake extends TierContract { protected static readonly nameBookReference: string = 'stakeFactory'; @@ -38,12 +36,13 @@ export class Stake extends TierContract { * @param address - The address of the Stake contract * @param signer - An ethers.js Signer * @returns A new Stake instance - * */ constructor(address: string, signer: Signer) { - super(address, signer); - const _stake = Stake__factory.connect(address, signer); + Stake.checkAddress(address); + const _stake = Stake__factory.connect(address, signer); + super(address, signer, _stake); + this.allowance = _stake.allowance; this.approve = _stake.approve; this.balanceOf = _stake.balanceOf; @@ -64,14 +63,14 @@ export class Stake extends TierContract { * Deploys a new Stake. * * @param signer - An ethers.js Signer - * @param args - Arguments for deploying a Stake @see StakeDeployArgs + * @param stakeConfig - Configuration for deploying a Stake @see StakeDeployArgs * @param overrides - @see TxOverrides * @returns A new Stake instance * */ public static deploy = async ( signer: Signer, - args: StakeDeployArgs, + stakeConfig: StakeDeployArgs, overrides: TxOverrides = {} ): Promise => { const stakeFactory = StakeFactory__factory.connect( @@ -79,12 +78,19 @@ export class Stake extends TierContract { signer ); - const tx = await stakeFactory.createChildTyped(args, overrides); + const tx = await stakeFactory.createChildTyped(stakeConfig, overrides); const receipt = await tx.wait(); const address = this.getNewChildFromReceipt(receipt, stakeFactory); return new Stake(address, signer); }; + /** + * @public + * Conncect to this Stake contract with another signer + * + * @param signer - the signer to get connected to the Stake instance + * @returns the Stake instance with the new signer + */ public readonly connect = (signer: Signer): Stake => { return new Stake(this.address, signer); }; @@ -103,61 +109,196 @@ export class Stake extends TierContract { return await this._isChild(signer, maybeChild); }; + /** + * @public + * Method to deposit some 'amount_' of token (assets) by the signer into the Stake contract which then will result + * in minting of the stake token (shares) at the current Stake contract ratio and be transfered to the signer's wallet. + * + * @param amount_ - amount of tokens (assets) to be deposited into the Stake contract + * @param overrides - @see TxOverrides + * @returns + */ + public readonly deposit: ( + amount_: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + /** + * @public + * Method to Withdraw some amount of already staked token (assets) by the signer from the Stake contract which then will result + * in burning of 'amount_' of stake tokens (shares) and will result in a transfer of asset at the current Stake contract ratio to the signer's wallet. + * + * + * @param amount_ - amount of stake token (shares) to be burned and result in the withdraw of the equivalent prorata of asset + * @param overrides - @see TxOverrides + * @returns + */ + public readonly withdraw: ( + amount_: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + /** + * Returns the remaining number of tokens that `spender` will be + * allowed to spend on behalf of `owner` through `transferFrom()`. This is + * zero by default. + * + * This value changes when `approve()` or `transferFrom()` are called. + * + * @param owner - The owner of the tokens + * @param spender - The address to check how much amount have allow to use + * @param overrides - @see ReadTxOverrides + * @returns Amount of tokens allow to expend + */ public readonly allowance: ( owner: string, spender: string, overrides?: ReadTxOverrides ) => Promise; + /** + * Approve spend limit `amount` as the allowance for a `spender` over this tokens. + * + * @param spender - The addess that will get approved + * @param amount - The amount that `spender` is allowed to spend + * @param overrides - @see TxOverrides + */ public readonly approve: ( spender: string, amount: BigNumberish, overrides?: TxOverrides ) => Promise; + /** + * Returns the amount of tokens owned by `account`. + * + * @param account - Account address to get the balance + * @param overrides - @see ReadTxOverrides + * @returns Amount of tokens that the owner has + */ public readonly balanceOf: ( account: string, overrides?: ReadTxOverrides ) => Promise; - public readonly decimals: (overrides?: ReadTxOverrides) => Promise; + /** + * Returns the amount of tokens in existence. + * + * @param overrides - @see ReadTxOverrides + * @returns The current total supply of this token + */ + public readonly totalSupply: ( + overrides?: ReadTxOverrides + ) => Promise; - public readonly decreaseAllowance: ( - spender: string, - subtractedValue: BigNumberish, - overrides?: TxOverrides - ) => Promise; + /** + * Returns the name of the token. + * + * @param overrides - @see ReadTxOverrides + * @returns The name of this Stake token + */ + public readonly name: (overrides?: ReadTxOverrides) => Promise; - public readonly deposit: ( - amount_: BigNumberish, - overrides?: TxOverrides - ) => Promise; + /** + * Returns the symbol of the token, usually a shorter version of the name. + * + * @param overrides - @see ReadTxOverrides + * @returns The symbol of this Stake token + */ + public readonly symbol: (overrides?: ReadTxOverrides) => Promise; + /** + * Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) + * + * @param overrides - @see ReadTxOverrides + * @returns The decimals of the Redeemable contract + */ + public readonly decimals: (overrides?: ReadTxOverrides) => Promise; + + /** + * Automically increases the allowance granted to `spender` for this token. + * + * This is an alternative to `approve()` that can be used as a mitigation for + * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. + * + * @param spender - address to increase the allowance + * @param addedValue - amount to increase + * @param overrides - @see TxOverrides + */ public readonly increaseAllowance: ( spender: string, addedValue: BigNumberish, overrides?: TxOverrides ) => Promise; - public readonly name: (overrides?: ReadTxOverrides) => Promise; + /** + * Automatically decreases the allowance granted to `spender` for this token. + * + * This is an alternative to `approve()` that can be used as a mitigation for + * problems described in https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729. + * + * @param spender - address to decrease the allowance + * @param subtractedValue - amount to decrease + * @param overrides - @see TxOverrides + */ + public readonly decreaseAllowance: ( + spender: string, + subtractedValue: BigNumberish, + overrides?: TxOverrides + ) => Promise; + /** + * Returns true if this contract implements the interface defined by + * `interfaceId`. See the corresponding + * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] + * to learn more about how these ids are created. + * + * This function call must use less than 30 000 gas. + * + * @param interfaceId_ - + * @param overrides - @see TxOverrides + * @returns A boolean + */ public readonly supportsInterface: ( interfaceId_: BytesLike, overrides?: ReadTxOverrides ) => Promise; - public readonly symbol: (overrides?: ReadTxOverrides) => Promise; - - public readonly totalSupply: ( - overrides?: ReadTxOverrides - ) => Promise; - + /** + * Moves `amount` of tokens from the caller's account to `to`. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - the caller must have a balance of at least `amount`. + * + * @param to - address that will receive the tokens + * @param amount - token amount to transfer + * @param overrides - @see TxOverrides + */ public readonly transfer: ( to: string, amount: BigNumberish, overrides?: TxOverrides ) => Promise; + /** + * Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is + * then deducted from the caller's allowance. + * + * 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`. + * + * @param from - address that have the tokens to transfer + * @param to - address that will receive the tokens + * @param amount - token amount to transfer + * @param overrides - @see TxOverrides + */ public readonly transferFrom: ( from: string, to: string, @@ -165,14 +306,16 @@ export class Stake extends TierContract { overrides?: TxOverrides ) => Promise; - public readonly withdraw: ( - amount_: BigNumberish, - overrides?: TxOverrides - ) => Promise; } /** * @public + * A type for deploying a new stake contract which contains everything required for deployment. + * + * 'token' is the main token addtess. + * 'initialRatio' is the initial conversion ratio between the stake token and main token. + * 'name' of the stake token. + * 'symbol' of the stake token */ export type StakeDeployArgs = { token: string; diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 21c864e..d8e7894 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -1,11 +1,8 @@ -import { Signer, BytesLike, BigNumberish } from 'ethers'; +import { Signer, BigNumberish } from 'ethers'; import { TierContract } from '../../classes/tierContract'; import { ReadTxOverrides, TxOverrides } from '../../classes/rainContract'; import { StateConfig, StorageOpcodesRange } from '../../classes/vm'; -import { - CombineTierFactory__factory, - CombineTier__factory, -} from '../../typechain'; +import { CombineTierFactory__factory, CombineTier__factory } from '../../typechain'; /** * @public @@ -38,11 +35,7 @@ export enum CombineTierContext { * operand for CONTEXT opcode to stack the tier that reportTimeForTier is being call for. * The tier (between 1 to 8) used for tierTimeForTier and it has no use for "ITIERV2_REPORT" opcode */ - Tier, - /** - * length of CombineTier's valid context opcodes - 2 - */ - length, + Tier } /** @@ -102,8 +95,8 @@ export class CombineTier extends TierContract { constructor(address: string, signer: Signer) { CombineTier.checkAddress(address); - super(address, signer); const _combineTier = CombineTier__factory.connect(address, signer); + super(address, signer, _combineTier); this.fnPtrs = _combineTier.fnPtrs; this.storageOpcodesRange = _combineTier.storageOpcodesRange; @@ -176,26 +169,21 @@ export class CombineTier extends TierContract { return new CombineTier(address, signer); }; - public readonly connect = (signer: Signer): CombineTier => { - return new CombineTier(this.address, signer); - }; - /** - * It is NOT implemented in CombineTiers. Always will throw an error + * @public + * Conncect to this CombineTier contract with another signer + * + * @param signer - the signer to get connected to the CombineTier instance + * @returns the CombineTier instance with the new signer */ - public readonly setTier = async ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ): Promise => { - throw new Error('SET TIER: NOT IMPLEMENTED'); + public readonly connect = (signer: Signer): CombineTier => { + return new CombineTier(this.address, signer); }; /** * Pointers to opcode functions, necessary for being able to read the packedBytes * - * @param override - @see ReadTxOverrides + * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; @@ -203,7 +191,7 @@ export class CombineTier extends TierContract { /** * Returns the pointer and length for combineTier's storage opcodes * - * @param override - @see ReadTxOverrides + * @param overrides - @see ReadTxOverrides * @returns a StorageOpcodesRange */ public readonly storageOpcodesRange: ( diff --git a/src/contracts/tiers/iTierV2.ts b/src/contracts/tiers/iTierV2.ts index aa8f8a6..cf25b11 100644 --- a/src/contracts/tiers/iTierV2.ts +++ b/src/contracts/tiers/iTierV2.ts @@ -1,5 +1,6 @@ import { Signer } from 'ethers'; import { TierContract } from '../../classes/tierContract'; +import { ITierV2__factory } from '../../typechain'; /** * @public @@ -14,11 +15,29 @@ import { TierContract } from '../../classes/tierContract'; * does not know if the contract has implemented the code. */ export class ITierV2 extends TierContract { + + /** + * Constructor of ITierV2 class to instantiate any Rain Tier contract from a known address + * + * @param address - Address of the Rain tier contract + * @param signer - The signer to get connected to the instance + * @returns A new instance of ITierV2 contract from the address with Signer + */ + constructor(address: string, signer: Signer) { + ITierV2.checkAddress(address); + + const _iTierV2 = ITierV2__factory.connect(address, signer); + super(address, signer, _iTierV2); + } + + /** + * @public + * Conncect to this ITierV2 contract with another signer + * + * @param signer - the signer to get connected to the ITierV2 instance + * @returns the ITierV2 instance with the new signer + */ public readonly connect = (signer: Signer): ITierV2 => { return new ITierV2(this.address, signer); }; - - constructor(_address: string, _signer: Signer) { - super(_address, _signer); - } } diff --git a/src/contracts/tiers/verifyTier.ts b/src/contracts/tiers/verifyTier.ts index e3c6cf8..f967444 100644 --- a/src/contracts/tiers/verifyTier.ts +++ b/src/contracts/tiers/verifyTier.ts @@ -1,7 +1,7 @@ -import { Signer, BytesLike, BigNumberish } from 'ethers'; +import { Signer } from 'ethers'; import { TierContract } from '../../classes/tierContract'; import { TxOverrides } from '../../classes/rainContract'; -import { VerifyTierFactory__factory } from '../../typechain'; +import { VerifyTierFactory__factory, VerifyTier__factory } from '../../typechain'; /** * @public @@ -31,17 +31,19 @@ import { VerifyTierFactory__factory } from '../../typechain'; */ export class VerifyTier extends TierContract { protected static readonly nameBookReference: string = 'verifyTierFactory'; + /** * Constructs a new VerifyTier from a known address. * * @param address - The address of the VerifyTier contract * @param signer - An ethers.js Signer * @returns A new VerifyTier instance - * */ constructor(address: string, signer: Signer) { VerifyTier.checkAddress(address); - super(address, signer); + + const _verifyTier = VerifyTier__factory.connect(address, signer); + super(address, signer, _verifyTier); } /** @@ -72,6 +74,13 @@ export class VerifyTier extends TierContract { return new VerifyTier(address, signer); }; + /** + * @public + * Conncect to this VerifyTier contract with another signer + * + * @param signer - the signer to get connected to the VerifyTier instance + * @returns the VerifyTier instance with the new signer + */ public readonly connect = (signer: Signer): VerifyTier => { return new VerifyTier(this.address, signer); }; @@ -89,16 +98,4 @@ export class VerifyTier extends TierContract { ): Promise => { return await this._isChild(signer, maybeChild); }; - - /** - * It is NOT implemented in VerifyTiers. Always will throw an error - */ - public readonly setTier = async ( - account: string, - endTier: BigNumberish, - data: BytesLike, - overrides?: TxOverrides - ): Promise => { - throw new Error('SET TIER: NOT IMPLEMENTED'); - }; } diff --git a/src/contracts/verify.ts b/src/contracts/verify.ts index 61380d7..839d529 100644 --- a/src/contracts/verify.ts +++ b/src/contracts/verify.ts @@ -1,3 +1,6 @@ +import { Verify__factory, VerifyFactory__factory } from '../typechain'; +import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; +import { FactoryContract } from '../classes/factoryContract'; import { Signer, BytesLike, @@ -6,9 +9,6 @@ import { ContractTransaction, constants, } from 'ethers'; -import { Verify__factory, VerifyFactory__factory } from '../typechain'; -import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; -import { FactoryContract } from '../classes/factoryContract'; /** * @public @@ -145,6 +145,13 @@ export class Verify extends FactoryContract { return new Verify(address, signer); }; + /** + * @public + * Conncect to this Verify contract with another signer + * + * @param signer - the signer to get connected to the Verify instance + * @returns the Verify instance with the new signer + */ public readonly connect = (signer: Signer): Verify => { return new Verify(this.address, signer); }; diff --git a/src/index.ts b/src/index.ts index b8864b0..5bf9cb3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -14,6 +14,8 @@ export * from './contracts/redeemableERC20'; export * from './contracts/redeemableERC20ClaimEscrow'; export * from './contracts/sale'; export * from './contracts/verify'; +export * from './contracts/stake'; +export * from './contracts/orderBook'; export * from './contracts/script-generators/saleScriptGenerator'; export * from './contracts/script-generators/combineTierScriptGenerator'; @@ -32,7 +34,4 @@ export * from './contracts/generics/erc20'; export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; -export * from './contracts/stake'; -export * from './contracts/orderBook'; - export * from './friendlySource'; diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/ERC165Upgradeable.ts new file mode 100644 index 0000000..1846fc0 --- /dev/null +++ b/src/typechain/ERC165Upgradeable.ts @@ -0,0 +1,106 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface ERC165UpgradeableInterface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: { + "Initialized(uint8)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface ERC165Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC165UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + }; + + estimateGas: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/ERC721.ts b/src/typechain/ERC721.ts index d030cef..1a7c0f1 100644 --- a/src/typechain/ERC721.ts +++ b/src/typechain/ERC721.ts @@ -200,7 +200,7 @@ export interface ERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -264,7 +264,7 @@ export interface ERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -325,7 +325,7 @@ export interface ERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: CallOverrides ): Promise; @@ -425,7 +425,7 @@ export interface ERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -496,7 +496,7 @@ export interface ERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/ERC721Burnable.ts b/src/typechain/ERC721Burnable.ts index 83600ef..c1abdf5 100644 --- a/src/typechain/ERC721Burnable.ts +++ b/src/typechain/ERC721Burnable.ts @@ -208,7 +208,7 @@ export interface ERC721Burnable extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -277,7 +277,7 @@ export interface ERC721Burnable extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -340,7 +340,7 @@ export interface ERC721Burnable extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: CallOverrides ): Promise; @@ -445,7 +445,7 @@ export interface ERC721Burnable extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -521,7 +521,7 @@ export interface ERC721Burnable extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/ERC721Upgradeable.ts b/src/typechain/ERC721Upgradeable.ts new file mode 100644 index 0000000..06721a3 --- /dev/null +++ b/src/typechain/ERC721Upgradeable.ts @@ -0,0 +1,537 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface ERC721UpgradeableInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "approve", + values: [string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [string, string, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Initialized(uint8)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + { owner: string; approved: string; tokenId: BigNumber } +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + { owner: string; operator: string; approved: boolean } +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + { from: string; to: string; tokenId: BigNumber } +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC721Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC721UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + Approval( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "Transfer(address,address,uint256)"( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + Transfer( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC165Upgradeable.ts b/src/typechain/IERC165Upgradeable.ts new file mode 100644 index 0000000..1e55fb4 --- /dev/null +++ b/src/typechain/IERC165Upgradeable.ts @@ -0,0 +1,95 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC165UpgradeableInterface extends utils.Interface { + functions: { + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC165Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC165UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/IERC20Permit.ts b/src/typechain/IERC20Permit.ts new file mode 100644 index 0000000..589ce8f --- /dev/null +++ b/src/typechain/IERC20Permit.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC20PermitInterface extends utils.Interface { + functions: { + "DOMAIN_SEPARATOR()": FunctionFragment; + "nonces(address)": FunctionFragment; + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "DOMAIN_SEPARATOR", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "nonces", values: [string]): string; + encodeFunctionData( + functionFragment: "permit", + values: [ + string, + string, + BigNumberish, + BigNumberish, + BigNumberish, + BytesLike, + BytesLike + ] + ): string; + + decodeFunctionResult( + functionFragment: "DOMAIN_SEPARATOR", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "nonces", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "permit", data: BytesLike): Result; + + events: {}; +} + +export interface IERC20Permit extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC20PermitInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + nonces(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + nonces( + owner: string, + overrides?: CallOverrides + ): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC2981Upgradeable.ts b/src/typechain/IERC2981Upgradeable.ts new file mode 100644 index 0000000..b8e7e21 --- /dev/null +++ b/src/typechain/IERC2981Upgradeable.ts @@ -0,0 +1,141 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC2981UpgradeableInterface extends utils.Interface { + functions: { + "royaltyInfo(uint256,uint256)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "royaltyInfo", + values: [BigNumberish, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "royaltyInfo", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC2981Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC2981UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + }; + + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + callStatic: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise< + [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } + >; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + populateTransaction: { + royaltyInfo( + tokenId: BigNumberish, + salePrice: BigNumberish, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/IERC721MetadataUpgradeable.ts b/src/typechain/IERC721MetadataUpgradeable.ts new file mode 100644 index 0000000..1121973 --- /dev/null +++ b/src/typechain/IERC721MetadataUpgradeable.ts @@ -0,0 +1,531 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC721MetadataUpgradeableInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "name()": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "symbol()": FunctionFragment; + "tokenURI(uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "approve", + values: [string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [string, string] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "tokenURI", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [string, string, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + { owner: string; approved: string; tokenId: BigNumber } +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + { owner: string; operator: string; approved: boolean } +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + { from: string; to: string; tokenId: BigNumber } +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC721MetadataUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721MetadataUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { operator: string }>; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string]>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + Approval( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + Transfer( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC721ReceiverUpgradeable.ts b/src/typechain/IERC721ReceiverUpgradeable.ts new file mode 100644 index 0000000..d9fb87d --- /dev/null +++ b/src/typechain/IERC721ReceiverUpgradeable.ts @@ -0,0 +1,113 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC721ReceiverUpgradeableInterface extends utils.Interface { + functions: { + "onERC721Received(address,address,uint256,bytes)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "onERC721Received", + values: [string, string, BigNumberish, BytesLike] + ): string; + + decodeFunctionResult( + functionFragment: "onERC721Received", + data: BytesLike + ): Result; + + events: {}; +} + +export interface IERC721ReceiverUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721ReceiverUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + onERC721Received( + operator: string, + from: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/IERC721Upgradeable.ts b/src/typechain/IERC721Upgradeable.ts new file mode 100644 index 0000000..e4a1bd5 --- /dev/null +++ b/src/typechain/IERC721Upgradeable.ts @@ -0,0 +1,480 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface IERC721UpgradeableInterface extends utils.Interface { + functions: { + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "getApproved(uint256)": FunctionFragment; + "isApprovedForAll(address,address)": FunctionFragment; + "ownerOf(uint256)": FunctionFragment; + "safeTransferFrom(address,address,uint256)": FunctionFragment; + "setApprovalForAll(address,bool)": FunctionFragment; + "supportsInterface(bytes4)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "approve", + values: [string, BigNumberish] + ): string; + encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; + encodeFunctionData( + functionFragment: "getApproved", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "isApprovedForAll", + values: [string, string] + ): string; + encodeFunctionData( + functionFragment: "ownerOf", + values: [BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "safeTransferFrom", + values: [string, string, BigNumberish] + ): string; + encodeFunctionData( + functionFragment: "setApprovalForAll", + values: [string, boolean] + ): string; + encodeFunctionData( + functionFragment: "supportsInterface", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [string, string, BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "getApproved", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "isApprovedForAll", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "safeTransferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setApprovalForAll", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "supportsInterface", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "ApprovalForAll(address,address,bool)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + { owner: string; approved: string; tokenId: BigNumber } +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export type ApprovalForAllEvent = TypedEvent< + [string, string, boolean], + { owner: string; operator: string; approved: boolean } +>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + { from: string; to: string; tokenId: BigNumber } +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface IERC721Upgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IERC721UpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise<[BigNumber] & { balance: BigNumber }>; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { operator: string }>; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise<[boolean]>; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise<[string] & { owner: string }>; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: CallOverrides + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: CallOverrides + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + Approval( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null + ): ApprovalEventFilter; + + "ApprovalForAll(address,address,bool)"( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + ApprovalForAll( + owner?: string | null, + operator?: string | null, + approved?: null + ): ApprovalForAllEventFilter; + + "Transfer(address,address,uint256)"( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + Transfer( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null + ): TransferEventFilter; + }; + + estimateGas: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + balanceOf( + owner: string, + overrides?: CallOverrides + ): Promise; + + getApproved( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isApprovedForAll( + owner: string, + operator: string, + overrides?: CallOverrides + ): Promise; + + ownerOf( + tokenId: BigNumberish, + overrides?: CallOverrides + ): Promise; + + "safeTransferFrom(address,address,uint256)"( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + "safeTransferFrom(address,address,uint256,bytes)"( + from: string, + to: string, + tokenId: BigNumberish, + data: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + setApprovalForAll( + operator: string, + _approved: boolean, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + supportsInterface( + interfaceId: BytesLike, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/OwnableUpgradeable.ts b/src/typechain/OwnableUpgradeable.ts new file mode 100644 index 0000000..a703651 --- /dev/null +++ b/src/typechain/OwnableUpgradeable.ts @@ -0,0 +1,167 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface OwnableUpgradeableInterface extends utils.Interface { + functions: { + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface OwnableUpgradeable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OwnableUpgradeableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/ReserveTokenERC721.ts b/src/typechain/ReserveTokenERC721.ts index a0bf860..d1357c2 100644 --- a/src/typechain/ReserveTokenERC721.ts +++ b/src/typechain/ReserveTokenERC721.ts @@ -227,7 +227,7 @@ export interface ReserveTokenERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -302,7 +302,7 @@ export interface ReserveTokenERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -369,7 +369,7 @@ export interface ReserveTokenERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: CallOverrides ): Promise; @@ -480,7 +480,7 @@ export interface ReserveTokenERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -562,7 +562,7 @@ export interface ReserveTokenERC721 extends BaseContract { from: string, to: string, tokenId: BigNumberish, - _data: BytesLike, + data: BytesLike, overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts index f1319f8..174e180 100644 --- a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts +++ b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts @@ -233,7 +233,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b6200007960201b62000c201760201c565b6001600160a01b03166080526200004b62000020620000ee565b6001600160a01b031660a0526200065b565b6060620000746200010560201b62000cab1760201c565b905090565b600080620000b383604051602001620000939190620005f9565b604051602081830303815290604052620002f460201b62000e391760201c565b90508051602082016000f091506001600160a01b038216620000e85760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060620000746200032260201b62000e651760201c565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004be831b62000fe617811660e08301819052620004c4841b62000fec1782166101008401819052620004ca851b62000ff217831661012085018190526101408501839052610160850183905261018085018390526101a08501819052620004d0861b62000ff81784166101c08601526200051d861b6200106d1784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e0850182905262000523861b6200107317841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084015262000566841b620010e21782166105408401526200056c841b620010e817821661056084015261058083018190526200057290931b620010ee17166105a08201526105c08082019290925290815290565b60608151826040516020016200030c92919062000615565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004c4831b62000fec17811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526200052390931b6200107317166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005135760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005625760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064016200050a565b5090565b60020190565b60030190565b6000601f821680620005b55760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b60448201526064016200050a565b92915050565b6000815160005b81811015620005de5760208185018101518683015201620005c2565b81811115620005ee576000828601525b509290920192915050565b6000815260006200060e6001830184620005bb565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b6005820152600062000653600e830184620005bb565b949350505050565b60805160a051611ee962000681600039600061086c0152600061083f0152611ee96000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e9146102185780639b0bc3491461022d578063a46c2a311461024057600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a3660046119ed565b6103d0565b60405161008c9190611b0b565b60405180910390f35b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c080830191909152815261007f565b61022b610226366004611b5c565b6107cb565b005b61007f61023b366004611bac565b610acf565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c080830191909152815261007f565b606060006103dd85611161565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c10565b60200151905060008060005b86518110156105f3578387828151811061047757610477611c5f565b602002602001015160a0018181525050600285518161049857610498611c8e565b048782815181106104ab576104ab611c5f565b602002602001015160c00181815250506104de888883815181106104d1576104d1611c5f565b60200260200101516107cb565b61050e8782815181106104f3576104f3611c5f565b6020026020010151608001518461129f90919063ffffffff16565b925061054087828151811061052557610525611c5f565b6020026020010151606001518361129f90919063ffffffff16565b915086818151811061055457610554611c5f565b60200260200101516020015187828151811061057257610572611c5f565b60200260200101516040015110156105eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161045b565b506000828860200151510167ffffffffffffffff811115610616576106166116bc565b60405190808252806020026020018201604052801561063f578160200160208202803683370190505b50905060005b886020015151811015610695578860200151818151811061066857610668611c5f565b602002602001015182828151811061068257610682611c5f565b6020908102919091010152600101610645565b5087515160009067ffffffffffffffff8111156106b4576106b46116bc565b6040519080825280602002602001820160405280156106e757816020015b60608152602001906001900390816106d25790505b50905060005b8951518110156107435761071e878b60000151838151811061071157610711611c5f565b6020026020010151610acf565b82828151811061073057610730611c5f565b60209081029190910101526001016106ed565b506107bb6040518060a00160405280600081526020018567ffffffffffffffff811115610772576107726116bc565b60405190808252806020026020018201604052801561079b578160200160208202803683370190505b5081526020018381526020018481526020018b60200151518152506112b6565b96505050505050505b9392505050565b80518251518110610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016105e2565b60006108637f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060006108907f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060008080600080602088026020018a5101519050805193505b83851015610a54576002850194508481015180601e1a935080601f1a925050600683101561096f57826108ff5789602001515189608001510182106108ef57600080fd5b6040890180516001019052610956565b600183141561091857886040015182106108ef57600080fd5b6002831415610931576040890180516001019052610956565b6003831415610956578860a00151821061094a57600080fd5b60408901805160010190525b600483141561096a5761096a8a8a84611421565b610a37565b8860c0015183106109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016105e2565b6020838102888101820151908801909101516109fb8463ffffffff8416565b60408c018051919091039081905260608c0151610a179161129f565b60608c0152610a298463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610a4a9161129f565b60608a01526108ab565b606089015160ff1015610ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016105e2565b50505050505050505050565b80516060906002810615610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016105e2565b60006002600383020467ffffffffffffffff811115610b6057610b606116bc565b6040519080825280601f01601f191660200182016040528015610b8a576020820181803683370190505b509050600660018381018160005b82821015610c125781890151601f1a6002830615610bf45785811015610bc657600182019181908801602101535b858110610bf457600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610c055780826020018801535b5060019182019101610b98565b509398975050505050505050565b600080610c4b83604051602001610c379190611cbd565b604051602081830303815290604052610e39565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610ca5576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c082810191909152815290565b6060815182604051602001610e4f929190611ce3565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b6000808211611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5060020260010190565b50600090565b60008082116110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5090565b60020190565b60030190565b6000601f82168061115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016105e2565b92915050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261119591166113f3565b905080516000141561115b5761124261123d8473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112389190810190611d7a565b6114c0565b610c20565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556107c483611161565b6000818310156112af57816107c4565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113029190611df1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261133e9291602001611e27565b604051602081830303815290604052905060005b8560400151518110156113ea57818660400151828151811061137657611376611c5f565b60200260200101515160001b8760400151838151811061139857611398611c5f565b60200260200101516040516020016113b293929190611e4d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611352565b50949350505050565b606061115b8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115ca565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c918290030191829052606084015160019091019161146b919061129f565b6060840152608083015161147f908261129f565b60808401528251600783168085526001600385811c161b919060005b838110156114b5576114ad88886107cb565b60010161149b565b505090935250505050565b606060208251816114d3576114d3611c8e565b061561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016105e2565b6000601083518161154e5761154e611c8e565b0467ffffffffffffffff811115611567576115676116bc565b6040519080825280601f01601f191660200182016040528015611591576020820181803683370190505b509050600060025b84518210156115c1578083018051602084880181015190911790915290910190600201611599565b50909392505050565b6060833b806115e95750506040805160208101909152600081526107c4565b808411156116075750506040805160208101909152600081526107c4565b83831015611652576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016105e2565b83830384820360008282106116675782611669565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6116ba611e84565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561170e5761170e6116bc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175b5761175b6116bc565b604052919050565b600067ffffffffffffffff82111561177d5761177d6116bc565b5060051b60200190565b600067ffffffffffffffff8211156117a1576117a16116bc565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117de57600080fd5b81356117f16117ec82611787565b611714565b81815284602083860101111561180657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261183457600080fd5b813560206118446117ec83611763565b82815260059290921b8401810191818101908684111561186357600080fd5b8286015b8481101561187e5780358352918301918301611867565b509695505050505050565b60006040828403121561189b57600080fd5b6118a36116eb565b9050813567ffffffffffffffff808211156118bd57600080fd5b818401915084601f8301126118d157600080fd5b813560206118e16117ec83611763565b82815260059290921b8401810191818101908884111561190057600080fd5b8286015b848110156119385780358681111561191c5760008081fd5b61192a8b86838b01016117cd565b845250918301918301611904565b508652508581013593508284111561194f57600080fd5b61195b87858801611823565b818601525050505092915050565b600060e0828403121561197b57600080fd5b60405160e0810181811067ffffffffffffffff8211171561199e5761199e6116bc565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a0257600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a2657600080fd5b925060208481013567ffffffffffffffff80821115611a4457600080fd5b611a5088838901611889565b94506040870135915080821115611a6657600080fd5b508501601f81018713611a7857600080fd5b8035611a866117ec82611763565b81815260e0918202830184019184820191908a841115611aa557600080fd5b938501935b83851015611acb57611abc8b86611969565b83529384019391850191611aaa565b5080955050505050509250925092565b60005b83811015611af6578181015183820152602001611ade565b83811115611b05576000848401525b50505050565b6020815260008251806020840152611b2a816040850160208701611adb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b7057600080fd5b823567ffffffffffffffff811115611b8757600080fd5b611b9385828601611889565b925050611ba38460208501611969565b90509250929050565b60008060408385031215611bbf57600080fd5b823567ffffffffffffffff80821115611bd757600080fd5b611be3868387016117cd565b93506020850135915080821115611bf957600080fd5b50611c06858286016117cd565b9150509250929050565b600060408284031215611c2257600080fd5b6040516040810181811067ffffffffffffffff82111715611c4557611c456116bc565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251611cd6816001850160208701611adb565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d6c81600e850160208701611adb565b91909101600e019392505050565b600060208284031215611d8c57600080fd5b815167ffffffffffffffff811115611da357600080fd5b8201601f81018413611db457600080fd5b8051611dc26117ec82611787565b818152856020838501011115611dd757600080fd5b611de8826020830160208601611adb565b95945050505050565b815160009082906020808601845b83811015611e1b57815185529382019390820190600101611dff565b50929695505050505050565b82815260008251611e3f816020850160208701611adb565b919091016020019392505050565b60008451611e5f818460208901611adb565b82018481528351611e77816020808501908801611adb565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220ce1a57e4e6cb9e647683791fbbb78f613d293fc7533f5275542177db2df3e3d664736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b6200007960201b62000c201760201c565b6001600160a01b03166080526200004b62000020620000ee565b6001600160a01b031660a0526200065b565b6060620000746200010560201b62000cab1760201c565b905090565b600080620000b383604051602001620000939190620005f9565b604051602081830303815290604052620002f460201b62000e391760201c565b90508051602082016000f091506001600160a01b038216620000e85760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060620000746200032260201b62000e651760201c565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004be831b62000fe617811660e08301819052620004c4841b62000fec1782166101008401819052620004ca851b62000ff217831661012085018190526101408501839052610160850183905261018085018390526101a08501819052620004d0861b62000ff81784166101c08601526200051d861b6200106d1784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e0850182905262000523861b6200107317841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084015262000566841b620010e21782166105408401526200056c841b620010e817821661056084015261058083018190526200057290931b620010ee17166105a08201526105c08082019290925290815290565b60608151826040516020016200030c92919062000615565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004c4831b62000fec17811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526200052390931b6200107317166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005135760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005625760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064016200050a565b5090565b60020190565b60030190565b6000601f821680620005b55760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b60448201526064016200050a565b92915050565b6000815160005b81811015620005de5760208185018101518683015201620005c2565b81811115620005ee576000828601525b509290920192915050565b6000815260006200060e6001830184620005bb565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b6005820152600062000653600e830184620005bb565b949350505050565b60805160a051611ee962000681600039600061086c0152600061083f0152611ee96000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e9146102185780639b0bc3491461022d578063a46c2a311461024057600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a3660046119ed565b6103d0565b60405161008c9190611b0b565b60405180910390f35b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c080830191909152815261007f565b61022b610226366004611b5c565b6107cb565b005b61007f61023b366004611bac565b610acf565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c080830191909152815261007f565b606060006103dd85611161565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c10565b60200151905060008060005b86518110156105f3578387828151811061047757610477611c5f565b602002602001015160a0018181525050600285518161049857610498611c8e565b048782815181106104ab576104ab611c5f565b602002602001015160c00181815250506104de888883815181106104d1576104d1611c5f565b60200260200101516107cb565b61050e8782815181106104f3576104f3611c5f565b6020026020010151608001518461129f90919063ffffffff16565b925061054087828151811061052557610525611c5f565b6020026020010151606001518361129f90919063ffffffff16565b915086818151811061055457610554611c5f565b60200260200101516020015187828151811061057257610572611c5f565b60200260200101516040015110156105eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161045b565b506000828860200151510167ffffffffffffffff811115610616576106166116bc565b60405190808252806020026020018201604052801561063f578160200160208202803683370190505b50905060005b886020015151811015610695578860200151818151811061066857610668611c5f565b602002602001015182828151811061068257610682611c5f565b6020908102919091010152600101610645565b5087515160009067ffffffffffffffff8111156106b4576106b46116bc565b6040519080825280602002602001820160405280156106e757816020015b60608152602001906001900390816106d25790505b50905060005b8951518110156107435761071e878b60000151838151811061071157610711611c5f565b6020026020010151610acf565b82828151811061073057610730611c5f565b60209081029190910101526001016106ed565b506107bb6040518060a00160405280600081526020018567ffffffffffffffff811115610772576107726116bc565b60405190808252806020026020018201604052801561079b578160200160208202803683370190505b5081526020018381526020018481526020018b60200151518152506112b6565b96505050505050505b9392505050565b80518251518110610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016105e2565b60006108637f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060006108907f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060008080600080602088026020018a5101519050805193505b83851015610a54576002850194508481015180601e1a935080601f1a925050600683101561096f57826108ff5789602001515189608001510182106108ef57600080fd5b6040890180516001019052610956565b600183141561091857886040015182106108ef57600080fd5b6002831415610931576040890180516001019052610956565b6003831415610956578860a00151821061094a57600080fd5b60408901805160010190525b600483141561096a5761096a8a8a84611421565b610a37565b8860c0015183106109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016105e2565b6020838102888101820151908801909101516109fb8463ffffffff8416565b60408c018051919091039081905260608c0151610a179161129f565b60608c0152610a298463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610a4a9161129f565b60608a01526108ab565b606089015160ff1015610ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016105e2565b50505050505050505050565b80516060906002810615610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016105e2565b60006002600383020467ffffffffffffffff811115610b6057610b606116bc565b6040519080825280601f01601f191660200182016040528015610b8a576020820181803683370190505b509050600660018381018160005b82821015610c125781890151601f1a6002830615610bf45785811015610bc657600182019181908801602101535b858110610bf457600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610c055780826020018801535b5060019182019101610b98565b509398975050505050505050565b600080610c4b83604051602001610c379190611cbd565b604051602081830303815290604052610e39565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610ca5576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c082810191909152815290565b6060815182604051602001610e4f929190611ce3565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b6000808211611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5060020260010190565b50600090565b60008082116110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5090565b60020190565b60030190565b6000601f82168061115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016105e2565b92915050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261119591166113f3565b905080516000141561115b5761124261123d8473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112389190810190611d7a565b6114c0565b610c20565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556107c483611161565b6000818310156112af57816107c4565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113029190611df1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261133e9291602001611e27565b604051602081830303815290604052905060005b8560400151518110156113ea57818660400151828151811061137657611376611c5f565b60200260200101515160001b8760400151838151811061139857611398611c5f565b60200260200101516040516020016113b293929190611e4d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611352565b50949350505050565b606061115b8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115ca565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c918290030191829052606084015160019091019161146b919061129f565b6060840152608083015161147f908261129f565b60808401528251600783168085526001600385811c161b919060005b838110156114b5576114ad88886107cb565b60010161149b565b505090935250505050565b606060208251816114d3576114d3611c8e565b061561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016105e2565b6000601083518161154e5761154e611c8e565b0467ffffffffffffffff811115611567576115676116bc565b6040519080825280601f01601f191660200182016040528015611591576020820181803683370190505b509050600060025b84518210156115c1578083018051602084880181015190911790915290910190600201611599565b50909392505050565b6060833b806115e95750506040805160208101909152600081526107c4565b808411156116075750506040805160208101909152600081526107c4565b83831015611652576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016105e2565b83830384820360008282106116675782611669565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6116ba611e84565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561170e5761170e6116bc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175b5761175b6116bc565b604052919050565b600067ffffffffffffffff82111561177d5761177d6116bc565b5060051b60200190565b600067ffffffffffffffff8211156117a1576117a16116bc565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117de57600080fd5b81356117f16117ec82611787565b611714565b81815284602083860101111561180657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261183457600080fd5b813560206118446117ec83611763565b82815260059290921b8401810191818101908684111561186357600080fd5b8286015b8481101561187e5780358352918301918301611867565b509695505050505050565b60006040828403121561189b57600080fd5b6118a36116eb565b9050813567ffffffffffffffff808211156118bd57600080fd5b818401915084601f8301126118d157600080fd5b813560206118e16117ec83611763565b82815260059290921b8401810191818101908884111561190057600080fd5b8286015b848110156119385780358681111561191c5760008081fd5b61192a8b86838b01016117cd565b845250918301918301611904565b508652508581013593508284111561194f57600080fd5b61195b87858801611823565b818601525050505092915050565b600060e0828403121561197b57600080fd5b60405160e0810181811067ffffffffffffffff8211171561199e5761199e6116bc565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a0257600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a2657600080fd5b925060208481013567ffffffffffffffff80821115611a4457600080fd5b611a5088838901611889565b94506040870135915080821115611a6657600080fd5b508501601f81018713611a7857600080fd5b8035611a866117ec82611763565b81815260e0918202830184019184820191908a841115611aa557600080fd5b938501935b83851015611acb57611abc8b86611969565b83529384019391850191611aaa565b5080955050505050509250925092565b60005b83811015611af6578181015183820152602001611ade565b83811115611b05576000848401525b50505050565b6020815260008251806020840152611b2a816040850160208701611adb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b7057600080fd5b823567ffffffffffffffff811115611b8757600080fd5b611b9385828601611889565b925050611ba38460208501611969565b90509250929050565b60008060408385031215611bbf57600080fd5b823567ffffffffffffffff80821115611bd757600080fd5b611be3868387016117cd565b93506020850135915080821115611bf957600080fd5b50611c06858286016117cd565b9150509250929050565b600060408284031215611c2257600080fd5b6040516040810181811067ffffffffffffffff82111715611c4557611c456116bc565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251611cd6816001850160208701611adb565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d6c81600e850160208701611adb565b91909101600e019392505050565b600060208284031215611d8c57600080fd5b815167ffffffffffffffff811115611da357600080fd5b8201601f81018413611db457600080fd5b8051611dc26117ec82611787565b818152856020838501011115611dd757600080fd5b611de8826020830160208601611adb565b95945050505050565b815160009082906020808601845b83811015611e1b57815185529382019390820190600101611dff565b50929695505050505050565b82815260008251611e3f816020850160208701611adb565b919091016020019392505050565b60008451611e5f818460208901611adb565b82018481528351611e77816020808501908801611adb565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220b8f12da9ae377f0c4dfcf743434678b550fb69accec3cbffc9752d8046ed331b64736f6c634300080a0033"; type AllStandardOpsStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/AllStandardOpsTest__factory.ts b/src/typechain/factories/AllStandardOpsTest__factory.ts index 9a6b801..191fcee 100644 --- a/src/typechain/factories/AllStandardOpsTest__factory.ts +++ b/src/typechain/factories/AllStandardOpsTest__factory.ts @@ -198,7 +198,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b5060405162003b3138038062003b3183398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a051613a7b620000b66000396000610672015260006106ae0152613a7b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063f2cd6c081461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612e4e565b6102ee565b005b6100aa610539565b6040516100b79190612f1f565b60405180910390f35b6100a06100ce366004612f32565b610594565b6100db6107f4565b6040519081526020016100b7565b6100a0610829565b6100f96109d1565b6040516100b79190612fe7565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526115bf60e082018190526116b361010083015261173f610120830152611860610140830152610160820152611909610180820152611a116101a0820152611ae56101c0820152611ce26101e0820152611ced610200820152611cf8610220820152611d03610240820152611d0e610260820152611d42610280820152611da86102a0820152611e0e6102c0820152611e426102e0820152611e76610300820152611eab610320820152611f06610340820152611f5c610360820152611f85610380820152611fdc6103a08201526120096103c08201526120606103e08201526120cb61040082015261212861042082015261216661044082015261219f6104608201526121d36104808201526122056104a08201526122376104c08201526122696104e082015261229d6105008201526122ef6105208201526123286105408201526123da6105608201526125076105808201526125636105a082015261261d6105c080830191909152815290516100b791906130bd565b6000815160206102fe91906130ff565b67ffffffffffffffff81111561031657610316612dac565b6040519080825280601f01601f191660200182016040528015610340576020820181803683370190505b50905060005b82518110156103985760008382815181106103635761036361313c565b60200260200101519050600082602061037c91906130ff565b84016020019190915250806103908161316b565b915050610346565b5060005a60008054919250906103c39073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a905060006103da84610be6565b905060005a905060005a90506103f288846000610d52565b5060005a90506104426040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b61102e565b60408051808201909152600b81527f6465636f6465206761733a00000000000000000000000000000000000000000060208201526104849061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526104c69061043d83856131a4565b8351600590815560208086015180518793926104e792600692910190612c29565b5060408201518051610503916002840191602090910190612c74565b506060820151805161051f916003840191602090910190612c29565b506080820151816004015590505050505050505050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561058a57602002820191906000526020600020905b815481526020019060010190808311610576575b5050505050905090565b60005a90506105d96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b61063a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105fa57905050905081816000815181106106635761066361313c565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016106ed9392919061332f565b6000604051808303816000875af115801561070c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107529190810190613492565b905060005a905061079e6040518060400160405280600d81526020017f6e65772073746174652067617300000000000000000000000000000000000000815250828761043d91906131a4565b6107a7826110c3565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050505050565b600554600090600690610809906001906131a4565b815481106108195761081961313c565b9060005260206000200154905090565b60005a60008054919250906108539073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a9050600061086a84610be6565b905060005a905060005a905061089160405180602001604052806000815250846000610d52565b5060005a90506108dc6040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b60408051808201909152600b81527f6465636f6465206761733a000000000000000000000000000000000000000000602082015261091e9061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526109609061043d83856131a4565b83516005908155602080860151805187939261098192600692910190612c29565b506040820151805161099d916002840191602090910190612c74565b50606082015180516109b9916003840191602090910190612c29565b50608082015181600401559050505050505050505050565b610a036040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b815481526020019060010190808311610a55575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b43578382906000526020600020018054610ab69061353b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae29061353b565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b50505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610b9a57602002820191906000526020600020905b815481526020019060010190808311610b86575b50505050508152602001600482015481525050905090565b6060610be08260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61114e565b92915050565b610c186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610c4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610c7e57610c7e612dac565b604051908082528060200260200182016040528015610ca7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610cde57610cde612dac565b604051908082528060200260200182016040528015610d07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610d41578160208202602001840152815160200182019150600181019050610d1a565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611014576003890198508886015180601f1a975061ffff8160081c169850506006881015610f8c5787610dd557866020028401518252602082019150610f9f565b6001881415610df257602087028301518252602082019150610f9f565b6002881415610e84578c518760200210610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d01518252602082019150610f9f565b6003881415610ecd576000610ebb604080518082018252600080825260209182015281518083019092526001825260039082015290565b51880154835250602090910190610f9f565b6004881415610ee957610ee28d8d848a611236565b9150610f9f565b606087610f17578c604051602001610f019190612fe7565b6040516020818303038152906040529050610f76565b6001881415610f3057610f298d6113a3565b9050610f76565b6002881415610f4c576020808e0151604051610f019201613589565b6003881415610f76578c516040805160208101929092520160405160208183030381529060405290505b805115610f8657610f86816114e0565b50610f9f565b87610f9b888463ffffffff8416565b9250505b60208c0151518c51111561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610e64565b610d90565b6020838303048c52509750505050505050505b9392505050565b6110bf82826040516024016110449291906135ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052611572565b5050565b6000806110ee836040516020016110da9190613610565b604051602081830303815290604052611593565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611148576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061116d575050604080516020810190915260008152611027565b8084111561118b575050604080516020810190915260008152611027565b838310156111d6576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610e64565b83830384820360008282106111eb57826111ed565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261127557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006112c0565b826001141561129957506fffffffffffffffffffffffffffffffff905060806112c0565b82600214156112b5575067ffffffffffffffff905060406112c0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156112e3576112e3612dac565b60405190808252806020026020018201604052801561130c578160200160208202803683370190505b50905060208082019083028a03815b8b82101561133357815181526020918201910161131b565b505060608b015160808c015160209081029091010160005b6101008110156113915760208502830182845b8281101561137a578051841c8a1682526020918201910161135e565b5050506113888e8e8b610d52565b9b50850161134b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113ef9190613589565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261142b9291602001613636565b604051602081830303815290604052905060005b8560400151518110156114d75781866040015182815181106114635761146361313c565b60200260200101515160001b876040015183815181106114855761148561313c565b602002602001015160405160200161149f9392919061365c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161143f565b50949350505050565b61156f816040516024016114f491906130bd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611572565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016115a9929190613693565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a6919061372a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611733919061372a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611852919061372a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611665565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190613743565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401611811565b60008060008467ffffffffffffffff811115611b0357611b03612dac565b604051908082528060200260200182016040528015611b2c578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b4a57611b4a612dac565b604051908082528060200260200182016040528015611b73578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611bc8578251815260209283019201611bb0565b5050602088028101602084015b81831015611bed578251815260209283019201611bd5565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c479087908790600401613779565b600060405180830381865afa158015611c64573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611caa91908101906137dc565b9050846020820160208a0281015b80821015611cd3578151835260209283019290910190611cb8565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612699565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611da2858a612699565b9061271a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611e08858a612699565b90612739565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611733828761274e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612799565b6000602083028203805b83811015611ea05780518015611e97578252611ea0565b50602001611e80565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611ea0578051611f7d5760008252611ea0565b602001611f66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561209e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906120b683826127f7565b9250612070565b505081526020019392505050565b6020828102820380516000928201835b858210801561210957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906121218382612833565b92506120db565b6020828102820380516000928201835b85821080156121475750826000105b156120bd5750805160209091019061215f8382612862565b9250612138565b600060208302820380516000602083015b858110156120bd578051830191508282101561219257600080fd5b9091508190602001612177565b600060208302820380516000602083015b858110156120bd5780519150816121c657600080fd5b91819004916020016121b0565b6020828102820380516000928201835b858210156120bd575080516020909101906121fe8184613982565b92506121e3565b6020828102820380516000928201835b858210156120bd575080518281111561222c578092505b602082019150612215565b6020828102820380516000928201835b858210156120bd575080518281101561225e578092505b602082019150612247565b600060208302820380516000602083015b858110156120bd57805191508161229057600080fd5b918190069160200161227a565b60006020830282038051600080602084015b868110156122e05783156122d85780519250828402915082848304146122d457600080fd5b8193505b6020016122af565b50505081526020019392505050565b600060208302820380516000602083015b858110156120bd578051830391508282111561231b57600080fd5b9091508190602001612300565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490611811908690869060040161398e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906124b3908790879087906004016139bd565b602060405180830381865afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f4919061372a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a68383612878565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561259157612591612dac565b6040519080825280602002602001820160405280156125ba578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125f6578151816020018601526020820191506020810190506125d4565b50505190506000612609838389896128d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561268a85858585612a27565b90955250949695505050505050565b60008082601214156126ae5783915050610be0565b82601211156126da575060128290036126c881600a613982565b6126d290856130ff565b915050610be0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270981600a613982565b6126d290856139fb565b5092915050565b60008161272f670de0b6b3a7640000856130ff565b61102791906139fb565b6000670de0b6b3a764000061272f83856130ff565b600081810b61275e575081610be0565b60008260000b13156127865761277582600a613a36565b61277f90846130ff565b9050610be0565b60ff60008390031661270981600a613982565b60008060128314156127ae5783915050610be0565b82601211156127c85750601282900361270981600a613982565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c881600a613982565b6000828201838110612809578061282b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261284257506000610be0565b82820282848281612855576128556135bf565b041415612809578061282b565b6000818311612872576000611027565b50900390565b60008060015b600881116128cf5760006128928683612acd565b905060006128a08684612acd565b905060006128ae8383612862565b90506128be856001860383612b7a565b9450506001909201915061287e9050565b509392505050565b835160009081908190819060015b60088111612a195760009250828761291e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612922565b5060005b60005b838110156129d7576129508c82815181106129425761294261313c565b602002602001015184612acd565b95508a86116129a2578861296f576129688683612c03565b9150612999565b6001891415612982576129688683612c19565b600289148015612990575084155b15612999578591505b600194506129cf565b896129cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129d7565b600101612925565b5083612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a0e866001840383612b7a565b9550506001016128e5565b509298975050505050505050565b6000826008811115612a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b6000855b85811015612ac15763ffffffff6020820290811b199890981685891b17979150600101612a99565b50959695505050505050565b6000816008811115612b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b82612b495760009150612713565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c125781611027565b5090919050565b600081831015612c125781611027565b828054828255906000526020600020908101928215612c64579160200282015b82811115612c64578251825591602001919060010190612c49565b50612c70929150612ccd565b5090565b828054828255906000526020600020908101928215612cc1579160200282015b82811115612cc15782518051612cb1918491602090910190612ce2565b5091602001919060010190612c94565b50612c70929150612d55565b5b80821115612c705760008155600101612cce565b828054612cee9061353b565b90600052602060002090601f016020900481019282612d105760008555612c64565b82601f10612d2957805160ff1916838001178555612c64565b82800160010185558215612c645791820182811115612c64578251825591602001919060010190612c49565b80821115612c70576000612d698282612d72565b50600101612d55565b508054612d7e9061353b565b6000825580601f10612d8e575050565b601f01602090049060005260206000209081019061156f9190612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2257612e22612dac565b604052919050565b600067ffffffffffffffff821115612e4457612e44612dac565b5060051b60200190565b60006020808385031215612e6157600080fd5b823567ffffffffffffffff811115612e7857600080fd5b8301601f81018513612e8957600080fd5b8035612e9c612e9782612e2a565b612ddb565b81815260059190911b82018301908381019087831115612ebb57600080fd5b928401925b82841015612ed957833582529284019290840190612ec0565b979650505050505050565b600081518084526020808501945080840160005b83811015612f1457815187529582019590820190600101612ef8565b509495945050505050565b6020815260006110276020830184612ee4565b600060208284031215612f4457600080fd5b813567ffffffffffffffff811115612f5b57600080fd5b82016040818503121561102757600080fd5b60005b83811015612f88578181015183820152602001612f70565b83811115612f97576000848401525b50505050565b60008151808452612fb5816020860160208601612f6d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a0604085015261300c60c0850182612ee4565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156130855784878303018452613073828751612f9d565b95880195938801939150600101613059565b5060608a01519650838982030160808a01526130a18188612ee4565b9650505050505050608084015160a08401528091505092915050565b6020815260006110276020830184612f9d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613137576131376130d0565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561319d5761319d6130d0565b5060010190565b6000828210156131b6576131b66130d0565b500390565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131f057600080fd5b830160208101925035905067ffffffffffffffff81111561321057600080fd5b8060051b360383131561322257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156132a457600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015612f1457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016132d5565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161336086876131bb565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561342a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126133e157600080fd5b8501803567ffffffffffffffff8111156133fa57600080fd5b80360387131561340957600080fd5b61341688828b8501613229565b975050509186019190860190600101613380565b505050505061343b828701876131bb565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613472828483613272565b92505050828103604084015261348881856132c1565b9695505050505050565b6000602082840312156134a457600080fd5b815167ffffffffffffffff808211156134bc57600080fd5b818401915084601f8301126134d057600080fd5b8151818111156134e2576134e2612dac565b61351360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ddb565b915080825285602082850101111561352a57600080fd5b6114d7816020840160208601612f6d565b600181811c9082168061354f57607f821691505b60208210811415611148577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b838110156135b357815185529382019390820190600101613597565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6040815260006136016040830185612f9d565b90508260208301529392505050565b6000815260008251613629816001850160208701612f6d565b9190910160010192915050565b8281526000825161364e816020850160208701612f6d565b919091016020019392505050565b6000845161366e818460208901612f6d565b82018481528351613686816020808501908801612f6d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161371c81600e850160208701612f6d565b91909101600e019392505050565b60006020828403121561373c57600080fd5b5051919050565b60006020828403121561375557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461102757600080fd5b604080825283519082018190526000906020906060840190828701845b828110156137c857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613796565b505050838103828501526134888186612ee4565b600060208083850312156137ef57600080fd5b825167ffffffffffffffff81111561380657600080fd5b8301601f8101851361381757600080fd5b8051613825612e9782612e2a565b81815260059190911b8201830190838101908783111561384457600080fd5b928401925b82841015612ed957835182529284019290840190613849565b600181815b808511156138bb57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138a1576138a16130d0565b808516156138ae57918102915b93841c9390800290613867565b509250929050565b6000826138d257506001610be0565b816138df57506000610be0565b81600181146138f557600281146138ff5761391b565b6001915050610be0565b60ff841115613910576139106130d0565b50506001821b610be0565b5060208310610133831016604e8410600b841016171561393e575081810a610be0565b6139488383613862565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397a5761397a6130d0565b029392505050565b600061102783836138c3565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061282b6040830184612ee4565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006139f26060830184612ee4565b95945050505050565b600082613a31577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061102760ff8416836138c356fea2646970667358221220a7b4d3cb5ef17a13b3b0948cd49b465e7346109971c9ac801e0485428c80047264736f6c634300080a0033"; + "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b5060405162003b3138038062003b3183398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a051613a7b620000b66000396000610672015260006106ae0152613a7b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063f2cd6c081461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612e4e565b6102ee565b005b6100aa610539565b6040516100b79190612f1f565b60405180910390f35b6100a06100ce366004612f32565b610594565b6100db6107f4565b6040519081526020016100b7565b6100a0610829565b6100f96109d1565b6040516100b79190612fe7565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526115bf60e082018190526116b361010083015261173f610120830152611860610140830152610160820152611909610180820152611a116101a0820152611ae56101c0820152611ce26101e0820152611ced610200820152611cf8610220820152611d03610240820152611d0e610260820152611d42610280820152611da86102a0820152611e0e6102c0820152611e426102e0820152611e76610300820152611eab610320820152611f06610340820152611f5c610360820152611f85610380820152611fdc6103a08201526120096103c08201526120606103e08201526120cb61040082015261212861042082015261216661044082015261219f6104608201526121d36104808201526122056104a08201526122376104c08201526122696104e082015261229d6105008201526122ef6105208201526123286105408201526123da6105608201526125076105808201526125636105a082015261261d6105c080830191909152815290516100b791906130bd565b6000815160206102fe91906130ff565b67ffffffffffffffff81111561031657610316612dac565b6040519080825280601f01601f191660200182016040528015610340576020820181803683370190505b50905060005b82518110156103985760008382815181106103635761036361313c565b60200260200101519050600082602061037c91906130ff565b84016020019190915250806103908161316b565b915050610346565b5060005a60008054919250906103c39073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a905060006103da84610be6565b905060005a905060005a90506103f288846000610d52565b5060005a90506104426040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b61102e565b60408051808201909152600b81527f6465636f6465206761733a00000000000000000000000000000000000000000060208201526104849061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526104c69061043d83856131a4565b8351600590815560208086015180518793926104e792600692910190612c29565b5060408201518051610503916002840191602090910190612c74565b506060820151805161051f916003840191602090910190612c29565b506080820151816004015590505050505050505050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561058a57602002820191906000526020600020905b815481526020019060010190808311610576575b5050505050905090565b60005a90506105d96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b61063a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105fa57905050905081816000815181106106635761066361313c565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016106ed9392919061332f565b6000604051808303816000875af115801561070c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107529190810190613492565b905060005a905061079e6040518060400160405280600d81526020017f6e65772073746174652067617300000000000000000000000000000000000000815250828761043d91906131a4565b6107a7826110c3565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050505050565b600554600090600690610809906001906131a4565b815481106108195761081961313c565b9060005260206000200154905090565b60005a60008054919250906108539073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a9050600061086a84610be6565b905060005a905060005a905061089160405180602001604052806000815250846000610d52565b5060005a90506108dc6040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b60408051808201909152600b81527f6465636f6465206761733a000000000000000000000000000000000000000000602082015261091e9061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526109609061043d83856131a4565b83516005908155602080860151805187939261098192600692910190612c29565b506040820151805161099d916002840191602090910190612c74565b50606082015180516109b9916003840191602090910190612c29565b50608082015181600401559050505050505050505050565b610a036040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b815481526020019060010190808311610a55575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b43578382906000526020600020018054610ab69061353b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae29061353b565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b50505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610b9a57602002820191906000526020600020905b815481526020019060010190808311610b86575b50505050508152602001600482015481525050905090565b6060610be08260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61114e565b92915050565b610c186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610c4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610c7e57610c7e612dac565b604051908082528060200260200182016040528015610ca7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610cde57610cde612dac565b604051908082528060200260200182016040528015610d07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610d41578160208202602001840152815160200182019150600181019050610d1a565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611014576003890198508886015180601f1a975061ffff8160081c169850506006881015610f8c5787610dd557866020028401518252602082019150610f9f565b6001881415610df257602087028301518252602082019150610f9f565b6002881415610e84578c518760200210610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d01518252602082019150610f9f565b6003881415610ecd576000610ebb604080518082018252600080825260209182015281518083019092526001825260039082015290565b51880154835250602090910190610f9f565b6004881415610ee957610ee28d8d848a611236565b9150610f9f565b606087610f17578c604051602001610f019190612fe7565b6040516020818303038152906040529050610f76565b6001881415610f3057610f298d6113a3565b9050610f76565b6002881415610f4c576020808e0151604051610f019201613589565b6003881415610f76578c516040805160208101929092520160405160208183030381529060405290505b805115610f8657610f86816114e0565b50610f9f565b87610f9b888463ffffffff8416565b9250505b60208c0151518c51111561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610e64565b610d90565b6020838303048c52509750505050505050505b9392505050565b6110bf82826040516024016110449291906135ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052611572565b5050565b6000806110ee836040516020016110da9190613610565b604051602081830303815290604052611593565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611148576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061116d575050604080516020810190915260008152611027565b8084111561118b575050604080516020810190915260008152611027565b838310156111d6576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610e64565b83830384820360008282106111eb57826111ed565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261127557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006112c0565b826001141561129957506fffffffffffffffffffffffffffffffff905060806112c0565b82600214156112b5575067ffffffffffffffff905060406112c0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156112e3576112e3612dac565b60405190808252806020026020018201604052801561130c578160200160208202803683370190505b50905060208082019083028a03815b8b82101561133357815181526020918201910161131b565b505060608b015160808c015160209081029091010160005b6101008110156113915760208502830182845b8281101561137a578051841c8a1682526020918201910161135e565b5050506113888e8e8b610d52565b9b50850161134b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113ef9190613589565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261142b9291602001613636565b604051602081830303815290604052905060005b8560400151518110156114d75781866040015182815181106114635761146361313c565b60200260200101515160001b876040015183815181106114855761148561313c565b602002602001015160405160200161149f9392919061365c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161143f565b50949350505050565b61156f816040516024016114f491906130bd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611572565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016115a9929190613693565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a6919061372a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611733919061372a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611852919061372a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611665565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190613743565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401611811565b60008060008467ffffffffffffffff811115611b0357611b03612dac565b604051908082528060200260200182016040528015611b2c578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b4a57611b4a612dac565b604051908082528060200260200182016040528015611b73578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611bc8578251815260209283019201611bb0565b5050602088028101602084015b81831015611bed578251815260209283019201611bd5565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c479087908790600401613779565b600060405180830381865afa158015611c64573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611caa91908101906137dc565b9050846020820160208a0281015b80821015611cd3578151835260209283019290910190611cb8565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612699565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611da2858a612699565b9061271a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611e08858a612699565b90612739565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611733828761274e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612799565b6000602083028203805b83811015611ea05780518015611e97578252611ea0565b50602001611e80565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611ea0578051611f7d5760008252611ea0565b602001611f66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561209e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906120b683826127f7565b9250612070565b505081526020019392505050565b6020828102820380516000928201835b858210801561210957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906121218382612833565b92506120db565b6020828102820380516000928201835b85821080156121475750826000105b156120bd5750805160209091019061215f8382612862565b9250612138565b600060208302820380516000602083015b858110156120bd578051830191508282101561219257600080fd5b9091508190602001612177565b600060208302820380516000602083015b858110156120bd5780519150816121c657600080fd5b91819004916020016121b0565b6020828102820380516000928201835b858210156120bd575080516020909101906121fe8184613982565b92506121e3565b6020828102820380516000928201835b858210156120bd575080518281111561222c578092505b602082019150612215565b6020828102820380516000928201835b858210156120bd575080518281101561225e578092505b602082019150612247565b600060208302820380516000602083015b858110156120bd57805191508161229057600080fd5b918190069160200161227a565b60006020830282038051600080602084015b868110156122e05783156122d85780519250828402915082848304146122d457600080fd5b8193505b6020016122af565b50505081526020019392505050565b600060208302820380516000602083015b858110156120bd578051830391508282111561231b57600080fd5b9091508190602001612300565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490611811908690869060040161398e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906124b3908790879087906004016139bd565b602060405180830381865afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f4919061372a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a68383612878565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561259157612591612dac565b6040519080825280602002602001820160405280156125ba578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125f6578151816020018601526020820191506020810190506125d4565b50505190506000612609838389896128d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561268a85858585612a27565b90955250949695505050505050565b60008082601214156126ae5783915050610be0565b82601211156126da575060128290036126c881600a613982565b6126d290856130ff565b915050610be0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270981600a613982565b6126d290856139fb565b5092915050565b60008161272f670de0b6b3a7640000856130ff565b61102791906139fb565b6000670de0b6b3a764000061272f83856130ff565b600081810b61275e575081610be0565b60008260000b13156127865761277582600a613a36565b61277f90846130ff565b9050610be0565b60ff60008390031661270981600a613982565b60008060128314156127ae5783915050610be0565b82601211156127c85750601282900361270981600a613982565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c881600a613982565b6000828201838110612809578061282b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261284257506000610be0565b82820282848281612855576128556135bf565b041415612809578061282b565b6000818311612872576000611027565b50900390565b60008060015b600881116128cf5760006128928683612acd565b905060006128a08684612acd565b905060006128ae8383612862565b90506128be856001860383612b7a565b9450506001909201915061287e9050565b509392505050565b835160009081908190819060015b60088111612a195760009250828761291e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612922565b5060005b60005b838110156129d7576129508c82815181106129425761294261313c565b602002602001015184612acd565b95508a86116129a2578861296f576129688683612c03565b9150612999565b6001891415612982576129688683612c19565b600289148015612990575084155b15612999578591505b600194506129cf565b896129cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129d7565b600101612925565b5083612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a0e866001840383612b7a565b9550506001016128e5565b509298975050505050505050565b6000826008811115612a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b6000855b85811015612ac15763ffffffff6020820290811b199890981685891b17979150600101612a99565b50959695505050505050565b6000816008811115612b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b82612b495760009150612713565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c125781611027565b5090919050565b600081831015612c125781611027565b828054828255906000526020600020908101928215612c64579160200282015b82811115612c64578251825591602001919060010190612c49565b50612c70929150612ccd565b5090565b828054828255906000526020600020908101928215612cc1579160200282015b82811115612cc15782518051612cb1918491602090910190612ce2565b5091602001919060010190612c94565b50612c70929150612d55565b5b80821115612c705760008155600101612cce565b828054612cee9061353b565b90600052602060002090601f016020900481019282612d105760008555612c64565b82601f10612d2957805160ff1916838001178555612c64565b82800160010185558215612c645791820182811115612c64578251825591602001919060010190612c49565b80821115612c70576000612d698282612d72565b50600101612d55565b508054612d7e9061353b565b6000825580601f10612d8e575050565b601f01602090049060005260206000209081019061156f9190612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2257612e22612dac565b604052919050565b600067ffffffffffffffff821115612e4457612e44612dac565b5060051b60200190565b60006020808385031215612e6157600080fd5b823567ffffffffffffffff811115612e7857600080fd5b8301601f81018513612e8957600080fd5b8035612e9c612e9782612e2a565b612ddb565b81815260059190911b82018301908381019087831115612ebb57600080fd5b928401925b82841015612ed957833582529284019290840190612ec0565b979650505050505050565b600081518084526020808501945080840160005b83811015612f1457815187529582019590820190600101612ef8565b509495945050505050565b6020815260006110276020830184612ee4565b600060208284031215612f4457600080fd5b813567ffffffffffffffff811115612f5b57600080fd5b82016040818503121561102757600080fd5b60005b83811015612f88578181015183820152602001612f70565b83811115612f97576000848401525b50505050565b60008151808452612fb5816020860160208601612f6d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a0604085015261300c60c0850182612ee4565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156130855784878303018452613073828751612f9d565b95880195938801939150600101613059565b5060608a01519650838982030160808a01526130a18188612ee4565b9650505050505050608084015160a08401528091505092915050565b6020815260006110276020830184612f9d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613137576131376130d0565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561319d5761319d6130d0565b5060010190565b6000828210156131b6576131b66130d0565b500390565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131f057600080fd5b830160208101925035905067ffffffffffffffff81111561321057600080fd5b8060051b360383131561322257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156132a457600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015612f1457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016132d5565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161336086876131bb565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561342a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126133e157600080fd5b8501803567ffffffffffffffff8111156133fa57600080fd5b80360387131561340957600080fd5b61341688828b8501613229565b975050509186019190860190600101613380565b505050505061343b828701876131bb565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613472828483613272565b92505050828103604084015261348881856132c1565b9695505050505050565b6000602082840312156134a457600080fd5b815167ffffffffffffffff808211156134bc57600080fd5b818401915084601f8301126134d057600080fd5b8151818111156134e2576134e2612dac565b61351360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ddb565b915080825285602082850101111561352a57600080fd5b6114d7816020840160208601612f6d565b600181811c9082168061354f57607f821691505b60208210811415611148577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b838110156135b357815185529382019390820190600101613597565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6040815260006136016040830185612f9d565b90508260208301529392505050565b6000815260008251613629816001850160208701612f6d565b9190910160010192915050565b8281526000825161364e816020850160208701612f6d565b919091016020019392505050565b6000845161366e818460208901612f6d565b82018481528351613686816020808501908801612f6d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161371c81600e850160208701612f6d565b91909101600e019392505050565b60006020828403121561373c57600080fd5b5051919050565b60006020828403121561375557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461102757600080fd5b604080825283519082018190526000906020906060840190828701845b828110156137c857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613796565b505050838103828501526134888186612ee4565b600060208083850312156137ef57600080fd5b825167ffffffffffffffff81111561380657600080fd5b8301601f8101851361381757600080fd5b8051613825612e9782612e2a565b81815260059190911b8201830190838101908783111561384457600080fd5b928401925b82841015612ed957835182529284019290840190613849565b600181815b808511156138bb57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138a1576138a16130d0565b808516156138ae57918102915b93841c9390800290613867565b509250929050565b6000826138d257506001610be0565b816138df57506000610be0565b81600181146138f557600281146138ff5761391b565b6001915050610be0565b60ff841115613910576139106130d0565b50506001821b610be0565b5060208310610133831016604e8410600b841016171561393e575081810a610be0565b6139488383613862565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397a5761397a6130d0565b029392505050565b600061102783836138c3565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061282b6040830184612ee4565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006139f26060830184612ee4565b95945050505050565b600082613a31577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061102760ff8416836138c356fea26469706673582212200dd64e3eef29ea1e193c4529db771dda326d4b990a65e1af575be2984f1379f364736f6c634300080a0033"; type AllStandardOpsTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/CombineTierFactory__factory.ts b/src/typechain/factories/CombineTierFactory__factory.ts index 911224c..f849e39 100644 --- a/src/typechain/factories/CombineTierFactory__factory.ts +++ b/src/typechain/factories/CombineTierFactory__factory.ts @@ -155,7 +155,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b50604051614a73380380614a7383398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b613c2c80610e4783390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610d226101256000396000818160a501526103790152610d226000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062e44217146100505780632ea72a491461008d5780635c60da1b146100a0578063fc91a897146100c7575b600080fd5b61006361005e36600461050f565b610110565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006361009b366004610551565b6101b3565b6100637f000000000000000000000000000000000000000000000000000000000000000081565b6101006100d53660046105e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610084565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a498360405160200161013f919061070b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016a91906108eb565b6020604051808303816000875af1158015610189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ad91906108fe565b92915050565b600060026000541415610227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102388484610361565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021e565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037083850185610a51565b9050600061039d7f000000000000000000000000000000000000000000000000000000000000000061042d565b6040517fa225543b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a225543b906103f2908590600401610bfa565b600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021e565b919050565b60006020828403121561052157600080fd5b813567ffffffffffffffff81111561053857600080fd5b82016040818503121561054a57600080fd5b9392505050565b6000806020838503121561056457600080fd5b823567ffffffffffffffff8082111561057c57600080fd5b818501915085601f83011261059057600080fd5b81358181111561059f57600080fd5b8660208285010111156105b157600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e557600080fd5b50565b6000602082840312156105fa57600080fd5b813561054a816105c3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063a57600080fd5b830160208101925035905067ffffffffffffffff81111561065a57600080fd5b8060051b360383131561066c57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ee57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006020808352833581840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261074c57600080fd5b604084810152840160a084016107628280610605565b604060608801528281845260c08801905060c08260051b89010193508260005b8381101561082c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107e357600080fd5b8501803567ffffffffffffffff8111156107fc57600080fd5b80360387131561080b57600080fd5b61081888828c8501610673565b975050509187019190870190600101610782565b505050505061083d83830183610605565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08582030160808601526108768184846106bc565b9695505050505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054a6020830184610880565b60006020828403121561091057600080fd5b815161054a816105c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561096d5761096d61091b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ba576109ba61091b565b604052919050565b600067ffffffffffffffff8211156109dc576109dc61091b565b5060051b60200190565b600082601f8301126109f757600080fd5b81356020610a0c610a07836109c2565b610973565b82815260059290921b84018101918181019086841115610a2b57600080fd5b8286015b84811015610a465780358352918301918301610a2f565b509695505050505050565b60006020808385031215610a6457600080fd5b823567ffffffffffffffff80821115610a7c57600080fd5b9084019060408287031215610a9057600080fd5b610a9861094a565b823581528383013582811115610aad57600080fd5b929092019160408388031215610ac257600080fd5b610aca61094a565b833583811115610ad957600080fd5b8401601f81018913610aea57600080fd5b8035610af8610a07826109c2565b81815260059190911b8201870190878101908b831115610b1757600080fd5b8884015b83811015610bc157803588811115610b335760008081fd5b8501603f81018e13610b455760008081fd5b8a81013589811115610b5957610b5961091b565b610b898c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610973565b8181528f6040838501011115610b9f5760008081fd5b81604084018e83013760009181018d0191909152845250918901918901610b1b565b5084525050508385013583811115610bd857600080fd5b610be4898287016109e6565b8287015250938101939093525090949350505050565b600060208083528351818401528084015160408085015260a0840181516040606087015281815180845260c08801915060c08160051b8901019350858301925060005b81811015610c89577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40898603018352610c77858551610880565b94509286019291860191600101610c3d565b50505050908201518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0016080860152805180835290830191600091908401905b80831015610a465783518252928401926001929092019190840190610ccc56fea2646970667358221220705a5f17db6f25a3aab4bbc1613bff6ef4d33bc2692a8c03b293555c0844b10a64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162003c2c38038062003c2c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613b8a620000a260003960006105cb015260006106070152613b8a6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612ca8565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612dae565b610365565b604051908152602001610096565b6100d36100ce366004612e59565b610459565b005b6100b26100e3366004612e94565b610898565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261161d60e0820181905261171161010083015261179d6101208301526118be610140830152610160820152611967610180820152611a6f6101a0820152611b436101c0820152611d406101e0820152611d4b610200820152611d56610220820152611d61610240820152611d6c610260820152611da0610280820152611e066102a0820152611e6c6102c0820152611ea06102e0820152611ed4610300820152611f09610320820152611f64610340820152611fba610360820152611fe361038082015261203a6103a08201526120676103c08201526120be6103e08201526121296104008201526121866104208201526121c46104408201526121fd6104608201526122316104808201526122636104a08201526122956104c08201526122c76104e08201526122fb61050082015261234d6105208201526123866105408201526124386105608201526125656105808201526125c16105a082015261267b6105c080830191909152815290516100969190612f9a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b6109be565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612fe3565b604051602081830303815290604052905061042381836000610b2a565b506020820151825161043790600190613038565b815181106104475761044761304f565b60200260200101519250505092915050565b60006104656001610e00565b9050801561049a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104da6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b6105746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610534579050509050828160008151811061059d5761059d61304f565b602002602001018190525081816001815181106105bc576105bc61304f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f0000000000000000000000000000000000000000000000000000000000000000888060200190610636919061307e565b856040518463ffffffff1660e01b8152600401610655939291906132c1565b6000604051808303816000875af1158015610674573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106ba9190810190613372565b90506106c581610f86565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156107f35761077661072b602089018961307e565b61073990602081019061341b565b838181106107495761074961304f565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000611011565b6107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064015b60405180910390fd5b806107eb81613483565b915050610712565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833876040516108259291906134bc565b60405180910390a150505050801561089457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806108c9610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016108fe929190613539565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093b93929160200161357e565b604051602081830303815290604052905061095881836001610b2a565b506020820151825161096c90600190613038565b8151811061097c5761097c61304f565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61102d565b6109f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610a226040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610a5657610a56612d0c565b604051908082528060200260200182016040528015610a7f578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610ab657610ab6612d0c565b604051908082528060200260200182016040528015610adf578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610b19578160208202602001840152815160200182019150600181019050610af2565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610de6576003890198508886015180601f1a975061ffff8160081c169850506006881015610d5e5787610bad57866020028401518252602082019150610d71565b6001881415610bca57602087028301518252602082019150610d71565b6002881415610c57578c518760200210610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107d8565b866020026020018d01518252602082019150610d71565b6003881415610c9f576000610c8d6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610d71565b6004881415610cbb57610cb48d8d848a611115565b9150610d71565b606087610ce9578c604051602001610cd391906135e6565b6040516020818303038152906040529050610d48565b6001881415610d0257610cfb8d611282565b9050610d48565b6002881415610d1e576020808e0151604051610cd39201612fad565b6003881415610d48578c516040805160208101929092520160405160208183030381529060405290505b805115610d5857610d58816113bf565b50610d71565b87610d6d888463ffffffff8416565b9250505b60208c0151518c511115610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107d8565b610b68565b6020838303048c52509750505050505050505b9392505050565b60008054610100900460ff1615610eb7578160ff166001148015610e235750303b155b610eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b506000919050565b60005460ff808416911610610f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610fb183604051602001610f9d91906136eb565b604051602081830303815290604052611451565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661100b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600061101c8361147d565b8015610df95750610df983836114e1565b6060833b8061104c575050604080516020810190915260008152610df9565b8084111561106a575050604080516020810190915260008152610df9565b838310156110b5576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107d8565b83830384820360008282106110ca57826110cc565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261115457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061119f565b826001141561117857506fffffffffffffffffffffffffffffffff9050608061119f565b8260021415611194575067ffffffffffffffff9050604061119f565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111c2576111c2612d0c565b6040519080825280602002602001820160405280156111eb578160200160208202803683370190505b50905060208082019083028a03815b8b8210156112125781518152602091820191016111fa565b505060608b015160808c015160209081029091010160005b6101008110156112705760208502830182845b82811015611259578051841c8a1682526020918201910161123d565b5050506112678e8e8b610b2a565b9b50850161122a565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112ce9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261130a9291602001612fe3565b604051602081830303815290604052905060005b8560400151518110156113b65781866040015182815181106113425761134261304f565b60200260200101515160001b876040015183815181106113645761136461304f565b602002602001015160405160200161137e93929190613711565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161131e565b50949350505050565b61144e816040516024016113d39190612f9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526126f7565b50565b6060815182604051602001611467929190613748565b6040516020818303038152906040529050919050565b60006114a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006114e1565b801561035f57506114da827fffffffff000000000000000000000000000000000000000000000000000000006114e1565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061159b9086906137df565b6000604051808303818686fa925050503d80600081146115d7576040519150601f19603f3d011682016040523d82523d6000602084013e6115dc565b606091505b50915091506020815110156115f7576000935050505061035f565b81801561161357508080602001905181019061161391906137f1565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190613813565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117919190613813565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190613813565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016116c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061382c565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161186f565b60008060008467ffffffffffffffff811115611b6157611b61612d0c565b604051908082528060200260200182016040528015611b8a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611ba857611ba8612d0c565b604051908082528060200260200182016040528015611bd1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c26578251815260209283019201611c0e565b5050602088028101602084015b81831015611c4b578251815260209283019201611c33565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611ca59087908790600401613849565b600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d0891908101906138ac565b9050846020820160208a0281015b80821015611d31578151835260209283019290910190611d16565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612718565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e00858a612718565b90612799565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e66858a612718565b906127b8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261179182876127cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612818565b6000602083028203805b83811015611efe5780518015611ef5578252611efe565b50602001611ede565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611efe578051611fdb5760008252611efe565b602001611fc4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156120fc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b575080516020909101906121148382612876565b92506120ce565b505081526020019392505050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b5750805160209091019061217f83826128b2565b9250612139565b6020828102820380516000928201835b85821080156121a55750826000105b1561211b575080516020909101906121bd83826128e1565b9250612196565b600060208302820380516000602083015b8581101561211b57805183019150828210156121f057600080fd5b90915081906020016121d5565b600060208302820380516000602083015b8581101561211b57805191508161222457600080fd5b918190049160200161220e565b6020828102820380516000928201835b8582101561211b5750805160209091019061225c8184613a5d565b9250612241565b6020828102820380516000928201835b8582101561211b575080518281111561228a578092505b602082019150612273565b6020828102820380516000928201835b8582101561211b57508051828110156122bc578092505b6020820191506122a5565b600060208302820380516000602083015b8581101561211b5780519150816122ee57600080fd5b91819006916020016122d8565b60006020830282038051600080602084015b8681101561233e57831561233657805192508284029150828483041461233257600080fd5b8193505b60200161230d565b50505081526020019392505050565b600060208302820380516000602083015b8581101561211b578051830391508282111561237957600080fd5b909150819060200161235e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061186f9086908690600401613a69565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061251190879087908790600401613a98565b602060405180830381865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125529190613813565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170483836128f7565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156125ef576125ef612d0c565b604051908082528060200260200182016040528015612618578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561265457815181602001860152602082019150602081019050612632565b5050519050600061266783838989612956565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856126e885858585612aa6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561272d578391505061035f565b82601211156127595750601282900361274781600a613a5d565b6127519085613acd565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161278881600a613a5d565b6127519085613b0a565b5092915050565b6000816127ae670de0b6b3a764000085613acd565b610df99190613b0a565b6000670de0b6b3a76400006127ae8385613acd565b600081810b6127dd57508161035f565b60008260000b1315612805576127f482600a613b45565b6127fe9084613acd565b905061035f565b60ff60008390031661278881600a613a5d565b600080601283141561282d578391505061035f565b82601211156128475750601282900361278881600a613a5d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161274781600a613a5d565b600082820183811061288857806128aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826128c15750600061035f565b828202828482816128d4576128d46136bc565b04141561288857806128aa565b60008183116128f1576000610df9565b50900390565b60008060015b6008811161294e5760006129118683612b4c565b9050600061291f8684612b4c565b9050600061292d83836128e1565b905061293d856001860383612bf9565b945050600190920191506128fd9050565b509392505050565b835160009081908190819060015b60088111612a985760009250828761299d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6129a1565b5060005b60005b83811015612a56576129cf8c82815181106129c1576129c161304f565b602002602001015184612b4c565b95508a8611612a2157886129ee576129e78683612c82565b9150612a18565b6001891415612a01576129e78683612c98565b600289148015612a0f575084155b15612a18578591505b60019450612a4e565b89612a4e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a56565b6001016129a4565b5083612a7f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a8d866001840383612bf9565b955050600101612964565b509298975050505050505050565b6000826008811115612b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b6000855b85811015612b405763ffffffff6020820290811b199890981685891b17979150600101612b18565b50959695505050505050565b6000816008811115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b82612bc85760009150612792565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c915781610df9565b5090919050565b600081831015612c915781610df9565b600060208284031215612cba57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610df957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461144e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d8257612d82612d0c565b604052919050565b600067ffffffffffffffff821115612da457612da4612d0c565b5060051b60200190565b60008060408385031215612dc157600080fd5b8235612dcc81612cea565b915060208381013567ffffffffffffffff811115612de957600080fd5b8401601f81018613612dfa57600080fd5b8035612e0d612e0882612d8a565b612d3b565b81815260059190911b82018301908381019088831115612e2c57600080fd5b928401925b82841015612e4a57833582529284019290840190612e31565b80955050505050509250929050565b600060208284031215612e6b57600080fd5b813567ffffffffffffffff811115612e8257600080fd5b820160408185031215610df957600080fd5b60008060008060608587031215612eaa57600080fd5b8435612eb581612cea565b935060208501359250604085013567ffffffffffffffff80821115612ed957600080fd5b818701915087601f830112612eed57600080fd5b813581811115612efc57600080fd5b8860208260051b8501011115612f1157600080fd5b95989497505060200194505050565b60005b83811015612f3b578181015183820152602001612f23565b83811115612f4a576000848401525b50505050565b60008151808452612f68816020860160208601612f20565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610df96020830184612f50565b815160009082906020808601845b83811015612fd757815185529382019390820190600101612fbb565b50929695505050505050565b82815260008251612ffb816020850160208701612f20565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561304a5761304a613009565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126130b257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f157600080fd5b830160208101925035905067ffffffffffffffff81111561311157600080fd5b8060051b360383131561312357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156131a557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016131d283846130bc565b604086528281845260608701905060608260051b88010193508260005b8381101561329c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261325057600080fd5b85018035602067ffffffffffffffff82111561326b57600080fd5b81360388131561327a57600080fd5b613287898383860161312a565b985094850194939093019250506001016131ef565b50505050506132ae60208401846130bc565b8583036020870152611613838284613173565b6000606073ffffffffffffffffffffffffffffffffffffffff86168352602081818501526132f1828501876131c2565b84810360408681019190915286518083528388019284019060005b81811015613362578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161330c565b50909a9950505050505050505050565b60006020828403121561338457600080fd5b815167ffffffffffffffff8082111561339c57600080fd5b818401915084601f8301126133b057600080fd5b8151818111156133c2576133c2612d0c565b6133f360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612d3b565b915080825285602082850101111561340a57600080fd5b6113b6816020840160208601612f20565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261345057600080fd5b83018035915067ffffffffffffffff82111561346b57600080fd5b6020019150600581901b360382131561312357600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134b5576134b5613009565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261351a57600080fd5b60406060840152613530608084018583016131c2565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561356857600080fd5b8260051b80858437600092019182525092915050565b8381528260208201526000825161359c816040850160208701612f20565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135db578151875295820195908201906001016135bf565b509495945050505050565b600060208083528351818401528084015160a0604085015261360b60c08501826135ab565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156136845784878303018452613672828751612f50565b95880195938801939150600101613658565b5060608a01519650838982030160808a01526136a081886135ab565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613704816001850160208701612f20565b9190910160010192915050565b60008451613723818460208901612f20565b8201848152835161373b816020808501908801612f20565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516137d181600e850160208701612f20565b91909101600e019392505050565b600082516130b2818460208701612f20565b60006020828403121561380357600080fd5b81518015158114610df957600080fd5b60006020828403121561382557600080fd5b5051919050565b60006020828403121561383e57600080fd5b8151610df981612cea565b604080825283519082018190526000906020906060840190828701845b8281101561389857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613866565b5050508381038285015261161381866135ab565b600060208083850312156138bf57600080fd5b825167ffffffffffffffff8111156138d657600080fd5b8301601f810185136138e757600080fd5b80516138f5612e0882612d8a565b81815260059190911b8201830190838101908783111561391457600080fd5b928401925b8284101561393257835182529284019290840190613919565b979650505050505050565b600181815b8085111561399657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397c5761397c613009565b8085161561398957918102915b93841c9390800290613942565b509250929050565b6000826139ad5750600161035f565b816139ba5750600061035f565b81600181146139d057600281146139da576139f6565b600191505061035f565b60ff8411156139eb576139eb613009565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613a19575081810a61035f565b613a23838361393d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613a5557613a55613009565b029392505050565b6000610df9838361399e565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128aa60408301846135ab565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061353060608301846135ab565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b0557613b05613009565b500290565b600082613b40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610df960ff84168361399e56fea2646970667358221220a37f2cb5d78269361959ff85181f07b524e2e4ebabc0768aad4edd04082b53e364736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506040516149d03803806149d083398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b613b8980610e4783390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610d226101256000396000818160a501526103790152610d226000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062e44217146100505780632ea72a491461008d5780635c60da1b146100a0578063fc91a897146100c7575b600080fd5b61006361005e36600461050f565b610110565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006361009b366004610551565b6101b3565b6100637f000000000000000000000000000000000000000000000000000000000000000081565b6101006100d53660046105e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610084565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a498360405160200161013f919061070b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016a91906108eb565b6020604051808303816000875af1158015610189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ad91906108fe565b92915050565b600060026000541415610227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102388484610361565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021e565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037083850185610a51565b9050600061039d7f000000000000000000000000000000000000000000000000000000000000000061042d565b6040517fa225543b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a225543b906103f2908590600401610bfa565b600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021e565b919050565b60006020828403121561052157600080fd5b813567ffffffffffffffff81111561053857600080fd5b82016040818503121561054a57600080fd5b9392505050565b6000806020838503121561056457600080fd5b823567ffffffffffffffff8082111561057c57600080fd5b818501915085601f83011261059057600080fd5b81358181111561059f57600080fd5b8660208285010111156105b157600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e557600080fd5b50565b6000602082840312156105fa57600080fd5b813561054a816105c3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063a57600080fd5b830160208101925035905067ffffffffffffffff81111561065a57600080fd5b8060051b360383131561066c57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ee57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006020808352833581840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261074c57600080fd5b604084810152840160a084016107628280610605565b604060608801528281845260c08801905060c08260051b89010193508260005b8381101561082c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107e357600080fd5b8501803567ffffffffffffffff8111156107fc57600080fd5b80360387131561080b57600080fd5b61081888828c8501610673565b975050509187019190870190600101610782565b505050505061083d83830183610605565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08582030160808601526108768184846106bc565b9695505050505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054a6020830184610880565b60006020828403121561091057600080fd5b815161054a816105c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561096d5761096d61091b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ba576109ba61091b565b604052919050565b600067ffffffffffffffff8211156109dc576109dc61091b565b5060051b60200190565b600082601f8301126109f757600080fd5b81356020610a0c610a07836109c2565b610973565b82815260059290921b84018101918181019086841115610a2b57600080fd5b8286015b84811015610a465780358352918301918301610a2f565b509695505050505050565b60006020808385031215610a6457600080fd5b823567ffffffffffffffff80821115610a7c57600080fd5b9084019060408287031215610a9057600080fd5b610a9861094a565b823581528383013582811115610aad57600080fd5b929092019160408388031215610ac257600080fd5b610aca61094a565b833583811115610ad957600080fd5b8401601f81018913610aea57600080fd5b8035610af8610a07826109c2565b81815260059190911b8201870190878101908b831115610b1757600080fd5b8884015b83811015610bc157803588811115610b335760008081fd5b8501603f81018e13610b455760008081fd5b8a81013589811115610b5957610b5961091b565b610b898c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610973565b8181528f6040838501011115610b9f5760008081fd5b81604084018e83013760009181018d0191909152845250918901918901610b1b565b5084525050508385013583811115610bd857600080fd5b610be4898287016109e6565b8287015250938101939093525090949350505050565b600060208083528351818401528084015160408085015260a0840181516040606087015281815180845260c08801915060c08160051b8901019350858301925060005b81811015610c89577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40898603018352610c77858551610880565b94509286019291860191600101610c3d565b50505050908201518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0016080860152805180835290830191600091908401905b80831015610a465783518252928401926001929092019190840190610ccc56fea2646970667358221220a6122ecde5cc2d5581435f7e3d3124c323d507b80b9baaeac685351ec963faf664736f6c634300080a003360c06040523480156200001157600080fd5b5060405162003b8938038062003b8983398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613ae7620000a260003960006106b3015260006106ef0152613ae76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612c05565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612d0b565b610365565b604051908152602001610096565b6100d36100ce366004612db6565b610459565b005b6100b26100e3366004612df1565b61097b565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261157a60e0820181905261166e6101008301526116fa61012083015261181b6101408301526101608201526118c46101808201526119cc6101a0820152611aa06101c0820152611c9d6101e0820152611ca8610200820152611cb3610220820152611cbe610240820152611cc9610260820152611cfd610280820152611d636102a0820152611dc96102c0820152611dfd6102e0820152611e31610300820152611e66610320820152611ec1610340820152611f17610360820152611f40610380820152611f976103a0820152611fc46103c082015261201b6103e08201526120866104008201526120e361042082015261212161044082015261215a61046082015261218e6104808201526121c06104a08201526121f26104c08201526122246104e08201526122586105008201526122aa6105208201526122e36105408201526123956105608201526124c261058082015261251e6105a08201526125d86105c080830191909152815290516100969190612ef7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b610aa1565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612f40565b604051602081830303815290604052905061042381836000610c0d565b506020820151825161043790600190612f95565b8151811061044757610447612fac565b60200260200101519250505092915050565b600054610100900460ff16158080156104795750600054600160ff909116105b806104935750303b158015610493575060005460ff166001145b610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561058257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c26040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b61065c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161061c579050509050828160008151811061068557610685612fac565b602002602001018190525081816001815181106106a4576106a4612fac565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000088806020019061071e9190612fdb565b856040518463ffffffff1660e01b815260040161073d9392919061321e565b6000604051808303816000875af115801561075c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107a291908101906132cf565b90506107ad81610ee3565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156108d65761085e6108136020890189612fdb565b610821906020810190613378565b8381811061083157610831612fac565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610f6e565b6108c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f54494552563200000000000000000000000000000000000000604482015260640161051b565b806108ce816133e0565b9150506107fa565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c51483387604051610908929190613419565b60405180910390a150505050801561097757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806109ac610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016109e1929190613496565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a1e9392916020016134db565b6040516020818303038152906040529050610a3b81836001610c0d565b5060208201518251610a4f90600190612f95565b81518110610a5f57610a5f612fac565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f8a565b610ad36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610b056040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610b3957610b39612c69565b604051908082528060200260200182016040528015610b62578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610b9957610b99612c69565b604051908082528060200260200182016040528015610bc2578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610bfc578160208202602001840152815160200182019150600181019050610bd5565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ec9576003890198508886015180601f1a975061ffff8160081c169850506006881015610e415787610c9057866020028401518252602082019150610e54565b6001881415610cad57602087028301518252602082019150610e54565b6002881415610d3a578c518760200210610d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161051b565b866020026020018d01518252602082019150610e54565b6003881415610d82576000610d706040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610e54565b6004881415610d9e57610d978d8d848a611072565b9150610e54565b606087610dcc578c604051602001610db69190613543565b6040516020818303038152906040529050610e2b565b6001881415610de557610dde8d6111df565b9050610e2b565b6002881415610e01576020808e0151604051610db69201612f0a565b6003881415610e2b578c516040805160208101929092520160405160208183030381529060405290505b805115610e3b57610e3b8161131c565b50610e54565b87610e50888463ffffffff8416565b9250505b60208c0151518c511115610ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161051b565b610c4b565b6020838303048c52509750505050505050505b9392505050565b600080610f0e83604051602001610efa9190613648565b6040516020818303038152906040526113ae565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610f68576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610f79836113da565b8015610edc5750610edc838361143e565b6060833b80610fa9575050604080516020810190915260008152610edc565b80841115610fc7575050604080516020810190915260008152610edc565b83831015611012576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161051b565b83830384820360008282106110275782611029565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826110b157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006110fc565b82600114156110d557506fffffffffffffffffffffffffffffffff905060806110fc565b82600214156110f1575067ffffffffffffffff905060406110fc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff81111561111f5761111f612c69565b604051908082528060200260200182016040528015611148578160200160208202803683370190505b50905060208082019083028a03815b8b82101561116f578151815260209182019101611157565b505060608b015160808c015160209081029091010160005b6101008110156111cd5760208502830182845b828110156111b6578051841c8a1682526020918201910161119a565b5050506111c48e8e8b610c0d565b9b508501611187565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161122b9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112679291602001612f40565b604051602081830303815290604052905060005b85604001515181101561131357818660400151828151811061129f5761129f612fac565b60200260200101515160001b876040015183815181106112c1576112c1612fac565b60200260200101516040516020016112db9392919061366e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161127b565b50949350505050565b6113ab816040516024016113309190612ef7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612654565b50565b60608151826040516020016113c49291906136a5565b6040516020818303038152906040529050919050565b6000611406827f01ffc9a70000000000000000000000000000000000000000000000000000000061143e565b801561035f5750611437827fffffffff0000000000000000000000000000000000000000000000000000000061143e565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906114f890869061373c565b6000604051808303818686fa925050503d8060008114611534576040519150601f19603f3d011682016040523d82523d6000602084013e611539565b606091505b5091509150602081511015611554576000935050505061035f565b818015611570575080806020019051810190611570919061374e565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116619190613770565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee9190613770565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156117e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180d9190613770565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611620565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613789565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016117cc565b60008060008467ffffffffffffffff811115611abe57611abe612c69565b604051908082528060200260200182016040528015611ae7578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b0557611b05612c69565b604051908082528060200260200182016040528015611b2e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611b83578251815260209283019201611b6b565b5050602088028101602084015b81831015611ba8578251815260209283019201611b90565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c0290879087906004016137a6565b600060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c659190810190613809565b9050846020820160208a0281015b80821015611c8e578151835260209283019290910190611c73565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611d5d858a612675565b906126f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611dc3858a612675565b90612715565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee828761272a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612775565b6000602083028203805b83811015611e5b5780518015611e52578252611e5b565b50602001611e3b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611e5b578051611f385760008252611e5b565b602001611f21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561205957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120785750805160209091019061207183826127d3565b925061202b565b505081526020019392505050565b6020828102820380516000928201835b85821080156120c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612078575080516020909101906120dc838261280f565b9250612096565b6020828102820380516000928201835b85821080156121025750826000105b156120785750805160209091019061211a838261283e565b92506120f3565b600060208302820380516000602083015b85811015612078578051830191508282101561214d57600080fd5b9091508190602001612132565b600060208302820380516000602083015b8581101561207857805191508161218157600080fd5b918190049160200161216b565b6020828102820380516000928201835b85821015612078575080516020909101906121b981846139ba565b925061219e565b6020828102820380516000928201835b8582101561207857508051828111156121e7578092505b6020820191506121d0565b6020828102820380516000928201835b858210156120785750805182811015612219578092505b602082019150612202565b600060208302820380516000602083015b8581101561207857805191508161224b57600080fd5b9181900691602001612235565b60006020830282038051600080602084015b8681101561229b57831561229357805192508284029150828483041461228f57600080fd5b8193505b60200161226a565b50505081526020019392505050565b600060208302820380516000602083015b8581101561207857805183039150828211156122d657600080fd5b90915081906020016122bb565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906117cc90869086906004016139c6565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061246e908790879087906004016139f5565b602060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af9190613770565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116618383612854565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561254c5761254c612c69565b604051908082528060200260200182016040528015612575578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125b15781518160200186015260208201915060208101905061258f565b505051905060006125c4838389896128b3565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561264585858585612a03565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561268a578391505061035f565b82601211156126b6575060128290036126a481600a6139ba565b6126ae9085613a2a565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126e581600a6139ba565b6126ae9085613a67565b5092915050565b60008161270b670de0b6b3a764000085613a2a565b610edc9190613a67565b6000670de0b6b3a764000061270b8385613a2a565b600081810b61273a57508161035f565b60008260000b13156127625761275182600a613aa2565b61275b9084613a2a565b905061035f565b60ff6000839003166126e581600a6139ba565b600080601283141561278a578391505061035f565b82601211156127a4575060128290036126e581600a6139ba565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126a481600a6139ba565b60008282018381106127e55780612807565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261281e5750600061035f565b8282028284828161283157612831613619565b0414156127e55780612807565b600081831161284e576000610edc565b50900390565b60008060015b600881116128ab57600061286e8683612aa9565b9050600061287c8684612aa9565b9050600061288a838361283e565b905061289a856001860383612b56565b9450506001909201915061285a9050565b509392505050565b835160009081908190819060015b600881116129f5576000925082876128fa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128fe565b5060005b60005b838110156129b35761292c8c828151811061291e5761291e612fac565b602002602001015184612aa9565b95508a861161297e578861294b576129448683612bdf565b9150612975565b600189141561295e576129448683612bf5565b60028914801561296c575084155b15612975578591505b600194506129ab565b896129ab577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129b3565b600101612901565b50836129dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6129ea866001840383612b56565b9550506001016128c1565b509298975050505050505050565b6000826008811115612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b6000855b85811015612a9d5763ffffffff6020820290811b199890981685891b17979150600101612a75565b50959695505050505050565b6000816008811115612b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b82612b2557600091506126ef565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612bee5781610edc565b5090919050565b600081831015612bee5781610edc565b600060208284031215612c1757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610edc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113ab57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612cdf57612cdf612c69565b604052919050565b600067ffffffffffffffff821115612d0157612d01612c69565b5060051b60200190565b60008060408385031215612d1e57600080fd5b8235612d2981612c47565b915060208381013567ffffffffffffffff811115612d4657600080fd5b8401601f81018613612d5757600080fd5b8035612d6a612d6582612ce7565b612c98565b81815260059190911b82018301908381019088831115612d8957600080fd5b928401925b82841015612da757833582529284019290840190612d8e565b80955050505050509250929050565b600060208284031215612dc857600080fd5b813567ffffffffffffffff811115612ddf57600080fd5b820160408185031215610edc57600080fd5b60008060008060608587031215612e0757600080fd5b8435612e1281612c47565b935060208501359250604085013567ffffffffffffffff80821115612e3657600080fd5b818701915087601f830112612e4a57600080fd5b813581811115612e5957600080fd5b8860208260051b8501011115612e6e57600080fd5b95989497505060200194505050565b60005b83811015612e98578181015183820152602001612e80565b83811115612ea7576000848401525b50505050565b60008151808452612ec5816020860160208601612e7d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610edc6020830184612ead565b815160009082906020808601845b83811015612f3457815185529382019390820190600101612f18565b50929695505050505050565b82815260008251612f58816020850160208701612e7d565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fa757612fa7612f66565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261300f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261304e57600080fd5b830160208101925035905067ffffffffffffffff81111561306e57600080fd5b8060051b360383131561308057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561310257600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006040830161312f8384613019565b604086528281845260608701905060608260051b88010193508260005b838110156131f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126131ad57600080fd5b85018035602067ffffffffffffffff8211156131c857600080fd5b8136038813156131d757600080fd5b6131e48983838601613087565b9850948501949390930192505060010161314c565b505050505061320b6020840184613019565b85830360208701526115708382846130d0565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261324e8285018761311f565b84810360408681019190915286518083528388019284019060005b818110156132bf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613269565b50909a9950505050505050505050565b6000602082840312156132e157600080fd5b815167ffffffffffffffff808211156132f957600080fd5b818401915084601f83011261330d57600080fd5b81518181111561331f5761331f612c69565b61335060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612c98565b915080825285602082850101111561336757600080fd5b611313816020840160208601612e7d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133ad57600080fd5b83018035915067ffffffffffffffff8211156133c857600080fd5b6020019150600581901b360382131561308057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561341257613412612f66565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261347757600080fd5b6040606084015261348d6080840185830161311f565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134c557600080fd5b8260051b80858437600092019182525092915050565b838152826020820152600082516134f9816040850160208701612e7d565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135385781518752958201959082019060010161351c565b509495945050505050565b600060208083528351818401528084015160a0604085015261356860c0850182613508565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156135e157848783030184526135cf828751612ead565b958801959388019391506001016135b5565b5060608a01519650838982030160808a01526135fd8188613508565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613661816001850160208701612e7d565b9190910160010192915050565b60008451613680818460208901612e7d565b82018481528351613698816020808501908801612e7d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161372e81600e850160208701612e7d565b91909101600e019392505050565b6000825161300f818460208701612e7d565b60006020828403121561376057600080fd5b81518015158114610edc57600080fd5b60006020828403121561378257600080fd5b5051919050565b60006020828403121561379b57600080fd5b8151610edc81612c47565b604080825283519082018190526000906020906060840190828701845b828110156137f557815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016137c3565b505050838103828501526115708186613508565b6000602080838503121561381c57600080fd5b825167ffffffffffffffff81111561383357600080fd5b8301601f8101851361384457600080fd5b8051613852612d6582612ce7565b81815260059190911b8201830190838101908783111561387157600080fd5b928401925b8284101561388f57835182529284019290840190613876565b979650505050505050565b600181815b808511156138f357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138d9576138d9612f66565b808516156138e657918102915b93841c939080029061389f565b509250929050565b60008261390a5750600161035f565b816139175750600061035f565b816001811461392d576002811461393757613953565b600191505061035f565b60ff84111561394857613948612f66565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613976575081810a61035f565b613980838361389a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156139b2576139b2612f66565b029392505050565b6000610edc83836138fb565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128076040830184613508565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061348d6060830184613508565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a6257613a62612f66565b500290565b600082613a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610edc60ff8416836138fb56fea2646970667358221220cba5176187567ea15bd96a3a42279beacef56f31c3ece59bef5e4029e012f1ef64736f6c634300080a0033"; type CombineTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/CombineTier__factory.ts b/src/typechain/factories/CombineTier__factory.ts index 6019bee..3d3b3d4 100644 --- a/src/typechain/factories/CombineTier__factory.ts +++ b/src/typechain/factories/CombineTier__factory.ts @@ -249,7 +249,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162003c2c38038062003c2c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613b8a620000a260003960006105cb015260006106070152613b8a6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612ca8565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612dae565b610365565b604051908152602001610096565b6100d36100ce366004612e59565b610459565b005b6100b26100e3366004612e94565b610898565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261161d60e0820181905261171161010083015261179d6101208301526118be610140830152610160820152611967610180820152611a6f6101a0820152611b436101c0820152611d406101e0820152611d4b610200820152611d56610220820152611d61610240820152611d6c610260820152611da0610280820152611e066102a0820152611e6c6102c0820152611ea06102e0820152611ed4610300820152611f09610320820152611f64610340820152611fba610360820152611fe361038082015261203a6103a08201526120676103c08201526120be6103e08201526121296104008201526121866104208201526121c46104408201526121fd6104608201526122316104808201526122636104a08201526122956104c08201526122c76104e08201526122fb61050082015261234d6105208201526123866105408201526124386105608201526125656105808201526125c16105a082015261267b6105c080830191909152815290516100969190612f9a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b6109be565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612fe3565b604051602081830303815290604052905061042381836000610b2a565b506020820151825161043790600190613038565b815181106104475761044761304f565b60200260200101519250505092915050565b60006104656001610e00565b9050801561049a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104da6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b6105746040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610534579050509050828160008151811061059d5761059d61304f565b602002602001018190525081816001815181106105bc576105bc61304f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f0000000000000000000000000000000000000000000000000000000000000000888060200190610636919061307e565b856040518463ffffffff1660e01b8152600401610655939291906132c1565b6000604051808303816000875af1158015610674573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526106ba9190810190613372565b90506106c581610f86565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156107f35761077661072b602089018961307e565b61073990602081019061341b565b838181106107495761074961304f565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000611011565b6107e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064015b60405180910390fd5b806107eb81613483565b915050610712565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833876040516108259291906134bc565b60405180910390a150505050801561089457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806108c9610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610990565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016108fe929190613539565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261093b93929160200161357e565b604051602081830303815290604052905061095881836001610b2a565b506020820151825161096c90600190613038565b8151811061097c5761097c61304f565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61102d565b6109f06040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610a226040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610a5657610a56612d0c565b604051908082528060200260200182016040528015610a7f578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610ab657610ab6612d0c565b604051908082528060200260200182016040528015610adf578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610b19578160208202602001840152815160200182019150600181019050610af2565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610de6576003890198508886015180601f1a975061ffff8160081c169850506006881015610d5e5787610bad57866020028401518252602082019150610d71565b6001881415610bca57602087028301518252602082019150610d71565b6002881415610c57578c518760200210610c40576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107d8565b866020026020018d01518252602082019150610d71565b6003881415610c9f576000610c8d6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610d71565b6004881415610cbb57610cb48d8d848a611115565b9150610d71565b606087610ce9578c604051602001610cd391906135e6565b6040516020818303038152906040529050610d48565b6001881415610d0257610cfb8d611282565b9050610d48565b6002881415610d1e576020808e0151604051610cd39201612fad565b6003881415610d48578c516040805160208101929092520160405160208183030381529060405290505b805115610d5857610d58816113bf565b50610d71565b87610d6d888463ffffffff8416565b9250505b60208c0151518c511115610de1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107d8565b610b68565b6020838303048c52509750505050505050505b9392505050565b60008054610100900460ff1615610eb7578160ff166001148015610e235750303b155b610eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b506000919050565b60005460ff808416911610610f4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d8565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b600080610fb183604051602001610f9d91906136eb565b604051602081830303815290604052611451565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661100b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600061101c8361147d565b8015610df95750610df983836114e1565b6060833b8061104c575050604080516020810190915260008152610df9565b8084111561106a575050604080516020810190915260008152610df9565b838310156110b5576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107d8565b83830384820360008282106110ca57826110cc565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261115457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff905061010061119f565b826001141561117857506fffffffffffffffffffffffffffffffff9050608061119f565b8260021415611194575067ffffffffffffffff9050604061119f565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111c2576111c2612d0c565b6040519080825280602002602001820160405280156111eb578160200160208202803683370190505b50905060208082019083028a03815b8b8210156112125781518152602091820191016111fa565b505060608b015160808c015160209081029091010160005b6101008110156112705760208502830182845b82811015611259578051841c8a1682526020918201910161123d565b5050506112678e8e8b610b2a565b9b50850161122a565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112ce9190612fad565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261130a9291602001612fe3565b604051602081830303815290604052905060005b8560400151518110156113b65781866040015182815181106113425761134261304f565b60200260200101515160001b876040015183815181106113645761136461304f565b602002602001015160405160200161137e93929190613711565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161131e565b50949350505050565b61144e816040516024016113d39190612f9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526126f7565b50565b6060815182604051602001611467929190613748565b6040516020818303038152906040529050919050565b60006114a9827f01ffc9a7000000000000000000000000000000000000000000000000000000006114e1565b801561035f57506114da827fffffffff000000000000000000000000000000000000000000000000000000006114e1565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061159b9086906137df565b6000604051808303818686fa925050503d80600081146115d7576040519150601f19603f3d011682016040523d82523d6000602084013e6115dc565b606091505b50915091506020815110156115f7576000935050505061035f565b81801561161357508080602001905181019061161391906137f1565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190613813565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561176d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117919190613813565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190613813565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016116c3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c919061382c565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161186f565b60008060008467ffffffffffffffff811115611b6157611b61612d0c565b604051908082528060200260200182016040528015611b8a578160200160208202803683370190505b50905060008567ffffffffffffffff811115611ba857611ba8612d0c565b604051908082528060200260200182016040528015611bd1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c26578251815260209283019201611c0e565b5050602088028101602084015b81831015611c4b578251815260209283019201611c33565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611ca59087908790600401613849565b600060405180830381865afa158015611cc2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d0891908101906138ac565b9050846020820160208a0281015b80821015611d31578151835260209283019290910190611d16565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612718565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e00858a612718565b90612799565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170482611e66858a612718565b906127b8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261179182876127cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117918287612818565b6000602083028203805b83811015611efe5780518015611ef5578252611efe565b50602001611ede565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611efe578051611fdb5760008252611efe565b602001611fc4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156120fc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b575080516020909101906121148382612876565b92506120ce565b505081526020019392505050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561211b5750805160209091019061217f83826128b2565b9250612139565b6020828102820380516000928201835b85821080156121a55750826000105b1561211b575080516020909101906121bd83826128e1565b9250612196565b600060208302820380516000602083015b8581101561211b57805183019150828210156121f057600080fd5b90915081906020016121d5565b600060208302820380516000602083015b8581101561211b57805191508161222457600080fd5b918190049160200161220e565b6020828102820380516000928201835b8582101561211b5750805160209091019061225c8184613a5d565b9250612241565b6020828102820380516000928201835b8582101561211b575080518281111561228a578092505b602082019150612273565b6020828102820380516000928201835b8582101561211b57508051828110156122bc578092505b6020820191506122a5565b600060208302820380516000602083015b8581101561211b5780519150816122ee57600080fd5b91819006916020016122d8565b60006020830282038051600080602084015b8681101561233e57831561233657805192508284029150828483041461233257600080fd5b8193505b60200161230d565b50505081526020019392505050565b600060208302820380516000602083015b8581101561211b578051830391508282111561237957600080fd5b909150819060200161235e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061186f9086908690600401613a69565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061251190879087908790600401613a98565b602060405180830381865afa15801561252e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125529190613813565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361170483836128f7565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156125ef576125ef612d0c565b604051908082528060200260200182016040528015612618578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561265457815181602001860152602082019150602081019050612632565b5050519050600061266783838989612956565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856126e885858585612aa6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561272d578391505061035f565b82601211156127595750601282900361274781600a613a5d565b6127519085613acd565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161278881600a613a5d565b6127519085613b0a565b5092915050565b6000816127ae670de0b6b3a764000085613acd565b610df99190613b0a565b6000670de0b6b3a76400006127ae8385613acd565b600081810b6127dd57508161035f565b60008260000b1315612805576127f482600a613b45565b6127fe9084613acd565b905061035f565b60ff60008390031661278881600a613a5d565b600080601283141561282d578391505061035f565b82601211156128475750601282900361278881600a613a5d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161274781600a613a5d565b600082820183811061288857806128aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826128c15750600061035f565b828202828482816128d4576128d46136bc565b04141561288857806128aa565b60008183116128f1576000610df9565b50900390565b60008060015b6008811161294e5760006129118683612b4c565b9050600061291f8684612b4c565b9050600061292d83836128e1565b905061293d856001860383612bf9565b945050600190920191506128fd9050565b509392505050565b835160009081908190819060015b60088111612a985760009250828761299d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6129a1565b5060005b60005b83811015612a56576129cf8c82815181106129c1576129c161304f565b602002602001015184612b4c565b95508a8611612a2157886129ee576129e78683612c82565b9150612a18565b6001891415612a01576129e78683612c98565b600289148015612a0f575084155b15612a18578591505b60019450612a4e565b89612a4e577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612a56565b6001016129a4565b5083612a7f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a8d866001840383612bf9565b955050600101612964565b509298975050505050505050565b6000826008811115612b14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b6000855b85811015612b405763ffffffff6020820290811b199890981685891b17979150600101612b18565b50959695505050505050565b6000816008811115612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b82612bc85760009150612792565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612c67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107d8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c915781610df9565b5090919050565b600081831015612c915781610df9565b600060208284031215612cba57600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610df957600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461144e57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612d8257612d82612d0c565b604052919050565b600067ffffffffffffffff821115612da457612da4612d0c565b5060051b60200190565b60008060408385031215612dc157600080fd5b8235612dcc81612cea565b915060208381013567ffffffffffffffff811115612de957600080fd5b8401601f81018613612dfa57600080fd5b8035612e0d612e0882612d8a565b612d3b565b81815260059190911b82018301908381019088831115612e2c57600080fd5b928401925b82841015612e4a57833582529284019290840190612e31565b80955050505050509250929050565b600060208284031215612e6b57600080fd5b813567ffffffffffffffff811115612e8257600080fd5b820160408185031215610df957600080fd5b60008060008060608587031215612eaa57600080fd5b8435612eb581612cea565b935060208501359250604085013567ffffffffffffffff80821115612ed957600080fd5b818701915087601f830112612eed57600080fd5b813581811115612efc57600080fd5b8860208260051b8501011115612f1157600080fd5b95989497505060200194505050565b60005b83811015612f3b578181015183820152602001612f23565b83811115612f4a576000848401525b50505050565b60008151808452612f68816020860160208601612f20565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610df96020830184612f50565b815160009082906020808601845b83811015612fd757815185529382019390820190600101612fbb565b50929695505050505050565b82815260008251612ffb816020850160208701612f20565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561304a5761304a613009565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126130b257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f157600080fd5b830160208101925035905067ffffffffffffffff81111561311157600080fd5b8060051b360383131561312357600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156131a557600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016131d283846130bc565b604086528281845260608701905060608260051b88010193508260005b8381101561329c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261325057600080fd5b85018035602067ffffffffffffffff82111561326b57600080fd5b81360388131561327a57600080fd5b613287898383860161312a565b985094850194939093019250506001016131ef565b50505050506132ae60208401846130bc565b8583036020870152611613838284613173565b6000606073ffffffffffffffffffffffffffffffffffffffff86168352602081818501526132f1828501876131c2565b84810360408681019190915286518083528388019284019060005b81811015613362578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161330c565b50909a9950505050505050505050565b60006020828403121561338457600080fd5b815167ffffffffffffffff8082111561339c57600080fd5b818401915084601f8301126133b057600080fd5b8151818111156133c2576133c2612d0c565b6133f360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612d3b565b915080825285602082850101111561340a57600080fd5b6113b6816020840160208601612f20565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261345057600080fd5b83018035915067ffffffffffffffff82111561346b57600080fd5b6020019150600581901b360382131561312357600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156134b5576134b5613009565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261351a57600080fd5b60406060840152613530608084018583016131c2565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561356857600080fd5b8260051b80858437600092019182525092915050565b8381528260208201526000825161359c816040850160208701612f20565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135db578151875295820195908201906001016135bf565b509495945050505050565b600060208083528351818401528084015160a0604085015261360b60c08501826135ab565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156136845784878303018452613672828751612f50565b95880195938801939150600101613658565b5060608a01519650838982030160808a01526136a081886135ab565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613704816001850160208701612f20565b9190910160010192915050565b60008451613723818460208901612f20565b8201848152835161373b816020808501908801612f20565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516137d181600e850160208701612f20565b91909101600e019392505050565b600082516130b2818460208701612f20565b60006020828403121561380357600080fd5b81518015158114610df957600080fd5b60006020828403121561382557600080fd5b5051919050565b60006020828403121561383e57600080fd5b8151610df981612cea565b604080825283519082018190526000906020906060840190828701845b8281101561389857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613866565b5050508381038285015261161381866135ab565b600060208083850312156138bf57600080fd5b825167ffffffffffffffff8111156138d657600080fd5b8301601f810185136138e757600080fd5b80516138f5612e0882612d8a565b81815260059190911b8201830190838101908783111561391457600080fd5b928401925b8284101561393257835182529284019290840190613919565b979650505050505050565b600181815b8085111561399657817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397c5761397c613009565b8085161561398957918102915b93841c9390800290613942565b509250929050565b6000826139ad5750600161035f565b816139ba5750600061035f565b81600181146139d057600281146139da576139f6565b600191505061035f565b60ff8411156139eb576139eb613009565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613a19575081810a61035f565b613a23838361393d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613a5557613a55613009565b029392505050565b6000610df9838361399e565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128aa60408301846135ab565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061353060608301846135ab565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613b0557613b05613009565b500290565b600082613b40577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610df960ff84168361399e56fea2646970667358221220a37f2cb5d78269361959ff85181f07b524e2e4ebabc0768aad4edd04082b53e364736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162003b8938038062003b8983398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613ae7620000a260003960006106b3015260006106ef0152613ae76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612c05565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612d0b565b610365565b604051908152602001610096565b6100d36100ce366004612db6565b610459565b005b6100b26100e3366004612df1565b61097b565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261157a60e0820181905261166e6101008301526116fa61012083015261181b6101408301526101608201526118c46101808201526119cc6101a0820152611aa06101c0820152611c9d6101e0820152611ca8610200820152611cb3610220820152611cbe610240820152611cc9610260820152611cfd610280820152611d636102a0820152611dc96102c0820152611dfd6102e0820152611e31610300820152611e66610320820152611ec1610340820152611f17610360820152611f40610380820152611f976103a0820152611fc46103c082015261201b6103e08201526120866104008201526120e361042082015261212161044082015261215a61046082015261218e6104808201526121c06104a08201526121f26104c08201526122246104e08201526122586105008201526122aa6105208201526122e36105408201526123956105608201526124c261058082015261251e6105a08201526125d86105c080830191909152815290516100969190612ef7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b610aa1565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612f40565b604051602081830303815290604052905061042381836000610c0d565b506020820151825161043790600190612f95565b8151811061044757610447612fac565b60200260200101519250505092915050565b600054610100900460ff16158080156104795750600054600160ff909116105b806104935750303b158015610493575060005460ff166001145b610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561058257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c26040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b61065c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161061c579050509050828160008151811061068557610685612fac565b602002602001018190525081816001815181106106a4576106a4612fac565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000088806020019061071e9190612fdb565b856040518463ffffffff1660e01b815260040161073d9392919061321e565b6000604051808303816000875af115801561075c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107a291908101906132cf565b90506107ad81610ee3565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156108d65761085e6108136020890189612fdb565b610821906020810190613378565b8381811061083157610831612fac565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610f6e565b6108c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f54494552563200000000000000000000000000000000000000604482015260640161051b565b806108ce816133e0565b9150506107fa565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c51483387604051610908929190613419565b60405180910390a150505050801561097757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806109ac610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016109e1929190613496565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a1e9392916020016134db565b6040516020818303038152906040529050610a3b81836001610c0d565b5060208201518251610a4f90600190612f95565b81518110610a5f57610a5f612fac565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f8a565b610ad36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610b056040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610b3957610b39612c69565b604051908082528060200260200182016040528015610b62578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610b9957610b99612c69565b604051908082528060200260200182016040528015610bc2578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610bfc578160208202602001840152815160200182019150600181019050610bd5565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ec9576003890198508886015180601f1a975061ffff8160081c169850506006881015610e415787610c9057866020028401518252602082019150610e54565b6001881415610cad57602087028301518252602082019150610e54565b6002881415610d3a578c518760200210610d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161051b565b866020026020018d01518252602082019150610e54565b6003881415610d82576000610d706040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610e54565b6004881415610d9e57610d978d8d848a611072565b9150610e54565b606087610dcc578c604051602001610db69190613543565b6040516020818303038152906040529050610e2b565b6001881415610de557610dde8d6111df565b9050610e2b565b6002881415610e01576020808e0151604051610db69201612f0a565b6003881415610e2b578c516040805160208101929092520160405160208183030381529060405290505b805115610e3b57610e3b8161131c565b50610e54565b87610e50888463ffffffff8416565b9250505b60208c0151518c511115610ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161051b565b610c4b565b6020838303048c52509750505050505050505b9392505050565b600080610f0e83604051602001610efa9190613648565b6040516020818303038152906040526113ae565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610f68576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610f79836113da565b8015610edc5750610edc838361143e565b6060833b80610fa9575050604080516020810190915260008152610edc565b80841115610fc7575050604080516020810190915260008152610edc565b83831015611012576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161051b565b83830384820360008282106110275782611029565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826110b157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006110fc565b82600114156110d557506fffffffffffffffffffffffffffffffff905060806110fc565b82600214156110f1575067ffffffffffffffff905060406110fc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff81111561111f5761111f612c69565b604051908082528060200260200182016040528015611148578160200160208202803683370190505b50905060208082019083028a03815b8b82101561116f578151815260209182019101611157565b505060608b015160808c015160209081029091010160005b6101008110156111cd5760208502830182845b828110156111b6578051841c8a1682526020918201910161119a565b5050506111c48e8e8b610c0d565b9b508501611187565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161122b9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112679291602001612f40565b604051602081830303815290604052905060005b85604001515181101561131357818660400151828151811061129f5761129f612fac565b60200260200101515160001b876040015183815181106112c1576112c1612fac565b60200260200101516040516020016112db9392919061366e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161127b565b50949350505050565b6113ab816040516024016113309190612ef7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612654565b50565b60608151826040516020016113c49291906136a5565b6040516020818303038152906040529050919050565b6000611406827f01ffc9a70000000000000000000000000000000000000000000000000000000061143e565b801561035f5750611437827fffffffff0000000000000000000000000000000000000000000000000000000061143e565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906114f890869061373c565b6000604051808303818686fa925050503d8060008114611534576040519150601f19603f3d011682016040523d82523d6000602084013e611539565b606091505b5091509150602081511015611554576000935050505061035f565b818015611570575080806020019051810190611570919061374e565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116619190613770565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee9190613770565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156117e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180d9190613770565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611620565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613789565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016117cc565b60008060008467ffffffffffffffff811115611abe57611abe612c69565b604051908082528060200260200182016040528015611ae7578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b0557611b05612c69565b604051908082528060200260200182016040528015611b2e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611b83578251815260209283019201611b6b565b5050602088028101602084015b81831015611ba8578251815260209283019201611b90565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c0290879087906004016137a6565b600060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c659190810190613809565b9050846020820160208a0281015b80821015611c8e578151835260209283019290910190611c73565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611d5d858a612675565b906126f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611dc3858a612675565b90612715565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee828761272a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612775565b6000602083028203805b83811015611e5b5780518015611e52578252611e5b565b50602001611e3b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611e5b578051611f385760008252611e5b565b602001611f21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561205957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120785750805160209091019061207183826127d3565b925061202b565b505081526020019392505050565b6020828102820380516000928201835b85821080156120c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612078575080516020909101906120dc838261280f565b9250612096565b6020828102820380516000928201835b85821080156121025750826000105b156120785750805160209091019061211a838261283e565b92506120f3565b600060208302820380516000602083015b85811015612078578051830191508282101561214d57600080fd5b9091508190602001612132565b600060208302820380516000602083015b8581101561207857805191508161218157600080fd5b918190049160200161216b565b6020828102820380516000928201835b85821015612078575080516020909101906121b981846139ba565b925061219e565b6020828102820380516000928201835b8582101561207857508051828111156121e7578092505b6020820191506121d0565b6020828102820380516000928201835b858210156120785750805182811015612219578092505b602082019150612202565b600060208302820380516000602083015b8581101561207857805191508161224b57600080fd5b9181900691602001612235565b60006020830282038051600080602084015b8681101561229b57831561229357805192508284029150828483041461228f57600080fd5b8193505b60200161226a565b50505081526020019392505050565b600060208302820380516000602083015b8581101561207857805183039150828211156122d657600080fd5b90915081906020016122bb565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906117cc90869086906004016139c6565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061246e908790879087906004016139f5565b602060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af9190613770565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116618383612854565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561254c5761254c612c69565b604051908082528060200260200182016040528015612575578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125b15781518160200186015260208201915060208101905061258f565b505051905060006125c4838389896128b3565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561264585858585612a03565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561268a578391505061035f565b82601211156126b6575060128290036126a481600a6139ba565b6126ae9085613a2a565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126e581600a6139ba565b6126ae9085613a67565b5092915050565b60008161270b670de0b6b3a764000085613a2a565b610edc9190613a67565b6000670de0b6b3a764000061270b8385613a2a565b600081810b61273a57508161035f565b60008260000b13156127625761275182600a613aa2565b61275b9084613a2a565b905061035f565b60ff6000839003166126e581600a6139ba565b600080601283141561278a578391505061035f565b82601211156127a4575060128290036126e581600a6139ba565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126a481600a6139ba565b60008282018381106127e55780612807565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261281e5750600061035f565b8282028284828161283157612831613619565b0414156127e55780612807565b600081831161284e576000610edc565b50900390565b60008060015b600881116128ab57600061286e8683612aa9565b9050600061287c8684612aa9565b9050600061288a838361283e565b905061289a856001860383612b56565b9450506001909201915061285a9050565b509392505050565b835160009081908190819060015b600881116129f5576000925082876128fa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128fe565b5060005b60005b838110156129b35761292c8c828151811061291e5761291e612fac565b602002602001015184612aa9565b95508a861161297e578861294b576129448683612bdf565b9150612975565b600189141561295e576129448683612bf5565b60028914801561296c575084155b15612975578591505b600194506129ab565b896129ab577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129b3565b600101612901565b50836129dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6129ea866001840383612b56565b9550506001016128c1565b509298975050505050505050565b6000826008811115612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b6000855b85811015612a9d5763ffffffff6020820290811b199890981685891b17979150600101612a75565b50959695505050505050565b6000816008811115612b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b82612b2557600091506126ef565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612bee5781610edc565b5090919050565b600081831015612bee5781610edc565b600060208284031215612c1757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610edc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113ab57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612cdf57612cdf612c69565b604052919050565b600067ffffffffffffffff821115612d0157612d01612c69565b5060051b60200190565b60008060408385031215612d1e57600080fd5b8235612d2981612c47565b915060208381013567ffffffffffffffff811115612d4657600080fd5b8401601f81018613612d5757600080fd5b8035612d6a612d6582612ce7565b612c98565b81815260059190911b82018301908381019088831115612d8957600080fd5b928401925b82841015612da757833582529284019290840190612d8e565b80955050505050509250929050565b600060208284031215612dc857600080fd5b813567ffffffffffffffff811115612ddf57600080fd5b820160408185031215610edc57600080fd5b60008060008060608587031215612e0757600080fd5b8435612e1281612c47565b935060208501359250604085013567ffffffffffffffff80821115612e3657600080fd5b818701915087601f830112612e4a57600080fd5b813581811115612e5957600080fd5b8860208260051b8501011115612e6e57600080fd5b95989497505060200194505050565b60005b83811015612e98578181015183820152602001612e80565b83811115612ea7576000848401525b50505050565b60008151808452612ec5816020860160208601612e7d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610edc6020830184612ead565b815160009082906020808601845b83811015612f3457815185529382019390820190600101612f18565b50929695505050505050565b82815260008251612f58816020850160208701612e7d565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fa757612fa7612f66565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261300f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261304e57600080fd5b830160208101925035905067ffffffffffffffff81111561306e57600080fd5b8060051b360383131561308057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561310257600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006040830161312f8384613019565b604086528281845260608701905060608260051b88010193508260005b838110156131f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126131ad57600080fd5b85018035602067ffffffffffffffff8211156131c857600080fd5b8136038813156131d757600080fd5b6131e48983838601613087565b9850948501949390930192505060010161314c565b505050505061320b6020840184613019565b85830360208701526115708382846130d0565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261324e8285018761311f565b84810360408681019190915286518083528388019284019060005b818110156132bf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613269565b50909a9950505050505050505050565b6000602082840312156132e157600080fd5b815167ffffffffffffffff808211156132f957600080fd5b818401915084601f83011261330d57600080fd5b81518181111561331f5761331f612c69565b61335060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612c98565b915080825285602082850101111561336757600080fd5b611313816020840160208601612e7d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133ad57600080fd5b83018035915067ffffffffffffffff8211156133c857600080fd5b6020019150600581901b360382131561308057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561341257613412612f66565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261347757600080fd5b6040606084015261348d6080840185830161311f565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134c557600080fd5b8260051b80858437600092019182525092915050565b838152826020820152600082516134f9816040850160208701612e7d565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135385781518752958201959082019060010161351c565b509495945050505050565b600060208083528351818401528084015160a0604085015261356860c0850182613508565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156135e157848783030184526135cf828751612ead565b958801959388019391506001016135b5565b5060608a01519650838982030160808a01526135fd8188613508565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613661816001850160208701612e7d565b9190910160010192915050565b60008451613680818460208901612e7d565b82018481528351613698816020808501908801612e7d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161372e81600e850160208701612e7d565b91909101600e019392505050565b6000825161300f818460208701612e7d565b60006020828403121561376057600080fd5b81518015158114610edc57600080fd5b60006020828403121561378257600080fd5b5051919050565b60006020828403121561379b57600080fd5b8151610edc81612c47565b604080825283519082018190526000906020906060840190828701845b828110156137f557815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016137c3565b505050838103828501526115708186613508565b6000602080838503121561381c57600080fd5b825167ffffffffffffffff81111561383357600080fd5b8301601f8101851361384457600080fd5b8051613852612d6582612ce7565b81815260059190911b8201830190838101908783111561387157600080fd5b928401925b8284101561388f57835182529284019290840190613876565b979650505050505050565b600181815b808511156138f357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138d9576138d9612f66565b808516156138e657918102915b93841c939080029061389f565b509250929050565b60008261390a5750600161035f565b816139175750600061035f565b816001811461392d576002811461393757613953565b600191505061035f565b60ff84111561394857613948612f66565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613976575081810a61035f565b613980838361389a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156139b2576139b2612f66565b029392505050565b6000610edc83836138fb565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128076040830184613508565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061348d6060830184613508565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a6257613a62612f66565b500290565b600082613a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610edc60ff8416836138fb56fea2646970667358221220cba5176187567ea15bd96a3a42279beacef56f31c3ece59bef5e4029e012f1ef64736f6c634300080a0033"; type CombineTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC1155__factory.ts b/src/typechain/factories/ERC1155__factory.ts index c403d01..95f1413 100644 --- a/src/typechain/factories/ERC1155__factory.ts +++ b/src/typechain/factories/ERC1155__factory.ts @@ -332,7 +332,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001cf738038062001cf783398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b611ab380620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461018657600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004611262565b610199565b6040519081526020015b60405180910390f35b6100c56100c03660046112bd565b610276565b60405190151581526020016100a9565b6100e86100e33660046112e1565b61035b565b6040516100a99190611365565b610108610103366004611519565b6103ef565b005b61011d6101183660046115c3565b6104b8565b6040516100a991906116c9565b6101086101383660046116dc565b610610565b6100c561014b366004611718565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61010861019436600461174b565b61061f565b600073ffffffffffffffffffffffffffffffffffffffff8316610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061030957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461036a906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906117b0565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104185750610418853361014b565b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f7665640000000000000000000000000000606482015260840161023a565b6104b185858585856106e1565b5050505050565b6060815183511461054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023a565b6000835167ffffffffffffffff81111561056757610567611378565b604051908082528060200260200182016040528015610590578160200160208202803683370190505b50905060005b8451811015610608576105db8582815181106105b4576105b4611804565b60200260200101518583815181106105ce576105ce611804565b6020026020010151610199565b8282815181106105ed576105ed611804565b602090810291909101015261060181611862565b9050610596565b509392505050565b61061b338383610a1b565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806106485750610648853361014b565b6106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f7665640000000000000000000000000000000000000000000000606482015260840161023a565b6104b18585858585610b6f565b8151835114610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff8416610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b3360005b845181101561098657600085828151811061083657610836611804565b60200260200101519050600085838151811061085457610854611804565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061096b90849061189b565b925050819055505050508061097f90611862565b9050610819565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109fd9291906118b3565b60405180910390a4610a13818787878787610dad565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b336000610c1e85611041565b90506000610c2b85611041565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a16825281208054889290610d3590849061189b565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610da2848a8a8a8a8a61108c565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190610e2490899089908890889088906004016118e1565b6020604051808303816000875af1925050508015610e7d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e7a9181019061194c565b60015b610f6757610e89611969565b806308c379a01415610edd5750610e9e611985565b80610ea95750610edf565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023a9190611365565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061107b5761107b611804565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906111039089908990889088908890600401611a2d565b6020604051808303816000875af192505050801561115c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526111599181019061194c565b60015b61116857610e89611969565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112ba57600080fd5b50565b6000602082840312156112cf57600080fd5b81356112da8161128c565b9392505050565b6000602082840312156112f357600080fd5b5035919050565b6000815180845260005b8181101561132057602081850181015186830182015201611304565b81811115611332576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112da60208301846112fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156113eb576113eb611378565b6040525050565b600067ffffffffffffffff82111561140c5761140c611378565b5060051b60200190565b600082601f83011261142757600080fd5b81356020611434826113f2565b60405161144182826113a7565b83815260059390931b850182019282810191508684111561146157600080fd5b8286015b8481101561147c5780358352918301918301611465565b509695505050505050565b600082601f83011261149857600080fd5b813567ffffffffffffffff8111156114b2576114b2611378565b6040516114e760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601826113a7565b8181528460208386010111156114fc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561153157600080fd5b61153a86611239565b945061154860208701611239565b9350604086013567ffffffffffffffff8082111561156557600080fd5b61157189838a01611416565b9450606088013591508082111561158757600080fd5b61159389838a01611416565b935060808801359150808211156115a957600080fd5b506115b688828901611487565b9150509295509295909350565b600080604083850312156115d657600080fd5b823567ffffffffffffffff808211156115ee57600080fd5b818501915085601f83011261160257600080fd5b8135602061160f826113f2565b60405161161c82826113a7565b83815260059390931b850182019282810191508984111561163c57600080fd5b948201945b838610156116615761165286611239565b82529482019490820190611641565b9650508601359250508082111561167757600080fd5b5061168485828601611416565b9150509250929050565b600081518084526020808501945080840160005b838110156116be578151875295820195908201906001016116a2565b509495945050505050565b6020815260006112da602083018461168e565b600080604083850312156116ef57600080fd5b6116f883611239565b91506020830135801515811461170d57600080fd5b809150509250929050565b6000806040838503121561172b57600080fd5b61173483611239565b915061174260208401611239565b90509250929050565b600080600080600060a0868803121561176357600080fd5b61176c86611239565b945061177a60208701611239565b93506040860135925060608601359150608086013567ffffffffffffffff8111156117a457600080fd5b6115b688828901611487565b600181811c908216806117c457607f821691505b602082108114156117fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561189457611894611833565b5060010190565b600082198211156118ae576118ae611833565b500190565b6040815260006118c6604083018561168e565b82810360208401526118d8818561168e565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261191a60a083018661168e565b828103606084015261192c818661168e565b9050828103608084015261194081856112fa565b98975050505050505050565b60006020828403121561195e57600080fd5b81516112da8161128c565b600060033d11156119825760046000803e5060005160e01c5b90565b600060443d10156119935790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156119e157505050505090565b82850191508151818111156119f95750505050505090565b843d8701016020828501011115611a135750505050505090565b611a22602082860101876113a7565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611a7260a08301846112fa565b97965050505050505056fea26469706673582212208b52b46c7ac4aba70875f40e56e34bbc2839c5260f4d9e7dc10bd7877e342f4e64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162001cf738038062001cf783398101604081905262000034916200011b565b6200003f8162000046565b5062000234565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b602082108114156200022e57634e487b7160e01b600052602260045260246000fd5b50919050565b611ab380620002446000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461018657600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004611262565b610199565b6040519081526020015b60405180910390f35b6100c56100c03660046112bd565b610276565b60405190151581526020016100a9565b6100e86100e33660046112e1565b61035b565b6040516100a99190611365565b610108610103366004611519565b6103ef565b005b61011d6101183660046115c3565b6104b8565b6040516100a991906116c9565b6101086101383660046116dc565b610610565b6100c561014b366004611718565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61010861019436600461174b565b61061f565b600073ffffffffffffffffffffffffffffffffffffffff8316610243576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526020818152604080832073ffffffffffffffffffffffffffffffffffffffff949094168352929052205490565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a2600000000000000000000000000000000000000000000000000000000148061030957507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606002805461036a906117b0565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906117b0565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104185750610418853361014b565b6104a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f7665640000000000000000000000000000000000606482015260840161023a565b6104b185858585856106e1565b5050505050565b6060815183511461054b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161023a565b6000835167ffffffffffffffff81111561056757610567611378565b604051908082528060200260200182016040528015610590578160200160208202803683370190505b50905060005b8451811015610608576105db8582815181106105b4576105b4611804565b60200260200101518583815181106105ce576105ce611804565b6020026020010151610199565b8282815181106105ed576105ed611804565b602090810291909101015261060181611862565b9050610596565b509392505050565b61061b338383610a1b565b5050565b73ffffffffffffffffffffffffffffffffffffffff85163314806106485750610648853361014b565b6106d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f7665640000000000000000000000000000000000606482015260840161023a565b6104b18585858585610b6f565b8151835114610772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff8416610815576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b3360005b845181101561098657600085828151811061083657610836611804565b60200260200101519050600085838151811061085457610854611804565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610921576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b1682528120805484929061096b90849061189b565b925050819055505050508061097f90611862565b9050610819565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516109fd9291906118b3565b60405180910390a4610a13818787878787610dad565b505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ad7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161023a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8416610c12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161023a565b336000610c1e85611041565b90506000610c2b85611041565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015610ceb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e7366657200000000000000000000000000000000000000000000606482015260840161023a565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a16825281208054889290610d3590849061189b565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610da2848a8a8a8a8a61108c565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c8190610e2490899089908890889088906004016118e1565b6020604051808303816000875af1925050508015610e7d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252610e7a9181019061194c565b60015b610f6757610e89611969565b806308c379a01415610edd5750610e9e611985565b80610ea95750610edf565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161023a9190611365565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161023a565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c810000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b50505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061107b5761107b611804565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610a13576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e61906111039089908990889088908890600401611a2d565b6020604051808303816000875af192505050801561115c575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526111599181019061194c565b60015b61116857610e89611969565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e610000000000000000000000000000000000000000000000000000000014611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e73000000000000000000000000000000000000000000000000606482015260840161023a565b803573ffffffffffffffffffffffffffffffffffffffff8116811461125d57600080fd5b919050565b6000806040838503121561127557600080fd5b61127e83611239565b946020939093013593505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146112ba57600080fd5b50565b6000602082840312156112cf57600080fd5b81356112da8161128c565b9392505050565b6000602082840312156112f357600080fd5b5035919050565b6000815180845260005b8181101561132057602081850181015186830182015201611304565b81811115611332576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006112da60208301846112fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156113eb576113eb611378565b6040525050565b600067ffffffffffffffff82111561140c5761140c611378565b5060051b60200190565b600082601f83011261142757600080fd5b81356020611434826113f2565b60405161144182826113a7565b83815260059390931b850182019282810191508684111561146157600080fd5b8286015b8481101561147c5780358352918301918301611465565b509695505050505050565b600082601f83011261149857600080fd5b813567ffffffffffffffff8111156114b2576114b2611378565b6040516114e760207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011601826113a7565b8181528460208386010111156114fc57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561153157600080fd5b61153a86611239565b945061154860208701611239565b9350604086013567ffffffffffffffff8082111561156557600080fd5b61157189838a01611416565b9450606088013591508082111561158757600080fd5b61159389838a01611416565b935060808801359150808211156115a957600080fd5b506115b688828901611487565b9150509295509295909350565b600080604083850312156115d657600080fd5b823567ffffffffffffffff808211156115ee57600080fd5b818501915085601f83011261160257600080fd5b8135602061160f826113f2565b60405161161c82826113a7565b83815260059390931b850182019282810191508984111561163c57600080fd5b948201945b838610156116615761165286611239565b82529482019490820190611641565b9650508601359250508082111561167757600080fd5b5061168485828601611416565b9150509250929050565b600081518084526020808501945080840160005b838110156116be578151875295820195908201906001016116a2565b509495945050505050565b6020815260006112da602083018461168e565b600080604083850312156116ef57600080fd5b6116f883611239565b91506020830135801515811461170d57600080fd5b809150509250929050565b6000806040838503121561172b57600080fd5b61173483611239565b915061174260208401611239565b90509250929050565b600080600080600060a0868803121561176357600080fd5b61176c86611239565b945061177a60208701611239565b93506040860135925060608601359150608086013567ffffffffffffffff8111156117a457600080fd5b6115b688828901611487565b600181811c908216806117c457607f821691505b602082108114156117fe577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561189457611894611833565b5060010190565b600082198211156118ae576118ae611833565b500190565b6040815260006118c6604083018561168e565b82810360208401526118d8818561168e565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261191a60a083018661168e565b828103606084015261192c818661168e565b9050828103608084015261194081856112fa565b98975050505050505050565b60006020828403121561195e57600080fd5b81516112da8161128c565b600060033d11156119825760046000803e5060005160e01c5b90565b600060443d10156119935790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156119e157505050505090565b82850191508151818111156119f95750505050505090565b843d8701016020828501011115611a135750505050505090565b611a22602082860101876113a7565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a06080830152611a7260a08301846112fa565b97965050505050505056fea26469706673582212200251b0212a6b63dfb28369a3e1e8c471cfaaf246235df149cb4d42dfb40c59c664736f6c634300080a0033"; type ERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts new file mode 100644 index 0000000..b85fb69 --- /dev/null +++ b/src/typechain/factories/ERC165Upgradeable__factory.ts @@ -0,0 +1,58 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + ERC165Upgradeable, + ERC165UpgradeableInterface, +} from "../ERC165Upgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class ERC165Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): ERC165UpgradeableInterface { + return new utils.Interface(_abi) as ERC165UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC165Upgradeable { + return new Contract(address, _abi, signerOrProvider) as ERC165Upgradeable; + } +} diff --git a/src/typechain/factories/ERC20PulleeTest__factory.ts b/src/typechain/factories/ERC20PulleeTest__factory.ts index 9d7d207..754aad4 100644 --- a/src/typechain/factories/ERC20PulleeTest__factory.ts +++ b/src/typechain/factories/ERC20PulleeTest__factory.ts @@ -135,7 +135,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220977f9f1bb9ad8d38578514c57a6443c786b2c2cf6130170f3ea35797ba47283264736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f3e038e90c0550863266ddffb9521f7f88b37214f67dc9343c4e2ff20b8613a664736f6c634300080a0033"; type ERC20PulleeTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20Redeem__factory.ts b/src/typechain/factories/ERC20Redeem__factory.ts index 04ea06e..3cca113 100644 --- a/src/typechain/factories/ERC20Redeem__factory.ts +++ b/src/typechain/factories/ERC20Redeem__factory.ts @@ -386,7 +386,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea264697066735822122075ccbebca57e8d2b57cb3107f97553d20571f4106aa852796a4696fb85886ed064736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea26469706673582212207ca3fa858ca00bebdd34d4140f8901d99525e58065520836f414048a082eeb7464736f6c634300080a0033"; type ERC20RedeemConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20Upgradeable__factory.ts b/src/typechain/factories/ERC20Upgradeable__factory.ts index 082f40a..4d2debd 100644 --- a/src/typechain/factories/ERC20Upgradeable__factory.ts +++ b/src/typechain/factories/ERC20Upgradeable__factory.ts @@ -295,7 +295,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610b6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6035545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60606036805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606037805461020f90610aa1565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220a254200b7db7e30cc57bd94a5aafe4c2ebf9a682a2b85b2ec16a506c45280dc264736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610b6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6035545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b60606036805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606037805461020f90610aa1565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea264697066735822122013624cc33b29a7af87a8ed10b1a2ef66882ff38fce50e28e1bfba34b53ab06b264736f6c634300080a0033"; type ERC20UpgradeableConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20__factory.ts b/src/typechain/factories/ERC20__factory.ts index 2ee6b98..1a59b69 100644 --- a/src/typechain/factories/ERC20__factory.ts +++ b/src/typechain/factories/ERC20__factory.ts @@ -295,7 +295,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162000dfc38038062000dfc8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6a80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea264697066735822122057571ed554a32aea26f29ccf298690cf69e2fb4560590b8f5c0934553a6caea864736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162000dfc38038062000dfc8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b610b6a80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100c95760003560e01c80633950935111610081578063a457c2d71161005b578063a457c2d714610194578063a9059cbb146101a7578063dd62ed3e146101ba57600080fd5b8063395093511461014357806370a082311461015657806395d89b411461018c57600080fd5b806318160ddd116100b257806318160ddd1461010f57806323b872dd14610121578063313ce5671461013457600080fd5b806306fdde03146100ce578063095ea7b3146100ec575b600080fd5b6100d6610200565b6040516100e3919061094a565b60405180910390f35b6100ff6100fa3660046109e6565b610292565b60405190151581526020016100e3565b6002545b6040519081526020016100e3565b6100ff61012f366004610a10565b6102aa565b604051601281526020016100e3565b6100ff6101513660046109e6565b6102ce565b610113610164366004610a4c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6100d661031a565b6100ff6101a23660046109e6565b610329565b6100ff6101b53660046109e6565b6103ff565b6101136101c8366004610a6e565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020f90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023b90610aa1565b80156102885780601f1061025d57610100808354040283529160200191610288565b820191906000526020600020905b81548152906001019060200180831161026b57829003601f168201915b5050505050905090565b6000336102a081858561040d565b5060019392505050565b6000336102b88582856105c0565b6102c3858585610697565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906102a09082908690610315908790610af5565b61040d565b60606004805461020f90610aa1565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156103f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102c3828686840361040d565b6000336102a0818585610697565b73ffffffffffffffffffffffffffffffffffffffff83166104af576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8216610552576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146106915781811015610684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103e9565b610691848484840361040d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff82166107dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016103e9565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152602081905260408082208585039055918516815290812080548492906108d7908490610af5565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161093d91815260200190565b60405180910390a3610691565b600060208083528351808285015260005b818110156109775785810183015185820160400152820161095b565b81811115610989576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146109e157600080fd5b919050565b600080604083850312156109f957600080fd5b610a02836109bd565b946020939093013593505050565b600080600060608486031215610a2557600080fd5b610a2e846109bd565b9250610a3c602085016109bd565b9150604084013590509250925092565b600060208284031215610a5e57600080fd5b610a67826109bd565b9392505050565b60008060408385031215610a8157600080fd5b610a8a836109bd565b9150610a98602084016109bd565b90509250929050565b600181811c90821680610ab557607f821691505b60208210811415610aef577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60008219821115610b2f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b50019056fea2646970667358221220aacc14b2075679ad15e541ed3162569e92773da064d610c08fdc6e21fee7d3a764736f6c634300080a0033"; type ERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC721Burnable__factory.ts b/src/typechain/factories/ERC721Burnable__factory.ts index db2339a..2567e33 100644 --- a/src/typechain/factories/ERC721Burnable__factory.ts +++ b/src/typechain/factories/ERC721Burnable__factory.ts @@ -252,7 +252,7 @@ const _abi = [ }, { internalType: "bytes", - name: "_data", + name: "data", type: "bytes", }, ], diff --git a/src/typechain/factories/ERC721Upgradeable__factory.ts b/src/typechain/factories/ERC721Upgradeable__factory.ts new file mode 100644 index 0000000..9a017d9 --- /dev/null +++ b/src/typechain/factories/ERC721Upgradeable__factory.ts @@ -0,0 +1,404 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + ERC721Upgradeable, + ERC721UpgradeableInterface, +} from "../ERC721Upgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + 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: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + 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: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "_data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + 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: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea26469706673582212206d6095494c27553541fe0f0e51f0544e9a2d2bf8f3d6c40b03226902630ce7cb64736f6c634300080a0033"; + +type ERC721UpgradeableConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC721UpgradeableConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC721Upgradeable__factory extends ContractFactory { + constructor(...args: ERC721UpgradeableConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): ERC721Upgradeable { + return super.attach(address) as ERC721Upgradeable; + } + connect(signer: Signer): ERC721Upgradeable__factory { + return super.connect(signer) as ERC721Upgradeable__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC721UpgradeableInterface { + return new utils.Interface(_abi) as ERC721UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC721Upgradeable { + return new Contract(address, _abi, signerOrProvider) as ERC721Upgradeable; + } +} diff --git a/src/typechain/factories/ERC721__factory.ts b/src/typechain/factories/ERC721__factory.ts index 9c682f0..18449a6 100644 --- a/src/typechain/factories/ERC721__factory.ts +++ b/src/typechain/factories/ERC721__factory.ts @@ -251,7 +251,7 @@ const _abi = [ }, { internalType: "bytes", - name: "_data", + name: "data", type: "bytes", }, ], @@ -355,7 +355,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001bbe38038062001bbe8339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61192c80620002926000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060008054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b606060018054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610e459084906117b9565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea2646970667358221220965f8e30f221ade5909f6bc82257936f550de7bed348f46fba466273d3096c1a64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b5060405162001a2438038062001a248339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000282565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b602082108114156200027c57634e487b7160e01b600052602260045260246000fd5b50919050565b61179280620002926000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f2366004611255565b610252565b60405190151581526020015b60405180910390f35b610114610337565b60405161010391906112e8565b61013461012f3660046112fb565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c61016736600461133d565b6103fd565b005b61016c61017c366004611367565b61058f565b61016c61018f366004611367565b610630565b6101346101a23660046112fb565b61064b565b6101ba6101b53660046113a3565b6106d7565b604051908152602001610103565b6101146107a5565b61016c6101de3660046113be565b6107b4565b61016c6101f1366004611429565b6107c3565b6101146102043660046112fb565b61086b565b6100f7610217366004611523565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461034690611556565b80601f016020809104026020016040519081016040528092919081815260200182805461037290611556565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60006103d4826108df565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104088261064b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156104cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806104f457506104f48133610217565b610580576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c000060648201526084016104c2565b61058a838361096d565b505050565b6105993382610a0d565b610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c2565b61058a838383610acd565b61058a838383604051806020016040528060008152506107c3565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c2565b600073ffffffffffffffffffffffffffffffffffffffff821661077c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e6572000000000000000000000000000000000000000000000060648201526084016104c2565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b60606001805461034690611556565b6107bf338383610d34565b5050565b6107cd3383610a0d565b610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f76656400000000000000000000000000000000000060648201526084016104c2565b61086584848484610e62565b50505050565b6060610876826108df565b600061088d60408051602081019091526000815290565b905060008151116108ad57604051806020016040528060008152506108d8565b806108b784610f05565b6040516020016108c89291906115aa565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661096a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e204944000000000000000060448201526064016104c2565b50565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841690811790915581906109c78261064b565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610a198361064b565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610a87575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610ac557508373ffffffffffffffffffffffffffffffffffffffff16610aad846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610aed8261064b565b73ffffffffffffffffffffffffffffffffffffffff1614610b90576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104c2565b73ffffffffffffffffffffffffffffffffffffffff8216610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104c2565b610c3d60008261096d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610c73908490611608565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610cae90849061161f565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610dca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104c2565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610e6d848484610acd565b610e7984848484611037565b610865576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c2565b606081610f4557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b8115610f6f5780610f5981611637565b9150610f689050600a8361169f565b9150610f49565b60008167ffffffffffffffff811115610f8a57610f8a6113fa565b6040519080825280601f01601f191660200182016040528015610fb4576020820181803683370190505b5090505b8415610ac557610fc9600183611608565b9150610fd6600a866116b3565b610fe190603061161f565b60f81b818381518110610ff657610ff66116c7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611030600a8661169f565b9450610fb8565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561121c576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906110ae9033908990889088906004016116f6565b6020604051808303816000875af1925050508015611107575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526111049181019061173f565b60015b6111d1573d808015611135576040519150601f19603f3d011682016040523d82523d6000602084013e61113a565b606091505b5080516111c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104c2565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610ac5565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461096a57600080fd5b60006020828403121561126757600080fd5b81356108d881611227565b60005b8381101561128d578181015183820152602001611275565b838111156108655750506000910152565b600081518084526112b6816020860160208601611272565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006108d8602083018461129e565b60006020828403121561130d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461133857600080fd5b919050565b6000806040838503121561135057600080fd5b61135983611314565b946020939093013593505050565b60008060006060848603121561137c57600080fd5b61138584611314565b925061139360208501611314565b9150604084013590509250925092565b6000602082840312156113b557600080fd5b6108d882611314565b600080604083850312156113d157600080fd5b6113da83611314565b9150602083013580151581146113ef57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561143f57600080fd5b61144885611314565b935061145660208601611314565b925060408501359150606085013567ffffffffffffffff8082111561147a57600080fd5b818701915087601f83011261148e57600080fd5b8135818111156114a0576114a06113fa565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156114e6576114e66113fa565b816040528281528a60208487010111156114ff57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561153657600080fd5b61153f83611314565b915061154d60208401611314565b90509250929050565b600181811c9082168061156a57607f821691505b602082108114156115a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600083516115bc818460208801611272565b8351908301906115d0818360208801611272565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561161a5761161a6115d9565b500390565b60008219821115611632576116326115d9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611669576116696115d9565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826116ae576116ae611670565b500490565b6000826116c2576116c2611670565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611735608083018461129e565b9695505050505050565b60006020828403121561175157600080fd5b81516108d88161122756fea2646970667358221220219ba30929921c24af2d31d6df67e3efe203c61322e06a76d15ce90daac2936764736f6c634300080a0033"; type ERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20Factory__factory.ts b/src/typechain/factories/EmissionsERC20Factory__factory.ts index b37f6ca..09a6443 100644 --- a/src/typechain/factories/EmissionsERC20Factory__factory.ts +++ b/src/typechain/factories/EmissionsERC20Factory__factory.ts @@ -182,7 +182,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b5060405162005b4838038062005b48833981016040819052610031916100d7565b600160009081556040518290610046906100c9565b6001600160a01b039091168152602001604051809103906000f080158015610072573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610107565b614a03806200114583390190565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b60805161101c620001296000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea264697066735822122035cd70ba92b0361856385d86d44cc9b6b0befa242681f7c398c5a947ef3d715064736f6c634300080a003360c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212205d92d2ff6027c75bd5d5bd6649dd86bdd6ab4dab7ab584f5989fd4865e81be9264736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b5060405162005aa538038062005aa5833981016040819052610031916100d7565b600160009081556040518290610046906100c9565b6001600160a01b039091168152602001604051809103906000f080158015610072573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610107565b614960806200114583390190565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b60805161101c620001296000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea2646970667358221220720582ff344fffb1b5fe452694652af057f1cfaf7c41773d29b0cb792d362cd664736f6c634300080a003360c06040523480156200001157600080fd5b50604051620049603803806200496083398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516148be620000a260003960006109f201526000610a1901526148be6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461376c565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b6040516101909190613824565b6101846101bc366004613859565b610667565b6035545b604051908152602001610190565b6101846101e1366004613885565b61067f565b60405160128152602001610190565b610184610203366004613859565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b3660046138c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613985565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613a30565b610700565b005b6101846102c5366004613859565b610c12565b6101846102d8366004613859565b610cee565b6102b56102eb366004613a6b565b610cfc565b6101c56102fe366004613af0565b610e4f565b6101c5610311366004613b7c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f3660046138c6565b610e88565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526121a260e082018190526122966101008301526123226101208301526124436101408301526101608201526124ec6101808201526125f46101a08201526126c86101c08201526128c56101e08201526128d06102008201526128db6102208201526128e66102408201526128f161026082015261292561028082015261298b6102a08201526129f16102c0820152612a256102e0820152612a59610300820152612a8e610320820152612ae9610340820152612b3f610360820152612b68610380820152612bbf6103a0820152612bec6103c0820152612c436103e0820152612cae610400820152612d0b610420820152612d49610440820152612d82610460820152612db6610480820152612de86104a0820152612e1a6104c0820152612e4c6104e0820152612e80610500820152612ed2610520820152612f0b610540820152612fbd6105608201526130ea6105808201526131466105a08201526132006105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613bb5565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613bb5565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610f3d565b5060019392505050565b60003361068d8582856110f0565b6106988585856111c7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613c32565b610f3d565b6060603780546105e490613bb5565b600054610100900460ff16158080156107205750600054600160ff909116105b8061073a5750303b15801561073a575060005460ff166001145b6107cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561082957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108cd6108396020840184613c4a565b6108439080613c88565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610885925050506020850185613c4a565b610893906020810190613c88565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061147a92505050565b6109046108dd6020840184613c4a565b6108ee9060608101906040016138c6565b6108fb6020850185613c4a565b6060013561151b565b6109446040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6109a56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161096557905050905081816000815181106109ce576109ce613cf4565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f0000000000000000000000000000000000000000000000000000000000000000610a456040890189613d23565b856040518463ffffffff1660e01b8152600401610a6493929190613f59565b6000604051808303816000875af1158015610a83573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ac9919081019061400a565b9050610ad48161163b565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b2660208601866140c8565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ba09033908890614120565b60405180910390a15050508015610c0e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107c2565b610ce38286868403610f3d565b506001949350505050565b6000336106758185856111c7565b60655474010000000000000000000000000000000000000000900460ff16610d9d573373ffffffffffffffffffffffffffffffffffffffff841614610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016107c2565b6000610da884610e88565b9050610db4848261151b565b610de27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008426116c6565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610e41903390879087908790614267565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610e7f908561176c565b95945050505050565b6065546000908190610eb890610eb39073ffffffffffffffffffffffffffffffffffffffff16611821565b61184f565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610f07828460006119bb565b5060208301518351610f1b906001906142ab565b81518110610f2b57610f2b613cf4565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8216611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111c157818110156111b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c2565b6111c18484848403610f3d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611407908490613c32565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146d91815260200190565b60405180910390a36111c1565b600054610100900460ff16611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b610c0e8282611c94565b73ffffffffffffffffffffffffffffffffffffffff8216611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107c2565b80603560008282546115aa9190613c32565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906115e4908490613c32565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116668360405160200161165291906142c2565b604051602081830303815290604052611d52565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166116c0576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000826008811115611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b6000855b858110156117605763ffffffff6020820290811b199890981685891b17979150600101611738565b50959695505050505050565b60008160088111156117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b826117e8576000915061181a565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d7e565b6118816040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118b36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156118e7576118e76138e3565b604051908082528060200260200182016040528015611910578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611947576119476138e3565b604051908082528060200260200182016040528015611970578160200160208202803683370190505b5090506020870151602002604001870160005b848110156119aa578160208202602001840152815160200182019150600181019050611983565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c77576003890198508886015180601f1a975061ffff8160081c169850506006881015611bef5787611a3e57866020028401518252602082019150611c02565b6001881415611a5b57602087028301518252602082019150611c02565b6002881415611ae8578c518760200210611ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107c2565b866020026020018d01518252602082019150611c02565b6003881415611b30576000611b1e6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611c02565b6004881415611b4c57611b458d8d848a611e66565b9150611c02565b606087611b7a578c604051602001611b649190614323565b6040516020818303038152906040529050611bd9565b6001881415611b9357611b8c8d611fd3565b9050611bd9565b6002881415611baf576020808e0151604051611b6492016143f9565b6003881415611bd9578c516040805160208101929092520160405160208183030381529060405290505b805115611be957611be981612110565b50611c02565b87611bfe888463ffffffff8416565b9250505b60208c0151518c511115611c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107c2565b6119f9565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b8151611d3e9060369060208501906136d3565b508051611c8f9060379060208401906136d3565b6060815182604051602001611d6892919061445e565b6040516020818303038152906040529050919050565b6060833b80611d9d57505060408051602081019091526000815261069e565b80841115611dbb57505060408051602081019091526000815261069e565b83831015611e06576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107c2565b8383038482036000828210611e1b5782611e1d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611ea557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ef0565b8260011415611ec957506fffffffffffffffffffffffffffffffff90506080611ef0565b8260021415611ee5575067ffffffffffffffff90506040611ef0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611f1357611f136138e3565b604051908082528060200260200182016040528015611f3c578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f63578151815260209182019101611f4b565b505060608b015160808c015160209081029091010160005b610100811015611fc15760208502830182845b82811015611faa578051841c8a16825260209182019101611f8e565b505050611fb88e8e8b6119bb565b9b508501611f7b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161201f91906143f9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261205b92916020016144f5565b604051602081830303815290604052905060005b85604001515181101561210757818660400151828151811061209357612093613cf4565b60200260200101515160001b876040015183815181106120b5576120b5613cf4565b60200260200101516040516020016120cf9392919061451b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161206f565b50949350505050565b61219f816040516024016121249190613824565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261327c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122899190614552565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123169190614552565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124359190614552565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612248565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d1919061456b565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123f4565b60008060008467ffffffffffffffff8111156126e6576126e66138e3565b60405190808252806020026020018201604052801561270f578160200160208202803683370190505b50905060008567ffffffffffffffff81111561272d5761272d6138e3565b604051908082528060200260200182016040528015612756578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156127ab578251815260209283019201612793565b5050602088028101602084015b818310156127d05782518152602092830192016127b8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061282a9087908790600401614588565b600060405180830381865afa158015612847573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261288d91908101906145eb565b9050846020820160208a0281015b808210156128b657815183526020928301929091019061289b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761329d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361228982612985858a61329d565b90613317565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612289826129eb858a61329d565b90613336565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761334b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123168287613396565b6000602083028203805b83811015612a835780518015612a7a578252612a83565b50602001612a63565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a83578051612b605760008252612a83565b602001612b49565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c8157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612c9983826133f4565b9250612c53565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612d048382613430565b9250612cbe565b6020828102820380516000928201835b8582108015612d2a5750826000105b15612ca057508051602090910190612d42838261345f565b9250612d1b565b600060208302820380516000602083015b85811015612ca05780518301915082821015612d7557600080fd5b9091508190602001612d5a565b600060208302820380516000602083015b85811015612ca0578051915081612da957600080fd5b9181900491602001612d93565b6020828102820380516000928201835b85821015612ca057508051602090910190612de18184614791565b9250612dc6565b6020828102820380516000928201835b85821015612ca05750805182811115612e0f578092505b602082019150612df8565b6020828102820380516000928201835b85821015612ca05750805182811015612e41578092505b602082019150612e2a565b600060208302820380516000602083015b85811015612ca0578051915081612e7357600080fd5b9181900691602001612e5d565b60006020830282038051600080602084015b86811015612ec3578315612ebb578051925082840291508284830414612eb757600080fd5b8193505b602001612e92565b50505081526020019392505050565b600060208302820380516000602083015b85811015612ca05780518303915082821115612efe57600080fd5b9091508190602001612ee3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123f4908690869060040161479d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613096908790879087906004016147cc565b602060405180830381865afa1580156130b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d79190614552565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122898383613475565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613174576131746138e3565b60405190808252806020026020018201604052801561319d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131d9578151816020018601526020820191506020810190506131b7565b505051905060006131ec838389896134d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561326d858585856116c6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156132b257839150506105cf565b82601211156132de575060128290036132cc81600a614791565b6132d69085614801565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161330d81600a614791565b6132d6908561483e565b60008161332c670de0b6b3a764000085614801565b61069e919061483e565b6000670de0b6b3a764000061332c8385614801565b600081810b61335b5750816105cf565b60008260000b13156133835761337282600a614879565b61337c9084614801565b90506105cf565b60ff60008390031661330d81600a614791565b60008060128314156133ab57839150506105cf565b82601211156133c55750601282900361330d81600a614791565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016132cc81600a614791565b60008282018381106134065780613428565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261343f575060006105cf565b828202828482816134525761345261442f565b0414156134065780613428565b600081831161346f57600061069e565b50900390565b60008060015b600881116134cc57600061348f868361176c565b9050600061349d868461176c565b905060006134ab838361345f565b90506134bb856001860383613624565b9450506001909201915061347b9050565b509392505050565b835160009081908190819060015b600881116136165760009250828761351b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61351f565b5060005b60005b838110156135d45761354d8c828151811061353f5761353f613cf4565b60200260200101518461176c565b95508a861161359f578861356c5761356586836136ad565b9150613596565b600189141561357f5761356586836136c3565b60028914801561358d575084155b15613596578591505b600194506135cc565b896135cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506135d4565b600101613522565b50836135fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61360b866001840383613624565b9550506001016134e2565b509298975050505050505050565b6000826008811115613692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b505063ffffffff602090920291821b199290921691901b1790565b60008183106136bc578161069e565b5090919050565b6000818310156136bc578161069e565b8280546136df90613bb5565b90600052602060002090601f0160209004810192826137015760008555613747565b82601f1061371a57805160ff1916838001178555613747565b82800160010185558215613747579182015b8281111561374757825182559160200191906001019061372c565b50613753929150613757565b5090565b5b808211156137535760008155600101613758565b60006020828403121561377e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b838110156137c95781810151838201526020016137b1565b838111156111c15750506000910152565b600081518084526137f28160208601602086016137ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e60208301846137da565b73ffffffffffffffffffffffffffffffffffffffff8116811461219f57600080fd5b6000806040838503121561386c57600080fd5b823561387781613837565b946020939093013593505050565b60008060006060848603121561389a57600080fd5b83356138a581613837565b925060208401356138b581613837565b929592945050506040919091013590565b6000602082840312156138d857600080fd5b813561069e81613837565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613959576139596138e3565b604052919050565b600067ffffffffffffffff82111561397b5761397b6138e3565b5060051b60200190565b6000806040838503121561399857600080fd5b82356139a381613837565b915060208381013567ffffffffffffffff8111156139c057600080fd5b8401601f810186136139d157600080fd5b80356139e46139df82613961565b613912565b81815260059190911b82018301908381019088831115613a0357600080fd5b928401925b82841015613a2157833582529284019290840190613a08565b80955050505050509250929050565b600060208284031215613a4257600080fd5b813567ffffffffffffffff811115613a5957600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613a8057600080fd5b8335613a8b81613837565b9250602084013567ffffffffffffffff80821115613aa857600080fd5b818601915086601f830112613abc57600080fd5b813581811115613acb57600080fd5b876020828501011115613add57600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613b0657600080fd5b8435613b1181613837565b935060208501359250604085013567ffffffffffffffff80821115613b3557600080fd5b818701915087601f830112613b4957600080fd5b813581811115613b5857600080fd5b8860208260051b8501011115613b6d57600080fd5b95989497505060200194505050565b60008060408385031215613b8f57600080fd5b8235613b9a81613837565b91506020830135613baa81613837565b809150509250929050565b600181811c90821680613bc957607f821691505b602082108114156116c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613c4557613c45613c03565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613c7e57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cbd57600080fd5b83018035915067ffffffffffffffff821115613cd857600080fd5b602001915036819003821315613ced57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c7e57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d8c57600080fd5b830160208101925035905067ffffffffffffffff811115613dac57600080fd5b8060051b3603831315613ced57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3c57600080fd5b830160208101925035905067ffffffffffffffff811115613e5c57600080fd5b803603831315613ced57600080fd5b600060408301613e7b8384613d57565b604086528281845260608701905060608260051b88010193508260005b83811015613ef3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613ed18286613e07565b613edc888284613dbe565b975050506020928301929190910190600101613e98565b5050505050613f056020840184613d57565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613f3d57600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152613f8982850187613e6b565b84810360408681019190915286518083528388019284019060005b81811015613ffa578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613fa4565b50909a9950505050505050505050565b60006020828403121561401c57600080fd5b815167ffffffffffffffff8082111561403457600080fd5b818401915084601f83011261404857600080fd5b81518181111561405a5761405a6138e3565b61408b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613912565b91508082528560208285010111156140a257600080fd5b6121078160208401602086016137ae565b803580151581146140c357600080fd5b919050565b6000602082840312156140da57600080fd5b61069e826140b3565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261411757600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261414c846140b3565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261418857600080fd5b606084810152840161419a8180613e07565b608060a08701526141b061012087018284613dbe565b9150506141c06020830183613e07565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c08801526141f5838284613dbe565b92505050604082013561420781613837565b831660e0860152606082013561010086015261422660408701876140e3565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261425c8184613e6b565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526142a1606083018486613dbe565b9695505050505050565b6000828210156142bd576142bd613c03565b500390565b60008152600082516142db8160018501602087016137ae565b9190910160010192915050565b600081518084526020808501945080840160005b83811015614318578151875295820195908201906001016142fc565b509495945050505050565b600060208083528351818401528084015160a0604085015261434860c08501826142e8565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156143c157848783030184526143af8287516137da565b95880195938801939150600101614395565b5060608a01519650838982030160808a01526143dd81886142e8565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561442357815185529382019390820190600101614407565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516144e781600e8501602087016137ae565b91909101600e019392505050565b8281526000825161450d8160208501602087016137ae565b919091016020019392505050565b6000845161452d8184602089016137ae565b820184815283516145458160208085019088016137ae565b0160200195945050505050565b60006020828403121561456457600080fd5b5051919050565b60006020828403121561457d57600080fd5b815161069e81613837565b604080825283519082018190526000906020906060840190828701845b828110156145d757815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016145a5565b505050838103828501526142a181866142e8565b600060208083850312156145fe57600080fd5b825167ffffffffffffffff81111561461557600080fd5b8301601f8101851361462657600080fd5b80516146346139df82613961565b81815260059190911b8201830190838101908783111561465357600080fd5b928401925b8284101561425c57835182529284019290840190614658565b600181815b808511156146ca57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146b0576146b0613c03565b808516156146bd57918102915b93841c9390800290614676565b509250929050565b6000826146e1575060016105cf565b816146ee575060006105cf565b8160018114614704576002811461470e5761472a565b60019150506105cf565b60ff84111561471f5761471f613c03565b50506001821b6105cf565b5060208310610133831016604e8410600b841016171561474d575081810a6105cf565b6147578383614671565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561478957614789613c03565b029392505050565b600061069e83836146d2565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061342860408301846142e8565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610e7f60608301846142e8565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483957614839613c03565b500290565b600082614874577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff8416836146d256fea26469706673582212207f0b2bf5cb9b12afbbcca4aba6e6c64ca893cbeaad2a198d58555ed1eb02dffd64736f6c634300080a0033"; type EmissionsERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20__factory.ts b/src/typechain/factories/EmissionsERC20__factory.ts index 6afa6be..ddeb0fd 100644 --- a/src/typechain/factories/EmissionsERC20__factory.ts +++ b/src/typechain/factories/EmissionsERC20__factory.ts @@ -651,7 +651,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162004a0338038062004a0383398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051614961620000a2600039600061090a0152600061093101526149616000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f366004613814565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b60405161019091906138cc565b6101846101bc366004613901565b610667565b6035545b604051908152602001610190565b6101846101e136600461392d565b61067f565b60405160128152602001610190565b610184610203366004613901565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b36600461396e565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613a2d565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613ad8565b610700565b005b6101846102c5366004613901565b610b2a565b6101846102d8366004613901565b610c0b565b6102b56102eb366004613b13565b610c19565b6101c56102fe366004613b98565b610d6c565b6101c5610311366004613c24565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f36600461396e565b610da5565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261224a60e0820181905261233e6101008301526123ca6101208301526124eb61014083015261016082015261259461018082015261269c6101a08201526127706101c082015261296d6101e082015261297861020082015261298361022082015261298e6102408201526129996102608201526129cd610280820152612a336102a0820152612a996102c0820152612acd6102e0820152612b01610300820152612b36610320820152612b91610340820152612be7610360820152612c10610380820152612c676103a0820152612c946103c0820152612ceb6103e0820152612d56610400820152612db3610420820152612df1610440820152612e2a610460820152612e5e610480820152612e906104a0820152612ec26104c0820152612ef46104e0820152612f28610500820152612f7a610520820152612fb36105408201526130656105608201526131926105808201526131ee6105a08201526132a86105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613c5d565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613c5d565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610e5a565b5060019392505050565b60003361068d85828561100d565b6106988585856110e4565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613cda565b610e5a565b6060603780546105e490613c5d565b600061070c6001611397565b9050801561074157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107e56107516020840184613cf2565b61075b9080613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061079d925050506020850185613cf2565b6107ab906020810190613d30565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152292505050565b61081c6107f56020840184613cf2565b61080690606081019060400161396e565b6108136020850185613cf2565b606001356115c3565b61085c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6108bd6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161087d57905050905081816000815181106108e6576108e6613d9c565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f000000000000000000000000000000000000000000000000000000000000000061095d6040890189613dcb565b856040518463ffffffff1660e01b815260040161097c93929190614001565b6000604051808303816000875af115801561099b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109e191908101906140b2565b90506109ec816116e3565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610a3e602086018661416b565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ab890339088906141c3565b60405180910390a15050508015610b2657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610c008286868403610e5a565b506001949350505050565b6000336106758185856110e4565b60655474010000000000000000000000000000000000000000900460ff16610cba573373ffffffffffffffffffffffffffffffffffffffff841614610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d00000000000000000000000000000000006044820152606401610bea565b6000610cc584610da5565b9050610cd184826115c3565b610cff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261176e565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610d5e90339087908790879061430a565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610d9c9085611814565b95945050505050565b6065546000908190610dd590610dd09073ffffffffffffffffffffffffffffffffffffffff166118c9565b6118f7565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610e2482846000611a63565b5060208301518351610e389060019061434e565b81518110610e4857610e48613d9c565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8216610f9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110de57818110156110d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bea565b6110de8484848403610e5a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff821661122a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156112e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bea565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611324908490613cda565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161138a91815260200190565b60405180910390a36110de565b60008054610100900460ff161561144e578160ff1660011480156113ba5750303b155b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b506000919050565b60005460ff8084169116106114e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bea565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff166115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b610b268282611d3c565b73ffffffffffffffffffffffffffffffffffffffff8216611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bea565b80603560008282546116529190613cda565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152603360205260408120805483929061168c908490613cda565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008061170e836040516020016116fa9190614365565b604051602081830303815290604052611dfa565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611768576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60008260088111156117dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b6000855b858110156118085763ffffffff6020820290811b199890981685891b179791506001016117e0565b50959695505050505050565b6000816008811115611882576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b8261189057600091506118c2565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611e26565b6119296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61195b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561198f5761198f61398b565b6040519080825280602002602001820160405280156119b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156119ef576119ef61398b565b604051908082528060200260200182016040528015611a18578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611a52578160208202602001840152815160200182019150600181019050611a2b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611d1f576003890198508886015180601f1a975061ffff8160081c169850506006881015611c975787611ae657866020028401518252602082019150611caa565b6001881415611b0357602087028301518252602082019150611caa565b6002881415611b90578c518760200210611b79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e4754480000000000000000000000000000000000006044820152606401610bea565b866020026020018d01518252602082019150611caa565b6003881415611bd8576000611bc66040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611caa565b6004881415611bf457611bed8d8d848a611f0e565b9150611caa565b606087611c22578c604051602001611c0c91906143c6565b6040516020818303038152906040529050611c81565b6001881415611c3b57611c348d61207b565b9050611c81565b6002881415611c57576020808e0151604051611c0c920161449c565b6003881415611c81578c516040805160208101929092520160405160208183030381529060405290505b805115611c9157611c91816121b8565b50611caa565b87611ca6888463ffffffff8416565b9250505b60208c0151518c511115611d1a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610bea565b611aa1565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610bea565b8151611de690603690602085019061377b565b508051611d3790603790602084019061377b565b6060815182604051602001611e10929190614501565b6040516020818303038152906040529050919050565b6060833b80611e4557505060408051602081019091526000815261069e565b80841115611e6357505060408051602081019091526000815261069e565b83831015611eae576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610bea565b8383038482036000828210611ec35782611ec5565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611f4d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611f98565b8260011415611f7157506fffffffffffffffffffffffffffffffff90506080611f98565b8260021415611f8d575067ffffffffffffffff90506040611f98565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611fbb57611fbb61398b565b604051908082528060200260200182016040528015611fe4578160200160208202803683370190505b50905060208082019083028a03815b8b82101561200b578151815260209182019101611ff3565b505060608b015160808c015160209081029091010160005b6101008110156120695760208502830182845b82811015612052578051841c8a16825260209182019101612036565b5050506120608e8e8b611a63565b9b508501612023565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016120c7919061449c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526121039291602001614598565b604051602081830303815290604052905060005b8560400151518110156121af57818660400151828151811061213b5761213b613d9c565b60200260200101515160001b8760400151838151811061215d5761215d613d9c565b6020026020010151604051602001612177939291906145be565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612117565b50949350505050565b612247816040516024016121cc91906138cc565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052613324565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561230d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061233191906145f5565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561239a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123be91906145f5565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156124b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124dd91906145f5565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016122f0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612655573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612679919061460e565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161249c565b60008060008467ffffffffffffffff81111561278e5761278e61398b565b6040519080825280602002602001820160405280156127b7578160200160208202803683370190505b50905060008567ffffffffffffffff8111156127d5576127d561398b565b6040519080825280602002602001820160405280156127fe578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561285357825181526020928301920161283b565b5050602088028101602084015b81831015612878578251815260209283019201612860565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906128d2908790879060040161462b565b600060405180830381865afa1580156128ef573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612935919081019061468e565b9050846020820160208a0281015b8082101561295e578151835260209283019290910190612943565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be8287613345565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a2d858a613345565b906133bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361233182612a93858a613345565b906133de565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be82876133f3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123be828761343e565b6000602083028203805b83811015612b2b5780518015612b22578252612b2b565b50602001612b0b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612b2b578051612c085760008252612b2b565b602001612bf1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612d2957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612d41838261349c565b9250612cfb565b505081526020019392505050565b6020828102820380516000928201835b8582108015612d9457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612d4857508051602090910190612dac83826134d8565b9250612d66565b6020828102820380516000928201835b8582108015612dd25750826000105b15612d4857508051602090910190612dea8382613507565b9250612dc3565b600060208302820380516000602083015b85811015612d485780518301915082821015612e1d57600080fd5b9091508190602001612e02565b600060208302820380516000602083015b85811015612d48578051915081612e5157600080fd5b9181900491602001612e3b565b6020828102820380516000928201835b85821015612d4857508051602090910190612e898184614834565b9250612e6e565b6020828102820380516000928201835b85821015612d485750805182811115612eb7578092505b602082019150612ea0565b6020828102820380516000928201835b85821015612d485750805182811015612ee9578092505b602082019150612ed2565b600060208302820380516000602083015b85811015612d48578051915081612f1b57600080fd5b9181900691602001612f05565b60006020830282038051600080602084015b86811015612f6b578315612f63578051925082840291508284830414612f5f57600080fd5b8193505b602001612f3a565b50505081526020019392505050565b600060208302820380516000602083015b85811015612d485780518303915082821115612fa657600080fd5b9091508190602001612f8b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061249c9086908690600401614840565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061313e9087908790879060040161486f565b602060405180830381865afa15801561315b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061317f91906145f5565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612331838361351d565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561321c5761321c61398b565b604051908082528060200260200182016040528015613245578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156132815781518160200186015260208201915060208101905061325f565b505051905060006132948383898961357c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856133158585858561176e565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561335a57839150506105cf565b82601211156133865750601282900361337481600a614834565b61337e90856148a4565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133b581600a614834565b61337e90856148e1565b6000816133d4670de0b6b3a7640000856148a4565b61069e91906148e1565b6000670de0b6b3a76400006133d483856148a4565b600081810b6134035750816105cf565b60008260000b131561342b5761341a82600a61491c565b61342490846148a4565b90506105cf565b60ff6000839003166133b581600a614834565b600080601283141561345357839150506105cf565b826012111561346d575060128290036133b581600a614834565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161337481600a614834565b60008282018381106134ae57806134d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826134e7575060006105cf565b828202828482816134fa576134fa6144d2565b0414156134ae57806134d0565b600081831161351757600061069e565b50900390565b60008060015b600881116135745760006135378683611814565b905060006135458684611814565b905060006135538383613507565b90506135638560018603836136cc565b945050600190920191506135239050565b509392505050565b835160009081908190819060015b600881116136be576000925082876135c357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6135c7565b5060005b60005b8381101561367c576135f58c82815181106135e7576135e7613d9c565b602002602001015184611814565b95508a861161364757886136145761360d8683613755565b915061363e565b60018914156136275761360d868361376b565b600289148015613635575084155b1561363e578591505b60019450613674565b89613674577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061367c565b6001016135ca565b50836136a557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6136b38660018403836136cc565b95505060010161358a565b509298975050505050505050565b600082600881111561373a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610bea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310613764578161069e565b5090919050565b600081831015613764578161069e565b82805461378790613c5d565b90600052602060002090601f0160209004810192826137a957600085556137ef565b82601f106137c257805160ff19168380011785556137ef565b828001600101855582156137ef579182015b828111156137ef5782518255916020019190600101906137d4565b506137fb9291506137ff565b5090565b5b808211156137fb5760008155600101613800565b60006020828403121561382657600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b83811015613871578181015183820152602001613859565b838111156110de5750506000910152565b6000815180845261389a816020860160208601613856565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e6020830184613882565b73ffffffffffffffffffffffffffffffffffffffff8116811461224757600080fd5b6000806040838503121561391457600080fd5b823561391f816138df565b946020939093013593505050565b60008060006060848603121561394257600080fd5b833561394d816138df565b9250602084013561395d816138df565b929592945050506040919091013590565b60006020828403121561398057600080fd5b813561069e816138df565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a0157613a0161398b565b604052919050565b600067ffffffffffffffff821115613a2357613a2361398b565b5060051b60200190565b60008060408385031215613a4057600080fd5b8235613a4b816138df565b915060208381013567ffffffffffffffff811115613a6857600080fd5b8401601f81018613613a7957600080fd5b8035613a8c613a8782613a09565b6139ba565b81815260059190911b82018301908381019088831115613aab57600080fd5b928401925b82841015613ac957833582529284019290840190613ab0565b80955050505050509250929050565b600060208284031215613aea57600080fd5b813567ffffffffffffffff811115613b0157600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613b2857600080fd5b8335613b33816138df565b9250602084013567ffffffffffffffff80821115613b5057600080fd5b818601915086601f830112613b6457600080fd5b813581811115613b7357600080fd5b876020828501011115613b8557600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613bae57600080fd5b8435613bb9816138df565b935060208501359250604085013567ffffffffffffffff80821115613bdd57600080fd5b818701915087601f830112613bf157600080fd5b813581811115613c0057600080fd5b8860208260051b8501011115613c1557600080fd5b95989497505060200194505050565b60008060408385031215613c3757600080fd5b8235613c42816138df565b91506020830135613c52816138df565b809150509250929050565b600181811c90821680613c7157607f821691505b60208210811415611768577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613ced57613ced613cab565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613d2657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d6557600080fd5b83018035915067ffffffffffffffff821115613d8057600080fd5b602001915036819003821315613d9557600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613d2657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3457600080fd5b830160208101925035905067ffffffffffffffff811115613e5457600080fd5b8060051b3603831315613d9557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613ee457600080fd5b830160208101925035905067ffffffffffffffff811115613f0457600080fd5b803603831315613d9557600080fd5b600060408301613f238384613dff565b604086528281845260608701905060608260051b88010193508260005b83811015613f9b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613f798286613eaf565b613f84888284613e66565b975050506020928301929190910190600101613f40565b5050505050613fad6020840184613dff565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613fe557600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261403182850187613f13565b84810360408681019190915286518083528388019284019060005b818110156140a2578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e09092019160010161404c565b50909a9950505050505050505050565b6000602082840312156140c457600080fd5b815167ffffffffffffffff808211156140dc57600080fd5b818401915084601f8301126140f057600080fd5b8151818111156141025761410261398b565b61413360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016139ba565b915080825285602082850101111561414a57600080fd5b6121af816020840160208601613856565b8035801515811461151d57600080fd5b60006020828403121561417d57600080fd5b61069e8261415b565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126141ba57600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401526141ef8461415b565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261422b57600080fd5b606084810152840161423d8180613eaf565b608060a087015261425361012087018284613e66565b9150506142636020830183613eaf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614298838284613e66565b9250505060408201356142aa816138df565b831660e086015260608201356101008601526142c96040870187614186565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08582030160808601526142ff8184613f13565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060606040830152614344606083018486613e66565b9695505050505050565b60008282101561436057614360613cab565b500390565b600081526000825161437e816001850160208701613856565b9190910160010192915050565b600081518084526020808501945080840160005b838110156143bb5781518752958201959082019060010161439f565b509495945050505050565b600060208083528351818401528084015160a060408501526143eb60c085018261438b565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156144645784878303018452614452828751613882565b95880195938801939150600101614438565b5060608a01519650838982030160808a0152614480818861438b565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156144c6578151855293820193908201906001016144aa565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161458a81600e850160208701613856565b91909101600e019392505050565b828152600082516145b0816020850160208701613856565b919091016020019392505050565b600084516145d0818460208901613856565b820184815283516145e8816020808501908801613856565b0160200195945050505050565b60006020828403121561460757600080fd5b5051919050565b60006020828403121561462057600080fd5b815161069e816138df565b604080825283519082018190526000906020906060840190828701845b8281101561467a57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614648565b50505083810382850152614344818661438b565b600060208083850312156146a157600080fd5b825167ffffffffffffffff8111156146b857600080fd5b8301601f810185136146c957600080fd5b80516146d7613a8782613a09565b81815260059190911b820183019083810190878311156146f657600080fd5b928401925b828410156142ff578351825292840192908401906146fb565b600181815b8085111561476d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561475357614753613cab565b8085161561476057918102915b93841c9390800290614719565b509250929050565b600082614784575060016105cf565b81614791575060006105cf565b81600181146147a757600281146147b1576147cd565b60019150506105cf565b60ff8411156147c2576147c2613cab565b50506001821b6105cf565b5060208310610133831016604e8410600b84101617156147f0575081810a6105cf565b6147fa8383614714565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561482c5761482c613cab565b029392505050565b600061069e8383614775565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006134d0604083018461438b565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610d9c606083018461438b565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156148dc576148dc613cab565b500290565b600082614917577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff84168361477556fea26469706673582212205d92d2ff6027c75bd5d5bd6649dd86bdd6ab4dab7ab584f5989fd4865e81be9264736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b50604051620049603803806200496083398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516148be620000a260003960006109f201526000610a1901526148be6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461376c565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b6040516101909190613824565b6101846101bc366004613859565b610667565b6035545b604051908152602001610190565b6101846101e1366004613885565b61067f565b60405160128152602001610190565b610184610203366004613859565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b3660046138c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613985565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613a30565b610700565b005b6101846102c5366004613859565b610c12565b6101846102d8366004613859565b610cee565b6102b56102eb366004613a6b565b610cfc565b6101c56102fe366004613af0565b610e4f565b6101c5610311366004613b7c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f3660046138c6565b610e88565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526121a260e082018190526122966101008301526123226101208301526124436101408301526101608201526124ec6101808201526125f46101a08201526126c86101c08201526128c56101e08201526128d06102008201526128db6102208201526128e66102408201526128f161026082015261292561028082015261298b6102a08201526129f16102c0820152612a256102e0820152612a59610300820152612a8e610320820152612ae9610340820152612b3f610360820152612b68610380820152612bbf6103a0820152612bec6103c0820152612c436103e0820152612cae610400820152612d0b610420820152612d49610440820152612d82610460820152612db6610480820152612de86104a0820152612e1a6104c0820152612e4c6104e0820152612e80610500820152612ed2610520820152612f0b610540820152612fbd6105608201526130ea6105808201526131466105a08201526132006105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613bb5565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613bb5565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610f3d565b5060019392505050565b60003361068d8582856110f0565b6106988585856111c7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613c32565b610f3d565b6060603780546105e490613bb5565b600054610100900460ff16158080156107205750600054600160ff909116105b8061073a5750303b15801561073a575060005460ff166001145b6107cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561082957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108cd6108396020840184613c4a565b6108439080613c88565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610885925050506020850185613c4a565b610893906020810190613c88565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061147a92505050565b6109046108dd6020840184613c4a565b6108ee9060608101906040016138c6565b6108fb6020850185613c4a565b6060013561151b565b6109446040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6109a56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161096557905050905081816000815181106109ce576109ce613cf4565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f0000000000000000000000000000000000000000000000000000000000000000610a456040890189613d23565b856040518463ffffffff1660e01b8152600401610a6493929190613f59565b6000604051808303816000875af1158015610a83573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ac9919081019061400a565b9050610ad48161163b565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b2660208601866140c8565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ba09033908890614120565b60405180910390a15050508015610c0e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107c2565b610ce38286868403610f3d565b506001949350505050565b6000336106758185856111c7565b60655474010000000000000000000000000000000000000000900460ff16610d9d573373ffffffffffffffffffffffffffffffffffffffff841614610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016107c2565b6000610da884610e88565b9050610db4848261151b565b610de27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008426116c6565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610e41903390879087908790614267565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610e7f908561176c565b95945050505050565b6065546000908190610eb890610eb39073ffffffffffffffffffffffffffffffffffffffff16611821565b61184f565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610f07828460006119bb565b5060208301518351610f1b906001906142ab565b81518110610f2b57610f2b613cf4565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8216611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111c157818110156111b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c2565b6111c18484848403610f3d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611407908490613c32565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146d91815260200190565b60405180910390a36111c1565b600054610100900460ff16611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b610c0e8282611c94565b73ffffffffffffffffffffffffffffffffffffffff8216611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107c2565b80603560008282546115aa9190613c32565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906115e4908490613c32565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116668360405160200161165291906142c2565b604051602081830303815290604052611d52565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166116c0576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000826008811115611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b6000855b858110156117605763ffffffff6020820290811b199890981685891b17979150600101611738565b50959695505050505050565b60008160088111156117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b826117e8576000915061181a565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d7e565b6118816040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118b36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156118e7576118e76138e3565b604051908082528060200260200182016040528015611910578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611947576119476138e3565b604051908082528060200260200182016040528015611970578160200160208202803683370190505b5090506020870151602002604001870160005b848110156119aa578160208202602001840152815160200182019150600181019050611983565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c77576003890198508886015180601f1a975061ffff8160081c169850506006881015611bef5787611a3e57866020028401518252602082019150611c02565b6001881415611a5b57602087028301518252602082019150611c02565b6002881415611ae8578c518760200210611ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107c2565b866020026020018d01518252602082019150611c02565b6003881415611b30576000611b1e6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611c02565b6004881415611b4c57611b458d8d848a611e66565b9150611c02565b606087611b7a578c604051602001611b649190614323565b6040516020818303038152906040529050611bd9565b6001881415611b9357611b8c8d611fd3565b9050611bd9565b6002881415611baf576020808e0151604051611b6492016143f9565b6003881415611bd9578c516040805160208101929092520160405160208183030381529060405290505b805115611be957611be981612110565b50611c02565b87611bfe888463ffffffff8416565b9250505b60208c0151518c511115611c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107c2565b6119f9565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b8151611d3e9060369060208501906136d3565b508051611c8f9060379060208401906136d3565b6060815182604051602001611d6892919061445e565b6040516020818303038152906040529050919050565b6060833b80611d9d57505060408051602081019091526000815261069e565b80841115611dbb57505060408051602081019091526000815261069e565b83831015611e06576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107c2565b8383038482036000828210611e1b5782611e1d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611ea557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ef0565b8260011415611ec957506fffffffffffffffffffffffffffffffff90506080611ef0565b8260021415611ee5575067ffffffffffffffff90506040611ef0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611f1357611f136138e3565b604051908082528060200260200182016040528015611f3c578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f63578151815260209182019101611f4b565b505060608b015160808c015160209081029091010160005b610100811015611fc15760208502830182845b82811015611faa578051841c8a16825260209182019101611f8e565b505050611fb88e8e8b6119bb565b9b508501611f7b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161201f91906143f9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261205b92916020016144f5565b604051602081830303815290604052905060005b85604001515181101561210757818660400151828151811061209357612093613cf4565b60200260200101515160001b876040015183815181106120b5576120b5613cf4565b60200260200101516040516020016120cf9392919061451b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161206f565b50949350505050565b61219f816040516024016121249190613824565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261327c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122899190614552565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123169190614552565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124359190614552565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612248565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d1919061456b565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123f4565b60008060008467ffffffffffffffff8111156126e6576126e66138e3565b60405190808252806020026020018201604052801561270f578160200160208202803683370190505b50905060008567ffffffffffffffff81111561272d5761272d6138e3565b604051908082528060200260200182016040528015612756578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156127ab578251815260209283019201612793565b5050602088028101602084015b818310156127d05782518152602092830192016127b8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061282a9087908790600401614588565b600060405180830381865afa158015612847573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261288d91908101906145eb565b9050846020820160208a0281015b808210156128b657815183526020928301929091019061289b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761329d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361228982612985858a61329d565b90613317565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612289826129eb858a61329d565b90613336565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761334b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123168287613396565b6000602083028203805b83811015612a835780518015612a7a578252612a83565b50602001612a63565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a83578051612b605760008252612a83565b602001612b49565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c8157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612c9983826133f4565b9250612c53565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612d048382613430565b9250612cbe565b6020828102820380516000928201835b8582108015612d2a5750826000105b15612ca057508051602090910190612d42838261345f565b9250612d1b565b600060208302820380516000602083015b85811015612ca05780518301915082821015612d7557600080fd5b9091508190602001612d5a565b600060208302820380516000602083015b85811015612ca0578051915081612da957600080fd5b9181900491602001612d93565b6020828102820380516000928201835b85821015612ca057508051602090910190612de18184614791565b9250612dc6565b6020828102820380516000928201835b85821015612ca05750805182811115612e0f578092505b602082019150612df8565b6020828102820380516000928201835b85821015612ca05750805182811015612e41578092505b602082019150612e2a565b600060208302820380516000602083015b85811015612ca0578051915081612e7357600080fd5b9181900691602001612e5d565b60006020830282038051600080602084015b86811015612ec3578315612ebb578051925082840291508284830414612eb757600080fd5b8193505b602001612e92565b50505081526020019392505050565b600060208302820380516000602083015b85811015612ca05780518303915082821115612efe57600080fd5b9091508190602001612ee3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123f4908690869060040161479d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613096908790879087906004016147cc565b602060405180830381865afa1580156130b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d79190614552565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122898383613475565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613174576131746138e3565b60405190808252806020026020018201604052801561319d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131d9578151816020018601526020820191506020810190506131b7565b505051905060006131ec838389896134d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561326d858585856116c6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156132b257839150506105cf565b82601211156132de575060128290036132cc81600a614791565b6132d69085614801565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161330d81600a614791565b6132d6908561483e565b60008161332c670de0b6b3a764000085614801565b61069e919061483e565b6000670de0b6b3a764000061332c8385614801565b600081810b61335b5750816105cf565b60008260000b13156133835761337282600a614879565b61337c9084614801565b90506105cf565b60ff60008390031661330d81600a614791565b60008060128314156133ab57839150506105cf565b82601211156133c55750601282900361330d81600a614791565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016132cc81600a614791565b60008282018381106134065780613428565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261343f575060006105cf565b828202828482816134525761345261442f565b0414156134065780613428565b600081831161346f57600061069e565b50900390565b60008060015b600881116134cc57600061348f868361176c565b9050600061349d868461176c565b905060006134ab838361345f565b90506134bb856001860383613624565b9450506001909201915061347b9050565b509392505050565b835160009081908190819060015b600881116136165760009250828761351b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61351f565b5060005b60005b838110156135d45761354d8c828151811061353f5761353f613cf4565b60200260200101518461176c565b95508a861161359f578861356c5761356586836136ad565b9150613596565b600189141561357f5761356586836136c3565b60028914801561358d575084155b15613596578591505b600194506135cc565b896135cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506135d4565b600101613522565b50836135fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61360b866001840383613624565b9550506001016134e2565b509298975050505050505050565b6000826008811115613692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b505063ffffffff602090920291821b199290921691901b1790565b60008183106136bc578161069e565b5090919050565b6000818310156136bc578161069e565b8280546136df90613bb5565b90600052602060002090601f0160209004810192826137015760008555613747565b82601f1061371a57805160ff1916838001178555613747565b82800160010185558215613747579182015b8281111561374757825182559160200191906001019061372c565b50613753929150613757565b5090565b5b808211156137535760008155600101613758565b60006020828403121561377e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b838110156137c95781810151838201526020016137b1565b838111156111c15750506000910152565b600081518084526137f28160208601602086016137ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e60208301846137da565b73ffffffffffffffffffffffffffffffffffffffff8116811461219f57600080fd5b6000806040838503121561386c57600080fd5b823561387781613837565b946020939093013593505050565b60008060006060848603121561389a57600080fd5b83356138a581613837565b925060208401356138b581613837565b929592945050506040919091013590565b6000602082840312156138d857600080fd5b813561069e81613837565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613959576139596138e3565b604052919050565b600067ffffffffffffffff82111561397b5761397b6138e3565b5060051b60200190565b6000806040838503121561399857600080fd5b82356139a381613837565b915060208381013567ffffffffffffffff8111156139c057600080fd5b8401601f810186136139d157600080fd5b80356139e46139df82613961565b613912565b81815260059190911b82018301908381019088831115613a0357600080fd5b928401925b82841015613a2157833582529284019290840190613a08565b80955050505050509250929050565b600060208284031215613a4257600080fd5b813567ffffffffffffffff811115613a5957600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613a8057600080fd5b8335613a8b81613837565b9250602084013567ffffffffffffffff80821115613aa857600080fd5b818601915086601f830112613abc57600080fd5b813581811115613acb57600080fd5b876020828501011115613add57600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613b0657600080fd5b8435613b1181613837565b935060208501359250604085013567ffffffffffffffff80821115613b3557600080fd5b818701915087601f830112613b4957600080fd5b813581811115613b5857600080fd5b8860208260051b8501011115613b6d57600080fd5b95989497505060200194505050565b60008060408385031215613b8f57600080fd5b8235613b9a81613837565b91506020830135613baa81613837565b809150509250929050565b600181811c90821680613bc957607f821691505b602082108114156116c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613c4557613c45613c03565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613c7e57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cbd57600080fd5b83018035915067ffffffffffffffff821115613cd857600080fd5b602001915036819003821315613ced57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c7e57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d8c57600080fd5b830160208101925035905067ffffffffffffffff811115613dac57600080fd5b8060051b3603831315613ced57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3c57600080fd5b830160208101925035905067ffffffffffffffff811115613e5c57600080fd5b803603831315613ced57600080fd5b600060408301613e7b8384613d57565b604086528281845260608701905060608260051b88010193508260005b83811015613ef3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613ed18286613e07565b613edc888284613dbe565b975050506020928301929190910190600101613e98565b5050505050613f056020840184613d57565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613f3d57600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152613f8982850187613e6b565b84810360408681019190915286518083528388019284019060005b81811015613ffa578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613fa4565b50909a9950505050505050505050565b60006020828403121561401c57600080fd5b815167ffffffffffffffff8082111561403457600080fd5b818401915084601f83011261404857600080fd5b81518181111561405a5761405a6138e3565b61408b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613912565b91508082528560208285010111156140a257600080fd5b6121078160208401602086016137ae565b803580151581146140c357600080fd5b919050565b6000602082840312156140da57600080fd5b61069e826140b3565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261411757600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261414c846140b3565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261418857600080fd5b606084810152840161419a8180613e07565b608060a08701526141b061012087018284613dbe565b9150506141c06020830183613e07565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c08801526141f5838284613dbe565b92505050604082013561420781613837565b831660e0860152606082013561010086015261422660408701876140e3565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261425c8184613e6b565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526142a1606083018486613dbe565b9695505050505050565b6000828210156142bd576142bd613c03565b500390565b60008152600082516142db8160018501602087016137ae565b9190910160010192915050565b600081518084526020808501945080840160005b83811015614318578151875295820195908201906001016142fc565b509495945050505050565b600060208083528351818401528084015160a0604085015261434860c08501826142e8565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156143c157848783030184526143af8287516137da565b95880195938801939150600101614395565b5060608a01519650838982030160808a01526143dd81886142e8565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561442357815185529382019390820190600101614407565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516144e781600e8501602087016137ae565b91909101600e019392505050565b8281526000825161450d8160208501602087016137ae565b919091016020019392505050565b6000845161452d8184602089016137ae565b820184815283516145458160208085019088016137ae565b0160200195945050505050565b60006020828403121561456457600080fd5b5051919050565b60006020828403121561457d57600080fd5b815161069e81613837565b604080825283519082018190526000906020906060840190828701845b828110156145d757815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016145a5565b505050838103828501526142a181866142e8565b600060208083850312156145fe57600080fd5b825167ffffffffffffffff81111561461557600080fd5b8301601f8101851361462657600080fd5b80516146346139df82613961565b81815260059190911b8201830190838101908783111561465357600080fd5b928401925b8284101561425c57835182529284019290840190614658565b600181815b808511156146ca57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146b0576146b0613c03565b808516156146bd57918102915b93841c9390800290614676565b509250929050565b6000826146e1575060016105cf565b816146ee575060006105cf565b8160018114614704576002811461470e5761472a565b60019150506105cf565b60ff84111561471f5761471f613c03565b50506001821b6105cf565b5060208310610133831016604e8410600b841016171561474d575081810a6105cf565b6147578383614671565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561478957614789613c03565b029392505050565b600061069e83836146d2565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061342860408301846142e8565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610e7f60608301846142e8565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483957614839613c03565b500290565b600082614874577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff8416836146d256fea26469706673582212207f0b2bf5cb9b12afbbcca4aba6e6c64ca893cbeaad2a198d58555ed1eb02dffd64736f6c634300080a0033"; type EmissionsERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/FnPtrsTest__factory.ts b/src/typechain/factories/FnPtrsTest__factory.ts index 2863dae..9a87e54 100644 --- a/src/typechain/factories/FnPtrsTest__factory.ts +++ b/src/typechain/factories/FnPtrsTest__factory.ts @@ -88,7 +88,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405234801561001057600080fd5b506040516109c73803806109c783398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161092e6100996000396000610180015260006101bc015261092e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b61005961005436600461036d565b6100a7565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b606060405161008f91906103df565b6100e76040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6101486040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161010857905050905081816000815181106101715761017161045f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b81526004016101fb9392919061060d565b6000604051808303816000875af115801561021a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102609190810190610770565b905061026b816102b6565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806102e1836040516020016102cd919061083b565b604051602081830303815290604052610341565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661033b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610357929190610861565b6040516020818303038152906040529050919050565b60006020828403121561037f57600080fd5b813567ffffffffffffffff81111561039657600080fd5b8201604081850312156103a857600080fd5b9392505050565b60005b838110156103ca5781810151838201526020016103b2565b838111156103d9576000848401525b50505050565b60208152600082518060208401526103fe8160408501602087016103af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126104c357600080fd5b830160208101925035905067ffffffffffffffff8111156104e357600080fd5b8060051b36038313156104f557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561057757600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561060257815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016105a8565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161063e868761048e565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015610708577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126106bf57600080fd5b8501803567ffffffffffffffff8111156106d857600080fd5b8036038713156106e757600080fd5b6106f488828b85016104fc565b97505050918601919086019060010161065e565b50505050506107198287018761048e565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152610750828483610545565b9250505082810360408401526107668185610594565b9695505050505050565b60006020828403121561078257600080fd5b815167ffffffffffffffff8082111561079a57600080fd5b818401915084601f8301126107ae57600080fd5b8151818111156107c0576107c0610430565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561080657610806610430565b8160405282815287602084870101111561081f57600080fd5b6108308360208301602088016103af565b979650505050505050565b60008152600082516108548160018501602087016103af565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108ea81600e8501602087016103af565b91909101600e01939250505056fea2646970667358221220895ec7ba13971596634c9b6079a86fb1ef13d552d5b06aa5fc4c5fa3a354454064736f6c634300080a0033"; + "0x60c060405234801561001057600080fd5b506040516109c73803806109c783398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161092e6100996000396000610180015260006101bc015261092e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b61005961005436600461036d565b6100a7565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b606060405161008f91906103df565b6100e76040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6101486040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161010857905050905081816000815181106101715761017161045f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b81526004016101fb9392919061060d565b6000604051808303816000875af115801561021a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102609190810190610770565b905061026b816102b6565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806102e1836040516020016102cd919061083b565b604051602081830303815290604052610341565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661033b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610357929190610861565b6040516020818303038152906040529050919050565b60006020828403121561037f57600080fd5b813567ffffffffffffffff81111561039657600080fd5b8201604081850312156103a857600080fd5b9392505050565b60005b838110156103ca5781810151838201526020016103b2565b838111156103d9576000848401525b50505050565b60208152600082518060208401526103fe8160408501602087016103af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126104c357600080fd5b830160208101925035905067ffffffffffffffff8111156104e357600080fd5b8060051b36038313156104f557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561057757600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561060257815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016105a8565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161063e868761048e565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015610708577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126106bf57600080fd5b8501803567ffffffffffffffff8111156106d857600080fd5b8036038713156106e757600080fd5b6106f488828b85016104fc565b97505050918601919086019060010161065e565b50505050506107198287018761048e565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152610750828483610545565b9250505082810360408401526107668185610594565b9695505050505050565b60006020828403121561078257600080fd5b815167ffffffffffffffff8082111561079a57600080fd5b818401915084601f8301126107ae57600080fd5b8151818111156107c0576107c0610430565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561080657610806610430565b8160405282815287602084870101111561081f57600080fd5b6108308360208301602088016103af565b979650505050505050565b60008152600082516108548160018501602087016103af565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108ea81600e8501602087016103af565b91909101600e01939250505056fea2646970667358221220fc3c3eb125b8ecf7ece2e10dcb979b290c58e23086257f40d4983cdf24e230ed64736f6c634300080a0033"; type FnPtrsTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/IERC165Upgradeable__factory.ts b/src/typechain/factories/IERC165Upgradeable__factory.ts new file mode 100644 index 0000000..9eed671 --- /dev/null +++ b/src/typechain/factories/IERC165Upgradeable__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC165Upgradeable, + IERC165UpgradeableInterface, +} from "../IERC165Upgradeable"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class IERC165Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC165UpgradeableInterface { + return new utils.Interface(_abi) as IERC165UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC165Upgradeable { + return new Contract(address, _abi, signerOrProvider) as IERC165Upgradeable; + } +} diff --git a/src/typechain/factories/IERC20Permit__factory.ts b/src/typechain/factories/IERC20Permit__factory.ts new file mode 100644 index 0000000..ac8c447 --- /dev/null +++ b/src/typechain/factories/IERC20Permit__factory.ts @@ -0,0 +1,98 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { IERC20Permit, IERC20PermitInterface } from "../IERC20Permit"; + +const _abi = [ + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + 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: "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", + }, +]; + +export class IERC20Permit__factory { + static readonly abi = _abi; + static createInterface(): IERC20PermitInterface { + return new utils.Interface(_abi) as IERC20PermitInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC20Permit { + return new Contract(address, _abi, signerOrProvider) as IERC20Permit; + } +} diff --git a/src/typechain/factories/IERC2981Upgradeable__factory.ts b/src/typechain/factories/IERC2981Upgradeable__factory.ts new file mode 100644 index 0000000..95e46af --- /dev/null +++ b/src/typechain/factories/IERC2981Upgradeable__factory.ts @@ -0,0 +1,74 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC2981Upgradeable, + IERC2981UpgradeableInterface, +} from "../IERC2981Upgradeable"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "uint256", + name: "salePrice", + type: "uint256", + }, + ], + name: "royaltyInfo", + outputs: [ + { + internalType: "address", + name: "receiver", + type: "address", + }, + { + internalType: "uint256", + name: "royaltyAmount", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +export class IERC2981Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC2981UpgradeableInterface { + return new utils.Interface(_abi) as IERC2981UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC2981Upgradeable { + return new Contract(address, _abi, signerOrProvider) as IERC2981Upgradeable; + } +} diff --git a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts b/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts new file mode 100644 index 0000000..41562db --- /dev/null +++ b/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts @@ -0,0 +1,360 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC721MetadataUpgradeable, + IERC721MetadataUpgradeableInterface, +} from "../IERC721MetadataUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + 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: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + 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: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "tokenURI", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC721MetadataUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC721MetadataUpgradeableInterface { + return new utils.Interface(_abi) as IERC721MetadataUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721MetadataUpgradeable { + return new Contract( + address, + _abi, + signerOrProvider + ) as IERC721MetadataUpgradeable; + } +} diff --git a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts new file mode 100644 index 0000000..4d54c21 --- /dev/null +++ b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts @@ -0,0 +1,64 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC721ReceiverUpgradeable, + IERC721ReceiverUpgradeableInterface, +} from "../IERC721ReceiverUpgradeable"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "onERC721Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC721ReceiverUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC721ReceiverUpgradeableInterface { + return new utils.Interface(_abi) as IERC721ReceiverUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721ReceiverUpgradeable { + return new Contract( + address, + _abi, + signerOrProvider + ) as IERC721ReceiverUpgradeable; + } +} diff --git a/src/typechain/factories/IERC721Upgradeable__factory.ts b/src/typechain/factories/IERC721Upgradeable__factory.ts new file mode 100644 index 0000000..6da8e4a --- /dev/null +++ b/src/typechain/factories/IERC721Upgradeable__factory.ts @@ -0,0 +1,311 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + IERC721Upgradeable, + IERC721UpgradeableInterface, +} from "../IERC721Upgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "approved", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + 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: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "approve", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "balance", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "getApproved", + outputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "ownerOf", + outputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + 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: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "tokenId", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class IERC721Upgradeable__factory { + static readonly abi = _abi; + static createInterface(): IERC721UpgradeableInterface { + return new utils.Interface(_abi) as IERC721UpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): IERC721Upgradeable { + return new Contract(address, _abi, signerOrProvider) as IERC721Upgradeable; + } +} diff --git a/src/typechain/factories/OrderBookStateBuilder__factory.ts b/src/typechain/factories/OrderBookStateBuilder__factory.ts index 2b8eb46..cbe05c5 100644 --- a/src/typechain/factories/OrderBookStateBuilder__factory.ts +++ b/src/typechain/factories/OrderBookStateBuilder__factory.ts @@ -233,7 +233,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c7a1760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a0526200070d565b6060620000746200019e60201b62000d051760201c565b620000b4604080516060810182526001600160401b036200055d602090811b620010461782168184015262000557901b6200104017168183015290815290565b604051602001620000c792919062000692565b604051602081830303815290604052905090565b6000806200011583604051602001620000f59190620006b3565b6040516020818303038152906040526200038d60201b62000e931760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000167620003bb60201b62000ebf1760201c565b604080516060810182526001600160401b036200055d602090811b62001046179190911690820181905281830152908152620000b4565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000557831b6200104017811660e083018190526200055d841b62001046178216610100840181905262000563851b6200104c17831661012085018190526101408501839052610160850183905261018085018390526101a0850181905262000569861b620010521784166101c0860152620005b6861b620010c71784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e08501829052620005bc861b620010cd17841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e084018190526105008401819052610520840152620005ff841b6200113c17821661054084015262000605841b6200114217821661056084015261058083018190526200060b90931b6200114817166105a08201526105c08082019290925290815290565b6060815182604051602001620003a5929190620006cf565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200055d831b6200104617811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a08301819052620005bc90931b620010cd17166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005ac5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005fb5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620005a3565b5090565b60020190565b60030190565b6000601f8216806200064e5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620005a3565b92915050565b6000815160005b818110156200067757602081850181015186830152016200065b565b8181111562000687576000828601525b509290920192915050565b6000620006ab620006a4838662000654565b8462000654565b949350505050565b600081526000620006c8600183018462000654565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620006ab600e83018462000654565b60805160a051611f72620007336000396000610723015260006106f60152611f726000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611a47565b6100cd565b60405161008c9190611b65565b60405180910390f35b61007f6104c8565b6100b06100ab366004611bb6565b610682565b005b61007f6100c0366004611c06565b610986565b61007f610ad7565b606060006100da856111bb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c6a565b60200151905060008060005b86518110156102f0578387828151811061017457610174611cb9565b602002602001015160a0018181525050600285518161019557610195611ce8565b048782815181106101a8576101a8611cb9565b602002602001015160c00181815250506101db888883815181106101ce576101ce611cb9565b6020026020010151610682565b61020b8782815181106101f0576101f0611cb9565b602002602001015160800151846112f990919063ffffffff16565b925061023d87828151811061022257610222611cb9565b602002602001015160600151836112f990919063ffffffff16565b915086818151811061025157610251611cb9565b60200260200101516020015187828151811061026f5761026f611cb9565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff81111561031357610313611716565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611cb9565b602002602001015182828151811061037f5761037f611cb9565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b1611716565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611cb9565b6020026020010151610986565b82828151811061042d5761042d611cb9565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f611716565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250611310565b96505050505050505b9392505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104660e08401819052610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526110cd6101c08501526101e08401819052610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840181905261038084018190526103a084018190526103c084018190526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084018190526105408401819052610560840181905261058084018190526105a084018190526105c080850182905284528451808401865291820181905281850152928352915b60405160200161066e929190611d17565b604051602081830303815290604052905090565b805182515181106106ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b600061071a7f000000000000000000000000000000000000000000000000000000000000000061144d565b905060006107477f000000000000000000000000000000000000000000000000000000000000000061144d565b905060008080600080602088026020018a5101519050805193505b8385101561090b576002850194508481015180601e1a935080601f1a925050600683101561082657826107b65789602001515189608001510182106107a657600080fd5b604089018051600101905261080d565b60018314156107cf57886040015182106107a657600080fd5b60028314156107e857604089018051600101905261080d565b600383141561080d578860a00151821061080157600080fd5b60408901805160010190525b6004831415610821576108218a8a8461147b565b6108ee565b8860c001518310610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108b28463ffffffff8416565b60408c018051919091039081905260608c01516108ce916112f9565b60608c01526108e08463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610901916112f9565b60608a0152610762565b606089015160ff101561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a1757610a17611716565b6040519080825280601f01601f191660200182016040528015610a41576020820181803683370190505b509050600660018381018160005b82821015610ac95781890151601f1a6002830615610aab5785811015610a7d57600182019181908801602101535b858110610aab57600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610abc5780826020018801535b5060019182019101610a4f565b509398975050505050505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104060e08401819052611046610100850181905261104c61012086018190526101408601839052610160860183905261018086018390526101a086018190526110526101c08701526110c76101e0870181905261020087018190526102208701819052610240870152610260860182905261028086018390526102a086018390526102c086018290526102e086018290526110cd61030087018190526103208701919091526103408601839052610360860181905261038086018390526103a086018290526103c086018390526103e08601819052610400860181905261042086018190526104408601819052610460860181905261048086018190526104a086018190526104c086018190526104e08601819052610500860181905261052086015261113c61054086015261114261056086015261058085018290526111486105a08601526105c080860183905285528551808501875292830152818501529283529161065d565b600080610ca583604051602001610c919190611d46565b604051602081830303815290604052610e93565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cff576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104060e08201819052611046610100830181905261104c61012084018190526101408401839052610160840183905261018084018390526101a084018190526110526101c08501526110c76101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e084018290526110cd61030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083015261113c61054083015261114261056083015261058082018190526111486105a08301526105c082810191909152815290565b6060815182604051602001610ea9929190611d6c565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104660e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110cd6101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b60008082116110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b50600090565b6000808211611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b60020190565b60030190565b6000601f8216806111b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926111ef911661144d565b90508051600014156111b55761129c6112978473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112929190810190611e03565b61151a565b610c7a565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c1836111bb565b60008183101561130957816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161135c9190611e7a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113989291602001611eb0565b604051602081830303815290604052905060005b8560400151518110156114445781866040015182815181106113d0576113d0611cb9565b60200260200101515160001b876040015183815181106113f2576113f2611cb9565b602002602001015160405160200161140c93929190611ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016113ac565b50949350505050565b60606111b58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611624565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114c591906112f9565b606084015260808301516114d990826112f9565b60808401528251600783168085526001600385811c161b919060005b8381101561150f576115078888610682565b6001016114f5565b505090935250505050565b6060602082518161152d5761152d611ce8565b0615611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b600060108351816115a8576115a8611ce8565b0467ffffffffffffffff8111156115c1576115c1611716565b6040519080825280601f01601f1916602001820160405280156115eb576020820181803683370190505b509050600060025b845182101561161b5780830180516020848801810151909117909152909101906002016115f3565b50909392505050565b6060833b806116435750506040805160208101909152600081526104c1565b808411156116615750506040805160208101909152600081526104c1565b838310156116ac576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b83830384820360008282106116c157826116c3565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611714611f0d565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176857611768611716565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117b5576117b5611716565b604052919050565b600067ffffffffffffffff8211156117d7576117d7611716565b5060051b60200190565b600067ffffffffffffffff8211156117fb576117fb611716565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261183857600080fd5b813561184b611846826117e1565b61176e565b81815284602083860101111561186057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261188e57600080fd5b8135602061189e611846836117bd565b82815260059290921b840181019181810190868411156118bd57600080fd5b8286015b848110156118d857803583529183019183016118c1565b509695505050505050565b6000604082840312156118f557600080fd5b6118fd611745565b9050813567ffffffffffffffff8082111561191757600080fd5b818401915084601f83011261192b57600080fd5b8135602061193b611846836117bd565b82815260059290921b8401810191818101908884111561195a57600080fd5b8286015b84811015611992578035868111156119765760008081fd5b6119848b86838b0101611827565b84525091830191830161195e565b50865250858101359350828411156119a957600080fd5b6119b58785880161187d565b818601525050505092915050565b600060e082840312156119d557600080fd5b60405160e0810181811067ffffffffffffffff821117156119f8576119f8611716565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a5c57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a8057600080fd5b925060208481013567ffffffffffffffff80821115611a9e57600080fd5b611aaa888389016118e3565b94506040870135915080821115611ac057600080fd5b508501601f81018713611ad257600080fd5b8035611ae0611846826117bd565b81815260e0918202830184019184820191908a841115611aff57600080fd5b938501935b83851015611b2557611b168b866119c3565b83529384019391850191611b04565b5080955050505050509250925092565b60005b83811015611b50578181015183820152602001611b38565b83811115611b5f576000848401525b50505050565b6020815260008251806020840152611b84816040850160208701611b35565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611bca57600080fd5b823567ffffffffffffffff811115611be157600080fd5b611bed858286016118e3565b925050611bfd84602085016119c3565b90509250929050565b60008060408385031215611c1957600080fd5b823567ffffffffffffffff80821115611c3157600080fd5b611c3d86838701611827565b93506020850135915080821115611c5357600080fd5b50611c6085828601611827565b9150509250929050565b600060408284031215611c7c57600080fd5b6040516040810181811067ffffffffffffffff82111715611c9f57611c9f611716565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611d29818460208801611b35565b835190830190611d3d818360208801611b35565b01949350505050565b6000815260008251611d5f816001850160208701611b35565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611df581600e850160208701611b35565b91909101600e019392505050565b600060208284031215611e1557600080fd5b815167ffffffffffffffff811115611e2c57600080fd5b8201601f81018413611e3d57600080fd5b8051611e4b611846826117e1565b818152856020838501011115611e6057600080fd5b611e71826020830160208601611b35565b95945050505050565b815160009082906020808601845b83811015611ea457815185529382019390820190600101611e88565b50929695505050505050565b82815260008251611ec8816020850160208701611b35565b919091016020019392505050565b60008451611ee8818460208901611b35565b82018481528351611f00816020808501908801611b35565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220cb961504815b449788a0b158592231794a46cfeba7d8afbf57aa34a436f23aa864736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c7a1760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a0526200070d565b6060620000746200019e60201b62000d051760201c565b620000b4604080516060810182526001600160401b036200055d602090811b620010461782168184015262000557901b6200104017168183015290815290565b604051602001620000c792919062000692565b604051602081830303815290604052905090565b6000806200011583604051602001620000f59190620006b3565b6040516020818303038152906040526200038d60201b62000e931760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000167620003bb60201b62000ebf1760201c565b604080516060810182526001600160401b036200055d602090811b62001046179190911690820181905281830152908152620000b4565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000557831b6200104017811660e083018190526200055d841b62001046178216610100840181905262000563851b6200104c17831661012085018190526101408501839052610160850183905261018085018390526101a0850181905262000569861b620010521784166101c0860152620005b6861b620010c71784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e08501829052620005bc861b620010cd17841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e084018190526105008401819052610520840152620005ff841b6200113c17821661054084015262000605841b6200114217821661056084015261058083018190526200060b90931b6200114817166105a08201526105c08082019290925290815290565b6060815182604051602001620003a5929190620006cf565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200055d831b6200104617811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a08301819052620005bc90931b620010cd17166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005ac5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005fb5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620005a3565b5090565b60020190565b60030190565b6000601f8216806200064e5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620005a3565b92915050565b6000815160005b818110156200067757602081850181015186830152016200065b565b8181111562000687576000828601525b509290920192915050565b6000620006ab620006a4838662000654565b8462000654565b949350505050565b600081526000620006c8600183018462000654565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620006ab600e83018462000654565b60805160a051611f72620007336000396000610723015260006106f60152611f726000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611a47565b6100cd565b60405161008c9190611b65565b60405180910390f35b61007f6104c8565b6100b06100ab366004611bb6565b610682565b005b61007f6100c0366004611c06565b610986565b61007f610ad7565b606060006100da856111bb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c6a565b60200151905060008060005b86518110156102f0578387828151811061017457610174611cb9565b602002602001015160a0018181525050600285518161019557610195611ce8565b048782815181106101a8576101a8611cb9565b602002602001015160c00181815250506101db888883815181106101ce576101ce611cb9565b6020026020010151610682565b61020b8782815181106101f0576101f0611cb9565b602002602001015160800151846112f990919063ffffffff16565b925061023d87828151811061022257610222611cb9565b602002602001015160600151836112f990919063ffffffff16565b915086818151811061025157610251611cb9565b60200260200101516020015187828151811061026f5761026f611cb9565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff81111561031357610313611716565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611cb9565b602002602001015182828151811061037f5761037f611cb9565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b1611716565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611cb9565b6020026020010151610986565b82828151811061042d5761042d611cb9565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f611716565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250611310565b96505050505050505b9392505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104660e08401819052610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526110cd6101c08501526101e08401819052610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840181905261038084018190526103a084018190526103c084018190526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084018190526105408401819052610560840181905261058084018190526105a084018190526105c080850182905284528451808401865291820181905281850152928352915b60405160200161066e929190611d17565b604051602081830303815290604052905090565b805182515181106106ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b600061071a7f000000000000000000000000000000000000000000000000000000000000000061144d565b905060006107477f000000000000000000000000000000000000000000000000000000000000000061144d565b905060008080600080602088026020018a5101519050805193505b8385101561090b576002850194508481015180601e1a935080601f1a925050600683101561082657826107b65789602001515189608001510182106107a657600080fd5b604089018051600101905261080d565b60018314156107cf57886040015182106107a657600080fd5b60028314156107e857604089018051600101905261080d565b600383141561080d578860a00151821061080157600080fd5b60408901805160010190525b6004831415610821576108218a8a8461147b565b6108ee565b8860c001518310610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108b28463ffffffff8416565b60408c018051919091039081905260608c01516108ce916112f9565b60608c01526108e08463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610901916112f9565b60608a0152610762565b606089015160ff101561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a1757610a17611716565b6040519080825280601f01601f191660200182016040528015610a41576020820181803683370190505b509050600660018381018160005b82821015610ac95781890151601f1a6002830615610aab5785811015610a7d57600182019181908801602101535b858110610aab57600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610abc5780826020018801535b5060019182019101610a4f565b509398975050505050505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104060e08401819052611046610100850181905261104c61012086018190526101408601839052610160860183905261018086018390526101a086018190526110526101c08701526110c76101e0870181905261020087018190526102208701819052610240870152610260860182905261028086018390526102a086018390526102c086018290526102e086018290526110cd61030087018190526103208701919091526103408601839052610360860181905261038086018390526103a086018290526103c086018390526103e08601819052610400860181905261042086018190526104408601819052610460860181905261048086018190526104a086018190526104c086018190526104e08601819052610500860181905261052086015261113c61054086015261114261056086015261058085018290526111486105a08601526105c080860183905285528551808501875292830152818501529283529161065d565b600080610ca583604051602001610c919190611d46565b604051602081830303815290604052610e93565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cff576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104060e08201819052611046610100830181905261104c61012084018190526101408401839052610160840183905261018084018390526101a084018190526110526101c08501526110c76101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e084018290526110cd61030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083015261113c61054083015261114261056083015261058082018190526111486105a08301526105c082810191909152815290565b6060815182604051602001610ea9929190611d6c565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104660e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110cd6101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b60008082116110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b50600090565b6000808211611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b60020190565b60030190565b6000601f8216806111b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926111ef911661144d565b90508051600014156111b55761129c6112978473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112929190810190611e03565b61151a565b610c7a565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c1836111bb565b60008183101561130957816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161135c9190611e7a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113989291602001611eb0565b604051602081830303815290604052905060005b8560400151518110156114445781866040015182815181106113d0576113d0611cb9565b60200260200101515160001b876040015183815181106113f2576113f2611cb9565b602002602001015160405160200161140c93929190611ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016113ac565b50949350505050565b60606111b58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611624565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114c591906112f9565b606084015260808301516114d990826112f9565b60808401528251600783168085526001600385811c161b919060005b8381101561150f576115078888610682565b6001016114f5565b505090935250505050565b6060602082518161152d5761152d611ce8565b0615611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b600060108351816115a8576115a8611ce8565b0467ffffffffffffffff8111156115c1576115c1611716565b6040519080825280601f01601f1916602001820160405280156115eb576020820181803683370190505b509050600060025b845182101561161b5780830180516020848801810151909117909152909101906002016115f3565b50909392505050565b6060833b806116435750506040805160208101909152600081526104c1565b808411156116615750506040805160208101909152600081526104c1565b838310156116ac576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b83830384820360008282106116c157826116c3565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611714611f0d565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176857611768611716565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117b5576117b5611716565b604052919050565b600067ffffffffffffffff8211156117d7576117d7611716565b5060051b60200190565b600067ffffffffffffffff8211156117fb576117fb611716565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261183857600080fd5b813561184b611846826117e1565b61176e565b81815284602083860101111561186057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261188e57600080fd5b8135602061189e611846836117bd565b82815260059290921b840181019181810190868411156118bd57600080fd5b8286015b848110156118d857803583529183019183016118c1565b509695505050505050565b6000604082840312156118f557600080fd5b6118fd611745565b9050813567ffffffffffffffff8082111561191757600080fd5b818401915084601f83011261192b57600080fd5b8135602061193b611846836117bd565b82815260059290921b8401810191818101908884111561195a57600080fd5b8286015b84811015611992578035868111156119765760008081fd5b6119848b86838b0101611827565b84525091830191830161195e565b50865250858101359350828411156119a957600080fd5b6119b58785880161187d565b818601525050505092915050565b600060e082840312156119d557600080fd5b60405160e0810181811067ffffffffffffffff821117156119f8576119f8611716565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a5c57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a8057600080fd5b925060208481013567ffffffffffffffff80821115611a9e57600080fd5b611aaa888389016118e3565b94506040870135915080821115611ac057600080fd5b508501601f81018713611ad257600080fd5b8035611ae0611846826117bd565b81815260e0918202830184019184820191908a841115611aff57600080fd5b938501935b83851015611b2557611b168b866119c3565b83529384019391850191611b04565b5080955050505050509250925092565b60005b83811015611b50578181015183820152602001611b38565b83811115611b5f576000848401525b50505050565b6020815260008251806020840152611b84816040850160208701611b35565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611bca57600080fd5b823567ffffffffffffffff811115611be157600080fd5b611bed858286016118e3565b925050611bfd84602085016119c3565b90509250929050565b60008060408385031215611c1957600080fd5b823567ffffffffffffffff80821115611c3157600080fd5b611c3d86838701611827565b93506020850135915080821115611c5357600080fd5b50611c6085828601611827565b9150509250929050565b600060408284031215611c7c57600080fd5b6040516040810181811067ffffffffffffffff82111715611c9f57611c9f611716565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611d29818460208801611b35565b835190830190611d3d818360208801611b35565b01949350505050565b6000815260008251611d5f816001850160208701611b35565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611df581600e850160208701611b35565b91909101600e019392505050565b600060208284031215611e1557600080fd5b815167ffffffffffffffff811115611e2c57600080fd5b8201601f81018413611e3d57600080fd5b8051611e4b611846826117e1565b818152856020838501011115611e6057600080fd5b611e71826020830160208601611b35565b95945050505050565b815160009082906020808601845b83811015611ea457815185529382019390820190600101611e88565b50929695505050505050565b82815260008251611ec8816020850160208701611b35565b919091016020019392505050565b60008451611ee8818460208901611b35565b82018481528351611f00816020808501908801611b35565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea26469706673582212205e56aaeb0ed946908554dc54d719549e72d64eeea3b9d227f43ad983ba9ba4ee64736f6c634300080a0033"; type OrderBookStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OrderBook__factory.ts b/src/typechain/factories/OrderBook__factory.ts index 270585e..afad3ab 100644 --- a/src/typechain/factories/OrderBook__factory.ts +++ b/src/typechain/factories/OrderBook__factory.ts @@ -671,7 +671,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162004a3c38038062004a3c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161499a620000a260003960006103b3015260006103d4015261499a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806384e07cdc1161005b57806384e07cdc146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806355958f19146100aa575b600080fd5b610095610090366004613853565b610135565b005b6100956100a53660046138a6565b610258565b6100956100b83660046138c2565b6103ac565b6100956100cb366004613b51565b610475565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b3660046138a6565b610e60565b610128610f5a565b6040516101049190613c65565b6101426020820182613c78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983613c95565b61113f565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b9033908590613d55565b60405180910390a15b5050565b336000908152600160209081526040822090829061027890850185613c78565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf908401358361118e565b90506102cb8183613e46565b336000908152600160209081526040822091906102ea90870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613e95565b60405180910390a16103a7338261038a6020870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1691906111a8565b505050565b60006104017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103fc85613f57565b61127c565b9050600061040e8261113f565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb8906104689033908590614108565b60405180910390a1505050565b60006104808461113f565b9050600061048d8461113f565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6106e46040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b60405161071f9493929190614137565b60405180910390a16107596040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6107668b60c00151611518565b90506107aa6107a260405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b8260006116d8565b5080602001516001826000015103815181106107c8576107c8614195565b6020026020010151945080602001516002826000015103815181106107ef576107ef614195565b602002602001015192506108068a60c00151611518565b90506108426107a260405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b50806020015160018260000151038151811061086057610860614195565b60200260200101519350806020015160028260000151038151811061088757610887614195565b602002602001015191505061093e600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361118e90919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e015183529052205490925061099290829061118e565b90506109a86109a182856119ac565b839061118e565b85526109be6109b783866119ac565b829061118e565b602086015284511515806109d6575060008560200151115b610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b8451610a4890856119ac565b60408601526020850151610a5c90846119ac565b606086015250508251159150610b549050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b0151835290529081208054909190610ac7908490613e46565b909155505060a086015160011615610aff57805160008481526002602052604081208054909190610af99084906141c4565b90915550505b60a086015160021615610b545780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610b4e9084906141c4565b90915550505b602081015115610c5057602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610bb9908490613e46565b909155505060a085015160011615610bf8578060200151600260008481526020019081526020016000206000828254610bf291906141c4565b90915550505b60a085015160021615610c505760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610c4a9084906141c4565b90915550505b604081015115610cbb57604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610cb59084906141c4565b90915550505b606081015115610d25576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610d1f9084906141c4565b90915550505b60608101518151600091610d3891613e46565b9050600082604001518360200151610d509190613e46565b90508115610dab5733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610da59084906141c4565b90915550505b8015610e065733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610e009084906141c4565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b33600090815260016020908152604080832090840135929091610e8590850185613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee391906141c4565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a90339084906141dc565b60405180910390a1610f5733306040840135610f396020860186613c78565b73ffffffffffffffffffffffffffffffffffffffff169291906119cb565b50565b604080516105e08101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611f2160e082018190526120156101008301526120a16101208301526121c261014083015261016082015261226b6101808201526123736101a08201526124476101c08201526126446101e082015261264f61020082015261265a6102208201526126656102408201526126706102608201526126a461028082015261270a6102a08201526127706102c08201526127a46102e08201526127d861030082015261280d6103208201526128686103408201526128be6103608201526128e761038082015261293e6103a082015261296b6103c08201526129c26103e0820152612a2d610400820152612a8a610420820152612ac8610440820152612b01610460820152612b35610480820152612b676104a0820152612b996104c0820152612bcb6104e0820152612bff610500820152612c51610520820152612c8a610540820152612d3c610560820152612e69610580820152612ec56105a0820152612f7f6105c080830191909152815260408051606081018252612ffb60208201526130368183015290815260405160200161112b929190614206565b604051602081830303815290604052905090565b6000816040516020016111529190614235565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b600081831061119d578161119f565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a2f565b6112fe6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b61133e6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b61139f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161135f57905050905081816000815181106113c8576113c8614195565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff1681526020018560600151815260200161145f866080015160000151611b3b565b81526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860800151866040518463ffffffff1660e01b81526004016114a5939291906142f9565b6000604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261150a91908101906143ec565b9052925050505b9392505050565b61154a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61157c6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156115b0576115b06138fd565b6040519080825280602002602001820160405280156115d9578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611610576116106138fd565b604051908082528060200260200182016040528015611639578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561167357816020820260200184015281516020018201915060018101905061164c565b505060408501525091949350505050565b606061168e613835565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff16818301526040516116c191839101614463565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611994576003890198508886015180601f1a975061ffff8160081c16985050600688101561190c578761175b5786602002840151825260208201915061191f565b60018814156117785760208702830151825260208201915061191f565b6002881415611805578c5187602002106117ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d0151825260208201915061191f565b600388141561184d57600061183b6040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061191f565b6004881415611869576118628d8d848a611be8565b915061191f565b606087611897578c6040516020016118819190614497565b60405160208183030381529060405290506118f6565b60018814156118b0576118a98d611d55565b90506118f6565b60028814156118cc576020808e0151604051611881920161452e565b60038814156118f6578c516040805160208101929092520160405160208183030381529060405290505b8051156119065761190681611e92565b5061191f565b8761191b888463ffffffff8416565b9250505b60208c0151518c51111561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b611716565b602083830304909b529b9a5050505050505050505050565b6000670de0b6b3a76400006119c18385614593565b61119f91906145d0565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111fa565b50505050565b6000611a91826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130ba9092919063ffffffff16565b8051909150156103a75780806020019051810190611aaf919061460b565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b6000602e602f600160026003855b8751811015611bdd576000888281518110611b6657611b66614195565b60200260200101519050600060018201825181015b80821015611bcd578151601f1a925089831015611b9757611bc2565b89831415611ba457998717995b88831415611bb157998617995b858b1415611bc2578b519450611bcd565b600282019150611b7b565b505060019092019150611b499050565b505050505050919050565b600060078216600383811c16828082611c2757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611c72565b8260011415611c4b57506fffffffffffffffffffffffffffffffff90506080611c72565b8260021415611c67575067ffffffffffffffff90506040611c72565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611c9557611c956138fd565b604051908082528060200260200182016040528015611cbe578160200160208202803683370190505b50905060208082019083028a03815b8b821015611ce5578151815260209182019101611ccd565b505060608b015160808c015160209081029091010160005b610100811015611d435760208502830182845b82811015611d2c578051841c8a16825260209182019101611d10565b505050611d3a8e8e8b6116d8565b9b508501611cfd565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611da1919061452e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ddd929160200161462d565b604051602081830303815290604052905060005b856040015151811015611e89578186604001518281518110611e1557611e15614195565b60200260200101515160001b87604001518381518110611e3757611e37614195565b6020026020010151604051602001611e5193929190614653565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611df1565b50949350505050565b610f5781604051602401611ea69190613c65565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526130d1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612008919061468a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612071573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612095919061468a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b4919061468a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa15801561232c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235091906146a3565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612173565b60008060008467ffffffffffffffff811115612465576124656138fd565b60405190808252806020026020018201604052801561248e578160200160208202803683370190505b50905060008567ffffffffffffffff8111156124ac576124ac6138fd565b6040519080825280602002602001820160405280156124d5578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561252a578251815260209283019201612512565b5050602088028101602084015b8183101561254f578251815260209283019201612537565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125a990879087906004016146c0565b600060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261260c9190810190614723565b9050846020820160208a0281015b8082101561263557815183526020928301929091019061261a565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876130f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200882612704858a6130f2565b90613173565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836120088261276a858a6130f2565b906119ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826120958287613188565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876131d3565b6000602083028203805b8381101561280257805180156127f9578252612802565b506020016127e2565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156128025780516128df5760008252612802565b6020016128c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a188382613231565b92506129d2565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a6b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a83838261326c565b9250612a3d565b6020828102820380516000928201835b8582108015612aa95750826000105b15612a1f57508051602090910190612ac1838261329b565b9250612a9a565b600060208302820380516000602083015b85811015612a1f5780518301915082821015612af457600080fd5b9091508190602001612ad9565b600060208302820380516000602083015b85811015612a1f578051915081612b2857600080fd5b9181900491602001612b12565b6020828102820380516000928201835b85821015612a1f57508051602090910190612b6081846148c9565b9250612b45565b6020828102820380516000928201835b85821015612a1f5750805182811115612b8e578092505b602082019150612b77565b6020828102820380516000928201835b85821015612a1f5750805182811015612bc0578092505b602082019150612ba9565b600060208302820380516000602083015b85811015612a1f578051915081612bf257600080fd5b9181900691602001612bdc565b60006020830282038051600080602084015b86811015612c42578315612c3a578051925082840291508284830414612c3657600080fd5b8193505b602001612c11565b50505081526020019392505050565b600060208302820380516000602083015b85811015612a1f5780518303915082821115612c7d57600080fd5b9091508190602001612c62565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061217390869086906004016148d5565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90612e1590879087908790600401614904565b602060405180830381865afa158015612e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e56919061468a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200883836132b1565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115612ef357612ef36138fd565b604051908082528060200260200182016040528015612f1c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612f5857815181602001860152602082019150602081019050612f36565b50505190506000612f6b83838989613310565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085612fec85858585613460565b90955250949695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b60606130c98484600085613506565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561310757839150506111a2565b82601211156131335750601282900361312181600a6148c9565b61312b9085614593565b9150506111a2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161316281600a6148c9565b61312b90856145d0565b5092915050565b6000816119c1670de0b6b3a764000085614593565b600081810b6131985750816111a2565b60008260000b13156131c0576131af82600a614939565b6131b99084614593565b90506111a2565b60ff60008390031661316281600a6148c9565b60008060128314156131e857839150506111a2565b82601211156132025750601282900361316281600a6148c9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161312181600a6148c9565b600082820183811061324357806130c9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b60008261327b575060006111a2565b8282028284828161328e5761328e614564565b04141561324357806130c9565b60008183116132ab57600061119f565b50900390565b60008060015b600881116133085760006132cb868361369c565b905060006132d9868461369c565b905060006132e7838361329b565b90506132f7856001860383613749565b945050600190920191506132b79050565b509392505050565b835160009081908190819060015b600881116134525760009250828761335757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61335b565b5060005b60005b83811015613410576133898c828151811061337b5761337b614195565b60200260200101518461369c565b95508a86116133db57886133a8576133a1868361118e565b91506133d2565b60018914156133bb576133a186836137d2565b6002891480156133c9575084155b156133d2578591505b60019450613408565b89613408577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613410565b60010161335e565b508361343957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613447866001840383613749565b95505060010161331e565b509298975050505050505050565b60008260088111156134ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156134fa5763ffffffff6020820290811b199890981685891b179791506001016134d2565b50959695505050505050565b606082471015613598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b613616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161363f9190614948565b60006040518083038185875af1925050503d806000811461367c576040519150601f19603f3d011682016040523d82523d6000602084013e613681565b606091505b50915091506136918282866137e2565b979650505050505050565b600081600881111561370a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b82613718576000915061316c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156137b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561119d578161119f565b606083156137f1575081611511565b8251156138015782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190613c65565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561386557600080fd5b813567ffffffffffffffff81111561387c57600080fd5b820160e0818503121561151157600080fd5b6000606082840312156138a057600080fd5b50919050565b6000606082840312156138b857600080fd5b61119f838361388e565b6000602082840312156138d457600080fd5b813567ffffffffffffffff8111156138eb57600080fd5b820160a0818503121561151157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b60405290565b60405160a0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b6040805190810167ffffffffffffffff8111828210171561394f5761394f6138fd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139e2576139e26138fd565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b8035613a17816139ea565b919050565b600067ffffffffffffffff821115613a3657613a366138fd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613a7357600080fd5b8135613a86613a8182613a1c565b61399b565b818152846020838601011115613a9b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e08284031215613aca57600080fd5b613ad261392c565b9050613add82613a0c565b8152613aeb60208301613a0c565b602082015260408201356040820152613b0660608301613a0c565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff811115613b3957600080fd5b613b4584828501613a62565b60c08301525092915050565b60008060008385036080811215613b6757600080fd5b843567ffffffffffffffff80821115613b7f57600080fd5b613b8b88838901613ab8565b95506020870135915080821115613ba157600080fd5b50613bae87828801613ab8565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613be157600080fd5b506040840190509250925092565b60005b83811015613c0a578181015183820152602001613bf2565b83811115611a295750506000910152565b60008151808452613c33816020860160208601613bef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061119f6020830184613c1b565b600060208284031215613c8a57600080fd5b8135611511816139ea565b60006111a23683613ab8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cd657600080fd5b830160208101925035905067ffffffffffffffff811115613cf657600080fd5b803603831315613d0557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528335613d83816139ea565b811660408401526020840135613d98816139ea565b8181166060850152505060408301356080830152613db860608401613a0c565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613df660c0840184613ca1565b60e0610100850152613e0d61012085018284613d0c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613e5857613e58613e17565b500390565b8035613e68816139ea565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613ebf6020830185613e5d565b826080830152949350505050565b600067ffffffffffffffff821115613ee757613ee76138fd565b5060051b60200190565b600082601f830112613f0257600080fd5b81356020613f12613a8183613ecd565b82815260059290921b84018101918181019086841115613f3157600080fd5b8286015b84811015613f4c5780358352918301918301613f35565b509695505050505050565b600060a08236031215613f6957600080fd5b613f71613955565b8235613f7c816139ea565b8152602083810135818301526040840135613f96816139ea565b604083015260608481013590830152608084013567ffffffffffffffff80821115613fc057600080fd5b818601915060408236031215613fd557600080fd5b613fdd613978565b823582811115613fec57600080fd5b830136601f820112613ffd57600080fd5b803561400b613a8182613ecd565b81815260059190911b8201860190868101903683111561402a57600080fd5b8784015b83811015614062578035878111156140465760008081fd5b614054368b83890101613a62565b84525091880191880161402e565b508452505050828401358281111561407957600080fd5b61408536828601613ef1565b9482019490945260808501525091949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c08501526130c960e0850182613c1b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c9604083018461409b565b73ffffffffffffffffffffffffffffffffffffffff8516815260a06020820152600061416660a083018661409b565b8281036040840152614178818661409b565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156141d7576141d7613e17565b500190565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016115116020830184613e5d565b60008351614218818460208801613bef565b83519083019061422c818360208801613bef565b01949350505050565b60208152600061119f602083018461409b565b600082825180855260208086019550808260051b84010181860160005b848110156142b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261429f838351613c1b565b98840198925090830190600101614265565b5090979650505050505050565b600081518084526020808501945080840160005b838110156142ee578151875295820195908201906001016142d2565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261433483880183614248565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261436f84836142be565b898103848b01528a51808252878c019550908701925060005b818110156143da5785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e090930192600101614388565b50919c9b505050505050505050505050565b6000602082840312156143fe57600080fd5b815167ffffffffffffffff81111561441557600080fd5b8201601f8101841361442657600080fd5b8051614434613a8182613a1c565b81815285602083850101111561444957600080fd5b61445a826020830160208601613bef565b95945050505050565b60008183825b6002811015614488578151835260209283019290910190600101614469565b50505060408201905092915050565b60208152815160208201526000602083015160a060408401526144bd60c08401826142be565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526144f98383614248565b925060608601519150808584030160808601525061451782826142be565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156145585781518552938201939082019060010161453c565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cb576145cb613e17565b500290565b600082614606577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561461d57600080fd5b8151801515811461151157600080fd5b82815260008251614645816020850160208701613bef565b919091016020019392505050565b60008451614665818460208901613bef565b8201848152835161467d816020808501908801613bef565b0160200195945050505050565b60006020828403121561469c57600080fd5b5051919050565b6000602082840312156146b557600080fd5b8151611511816139ea565b604080825283519082018190526000906020906060840190828701845b8281101561470f57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016146dd565b50505083810382850152613e0d81866142be565b6000602080838503121561473657600080fd5b825167ffffffffffffffff81111561474d57600080fd5b8301601f8101851361475e57600080fd5b805161476c613a8182613ecd565b81815260059190911b8201830190838101908783111561478b57600080fd5b928401925b8284101561369157835182529284019290840190614790565b600181815b8085111561480257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147e8576147e8613e17565b808516156147f557918102915b93841c93908002906147ae565b509250929050565b600082614819575060016111a2565b81614826575060006111a2565b816001811461483c576002811461484657614862565b60019150506111a2565b60ff84111561485757614857613e17565b50506001821b6111a2565b5060208310610133831016604e8410600b8410161715614885575081810a6111a2565b61488f83836147a9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c1576148c1613e17565b029392505050565b600061119f838361480a565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c960408301846142be565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061445a60608301846142be565b600061119f60ff84168361480a565b6000825161495a818460208701613bef565b919091019291505056fea2646970667358221220239580f40b1076943fe774c660864fec18ec1db7ff153f86ddc9b8c90949056b64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162004a3c38038062004a3c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161499a620000a260003960006103b3015260006103d4015261499a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806384e07cdc1161005b57806384e07cdc146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806355958f19146100aa575b600080fd5b610095610090366004613853565b610135565b005b6100956100a53660046138a6565b610258565b6100956100b83660046138c2565b6103ac565b6100956100cb366004613b51565b610475565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b3660046138a6565b610e60565b610128610f5a565b6040516101049190613c65565b6101426020820182613c78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983613c95565b61113f565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b9033908590613d55565b60405180910390a15b5050565b336000908152600160209081526040822090829061027890850185613c78565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf908401358361118e565b90506102cb8183613e46565b336000908152600160209081526040822091906102ea90870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613e95565b60405180910390a16103a7338261038a6020870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1691906111a8565b505050565b60006104017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103fc85613f57565b61127c565b9050600061040e8261113f565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb8906104689033908590614108565b60405180910390a1505050565b60006104808461113f565b9050600061048d8461113f565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6106e46040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b60405161071f9493929190614137565b60405180910390a16107596040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6107668b60c00151611518565b90506107aa6107a260405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b8260006116d8565b5080602001516001826000015103815181106107c8576107c8614195565b6020026020010151945080602001516002826000015103815181106107ef576107ef614195565b602002602001015192506108068a60c00151611518565b90506108426107a260405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b50806020015160018260000151038151811061086057610860614195565b60200260200101519350806020015160028260000151038151811061088757610887614195565b602002602001015191505061093e600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361118e90919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e015183529052205490925061099290829061118e565b90506109a86109a182856119ac565b839061118e565b85526109be6109b783866119ac565b829061118e565b602086015284511515806109d6575060008560200151115b610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b8451610a4890856119ac565b60408601526020850151610a5c90846119ac565b606086015250508251159150610b549050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b0151835290529081208054909190610ac7908490613e46565b909155505060a086015160011615610aff57805160008481526002602052604081208054909190610af99084906141c4565b90915550505b60a086015160021615610b545780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610b4e9084906141c4565b90915550505b602081015115610c5057602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610bb9908490613e46565b909155505060a085015160011615610bf8578060200151600260008481526020019081526020016000206000828254610bf291906141c4565b90915550505b60a085015160021615610c505760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610c4a9084906141c4565b90915550505b604081015115610cbb57604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610cb59084906141c4565b90915550505b606081015115610d25576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610d1f9084906141c4565b90915550505b60608101518151600091610d3891613e46565b9050600082604001518360200151610d509190613e46565b90508115610dab5733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610da59084906141c4565b90915550505b8015610e065733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610e009084906141c4565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b33600090815260016020908152604080832090840135929091610e8590850185613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee391906141c4565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a90339084906141dc565b60405180910390a1610f5733306040840135610f396020860186613c78565b73ffffffffffffffffffffffffffffffffffffffff169291906119cb565b50565b604080516105e08101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611f2160e082018190526120156101008301526120a16101208301526121c261014083015261016082015261226b6101808201526123736101a08201526124476101c08201526126446101e082015261264f61020082015261265a6102208201526126656102408201526126706102608201526126a461028082015261270a6102a08201526127706102c08201526127a46102e08201526127d861030082015261280d6103208201526128686103408201526128be6103608201526128e761038082015261293e6103a082015261296b6103c08201526129c26103e0820152612a2d610400820152612a8a610420820152612ac8610440820152612b01610460820152612b35610480820152612b676104a0820152612b996104c0820152612bcb6104e0820152612bff610500820152612c51610520820152612c8a610540820152612d3c610560820152612e69610580820152612ec56105a0820152612f7f6105c080830191909152815260408051606081018252612ffb60208201526130368183015290815260405160200161112b929190614206565b604051602081830303815290604052905090565b6000816040516020016111529190614235565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b600081831061119d578161119f565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a2f565b6112fe6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b61133e6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b61139f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161135f57905050905081816000815181106113c8576113c8614195565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff1681526020018560600151815260200161145f866080015160000151611b3b565b81526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860800151866040518463ffffffff1660e01b81526004016114a5939291906142f9565b6000604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261150a91908101906143ec565b9052925050505b9392505050565b61154a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61157c6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156115b0576115b06138fd565b6040519080825280602002602001820160405280156115d9578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611610576116106138fd565b604051908082528060200260200182016040528015611639578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561167357816020820260200184015281516020018201915060018101905061164c565b505060408501525091949350505050565b606061168e613835565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff16818301526040516116c191839101614463565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611994576003890198508886015180601f1a975061ffff8160081c16985050600688101561190c578761175b5786602002840151825260208201915061191f565b60018814156117785760208702830151825260208201915061191f565b6002881415611805578c5187602002106117ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d0151825260208201915061191f565b600388141561184d57600061183b6040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061191f565b6004881415611869576118628d8d848a611be8565b915061191f565b606087611897578c6040516020016118819190614497565b60405160208183030381529060405290506118f6565b60018814156118b0576118a98d611d55565b90506118f6565b60028814156118cc576020808e0151604051611881920161452e565b60038814156118f6578c516040805160208101929092520160405160208183030381529060405290505b8051156119065761190681611e92565b5061191f565b8761191b888463ffffffff8416565b9250505b60208c0151518c51111561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b611716565b602083830304909b529b9a5050505050505050505050565b6000670de0b6b3a76400006119c18385614593565b61119f91906145d0565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111fa565b50505050565b6000611a91826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130ba9092919063ffffffff16565b8051909150156103a75780806020019051810190611aaf919061460b565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b6000602e602f600160026003855b8751811015611bdd576000888281518110611b6657611b66614195565b60200260200101519050600060018201825181015b80821015611bcd578151601f1a925089831015611b9757611bc2565b89831415611ba457998717995b88831415611bb157998617995b858b1415611bc2578b519450611bcd565b600282019150611b7b565b505060019092019150611b499050565b505050505050919050565b600060078216600383811c16828082611c2757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611c72565b8260011415611c4b57506fffffffffffffffffffffffffffffffff90506080611c72565b8260021415611c67575067ffffffffffffffff90506040611c72565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611c9557611c956138fd565b604051908082528060200260200182016040528015611cbe578160200160208202803683370190505b50905060208082019083028a03815b8b821015611ce5578151815260209182019101611ccd565b505060608b015160808c015160209081029091010160005b610100811015611d435760208502830182845b82811015611d2c578051841c8a16825260209182019101611d10565b505050611d3a8e8e8b6116d8565b9b508501611cfd565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611da1919061452e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ddd929160200161462d565b604051602081830303815290604052905060005b856040015151811015611e89578186604001518281518110611e1557611e15614195565b60200260200101515160001b87604001518381518110611e3757611e37614195565b6020026020010151604051602001611e5193929190614653565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611df1565b50949350505050565b610f5781604051602401611ea69190613c65565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526130d1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612008919061468a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612071573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612095919061468a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b4919061468a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa15801561232c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235091906146a3565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612173565b60008060008467ffffffffffffffff811115612465576124656138fd565b60405190808252806020026020018201604052801561248e578160200160208202803683370190505b50905060008567ffffffffffffffff8111156124ac576124ac6138fd565b6040519080825280602002602001820160405280156124d5578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561252a578251815260209283019201612512565b5050602088028101602084015b8183101561254f578251815260209283019201612537565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125a990879087906004016146c0565b600060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261260c9190810190614723565b9050846020820160208a0281015b8082101561263557815183526020928301929091019061261a565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876130f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200882612704858a6130f2565b90613173565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836120088261276a858a6130f2565b906119ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826120958287613188565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876131d3565b6000602083028203805b8381101561280257805180156127f9578252612802565b506020016127e2565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156128025780516128df5760008252612802565b6020016128c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a188382613231565b92506129d2565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a6b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a83838261326c565b9250612a3d565b6020828102820380516000928201835b8582108015612aa95750826000105b15612a1f57508051602090910190612ac1838261329b565b9250612a9a565b600060208302820380516000602083015b85811015612a1f5780518301915082821015612af457600080fd5b9091508190602001612ad9565b600060208302820380516000602083015b85811015612a1f578051915081612b2857600080fd5b9181900491602001612b12565b6020828102820380516000928201835b85821015612a1f57508051602090910190612b6081846148c9565b9250612b45565b6020828102820380516000928201835b85821015612a1f5750805182811115612b8e578092505b602082019150612b77565b6020828102820380516000928201835b85821015612a1f5750805182811015612bc0578092505b602082019150612ba9565b600060208302820380516000602083015b85811015612a1f578051915081612bf257600080fd5b9181900691602001612bdc565b60006020830282038051600080602084015b86811015612c42578315612c3a578051925082840291508284830414612c3657600080fd5b8193505b602001612c11565b50505081526020019392505050565b600060208302820380516000602083015b85811015612a1f5780518303915082821115612c7d57600080fd5b9091508190602001612c62565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061217390869086906004016148d5565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90612e1590879087908790600401614904565b602060405180830381865afa158015612e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e56919061468a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200883836132b1565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115612ef357612ef36138fd565b604051908082528060200260200182016040528015612f1c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612f5857815181602001860152602082019150602081019050612f36565b50505190506000612f6b83838989613310565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085612fec85858585613460565b90955250949695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b60606130c98484600085613506565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561310757839150506111a2565b82601211156131335750601282900361312181600a6148c9565b61312b9085614593565b9150506111a2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161316281600a6148c9565b61312b90856145d0565b5092915050565b6000816119c1670de0b6b3a764000085614593565b600081810b6131985750816111a2565b60008260000b13156131c0576131af82600a614939565b6131b99084614593565b90506111a2565b60ff60008390031661316281600a6148c9565b60008060128314156131e857839150506111a2565b82601211156132025750601282900361316281600a6148c9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161312181600a6148c9565b600082820183811061324357806130c9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b60008261327b575060006111a2565b8282028284828161328e5761328e614564565b04141561324357806130c9565b60008183116132ab57600061119f565b50900390565b60008060015b600881116133085760006132cb868361369c565b905060006132d9868461369c565b905060006132e7838361329b565b90506132f7856001860383613749565b945050600190920191506132b79050565b509392505050565b835160009081908190819060015b600881116134525760009250828761335757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61335b565b5060005b60005b83811015613410576133898c828151811061337b5761337b614195565b60200260200101518461369c565b95508a86116133db57886133a8576133a1868361118e565b91506133d2565b60018914156133bb576133a186836137d2565b6002891480156133c9575084155b156133d2578591505b60019450613408565b89613408577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613410565b60010161335e565b508361343957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613447866001840383613749565b95505060010161331e565b509298975050505050505050565b60008260088111156134ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156134fa5763ffffffff6020820290811b199890981685891b179791506001016134d2565b50959695505050505050565b606082471015613598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b613616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161363f9190614948565b60006040518083038185875af1925050503d806000811461367c576040519150601f19603f3d011682016040523d82523d6000602084013e613681565b606091505b50915091506136918282866137e2565b979650505050505050565b600081600881111561370a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b82613718576000915061316c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156137b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561119d578161119f565b606083156137f1575081611511565b8251156138015782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190613c65565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561386557600080fd5b813567ffffffffffffffff81111561387c57600080fd5b820160e0818503121561151157600080fd5b6000606082840312156138a057600080fd5b50919050565b6000606082840312156138b857600080fd5b61119f838361388e565b6000602082840312156138d457600080fd5b813567ffffffffffffffff8111156138eb57600080fd5b820160a0818503121561151157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b60405290565b60405160a0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b6040805190810167ffffffffffffffff8111828210171561394f5761394f6138fd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139e2576139e26138fd565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b8035613a17816139ea565b919050565b600067ffffffffffffffff821115613a3657613a366138fd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613a7357600080fd5b8135613a86613a8182613a1c565b61399b565b818152846020838601011115613a9b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e08284031215613aca57600080fd5b613ad261392c565b9050613add82613a0c565b8152613aeb60208301613a0c565b602082015260408201356040820152613b0660608301613a0c565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff811115613b3957600080fd5b613b4584828501613a62565b60c08301525092915050565b60008060008385036080811215613b6757600080fd5b843567ffffffffffffffff80821115613b7f57600080fd5b613b8b88838901613ab8565b95506020870135915080821115613ba157600080fd5b50613bae87828801613ab8565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613be157600080fd5b506040840190509250925092565b60005b83811015613c0a578181015183820152602001613bf2565b83811115611a295750506000910152565b60008151808452613c33816020860160208601613bef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061119f6020830184613c1b565b600060208284031215613c8a57600080fd5b8135611511816139ea565b60006111a23683613ab8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cd657600080fd5b830160208101925035905067ffffffffffffffff811115613cf657600080fd5b803603831315613d0557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528335613d83816139ea565b811660408401526020840135613d98816139ea565b8181166060850152505060408301356080830152613db860608401613a0c565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613df660c0840184613ca1565b60e0610100850152613e0d61012085018284613d0c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613e5857613e58613e17565b500390565b8035613e68816139ea565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613ebf6020830185613e5d565b826080830152949350505050565b600067ffffffffffffffff821115613ee757613ee76138fd565b5060051b60200190565b600082601f830112613f0257600080fd5b81356020613f12613a8183613ecd565b82815260059290921b84018101918181019086841115613f3157600080fd5b8286015b84811015613f4c5780358352918301918301613f35565b509695505050505050565b600060a08236031215613f6957600080fd5b613f71613955565b8235613f7c816139ea565b8152602083810135818301526040840135613f96816139ea565b604083015260608481013590830152608084013567ffffffffffffffff80821115613fc057600080fd5b818601915060408236031215613fd557600080fd5b613fdd613978565b823582811115613fec57600080fd5b830136601f820112613ffd57600080fd5b803561400b613a8182613ecd565b81815260059190911b8201860190868101903683111561402a57600080fd5b8784015b83811015614062578035878111156140465760008081fd5b614054368b83890101613a62565b84525091880191880161402e565b508452505050828401358281111561407957600080fd5b61408536828601613ef1565b9482019490945260808501525091949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c08501526130c960e0850182613c1b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c9604083018461409b565b73ffffffffffffffffffffffffffffffffffffffff8516815260a06020820152600061416660a083018661409b565b8281036040840152614178818661409b565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156141d7576141d7613e17565b500190565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016115116020830184613e5d565b60008351614218818460208801613bef565b83519083019061422c818360208801613bef565b01949350505050565b60208152600061119f602083018461409b565b600082825180855260208086019550808260051b84010181860160005b848110156142b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261429f838351613c1b565b98840198925090830190600101614265565b5090979650505050505050565b600081518084526020808501945080840160005b838110156142ee578151875295820195908201906001016142d2565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261433483880183614248565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261436f84836142be565b898103848b01528a51808252878c019550908701925060005b818110156143da5785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e090930192600101614388565b50919c9b505050505050505050505050565b6000602082840312156143fe57600080fd5b815167ffffffffffffffff81111561441557600080fd5b8201601f8101841361442657600080fd5b8051614434613a8182613a1c565b81815285602083850101111561444957600080fd5b61445a826020830160208601613bef565b95945050505050565b60008183825b6002811015614488578151835260209283019290910190600101614469565b50505060408201905092915050565b60208152815160208201526000602083015160a060408401526144bd60c08401826142be565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526144f98383614248565b925060608601519150808584030160808601525061451782826142be565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156145585781518552938201939082019060010161453c565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cb576145cb613e17565b500290565b600082614606577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561461d57600080fd5b8151801515811461151157600080fd5b82815260008251614645816020850160208701613bef565b919091016020019392505050565b60008451614665818460208901613bef565b8201848152835161467d816020808501908801613bef565b0160200195945050505050565b60006020828403121561469c57600080fd5b5051919050565b6000602082840312156146b557600080fd5b8151611511816139ea565b604080825283519082018190526000906020906060840190828701845b8281101561470f57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016146dd565b50505083810382850152613e0d81866142be565b6000602080838503121561473657600080fd5b825167ffffffffffffffff81111561474d57600080fd5b8301601f8101851361475e57600080fd5b805161476c613a8182613ecd565b81815260059190911b8201830190838101908783111561478b57600080fd5b928401925b8284101561369157835182529284019290840190614790565b600181815b8085111561480257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147e8576147e8613e17565b808516156147f557918102915b93841c93908002906147ae565b509250929050565b600082614819575060016111a2565b81614826575060006111a2565b816001811461483c576002811461484657614862565b60019150506111a2565b60ff84111561485757614857613e17565b50506001821b6111a2565b5060208310610133831016604e8410600b8410161715614885575081810a6111a2565b61488f83836147a9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c1576148c1613e17565b029392505050565b600061119f838361480a565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c960408301846142be565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061445a60608301846142be565b600061119f60ff84168361480a565b6000825161495a818460208701613bef565b919091019291505056fea2646970667358221220475790b2b2e0dc4826f6ea4f97361b5eddbe1fcd78bd9e5016a59079855d4d9664736f6c634300080a0033"; type OrderBookConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OwnableUpgradeable__factory.ts b/src/typechain/factories/OwnableUpgradeable__factory.ts new file mode 100644 index 0000000..3100f92 --- /dev/null +++ b/src/typechain/factories/OwnableUpgradeable__factory.ts @@ -0,0 +1,91 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { + OwnableUpgradeable, + OwnableUpgradeableInterface, +} from "../OwnableUpgradeable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class OwnableUpgradeable__factory { + static readonly abi = _abi; + static createInterface(): OwnableUpgradeableInterface { + return new utils.Interface(_abi) as OwnableUpgradeableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): OwnableUpgradeable { + return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable; + } +} diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts index bdffd51..f57e5de 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts @@ -473,7 +473,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122001f70ce377e85058f3795a530adc05830587349ca014e76928faf6499eac9ab164736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f3d908385da66c0767bc9905553d151fb0c632b5e87c5d231e8fd31cc360942f64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowWrapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts index a053832..4847c93 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts @@ -347,7 +347,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220049c19cf3724901f75101544ff351e9b0c76a329dd6896a6157544f2fcdc72d964736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212207a126969f9a6db3d13aa747c73c9672243864d436efeeaf940d13a90301b0d5b64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Factory__factory.ts b/src/typechain/factories/RedeemableERC20Factory__factory.ts index 7345c33..2d7e8ea 100644 --- a/src/typechain/factories/RedeemableERC20Factory__factory.ts +++ b/src/typechain/factories/RedeemableERC20Factory__factory.ts @@ -174,7 +174,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61358980610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea2646970667358221220f6e47e3e567942a4a75c15e4942c6e3a44fba1e3d1826572d45aac42cea254f264736f6c634300080a0033608060405234801561001057600080fd5b50613569806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612d3b565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612d82565b610216610211366004612dd3565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612e40565b61060d565b610216610294366004612eca565b61064c565b604051601281526020016101e5565b6101d16102b6366004612d3b565b610672565b6102166102c9366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612dd3565b61075c565b6101d1610317366004612f06565b6107a8565b6101db61032a366004612e40565b6107b5565b6101db61033d366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612dd3565b6107fc565b6101d1610386366004612f1f565b610815565b6101d1610399366004612d3b565b610cdb565b6103b16103ac366004612f06565b610e63565b60405163ffffffff90911681526020016101e5565b6101f6610e93565b6102166103dc366004612dd3565b610ea2565b6102166103ef366004612dd3565b610f7e565b6101db610402366004612f5a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612d3b565b610f8c565b6101db609b5481565b6101d161049f366004612f8d565b611071565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090613008565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90613008565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611121565b60019150505b92915050565b600080821161061d57600061063f565b8261062960018461308b565b60088110610639576106396130a2565b60200201515b63ffffffff169392505050565b60003361065a8582856112d5565b6106658585856113a6565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a39087906130d1565b611121565b6107b23382611664565b50565b60005b6008811015610607578281600881106107d3576107d36130a2565b602002015163ffffffff168210156107ea57610607565b806107f4816130e9565b9150506107b8565b6108078233836112d5565b6108118282611664565b5050565b6000610821600161185a565b9050801561085657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61085e6119e5565b61086e6060830160408401612d3b565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108ec6108c66060840160408501612d3b565b7f42766d3f00000000000000000000000000000000000000000000000000000000611a8f565b610952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b6109f66109626020840184613122565b61096c9080613160565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109ae925050506020850185613122565b6109bc906020810190613160565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aab92505050565b670de0b6b3a7640000610a0c6020840184613122565b606001351015610a78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610a9060a0830160808401612d3b565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610b1590860186613122565b610b26906060810190604001612d3b565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610b8757609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610b946020830183613122565b610ba5906060810190604001612d3b565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c21610bfa6020840184613122565b610c0b906060810190604001612d3b565b610c186020850185613122565b60600135611b4c565b610c316101cc6020840184612d3b565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610c62929190613279565b60405180910390a1610c75600142611c78565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610ce66104f6565b14610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610dd9600242611c78565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610e208473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e5d5773ffffffffffffffffffffffffffffffffffffffff8216610e5257610e4d8482611664565b610e5d565b610e5d8483836113a6565b50505050565b60018160088110610e7357600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090613008565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b610f738286868403611121565b506001949350505050565b6000336106018185856113a6565b60985473ffffffffffffffffffffffffffffffffffffffff16331461100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061107c6104f6565b146110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610e5d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f21915050565b73ffffffffffffffffffffffffffffffffffffffff83166111c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e5d5781811015611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610e5d8484848403611121565b73ffffffffffffffffffffffffffffffffffffffff8316611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6114f78383836122c6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906115f19084906130d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165791815260200190565b60405180910390a3610e5d565b73ffffffffffffffffffffffffffffffffffffffff8216611707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b611713826000836122c6565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040812083830390556036805484929061180590849061308b565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112c8565b505050565b60008054610100900460ff1615611911578160ff16600114801561187d5750303b155b611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b506000919050565b60005460ff8084169116106119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff16106119fc576119fc6133db565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a4d6001826008612bf2565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b6000611a9a836125ce565b801561066b575061066b8383612632565b600054610100900460ff16611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b610811828261276e565b73ffffffffffffffffffffffffffffffffffffffff8216611bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611bd5600083836122c6565b8060366000828254611be791906130d1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c219084906130d1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d7b6104f6565b14611de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611df557611df56130a2565b60088104919091015460079091166004026101000a900463ffffffff90811614611e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611e8f57611e8f6130a2565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f149392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3e57611f3e612dfd565b604051908082528060200260200182016040528015611f67578160200160208202803683370190505b50905060008211611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612045919061340a565b90506000805b84811015612238578286888381518110612067576120676130a2565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612101919061340a565b61210b9190613423565b6121159190613460565b915060008211612181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121b5576121b56130a2565b60200260200101518885604051612200949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061221b5761221b6130a2565b602090810291909101015280612230816130e9565b91505061204b565b506122433386611664565b60005b848110156122bd576122ab33858381518110612264576122646130a2565b602002602001015189848151811061227e5761227e6130a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661282c9092919063ffffffff16565b806122b5816130e9565b915050612246565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b6000811180156123b0575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123ae575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118555760016123bf6104f6565b14612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526125669173ffffffffffffffffffffffffffffffffffffffff16906388d686049061251f9087906024810161349b565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612560919061340a565b426128b9565b1015611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b60006125fa827f01ffc9a700000000000000000000000000000000000000000000000000000000612632565b8015610607575061262b827fffffffff00000000000000000000000000000000000000000000000000000000612632565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906126ec9086906134ff565b6000604051808303818686fa925050503d8060008114612728576040519150601f19603f3d011682016040523d82523d6000602084013e61272d565b606091505b50915091506020815110156127485760009350505050610607565b8180156127645750808060200190518101906127649190613511565b9695505050505050565b600054610100900460ff16612805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612818906037906020850190612c8e565b508051611855906038906020840190612c8e565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118559084906128e6565b60005b600881101561060757818160200284901c63ffffffff1611156128de57610607565b6001016128bc565b6000612948826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129f29092919063ffffffff16565b80519091501561185557808060200190518101906129669190613511565b611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b6060612a018484600085612a09565b949350505050565b606082471015612a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b4291906134ff565b60006040518083038185875af1925050503d8060008114612b7f576040519150601f19603f3d011682016040523d82523d6000602084013e612b84565b606091505b5091509150612b94828286612b9f565b979650505050505050565b60608315612bae57508161066b565b825115612bbe5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612d82565b600183019183908215612c7e5791602002820160005b83821115612c4c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c08565b8015612c7c5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c4c565b505b50612c8a929150612d02565b5090565b828054612c9a90613008565b90600052602060002090601f016020900481019282612cbc5760008555612c7e565b82601f10612cd557805160ff1916838001178555612c7e565b82800160010185558215612c7e579182015b82811115612c7e578251825591602001919060010190612ce7565b5b80821115612c8a5760008155600101612d03565b803573ffffffffffffffffffffffffffffffffffffffff811681146119e057600080fd5b600060208284031215612d4d57600080fd5b61066b82612d17565b60005b83811015612d71578181015183820152602001612d59565b83811115610e5d5750506000910152565b6020815260008251806020840152612da1816040850160208701612d56565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612de657600080fd5b612def83612d17565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119e057600080fd5b6000806101208385031215612e5457600080fd5b83601f840112612e6357600080fd5b60405161010080820182811067ffffffffffffffff82111715612e8857612e88612dfd565b60405284018186821115612e9b57600080fd5b855b82811015612ebc57612eae81612e2c565b825260209182019101612e9d565b509196903595509350505050565b600080600060608486031215612edf57600080fd5b612ee884612d17565b9250612ef660208501612d17565b9150604084013590509250925092565b600060208284031215612f1857600080fd5b5035919050565b600060208284031215612f3157600080fd5b813567ffffffffffffffff811115612f4857600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612f6d57600080fd5b612f7683612d17565b9150612f8460208401612d17565b90509250929050565b600080600060408486031215612fa257600080fd5b833567ffffffffffffffff80821115612fba57600080fd5b818601915086601f830112612fce57600080fd5b813581811115612fdd57600080fd5b8760208260051b8501011115612ff257600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061301c57607f821691505b60208210811415613056577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561309d5761309d61305c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156130e4576130e461305c565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561311b5761311b61305c565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261315657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261319557600080fd5b83018035915067ffffffffffffffff8211156131b057600080fd5b6020019150368190038213156131c557600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261320157600080fd5b830160208101925035905067ffffffffffffffff81111561322157600080fd5b8036038313156131c557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132a685612d17565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126132e157600080fd5b60a0606085015284016132f481806131cc565b608060e087015261330a61016087018284613230565b91505061331a60208301836131cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2087840301610100880152613350838284613230565b925050508261336160408401612d17565b16610120860152606082013561014086015261337f60408701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133b360808701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561341c57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345b5761345b61305c565b500290565b600082613496577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b818110156134f2578451835293830193918301916001016134d6565b5090979650505050505050565b60008251613156818460208701612d56565b60006020828403121561352357600080fd5b8151801515811461066b57600080fdfea26469706673582212201e962e4189efddacbcf6f8d956f27f0afff36718e111184690e4e36118dcb33764736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6134e680610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea26469706673582212205303b4789f4e12ab95c6f1e841d751e9a4e0aee0823b3381b2728bfcf226e0d464736f6c634300080a0033608060405234801561001057600080fd5b506134c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea2646970667358221220816e8e149f7affa7a47f612aa08ba4ab07120a3a5ce1060ead933ab32f2e685c64736f6c634300080a0033"; type RedeemableERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts index 4d57965..a1758f1 100644 --- a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts +++ b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts @@ -389,7 +389,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea2646970667358221220b4e2011c649cee801701b6a7ab4a7d10b92d6db89d21b6d0b2caf29fb3cfffb964736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea26469706673582212209edffdc9f6e84415862f896c874a020035ee43c6db7ec796c19e15f059a6381264736f6c634300080a0033"; type RedeemableERC20ReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20__factory.ts b/src/typechain/factories/RedeemableERC20__factory.ts index 97c0e54..ea97422 100644 --- a/src/typechain/factories/RedeemableERC20__factory.ts +++ b/src/typechain/factories/RedeemableERC20__factory.ts @@ -783,7 +783,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50613569806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612d3b565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612d82565b610216610211366004612dd3565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612e40565b61060d565b610216610294366004612eca565b61064c565b604051601281526020016101e5565b6101d16102b6366004612d3b565b610672565b6102166102c9366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612dd3565b61075c565b6101d1610317366004612f06565b6107a8565b6101db61032a366004612e40565b6107b5565b6101db61033d366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612dd3565b6107fc565b6101d1610386366004612f1f565b610815565b6101d1610399366004612d3b565b610cdb565b6103b16103ac366004612f06565b610e63565b60405163ffffffff90911681526020016101e5565b6101f6610e93565b6102166103dc366004612dd3565b610ea2565b6102166103ef366004612dd3565b610f7e565b6101db610402366004612f5a565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612d3b565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612d3b565b610f8c565b6101db609b5481565b6101d161049f366004612f8d565b611071565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090613008565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90613008565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611121565b60019150505b92915050565b600080821161061d57600061063f565b8261062960018461308b565b60088110610639576106396130a2565b60200201515b63ffffffff169392505050565b60003361065a8582856112d5565b6106658585856113a6565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a39087906130d1565b611121565b6107b23382611664565b50565b60005b6008811015610607578281600881106107d3576107d36130a2565b602002015163ffffffff168210156107ea57610607565b806107f4816130e9565b9150506107b8565b6108078233836112d5565b6108118282611664565b5050565b6000610821600161185a565b9050801561085657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61085e6119e5565b61086e6060830160408401612d3b565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108ec6108c66060840160408501612d3b565b7f42766d3f00000000000000000000000000000000000000000000000000000000611a8f565b610952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b6109f66109626020840184613122565b61096c9080613160565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506109ae925050506020850185613122565b6109bc906020810190613160565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611aab92505050565b670de0b6b3a7640000610a0c6020840184613122565b606001351015610a78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610a9060a0830160808401612d3b565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610b1590860186613122565b610b26906060810190604001612d3b565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610b8757609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610b946020830183613122565b610ba5906060810190604001612d3b565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610c21610bfa6020840184613122565b610c0b906060810190604001612d3b565b610c186020850185613122565b60600135611b4c565b610c316101cc6020840184612d3b565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610c62929190613279565b60405180910390a1610c75600142611c78565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610ce66104f6565b14610d4d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610dce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610dd9600242611c78565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610e208473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610e5d5773ffffffffffffffffffffffffffffffffffffffff8216610e5257610e4d8482611664565b610e5d565b610e5d8483836113a6565b50505050565b60018160088110610e7357600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090613008565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610f66576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b610f738286868403611121565b506001949350505050565b6000336106018185856113a6565b60985473ffffffffffffffffffffffffffffffffffffffff16331461100d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061107c6104f6565b146110e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610e5d848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611f21915050565b73ffffffffffffffffffffffffffffffffffffffff83166111c3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610e5d5781811015611399576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610e5d8484848403611121565b73ffffffffffffffffffffffffffffffffffffffff8316611449576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166114ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6114f78383836122c6565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040902054818110156115ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906115f19084906130d1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161165791815260200190565b60405180910390a3610e5d565b73ffffffffffffffffffffffffffffffffffffffff8216611707576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b611713826000836122c6565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156117c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260346020526040812083830390556036805484929061180590849061308b565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016112c8565b505050565b60008054610100900460ff1615611911578160ff16600114801561187d5750303b155b611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b506000919050565b60005460ff8084169116106119a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6001805463ffffffff16106119fc576119fc6133db565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810191909152611a4d6001826008612bf2565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b6000611a9a836125ce565b801561066b575061066b8383612632565b600054610100900460ff16611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b610811828261276e565b73ffffffffffffffffffffffffffffffffffffffff8216611bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611bd5600083836122c6565b8060366000828254611be791906130d1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611c219084906130d1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611d4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611d7b6104f6565b14611de2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611df557611df56130a2565b60088104919091015460079091166004026101000a900463ffffffff90811614611e7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611e8f57611e8f6130a2565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611f149392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611f3e57611f3e612dfd565b604051908082528060200260200182016040528015611f67578160200160208202803683370190505b50905060008211611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612045919061340a565b90506000805b84811015612238578286888381518110612067576120676130a2565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa1580156120dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612101919061340a565b61210b9190613423565b6121159190613460565b915060008211612181576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc338883815181106121b5576121b56130a2565b60200260200101518885604051612200949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061221b5761221b6130a2565b602090810291909101015280612230816130e9565b91505061204b565b506122433386611664565b60005b848110156122bd576122ab33858381518110612264576122646130a2565b602002602001015189848151811061227e5761227e6130a2565b602002602001015173ffffffffffffffffffffffffffffffffffffffff1661282c9092919063ffffffff16565b806122b5816130e9565b915050612246565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff8216301415612346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b6000811180156123b0575073ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546002161515806123ae575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156118555760016123bf6104f6565b14612426576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff83166000908152609960205260409020546001166124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526125669173ffffffffffffffffffffffffffffffffffffffff16906388d686049061251f9087906024810161349b565b602060405180830381865afa15801561253c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612560919061340a565b426128b9565b1015611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b60006125fa827f01ffc9a700000000000000000000000000000000000000000000000000000000612632565b8015610607575061262b827fffffffff00000000000000000000000000000000000000000000000000000000612632565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906126ec9086906134ff565b6000604051808303818686fa925050503d8060008114612728576040519150601f19603f3d011682016040523d82523d6000602084013e61272d565b606091505b50915091506020815110156127485760009350505050610607565b8180156127645750808060200190518101906127649190613511565b9695505050505050565b600054610100900460ff16612805576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612818906037906020850190612c8e565b508051611855906038906020840190612c8e565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526118559084906128e6565b60005b600881101561060757818160200284901c63ffffffff1611156128de57610607565b6001016128bc565b6000612948826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166129f29092919063ffffffff16565b80519091501561185557808060200190518101906129669190613511565b611855576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b6060612a018484600085612a09565b949350505050565b606082471015612a9b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612b4291906134ff565b60006040518083038185875af1925050503d8060008114612b7f576040519150601f19603f3d011682016040523d82523d6000602084013e612b84565b606091505b5091509150612b94828286612b9f565b979650505050505050565b60608315612bae57508161066b565b825115612bbe5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612d82565b600183019183908215612c7e5791602002820160005b83821115612c4c57835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612c08565b8015612c7c5782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612c4c565b505b50612c8a929150612d02565b5090565b828054612c9a90613008565b90600052602060002090601f016020900481019282612cbc5760008555612c7e565b82601f10612cd557805160ff1916838001178555612c7e565b82800160010185558215612c7e579182015b82811115612c7e578251825591602001919060010190612ce7565b5b80821115612c8a5760008155600101612d03565b803573ffffffffffffffffffffffffffffffffffffffff811681146119e057600080fd5b600060208284031215612d4d57600080fd5b61066b82612d17565b60005b83811015612d71578181015183820152602001612d59565b83811115610e5d5750506000910152565b6020815260008251806020840152612da1816040850160208701612d56565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612de657600080fd5b612def83612d17565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff811681146119e057600080fd5b6000806101208385031215612e5457600080fd5b83601f840112612e6357600080fd5b60405161010080820182811067ffffffffffffffff82111715612e8857612e88612dfd565b60405284018186821115612e9b57600080fd5b855b82811015612ebc57612eae81612e2c565b825260209182019101612e9d565b509196903595509350505050565b600080600060608486031215612edf57600080fd5b612ee884612d17565b9250612ef660208501612d17565b9150604084013590509250925092565b600060208284031215612f1857600080fd5b5035919050565b600060208284031215612f3157600080fd5b813567ffffffffffffffff811115612f4857600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612f6d57600080fd5b612f7683612d17565b9150612f8460208401612d17565b90509250929050565b600080600060408486031215612fa257600080fd5b833567ffffffffffffffff80821115612fba57600080fd5b818601915086601f830112612fce57600080fd5b813581811115612fdd57600080fd5b8760208260051b8501011115612ff257600080fd5b6020928301989097509590910135949350505050565b600181811c9082168061301c57607f821691505b60208210811415613056577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561309d5761309d61305c565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156130e4576130e461305c565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561311b5761311b61305c565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261315657600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261319557600080fd5b83018035915067ffffffffffffffff8211156131b057600080fd5b6020019150368190038213156131c557600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261320157600080fd5b830160208101925035905067ffffffffffffffff81111561322157600080fd5b8036038313156131c557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806132a685612d17565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126132e157600080fd5b60a0606085015284016132f481806131cc565b608060e087015261330a61016087018284613230565b91505061331a60208301836131cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2087840301610100880152613350838284613230565b925050508261336160408401612d17565b16610120860152606082013561014086015261337f60408701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a08601526133b360808701612d17565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561341c57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561345b5761345b61305c565b500290565b600082613496577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b818110156134f2578451835293830193918301916001016134d6565b5090979650505050505050565b60008251613156818460208701612d56565b60006020828403121561352357600080fd5b8151801515811461066b57600080fdfea26469706673582212201e962e4189efddacbcf6f8d956f27f0afff36718e111184690e4e36118dcb33764736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506134c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea2646970667358221220816e8e149f7affa7a47f612aa08ba4ab07120a3a5ce1060ead933ab32f2e685c64736f6c634300080a0033"; type RedeemableERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveToken18__factory.ts b/src/typechain/factories/ReserveToken18__factory.ts index 952f061..f4b8d79 100644 --- a/src/typechain/factories/ReserveToken18__factory.ts +++ b/src/typechain/factories/ReserveToken18__factory.ts @@ -376,7 +376,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360126009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165601281565b60405160128152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860126009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea264697066735822122050b7a320de6eb03881c8230885982eacd63ff999da0cdfb2f3dd1c68081c843864736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360126009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165601281565b60405160128152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860126009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea26469706673582212208d35958bcdbd63ba92e845a3f5334175e477cc36bba1738d9a61fb33bf7632ee64736f6c634300080a0033"; type ReserveToken18ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC1155__factory.ts b/src/typechain/factories/ReserveTokenERC1155__factory.ts index caa728b..f423637 100644 --- a/src/typechain/factories/ReserveTokenERC1155__factory.ts +++ b/src/typechain/factories/ReserveTokenERC1155__factory.ts @@ -421,7 +421,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b90339062000049600660096200049a565b6200005690600a620005b4565b6040805160208101909152600081526200008a565b620007db565b805162000086906002906020840190620003de565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b336000620000fe85620001ac565b905060006200010d85620001ac565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290620001419084906200049a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4620001a38360008989898962000202565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e957620001e9620005c9565b602090810291909101015292915050565b505050505050565b62000221846001600160a01b0316620003cf60201b620009761760201c565b15620001fa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025d90899089908890889088906004016200062f565b6020604051808303816000875af19250505080156200029b575060408051601f3d908101601f19168201909252620002989181019062000676565b60015b6200035c57620002aa620006a2565b806308c379a01415620002eb5750620002c2620006fa565b80620002cf5750620002ed565b8060405162461bcd60e51b8152600401620000e7919062000789565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620001a35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b6001600160a01b03163b151590565b828054620003ec906200079e565b90600052602060002090601f0160209004810192826200041057600085556200045b565b82601f106200042b57805160ff19168380011785556200045b565b828001600101855582156200045b579182015b828111156200045b5782518255916020019190600101906200043e565b50620004699291506200046d565b5090565b5b808211156200046957600081556001016200046e565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b057620004b062000484565b500190565b600181815b80851115620004f6578160001904821115620004da57620004da62000484565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff84111562000556576200055662000484565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa62000484565b0290505b92915050565b6000620005c28383620004fe565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060757602081850181015186830182015201620005e9565b818111156200061a576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200066b90830184620005df565b979650505050505050565b6000602082840312156200068957600080fd5b81516001600160e01b031981168114620005c257600080fd5b600060033d1115620006bc5760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006f357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007095790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200073957505050505090565b8285019150815181811115620007525750505050505090565b843d87010160208285010111156200076d5750505050505090565b6200077e60208286010187620006bf565b509095945050505050565b602081526000620005c26020830184620005df565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6125d180620007eb6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611bad565b610242565b6040519081526020015b60405180910390f35b610127610122366004611c08565b610322565b604051901515815260200161010b565b61014a610145366004611c2c565b610405565b60405161010b9190611cb0565b610101600681565b61017261016d366004611e64565b610499565b005b610187610182366004611f0e565b610562565b60405161010b9190612014565b6101726101a2366004612027565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce36600461209b565b6107e5565b6101276101e13660046120d7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a36600461210a565b6107f4565b61017261023d36600461216f565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b606060028054610414906121a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610440906121a2565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f766564000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611cc3565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121f6565b6020026020010151858381518110610678576106786121f6565b6020026020010151610242565b828281518110610697576106976121f6565b60209081029190910101526106ab81612254565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f83612254565b91905055506107c933600354600660096107a9919061228d565b6107b490600a6123c5565b60405180602001604052806000815250610ff4565b565b6107d76006600961228d565b6107e290600a6123c5565b81565b6107f0338383611165565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112b9565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f766564000000000000000000000000000000000000000000000060648201526084016102e3565b61077a8383836114f7565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121f6565b602002602001015190506000858381518110610b0557610b056121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c90849061228d565b9250508190555050505080610c3090612254565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123d1565b60405180910390a4610cc4818787878787611701565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121f6565b602002602001015190506000848381518110610e4f57610e4f6121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f5781612254565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123d1565b60405180910390a460408051602081019091526000905250505050565b73ffffffffffffffffffffffffffffffffffffffff8416611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006110a38561198c565b905060006110b08561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152812080548792906110ef90849061228d565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461115c836000898989896119d7565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff841661135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006113688561198c565b905060006113758561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a1682528120805488929061147f90849061228d565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114ec848a8a8a8a8a6119d7565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006115a68461198c565b905060006115b38461198c565b604080516020808201835260009182905288825281815282822073ffffffffffffffffffffffffffffffffffffffff8b168352905220549091508481101561167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261115c565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061177890899089908890889088906004016123ff565b6020604051808303816000875af19250505080156117d1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ce9181019061246a565b60015b6118bb576117dd612487565b806308c379a0141561183157506117f26124a3565b806117fd5750611833565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611cb0565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119c6576119c66121f6565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a4e908990899088908890889060040161254b565b6020604051808303816000875af1925050508015611aa7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa49181019061246a565b60015b611ab3576117dd612487565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b84565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c0557600080fd5b50565b600060208284031215611c1a57600080fd5b8135611c2581611bd7565b9392505050565b600060208284031215611c3e57600080fd5b5035919050565b6000815180845260005b81811015611c6b57602081850181015186830182015201611c4f565b81811115611c7d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c256020830184611c45565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d3657611d36611cc3565b6040525050565b600067ffffffffffffffff821115611d5757611d57611cc3565b5060051b60200190565b600082601f830112611d7257600080fd5b81356020611d7f82611d3d565b604051611d8c8282611cf2565b83815260059390931b8501820192828101915086841115611dac57600080fd5b8286015b84811015611dc75780358352918301918301611db0565b509695505050505050565b600082601f830112611de357600080fd5b813567ffffffffffffffff811115611dfd57611dfd611cc3565b604051611e3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cf2565b818152846020838601011115611e4757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e7c57600080fd5b611e8586611b84565b9450611e9360208701611b84565b9350604086013567ffffffffffffffff80821115611eb057600080fd5b611ebc89838a01611d61565b94506060880135915080821115611ed257600080fd5b611ede89838a01611d61565b93506080880135915080821115611ef457600080fd5b50611f0188828901611dd2565b9150509295509295909350565b60008060408385031215611f2157600080fd5b823567ffffffffffffffff80821115611f3957600080fd5b818501915085601f830112611f4d57600080fd5b81356020611f5a82611d3d565b604051611f678282611cf2565b83815260059390931b8501820192828101915089841115611f8757600080fd5b948201945b83861015611fac57611f9d86611b84565b82529482019490820190611f8c565b96505086013592505080821115611fc257600080fd5b50611fcf85828601611d61565b9150509250929050565b600081518084526020808501945080840160005b8381101561200957815187529582019590820190600101611fed565b509495945050505050565b602081526000611c256020830184611fd9565b60008060006060848603121561203c57600080fd5b61204584611b84565b9250602084013567ffffffffffffffff8082111561206257600080fd5b61206e87838801611d61565b9350604086013591508082111561208457600080fd5b5061209186828701611d61565b9150509250925092565b600080604083850312156120ae57600080fd5b6120b783611b84565b9150602083013580151581146120cc57600080fd5b809150509250929050565b600080604083850312156120ea57600080fd5b6120f383611b84565b915061210160208401611b84565b90509250929050565b600080600080600060a0868803121561212257600080fd5b61212b86611b84565b945061213960208701611b84565b93506040860135925060608601359150608086013567ffffffffffffffff81111561216357600080fd5b611f0188828901611dd2565b60008060006060848603121561218457600080fd5b61218d84611b84565b95602085013595506040909401359392505050565b600181811c908216806121b657607f821691505b602082108114156121f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561228657612286612225565b5060010190565b600082198211156122a0576122a0612225565b500190565b600181815b808511156122fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122e4576122e4612225565b808516156122f157918102915b93841c93908002906122aa565b509250929050565b6000826123155750600161031c565b816123225750600061031c565b816001811461233857600281146123425761235e565b600191505061031c565b60ff84111561235357612353612225565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612381575081810a61031c565b61238b83836122a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123bd576123bd612225565b029392505050565b6000611c258383612306565b6040815260006123e46040830185611fd9565b82810360208401526123f68185611fd9565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261243860a0830186611fd9565b828103606084015261244a8186611fd9565b9050828103608084015261245e8185611c45565b98975050505050505050565b60006020828403121561247c57600080fd5b8151611c2581611bd7565b600060033d11156124a05760046000803e5060005160e01c5b90565b600060443d10156124b15790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124ff57505050505090565b82850191508151818111156125175750505050505090565b843d87010160208285010111156125315750505050505090565b61254060208286010187611cf2565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261259060a0830184611c45565b97965050505050505056fea26469706673582212205913168831f9795ef87cc4fe830a49ace8e1fd2ccb4a708350ead93fdd31f99164736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b90339062000049600660096200049a565b6200005690600a620005b4565b6040805160208101909152600081526200008a565b620007db565b805162000086906002906020840190620003de565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b336000620000fe85620001ac565b905060006200010d85620001ac565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290620001419084906200049a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4620001a38360008989898962000202565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e957620001e9620005c9565b602090810291909101015292915050565b505050505050565b62000221846001600160a01b0316620003cf60201b620009761760201c565b15620001fa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025d90899089908890889088906004016200062f565b6020604051808303816000875af19250505080156200029b575060408051601f3d908101601f19168201909252620002989181019062000676565b60015b6200035c57620002aa620006a2565b806308c379a01415620002eb5750620002c2620006fa565b80620002cf5750620002ed565b8060405162461bcd60e51b8152600401620000e7919062000789565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620001a35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b6001600160a01b03163b151590565b828054620003ec906200079e565b90600052602060002090601f0160209004810192826200041057600085556200045b565b82601f106200042b57805160ff19168380011785556200045b565b828001600101855582156200045b579182015b828111156200045b5782518255916020019190600101906200043e565b50620004699291506200046d565b5090565b5b808211156200046957600081556001016200046e565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b057620004b062000484565b500190565b600181815b80851115620004f6578160001904821115620004da57620004da62000484565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff84111562000556576200055662000484565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa62000484565b0290505b92915050565b6000620005c28383620004fe565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060757602081850181015186830182015201620005e9565b818111156200061a576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200066b90830184620005df565b979650505050505050565b6000602082840312156200068957600080fd5b81516001600160e01b031981168114620005c257600080fd5b600060033d1115620006bc5760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006f357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007095790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200073957505050505090565b8285019150815181811115620007525750505050505090565b843d87010160208285010111156200076d5750505050505090565b6200077e60208286010187620006bf565b509095945050505050565b602081526000620005c26020830184620005df565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6125d180620007eb6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611bad565b610242565b6040519081526020015b60405180910390f35b610127610122366004611c08565b610322565b604051901515815260200161010b565b61014a610145366004611c2c565b610405565b60405161010b9190611cb0565b610101600681565b61017261016d366004611e64565b610499565b005b610187610182366004611f0e565b610562565b60405161010b9190612014565b6101726101a2366004612027565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce36600461209b565b6107e5565b6101276101e13660046120d7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a36600461210a565b6107f4565b61017261023d36600461216f565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b606060028054610414906121a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610440906121a2565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611cc3565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121f6565b6020026020010151858381518110610678576106786121f6565b6020026020010151610242565b828281518110610697576106976121f6565b60209081029190910101526106ab81612254565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f83612254565b91905055506107c933600354600660096107a9919061228d565b6107b490600a6123c5565b60405180602001604052806000815250610ff4565b565b6107d76006600961228d565b6107e290600a6123c5565b81565b6107f0338383611165565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112b9565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a8383836114f7565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121f6565b602002602001015190506000858381518110610b0557610b056121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c90849061228d565b9250508190555050505080610c3090612254565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123d1565b60405180910390a4610cc4818787878787611701565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121f6565b602002602001015190506000848381518110610e4f57610e4f6121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f5781612254565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123d1565b60405180910390a460408051602081019091526000905250505050565b73ffffffffffffffffffffffffffffffffffffffff8416611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006110a38561198c565b905060006110b08561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152812080548792906110ef90849061228d565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461115c836000898989896119d7565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff841661135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006113688561198c565b905060006113758561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a1682528120805488929061147f90849061228d565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114ec848a8a8a8a8a6119d7565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006115a68461198c565b905060006115b38461198c565b604080516020808201835260009182905288825281815282822073ffffffffffffffffffffffffffffffffffffffff8b168352905220549091508481101561167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261115c565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061177890899089908890889088906004016123ff565b6020604051808303816000875af19250505080156117d1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ce9181019061246a565b60015b6118bb576117dd612487565b806308c379a0141561183157506117f26124a3565b806117fd5750611833565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611cb0565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119c6576119c66121f6565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a4e908990899088908890889060040161254b565b6020604051808303816000875af1925050508015611aa7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa49181019061246a565b60015b611ab3576117dd612487565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b84565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c0557600080fd5b50565b600060208284031215611c1a57600080fd5b8135611c2581611bd7565b9392505050565b600060208284031215611c3e57600080fd5b5035919050565b6000815180845260005b81811015611c6b57602081850181015186830182015201611c4f565b81811115611c7d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c256020830184611c45565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d3657611d36611cc3565b6040525050565b600067ffffffffffffffff821115611d5757611d57611cc3565b5060051b60200190565b600082601f830112611d7257600080fd5b81356020611d7f82611d3d565b604051611d8c8282611cf2565b83815260059390931b8501820192828101915086841115611dac57600080fd5b8286015b84811015611dc75780358352918301918301611db0565b509695505050505050565b600082601f830112611de357600080fd5b813567ffffffffffffffff811115611dfd57611dfd611cc3565b604051611e3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cf2565b818152846020838601011115611e4757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e7c57600080fd5b611e8586611b84565b9450611e9360208701611b84565b9350604086013567ffffffffffffffff80821115611eb057600080fd5b611ebc89838a01611d61565b94506060880135915080821115611ed257600080fd5b611ede89838a01611d61565b93506080880135915080821115611ef457600080fd5b50611f0188828901611dd2565b9150509295509295909350565b60008060408385031215611f2157600080fd5b823567ffffffffffffffff80821115611f3957600080fd5b818501915085601f830112611f4d57600080fd5b81356020611f5a82611d3d565b604051611f678282611cf2565b83815260059390931b8501820192828101915089841115611f8757600080fd5b948201945b83861015611fac57611f9d86611b84565b82529482019490820190611f8c565b96505086013592505080821115611fc257600080fd5b50611fcf85828601611d61565b9150509250929050565b600081518084526020808501945080840160005b8381101561200957815187529582019590820190600101611fed565b509495945050505050565b602081526000611c256020830184611fd9565b60008060006060848603121561203c57600080fd5b61204584611b84565b9250602084013567ffffffffffffffff8082111561206257600080fd5b61206e87838801611d61565b9350604086013591508082111561208457600080fd5b5061209186828701611d61565b9150509250925092565b600080604083850312156120ae57600080fd5b6120b783611b84565b9150602083013580151581146120cc57600080fd5b809150509250929050565b600080604083850312156120ea57600080fd5b6120f383611b84565b915061210160208401611b84565b90509250929050565b600080600080600060a0868803121561212257600080fd5b61212b86611b84565b945061213960208701611b84565b93506040860135925060608601359150608086013567ffffffffffffffff81111561216357600080fd5b611f0188828901611dd2565b60008060006060848603121561218457600080fd5b61218d84611b84565b95602085013595506040909401359392505050565b600181811c908216806121b657607f821691505b602082108114156121f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561228657612286612225565b5060010190565b600082198211156122a0576122a0612225565b500190565b600181815b808511156122fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122e4576122e4612225565b808516156122f157918102915b93841c93908002906122aa565b509250929050565b6000826123155750600161031c565b816123225750600061031c565b816001811461233857600281146123425761235e565b600191505061031c565b60ff84111561235357612353612225565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612381575081810a61031c565b61238b83836122a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123bd576123bd612225565b029392505050565b6000611c258383612306565b6040815260006123e46040830185611fd9565b82810360208401526123f68185611fd9565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261243860a0830186611fd9565b828103606084015261244a8186611fd9565b9050828103608084015261245e8185611c45565b98975050505050505050565b60006020828403121561247c57600080fd5b8151611c2581611bd7565b600060033d11156124a05760046000803e5060005160e01c5b90565b600060443d10156124b15790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124ff57505050505090565b82850191508151818111156125175750505050505090565b843d87010160208285010111156125315750505050505090565b61254060208286010187611cf2565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261259060a0830184611c45565b97965050505050505056fea2646970667358221220e45a04af795bdc8b41925621c711ad3086522680d304e2017b963a3253fc818c64736f6c634300080a0033"; type ReserveTokenERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts index b2dbc37..4bb2df7 100644 --- a/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts +++ b/src/typechain/factories/ReserveTokenERC20Snapshot__factory.ts @@ -376,7 +376,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b90840152815191929162000062916003916200030f565b508051620000789060049060208401906200030f565b505050620000a33360066009620000909190620003cb565b6200009d90600a620004e5565b620000a9565b62000567565b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000112600083836200019f565b8060026000828254620001269190620003cb565b90915550506001600160a01b0382166000908152602081905260408120805483929062000155908490620003cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b7838383620001db60201b620005491760201c565b6001600160a01b038316620001e057620001d1826200020b565b620001db62000243565b505050565b6001600160a01b038216620001fa57620001d1836200020b565b62000205836200020b565b620001db825b6001600160a01b0381166000908152600560209081526040808320918390529091205462000240919062000255565b62000255565b50565b6200025360066200023a60025490565b565b600062000261620002a4565b9050806200026f84620002c2565b1015620001db578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620002bd60086200030b60201b6200054e1760201c565b905090565b8054600090620002d457506000919050565b81548290620002e690600190620004fa565b81548110620002f957620002f962000514565b90600052602060002001549050919050565b5490565b8280546200031d906200052a565b90600052602060002090601f0160209004810192826200034157600085556200038c565b82601f106200035c57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038c5782518255916020019190600101906200036f565b506200039a9291506200039e565b5090565b5b808211156200039a57600081556001016200039f565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003e157620003e1620003b5565b500190565b600181815b80851115620004275781600019048211156200040b576200040b620003b5565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003b5565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003b5565b0290505b92915050565b6000620004f383836200042f565b9392505050565b6000828210156200050f576200050f620003b5565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200053f57607f821691505b602082108114156200056157634e487b7160e01b600052602260045260246000fd5b50919050565b61123e80620005776000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063981b24d011610066578063981b24d0146101f8578063a457c2d71461020b578063a9059cbb1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101a8578063902d55a5146101de57806395d89b41146101e65780639711715a146101ee57600080fd5b80632e0f2625116100d35780632e0f26251461016b578063313ce5671461017357806339509351146101825780634ee2cd7e1461019557600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610277565b60405161011a9190610e64565b60405180910390f35b610136610131366004610efb565b610309565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610f25565b610323565b61014a600681565b6040516006815260200161011a565b610136610190366004610efb565b610347565b61014a6101a3366004610efb565b610393565b61014a6101b6366004610f61565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014a610406565b61010d610420565b6101f661042f565b005b61014a610206366004610f7c565b61043a565b610136610219366004610efb565b610465565b61013661022c366004610efb565b61053b565b61014a61023f366004610f95565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461028690610fc8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290610fc8565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b600033610317818585610552565b60019150505b92915050565b600033610331858285610705565b61033c8585856107dc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610317908290869061038e90879061104b565b610552565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120819081906103c7908590610a9a565b91509150816103fb5773ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020546103fd565b805b95945050505050565b6104126006600961104b565b61041d90600a61117b565b81565b60606004805461028690610fc8565b610437610bd2565b50565b600080600061044a846006610a9a565b915091508161045b5760025461045d565b805b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033c8286868403610552565b6000336103178185856107dc565b505050565b5490565b73ffffffffffffffffffffffffffffffffffffffff83166105f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d657818110156107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610525565b6107d68484848403610552565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610525565b61092d838383610c2c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a2790849061104b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8d91815260200190565b60405180910390a36107d6565b60008060008411610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433230536e617073686f743a2069642069732030000000000000000000006044820152606401610525565b610b0f610c8e565b841115610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610525565b6000610b848486610c9e565b8454909150811415610b9d576000809250925050610bcb565b6001846001018281548110610bb457610bb4611187565b90600052602060002001549250925050610bcb565b505b9250929050565b6000610be2600880546001019055565b6000610bec610c8e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051610c1f91815260200190565b60405180910390a1919050565b73ffffffffffffffffffffffffffffffffffffffff8316610c5857610c5082610d61565b610549610da0565b73ffffffffffffffffffffffffffffffffffffffff8216610c7c57610c5083610d61565b610c8583610d61565b61054982610d61565b6000610c9960085490565b905090565b8154600090610caf5750600061031d565b82546000905b80821015610d0b576000610cc98383610db0565b905084868281548110610cde57610cde611187565b90600052602060002001541115610cf757809150610d05565b610d0281600161104b565b92505b50610cb5565b600082118015610d4057508385610d236001856111b6565b81548110610d3357610d33611187565b9060005260206000200154145b15610d5957610d506001836111b6565b9250505061031d565b50905061031d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832091839052909120546104379190610dd2565b610dd2565b610dae6006610d9b60025490565b565b6000610dbf60028484186111cd565b610dcb9084841661104b565b9392505050565b6000610ddc610c8e565b905080610de884610e1c565b1015610549578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b8054600090610e2d57506000919050565b81548290610e3d906001906111b6565b81548110610e4d57610e4d611187565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5f57600080fd5b60008060408385031215610f0e57600080fd5b610f1783610ed7565b946020939093013593505050565b600080600060608486031215610f3a57600080fd5b610f4384610ed7565b9250610f5160208501610ed7565b9150604084013590509250925092565b600060208284031215610f7357600080fd5b610dcb82610ed7565b600060208284031215610f8e57600080fd5b5035919050565b60008060408385031215610fa857600080fd5b610fb183610ed7565b9150610fbf60208401610ed7565b90509250929050565b600181811c90821680610fdc57607f821691505b60208210811415611016577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561105e5761105e61101c565b500190565b600181815b80851115610bc957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110a2576110a261101c565b808516156110af57918102915b93841c9390800290611068565b6000826110cb5750600161031d565b816110d85750600061031d565b81600181146110ee57600281146110f857611114565b600191505061031d565b60ff8411156111095761110961101c565b50506001821b61031d565b5060208310610133831016604e8410600b8410161715611137575081810a61031d565b6111418383611063565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111735761117361101c565b029392505050565b6000610dcb83836110bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111c8576111c861101c565b500390565b600082611203577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220d4557594e164e4f662efbc400df419915790fc3a9a5ec6c67b5504532e1fd9fe64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b90840152815191929162000062916003916200030f565b508051620000789060049060208401906200030f565b505050620000a33360066009620000909190620003cb565b6200009d90600a620004e5565b620000a9565b62000567565b6001600160a01b038216620001045760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b62000112600083836200019f565b8060026000828254620001269190620003cb565b90915550506001600160a01b0382166000908152602081905260408120805483929062000155908490620003cb565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b7838383620001db60201b620005491760201c565b6001600160a01b038316620001e057620001d1826200020b565b620001db62000243565b505050565b6001600160a01b038216620001fa57620001d1836200020b565b62000205836200020b565b620001db825b6001600160a01b0381166000908152600560209081526040808320918390529091205462000240919062000255565b62000255565b50565b6200025360066200023a60025490565b565b600062000261620002a4565b9050806200026f84620002c2565b1015620001db578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b6000620002bd60086200030b60201b6200054e1760201c565b905090565b8054600090620002d457506000919050565b81548290620002e690600190620004fa565b81548110620002f957620002f962000514565b90600052602060002001549050919050565b5490565b8280546200031d906200052a565b90600052602060002090601f0160209004810192826200034157600085556200038c565b82601f106200035c57805160ff19168380011785556200038c565b828001600101855582156200038c579182015b828111156200038c5782518255916020019190600101906200036f565b506200039a9291506200039e565b5090565b5b808211156200039a57600081556001016200039f565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003e157620003e1620003b5565b500190565b600181815b80851115620004275781600019048211156200040b576200040b620003b5565b808516156200041957918102915b93841c9390800290620003eb565b509250929050565b6000826200044057506001620004df565b816200044f57506000620004df565b8160018114620004685760028114620004735762000493565b6001915050620004df565b60ff841115620004875762000487620003b5565b50506001821b620004df565b5060208310610133831016604e8410600b8410161715620004b8575081810a620004df565b620004c48383620003e6565b8060001904821115620004db57620004db620003b5565b0290505b92915050565b6000620004f383836200042f565b9392505050565b6000828210156200050f576200050f620003b5565b500390565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806200053f57607f821691505b602082108114156200056157634e487b7160e01b600052602260045260246000fd5b50919050565b61123e80620005776000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063981b24d011610066578063981b24d0146101f8578063a457c2d71461020b578063a9059cbb1461021e578063dd62ed3e1461023157600080fd5b806370a08231146101a8578063902d55a5146101de57806395d89b41146101e65780639711715a146101ee57600080fd5b80632e0f2625116100d35780632e0f26251461016b578063313ce5671461017357806339509351146101825780634ee2cd7e1461019557600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610277565b60405161011a9190610e64565b60405180910390f35b610136610131366004610efb565b610309565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610f25565b610323565b61014a600681565b6040516006815260200161011a565b610136610190366004610efb565b610347565b61014a6101a3366004610efb565b610393565b61014a6101b6366004610f61565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61014a610406565b61010d610420565b6101f661042f565b005b61014a610206366004610f7c565b61043a565b610136610219366004610efb565b610465565b61013661022c366004610efb565b61053b565b61014a61023f366004610f95565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461028690610fc8565b80601f01602080910402602001604051908101604052809291908181526020018280546102b290610fc8565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b5050505050905090565b600033610317818585610552565b60019150505b92915050565b600033610331858285610705565b61033c8585856107dc565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610317908290869061038e90879061104b565b610552565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600560205260408120819081906103c7908590610a9a565b91509150816103fb5773ffffffffffffffffffffffffffffffffffffffff85166000908152602081905260409020546103fd565b805b95945050505050565b6104126006600961104b565b61041d90600a61117b565b81565b60606004805461028690610fc8565b610437610bd2565b50565b600080600061044a846006610a9a565b915091508161045b5760025461045d565b805b949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561052e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61033c8286868403610552565b6000336103178185856107dc565b505050565b5490565b73ffffffffffffffffffffffffffffffffffffffff83166105f4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610697576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d657818110156107c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610525565b6107d68484848403610552565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff8216610922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610525565b61092d838383610c2c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610525565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a2790849061104b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8d91815260200190565b60405180910390a36107d6565b60008060008411610b07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4552433230536e617073686f743a2069642069732030000000000000000000006044820152606401610525565b610b0f610c8e565b841115610b78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4552433230536e617073686f743a206e6f6e6578697374656e742069640000006044820152606401610525565b6000610b848486610c9e565b8454909150811415610b9d576000809250925050610bcb565b6001846001018281548110610bb457610bb4611187565b90600052602060002001549250925050610bcb565b505b9250929050565b6000610be2600880546001019055565b6000610bec610c8e565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb6781604051610c1f91815260200190565b60405180910390a1919050565b73ffffffffffffffffffffffffffffffffffffffff8316610c5857610c5082610d61565b610549610da0565b73ffffffffffffffffffffffffffffffffffffffff8216610c7c57610c5083610d61565b610c8583610d61565b61054982610d61565b6000610c9960085490565b905090565b8154600090610caf5750600061031d565b82546000905b80821015610d0b576000610cc98383610db0565b905084868281548110610cde57610cde611187565b90600052602060002001541115610cf757809150610d05565b610d0281600161104b565b92505b50610cb5565b600082118015610d4057508385610d236001856111b6565b81548110610d3357610d33611187565b9060005260206000200154145b15610d5957610d506001836111b6565b9250505061031d565b50905061031d565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832091839052909120546104379190610dd2565b610dd2565b610dae6006610d9b60025490565b565b6000610dbf60028484186111cd565b610dcb9084841661104b565b9392505050565b6000610ddc610c8e565b905080610de884610e1c565b1015610549578254600180820185556000858152602080822090930193909355938401805494850181558252902090910155565b8054600090610e2d57506000919050565b81548290610e3d906001906111b6565b81548110610e4d57610e4d611187565b90600052602060002001549050919050565b919050565b600060208083528351808285015260005b81811015610e9157858101830151858201604001528201610e75565b81811115610ea3576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5f57600080fd5b60008060408385031215610f0e57600080fd5b610f1783610ed7565b946020939093013593505050565b600080600060608486031215610f3a57600080fd5b610f4384610ed7565b9250610f5160208501610ed7565b9150604084013590509250925092565b600060208284031215610f7357600080fd5b610dcb82610ed7565b600060208284031215610f8e57600080fd5b5035919050565b60008060408385031215610fa857600080fd5b610fb183610ed7565b9150610fbf60208401610ed7565b90509250929050565b600181811c90821680610fdc57607f821691505b60208210811415611016577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561105e5761105e61101c565b500190565b600181815b80851115610bc957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156110a2576110a261101c565b808516156110af57918102915b93841c9390800290611068565b6000826110cb5750600161031d565b816110d85750600061031d565b81600181146110ee57600281146110f857611114565b600191505061031d565b60ff8411156111095761110961101c565b50506001821b61031d565b5060208310610133831016604e8410600b8410161715611137575081810a61031d565b6111418383611063565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111735761117361101c565b029392505050565b6000610dcb83836110bc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000828210156111c8576111c861101c565b500390565b600082611203577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220abad01b71ee3a5759eec18fe5a53aa7cb6b904eb0be68279ab829b705911f80764736f6c634300080a0033"; type ReserveTokenERC20SnapshotConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC721__factory.ts b/src/typechain/factories/ReserveTokenERC721__factory.ts index f64c867..b5304c2 100644 --- a/src/typechain/factories/ReserveTokenERC721__factory.ts +++ b/src/typechain/factories/ReserveTokenERC721__factory.ts @@ -263,7 +263,7 @@ const _abi = [ }, { internalType: "bytes", - name: "_data", + name: "data", type: "bytes", }, ], @@ -380,7 +380,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611cc280620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b610118610113366004611785565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b6040516101249190611818565b61015561015036600461182b565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d61018836600461186d565b6104ed565b005b61018d61019d366004611897565b61067a565b61018d6101b0366004611897565b61071c565b61018d6101c336600461182b565b610737565b6101556101d636600461182b565b6107d8565b6101ee6101e93660046118d3565b61088a565b604051908152602001610124565b61018d610958565b61013561097b565b6101ee60065481565b61018d6102233660046118ee565b61098a565b61018d610236366004611959565b610999565b61013561024936600461182b565b610a41565b61011861025c366004611a53565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b90611a86565b80601f01602080910402602001604051908101604052809291908181526020018280546103b790611a86565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff166104c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104f8826107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156105b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016104bb565b3373ffffffffffffffffffffffffffffffffffffffff821614806105df57506105df813361025c565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016104bb565b6106758383610b5e565b505050565b610685335b82610bfe565b610711576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610675838383610d6e565b61067583838360405180602001604052806000815250610999565b6107403361067f565b6107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f7665640000000000000000000000000000000060648201526084016104bb565b6107d581610fd5565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e000000000000000000000000000000000000000000000060648201526084016104bb565b600073ffffffffffffffffffffffffffffffffffffffff821661092f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f20616464726573730000000000000000000000000000000000000000000060648201526084016104bb565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061096883611b09565b9190505550610979336006546110a2565b565b60606001805461038b90611a86565b610995338383611264565b5050565b6109a33383610bfe565b610a2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f76656400000000000000000000000000000060648201526084016104bb565b610a3b84848484611392565b50505050565b60008181526002602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16610af5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e000000000000000000000000000000000060648201526084016104bb565b6000610b0c60408051602081019091526000815290565b90506000815111610b2c5760405180602001604052806000815250610b57565b80610b3684611435565b604051602001610b47929190611b42565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610bb8826107d8565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff16610caf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084016104bb565b6000610cba836107d8565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610d28575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610d6657508373ffffffffffffffffffffffffffffffffffffffff16610d4e8461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610d8e826107d8565b73ffffffffffffffffffffffffffffffffffffffff1614610e31576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e657200000000000000000000000000000000000000000000000000000060648201526084016104bb565b73ffffffffffffffffffffffffffffffffffffffff8216610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bb565b610ede600082610b5e565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610f14908490611b71565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610f4f908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610fe0826107d8565b9050610fed600083610b5e565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290611023908490611b71565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff821661111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016104bb565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff16156111ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906111e1908490611b88565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016104bb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b61139d848484610d6e565b6113a984848484611567565b610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b60608161147557505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561149f578061148981611b09565b91506114989050600a83611bcf565b9150611479565b60008167ffffffffffffffff8111156114ba576114ba61192a565b6040519080825280601f01601f1916602001820160405280156114e4576020820181803683370190505b5090505b8415610d66576114f9600183611b71565b9150611506600a86611be3565b611511906030611b88565b60f81b81838151811061152657611526611bf7565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350611560600a86611bcf565b94506114e8565b600073ffffffffffffffffffffffffffffffffffffffff84163b1561174c576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a02906115de903390899088908890600401611c26565b6020604051808303816000875af1925050508015611637575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261163491810190611c6f565b60015b611701573d808015611665576040519150601f19603f3d011682016040523d82523d6000602084013e61166a565b606091505b5080516116f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e746572000000000000000000000000000060648201526084016104bb565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610d66565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146107d557600080fd5b60006020828403121561179757600080fd5b8135610b5781611757565b60005b838110156117bd5781810151838201526020016117a5565b83811115610a3b5750506000910152565b600081518084526117e68160208601602086016117a2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610b5760208301846117ce565b60006020828403121561183d57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461186857600080fd5b919050565b6000806040838503121561188057600080fd5b61188983611844565b946020939093013593505050565b6000806000606084860312156118ac57600080fd5b6118b584611844565b92506118c360208501611844565b9150604084013590509250925092565b6000602082840312156118e557600080fd5b610b5782611844565b6000806040838503121561190157600080fd5b61190a83611844565b91506020830135801515811461191f57600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806000806080858703121561196f57600080fd5b61197885611844565b935061198660208601611844565b925060408501359150606085013567ffffffffffffffff808211156119aa57600080fd5b818701915087601f8301126119be57600080fd5b8135818111156119d0576119d061192a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611a1657611a1661192a565b816040528281528a6020848701011115611a2f57600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215611a6657600080fd5b611a6f83611844565b9150611a7d60208401611844565b90509250929050565b600181811c90821680611a9a57607f821691505b60208210811415611ad4577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b3b57611b3b611ada565b5060010190565b60008351611b548184602088016117a2565b835190830190611b688183602088016117a2565b01949350505050565b600082821015611b8357611b83611ada565b500390565b60008219821115611b9b57611b9b611ada565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611bde57611bde611ba0565b500490565b600082611bf257611bf2611ba0565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611c6560808301846117ce565b9695505050505050565b600060208284031215611c8157600080fd5b8151610b578161175756fea2646970667358221220dbbfffc5f27fe925cfa6e73681bbf435bc307d5e7e61e65742b3075ed5e0ae3064736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611b2880620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b6101186101133660046115eb565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b604051610124919061167e565b610155610150366004611691565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d6101883660046116d3565b610442565b005b61018d61019d3660046116fd565b6105d4565b61018d6101b03660046116fd565b610676565b61018d6101c3366004611691565b610691565b6101556101d6366004611691565b610732565b6101ee6101e9366004611739565b6107be565b604051908152602001610124565b61018d61088c565b6101356108af565b6101ee60065481565b61018d610223366004611754565b6108be565b61018d6102363660046117bf565b6108cd565b610135610249366004611691565b610975565b61011861025c3660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546103b7906118ec565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b6000610419826109e9565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061044d82610732565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806105395750610539813361025c565b6105c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610507565b6105cf8383610a74565b505050565b6105df335b82610b14565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b6105cf838383610bd4565b6105cf838383604051806020016040528060008152506108cd565b61069a336105d9565b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61072f81610e3b565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600073ffffffffffffffffffffffffffffffffffffffff8216610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610507565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061089c8361196f565b91905055506108ad33600654610f08565b565b60606001805461038b906118ec565b6108c93383836110ca565b5050565b6108d73383610b14565b610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61096f848484846111f8565b50505050565b6060610980826109e9565b600061099760408051602081019091526000815290565b905060008151116109b757604051806020016040528060008152506109e2565b806109c18461129b565b6040516020016109d29291906119a8565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610ace82610732565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b2083610732565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b8e575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610bcc57508373ffffffffffffffffffffffffffffffffffffffff16610bb48461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610bf482610732565b73ffffffffffffffffffffffffffffffffffffffff1614610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b610d44600082610a74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610d7a9084906119d7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610db59084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610e4682610732565b9050610e53600083610a74565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290610e899084906119d7565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff8216610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610507565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110479084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611203848484610bd4565b61120f848484846113cd565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b6060816112db57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561130557806112ef8161196f565b91506112fe9050600a83611a35565b91506112df565b60008167ffffffffffffffff81111561132057611320611790565b6040519080825280601f01601f19166020018201604052801561134a576020820181803683370190505b5090505b8415610bcc5761135f6001836119d7565b915061136c600a86611a49565b6113779060306119ee565b60f81b81838151811061138c5761138c611a5d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506113c6600a86611a35565b945061134e565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b2576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611444903390899088908890600401611a8c565b6020604051808303816000875af192505050801561149d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149a91810190611ad5565b60015b611567573d8080156114cb576040519150601f19603f3d011682016040523d82523d6000602084013e6114d0565b606091505b50805161155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610bcc565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461072f57600080fd5b6000602082840312156115fd57600080fd5b81356109e2816115bd565b60005b8381101561162357818101518382015260200161160b565b8381111561096f5750506000910152565b6000815180845261164c816020860160208601611608565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109e26020830184611634565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b6109e2826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119a1576119a1611940565b5060010190565b600083516119ba818460208801611608565b8351908301906119ce818360208801611608565b01949350505050565b6000828210156119e9576119e9611940565b500390565b60008219821115611a0157611a01611940565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611a4457611a44611a06565b500490565b600082611a5857611a58611a06565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611acb6080830184611634565b9695505050505050565b600060208284031215611ae757600080fd5b81516109e2816115bd56fea2646970667358221220a5bf92cfa455d02ad8ca7e20d08232e22fc1a9751952298060b1dfc5b3860ff064736f6c634300080a0033"; type ReserveTokenERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenTest__factory.ts b/src/typechain/factories/ReserveTokenTest__factory.ts index 7f4a161..384853b 100644 --- a/src/typechain/factories/ReserveTokenTest__factory.ts +++ b/src/typechain/factories/ReserveTokenTest__factory.ts @@ -352,7 +352,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000209565b5080516200007890600490602084019062000209565b505050620000a033633b9aca00670de0b6b3a76400006200009a9190620002c5565b620000a6565b6200033f565b6001600160a01b038216620001025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000110600083836200019d565b8060026000828254620001249190620002e7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000153908490620002e7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620001cd57506001600160a01b03821660009081526005602052604090205460ff16155b620002045760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000f9565b505050565b828054620002179062000302565b90600052602060002090601f0160209004810192826200023b576000855562000286565b82601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b5b8082111562000294576000815560010162000299565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002e257620002e2620002af565b500290565b60008219821115620002fd57620002fd620002af565b500190565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b610f7c806200034f6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610268578063ca7df92c1461027b578063dd62ed3e14610286578063ea49e9a2146102cc57600080fd5b806370a082311461020f57806370f0c3511461024557806395d89b411461024d578063a457c2d71461025557600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806348422faa1461018d5780635bb9058b146101b057600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610326565b60405161011a9190610d3d565b60405180910390f35b610136610131366004610dd9565b6103b8565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610e03565b6103d0565b6040516012815260200161011a565b610136610188366004610dd9565b6103f4565b61013661019b366004610e3f565b60056020526000908152604090205460ff1681565b61020d6101be366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b005b61014a61021d366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61020d610440565b61010d61045c565b610136610263366004610dd9565b61046b565b610136610276366004610dd9565b610541565b61014a633b9aca0081565b61014a610294366004610e61565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61020d6102da366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606003805461033590610e94565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610e94565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b6000336103c681858561054f565b5060019392505050565b6000336103de858285610703565b6103e98585856107da565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103c6908290869061043b908790610f17565b61054f565b3360008181526020819052604090205461045a9190610a98565b565b60606004805461033590610e94565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103e9828686840361054f565b6000336103c68185856107da565b73ffffffffffffffffffffffffffffffffffffffff83166105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d457818110156107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b6107d4848484840361054f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052b565b61092b838383610c8e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a25908490610f17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8b91815260200190565b60405180910390a36107d4565b73ffffffffffffffffffffffffffffffffffffffff8216610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b610b4782600083610c8e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c39908490610f2f565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f6565b505050565b73ffffffffffffffffffffffffffffffffffffffff82161580610cd7575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b610c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e0000000000000000000000000000000000000000000000000000604482015260640161052b565b600060208083528351808285015260005b81811015610d6a57858101830151858201604001528201610d4e565b81811115610d7c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dd457600080fd5b919050565b60008060408385031215610dec57600080fd5b610df583610db0565b946020939093013593505050565b600080600060608486031215610e1857600080fd5b610e2184610db0565b9250610e2f60208501610db0565b9150604084013590509250925092565b600060208284031215610e5157600080fd5b610e5a82610db0565b9392505050565b60008060408385031215610e7457600080fd5b610e7d83610db0565b9150610e8b60208401610db0565b90509250929050565b600181811c90821680610ea857607f821691505b60208210811415610ee2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f2a57610f2a610ee8565b500190565b600082821015610f4157610f41610ee8565b50039056fea26469706673582212206a9cdbc492fddcff65027fc45847297b2584133d3e92b815396112c1f7a832be64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000209565b5080516200007890600490602084019062000209565b505050620000a033633b9aca00670de0b6b3a76400006200009a9190620002c5565b620000a6565b6200033f565b6001600160a01b038216620001025760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b62000110600083836200019d565b8060026000828254620001249190620002e7565b90915550506001600160a01b0382166000908152602081905260408120805483929062000153908490620002e7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382161580620001cd57506001600160a01b03821660009081526005602052604090205460ff16155b620002045760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000f9565b505050565b828054620002179062000302565b90600052602060002090601f0160209004810192826200023b576000855562000286565b82601f106200025657805160ff191683800117855562000286565b8280016001018555821562000286579182015b828111156200028657825182559160200191906001019062000269565b506200029492915062000298565b5090565b5b8082111562000294576000815560010162000299565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620002e257620002e2620002af565b500290565b60008219821115620002fd57620002fd620002af565b500190565b600181811c908216806200031757607f821691505b602082108114156200033957634e487b7160e01b600052602260045260246000fd5b50919050565b610f7c806200034f6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a9059cbb11610066578063a9059cbb14610268578063ca7df92c1461027b578063dd62ed3e14610286578063ea49e9a2146102cc57600080fd5b806370a082311461020f57806370f0c3511461024557806395d89b411461024d578063a457c2d71461025557600080fd5b8063313ce567116100d3578063313ce5671461016b578063395093511461017a57806348422faa1461018d5780635bb9058b146101b057600080fd5b806306fdde0314610105578063095ea7b31461012357806318160ddd1461014657806323b872dd14610158575b600080fd5b61010d610326565b60405161011a9190610d3d565b60405180910390f35b610136610131366004610dd9565b6103b8565b604051901515815260200161011a565b6002545b60405190815260200161011a565b610136610166366004610e03565b6103d0565b6040516012815260200161011a565b610136610188366004610dd9565b6103f4565b61013661019b366004610e3f565b60056020526000908152604090205460ff1681565b61020d6101be366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b005b61014a61021d366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61020d610440565b61010d61045c565b610136610263366004610dd9565b61046b565b610136610276366004610dd9565b610541565b61014a633b9aca0081565b61014a610294366004610e61565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b61020d6102da366004610e3f565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055565b60606003805461033590610e94565b80601f016020809104026020016040519081016040528092919081815260200182805461036190610e94565b80156103ae5780601f10610383576101008083540402835291602001916103ae565b820191906000526020600020905b81548152906001019060200180831161039157829003601f168201915b5050505050905090565b6000336103c681858561054f565b5060019392505050565b6000336103de858285610703565b6103e98585856107da565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103c6908290869061043b908790610f17565b61054f565b3360008181526020819052604090205461045a9190610a98565b565b60606004805461033590610e94565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610534576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103e9828686840361054f565b6000336103c68185856107da565b73ffffffffffffffffffffffffffffffffffffffff83166105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107d457818110156107c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161052b565b6107d4848484840361054f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661087d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff8216610920576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161052b565b61092b838383610c8e565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a25908490610f17565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a8b91815260200190565b60405180910390a36107d4565b73ffffffffffffffffffffffffffffffffffffffff8216610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b610b4782600083610c8e565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610bfd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161052b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c39908490610f2f565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016106f6565b505050565b73ffffffffffffffffffffffffffffffffffffffff82161580610cd7575073ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff16155b610c89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e0000000000000000000000000000000000000000000000000000604482015260640161052b565b600060208083528351808285015260005b81811015610d6a57858101830151858201604001528201610d4e565b81811115610d7c576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dd457600080fd5b919050565b60008060408385031215610dec57600080fd5b610df583610db0565b946020939093013593505050565b600080600060608486031215610e1857600080fd5b610e2184610db0565b9250610e2f60208501610db0565b9150604084013590509250925092565b600060208284031215610e5157600080fd5b610e5a82610db0565b9392505050565b60008060408385031215610e7457600080fd5b610e7d83610db0565b9150610e8b60208401610db0565b90509250929050565b600181811c90821680610ea857607f821691505b60208210811415610ee2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f2a57610f2a610ee8565b500190565b600082821015610f4157610f41610ee8565b50039056fea264697066735822122046048e599cc98133d70c948f103123dd7b78360105bb5e65fcc5160e46fb828664736f6c634300080a0033"; type ReserveTokenTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveToken__factory.ts b/src/typechain/factories/ReserveToken__factory.ts index a01cff0..b1d44d9 100644 --- a/src/typechain/factories/ReserveToken__factory.ts +++ b/src/typechain/factories/ReserveToken__factory.ts @@ -373,7 +373,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea2646970667358221220206ed2a3bafa10a36bfdf67bd6392e6552dabe3d043c3788fdd78f69da42507464736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea2646970667358221220f04638ff52d92a694e41062191b1ab6e745b6bebfa49858b33d9e84fa9bd2f7464736f6c634300080a0033"; type ReserveTokenConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleFactory__factory.ts b/src/typechain/factories/SaleFactory__factory.ts index 6f5aba2..9615c94 100644 --- a/src/typechain/factories/SaleFactory__factory.ts +++ b/src/typechain/factories/SaleFactory__factory.ts @@ -239,7 +239,7 @@ const _abi = [ ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b5060405162006ddb38038062006ddb833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b6159a3806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea2646970667358221220e3eef224e8797cb9b10ccecbe6ab8e1bb13cb6d44116f47500122da877eebdd264736f6c634300080a00336101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea264697066735822122078425b57b61d0cf4d634d2b8a85eec102266c7dbba468b3f65c1a8ebace070a364736f6c634300080a0033"; + "0x60a06040523480156200001157600080fd5b5060405162006d3838038062006d38833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b615900806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea26469706673582212207ffbc045c1d2983aba7165cb30a2c58f79b65a6675623ca3c332301092a3180c64736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005900380380620059008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161575d620001a36000396000610abb01526000610601015260006108580152600061087f015261575d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461445e565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046144a9565b6103e3565b005b61012f61013f366004614609565b6104ce565b61012f610152366004614743565b610cba565b61015f610f06565b6040519015158152602001610113565b61012f610f1d565b61012f611111565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614755565b61120c565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61196a565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526127ea60e082018190526128de61010083015261296a610120830152612a8b610140830152610160820152612b34610180820152612c3c6101a0820152612d106101c0820152612f0d6101e0820152612f18610200820152612f23610220820152612f2e610240820152612f39610260820152612f6d610280820152612fd36102a08201526130396102c082015261306d6102e08201526130a16103008201526130d66103208201526131316103408201526131876103608201526131b06103808201526132076103a08201526132346103c082015261328b6103e08201526132f66104008201526133536104208201526133916104408201526133ca6104608201526133fe6104808201526134306104a08201526134626104c08201526134946104e08201526134c861050082015261351a61052082015261355361054082015261360561056082015261373261058082015261378e6105a08201526138486105c080830191909152815290516101139190614844565b600d5460ff1660405161011391906148c1565b600754610183565b6000806103da6103d4611a66565b84611ac3565b91509150915091565b6002600d5460ff1660038111156103fc576103fc614857565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611b64565b5050565b600054610100900460ff16158080156104ee5750600054600160ff909116105b806105085750303b158015610508575060005460ff166001145b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105ff8360800135611c38565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b61069b6060840135426148fe565b600e5560a0830135610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506107546040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107ec6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107ac579050509050828160008151811061081557610815614916565b6020026020010181905250818160018151811061083457610834614916565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108a88a80614945565b856040518463ffffffff1660e01b81526004016108c793929190614b8b565b6000604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261092c9190810190614c3c565b905061093781611d63565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561098c60408801602089016144a9565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a1160608801604089016144a9565b73ffffffffffffffffffffffffffffffffffffffff9081166008558651604001511615610a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610b0991908e01908e016144a9565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610b869190614cb3565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610bb19190614844565b6020604051808303816000875af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190614dac565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610c459033908b908590614dc9565b60405180910390a150505050508015610cb557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610cd357610cd3614857565b1415610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610d5457610d54614857565b14610d6157610d61611dee565b336000908152600f602090815260408083209051909291610d8491859101614f22565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610db990614f30565b9091555060009050610dd360808301356060840135611f8d565b90508060066000828254610de79190614f65565b92505081905550816060013560056000828254610e0491906148fe565b909155505060408201803590601190600090610e2390602087016144a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190614f65565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610ea39033908590614f7c565b60405180910390a1600754610ed49073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fb5565b6104ca33610ee66040850135846148fe565b60085473ffffffffffffffffffffffffffffffffffffffff169190611b64565b6000610f18610f13611a66565b612013565b905090565b42600e5410610f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610fa157610fa1614857565b1480610fc357506001600d5460ff166003811115610fc157610fc1614857565b145b611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156110f757600080fd5b505af115801561110b573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561112a5761112a614857565b14611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b61119c610f13611a66565b611202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b61120a612079565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561124b5760035473ffffffffffffffffffffffffffffffffffffffff16611279565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261131b91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156113ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b6002600455604083015161145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006114d8611a66565b90506114e381612013565b15611514576000600d5460ff16600381111561150157611501614857565b141561150f5761150f612079565b61153b565b6001600d5460ff16600381111561152d5761152d614857565b141561153b5761153b6120d9565b6001600d5460ff16600381111561155457611554614857565b146115bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006115d6600554866060015161222b90919063ffffffff16565b90506000806115e58484611ac3565b909250905060006115f6838561222b565b90508760400151811015611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156116d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006116e08383611f8d565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061173983614fa6565b9091555050336000908152600f60209081526040808320905190929161176191859101614fdf565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061179690614fa6565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916117d89084906148fe565b9250508190555082600560008282546117f19190614f65565b92505081905550816006600082825461180a91906148fe565b9250508190555061184733308c602001518561182691906148fe565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fb5565b60075461186b9073ffffffffffffffffffffffffffffffffffffffff163385611b64565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b8360405161189e9392919061502e565b60405180910390a16118af87612013565b1561192957600c546005541015611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611931565b6119316120d9565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff16600381111561198357611983614857565b146119ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b6119f5610f13611a66565b15611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61120a6120d9565b611a986040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610f1890611abe9073ffffffffffffffffffffffffffffffffffffffff16612241565b61226f565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611afa818660016123db565b506000808660200151600288600001510381518110611b1b57611b1b614916565b60200260200101518760200151600189600001510381518110611b4057611b40614916565b602002602001015191509150611b568760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cb59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126b2565b60008111611ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611d2257611d226150d1565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611d8e83604051602001611d7a9190615100565b6040516020818303038152906040526127be565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611de8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e2d5760035473ffffffffffffffffffffffffffffffffffffffff16611e5b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611efd91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fa28385615126565b611fac9190615192565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261110b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bb6565b60006001600554101561202857506000919050565b612043604051806020016040528060008152508360006123db565b50600080836020015160018560000151038151811061206457612064614916565b6020026020010151119050611faf8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b5460065410156000816120ef5760036120f2565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600381111561213657612136614857565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd338260405161216c9291906151cd565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121df57600080fd5b505af11580156121f3573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611b64565b600081831061223a5781611fac565b5090919050565b6060611faf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6138c4565b6122a16040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122d36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115612307576123076144c6565b604051908082528060200260200182016040528015612330578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115612367576123676144c6565b604051908082528060200260200182016040528015612390578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123ca5781602082026020018401528151602001820191506001810190506123a3565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612698576003890198508886015180601f1a975061ffff8160081c169850506006881015612610578761245e57866020028401518252602082019150612623565b600188141561247b57602087028301518252602082019150612623565b6002881415612508578c5187602002106124f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d01518252602082019150612623565b600388141561255157600061253f604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612623565b600488141561256d576125668d8d848a6139ac565b9150612623565b60608761259b578c6040516020016125859190615232565b60405160208183030381529060405290506125fa565b60018814156125b4576125ad8d613b1c565b90506125fa565b60028814156125d0576020808e01516040516125859201615308565b60038814156125fa578c516040805160208101929092520160405160208183030381529060405290505b80511561260a5761260a81613c59565b50612623565b8761261f888463ffffffff8416565b9250505b60208c0151518c511115612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b612419565b6020838303048c52509750505050505050505b9392505050565b6000612714826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ceb9092919063ffffffff16565b805190915015610cb55780806020019051810190612732919061533e565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b60608151826040516020016127d4929190615360565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156128ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d191906153f7565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e91906153f7565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7d91906153f7565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614dac565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612a3c565b60008060008467ffffffffffffffff811115612d2e57612d2e6144c6565b604051908082528060200260200182016040528015612d57578160200160208202803683370190505b50905060008567ffffffffffffffff811115612d7557612d756144c6565b604051908082528060200260200182016040528015612d9e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612df3578251815260209283019201612ddb565b5050602088028101602084015b81831015612e18578251815260209283019201612e00565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612e729087908790600401615410565b600060405180830381865afa158015612e8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ed59190810190615473565b9050846020820160208a0281015b80821015612efe578151835260209283019290910190612ee3565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613cfa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182612fcd858a613cfa565b90613d7b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182613033858a613cfa565b90611f8d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613d90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613ddb565b6000602083028203805b838110156130cb57805180156130c25782526130cb565b506020016130ab565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156130cb5780516131a857600082526130cb565b602001613191565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156132c957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e8575080516020909101906132e18382613e39565b925061329b565b505081526020019392505050565b6020828102820380516000928201835b858210801561333457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e85750805160209091019061334c8382613e74565b9250613306565b6020828102820380516000928201835b85821080156133725750826000105b156132e85750805160209091019061338a8382613ea3565b9250613363565b600060208302820380516000602083015b858110156132e857805183019150828210156133bd57600080fd5b90915081906020016133a2565b600060208302820380516000602083015b858110156132e85780519150816133f157600080fd5b91819004916020016133db565b6020828102820380516000928201835b858210156132e8575080516020909101906134298184615639565b925061340e565b6020828102820380516000928201835b858210156132e85750805182811115613457578092505b602082019150613440565b6020828102820380516000928201835b858210156132e85750805182811015613489578092505b602082019150613472565b600060208302820380516000602083015b858110156132e85780519150816134bb57600080fd5b91819006916020016134a5565b60006020830282038051600080602084015b8681101561350b5783156135035780519250828402915082848304146134ff57600080fd5b8193505b6020016134da565b50505081526020019392505050565b600060208302820380516000602083015b858110156132e8578051830391508282111561354657600080fd5b909150819060200161352b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612a3c9086908690600401615645565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906136de90879087908790600401615674565b602060405180830381865afa1580156136fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371f91906153f7565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d18383613eb9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156137bc576137bc6144c6565b6040519080825280602002602001820160405280156137e5578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613821578151816020018601526020820191506020810190506137ff565b5050519050600061383483838989613f18565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856138b585858585614068565b90955250949695505050505050565b6060833b806138e35750506040805160208101909152600081526126ab565b808411156139015750506040805160208101909152600081526126ab565b8383101561394c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b83830384820360008282106139615782613963565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826139eb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613a36565b8260011415613a0f57506fffffffffffffffffffffffffffffffff90506080613a36565b8260021415613a2b575067ffffffffffffffff90506040613a36565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613a5957613a596144c6565b604051908082528060200260200182016040528015613a82578160200160208202803683370190505b50905060208082019083028a03815b8b821015613aa9578151815260209182019101613a91565b505060608b015160808c015160209081029091010160005b610100811015613b075760208502830182845b82811015613af0578051841c8a16825260209182019101613ad4565b505050613afe8e8e8b6123db565b9b508501613ac1565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613b689190615308565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613ba492916020016156a9565b604051602081830303815290604052905060005b856040015151811015613c50578186604001518281518110613bdc57613bdc614916565b60200260200101515160001b87604001518381518110613bfe57613bfe614916565b6020026020010151604051602001613c18939291906156cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613bb8565b50949350505050565b613ce881604051602401613c6d9190614844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261410e565b50565b6060613b14848460008561412f565b6000808260121415613d0f5783915050611faf565b8260121115613d3b57506012829003613d2981600a615639565b613d339085615126565b915050611faf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d6a81600a615639565b613d339085615192565b5092915050565b600081611fa2670de0b6b3a764000085615126565b600081810b613da0575081611faf565b60008260000b1315613dc857613db782600a615706565b613dc19084615126565b9050611faf565b60ff600083900316613d6a81600a615639565b6000806012831415613df05783915050611faf565b8260121115613e0a57506012829003613d6a81600a615639565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d2981600a615639565b6000828201838110613e4b5780613b14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613e8357506000611faf565b82820282848281613e9657613e96615163565b041415613e4b5780613b14565b6000818311613eb3576000611fac565b50900390565b60008060015b60088111613f10576000613ed386836142c5565b90506000613ee186846142c5565b90506000613eef8383613ea3565b9050613eff856001860383614372565b94505060019092019150613ebf9050565b509392505050565b835160009081908190819060015b6008811161405a57600092508287613f5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613f63565b5060005b60005b8381101561401857613f918c8281518110613f8357613f83614916565b6020026020010151846142c5565b95508a8611613fe35788613fb057613fa9868361222b565b9150613fda565b6001891415613fc357613fa986836143fb565b600289148015613fd1575084155b15613fda578591505b60019450614010565b89614010577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614018565b600101613f66565b508361404157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61404f866001840383614372565b955050600101613f26565b509298975050505050505050565b60008260088111156140d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141025763ffffffff6020820290811b199890981685891b179791506001016140da565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156141c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b61423f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516142689190615715565b60006040518083038185875af1925050503d80600081146142a5576040519150601f19603f3d011682016040523d82523d6000602084013e6142aa565b606091505b50915091506142ba82828661440b565b979650505050505050565b6000816008811115614333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143415760009150613d74565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561223a5781611fac565b6060831561441a5750816126ab565b82511561442a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9190614844565b60006020828403121561447057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613ce857600080fd5b80356144a481614477565b919050565b6000602082840312156144bb57600080fd5b81356126ab81614477565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614518576145186144c6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614565576145656144c6565b604052919050565b600067ffffffffffffffff821115614587576145876144c6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126145c457600080fd5b81356145d76145d28261456d565b61451e565b8181528460208386010111156145ec57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561461c57600080fd5b823567ffffffffffffffff8082111561463457600080fd5b9084019060e0828703121561464857600080fd5b9092506020840135908082111561465e57600080fd5b908401906080828703121561467257600080fd5b61467a6144f5565b82358281111561468957600080fd5b83016080818903121561469b57600080fd5b6146a36144f5565b8135848111156146b257600080fd5b6146be8a8285016145b3565b8252506020820135848111156146d357600080fd5b6146df8a8285016145b3565b602083015250604082013593506146f584614477565b83604082015260608201356060820152808352505061471660208401614499565b60208201526040830135604082015261473160608401614499565b60608201528093505050509250929050565b600060a08284031215611de857600080fd5b600060a0828403121561476757600080fd5b60405160a0810181811067ffffffffffffffff8211171561478a5761478a6144c6565b604052823561479881614477565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b838110156147e95781810151838201526020016147d1565b8381111561110b5750506000910152565b600081518084526148128160208601602086016147ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fac60208301846147fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106148bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611faf8284614886565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614911576149116148cf565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261497957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126149b857600080fd5b830160208101925035905067ffffffffffffffff8111156149d857600080fd5b8060051b3603831315611b5d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614a6557600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614a928384614983565b604086528281845260608701905060608260051b88010193508260005b83811015614b5c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614b1057600080fd5b85018035602067ffffffffffffffff821115614b2b57600080fd5b813603881315614b3a57600080fd5b614b4789838386016149ea565b98509485019493909301925050600101614aaf565b5050505050614b6e6020840184614983565b8583036020870152614b81838284614a33565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614bbb82850187614a82565b84810360408681019190915286518083528388019284019060005b81811015614c2c578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614bd6565b50909a9950505050505050505050565b600060208284031215614c4e57600080fd5b815167ffffffffffffffff811115614c6557600080fd5b8201601f81018413614c7657600080fd5b8051614c846145d28261456d565b818152856020838501011115614c9957600080fd5b614caa8260208301602086016147ce565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614cfa6101408601826147fa565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614d3582826147fa565b91505082604083015116610100860152606082015161012086015260408601519250614d79606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614caa60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614dbe57600080fd5b81516126ab81614477565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614e1d57600080fd5b60e06060840152614e346101408401868301614a82565b9050614e4260208601614499565b73ffffffffffffffffffffffffffffffffffffffff166080840152614e6960408601614499565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613b14604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614ee881614477565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611faf8284614ed6565b600081614f3f57614f3f6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614f7757614f776148cf565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126ab6020830184614ed6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614fd857614fd86148cf565b5060010190565b60a08101611faf82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613b1460c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151198160018501602087016147ce565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561515e5761515e6148cf565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826151c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126ab6020830184614886565b600081518084526020808501945080840160005b838110156152275781518752958201959082019060010161520b565b509495945050505050565b600060208083528351818401528084015160a0604085015261525760c08501826151f7565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156152d057848783030184526152be8287516147fa565b958801959388019391506001016152a4565b5060608a01519650838982030160808a01526152ec81886151f7565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561533257815185529382019390820190600101615316565b50929695505050505050565b60006020828403121561535057600080fd5b815180151581146126ab57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516153e981600e8501602087016147ce565b91909101600e019392505050565b60006020828403121561540957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561545f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161542d565b50505083810382850152614b8181866151f7565b6000602080838503121561548657600080fd5b825167ffffffffffffffff8082111561549e57600080fd5b818501915085601f8301126154b257600080fd5b8151818111156154c4576154c46144c6565b8060051b91506154d584830161451e565b81815291830184019184810190888411156154ef57600080fd5b938501935b8385101561550d578451825293850193908501906154f4565b98975050505050505050565b600181815b8085111561557257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615558576155586148cf565b8085161561556557918102915b93841c939080029061551e565b509250929050565b60008261558957506001611faf565b8161559657506000611faf565b81600181146155ac57600281146155b6576155d2565b6001915050611faf565b60ff8411156155c7576155c76148cf565b50506001821b611faf565b5060208310610133831016604e8410600b84101617156155f5575081810a611faf565b6155ff8383615519565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615631576156316148cf565b029392505050565b6000611fac838361557a565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613b1460408301846151f7565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614caa60608301846151f7565b828152600082516156c18160208501602087016147ce565b919091016020019392505050565b600084516156e18184602089016147ce565b820184815283516156f98160208085019088016147ce565b0160200195945050505050565b6000611fac60ff84168361557a565b600082516149798184602087016147ce56fea2646970667358221220f9203032a8d2e0e66b9e3b314b3e0c47b248b16ae69eb4a32b418064234277d464736f6c634300080a0033"; type SaleFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleReentrant__factory.ts b/src/typechain/factories/SaleReentrant__factory.ts index 229210e..55995b5 100644 --- a/src/typechain/factories/SaleReentrant__factory.ts +++ b/src/typechain/factories/SaleReentrant__factory.ts @@ -418,7 +418,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220f97fa3a92bfa3e45a43592f581cb7337ce9d1d9584453661015bd3d8931fd48464736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220e0dd9d57fbbc3948965178d9230a25b052de00d9ae7873a64d55485458ea29a764736f6c634300080a0033"; type SaleReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Sale__factory.ts b/src/typechain/factories/Sale__factory.ts index 8d6cb3a..14c6263 100644 --- a/src/typechain/factories/Sale__factory.ts +++ b/src/typechain/factories/Sale__factory.ts @@ -743,7 +743,7 @@ const _abi = [ ]; const _bytecode = - "0x6101006040523480156200001257600080fd5b50604051620059a3380380620059a38339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e051615800620001a360003960006109d80152600061051e015260006107750152600061079c01526158006000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd366004614506565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a36600461454c565b6103e3565b005b61012f61013f3660046146ac565b6104ce565b61012f6101523660046147e6565b610bd7565b61015f610e23565b6040519015158152602001610113565b61012f610e3a565b61012f61102e565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b63660046147f8565b611129565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f611887565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261289260e08201819052612986610100830152612a12610120830152612b33610140830152610160820152612bdc610180820152612ce46101a0820152612db86101c0820152612fb56101e0820152612fc0610200820152612fcb610220820152612fd6610240820152612fe161026082015261301561028082015261307b6102a08201526130e16102c08201526131156102e082015261314961030082015261317e6103208201526131d961034082015261322f6103608201526132586103808201526132af6103a08201526132dc6103c08201526133336103e082015261339e6104008201526133fb6104208201526134396104408201526134726104608201526134a66104808201526134d86104a082015261350a6104c082015261353c6104e08201526135706105008201526135c26105208201526135fb6105408201526136ad6105608201526137da6105808201526138366105a08201526138f06105c0808301919091528152905161011391906148e7565b600d5460ff166040516101139190614964565b600754610183565b6000806103da6103d4611983565b846119e0565b91509150915091565b6002600d5460ff1660038111156103fc576103fc6148fa565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611a81565b5050565b60006104da6001611b55565b9050801561050f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61051c8360800135611ce0565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156105aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b6105b86060840135426149a1565b600e5560a0830135610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506106716040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107096040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816106c95790505090508281600081518110610732576107326149b9565b60200260200101819052508181600181518110610751576107516149b9565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006107c58a806149e8565b856040518463ffffffff1660e01b81526004016107e493929190614c2e565b6000604051808303816000875af1158015610803573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108499190810190614cdf565b905061085481611e0b565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556108a9604088016020890161454c565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561092e606088016040890161454c565b73ffffffffffffffffffffffffffffffffffffffff90811660085586516040015116156109b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610a2691908e01908e0161454c565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610aa39190614d56565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610ace91906148e7565b6020604051808303816000875af1158015610aed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b119190614e4f565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610b629033908b908590614e6c565b60405180910390a150505050508015610bd257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610bf057610bf06148fa565b1415610c58576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610c7157610c716148fa565b14610c7e57610c7e611e96565b336000908152600f602090815260408083209051909291610ca191859101614fc5565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610cd690614fd3565b9091555060009050610cf060808301356060840135612035565b90508060066000828254610d049190615008565b92505081905550816060013560056000828254610d2191906149a1565b909155505060408201803590601190600090610d40906020870161454c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d899190615008565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610dc0903390859061501f565b60405180910390a1600754610df19073ffffffffffffffffffffffffffffffffffffffff163330606086013561205d565b6104ca33610e036040850135846149a1565b60085473ffffffffffffffffffffffffffffffffffffffff169190611a81565b6000610e35610e30611983565b6120bb565b905090565b42600e5410610ea5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610ebe57610ebe6148fa565b1480610ee057506001600d5460ff166003811115610ede57610ede6148fa565b145b610f46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561101457600080fd5b505af1158015611028573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115611047576110476148fa565b146110ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b6110b9610e30611983565b61111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b611127612121565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff16156111685760035473ffffffffffffffffffffffffffffffffffffffff16611196565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261123891906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a160026004541415611309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b60026004556040830151611379576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156113eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006113f5611983565b9050611400816120bb565b15611431576000600d5460ff16600381111561141e5761141e6148fa565b141561142c5761142c612121565b611458565b6001600d5460ff16600381111561144a5761144a6148fa565b141561145857611458612181565b6001600d5460ff166003811115611471576114716148fa565b146114d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006114f360055486606001516122d390919063ffffffff16565b905060008061150284846119e0565b9092509050600061151383856122d3565b90508760400151811015611583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156115f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006115fd8383612035565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061165683615049565b9091555050336000908152600f60209081526040808320905190929161167e91859101615082565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906116b390615049565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916116f59084906149a1565b92505081905550826005600082825461170e9190615008565b92505081905550816006600082825461172791906149a1565b9250508190555061176433308c602001518561174391906149a1565b60085473ffffffffffffffffffffffffffffffffffffffff1692919061205d565b6007546117889073ffffffffffffffffffffffffffffffffffffffff163385611a81565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516117bb939291906150d1565b60405180910390a16117cc876120bb565b1561184657600c546005541015611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b61184e565b61184e612181565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff1660038111156118a0576118a06148fa565b14611907576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b611912610e30611983565b1561197b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b611127612181565b6119b56040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610e35906119db9073ffffffffffffffffffffffffffffffffffffffff166122e9565b612317565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611a1781866001612483565b506000808660200151600288600001510381518110611a3857611a386149b9565b60200260200101518760200151600189600001510381518110611a5d57611a5d6149b9565b602002602001015191509150611a738760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610bd29084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261275a565b60008054610100900460ff1615611c0c578160ff166001148015611b785750303b155b611c04576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b506000919050565b60005460ff808416911610611ca3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b60008111611d4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611dba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611dca57611dca615174565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611e3683604051602001611e2291906151a3565b604051602081830303815290604052612866565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611e90576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611ed55760035473ffffffffffffffffffffffffffffffffffffffff16611f03565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611f95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611fa591906149a1565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a764000061204a83856151c9565b6120549190615235565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526110289085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ad3565b6000600160055410156120d057506000919050565b6120eb60405180602001604052806000815250836000612483565b50600080836020015160018560000151038151811061210c5761210c6149b9565b60200260200101511190506120578360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b54600654101560008161219757600361219a565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360038111156121de576121de6148fa565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051612214929190615270565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561228757600080fd5b505af115801561229b573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611a81565b60008183106122e25781612054565b5090919050565b60606120578260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61396c565b6123496040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61237b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156123af576123af614569565b6040519080825280602002602001820160405280156123d8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561240f5761240f614569565b604051908082528060200260200182016040528015612438578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561247257816020820260200184015281516020018201915060018101905061244b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612740576003890198508886015180601f1a975061ffff8160081c1698505060068810156126b85787612506578660200284015182526020820191506126cb565b6001881415612523576020870283015182526020820191506126cb565b60028814156125b0578c518760200210612599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d015182526020820191506126cb565b60038814156125f95760006125e7604080518082018252600080825260209182015281518083019092526005825260049082015290565b518801548352506020909101906126cb565b60048814156126155761260e8d8d848a613a54565b91506126cb565b606087612643578c60405160200161262d91906152d5565b60405160208183030381529060405290506126a2565b600188141561265c576126558d613bc4565b90506126a2565b6002881415612678576020808e015160405161262d92016153ab565b60038814156126a2578c516040805160208101929092520160405160208183030381529060405290505b8051156126b2576126b281613d01565b506126cb565b876126c7888463ffffffff8416565b9250505b60208c0151518c51111561273b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b6124c1565b6020838303048c52509750505050505050505b9392505050565b60006127bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613d939092919063ffffffff16565b805190915015610bd257808060200190518101906127da91906153e1565b610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b606081518260405160200161287c929190615403565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612979919061549a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a06919061549a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b25919061549a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612938565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612c9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cc19190614e4f565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612ae4565b60008060008467ffffffffffffffff811115612dd657612dd6614569565b604051908082528060200260200182016040528015612dff578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e1d57612e1d614569565b604051908082528060200260200182016040528015612e46578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612e9b578251815260209283019201612e83565b5050602088028101602084015b81831015612ec0578251815260209283019201612ea8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f1a90879087906004016154b3565b600060405180830381865afa158015612f37573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612f7d9190810190615516565b9050846020820160208a0281015b80821015612fa6578151835260209283019290910190612f8b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613da2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361297982613075858a613da2565b90613e23565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612979826130db858a613da2565b90612035565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e38565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a068287613e83565b6000602083028203805b83811015613173578051801561316a578252613173565b50602001613153565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131735780516132505760008252613173565b602001613239565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561337157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133898382613ee1565b9250613343565b505081526020019392505050565b6020828102820380516000928201835b85821080156133dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15613390575080516020909101906133f48382613f1c565b92506133ae565b6020828102820380516000928201835b858210801561341a5750826000105b15613390575080516020909101906134328382613f4b565b925061340b565b600060208302820380516000602083015b85811015613390578051830191508282101561346557600080fd5b909150819060200161344a565b600060208302820380516000602083015b8581101561339057805191508161349957600080fd5b9181900491602001613483565b6020828102820380516000928201835b85821015613390575080516020909101906134d181846156dc565b92506134b6565b6020828102820380516000928201835b8582101561339057508051828111156134ff578092505b6020820191506134e8565b6020828102820380516000928201835b858210156133905750805182811015613531578092505b60208201915061351a565b600060208302820380516000602083015b8581101561339057805191508161356357600080fd5b918190069160200161354d565b60006020830282038051600080602084015b868110156135b35783156135ab5780519250828402915082848304146135a757600080fd5b8193505b602001613582565b50505081526020019392505050565b600060208302820380516000602083015b8581101561339057805183039150828211156135ee57600080fd5b90915081906020016135d3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612ae490869086906004016156e8565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061378690879087908790600401615717565b602060405180830381865afa1580156137a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c7919061549a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129798383613f61565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561386457613864614569565b60405190808252806020026020018201604052801561388d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156138c9578151816020018601526020820191506020810190506138a7565b505051905060006138dc83838989613fc0565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561395d85858585614110565b90955250949695505050505050565b6060833b8061398b575050604080516020810190915260008152612753565b808411156139a9575050604080516020810190915260008152612753565b838310156139f4576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b8383038482036000828210613a095782613a0b565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613a9357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613ade565b8260011415613ab757506fffffffffffffffffffffffffffffffff90506080613ade565b8260021415613ad3575067ffffffffffffffff90506040613ade565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b0157613b01614569565b604051908082528060200260200182016040528015613b2a578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b51578151815260209182019101613b39565b505060608b015160808c015160209081029091010160005b610100811015613baf5760208502830182845b82811015613b98578051841c8a16825260209182019101613b7c565b505050613ba68e8e8b612483565b9b508501613b69565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c1091906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c4c929160200161574c565b604051602081830303815290604052905060005b856040015151811015613cf8578186604001518281518110613c8457613c846149b9565b60200260200101515160001b87604001518381518110613ca657613ca66149b9565b6020026020010151604051602001613cc093929190615772565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c60565b50949350505050565b613d9081604051602401613d1591906148e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526141b6565b50565b6060613bbc84846000856141d7565b6000808260121415613db75783915050612057565b8260121115613de357506012829003613dd181600a6156dc565b613ddb90856151c9565b915050612057565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e1281600a6156dc565b613ddb9085615235565b5092915050565b60008161204a670de0b6b3a7640000856151c9565b600081810b613e48575081612057565b60008260000b1315613e7057613e5f82600a6157a9565b613e6990846151c9565b9050612057565b60ff600083900316613e1281600a6156dc565b6000806012831415613e985783915050612057565b8260121115613eb257506012829003613e1281600a6156dc565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613dd181600a6156dc565b6000828201838110613ef35780613bbc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f2b57506000612057565b82820282848281613f3e57613f3e615206565b041415613ef35780613bbc565b6000818311613f5b576000612054565b50900390565b60008060015b60088111613fb8576000613f7b868361436d565b90506000613f89868461436d565b90506000613f978383613f4b565b9050613fa785600186038361441a565b94505060019092019150613f679050565b509392505050565b835160009081908190819060015b600881116141025760009250828761400757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61400b565b5060005b60005b838110156140c0576140398c828151811061402b5761402b6149b9565b60200260200101518461436d565b95508a861161408b57886140585761405186836122d3565b9150614082565b600189141561406b5761405186836144a3565b600289148015614079575084155b15614082578591505b600194506140b8565b896140b8577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506140c0565b60010161400e565b50836140e957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6140f786600184038361441a565b955050600101613fce565b509298975050505050505050565b600082600881111561417e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141aa5763ffffffff6020820290811b199890981685891b17979150600101614182565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b606082471015614269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b6142e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161431091906157b8565b60006040518083038185875af1925050503d806000811461434d576040519150601f19603f3d011682016040523d82523d6000602084013e614352565b606091505b50915091506143628282866144b3565b979650505050505050565b60008160088111156143db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143e95760009150613e1c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115614488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156122e25781612054565b606083156144c2575081612753565b8251156144d25782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f91906148e7565b60006020828403121561451857600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613d9057600080fd5b8035611cdb8161451f565b60006020828403121561455e57600080fd5b81356127538161451f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156145bb576145bb614569565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561460857614608614569565b604052919050565b600067ffffffffffffffff82111561462a5761462a614569565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261466757600080fd5b813561467a61467582614610565b6145c1565b81815284602083860101111561468f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156146bf57600080fd5b823567ffffffffffffffff808211156146d757600080fd5b9084019060e082870312156146eb57600080fd5b9092506020840135908082111561470157600080fd5b908401906080828703121561471557600080fd5b61471d614598565b82358281111561472c57600080fd5b83016080818903121561473e57600080fd5b614746614598565b81358481111561475557600080fd5b6147618a828501614656565b82525060208201358481111561477657600080fd5b6147828a828501614656565b602083015250604082013593506147988461451f565b8360408201526060820135606082015280835250506147b960208401614541565b6020820152604083013560408201526147d460608401614541565b60608201528093505050509250929050565b600060a08284031215611e9057600080fd5b600060a0828403121561480a57600080fd5b60405160a0810181811067ffffffffffffffff8211171561482d5761482d614569565b604052823561483b8161451f565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561488c578181015183820152602001614874565b838111156110285750506000910152565b600081518084526148b5816020860160208601614871565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612054602083018461489d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60048110614960577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b602081016120578284614929565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156149b4576149b4614972565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a1c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614a5b57600080fd5b830160208101925035905067ffffffffffffffff811115614a7b57600080fd5b8060051b3603831315611a7a57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614b0857600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614b358384614a26565b604086528281845260608701905060608260051b88010193508260005b83811015614bff577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614bb357600080fd5b85018035602067ffffffffffffffff821115614bce57600080fd5b813603881315614bdd57600080fd5b614bea8983838601614a8d565b98509485019493909301925050600101614b52565b5050505050614c116020840184614a26565b8583036020870152614c24838284614ad6565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614c5e82850187614b25565b84810360408681019190915286518083528388019284019060005b81811015614ccf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614c79565b50909a9950505050505050505050565b600060208284031215614cf157600080fd5b815167ffffffffffffffff811115614d0857600080fd5b8201601f81018413614d1957600080fd5b8051614d2761467582614610565b818152856020838501011115614d3c57600080fd5b614d4d826020830160208601614871565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614d9d61014086018261489d565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614dd8828261489d565b91505082604083015116610100860152606082015161012086015260408601519250614e1c606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d4d60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614e6157600080fd5b81516127538161451f565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614ec057600080fd5b60e06060840152614ed76101408401868301614b25565b9050614ee560208601614541565b73ffffffffffffffffffffffffffffffffffffffff166080840152614f0c60408601614541565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bbc604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614f8b8161451f565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a081016120578284614f79565b600081614fe257614fe2614972565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561501a5761501a614972565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016127536020830184614f79565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561507b5761507b614972565b5060010190565b60a0810161205782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bbc60c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151bc816001850160208701614871565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561520157615201614972565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261526b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016127536020830184614929565b600081518084526020808501945080840160005b838110156152ca578151875295820195908201906001016152ae565b509495945050505050565b600060208083528351818401528084015160a060408501526152fa60c085018261529a565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b82811015615373578487830301845261536182875161489d565b95880195938801939150600101615347565b5060608a01519650838982030160808a015261538f818861529a565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b838110156153d5578151855293820193908201906001016153b9565b50929695505050505050565b6000602082840312156153f357600080fd5b8151801515811461275357600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161548c81600e850160208701614871565b91909101600e019392505050565b6000602082840312156154ac57600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561550257815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016154d0565b50505083810382850152614c24818661529a565b6000602080838503121561552957600080fd5b825167ffffffffffffffff8082111561554157600080fd5b818501915085601f83011261555557600080fd5b81518181111561556757615567614569565b8060051b91506155788483016145c1565b818152918301840191848101908884111561559257600080fd5b938501935b838510156155b057845182529385019390850190615597565b98975050505050505050565b600181815b8085111561561557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156155fb576155fb614972565b8085161561560857918102915b93841c93908002906155c1565b509250929050565b60008261562c57506001612057565b8161563957506000612057565b816001811461564f576002811461565957615675565b6001915050612057565b60ff84111561566a5761566a614972565b50506001821b612057565b5060208310610133831016604e8410600b8410161715615698575081810a612057565b6156a283836155bc565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156156d4576156d4614972565b029392505050565b6000612054838361561d565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bbc604083018461529a565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d4d606083018461529a565b82815260008251615764816020850160208701614871565b919091016020019392505050565b60008451615784818460208901614871565b8201848152835161579c816020808501908801614871565b0160200195945050505050565b600061205460ff84168361561d565b60008251614a1c81846020870161487156fea264697066735822122078425b57b61d0cf4d634d2b8a85eec102266c7dbba468b3f65c1a8ebace070a364736f6c634300080a0033"; + "0x6101006040523480156200001257600080fd5b5060405162005900380380620059008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161575d620001a36000396000610abb01526000610601015260006108580152600061087f015261575d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461445e565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046144a9565b6103e3565b005b61012f61013f366004614609565b6104ce565b61012f610152366004614743565b610cba565b61015f610f06565b6040519015158152602001610113565b61012f610f1d565b61012f611111565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614755565b61120c565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61196a565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526127ea60e082018190526128de61010083015261296a610120830152612a8b610140830152610160820152612b34610180820152612c3c6101a0820152612d106101c0820152612f0d6101e0820152612f18610200820152612f23610220820152612f2e610240820152612f39610260820152612f6d610280820152612fd36102a08201526130396102c082015261306d6102e08201526130a16103008201526130d66103208201526131316103408201526131876103608201526131b06103808201526132076103a08201526132346103c082015261328b6103e08201526132f66104008201526133536104208201526133916104408201526133ca6104608201526133fe6104808201526134306104a08201526134626104c08201526134946104e08201526134c861050082015261351a61052082015261355361054082015261360561056082015261373261058082015261378e6105a08201526138486105c080830191909152815290516101139190614844565b600d5460ff1660405161011391906148c1565b600754610183565b6000806103da6103d4611a66565b84611ac3565b91509150915091565b6002600d5460ff1660038111156103fc576103fc614857565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611b64565b5050565b600054610100900460ff16158080156104ee5750600054600160ff909116105b806105085750303b158015610508575060005460ff166001145b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105ff8360800135611c38565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b61069b6060840135426148fe565b600e5560a0830135610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506107546040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107ec6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107ac579050509050828160008151811061081557610815614916565b6020026020010181905250818160018151811061083457610834614916565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108a88a80614945565b856040518463ffffffff1660e01b81526004016108c793929190614b8b565b6000604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261092c9190810190614c3c565b905061093781611d63565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561098c60408801602089016144a9565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a1160608801604089016144a9565b73ffffffffffffffffffffffffffffffffffffffff9081166008558651604001511615610a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610b0991908e01908e016144a9565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610b869190614cb3565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610bb19190614844565b6020604051808303816000875af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190614dac565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610c459033908b908590614dc9565b60405180910390a150505050508015610cb557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610cd357610cd3614857565b1415610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610d5457610d54614857565b14610d6157610d61611dee565b336000908152600f602090815260408083209051909291610d8491859101614f22565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610db990614f30565b9091555060009050610dd360808301356060840135611f8d565b90508060066000828254610de79190614f65565b92505081905550816060013560056000828254610e0491906148fe565b909155505060408201803590601190600090610e2390602087016144a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190614f65565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610ea39033908590614f7c565b60405180910390a1600754610ed49073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fb5565b6104ca33610ee66040850135846148fe565b60085473ffffffffffffffffffffffffffffffffffffffff169190611b64565b6000610f18610f13611a66565b612013565b905090565b42600e5410610f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610fa157610fa1614857565b1480610fc357506001600d5460ff166003811115610fc157610fc1614857565b145b611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156110f757600080fd5b505af115801561110b573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561112a5761112a614857565b14611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b61119c610f13611a66565b611202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b61120a612079565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561124b5760035473ffffffffffffffffffffffffffffffffffffffff16611279565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261131b91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156113ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b6002600455604083015161145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006114d8611a66565b90506114e381612013565b15611514576000600d5460ff16600381111561150157611501614857565b141561150f5761150f612079565b61153b565b6001600d5460ff16600381111561152d5761152d614857565b141561153b5761153b6120d9565b6001600d5460ff16600381111561155457611554614857565b146115bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006115d6600554866060015161222b90919063ffffffff16565b90506000806115e58484611ac3565b909250905060006115f6838561222b565b90508760400151811015611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156116d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006116e08383611f8d565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061173983614fa6565b9091555050336000908152600f60209081526040808320905190929161176191859101614fdf565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061179690614fa6565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916117d89084906148fe565b9250508190555082600560008282546117f19190614f65565b92505081905550816006600082825461180a91906148fe565b9250508190555061184733308c602001518561182691906148fe565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fb5565b60075461186b9073ffffffffffffffffffffffffffffffffffffffff163385611b64565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b8360405161189e9392919061502e565b60405180910390a16118af87612013565b1561192957600c546005541015611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611931565b6119316120d9565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff16600381111561198357611983614857565b146119ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b6119f5610f13611a66565b15611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61120a6120d9565b611a986040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610f1890611abe9073ffffffffffffffffffffffffffffffffffffffff16612241565b61226f565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611afa818660016123db565b506000808660200151600288600001510381518110611b1b57611b1b614916565b60200260200101518760200151600189600001510381518110611b4057611b40614916565b602002602001015191509150611b568760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cb59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126b2565b60008111611ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611d2257611d226150d1565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611d8e83604051602001611d7a9190615100565b6040516020818303038152906040526127be565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611de8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e2d5760035473ffffffffffffffffffffffffffffffffffffffff16611e5b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611efd91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fa28385615126565b611fac9190615192565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261110b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bb6565b60006001600554101561202857506000919050565b612043604051806020016040528060008152508360006123db565b50600080836020015160018560000151038151811061206457612064614916565b6020026020010151119050611faf8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b5460065410156000816120ef5760036120f2565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600381111561213657612136614857565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd338260405161216c9291906151cd565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121df57600080fd5b505af11580156121f3573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611b64565b600081831061223a5781611fac565b5090919050565b6060611faf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6138c4565b6122a16040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122d36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115612307576123076144c6565b604051908082528060200260200182016040528015612330578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115612367576123676144c6565b604051908082528060200260200182016040528015612390578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123ca5781602082026020018401528151602001820191506001810190506123a3565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612698576003890198508886015180601f1a975061ffff8160081c169850506006881015612610578761245e57866020028401518252602082019150612623565b600188141561247b57602087028301518252602082019150612623565b6002881415612508578c5187602002106124f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d01518252602082019150612623565b600388141561255157600061253f604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612623565b600488141561256d576125668d8d848a6139ac565b9150612623565b60608761259b578c6040516020016125859190615232565b60405160208183030381529060405290506125fa565b60018814156125b4576125ad8d613b1c565b90506125fa565b60028814156125d0576020808e01516040516125859201615308565b60038814156125fa578c516040805160208101929092520160405160208183030381529060405290505b80511561260a5761260a81613c59565b50612623565b8761261f888463ffffffff8416565b9250505b60208c0151518c511115612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b612419565b6020838303048c52509750505050505050505b9392505050565b6000612714826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ceb9092919063ffffffff16565b805190915015610cb55780806020019051810190612732919061533e565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b60608151826040516020016127d4929190615360565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156128ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d191906153f7565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e91906153f7565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7d91906153f7565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614dac565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612a3c565b60008060008467ffffffffffffffff811115612d2e57612d2e6144c6565b604051908082528060200260200182016040528015612d57578160200160208202803683370190505b50905060008567ffffffffffffffff811115612d7557612d756144c6565b604051908082528060200260200182016040528015612d9e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612df3578251815260209283019201612ddb565b5050602088028101602084015b81831015612e18578251815260209283019201612e00565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612e729087908790600401615410565b600060405180830381865afa158015612e8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ed59190810190615473565b9050846020820160208a0281015b80821015612efe578151835260209283019290910190612ee3565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613cfa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182612fcd858a613cfa565b90613d7b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182613033858a613cfa565b90611f8d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613d90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613ddb565b6000602083028203805b838110156130cb57805180156130c25782526130cb565b506020016130ab565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156130cb5780516131a857600082526130cb565b602001613191565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156132c957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e8575080516020909101906132e18382613e39565b925061329b565b505081526020019392505050565b6020828102820380516000928201835b858210801561333457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e85750805160209091019061334c8382613e74565b9250613306565b6020828102820380516000928201835b85821080156133725750826000105b156132e85750805160209091019061338a8382613ea3565b9250613363565b600060208302820380516000602083015b858110156132e857805183019150828210156133bd57600080fd5b90915081906020016133a2565b600060208302820380516000602083015b858110156132e85780519150816133f157600080fd5b91819004916020016133db565b6020828102820380516000928201835b858210156132e8575080516020909101906134298184615639565b925061340e565b6020828102820380516000928201835b858210156132e85750805182811115613457578092505b602082019150613440565b6020828102820380516000928201835b858210156132e85750805182811015613489578092505b602082019150613472565b600060208302820380516000602083015b858110156132e85780519150816134bb57600080fd5b91819006916020016134a5565b60006020830282038051600080602084015b8681101561350b5783156135035780519250828402915082848304146134ff57600080fd5b8193505b6020016134da565b50505081526020019392505050565b600060208302820380516000602083015b858110156132e8578051830391508282111561354657600080fd5b909150819060200161352b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612a3c9086908690600401615645565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906136de90879087908790600401615674565b602060405180830381865afa1580156136fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371f91906153f7565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d18383613eb9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156137bc576137bc6144c6565b6040519080825280602002602001820160405280156137e5578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613821578151816020018601526020820191506020810190506137ff565b5050519050600061383483838989613f18565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856138b585858585614068565b90955250949695505050505050565b6060833b806138e35750506040805160208101909152600081526126ab565b808411156139015750506040805160208101909152600081526126ab565b8383101561394c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b83830384820360008282106139615782613963565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826139eb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613a36565b8260011415613a0f57506fffffffffffffffffffffffffffffffff90506080613a36565b8260021415613a2b575067ffffffffffffffff90506040613a36565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613a5957613a596144c6565b604051908082528060200260200182016040528015613a82578160200160208202803683370190505b50905060208082019083028a03815b8b821015613aa9578151815260209182019101613a91565b505060608b015160808c015160209081029091010160005b610100811015613b075760208502830182845b82811015613af0578051841c8a16825260209182019101613ad4565b505050613afe8e8e8b6123db565b9b508501613ac1565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613b689190615308565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613ba492916020016156a9565b604051602081830303815290604052905060005b856040015151811015613c50578186604001518281518110613bdc57613bdc614916565b60200260200101515160001b87604001518381518110613bfe57613bfe614916565b6020026020010151604051602001613c18939291906156cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613bb8565b50949350505050565b613ce881604051602401613c6d9190614844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261410e565b50565b6060613b14848460008561412f565b6000808260121415613d0f5783915050611faf565b8260121115613d3b57506012829003613d2981600a615639565b613d339085615126565b915050611faf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d6a81600a615639565b613d339085615192565b5092915050565b600081611fa2670de0b6b3a764000085615126565b600081810b613da0575081611faf565b60008260000b1315613dc857613db782600a615706565b613dc19084615126565b9050611faf565b60ff600083900316613d6a81600a615639565b6000806012831415613df05783915050611faf565b8260121115613e0a57506012829003613d6a81600a615639565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d2981600a615639565b6000828201838110613e4b5780613b14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613e8357506000611faf565b82820282848281613e9657613e96615163565b041415613e4b5780613b14565b6000818311613eb3576000611fac565b50900390565b60008060015b60088111613f10576000613ed386836142c5565b90506000613ee186846142c5565b90506000613eef8383613ea3565b9050613eff856001860383614372565b94505060019092019150613ebf9050565b509392505050565b835160009081908190819060015b6008811161405a57600092508287613f5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613f63565b5060005b60005b8381101561401857613f918c8281518110613f8357613f83614916565b6020026020010151846142c5565b95508a8611613fe35788613fb057613fa9868361222b565b9150613fda565b6001891415613fc357613fa986836143fb565b600289148015613fd1575084155b15613fda578591505b60019450614010565b89614010577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614018565b600101613f66565b508361404157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61404f866001840383614372565b955050600101613f26565b509298975050505050505050565b60008260088111156140d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141025763ffffffff6020820290811b199890981685891b179791506001016140da565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156141c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b61423f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516142689190615715565b60006040518083038185875af1925050503d80600081146142a5576040519150601f19603f3d011682016040523d82523d6000602084013e6142aa565b606091505b50915091506142ba82828661440b565b979650505050505050565b6000816008811115614333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143415760009150613d74565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561223a5781611fac565b6060831561441a5750816126ab565b82511561442a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9190614844565b60006020828403121561447057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613ce857600080fd5b80356144a481614477565b919050565b6000602082840312156144bb57600080fd5b81356126ab81614477565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614518576145186144c6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614565576145656144c6565b604052919050565b600067ffffffffffffffff821115614587576145876144c6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126145c457600080fd5b81356145d76145d28261456d565b61451e565b8181528460208386010111156145ec57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561461c57600080fd5b823567ffffffffffffffff8082111561463457600080fd5b9084019060e0828703121561464857600080fd5b9092506020840135908082111561465e57600080fd5b908401906080828703121561467257600080fd5b61467a6144f5565b82358281111561468957600080fd5b83016080818903121561469b57600080fd5b6146a36144f5565b8135848111156146b257600080fd5b6146be8a8285016145b3565b8252506020820135848111156146d357600080fd5b6146df8a8285016145b3565b602083015250604082013593506146f584614477565b83604082015260608201356060820152808352505061471660208401614499565b60208201526040830135604082015261473160608401614499565b60608201528093505050509250929050565b600060a08284031215611de857600080fd5b600060a0828403121561476757600080fd5b60405160a0810181811067ffffffffffffffff8211171561478a5761478a6144c6565b604052823561479881614477565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b838110156147e95781810151838201526020016147d1565b8381111561110b5750506000910152565b600081518084526148128160208601602086016147ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fac60208301846147fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106148bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611faf8284614886565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614911576149116148cf565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261497957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126149b857600080fd5b830160208101925035905067ffffffffffffffff8111156149d857600080fd5b8060051b3603831315611b5d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614a6557600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614a928384614983565b604086528281845260608701905060608260051b88010193508260005b83811015614b5c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614b1057600080fd5b85018035602067ffffffffffffffff821115614b2b57600080fd5b813603881315614b3a57600080fd5b614b4789838386016149ea565b98509485019493909301925050600101614aaf565b5050505050614b6e6020840184614983565b8583036020870152614b81838284614a33565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614bbb82850187614a82565b84810360408681019190915286518083528388019284019060005b81811015614c2c578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614bd6565b50909a9950505050505050505050565b600060208284031215614c4e57600080fd5b815167ffffffffffffffff811115614c6557600080fd5b8201601f81018413614c7657600080fd5b8051614c846145d28261456d565b818152856020838501011115614c9957600080fd5b614caa8260208301602086016147ce565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614cfa6101408601826147fa565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614d3582826147fa565b91505082604083015116610100860152606082015161012086015260408601519250614d79606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614caa60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614dbe57600080fd5b81516126ab81614477565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614e1d57600080fd5b60e06060840152614e346101408401868301614a82565b9050614e4260208601614499565b73ffffffffffffffffffffffffffffffffffffffff166080840152614e6960408601614499565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613b14604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614ee881614477565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611faf8284614ed6565b600081614f3f57614f3f6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614f7757614f776148cf565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126ab6020830184614ed6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614fd857614fd86148cf565b5060010190565b60a08101611faf82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613b1460c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151198160018501602087016147ce565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561515e5761515e6148cf565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826151c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126ab6020830184614886565b600081518084526020808501945080840160005b838110156152275781518752958201959082019060010161520b565b509495945050505050565b600060208083528351818401528084015160a0604085015261525760c08501826151f7565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156152d057848783030184526152be8287516147fa565b958801959388019391506001016152a4565b5060608a01519650838982030160808a01526152ec81886151f7565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561533257815185529382019390820190600101615316565b50929695505050505050565b60006020828403121561535057600080fd5b815180151581146126ab57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516153e981600e8501602087016147ce565b91909101600e019392505050565b60006020828403121561540957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561545f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161542d565b50505083810382850152614b8181866151f7565b6000602080838503121561548657600080fd5b825167ffffffffffffffff8082111561549e57600080fd5b818501915085601f8301126154b257600080fd5b8151818111156154c4576154c46144c6565b8060051b91506154d584830161451e565b81815291830184019184810190888411156154ef57600080fd5b938501935b8385101561550d578451825293850193908501906154f4565b98975050505050505050565b600181815b8085111561557257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615558576155586148cf565b8085161561556557918102915b93841c939080029061551e565b509250929050565b60008261558957506001611faf565b8161559657506000611faf565b81600181146155ac57600281146155b6576155d2565b6001915050611faf565b60ff8411156155c7576155c76148cf565b50506001821b611faf565b5060208310610133831016604e8410600b84101617156155f5575081810a611faf565b6155ff8383615519565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615631576156316148cf565b029392505050565b6000611fac838361557a565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613b1460408301846151f7565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614caa60608301846151f7565b828152600082516156c18160208501602087016147ce565b919091016020019392505050565b600084516156e18184602089016147ce565b820184815283516156f98160208085019088016147ce565b0160200195945050505050565b6000611fac60ff84168361557a565b600082516149798184602087016147ce56fea2646970667358221220f9203032a8d2e0e66b9e3b314b3e0c47b248b16ae69eb4a32b418064234277d464736f6c634300080a0033"; type SaleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StackHeightTest__factory.ts b/src/typechain/factories/StackHeightTest__factory.ts index 768fe74..5393fb5 100644 --- a/src/typechain/factories/StackHeightTest__factory.ts +++ b/src/typechain/factories/StackHeightTest__factory.ts @@ -91,7 +91,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200261b3803806200261b83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051612579620000a2600039600061031d0152600061035901526125796000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b610059610054366004611b83565b610244565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261050a60e0820181905261060161010083015261068d6101208301526107ae61014083015261016082015261085761018082015261095f6101a0820152610a336101c0820152610c306101e0820152610c3b610200820152610c46610220820152610c51610240820152610c5c610260820152610c90610280820152610cf66102a0820152610d5c6102c0820152610d906102e0820152610dc4610300820152610df9610320820152610e54610340820152610eaa610360820152610ed3610380820152610f2a6103a0820152610f576103c0820152610fae6103e08201526110196104008201526110766104208201526110b46104408201526110ed6104608201526111216104808201526111536104a08201526111856104c08201526111b76104e08201526111eb61050082015261123d6105208201526112766105408201526113286105608201526114556105808201526114b16105a082015261156b6105c0808301919091528152905161008f9190611bee565b6102846040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6102e56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816102a5579050509050818160008151811061030e5761030e611c6e565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161039893929190611e1c565b6000604051808303816000875af11580156103b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fd9190810190611fce565b905061040881610453565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b60008061047e8360405160200161046a9190612080565b6040516020818303038152906040526104de565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166104d8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016104f49291906120a6565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f1919061213d565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610681919061213d565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a0919061213d565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016105b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612156565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161075f565b60008060008467ffffffffffffffff811115610a5157610a51611c3f565b604051908082528060200260200182016040528015610a7a578160200160208202803683370190505b50905060008567ffffffffffffffff811115610a9857610a98611c3f565b604051908082528060200260200182016040528015610ac1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015610b16578251815260209283019201610afe565b5050602088028101602084015b81831015610b3b578251815260209283019201610b23565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490610b9590879087906004016121bc565b600060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610bf8919081019061221f565b9050846020820160208a0281015b80821015610c21578151835260209283019290910190610c06565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876115e7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610cf0858a6115e7565b90611668565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610d56858a6115e7565b9061168e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116ee565b6000602083028203805b83811015610dee5780518015610de5578252610dee565b50602001610dce565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610dee578051610ecb5760008252610dee565b602001610eb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015610fec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b57508051602090910190611004838261174c565b9250610fbe565b505081526020019392505050565b6020828102820380516000928201835b858210801561105757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b5750805160209091019061106f8382611788565b9250611029565b6020828102820380516000928201835b85821080156110955750826000105b1561100b575080516020909101906110ad83826117b7565b9250611086565b600060208302820380516000602083015b8581101561100b57805183019150828210156110e057600080fd5b90915081906020016110c5565b600060208302820380516000602083015b8581101561100b57805191508161111457600080fd5b91819004916020016110fe565b6020828102820380516000928201835b8582101561100b5750805160209091019061114c8184612414565b9250611131565b6020828102820380516000928201835b8582101561100b575080518281111561117a578092505b602082019150611163565b6020828102820380516000928201835b8582101561100b57508051828110156111ac578092505b602082019150611195565b600060208302820380516000602083015b8581101561100b5780519150816111de57600080fd5b91819006916020016111c8565b60006020830282038051600080602084015b8681101561122e57831561122657805192508284029150828483041461122257600080fd5b8193505b6020016111fd565b50505081526020019392505050565b600060208302820380516000602083015b8581101561100b578051830391508282111561126957600080fd5b909150819060200161124e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061075f9086908690600401612420565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906114019087908790879060040161244f565b602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061213d565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f183836117cd565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156114df576114df611c3f565b604051908082528060200260200182016040528015611508578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561154457815181602001860152602082019150602081019050611522565b505051905060006115578383898961182c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856115d88585858561197c565b90955250949695505050505050565b60008082601214156115fc57839150506105fb565b82601211156116285750601282900361161681600a612414565b611620908561248d565b9150506105fb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161165781600a612414565b61162090856124f9565b5092915050565b60008161167d670de0b6b3a76400008561248d565b61168791906124f9565b9392505050565b6000670de0b6b3a764000061167d838561248d565b600081810b6116b35750816105fb565b60008260000b13156116db576116ca82600a612534565b6116d4908461248d565b90506105fb565b60ff60008390031661165781600a612414565b600080601283141561170357839150506105fb565b826012111561171d5750601282900361165781600a612414565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161161681600a612414565b600082820183811061175e5780611780565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082611797575060006105fb565b828202828482816117aa576117aa6124ca565b04141561175e5780611780565b60008183116117c7576000611687565b50900390565b60008060015b600881116118245760006117e78683611a27565b905060006117f58684611a27565b9050600061180383836117b7565b9050611813856001860383611ad4565b945050600190920191506117d39050565b509392505050565b835160009081908190819060015b6008811161196e5760009250828761187357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611877565b5060005b60005b8381101561192c576118a58c828151811061189757611897611c6e565b602002602001015184611a27565b95508a86116118f757886118c4576118bd8683611b5d565b91506118ee565b60018914156118d7576118bd8683611b73565b6002891480156118e5575084155b156118ee578591505b60019450611924565b89611924577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061192c565b60010161187a565b508361195557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b611963866001840383611ad4565b95505060010161183a565b509298975050505050505050565b60008260088111156119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b85811015611a1b5763ffffffff6020820290811b199890981685891b179791506001016119f3565b50959695505050505050565b6000816008811115611a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b82611aa35760009150611661565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b505063ffffffff602090920291821b199290921691901b1790565b6000818310611b6c5781611687565b5090919050565b600081831015611b6c5781611687565b600060208284031215611b9557600080fd5b813567ffffffffffffffff811115611bac57600080fd5b82016040818503121561168757600080fd5b60005b83811015611bd9578181015183820152602001611bc1565b83811115611be8576000848401525b50505050565b6020815260008251806020840152611c0d816040850160208701611bbe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611cd257600080fd5b830160208101925035905067ffffffffffffffff811115611cf257600080fd5b8060051b3603831315611d0457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d8657600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015611e1157815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101611db7565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301611e4d8687611c9d565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015611f17577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611ece57600080fd5b8501803567ffffffffffffffff811115611ee757600080fd5b803603871315611ef657600080fd5b611f0388828b8501611d0b565b975050509186019190860190600101611e6d565b5050505050611f2882870187611c9d565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152611f5f828483611d54565b925050508281036040840152611f758185611da3565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fc657611fc6611c3f565b604052919050565b600060208284031215611fe057600080fd5b815167ffffffffffffffff80821115611ff857600080fd5b818401915084601f83011261200c57600080fd5b81518181111561201e5761201e611c3f565b61204f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f7f565b915080825285602082850101111561206657600080fd5b612077816020840160208601611bbe565b50949350505050565b6000815260008251612099816001850160208701611bbe565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161212f81600e850160208701611bbe565b91909101600e019392505050565b60006020828403121561214f57600080fd5b5051919050565b60006020828403121561216857600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461168757600080fd5b600081518084526020808501945080840160005b83811015611e11578151875295820195908201906001016121a0565b604080825283519082018190526000906020906060840190828701845b8281101561220b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016121d9565b50505083810382850152611f75818661218c565b6000602080838503121561223257600080fd5b825167ffffffffffffffff8082111561224a57600080fd5b818501915085601f83011261225e57600080fd5b81518181111561227057612270611c3f565b8060051b9150612281848301611f7f565b818152918301840191848101908884111561229b57600080fd5b938501935b838510156122b9578451825293850193908501906122a0565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561234d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612333576123336122c5565b8085161561234057918102915b93841c93908002906122f9565b509250929050565b600082612364575060016105fb565b81612371575060006105fb565b81600181146123875760028114612391576123ad565b60019150506105fb565b60ff8411156123a2576123a26122c5565b50506001821b6105fb565b5060208310610133831016604e8410600b84101617156123d0575081810a6105fb565b6123da83836122f4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561240c5761240c6122c5565b029392505050565b60006116878383612355565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611780604083018461218c565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612484606083018461218c565b95945050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124c5576124c56122c5565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261252f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061168760ff84168361235556fea2646970667358221220a948755c13a11baa0357022f600b8b3c36d5bfb0ecd2be250b60286a78b6fe5764736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506040516200261b3803806200261b83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051612579620000a2600039600061031d0152600061035901526125796000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b610059610054366004611b83565b610244565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261050a60e0820181905261060161010083015261068d6101208301526107ae61014083015261016082015261085761018082015261095f6101a0820152610a336101c0820152610c306101e0820152610c3b610200820152610c46610220820152610c51610240820152610c5c610260820152610c90610280820152610cf66102a0820152610d5c6102c0820152610d906102e0820152610dc4610300820152610df9610320820152610e54610340820152610eaa610360820152610ed3610380820152610f2a6103a0820152610f576103c0820152610fae6103e08201526110196104008201526110766104208201526110b46104408201526110ed6104608201526111216104808201526111536104a08201526111856104c08201526111b76104e08201526111eb61050082015261123d6105208201526112766105408201526113286105608201526114556105808201526114b16105a082015261156b6105c0808301919091528152905161008f9190611bee565b6102846040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6102e56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816102a5579050509050818160008151811061030e5761030e611c6e565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161039893929190611e1c565b6000604051808303816000875af11580156103b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fd9190810190611fce565b905061040881610453565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b60008061047e8360405160200161046a9190612080565b6040516020818303038152906040526104de565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166104d8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016104f49291906120a6565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f1919061213d565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610681919061213d565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a0919061213d565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016105b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612156565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161075f565b60008060008467ffffffffffffffff811115610a5157610a51611c3f565b604051908082528060200260200182016040528015610a7a578160200160208202803683370190505b50905060008567ffffffffffffffff811115610a9857610a98611c3f565b604051908082528060200260200182016040528015610ac1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015610b16578251815260209283019201610afe565b5050602088028101602084015b81831015610b3b578251815260209283019201610b23565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490610b9590879087906004016121bc565b600060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610bf8919081019061221f565b9050846020820160208a0281015b80821015610c21578151835260209283019290910190610c06565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876115e7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610cf0858a6115e7565b90611668565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610d56858a6115e7565b9061168e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116ee565b6000602083028203805b83811015610dee5780518015610de5578252610dee565b50602001610dce565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610dee578051610ecb5760008252610dee565b602001610eb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015610fec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b57508051602090910190611004838261174c565b9250610fbe565b505081526020019392505050565b6020828102820380516000928201835b858210801561105757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b5750805160209091019061106f8382611788565b9250611029565b6020828102820380516000928201835b85821080156110955750826000105b1561100b575080516020909101906110ad83826117b7565b9250611086565b600060208302820380516000602083015b8581101561100b57805183019150828210156110e057600080fd5b90915081906020016110c5565b600060208302820380516000602083015b8581101561100b57805191508161111457600080fd5b91819004916020016110fe565b6020828102820380516000928201835b8582101561100b5750805160209091019061114c8184612414565b9250611131565b6020828102820380516000928201835b8582101561100b575080518281111561117a578092505b602082019150611163565b6020828102820380516000928201835b8582101561100b57508051828110156111ac578092505b602082019150611195565b600060208302820380516000602083015b8581101561100b5780519150816111de57600080fd5b91819006916020016111c8565b60006020830282038051600080602084015b8681101561122e57831561122657805192508284029150828483041461122257600080fd5b8193505b6020016111fd565b50505081526020019392505050565b600060208302820380516000602083015b8581101561100b578051830391508282111561126957600080fd5b909150819060200161124e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061075f9086908690600401612420565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906114019087908790879060040161244f565b602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061213d565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f183836117cd565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156114df576114df611c3f565b604051908082528060200260200182016040528015611508578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561154457815181602001860152602082019150602081019050611522565b505051905060006115578383898961182c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856115d88585858561197c565b90955250949695505050505050565b60008082601214156115fc57839150506105fb565b82601211156116285750601282900361161681600a612414565b611620908561248d565b9150506105fb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161165781600a612414565b61162090856124f9565b5092915050565b60008161167d670de0b6b3a76400008561248d565b61168791906124f9565b9392505050565b6000670de0b6b3a764000061167d838561248d565b600081810b6116b35750816105fb565b60008260000b13156116db576116ca82600a612534565b6116d4908461248d565b90506105fb565b60ff60008390031661165781600a612414565b600080601283141561170357839150506105fb565b826012111561171d5750601282900361165781600a612414565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161161681600a612414565b600082820183811061175e5780611780565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082611797575060006105fb565b828202828482816117aa576117aa6124ca565b04141561175e5780611780565b60008183116117c7576000611687565b50900390565b60008060015b600881116118245760006117e78683611a27565b905060006117f58684611a27565b9050600061180383836117b7565b9050611813856001860383611ad4565b945050600190920191506117d39050565b509392505050565b835160009081908190819060015b6008811161196e5760009250828761187357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611877565b5060005b60005b8381101561192c576118a58c828151811061189757611897611c6e565b602002602001015184611a27565b95508a86116118f757886118c4576118bd8683611b5d565b91506118ee565b60018914156118d7576118bd8683611b73565b6002891480156118e5575084155b156118ee578591505b60019450611924565b89611924577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061192c565b60010161187a565b508361195557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b611963866001840383611ad4565b95505060010161183a565b509298975050505050505050565b60008260088111156119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b85811015611a1b5763ffffffff6020820290811b199890981685891b179791506001016119f3565b50959695505050505050565b6000816008811115611a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b82611aa35760009150611661565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b505063ffffffff602090920291821b199290921691901b1790565b6000818310611b6c5781611687565b5090919050565b600081831015611b6c5781611687565b600060208284031215611b9557600080fd5b813567ffffffffffffffff811115611bac57600080fd5b82016040818503121561168757600080fd5b60005b83811015611bd9578181015183820152602001611bc1565b83811115611be8576000848401525b50505050565b6020815260008251806020840152611c0d816040850160208701611bbe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611cd257600080fd5b830160208101925035905067ffffffffffffffff811115611cf257600080fd5b8060051b3603831315611d0457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d8657600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015611e1157815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101611db7565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301611e4d8687611c9d565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015611f17577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611ece57600080fd5b8501803567ffffffffffffffff811115611ee757600080fd5b803603871315611ef657600080fd5b611f0388828b8501611d0b565b975050509186019190860190600101611e6d565b5050505050611f2882870187611c9d565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152611f5f828483611d54565b925050508281036040840152611f758185611da3565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fc657611fc6611c3f565b604052919050565b600060208284031215611fe057600080fd5b815167ffffffffffffffff80821115611ff857600080fd5b818401915084601f83011261200c57600080fd5b81518181111561201e5761201e611c3f565b61204f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f7f565b915080825285602082850101111561206657600080fd5b612077816020840160208601611bbe565b50949350505050565b6000815260008251612099816001850160208701611bbe565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161212f81600e850160208701611bbe565b91909101600e019392505050565b60006020828403121561214f57600080fd5b5051919050565b60006020828403121561216857600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461168757600080fd5b600081518084526020808501945080840160005b83811015611e11578151875295820195908201906001016121a0565b604080825283519082018190526000906020906060840190828701845b8281101561220b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016121d9565b50505083810382850152611f75818661218c565b6000602080838503121561223257600080fd5b825167ffffffffffffffff8082111561224a57600080fd5b818501915085601f83011261225e57600080fd5b81518181111561227057612270611c3f565b8060051b9150612281848301611f7f565b818152918301840191848101908884111561229b57600080fd5b938501935b838510156122b9578451825293850193908501906122a0565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561234d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612333576123336122c5565b8085161561234057918102915b93841c93908002906122f9565b509250929050565b600082612364575060016105fb565b81612371575060006105fb565b81600181146123875760028114612391576123ad565b60019150506105fb565b60ff8411156123a2576123a26122c5565b50506001821b6105fb565b5060208310610133831016604e8410600b84101617156123d0575081810a6105fb565b6123da83836122f4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561240c5761240c6122c5565b029392505050565b60006116878383612355565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611780604083018461218c565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612484606083018461218c565b95945050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124c5576124c56122c5565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261252f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061168760ff84168361235556fea2646970667358221220caf22844c89417fd6aac79b3c8fce724512ac57006883a99b7fc5daeab96f96464736f6c634300080a0033"; type StackHeightTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StakeFactory__factory.ts b/src/typechain/factories/StakeFactory__factory.ts index 83ed63d..c3da712 100644 --- a/src/typechain/factories/StakeFactory__factory.ts +++ b/src/typechain/factories/StakeFactory__factory.ts @@ -144,7 +144,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612a9180610b3383390190565b608051610a6f6100c46000396000818160a6015261037a0152610a6f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906107ce565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906107e1565b92915050565b60008061037183850185610901565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103f39085906004016109af565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526106ff6040840184610606565b6080606085015261071460a085018284610671565b9150506107246060850185610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403016080860152610759838284610671565b9695505050505050565b6000815180845260005b818110156107895760208185018101518683018201520161076d565b8181111561079b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610763565b6000602082840312156107f357600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610850576108506107fe565b60405290565b600082601f83011261086757600080fd5b813567ffffffffffffffff80821115610882576108826107fe565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108c8576108c86107fe565b816040528381528660208588010111156108e157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091357600080fd5b813567ffffffffffffffff8082111561092b57600080fd5b908301906080828603121561093f57600080fd5b61094761082d565b8235610952816105c4565b81526020838101359082015260408301358281111561097057600080fd5b61097c87828601610856565b60408301525060608301358281111561099457600080fd5b6109a087828601610856565b60608301525095945050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526109f560a0840182610763565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152610a308282610763565b9594505050505056fea2646970667358221220944d4ecf3631be609085936463812e5cf31bd3d61498b29d497fe72a6b58990764736f6c634300080a0033608060405234801561001057600080fd5b506001606555612a6c806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e366004612373565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f91906123e1565b61013361016b366004612456565b6103ed565b6035545b60405190815260200161013f565b610133610190366004612480565b610405565b6101a86101a33660046124bc565b61042b565b005b6040516012815260200161013f565b6101336101c7366004612456565b610862565b6101746101da3660046124d5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61017461021036600461253c565b6108ae565b610150610a44565b61013361022b366004612456565b610a53565b61013361023e366004612456565b610b2f565b6101a86102513660046124bc565b610b3d565b61017461026436600461258f565b610ea0565b6101746102773660046125e9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd36600461261c565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a90612657565b80601f016020809104026020016040519081016040528092919081815260200182805461039690612657565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb8185856112b7565b5060019392505050565b60003361041385828561146b565b61041e858585611542565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b33600090815260686020526040812054610525906001906126da565b336000908152606860205260408120805492935090918390811061054b5761054b6126f1565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061058884836126da565b90505b3360009081526068602052604090208054829190859081106105af576105af6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561064757336000908152606860205260409020805484908110610608576106086126f1565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f906001906126da565b8154811061068f5761068f6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856117f5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b905061078933876118a7565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190612720565b61082b908a612739565b6108359190612776565b60665473ffffffffffffffffffffffffffffffffffffffff169190611a91565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a99087906127b1565b6112b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff87166000908152606860205260409020805482908110610953576109536126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c06126f1565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611b65565b935082610a13816127c9565b9350506109a4565b82851415610a2857610a3a565b80610a32816127c9565b9150506108ef565b5050509392505050565b60606037805461036a90612657565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b2482868684036112b7565b506001949350505050565b6000336103fb818585611542565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190612720565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611bee565b600081610cfa57606754610cf3908590611c4c565b9050610d12565b82610d058584612739565b610d0f9190612776565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611c6b565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe906001906126da565b81548110610dce57610dce6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886117f5565b610e3d9085612802565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec16126f1565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f726126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe0816127c9565b915050610f0e565b5050505b949350505050565b60006110006001611d8b565b9050801561103557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600061104460208401846124d5565b73ffffffffffffffffffffffffffffffffffffffff1614156110c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b6111bc6111406040840184612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611182925050506060850185612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f1692505050565b6111c960208301836124d5565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906112489033908590612954565b60405180910390a180156112b357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166113fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461153c578181101561152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61153c84848484036112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8216611688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906117829084906127b1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117e891815260200190565b60405180910390a361153c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611a3c9084906126da565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161145e565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611a8c9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611fb7565b6000826008811115611bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261153c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ae3565b6000670de0b6b3a7640000611c618385612739565b6104249190612776565b73ffffffffffffffffffffffffffffffffffffffff8216611ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611cfa91906127b1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611d349084906127b1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008054610100900460ff1615611e42578160ff166001148015611dae5750303b155b611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b506000919050565b60005460ff808416911610611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b6112b382826120c3565b6000612019826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121819092919063ffffffff16565b805190915015611a8c578080602001905181019061203791906129f8565b611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff1661215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b815161216d9060369060208501906122e3565b508051611a8c9060379060208401906122e3565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122339190612a1a565b60006040518083038185875af1925050503d8060008114612270576040519150601f19603f3d011682016040523d82523d6000602084013e612275565b606091505b5091509150612285828286612290565b979650505050505050565b6060831561229f575081610424565b8251156122af5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049491906123e1565b8280546122ef90612657565b90600052602060002090601f0160209004810192826123115760008555612357565b82601f1061232a57805160ff1916838001178555612357565b82800160010185558215612357579182015b8281111561235757825182559160200191906001019061233c565b506118a39291505b808211156118a3576000815560010161235f565b60006020828403121561238557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b838110156123d05781810151838201526020016123b8565b8381111561153c5750506000910152565b60208152600082518060208401526124008160408501602087016123b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611f1157600080fd5b6000806040838503121561246957600080fd5b61247283612432565b946020939093013593505050565b60008060006060848603121561249557600080fd5b61249e84612432565b92506124ac60208501612432565b9150604084013590509250925092565b6000602082840312156124ce57600080fd5b5035919050565b6000602082840312156124e757600080fd5b61042482612432565b60008083601f84011261250257600080fd5b50813567ffffffffffffffff81111561251a57600080fd5b6020830191508360208260051b850101111561253557600080fd5b9250929050565b60008060006040848603121561255157600080fd5b61255a84612432565b9250602084013567ffffffffffffffff81111561257657600080fd5b612582868287016124f0565b9497909650939450505050565b600080600080606085870312156125a557600080fd5b6125ae85612432565b935060208501359250604085013567ffffffffffffffff8111156125d157600080fd5b6125dd878288016124f0565b95989497509550505050565b600080604083850312156125fc57600080fd5b61260583612432565b915061261360208401612432565b90509250929050565b60006020828403121561262e57600080fd5b813567ffffffffffffffff81111561264557600080fd5b82016080818503121561042457600080fd5b600181811c9082168061266b57607f821691505b602082108114156126a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126ec576126ec6126ab565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561273257600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612771576127716126ab565b500290565b6000826127ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156127c4576127c46126ab565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127fb576127fb6126ab565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818516808303821115612839576128396126ab565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261287757600080fd5b83018035915067ffffffffffffffff82111561289257600080fd5b60200191503681900382131561253557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128dc57600080fd5b830160208101925035905067ffffffffffffffff8111156128fc57600080fd5b80360383131561253557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061298185612432565b166040840152506020830135606083015261299f60408401846128a7565b6080808501526129b360c08501828461290b565b9150506129c360608501856128a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a086015261228583828461290b565b600060208284031215612a0a57600080fd5b8151801515811461042457600080fd5b60008251612a2c8184602087016123b5565b919091019291505056fea2646970667358221220bfb5394bbf762ac29113e49e62ffcecdbbded41c8c210c77ea7aa52c125636f764736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6129ee80610b3383390190565b608051610a6f6100c46000396000818160a6015261037a0152610a6f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906107ce565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906107e1565b92915050565b60008061037183850185610901565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103f39085906004016109af565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526106ff6040840184610606565b6080606085015261071460a085018284610671565b9150506107246060850185610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403016080860152610759838284610671565b9695505050505050565b6000815180845260005b818110156107895760208185018101518683018201520161076d565b8181111561079b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610763565b6000602082840312156107f357600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610850576108506107fe565b60405290565b600082601f83011261086757600080fd5b813567ffffffffffffffff80821115610882576108826107fe565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108c8576108c86107fe565b816040528381528660208588010111156108e157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091357600080fd5b813567ffffffffffffffff8082111561092b57600080fd5b908301906080828603121561093f57600080fd5b61094761082d565b8235610952816105c4565b81526020838101359082015260408301358281111561097057600080fd5b61097c87828601610856565b60408301525060608301358281111561099457600080fd5b6109a087828601610856565b60608301525095945050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526109f560a0840182610763565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152610a308282610763565b9594505050505056fea26469706673582212204c8d0d3cc07d49c88334aada1dfe79c2e0a521ffce9d92aa4264e4aac392a1ee64736f6c634300080a0033608060405234801561001057600080fd5b5060016065556129c9806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e3660046122cb565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f9190612339565b61013361016b3660046123b3565b6103ed565b6035545b60405190815260200161013f565b6101336101903660046123dd565b610405565b6101a86101a3366004612419565b61042b565b005b6040516012815260200161013f565b6101336101c73660046123b3565b610862565b6101746101da366004612432565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610174610210366004612499565b6108ae565b610150610a44565b61013361022b3660046123b3565b610a53565b61013361023e3660046123b3565b610b2f565b6101a8610251366004612419565b610b3d565b6101746102643660046124ec565b610ea0565b610174610277366004612546565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd366004612579565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a906125b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906125b4565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb81858561139a565b5060019392505050565b60003361041385828561154e565b61041e858585611625565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b3360009081526068602052604081205461052590600190612637565b336000908152606860205260408120805492935090918390811061054b5761054b61264e565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105888483612637565b90505b3360009081526068602052604090208054829190859081106105af576105af61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161115610647573360009081526068602052604090208054849081106106085761060861264e565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f90600190612637565b8154811061068f5761068f61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856118d8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b9050610789338761198a565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061267d565b61082b908a612696565b61083591906126d3565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b74565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a990879061270e565b61139a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff871660009081526068602052604090208054829081106109535761095361264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c061264e565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611c48565b935082610a1381612726565b9350506109a4565b82851415610a2857610a3a565b80610a3281612726565b9150506108ef565b5050509392505050565b60606037805461036a906125b4565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b24828686840361139a565b506001949350505050565b6000336103fb818585611625565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca9919061267d565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611cd1565b600081610cfa57606754610cf3908590611d2f565b9050610d12565b82610d058584612696565b610d0f91906126d3565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611d4e565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe90600190612637565b81548110610dce57610dce61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886118d8565b610e3d908561275f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec161264e565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f7261264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe081612726565b915050610f0e565b5050505b949350505050565b600054610100900460ff16158080156110145750600054600160ff909116105b8061102e5750303b15801561102e575060005460ff166001145b6110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561111857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60006111276020840184612432565b73ffffffffffffffffffffffffffffffffffffffff1614156111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b61129f611223604084018461279f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126592505050606085018561279f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e6e92505050565b6112ac6020830183612432565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061132b90339085906128b1565b60405180910390a1801561139657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661143c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461161f5781811015611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61161f848484840361139a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166116c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821661176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061186590849061270e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118cb91815260200190565b60405180910390a361161f565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff8216611a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611b1f908490612637565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611541565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b6f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f0f565b6000826008811115611cb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261161f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bc6565b6000670de0b6b3a7640000611d448385612696565b61042491906126d3565b73ffffffffffffffffffffffffffffffffffffffff8216611dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611ddd919061270e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e1790849061270e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b611396828261201b565b6000611f71826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120d99092919063ffffffff16565b805190915015611b6f5780806020019051810190611f8f9190612955565b611b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff166120b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b81516120c590603690602085019061223b565b508051611b6f90603790602084019061223b565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161218b9190612977565b60006040518083038185875af1925050503d80600081146121c8576040519150601f19603f3d011682016040523d82523d6000602084013e6121cd565b606091505b50915091506121dd8282866121e8565b979650505050505050565b606083156121f7575081610424565b8251156122075782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104949190612339565b828054612247906125b4565b90600052602060002090601f01602090048101928261226957600085556122af565b82601f1061228257805160ff19168380011785556122af565b828001600101855582156122af579182015b828111156122af578251825591602001919060010190612294565b506119869291505b8082111561198657600081556001016122b7565b6000602082840312156122dd57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b83811015612328578181015183820152602001612310565b8381111561161f5750506000910152565b602081526000825180602084015261235881604085016020870161230d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123ae57600080fd5b919050565b600080604083850312156123c657600080fd5b6123cf8361238a565b946020939093013593505050565b6000806000606084860312156123f257600080fd5b6123fb8461238a565b92506124096020850161238a565b9150604084013590509250925092565b60006020828403121561242b57600080fd5b5035919050565b60006020828403121561244457600080fd5b6104248261238a565b60008083601f84011261245f57600080fd5b50813567ffffffffffffffff81111561247757600080fd5b6020830191508360208260051b850101111561249257600080fd5b9250929050565b6000806000604084860312156124ae57600080fd5b6124b78461238a565b9250602084013567ffffffffffffffff8111156124d357600080fd5b6124df8682870161244d565b9497909650939450505050565b6000806000806060858703121561250257600080fd5b61250b8561238a565b935060208501359250604085013567ffffffffffffffff81111561252e57600080fd5b61253a8782880161244d565b95989497509550505050565b6000806040838503121561255957600080fd5b6125628361238a565b91506125706020840161238a565b90509250929050565b60006020828403121561258b57600080fd5b813567ffffffffffffffff8111156125a257600080fd5b82016080818503121561042457600080fd5b600181811c908216806125c857607f821691505b60208210811415612602577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561264957612649612608565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561268f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce612608565b500290565b600082612709577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561272157612721612608565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561275857612758612608565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561279657612796612608565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127d457600080fd5b83018035915067ffffffffffffffff8211156127ef57600080fd5b60200191503681900382131561249257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283957600080fd5b830160208101925035905067ffffffffffffffff81111561285957600080fd5b80360383131561249257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128de8561238a565b16604084015250602083013560608301526128fc6040840184612804565b60808085015261291060c085018284612868565b9150506129206060850185612804565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121dd838284612868565b60006020828403121561296757600080fd5b8151801515811461042457600080fd5b6000825161298981846020870161230d565b919091019291505056fea2646970667358221220fd729b475c9b0be8aaf319e61873b188919a1cca160d19b7be91f74a382eff1a64736f6c634300080a0033"; type StakeFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Stake__factory.ts b/src/typechain/factories/Stake__factory.ts index 989f829..cbee6d5 100644 --- a/src/typechain/factories/Stake__factory.ts +++ b/src/typechain/factories/Stake__factory.ts @@ -466,7 +466,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506001606555612a6c806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e366004612373565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f91906123e1565b61013361016b366004612456565b6103ed565b6035545b60405190815260200161013f565b610133610190366004612480565b610405565b6101a86101a33660046124bc565b61042b565b005b6040516012815260200161013f565b6101336101c7366004612456565b610862565b6101746101da3660046124d5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61017461021036600461253c565b6108ae565b610150610a44565b61013361022b366004612456565b610a53565b61013361023e366004612456565b610b2f565b6101a86102513660046124bc565b610b3d565b61017461026436600461258f565b610ea0565b6101746102773660046125e9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd36600461261c565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a90612657565b80601f016020809104026020016040519081016040528092919081815260200182805461039690612657565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb8185856112b7565b5060019392505050565b60003361041385828561146b565b61041e858585611542565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b33600090815260686020526040812054610525906001906126da565b336000908152606860205260408120805492935090918390811061054b5761054b6126f1565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16915061058884836126da565b90505b3360009081526068602052604090208054829190859081106105af576105af6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16111561064757336000908152606860205260409020805484908110610608576106086126f1565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f906001906126da565b8154811061068f5761068f6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856117f5565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b905061078933876118a7565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108219190612720565b61082b908a612739565b6108359190612776565b60665473ffffffffffffffffffffffffffffffffffffffff169190611a91565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a99087906127b1565b6112b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff87166000908152606860205260409020805482908110610953576109536126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c06126f1565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611b65565b935082610a13816127c9565b9350506109a4565b82851415610a2857610a3a565b80610a32816127c9565b9150506108ef565b5050509392505050565b60606037805461036a90612657565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b2482868684036112b7565b506001949350505050565b6000336103fb818585611542565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca99190612720565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611bee565b600081610cfa57606754610cf3908590611c4c565b9050610d12565b82610d058584612739565b610d0f9190612776565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611c6b565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe906001906126da565b81548110610dce57610dce6126f1565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886117f5565b610e3d9085612802565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec16126f1565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f726126f1565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe0816127c9565b915050610f0e565b5050505b949350505050565b60006110006001611d8b565b9050801561103557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600061104460208401846124d5565b73ffffffffffffffffffffffffffffffffffffffff1614156110c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611130576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b6111bc6111406040840184612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611182925050506060850185612842565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f1692505050565b6111c960208301836124d5565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906112489033908590612954565b60405180910390a180156112b357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611359576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166113fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461153c578181101561152f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61153c84848484036112b7565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8216611688576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561173e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906117829084906127b1565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117e891815260200190565b60405180910390a361153c565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff821661194a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611a3c9084906126da565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161145e565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611a8c9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611fb7565b6000826008811115611bd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261153c9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611ae3565b6000670de0b6b3a7640000611c618385612739565b6104249190612776565b73ffffffffffffffffffffffffffffffffffffffff8216611ce8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611cfa91906127b1565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611d349084906127b1565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60008054610100900460ff1615611e42578160ff166001148015611dae5750303b155b611e3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b506000919050565b60005460ff808416911610611ed9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b600054610100900460ff16611fad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b6112b382826120c3565b6000612019826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121819092919063ffffffff16565b805190915015611a8c578080602001905181019061203791906129f8565b611a8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff1661215a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b815161216d9060369060208501906122e3565b508051611a8c9060379060208401906122e3565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b61220a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516122339190612a1a565b60006040518083038185875af1925050503d8060008114612270576040519150601f19603f3d011682016040523d82523d6000602084013e612275565b606091505b5091509150612285828286612290565b979650505050505050565b6060831561229f575081610424565b8251156122af5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161049491906123e1565b8280546122ef90612657565b90600052602060002090601f0160209004810192826123115760008555612357565b82601f1061232a57805160ff1916838001178555612357565b82800160010185558215612357579182015b8281111561235757825182559160200191906001019061233c565b506118a39291505b808211156118a3576000815560010161235f565b60006020828403121561238557600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b838110156123d05781810151838201526020016123b8565b8381111561153c5750506000910152565b60208152600082518060208401526124008160408501602087016123b5565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611f1157600080fd5b6000806040838503121561246957600080fd5b61247283612432565b946020939093013593505050565b60008060006060848603121561249557600080fd5b61249e84612432565b92506124ac60208501612432565b9150604084013590509250925092565b6000602082840312156124ce57600080fd5b5035919050565b6000602082840312156124e757600080fd5b61042482612432565b60008083601f84011261250257600080fd5b50813567ffffffffffffffff81111561251a57600080fd5b6020830191508360208260051b850101111561253557600080fd5b9250929050565b60008060006040848603121561255157600080fd5b61255a84612432565b9250602084013567ffffffffffffffff81111561257657600080fd5b612582868287016124f0565b9497909650939450505050565b600080600080606085870312156125a557600080fd5b6125ae85612432565b935060208501359250604085013567ffffffffffffffff8111156125d157600080fd5b6125dd878288016124f0565b95989497509550505050565b600080604083850312156125fc57600080fd5b61260583612432565b915061261360208401612432565b90509250929050565b60006020828403121561262e57600080fd5b813567ffffffffffffffff81111561264557600080fd5b82016080818503121561042457600080fd5b600181811c9082168061266b57607f821691505b602082108114156126a5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126ec576126ec6126ab565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561273257600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612771576127716126ab565b500290565b6000826127ac577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156127c4576127c46126ab565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156127fb576127fb6126ab565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff808316818516808303821115612839576128396126ab565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261287757600080fd5b83018035915067ffffffffffffffff82111561289257600080fd5b60200191503681900382131561253557600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128dc57600080fd5b830160208101925035905067ffffffffffffffff8111156128fc57600080fd5b80360383131561253557600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061298185612432565b166040840152506020830135606083015261299f60408401846128a7565b6080808501526129b360c08501828461290b565b9150506129c360608501856128a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a086015261228583828461290b565b600060208284031215612a0a57600080fd5b8151801515811461042457600080fd5b60008251612a2c8184602087016123b5565b919091019291505056fea2646970667358221220bfb5394bbf762ac29113e49e62ffcecdbbded41c8c210c77ea7aa52c125636f764736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5060016065556129c9806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e3660046122cb565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f9190612339565b61013361016b3660046123b3565b6103ed565b6035545b60405190815260200161013f565b6101336101903660046123dd565b610405565b6101a86101a3366004612419565b61042b565b005b6040516012815260200161013f565b6101336101c73660046123b3565b610862565b6101746101da366004612432565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610174610210366004612499565b6108ae565b610150610a44565b61013361022b3660046123b3565b610a53565b61013361023e3660046123b3565b610b2f565b6101a8610251366004612419565b610b3d565b6101746102643660046124ec565b610ea0565b610174610277366004612546565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd366004612579565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a906125b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906125b4565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb81858561139a565b5060019392505050565b60003361041385828561154e565b61041e858585611625565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b3360009081526068602052604081205461052590600190612637565b336000908152606860205260408120805492935090918390811061054b5761054b61264e565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105888483612637565b90505b3360009081526068602052604090208054829190859081106105af576105af61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161115610647573360009081526068602052604090208054849081106106085761060861264e565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f90600190612637565b8154811061068f5761068f61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856118d8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b9050610789338761198a565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061267d565b61082b908a612696565b61083591906126d3565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b74565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a990879061270e565b61139a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff871660009081526068602052604090208054829081106109535761095361264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c061264e565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611c48565b935082610a1381612726565b9350506109a4565b82851415610a2857610a3a565b80610a3281612726565b9150506108ef565b5050509392505050565b60606037805461036a906125b4565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b24828686840361139a565b506001949350505050565b6000336103fb818585611625565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca9919061267d565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611cd1565b600081610cfa57606754610cf3908590611d2f565b9050610d12565b82610d058584612696565b610d0f91906126d3565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611d4e565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe90600190612637565b81548110610dce57610dce61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886118d8565b610e3d908561275f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec161264e565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f7261264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe081612726565b915050610f0e565b5050505b949350505050565b600054610100900460ff16158080156110145750600054600160ff909116105b8061102e5750303b15801561102e575060005460ff166001145b6110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561111857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60006111276020840184612432565b73ffffffffffffffffffffffffffffffffffffffff1614156111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b61129f611223604084018461279f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126592505050606085018561279f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e6e92505050565b6112ac6020830183612432565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061132b90339085906128b1565b60405180910390a1801561139657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661143c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461161f5781811015611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61161f848484840361139a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166116c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821661176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061186590849061270e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118cb91815260200190565b60405180910390a361161f565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff8216611a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611b1f908490612637565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611541565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b6f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f0f565b6000826008811115611cb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261161f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bc6565b6000670de0b6b3a7640000611d448385612696565b61042491906126d3565b73ffffffffffffffffffffffffffffffffffffffff8216611dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611ddd919061270e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e1790849061270e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b611396828261201b565b6000611f71826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120d99092919063ffffffff16565b805190915015611b6f5780806020019051810190611f8f9190612955565b611b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff166120b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b81516120c590603690602085019061223b565b508051611b6f90603790602084019061223b565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161218b9190612977565b60006040518083038185875af1925050503d80600081146121c8576040519150601f19603f3d011682016040523d82523d6000602084013e6121cd565b606091505b50915091506121dd8282866121e8565b979650505050505050565b606083156121f7575081610424565b8251156122075782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104949190612339565b828054612247906125b4565b90600052602060002090601f01602090048101928261226957600085556122af565b82601f1061228257805160ff19168380011785556122af565b828001600101855582156122af579182015b828111156122af578251825591602001919060010190612294565b506119869291505b8082111561198657600081556001016122b7565b6000602082840312156122dd57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b83811015612328578181015183820152602001612310565b8381111561161f5750506000910152565b602081526000825180602084015261235881604085016020870161230d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123ae57600080fd5b919050565b600080604083850312156123c657600080fd5b6123cf8361238a565b946020939093013593505050565b6000806000606084860312156123f257600080fd5b6123fb8461238a565b92506124096020850161238a565b9150604084013590509250925092565b60006020828403121561242b57600080fd5b5035919050565b60006020828403121561244457600080fd5b6104248261238a565b60008083601f84011261245f57600080fd5b50813567ffffffffffffffff81111561247757600080fd5b6020830191508360208260051b850101111561249257600080fd5b9250929050565b6000806000604084860312156124ae57600080fd5b6124b78461238a565b9250602084013567ffffffffffffffff8111156124d357600080fd5b6124df8682870161244d565b9497909650939450505050565b6000806000806060858703121561250257600080fd5b61250b8561238a565b935060208501359250604085013567ffffffffffffffff81111561252e57600080fd5b61253a8782880161244d565b95989497509550505050565b6000806040838503121561255957600080fd5b6125628361238a565b91506125706020840161238a565b90509250929050565b60006020828403121561258b57600080fd5b813567ffffffffffffffff8111156125a257600080fd5b82016080818503121561042457600080fd5b600181811c908216806125c857607f821691505b60208210811415612602577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561264957612649612608565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561268f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce612608565b500290565b600082612709577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561272157612721612608565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561275857612758612608565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561279657612796612608565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127d457600080fd5b83018035915067ffffffffffffffff8211156127ef57600080fd5b60200191503681900382131561249257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283957600080fd5b830160208101925035905067ffffffffffffffff81111561285957600080fd5b80360383131561249257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128de8561238a565b16604084015250602083013560608301526128fc6040840184612804565b60808085015261291060c085018284612868565b9150506129206060850185612804565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121dd838284612868565b60006020828403121561296757600080fd5b8151801515811461042457600080fd5b6000825161298981846020870161230d565b919091019291505056fea2646970667358221220fd729b475c9b0be8aaf319e61873b188919a1cca160d19b7be91f74a382eff1a64736f6c634300080a0033"; type StakeConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VMStateBuilder__factory.ts b/src/typechain/factories/VMStateBuilder__factory.ts index 283cc46..f1b3326 100644 --- a/src/typechain/factories/VMStateBuilder__factory.ts +++ b/src/typechain/factories/VMStateBuilder__factory.ts @@ -238,7 +238,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506200002a60605b6200005460201b620009141760201c565b6001600160a01b031660805262000042606062000019565b6001600160a01b031660a05262000197565b6000806200008e836040516020016200006e919062000135565b604051602081830303815290604052620000c960201b6200099f1760201c565b90508051602082016000f091506001600160a01b038216620000c35760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620000e192919062000151565b6040516020818303038152906040529050919050565b6000815160005b818110156200011a5760208185018101518683015201620000fe565b818111156200012a576000828601525b509290920192915050565b6000815260006200014a6001830184620000f7565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200018f600e830184620000f7565b949350505050565b60805160a051611720620001bd60003960006105600152600061053301526117206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009c5780639b0bc349146100b1578063a46c2a311461009557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611253565b6100c4565b60405161008c9190611371565b60405180910390f35b606061007f565b6100af6100aa3660046113c2565b6104bf565b005b61007f6100bf366004611412565b6107c3565b606060006100d1856109cb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561011f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101439190611476565b60200151905060008060005b86518110156102e7578387828151811061016b5761016b6114c5565b602002602001015160a0018181525050600285518161018c5761018c6114f4565b0487828151811061019f5761019f6114c5565b602002602001015160c00181815250506101d2888883815181106101c5576101c56114c5565b60200260200101516104bf565b6102028782815181106101e7576101e76114c5565b60200260200101516080015184610b0f90919063ffffffff16565b9250610234878281518110610219576102196114c5565b60200260200101516060015183610b0f90919063ffffffff16565b9150868181518110610248576102486114c5565b602002602001015160200151878281518110610266576102666114c5565b60200260200101516040015110156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161014f565b506000828860200151510167ffffffffffffffff81111561030a5761030a610f22565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b50905060005b886020015151811015610389578860200151818151811061035c5761035c6114c5565b6020026020010151828281518110610376576103766114c5565b6020908102919091010152600101610339565b5087515160009067ffffffffffffffff8111156103a8576103a8610f22565b6040519080825280602002602001820160405280156103db57816020015b60608152602001906001900390816103c65790505b50905060005b89515181101561043757610412878b600001518381518110610405576104056114c5565b60200260200101516107c3565b828281518110610424576104246114c5565b60209081029190910101526001016103e1565b506104af6040518060a00160405280600081526020018567ffffffffffffffff81111561046657610466610f22565b60405190808252806020026020018201604052801561048f578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250610b26565b96505050505050505b9392505050565b8051825151811061052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102d6565b60006105577f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060006105847f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060008080600080602088026020018a5101519050805193505b83851015610748576002850194508481015180601e1a935080601f1a925050600683101561066357826105f35789602001515189608001510182106105e357600080fd5b604089018051600101905261064a565b600183141561060c57886040015182106105e357600080fd5b600283141561062557604089018051600101905261064a565b600383141561064a578860a00151821061063e57600080fd5b60408901805160010190525b600483141561065e5761065e8a8a84610c91565b61072b565b8860c0015183106106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102d6565b6020838102888101820151908801909101516106ef8463ffffffff8416565b60408c018051919091039081905260608c015161070b91610b0f565b60608c015261071d8463ffffffff8316565b60408c018051909101905250505b604089015160608a015161073e91610b0f565b60608a015261059f565b606089015160ff10156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102d6565b50505050505050505050565b80516060906002810615610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102d6565b60006002600383020467ffffffffffffffff81111561085457610854610f22565b6040519080825280601f01601f19166020018201604052801561087e576020820181803683370190505b509050600660018381018160005b828210156109065781890151601f1a60028306156108e857858110156108ba57600182019181908801602101535b8581106108e857600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b600283066108f95780826020018801535b506001918201910161088c565b509398975050505050505050565b60008061093f8360405160200161092b9190611523565b60405160208183030381529060405261099f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610999576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109b5929190611549565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926109ff9116610c63565b9050805160001415610b0957610aac610aa78473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610aa291908101906115e0565b610d30565b610914565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104b8836109cb565b92915050565b600081831015610b1f57816104b8565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610b729190611657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bae929160200161168d565b604051602081830303815290604052905060005b856040015151811015610c5a578186604001518281518110610be657610be66114c5565b60200260200101515160001b87604001518381518110610c0857610c086114c5565b6020026020010151604051602001610c22939291906116b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610bc2565b50949350505050565b6060610b098260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610cdb9190610b0f565b60608401526080830151610cef9082610b0f565b60808401528251600783168085526001600385811c161b919060005b83811015610d2557610d1d88886104bf565b600101610d0b565b505090935250505050565b60606020825181610d4357610d436114f4565b0615610dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102d6565b60006010835181610dbe57610dbe6114f4565b0467ffffffffffffffff811115610dd757610dd7610f22565b6040519080825280601f01601f191660200182016040528015610e01576020820181803683370190505b509050600060025b8451821015610e31578083018051602084880181015190911790915290910190600201610e09565b50909392505050565b6060833b80610e595750506040805160208101909152600081526104b8565b80841115610e775750506040805160208101909152600081526104b8565b83831015610ec2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102d6565b8383038482036000828210610ed75782610ed9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f7457610f74610f22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fc157610fc1610f22565b604052919050565b600067ffffffffffffffff821115610fe357610fe3610f22565b5060051b60200190565b600067ffffffffffffffff82111561100757611007610f22565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261104457600080fd5b813561105761105282610fed565b610f7a565b81815284602083860101111561106c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261109a57600080fd5b813560206110aa61105283610fc9565b82815260059290921b840181019181810190868411156110c957600080fd5b8286015b848110156110e457803583529183019183016110cd565b509695505050505050565b60006040828403121561110157600080fd5b611109610f51565b9050813567ffffffffffffffff8082111561112357600080fd5b818401915084601f83011261113757600080fd5b8135602061114761105283610fc9565b82815260059290921b8401810191818101908884111561116657600080fd5b8286015b8481101561119e578035868111156111825760008081fd5b6111908b86838b0101611033565b84525091830191830161116a565b50865250858101359350828411156111b557600080fd5b6111c187858801611089565b818601525050505092915050565b600060e082840312156111e157600080fd5b60405160e0810181811067ffffffffffffffff8211171561120457611204610f22565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561126857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461128c57600080fd5b925060208481013567ffffffffffffffff808211156112aa57600080fd5b6112b6888389016110ef565b945060408701359150808211156112cc57600080fd5b508501601f810187136112de57600080fd5b80356112ec61105282610fc9565b81815260e0918202830184019184820191908a84111561130b57600080fd5b938501935b83851015611331576113228b866111cf565b83529384019391850191611310565b5080955050505050509250925092565b60005b8381101561135c578181015183820152602001611344565b8381111561136b576000848401525b50505050565b6020815260008251806020840152611390816040850160208701611341565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008061010083850312156113d657600080fd5b823567ffffffffffffffff8111156113ed57600080fd5b6113f9858286016110ef565b92505061140984602085016111cf565b90509250929050565b6000806040838503121561142557600080fd5b823567ffffffffffffffff8082111561143d57600080fd5b61144986838701611033565b9350602085013591508082111561145f57600080fd5b5061146c85828601611033565b9150509250929050565b60006040828403121561148857600080fd5b6040516040810181811067ffffffffffffffff821117156114ab576114ab610f22565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081526000825161153c816001850160208701611341565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516115d281600e850160208701611341565b91909101600e019392505050565b6000602082840312156115f257600080fd5b815167ffffffffffffffff81111561160957600080fd5b8201601f8101841361161a57600080fd5b805161162861105282610fed565b81815285602083850101111561163d57600080fd5b61164e826020830160208601611341565b95945050505050565b815160009082906020808601845b8381101561168157815185529382019390820190600101611665565b50929695505050505050565b828152600082516116a5816020850160208701611341565b919091016020019392505050565b600084516116c5818460208901611341565b820184815283516116dd816020808501908801611341565b016020019594505050505056fea2646970667358221220cd735fe7d1006926589b3c5cd7e55f3ea2b6889bb0e65c15c8a1a1629fd568be64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506200002a60605b6200005460201b620009141760201c565b6001600160a01b031660805262000042606062000019565b6001600160a01b031660a05262000197565b6000806200008e836040516020016200006e919062000135565b604051602081830303815290604052620000c960201b6200099f1760201c565b90508051602082016000f091506001600160a01b038216620000c35760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620000e192919062000151565b6040516020818303038152906040529050919050565b6000815160005b818110156200011a5760208185018101518683015201620000fe565b818111156200012a576000828601525b509290920192915050565b6000815260006200014a6001830184620000f7565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200018f600e830184620000f7565b949350505050565b60805160a051611720620001bd60003960006105600152600061053301526117206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009c5780639b0bc349146100b1578063a46c2a311461009557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611253565b6100c4565b60405161008c9190611371565b60405180910390f35b606061007f565b6100af6100aa3660046113c2565b6104bf565b005b61007f6100bf366004611412565b6107c3565b606060006100d1856109cb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561011f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101439190611476565b60200151905060008060005b86518110156102e7578387828151811061016b5761016b6114c5565b602002602001015160a0018181525050600285518161018c5761018c6114f4565b0487828151811061019f5761019f6114c5565b602002602001015160c00181815250506101d2888883815181106101c5576101c56114c5565b60200260200101516104bf565b6102028782815181106101e7576101e76114c5565b60200260200101516080015184610b0f90919063ffffffff16565b9250610234878281518110610219576102196114c5565b60200260200101516060015183610b0f90919063ffffffff16565b9150868181518110610248576102486114c5565b602002602001015160200151878281518110610266576102666114c5565b60200260200101516040015110156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161014f565b506000828860200151510167ffffffffffffffff81111561030a5761030a610f22565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b50905060005b886020015151811015610389578860200151818151811061035c5761035c6114c5565b6020026020010151828281518110610376576103766114c5565b6020908102919091010152600101610339565b5087515160009067ffffffffffffffff8111156103a8576103a8610f22565b6040519080825280602002602001820160405280156103db57816020015b60608152602001906001900390816103c65790505b50905060005b89515181101561043757610412878b600001518381518110610405576104056114c5565b60200260200101516107c3565b828281518110610424576104246114c5565b60209081029190910101526001016103e1565b506104af6040518060a00160405280600081526020018567ffffffffffffffff81111561046657610466610f22565b60405190808252806020026020018201604052801561048f578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250610b26565b96505050505050505b9392505050565b8051825151811061052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102d6565b60006105577f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060006105847f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060008080600080602088026020018a5101519050805193505b83851015610748576002850194508481015180601e1a935080601f1a925050600683101561066357826105f35789602001515189608001510182106105e357600080fd5b604089018051600101905261064a565b600183141561060c57886040015182106105e357600080fd5b600283141561062557604089018051600101905261064a565b600383141561064a578860a00151821061063e57600080fd5b60408901805160010190525b600483141561065e5761065e8a8a84610c91565b61072b565b8860c0015183106106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102d6565b6020838102888101820151908801909101516106ef8463ffffffff8416565b60408c018051919091039081905260608c015161070b91610b0f565b60608c015261071d8463ffffffff8316565b60408c018051909101905250505b604089015160608a015161073e91610b0f565b60608a015261059f565b606089015160ff10156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102d6565b50505050505050505050565b80516060906002810615610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102d6565b60006002600383020467ffffffffffffffff81111561085457610854610f22565b6040519080825280601f01601f19166020018201604052801561087e576020820181803683370190505b509050600660018381018160005b828210156109065781890151601f1a60028306156108e857858110156108ba57600182019181908801602101535b8581106108e857600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b600283066108f95780826020018801535b506001918201910161088c565b509398975050505050505050565b60008061093f8360405160200161092b9190611523565b60405160208183030381529060405261099f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610999576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109b5929190611549565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926109ff9116610c63565b9050805160001415610b0957610aac610aa78473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610aa291908101906115e0565b610d30565b610914565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104b8836109cb565b92915050565b600081831015610b1f57816104b8565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610b729190611657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bae929160200161168d565b604051602081830303815290604052905060005b856040015151811015610c5a578186604001518281518110610be657610be66114c5565b60200260200101515160001b87604001518381518110610c0857610c086114c5565b6020026020010151604051602001610c22939291906116b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610bc2565b50949350505050565b6060610b098260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610cdb9190610b0f565b60608401526080830151610cef9082610b0f565b60808401528251600783168085526001600385811c161b919060005b83811015610d2557610d1d88886104bf565b600101610d0b565b505090935250505050565b60606020825181610d4357610d436114f4565b0615610dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102d6565b60006010835181610dbe57610dbe6114f4565b0467ffffffffffffffff811115610dd757610dd7610f22565b6040519080825280601f01601f191660200182016040528015610e01576020820181803683370190505b509050600060025b8451821015610e31578083018051602084880181015190911790915290910190600201610e09565b50909392505050565b6060833b80610e595750506040805160208101909152600081526104b8565b80841115610e775750506040805160208101909152600081526104b8565b83831015610ec2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102d6565b8383038482036000828210610ed75782610ed9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f7457610f74610f22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fc157610fc1610f22565b604052919050565b600067ffffffffffffffff821115610fe357610fe3610f22565b5060051b60200190565b600067ffffffffffffffff82111561100757611007610f22565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261104457600080fd5b813561105761105282610fed565b610f7a565b81815284602083860101111561106c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261109a57600080fd5b813560206110aa61105283610fc9565b82815260059290921b840181019181810190868411156110c957600080fd5b8286015b848110156110e457803583529183019183016110cd565b509695505050505050565b60006040828403121561110157600080fd5b611109610f51565b9050813567ffffffffffffffff8082111561112357600080fd5b818401915084601f83011261113757600080fd5b8135602061114761105283610fc9565b82815260059290921b8401810191818101908884111561116657600080fd5b8286015b8481101561119e578035868111156111825760008081fd5b6111908b86838b0101611033565b84525091830191830161116a565b50865250858101359350828411156111b557600080fd5b6111c187858801611089565b818601525050505092915050565b600060e082840312156111e157600080fd5b60405160e0810181811067ffffffffffffffff8211171561120457611204610f22565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561126857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461128c57600080fd5b925060208481013567ffffffffffffffff808211156112aa57600080fd5b6112b6888389016110ef565b945060408701359150808211156112cc57600080fd5b508501601f810187136112de57600080fd5b80356112ec61105282610fc9565b81815260e0918202830184019184820191908a84111561130b57600080fd5b938501935b83851015611331576113228b866111cf565b83529384019391850191611310565b5080955050505050509250925092565b60005b8381101561135c578181015183820152602001611344565b8381111561136b576000848401525b50505050565b6020815260008251806020840152611390816040850160208701611341565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008061010083850312156113d657600080fd5b823567ffffffffffffffff8111156113ed57600080fd5b6113f9858286016110ef565b92505061140984602085016111cf565b90509250929050565b6000806040838503121561142557600080fd5b823567ffffffffffffffff8082111561143d57600080fd5b61144986838701611033565b9350602085013591508082111561145f57600080fd5b5061146c85828601611033565b9150509250929050565b60006040828403121561148857600080fd5b6040516040810181811067ffffffffffffffff821117156114ab576114ab610f22565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081526000825161153c816001850160208701611341565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516115d281600e850160208701611341565b91909101600e019392505050565b6000602082840312156115f257600080fd5b815167ffffffffffffffff81111561160957600080fd5b8201601f8101841361161a57600080fd5b805161162861105282610fed565b81815285602083850101111561163d57600080fd5b61164e826020830160208601611341565b95945050505050565b815160009082906020808601845b8381101561168157815185529382019390820190600101611665565b50929695505050505050565b828152600082516116a5816020850160208701611341565b919091016020019392505050565b600084516116c5818460208901611341565b820184815283516116dd816020808501908801611341565b016020019594505050505056fea264697066735822122054bae36e78a0fd904c0d8e7af39329eb28b2e7842061a7b08cf588ee520ee9ac64736f6c634300080a0033"; type VMStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyCallbackTest__factory.ts b/src/typechain/factories/VerifyCallbackTest__factory.ts index ec0d687..246083d 100644 --- a/src/typechain/factories/VerifyCallbackTest__factory.ts +++ b/src/typechain/factories/VerifyCallbackTest__factory.ts @@ -208,7 +208,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220184ade962091d20c39addde39fc1ad15600e30d5f030a91c92c1e84fd7b5782164736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220648f05203a3f3903e1b1b5a1cbe86cad75ffdf4dc7a41ce4c92661c01f5d2c8964736f6c634300080a0033"; type VerifyCallbackTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyFactory__factory.ts b/src/typechain/factories/VerifyFactory__factory.ts index 8c49ddc..8dab4ee 100644 --- a/src/typechain/factories/VerifyFactory__factory.ts +++ b/src/typechain/factories/VerifyFactory__factory.ts @@ -134,7 +134,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612d468061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220b02c6364a19ef9e42556de8c9abff2b027e44b0aebad8e7110bdeb9bddecd8c464736f6c634300080a0033608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046124b9565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046126a2565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046126a2565b610be2565b610231600081565b61029c61046e366004612765565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a8366004612791565b61123d565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046124b9565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046124b9565b611a58565b61029c6105073660046124b9565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261123d565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d3384848481811061078657610786612875565b905060200281019061079891906128a4565b6040516107a69291906128e2565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff8111156108195761081961252e565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108615761086161252e565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b0612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611e6a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a79929190612a80565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612aaf565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612aaf565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c4561252e565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c92612875565b6020026020010151905060026000888481518110610cb257610cb2612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db7929190612a80565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612aaf565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b6000610e936001611f03565b90508015610ec857600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610ed7602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610f55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610f7f7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b610fc97f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b610ff37f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b61103d7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110677fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b6110b17f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6110e77f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6110e2602085018561249e565b611cc3565b6111187f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16110e2602085018561249e565b6111497fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6110e2602085018561249e565b611159604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906111d09033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561125a5750600061059f565b81836040015163ffffffff16116112735750600361059f565b81836020015163ffffffff161161128c5750600261059f565b825163ffffffff1682106112a25750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff808216835264010000000082048116948301949094526801000000000000000090049092169082015290611300824261123d565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116555761165561252e565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c61252e565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff42811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab1904261123d565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be0904261123d565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db61252e565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b600080602083850312156124cc57600080fd5b823567ffffffffffffffff808211156124e457600080fd5b818501915085601f8301126124f857600080fd5b81358181111561250757600080fd5b8660208260051b850101111561251c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156125805761258061252e565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125cd576125cd61252e565b604052919050565b6000604082840312156125e757600080fd5b6125ef61255d565b90506125fa8261244e565b815260208083013567ffffffffffffffff8082111561261857600080fd5b818501915085601f83011261262c57600080fd5b81358181111561263e5761263e61252e565b61266e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612586565b9150808252868482850101111561268457600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156126b557600080fd5b823567ffffffffffffffff808211156126cd57600080fd5b818501915085601f8301126126e157600080fd5b8135818111156126f3576126f361252e565b8060051b612702858201612586565b918252838101850191858101908984111561271c57600080fd5b86860192505b838310156127585782358581111561273a5760008081fd5b6127488b89838a01016125d5565b8352509186019190860190612722565b9998505050505050505050565b60006040828403121561277757600080fd5b50919050565b803563ffffffff8116811461208957600080fd5b60008082840360808112156127a557600080fd5b60608112156127b357600080fd5b506040516060810181811067ffffffffffffffff821117156127d7576127d761252e565b6040526127e38461277d565b81526127f16020850161277d565b60208201526128026040850161277d565b6040820152946060939093013593505050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561251c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f36836125d5565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220e9c8a42ebc6b9460007d52351fe4fbb996021504975aa18622d8de43db03e1d664736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612c9e8061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220be4de78be4f78a48eee27312ed39acd599f3f97b809f00a45c2c6d9e3adc28f564736f6c634300080a0033608060405234801561001057600080fd5b50612c7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612346565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612388565b60009081526020819052604090206001015490565b61029c6102973660046123ca565b6105a5565b005b6103246102ac3660046123f6565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ca565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b366004612411565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125fa565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ca565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125fa565b610be2565b610231600081565b61029c61046e3660046126bd565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a83660046126e9565b61131b565b61029c6104bb36600461276d565b611389565b61029c6104ce366004612411565b6116d3565b61029c6104e13660046123ca565b611b11565b61029c6104f4366004612411565b611b36565b61029c610507366004612411565b611c65565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d94565b6105ca8383611da1565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e91565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261131b565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127cd565b905060200281019061079891906127fc565b6040516107a692919061283a565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612486565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612486565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127cd565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f48565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f48565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129d8565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a07565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f72565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a07565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612486565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127cd565b6020026020010151905060026000888481518110610cb257610cb26127cd565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f48565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129d8565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f72565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a07565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610fb560208401846123f6565b73ffffffffffffffffffffffffffffffffffffffff161415611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61105d7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fe1565b6110a77f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fe1565b6110d17f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fe1565b61111b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fe1565b6111457fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fe1565b61118f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fe1565b6111c57f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111c060208501856123f6565b611da1565b6111f67f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111c060208501856123f6565b6112277fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111c060208501856123f6565b61123760408301602084016123f6565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ae9033908590612aa5565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff1610156113385750600061059f565b81836040015163ffffffff16116113515750600361059f565b81836020015163ffffffff161161136a5750600261059f565b825163ffffffff1682106113805750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113de824261131b565b9050600281141580156113f2575060038114155b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061152757604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115bd90339084906129d8565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115fb5790505090508281600081518110611639576116396127cd565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116989033908590600401612a07565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116fd81611d94565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561173357611733612486565b60405190808252806020026020018201604052801561175c578160200160208202803683370190505b50905060008467ffffffffffffffff81111561177a5761177a612486565b6040519080825280602002602001820160405280156117a3578160200160208202803683370190505b50905060008060005b878110156119b85760008989838181106117c8576117c86127cd565b90506020028101906117da91906127fc565b6117e390612aef565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156118a157604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061189a868286611f48565b6001909301925b604087015163ffffffff90811614156119765763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561196f858285611f48565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119a79291906129d8565b60405180910390a1506001016117ac565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611b06578215611a6f576119e88584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a3c9033908990600401612a07565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050505b8115611b0657611a7f8483611f72565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ad39033908890600401612a07565b600060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b2c81611d94565b6105ca8383611e91565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b8f904261131b565b14611bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c3557611c356127cd565b9050602002810190611c4791906127fc565b604051611c5592919061283a565b60405180910390a1600101611bf9565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611cbe904261131b565b14611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d6457611d646127cd565b9050602002810190611d7691906127fc565b604051611d8492919061283a565b60405180910390a1600101611d28565b611d9e813361202c565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e333390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f6057611f606127cd565b60200260200101818152505050505050565b8151811115611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120828173ffffffffffffffffffffffffffffffffffffffff1660146120fc565b61208d8360206120fc565b60405160200161209e929190612afb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b7c565b6060600061210b836002612bbe565b612116906002612bfb565b67ffffffffffffffff81111561212e5761212e612486565b6040519080825280601f01601f191660200182016040528015612158576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061218f5761218f6127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121f2576121f26127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061222e846002612bbe565b612239906001612bfb565b90505b60018111156122d6577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061227a5761227a6127cd565b1a60f81b828281518110612290576122906127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122cf81612c13565b905061223c565b50831561233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561235857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461233f57600080fd5b60006020828403121561239a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123c557600080fd5b919050565b600080604083850312156123dd57600080fd5b823591506123ed602084016123a1565b90509250929050565b60006020828403121561240857600080fd5b61233f826123a1565b6000806020838503121561242457600080fd5b823567ffffffffffffffff8082111561243c57600080fd5b818501915085601f83011261245057600080fd5b81358181111561245f57600080fd5b8660208260051b850101111561247457600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124d8576124d8612486565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561252557612525612486565b604052919050565b60006040828403121561253f57600080fd5b6125476124b5565b9050612552826123a1565b815260208083013567ffffffffffffffff8082111561257057600080fd5b818501915085601f83011261258457600080fd5b81358181111561259657612596612486565b6125c6847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124de565b915080825286848285010111156125dc57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561260d57600080fd5b823567ffffffffffffffff8082111561262557600080fd5b818501915085601f83011261263957600080fd5b81358181111561264b5761264b612486565b8060051b61265a8582016124de565b918252838101850191858101908984111561267457600080fd5b86860192505b838310156126b0578235858111156126925760008081fd5b6126a08b89838a010161252d565b835250918601919086019061267a565b9998505050505050505050565b6000604082840312156126cf57600080fd5b50919050565b803563ffffffff811681146123c557600080fd5b60008082840360808112156126fd57600080fd5b606081121561270b57600080fd5b506040516060810181811067ffffffffffffffff8211171561272f5761272f612486565b60405261273b846126d5565b8152612749602085016126d5565b602082015261275a604085016126d5565b6040820152946060939093013593505050565b6000806020838503121561278057600080fd5b823567ffffffffffffffff8082111561279857600080fd5b818501915085601f8301126127ac57600080fd5b8135818111156127bb57600080fd5b86602082850101111561247457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261283057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015280612867856123a1565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128a357600080fd5b8301803567ffffffffffffffff8111156128bc57600080fd5b8036038513156128cb57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b8381101561293c578181015183820152602001612924565b8381111561294b576000848401525b50505050565b60008151808452612969816020860160208601612921565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129d06040850182612951565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129d0604083018461299b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a97577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a8586835161299b565b95509284019290840190600101612a4b565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612ace856123a1565b16602084015280612ae1602086016123a1565b166040840152509392505050565b600061059f368361252d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b33816017850160208801612921565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b70816028840160208801612921565b01602801949350505050565b60208152600061233f6020830184612951565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bf657612bf6612b8f565b500290565b60008219821115612c0e57612c0e612b8f565b500190565b600081612c2257612c22612b8f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212203d0ba714d57d7fdb0d65b54e89a15e74d8998df27f317576865309844fbad83f64736f6c634300080a0033"; type VerifyFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTierFactory__factory.ts b/src/typechain/factories/VerifyTierFactory__factory.ts index 817492d..1224dd9 100644 --- a/src/typechain/factories/VerifyTierFactory__factory.ts +++ b/src/typechain/factories/VerifyTierFactory__factory.ts @@ -125,7 +125,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610be68061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea2646970667358221220f80eb5070d292b319fba74739ae6152f9945076b230413f5fe463a844d915cfe64736f6c634300080a0033608060405234801561001057600080fd5b50610bc6806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f3660046108ae565b6100c2565b60405190151581526020015b60405180910390f35b61008c610087366004610999565b61015b565b604051908152602001610070565b6100ad6100a8366004610a52565b61032a565b005b61008c6100bd366004610a6d565b6104d9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610b77565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff1661067d565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b60006103366001610723565b9050801561036b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166103ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156104d557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105749190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190610b77565b1415610650576020015163ffffffff169050610675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156106eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103e4565b6000855b858110156107175763ffffffff6020820290811b199890981685891b179791506001016106ef565b50959695505050505050565b60008054610100900460ff16156107da578160ff1660011480156107465750303b155b6107d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b506000919050565b60005460ff808416911610610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6000602082840312156108c057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108f057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109915761099161091b565b604052919050565b600080604083850312156109ac57600080fd5b6109b5836108f7565b915060208084013567ffffffffffffffff808211156109d357600080fd5b818601915086601f8301126109e757600080fd5b8135818111156109f9576109f961091b565b8060051b9150610a0a84830161094a565b8181529183018401918481019089841115610a2457600080fd5b938501935b83851015610a4257843582529385019390850190610a29565b8096505050505050509250929050565b600060208284031215610a6457600080fd5b6108f0826108f7565b60008060008060608587031215610a8357600080fd5b610a8c856108f7565b935060208501359250604085013567ffffffffffffffff80821115610ab057600080fd5b818701915087601f830112610ac457600080fd5b813581811115610ad357600080fd5b8860208260051b8501011115610ae857600080fd5b95989497505060200194505050565b805163ffffffff811681146108a957600080fd5b600060608284031215610b1d57600080fd5b6040516060810181811067ffffffffffffffff82111715610b4057610b4061091b565b604052610b4c83610af7565b8152610b5a60208401610af7565b6020820152610b6b60408401610af7565b60408201529392505050565b600060208284031215610b8957600080fd5b505191905056fea2646970667358221220ad7f0bcb7feccc12173b890f13d9da97457a76b7935102054fe9808b8d0d520c64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610b438061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea26469706673582212209e0e557b1a4a3c1ca6ab91968d9689e01da72d45292a49a227ef113d7f24e32e64736f6c634300080a0033608060405234801561001057600080fd5b50610b23806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122076c864008663246b84869bbdb2a1a64aa869ceee967deb4b7d3898c320384da764736f6c634300080a0033"; type VerifyTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTier__factory.ts b/src/typechain/factories/VerifyTier__factory.ts index 2d6b1cd..a9f0787 100644 --- a/src/typechain/factories/VerifyTier__factory.ts +++ b/src/typechain/factories/VerifyTier__factory.ts @@ -126,7 +126,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610bc6806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f3660046108ae565b6100c2565b60405190151581526020015b60405180910390f35b61008c610087366004610999565b61015b565b604051908152602001610070565b6100ad6100a8366004610a52565b61032a565b005b61008c6100bd366004610a6d565b6104d9565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610b77565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff1661067d565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b60006103366001610723565b9050801561036b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166103ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156104d557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610550573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105749190610b0b565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610615573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106399190610b77565b1415610650576020015163ffffffff169050610675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156106eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103e4565b6000855b858110156107175763ffffffff6020820290811b199890981685891b179791506001016106ef565b50959695505050505050565b60008054610100900460ff16156107da578160ff1660011480156107465750303b155b6107d2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b506000919050565b60005460ff808416911610610871576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016103e4565b50600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff92909216919091179055600190565b919050565b6000602082840312156108c057600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146108f057600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146108a957600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109915761099161091b565b604052919050565b600080604083850312156109ac57600080fd5b6109b5836108f7565b915060208084013567ffffffffffffffff808211156109d357600080fd5b818601915086601f8301126109e757600080fd5b8135818111156109f9576109f961091b565b8060051b9150610a0a84830161094a565b8181529183018401918481019089841115610a2457600080fd5b938501935b83851015610a4257843582529385019390850190610a29565b8096505050505050509250929050565b600060208284031215610a6457600080fd5b6108f0826108f7565b60008060008060608587031215610a8357600080fd5b610a8c856108f7565b935060208501359250604085013567ffffffffffffffff80821115610ab057600080fd5b818701915087601f830112610ac457600080fd5b813581811115610ad357600080fd5b8860208260051b8501011115610ae857600080fd5b95989497505060200194505050565b805163ffffffff811681146108a957600080fd5b600060608284031215610b1d57600080fd5b6040516060810181811067ffffffffffffffff82111715610b4057610b4061091b565b604052610b4c83610af7565b8152610b5a60208401610af7565b6020820152610b6b60408401610af7565b60408201529392505050565b600060208284031215610b8957600080fd5b505191905056fea2646970667358221220ad7f0bcb7feccc12173b890f13d9da97457a76b7935102054fe9808b8d0d520c64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610b23806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122076c864008663246b84869bbdb2a1a64aa869ceee967deb4b7d3898c320384da764736f6c634300080a0033"; type VerifyTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Verify__factory.ts b/src/typechain/factories/Verify__factory.ts index 6a1ddf0..2342577 100644 --- a/src/typechain/factories/Verify__factory.ts +++ b/src/typechain/factories/Verify__factory.ts @@ -799,7 +799,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50612d26806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab3660046123f3565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612435565b60009081526020819052604090206001015490565b61029c610297366004612472565b6105a5565b005b6103246102ac36600461249e565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c610361366004612472565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046124b9565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046126a2565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f366004612472565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046126a2565b610be2565b610231600081565b61029c61046e366004612765565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a8366004612791565b61123d565b61029c6104bb366004612815565b6112ab565b61029c6104ce3660046124b9565b6115f5565b61029c6104e1366004612472565b611a33565b61029c6104f43660046124b9565b611a58565b61029c6105073660046124b9565b611b87565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611cb6565b6105ca8383611cc3565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611db3565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261123d565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d3384848481811061078657610786612875565b905060200281019061079891906128a4565b6040516107a69291906128e2565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff8111156108195761081961252e565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff8111156108615761086161252e565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b0612875565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611e6a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611e6a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a79929190612a80565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612aaf565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611e94565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612aaf565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611cb6565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c4561252e565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c92612875565b6020026020010151905060026000888481518110610cb257610cb2612875565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611e6a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db7929190612a80565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611e94565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612aaf565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b6000610e936001611f03565b90508015610ec857600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610ed7602084018461249e565b73ffffffffffffffffffffffffffffffffffffffff161415610f55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b610f7f7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8061208e565b610fc97f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c61208e565b610ff37f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18061208e565b61103d7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b161208e565b6110677fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8061208e565b6110b17f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d61208e565b6110e77f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6110e2602085018561249e565b611cc3565b6111187f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16110e2602085018561249e565b6111497fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6110e2602085018561249e565b611159604083016020840161249e565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906111d09033908590612b4d565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561125a5750600061059f565b81836040015163ffffffff16116112735750600361059f565b81836020015163ffffffff161161128c5750600261059f565b825163ffffffff1682106112a25750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff808216835264010000000082048116948301949094526801000000000000000090049092169082015290611300824261123d565b905060028114158015611314575060038114155b61137a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061144957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906114df9033908490612a80565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b60408051808201909152600081526060602082015281526020019060019003908161151d579050509050828160008151811061155b5761155b612875565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906115ba9033908590600401612aaf565b600060405180830381600087803b1580156115d457600080fd5b505af11580156115e8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d61161f81611cb6565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff8111156116555761165561252e565b60405190808252806020026020018201604052801561167e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561169c5761169c61252e565b6040519080825280602002602001820160405280156116c5578160200160208202803683370190505b50905060008060005b878110156118da5760008989838181106116ea576116ea612875565b90506020028101906116fc91906128a4565b61170590612b97565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156117c357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff42811682529181018290529182015296506117bc868286611e6a565b6001909301925b604087015163ffffffff90811614156118985763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611891858285611e6a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516118c9929190612a80565b60405180910390a1506001016116ce565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611a285782156119915761190a8584611e94565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b269061195e9033908990600401612aaf565b600060405180830381600087803b15801561197857600080fd5b505af115801561198c573d6000803e3d6000fd5b505050505b8115611a28576119a18483611e94565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b1146906119f59033908890600401612aaf565b600060405180830381600087803b158015611a0f57600080fd5b505af1158015611a23573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611a4e81611cb6565b6105ca8383611db3565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ab1904261123d565b14611b18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611b5757611b57612875565b9050602002810190611b6991906128a4565b604051611b779291906128e2565b60405180910390a1600101611b1b565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611be0904261123d565b14611c47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611c8657611c86612875565b9050602002810190611c9891906128a4565b604051611ca69291906128e2565b60405180910390a1600101611c4a565b611cc081336120d9565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611d553390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611e8257611e82612875565b60200260200101818152505050505050565b8151811115611eff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600154600090610100900460ff1615611fbc578160ff166001148015611f285750303b155b611fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b506000919050565b60015460ff808416911610612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b50600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117815590565b919050565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835761212f8173ffffffffffffffffffffffffffffffffffffffff1660146121a9565b61213a8360206121a9565b60405160200161214b929190612ba3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612c24565b606060006121b8836002612c66565b6121c3906002612ca3565b67ffffffffffffffff8111156121db576121db61252e565b6040519080825280601f01601f191660200182016040528015612205576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061223c5761223c612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f78000000000000000000000000000000000000000000000000000000000000008160018151811061229f5761229f612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006122db846002612c66565b6122e6906001612ca3565b90505b6001811115612383577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061232757612327612875565b1a60f81b82828151811061233d5761233d612875565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361237c81612cbb565b90506122e9565b5083156123ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561240557600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123ec57600080fd5b60006020828403121561244757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461208957600080fd5b6000806040838503121561248557600080fd5b823591506124956020840161244e565b90509250929050565b6000602082840312156124b057600080fd5b6123ec8261244e565b600080602083850312156124cc57600080fd5b823567ffffffffffffffff808211156124e457600080fd5b818501915085601f8301126124f857600080fd5b81358181111561250757600080fd5b8660208260051b850101111561251c57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156125805761258061252e565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156125cd576125cd61252e565b604052919050565b6000604082840312156125e757600080fd5b6125ef61255d565b90506125fa8261244e565b815260208083013567ffffffffffffffff8082111561261857600080fd5b818501915085601f83011261262c57600080fd5b81358181111561263e5761263e61252e565b61266e847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612586565b9150808252868482850101111561268457600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156126b557600080fd5b823567ffffffffffffffff808211156126cd57600080fd5b818501915085601f8301126126e157600080fd5b8135818111156126f3576126f361252e565b8060051b612702858201612586565b918252838101850191858101908984111561271c57600080fd5b86860192505b838310156127585782358581111561273a5760008081fd5b6127488b89838a01016125d5565b8352509186019190860190612722565b9998505050505050505050565b60006040828403121561277757600080fd5b50919050565b803563ffffffff8116811461208957600080fd5b60008082840360808112156127a557600080fd5b60608112156127b357600080fd5b506040516060810181811067ffffffffffffffff821117156127d7576127d761252e565b6040526127e38461277d565b81526127f16020850161277d565b60208201526128026040850161277d565b6040820152946060939093013593505050565b6000806020838503121561282857600080fd5b823567ffffffffffffffff8082111561284057600080fd5b818501915085601f83011261285457600080fd5b81358181111561286357600080fd5b86602082850101111561251c57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126128d857600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061290f8561244e565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261294b57600080fd5b8301803567ffffffffffffffff81111561296457600080fd5b80360385131561297357600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b838110156129e45781810151838201526020016129cc565b838111156129f3576000848401525b50505050565b60008151808452612a118160208601602086016129c9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152612a7860408501826129f9565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a786040830184612a43565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612b3f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612b2d868351612a43565b95509284019290840190600101612af3565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612b768561244e565b16602084015280612b896020860161244e565b166040840152509392505050565b600061059f36836125d5565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612bdb8160178501602088016129c9565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612c188160288401602088016129c9565b01602801949350505050565b6020815260006123ec60208301846129f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612c9e57612c9e612c37565b500290565b60008219821115612cb657612cb6612c37565b500190565b600081612cca57612cca612c37565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220e9c8a42ebc6b9460007d52351fe4fbb996021504975aa18622d8de43db03e1d664736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50612c7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612346565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612388565b60009081526020819052604090206001015490565b61029c6102973660046123ca565b6105a5565b005b6103246102ac3660046123f6565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ca565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b366004612411565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125fa565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ca565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125fa565b610be2565b610231600081565b61029c61046e3660046126bd565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a83660046126e9565b61131b565b61029c6104bb36600461276d565b611389565b61029c6104ce366004612411565b6116d3565b61029c6104e13660046123ca565b611b11565b61029c6104f4366004612411565b611b36565b61029c610507366004612411565b611c65565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d94565b6105ca8383611da1565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e91565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261131b565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127cd565b905060200281019061079891906127fc565b6040516107a692919061283a565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612486565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612486565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127cd565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f48565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f48565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129d8565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a07565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f72565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a07565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612486565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127cd565b6020026020010151905060026000888481518110610cb257610cb26127cd565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f48565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129d8565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f72565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a07565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610fb560208401846123f6565b73ffffffffffffffffffffffffffffffffffffffff161415611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61105d7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fe1565b6110a77f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fe1565b6110d17f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fe1565b61111b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fe1565b6111457fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fe1565b61118f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fe1565b6111c57f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111c060208501856123f6565b611da1565b6111f67f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111c060208501856123f6565b6112277fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111c060208501856123f6565b61123760408301602084016123f6565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ae9033908590612aa5565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff1610156113385750600061059f565b81836040015163ffffffff16116113515750600361059f565b81836020015163ffffffff161161136a5750600261059f565b825163ffffffff1682106113805750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113de824261131b565b9050600281141580156113f2575060038114155b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061152757604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115bd90339084906129d8565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115fb5790505090508281600081518110611639576116396127cd565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116989033908590600401612a07565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116fd81611d94565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561173357611733612486565b60405190808252806020026020018201604052801561175c578160200160208202803683370190505b50905060008467ffffffffffffffff81111561177a5761177a612486565b6040519080825280602002602001820160405280156117a3578160200160208202803683370190505b50905060008060005b878110156119b85760008989838181106117c8576117c86127cd565b90506020028101906117da91906127fc565b6117e390612aef565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156118a157604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061189a868286611f48565b6001909301925b604087015163ffffffff90811614156119765763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561196f858285611f48565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119a79291906129d8565b60405180910390a1506001016117ac565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611b06578215611a6f576119e88584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a3c9033908990600401612a07565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050505b8115611b0657611a7f8483611f72565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ad39033908890600401612a07565b600060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b2c81611d94565b6105ca8383611e91565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b8f904261131b565b14611bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c3557611c356127cd565b9050602002810190611c4791906127fc565b604051611c5592919061283a565b60405180910390a1600101611bf9565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611cbe904261131b565b14611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d6457611d646127cd565b9050602002810190611d7691906127fc565b604051611d8492919061283a565b60405180910390a1600101611d28565b611d9e813361202c565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e333390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f6057611f606127cd565b60200260200101818152505050505050565b8151811115611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120828173ffffffffffffffffffffffffffffffffffffffff1660146120fc565b61208d8360206120fc565b60405160200161209e929190612afb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b7c565b6060600061210b836002612bbe565b612116906002612bfb565b67ffffffffffffffff81111561212e5761212e612486565b6040519080825280601f01601f191660200182016040528015612158576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061218f5761218f6127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121f2576121f26127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061222e846002612bbe565b612239906001612bfb565b90505b60018111156122d6577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061227a5761227a6127cd565b1a60f81b828281518110612290576122906127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122cf81612c13565b905061223c565b50831561233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561235857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461233f57600080fd5b60006020828403121561239a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123c557600080fd5b919050565b600080604083850312156123dd57600080fd5b823591506123ed602084016123a1565b90509250929050565b60006020828403121561240857600080fd5b61233f826123a1565b6000806020838503121561242457600080fd5b823567ffffffffffffffff8082111561243c57600080fd5b818501915085601f83011261245057600080fd5b81358181111561245f57600080fd5b8660208260051b850101111561247457600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124d8576124d8612486565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561252557612525612486565b604052919050565b60006040828403121561253f57600080fd5b6125476124b5565b9050612552826123a1565b815260208083013567ffffffffffffffff8082111561257057600080fd5b818501915085601f83011261258457600080fd5b81358181111561259657612596612486565b6125c6847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124de565b915080825286848285010111156125dc57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561260d57600080fd5b823567ffffffffffffffff8082111561262557600080fd5b818501915085601f83011261263957600080fd5b81358181111561264b5761264b612486565b8060051b61265a8582016124de565b918252838101850191858101908984111561267457600080fd5b86860192505b838310156126b0578235858111156126925760008081fd5b6126a08b89838a010161252d565b835250918601919086019061267a565b9998505050505050505050565b6000604082840312156126cf57600080fd5b50919050565b803563ffffffff811681146123c557600080fd5b60008082840360808112156126fd57600080fd5b606081121561270b57600080fd5b506040516060810181811067ffffffffffffffff8211171561272f5761272f612486565b60405261273b846126d5565b8152612749602085016126d5565b602082015261275a604085016126d5565b6040820152946060939093013593505050565b6000806020838503121561278057600080fd5b823567ffffffffffffffff8082111561279857600080fd5b818501915085601f8301126127ac57600080fd5b8135818111156127bb57600080fd5b86602082850101111561247457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261283057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015280612867856123a1565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128a357600080fd5b8301803567ffffffffffffffff8111156128bc57600080fd5b8036038513156128cb57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b8381101561293c578181015183820152602001612924565b8381111561294b576000848401525b50505050565b60008151808452612969816020860160208601612921565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129d06040850182612951565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129d0604083018461299b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a97577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a8586835161299b565b95509284019290840190600101612a4b565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612ace856123a1565b16602084015280612ae1602086016123a1565b166040840152509392505050565b600061059f368361252d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b33816017850160208801612921565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b70816028840160208801612921565b01602801949350505050565b60208152600061233f6020830184612951565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bf657612bf6612b8f565b500290565b60008219821115612c0e57612c0e612b8f565b500190565b600081612c2257612c22612b8f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212203d0ba714d57d7fdb0d65b54e89a15e74d8998df27f317576865309844fbad83f64736f6c634300080a0033"; type VerifyConstructorParams = | [signer?: Signer] diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index c7a976e..f27226f 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -12,6 +12,22 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { + getContractFactory( + name: "Factory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "OwnableUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC2981Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -32,10 +48,34 @@ declare module "hardhat/types/runtime" { name: "IERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ERC721Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721MetadataUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721ReceiverUpgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC721Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ContextUpgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ERC165Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "IERC165Upgradeable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "AccessControl", signerOrOptions?: ethers.Signer | FactoryOptions @@ -72,6 +112,10 @@ declare module "hardhat/types/runtime" { name: "ERC20", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "IERC20Permit", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ERC20Burnable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -365,6 +409,26 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractAt( + name: "Factory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "OwnableUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC2981Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "Initializable", address: string, @@ -390,11 +454,41 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ERC721Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721MetadataUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721ReceiverUpgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC721Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ContextUpgradeable", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ERC165Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "IERC165Upgradeable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "AccessControl", address: string, @@ -440,6 +534,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "IERC20Permit", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ERC20Burnable", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 4cb77aa..a0c8dd2 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,12 +1,22 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export type { Factory } from "./Factory"; +export type { IFactory } from "./IFactory"; +export type { OwnableUpgradeable } from "./OwnableUpgradeable"; +export type { IERC2981Upgradeable } from "./IERC2981Upgradeable"; export type { Initializable } from "./Initializable"; export type { ERC20Upgradeable } from "./ERC20Upgradeable"; export type { ERC20BurnableUpgradeable } from "./ERC20BurnableUpgradeable"; export type { IERC20MetadataUpgradeable } from "./IERC20MetadataUpgradeable"; export type { IERC20Upgradeable } from "./IERC20Upgradeable"; +export type { ERC721Upgradeable } from "./ERC721Upgradeable"; +export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; +export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; +export type { IERC721Upgradeable } from "./IERC721Upgradeable"; export type { ContextUpgradeable } from "./ContextUpgradeable"; +export type { ERC165Upgradeable } from "./ERC165Upgradeable"; +export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; export type { ERC1155 } from "./ERC1155"; @@ -15,6 +25,7 @@ export type { IERC1155MetadataURI } from "./IERC1155MetadataURI"; export type { IERC1155 } from "./IERC1155"; export type { IERC1155Receiver } from "./IERC1155Receiver"; export type { ERC20 } from "./ERC20"; +export type { IERC20Permit } from "./IERC20Permit"; export type { ERC20Burnable } from "./ERC20Burnable"; export type { ERC20Snapshot } from "./ERC20Snapshot"; export type { IERC20Metadata } from "./IERC20Metadata"; @@ -34,8 +45,6 @@ export type { SeedDance } from "./SeedDance"; export type { ERC20Redeem } from "./ERC20Redeem"; export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; -export type { Factory } from "./Factory"; -export type { IFactory } from "./IFactory"; export type { NoticeBoard } from "./NoticeBoard"; export type { OrderBook } from "./OrderBook"; export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; @@ -89,12 +98,22 @@ export type { AllStandardOpsStateBuilder } from "./AllStandardOpsStateBuilder"; export type { RainVM } from "./RainVM"; export type { VMStateBuilder } from "./VMStateBuilder"; +export { Factory__factory } from "./factories/Factory__factory"; +export { IFactory__factory } from "./factories/IFactory__factory"; +export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; +export { IERC2981Upgradeable__factory } from "./factories/IERC2981Upgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; export { ERC20Upgradeable__factory } from "./factories/ERC20Upgradeable__factory"; export { ERC20BurnableUpgradeable__factory } from "./factories/ERC20BurnableUpgradeable__factory"; export { IERC20MetadataUpgradeable__factory } from "./factories/IERC20MetadataUpgradeable__factory"; export { IERC20Upgradeable__factory } from "./factories/IERC20Upgradeable__factory"; +export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; +export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; +export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; +export { IERC721Upgradeable__factory } from "./factories/IERC721Upgradeable__factory"; export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; +export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; +export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { ERC1155__factory } from "./factories/ERC1155__factory"; @@ -103,6 +122,7 @@ export { IERC1155MetadataURI__factory } from "./factories/IERC1155MetadataURI__f export { IERC1155__factory } from "./factories/IERC1155__factory"; export { IERC1155Receiver__factory } from "./factories/IERC1155Receiver__factory"; export { ERC20__factory } from "./factories/ERC20__factory"; +export { IERC20Permit__factory } from "./factories/IERC20Permit__factory"; export { ERC20Burnable__factory } from "./factories/ERC20Burnable__factory"; export { ERC20Snapshot__factory } from "./factories/ERC20Snapshot__factory"; export { IERC20Metadata__factory } from "./factories/IERC20Metadata__factory"; @@ -122,8 +142,6 @@ export { SeedDance__factory } from "./factories/SeedDance__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; -export { Factory__factory } from "./factories/Factory__factory"; -export { IFactory__factory } from "./factories/IFactory__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; export { OrderBook__factory } from "./factories/OrderBook__factory"; export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; diff --git a/src/utils.ts b/src/utils.ts index 77237ca..b5a8129 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,5 +1,5 @@ -import { BigNumber, BigNumberish, ethers, utils } from 'ethers'; import type { BytesLike } from 'ethers'; +import { BigNumber, BigNumberish, ethers, utils } from 'ethers'; export const { /** @@ -99,10 +99,7 @@ export const paddedUInt256 = (report: BigNumberish): string => { if (BigNumber.from(report).gt(ethers.constants.MaxUint256)) { throw new Error(`${report} exceeds max uint256`); } - return ( - '0x' + - hexlify(report, { allowMissingPrefix: true }).substring(2).padStart(64, '0') - ); + return "0x" + BigNumber.from(report).toHexString().substring(2).padStart(64, "0"); }; /** @@ -116,9 +113,7 @@ export const paddedUInt32 = (number: BigNumberish): string => { if (BigNumber.from(number).gt('0xffffffff')) { throw new Error(`${number} exceeds max uint32`); } - return hexlify(number, { allowMissingPrefix: true }) - .substring(2) - .padStart(8, '0'); + return BigNumber.from(number).toHexString().substring(2).padStart(8, "0"); }; /** @@ -229,9 +224,7 @@ export const paddedUInt64 = (number: BigNumberish): string => { if (BigNumber.from(number).gt('0xffffffffffffffff')) { throw new Error(`${number} exceeds max uint64`); } - return hexlify(number, { allowMissingPrefix: true }) - .substring(2) - .padStart(16, '0'); + return BigNumber.from(number).toHexString().substring(2).padStart(16, "0"); }; /** @@ -245,9 +238,7 @@ export const paddedUInt128 = (number: BigNumberish): string => { if (BigNumber.from(number).gt('0xffffffffffffffffffffffffffffffff')) { throw new Error(`${number} exceeds max uint128`); } - return hexlify(number, { allowMissingPrefix: true }) - .substring(2) - .padStart(32, '0'); + return BigNumber.from(number).toHexString().substring(2).padStart(32, "0"); }; /** @@ -263,10 +254,5 @@ export const paddedUInt160 = (address: BigNumberish): string => { ) { throw new Error(`${address} exceeds max uint160`); } - return ( - '0x' + - hexlify(address, { allowMissingPrefix: true }) - .substring(2) - .padStart(40, '0') - ); -}; + return "0x" + BigNumber.from(address).toHexString().substring(2).padStart(40, "0"); +}; \ No newline at end of file diff --git a/test/1_initSDK.test.ts b/test/1_initSDK.test.ts index 7f9ff85..4014546 100644 --- a/test/1_initSDK.test.ts +++ b/test/1_initSDK.test.ts @@ -23,10 +23,8 @@ import { RedeemableERC20ClaimEscrow, ERC20, ERC721, - ERC1155, - utils, + ERC1155 } from '../src'; -const { op } = utils; /** @@ -105,21 +103,13 @@ before('Initializing and deploying contracts to hardhat network', async () => { ); // Deploying AlwaysTier - const ctxAccount = op(VM.Opcodes.CONTEXT, 0); - - // prettier-ignore - const sourceReportTimeForTierDefault = VM.createVMSources([ - op(VM.Opcodes.THIS_ADDRESS), - ctxAccount, - op(VM.Opcodes.ITIERV2_REPORT), - ])[0]; - const alwaysArg = { combinedTiersLength: 0, - sourceConfig: { - sources: [op(VM.Opcodes.CONSTANT, 0), sourceReportTimeForTierDefault], - constants: [0], - }, + sourceConfig: VM.combiner( + VM.constant(0), + VM.constant(0), + { numberOfSources: 0 } + ) }; const tx = await CombineTierFactory.createChildTyped(alwaysArg); diff --git a/test/2_sale.test.ts b/test/2_sale.test.ts index 47698b7..e84edfc 100644 --- a/test/2_sale.test.ts +++ b/test/2_sale.test.ts @@ -1,5 +1,7 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; +import { BigNumber } from 'ethers'; +import { ReserveTokenTest } from '../typechain'; import { deployErc20, ONE, @@ -8,9 +10,6 @@ import { Time, SaleStatus, } from './utils'; - -import { ReserveTokenTest } from '../typechain'; - import { VM, Sale, @@ -18,9 +17,9 @@ import { BetweenTimestamps, BetweenBlocks, SaleVmFrom, - BuyCap, + BuyAmount, } from '../src'; -import { BigNumber } from 'ethers'; + describe('SDK - Sale', () => { let reserve: ReserveTokenTest, tier: CombineTier; @@ -50,15 +49,13 @@ describe('SDK - Sale', () => { const staticPrice = ethers.BigNumber.from('75').mul(RESERVE_ONE); const constants = [staticPrice]; - // TODO: @rouzwelt - // @ts-ignore const sources = VM.createVMSources([[VM.Opcodes.CONSTANT, 0]]); // All configs calculated outside of deploy method const saleConfig = { vmStateConfig: new SaleVmFrom( new BetweenBlocks(startBlock, startBlock + saleDuration), - new BuyCap(), + new BuyAmount(), { sources, constants } ), recipient: recipient.address, @@ -109,7 +106,7 @@ describe('SDK - Sale', () => { const saleConfig = { vmStateConfig: new SaleVmFrom( new BetweenBlocks(startBlock, endBlock), - new BuyCap(), + new BuyAmount(), { sources, constants } ), recipient: recipient.address, @@ -183,7 +180,7 @@ describe('SDK - Sale', () => { const saleConfig = { vmStateConfig: new SaleVmFrom( new BetweenTimestamps(startTimestamp, endTimestamp), - new BuyCap(), + new BuyAmount(), { sources, constants } ), recipient: recipient.address, @@ -257,7 +254,7 @@ describe('SDK - Sale', () => { const saleConfig = { vmStateConfig: new SaleVmFrom( new BetweenBlocks(startBlock, endBlock), - new BuyCap(), + new BuyAmount(), { sources, constants } ), recipient: recipient.address, diff --git a/test/3_verify.test.ts b/test/3_verify.test.ts index d943566..fb27830 100644 --- a/test/3_verify.test.ts +++ b/test/3_verify.test.ts @@ -4,7 +4,7 @@ import { Verify } from '../src'; import { Time } from './utils'; -describe('Verify', () => { +describe('SDK - Verify', () => { it('should deploy a Verify child', async () => { const [signer] = await ethers.getSigners(); const verify = await Verify.deploy(signer, { diff --git a/test/4_tiers.test.ts b/test/4_tiers.test.ts index e3febc9..bf9ea9f 100644 --- a/test/4_tiers.test.ts +++ b/test/4_tiers.test.ts @@ -1,6 +1,6 @@ import { ethers } from 'hardhat'; import { expect } from 'chai'; -import { expectAsyncError, chainId } from './utils'; +import { chainId } from './utils'; import { AddressBook, Verify, VerifyTier, CombineTier } from '../src'; @@ -18,21 +18,21 @@ describe('SDK - VerifyTier', () => { expect(await VerifyTier.isChild(signer, tier.address)).to.be.true; }); - it('should throw an error if try to call setTier from SDK', async () => { - const [deployer] = await ethers.getSigners(); + // it('should throw an error if try to call setTier from SDK', async () => { + // const [deployer] = await ethers.getSigners(); - const verify = await Verify.deploy(deployer, { - admin: deployer.address, - callback: ethers.constants.AddressZero, - }); + // const verify = await Verify.deploy(deployer, { + // admin: deployer.address, + // callback: ethers.constants.AddressZero, + // }); - const tier = await VerifyTier.deploy(deployer, verify.address); + // const tier = await VerifyTier.deploy(deployer, verify.address); - await expectAsyncError( - tier.setTier('', 2, []), - 'SET TIER: NOT IMPLEMENTED' - ); - }); + // await expectAsyncError( + // tier.setTier('', 2, []), + // 'SET TIER: NOT IMPLEMENTED' + // ); + // }); it('should get correct tier after been approved', async () => { const [deployer, admin, user] = await ethers.getSigners(); diff --git a/test/5_escrow.test.ts b/test/5_escrow.test.ts index 0be5187..701938d 100644 --- a/test/5_escrow.test.ts +++ b/test/5_escrow.test.ts @@ -1,8 +1,8 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; +import { RedeemableERC20ClaimEscrow__factory } from '../typechain'; import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers'; import type { DepositEvent } from '../src/typechain/RedeemableERC20ClaimEscrow'; -import { RedeemableERC20ClaimEscrow__factory } from '../src/typechain/factories/RedeemableERC20ClaimEscrow__factory'; import { ONE, Time, @@ -23,7 +23,7 @@ import { AddressBook, ERC20, SaleVmFrom, - BuyCap, + BuyAmount, } from '../src'; @@ -67,7 +67,7 @@ const deploySale = async ( const saleConfig = { vmStateConfig: new SaleVmFrom( new BetweenBlocks(startBlock, endBlock), - new BuyCap(), + new BuyAmount(), new FixedPrice(75, 6), ), // canStartStateConfig: new BetweenBlocks(startBlock), @@ -102,7 +102,7 @@ const deploySale = async ( return { sale, redeemableERC20 }; }; -describe('ClaimEscrow', () => { +describe('SDK - ClaimEscrow', () => { it('should fail when a not formatted address is provided as Sale or Token', async () => { const [signer] = await ethers.getSigners(); diff --git a/test/7_RainJS.test.ts b/test/6_RainJS.test.ts similarity index 100% rename from test/7_RainJS.test.ts rename to test/6_RainJS.test.ts diff --git a/test/8_friendlySource.test.ts b/test/7_FriendlySource.test.ts similarity index 99% rename from test/8_friendlySource.test.ts rename to test/7_FriendlySource.test.ts index 07f57ba..444f7b3 100644 --- a/test/8_friendlySource.test.ts +++ b/test/7_FriendlySource.test.ts @@ -40,7 +40,7 @@ if (a == 2) { // } -describe('Human Friendly Source Generator', () => { +describe('SDK - Human Friendly Source Generator', () => { it('should generate the human friendly from an exponentiation op source', async () => { const constants = [5, 2]; diff --git a/test/8_Stake.test.ts b/test/8_Stake.test.ts new file mode 100644 index 0000000..113e46e --- /dev/null +++ b/test/8_Stake.test.ts @@ -0,0 +1,495 @@ +import { assert } from 'chai'; +import { ethers } from 'hardhat'; +import { hexlify } from '../src/utils'; +import { ReserveToken } from '../typechain'; +import { Stake, StakeDeployArgs } from '../src'; +import { + ONE, + Tier, + Time, + sixZeros, + THRESHOLDS, + max_uint32, + deployReserve, + timestampToReport +} from './utils'; + + +describe('SDK - Stake' , async function () { + + let token: ReserveToken; + + beforeEach(async () => { + token = await deployReserve() as ReserveToken; + }); + + it("should calculate correct mint amounts based on current supply", async function () { + const signers = await ethers.getSigners(); + const deployer = signers[0]; + const alice = signers[1]; + + const stakeDeployArgs: StakeDeployArgs = { + name: "Stake Token", + symbol: "STKN", + token: token.address, + initialRatio: ONE, + }; + + const stake = await Stake.deploy(deployer, stakeDeployArgs); + + const amount = ethers.BigNumber.from("1000" + sixZeros); + + const tokenPoolSize0_ = await token.balanceOf(stake.address); + const totalSupply0_ = await stake.totalSupply(); + assert(tokenPoolSize0_.eq(totalSupply0_)); + assert(tokenPoolSize0_.isZero()); + + // Alice deposits reserve tokens + await token.transfer(alice.address, amount); + await token.connect(alice).approve(stake.address, amount); + await stake.connect(alice).deposit(amount); + + const expectedMint0 = amount.mul(stakeDeployArgs.initialRatio).div(ONE); + const actualMint0 = await stake.totalSupply(); + + assert( + expectedMint0.eq(actualMint0), + `wrong amount minted when supply == 0 + expected ${expectedMint0} + got ${actualMint0}` + ); + + const tokenPoolSize1_ = await token.balanceOf(stake.address); + const totalSupply1_ = await stake.totalSupply(); + assert(tokenPoolSize1_.eq(totalSupply1_)); + + // Alice deposits more reserve tokens + await token.transfer(alice.address, amount); + await token.connect(alice).approve(stake.address, amount); + await stake.connect(alice).deposit(amount); + + const expectedMint1 = actualMint0.mul(amount).div(tokenPoolSize1_); + const actualMint1 = (await stake.totalSupply()).sub(actualMint0); + + assert( + expectedMint1.eq(actualMint1), + `wrong amount minted when supply > 0 + expected ${expectedMint1} + got ${actualMint1}` + ); + }); + + it("should process minimum deposit of 1 token", async function () { + const signers = await ethers.getSigners(); + const deployer = signers[0]; + const alice = signers[2]; + + const stakeDeployArgs: StakeDeployArgs = { + name: "Stake Token", + symbol: "STKN", + token: token.address, + initialRatio: ONE, + }; + + const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // Give Alice some reserve tokens and deposit them + await token.transfer(alice.address, 2); + await token.connect(alice).approve(stake.address, 1); + await stake.connect(alice).deposit(1); + await token.connect(alice).approve(stake.address, 1); + await stake.connect(alice).deposit(1); + }); + + it("should process deposit of 2 tokens", async function () { + const signers = await ethers.getSigners(); + const deployer = signers[0]; + const alice = signers[2]; + + const stakeDeployArgs: StakeDeployArgs = { + name: "Stake Token", + symbol: "STKN", + token: token.address, + initialRatio: ONE, + }; + + const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // Give Alice some reserve tokens and deposit them + await token.transfer(alice.address, 4); + await token.connect(alice).approve(stake.address, 2); + await stake.connect(alice).deposit(2); + await token.connect(alice).approve(stake.address, 2); + await stake.connect(alice).deposit(2); + }); + + it("should process deposits", async function () { + const signers = await ethers.getSigners(); + const deployer = signers[0]; + const alice = signers[2]; + + const stakeDeployArgs: StakeDeployArgs = { + name: "Stake Token", + symbol: "STKN", + token: token.address, + initialRatio: ONE, + }; + + const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // Give Alice some reserve tokens + await token.transfer( + alice.address, + ethers.BigNumber.from("1000" + sixZeros) + ); + + const tokenBalanceAlice0 = await token.balanceOf(alice.address); + const stTokenSupply0 = await stake.totalSupply(); + + assert(stTokenSupply0.isZero(), "initial stToken supply was not 0"); + + // deposit some of Alice's tokens + await token + .connect(alice) + .approve(stake.address, tokenBalanceAlice0.div(10)); + await stake.connect(alice).deposit(tokenBalanceAlice0.div(10)); + + const tokenBalanceAlice1 = await token.balanceOf(alice.address); + const stTokenBalanceAlice1 = await stake.balanceOf(alice.address); + const stTokenSupply1 = await stake.totalSupply(); + + assert( + tokenBalanceAlice1.eq(tokenBalanceAlice0.sub(tokenBalanceAlice0.div(10))), + "deposit did not transfer correct token amount to Stake contract" + ); + assert( + !stTokenSupply1.isZero(), + "no stToken was minted after first deposit" + ); + assert( + !stTokenBalanceAlice1.isZero(), + "alice did not receive stToken upon depositing token" + ); + assert( + stTokenBalanceAlice1.eq(stTokenSupply1), + "alice balance was not equal to total stToken supply" + ); + + // deposit more of Alice's tokens + await token + .connect(alice) + .approve(stake.address, tokenBalanceAlice0.div(10)); + await stake.connect(alice).deposit(tokenBalanceAlice0.div(10)); + + const tokenBalanceAlice2 = await token.balanceOf(alice.address); + const stTokenBalanceAlice2 = await stake.balanceOf(alice.address); + const stTokenSupply2 = await stake.totalSupply(); + + assert( + tokenBalanceAlice2.eq(tokenBalanceAlice1.sub(tokenBalanceAlice0.div(10))), + "deposit did not transfer correct token amount to Stake contract" + ); + assert( + !stTokenSupply2.isZero(), + "no stToken was minted after first deposit" + ); + assert( + !stTokenBalanceAlice2.isZero(), + "alice did not receive stToken upon depositing token" + ); + assert( + stTokenBalanceAlice2.eq(stTokenSupply2), + "alice balance was not equal to total stToken supply" + ); + }); + + // @TODO - upgrade to latest rain commit and activate this test + +// it("should process deposit and withdraw with a non 1:1 ratio", async function () { +// const signers = await ethers.getSigners(); +// const deployer = signers[0]; +// const alice = signers[2]; + +// // Create the instances +// // const erc20Deployer = new ERC20(erc20Address, deployer); +// // const reserveToken = erc20Deployer.connect(staker); +// ; +// // Transfer tokens from the deployer to the alice with the instances +// const amountToTransfer = ethers.BigNumber.from('50000000'); +// await token.connect(deployer).approve(deployer.address, amountToTransfer); + +// //await token.connect(alice); +// await token.transferFrom( +// deployer.address, +// alice.address, +// amountToTransfer +// ); + +// const tokenBalanceAlice = await token.balanceOf(alice.address) + +// assert( +// tokenBalanceAlice.eq(amountToTransfer), +// "Alice did not received the tokens" +// ); + +// const stakeDeployArgs: StakeDeployArgs = { +// name: "Stake Token", +// symbol: "STKN", +// token: token.address, +// initialRatio: "1000000000000000000000000000000", +// }; +// const stake = await Stake.deploy(alice, stakeDeployArgs) + +// const stTokenTotalSupply0 = await stake.totalSupply(); +// const tokenBalanceStake0 = await token.balanceOf(stake.address); + +// assert( +// stTokenTotalSupply0.isZero(), +// "stToken supply is not zero before any deposits" +// ); +// assert( +// tokenBalanceStake0.isZero(), +// "stake contract token balance is not zero before any deposits" +// ); + +// await token.connect(alice).approve(stake.address, ethers.constants.MaxUint256); +// const depositUnits = ethers.BigNumber.from("20000000"); +// // alice depositing +// await stake.deposit(depositUnits); + + +// const stTokenTotalSupply1 = await stake.totalSupply(); +// const tokenBalanceStake1 = await token.balanceOf(stake.address); +// const stTokenBalanceAlice0 = await stake.balanceOf(alice.address); +// const tokenBalanceAlice0 = await token.balanceOf(alice.address); + +// assert( +// stTokenTotalSupply1.eq(depositUnits.mul(10**12)), +// "stToken has not minted correct units" +// ); +// assert( +// tokenBalanceStake1.eq(depositUnits), +// "stake contract token balance is not equal to deposited amount" +// ); +// assert( +// stTokenBalanceAlice0.eq(depositUnits.mul(10**12)), +// "Alice has not received correct share units" +// ); +// assert( +// tokenBalanceAlice0.eq(amountToTransfer.sub(depositUnits)), +// "alice doesn't have correct token balance after deposit" +// ); + +// // alice withdrawing half of her shares +// const shares = await stake.balanceOf(alice.address) +// await stake.withdraw(shares.div(2)) + +// const stTokenTotalSupply2 = await stake.totalSupply(); +// const tokenBalanceStake2 = await token.balanceOf(stake.address); +// const stTokenBalanceAlice1 = await stake.balanceOf(alice.address); +// const tokenBalanceAlice1 = await token.balanceOf(alice.address) + +// assert( +// stTokenTotalSupply2.eq(stTokenTotalSupply1.div(2)), +// "stToken has not burned correct units" +// ); +// assert( +// tokenBalanceStake2.eq(tokenBalanceStake1.div(2)), +// "stake contract token balance has not transfered correct units to alice" +// ); +// assert( +// stTokenBalanceAlice1.eq(stTokenBalanceAlice0.div(2)), +// "alice doesn't have correct share units after withdrawing" +// ); +// assert( +// tokenBalanceAlice1.eq(tokenBalanceAlice0.add(depositUnits.div(2))), +// "alice has not received correct token units after withdrawing" +// ); +// }); + + it("should return one-to-many reports i.e. when different lists of thresholds are checked against", async function () { + const signers = await ethers.getSigners(); + const deployer = signers[0]; + const alice = signers[2]; + + const stakeDeployArgs: StakeDeployArgs = { + name: "Stake Token", + symbol: "STKN", + token: token.address, + initialRatio: ONE, + }; + + const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // Give Alice reserve tokens and desposit them + const depositAmount0 = THRESHOLDS[3].add(1); + await token.transfer(alice.address, depositAmount0); + await token.connect(alice).approve(stake.address, depositAmount0); + await stake.connect(alice).deposit(depositAmount0); + + const depositTimestamp0 = await Time.currentTime(); + + const thresholds0 = THRESHOLDS; + const thresholds1 = [1500, 2500, 3500, 4500, 5500, 6500, 7500, 8500].map( + (value) => ethers.BigNumber.from(value + sixZeros) + ); + + const report0 = await stake.report(alice.address, thresholds0); + const report1 = await stake.report(alice.address, thresholds1); + + const expected0 = timestampToReport([ + depositTimestamp0, + depositTimestamp0, + depositTimestamp0, + depositTimestamp0, + 0xffffffff, + 0xffffffff, + 0xffffffff, + 0xffffffff, + ]); + const expected1 = timestampToReport([ + depositTimestamp0, + depositTimestamp0, + depositTimestamp0, + 0xffffffff, // not enough to reach tier 4 according to `thresholds1` + 0xffffffff, + 0xffffffff, + 0xffffffff, + 0xffffffff, + ]); + + assert( + report0.eq(expected0), + `did not return correct stake report0 + expected ${hexlify(expected0)} + got ${hexlify(report0)}` + ); + assert( + report1.eq(expected1), + `did not return correct stake report1 + expected ${hexlify(expected1)} + got ${hexlify(report1)}` + ); + }); + + // @TODO - upgrade to latest rain commit and activate this test + + // it("should return time for tier ONE when enough tokens have been staked to exceed the 1st threshold", async () => { + // const signers = await ethers.getSigners(); + // const deployer = signers[0]; + // const alice = signers[1]; + + // const stakeDeployArgs: StakeDeployArgs = { + // name: "Stake Token", + // symbol: "STKN", + // token: token.address, + // initialRatio: ONE, + // }; + + // const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // // Give Alice reserve tokens and desposit them + // const depositAmount0 = THRESHOLDS[0].add(1); // exceeds 1st threshold + // await token.transfer(alice.address, depositAmount0); + // await token.connect(alice).approve(stake.address, depositAmount0); + // await stake.connect(alice).deposit(depositAmount0); + + // const time_ = await stake.reportTimeForTier( + // alice.address, + // Tier.ONE, + // THRESHOLDS + // ); + + // const blockTime_ = await Time.currentTime(); + // assert( + // time_.eq(blockTime_), + // "did not exceed 1st threshold, according to reportTimeForTier" + // ); + // }); + + // @TODO - upgrade to latest rain commit and activate this test + + // it("should return ALWAYS time for tier ZERO", async () => { + // const signers = await ethers.getSigners(); + // const deployer = signers[0]; + // const alice = signers[1]; + + // const stakeDeployArgs: StakeDeployArgs = { + // name: "Stake Token", + // symbol: "STKN", + // token: token.address, + // initialRatio: ONE, + // }; + + // const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // const time_ = await stake.reportTimeForTier(alice.address, Tier.ZERO, []); + + // assert(time_.isZero()); + // }); + + it("should return NEVER time if tier greater than context length", async () => { + const signers = await ethers.getSigners(); + const deployer = signers[0]; + const alice = signers[1]; + + const stakeDeployArgs: StakeDeployArgs = { + name: "Stake Token", + symbol: "STKN", + token: token.address, + initialRatio: ONE, + }; + + const stake = await Stake.deploy(deployer, stakeDeployArgs); + + // Give Alice reserve tokens and desposit them + const depositAmount0 = THRESHOLDS[0].add(1); // exceeds 1st threshold + await token.transfer(alice.address, depositAmount0); + await token.connect(alice).approve(stake.address, depositAmount0); + await stake.connect(alice).deposit(depositAmount0); + + const time0_ = await stake.reportTimeForTier(alice.address, Tier.ONE, []); + const time1_ = await stake.reportTimeForTier(alice.address, Tier.TWO, [ + THRESHOLDS[0], + ]); + const time2_ = await stake.reportTimeForTier( + alice.address, + Tier.THREE, + THRESHOLDS.slice(0, 1) + ); + const time3_ = await stake.reportTimeForTier( + alice.address, + Tier.FOUR, + THRESHOLDS.slice(0, 2) + ); + const time4_ = await stake.reportTimeForTier( + alice.address, + Tier.FIVE, + THRESHOLDS.slice(0, 3) + ); + const time5_ = await stake.reportTimeForTier( + alice.address, + Tier.SIX, + THRESHOLDS.slice(0, 4) + ); + const time6_ = await stake.reportTimeForTier( + alice.address, + Tier.SEVEN, + THRESHOLDS.slice(0, 5) + ); + const time7_ = await stake.reportTimeForTier( + alice.address, + Tier.EIGHT, + THRESHOLDS.slice(0, 6) + ); + + assert(time0_.eq(max_uint32)); + assert(time1_.eq(max_uint32)); + assert(time2_.eq(max_uint32)); + assert(time3_.eq(max_uint32)); + assert(time4_.eq(max_uint32)); + assert(time5_.eq(max_uint32)); + assert(time6_.eq(max_uint32)); + assert(time7_.eq(max_uint32)); + }); +}); diff --git a/test/9_Orderbook.test.ts b/test/9_Orderbook.test.ts new file mode 100644 index 0000000..37ff2cb --- /dev/null +++ b/test/9_Orderbook.test.ts @@ -0,0 +1,533 @@ +import { assert } from 'chai'; +import { ethers } from 'hardhat'; +import { concat, op } from '../src/utils'; +import { OrderBook__factory, ReserveTokenTest } from '../typechain'; +import { + OrderBook, + OrderConfig, + BountyConfig, + DepositConfig, + WithdrawConfig, + ClearStateChange +} from '../src'; +import { + ClearEvent, + DepositEvent, + WithdrawEvent, + AfterClearEvent, + OrderDeadEvent, + OrderLiveEvent +} from '../typechain/OrderBook'; +import { + ONE, + deployErc20, + eighteenZeros, + max_uint256, + getEventArgs, + compareStructs, + fixedPointDiv, + minBN, + fixedPointMul, + compareSolStructs +} from './utils'; + + +const orderbookInterface = OrderBook__factory.createInterface(); + +describe('SDK - OrderBook', async function () { + let tokenA: ReserveTokenTest, + tokenB: ReserveTokenTest; + + beforeEach(async () => { + tokenA = await deployErc20() as ReserveTokenTest; + tokenB = await deployErc20() as ReserveTokenTest; + }); + + it("should add orders", async function () { + const signers = await ethers.getSigners(); + + const sender = signers[0] + const alice = signers[1]; + const bob = signers[2]; + + const orderBook = await OrderBook.get(sender); + + const aliceInputVault = ethers.BigNumber.from(1); + const aliceOutputVault = ethers.BigNumber.from(2); + const bobInputVault = ethers.BigNumber.from(1); + const bobOutputVault = ethers.BigNumber.from(2); + + // ASK ORDER + + const askPrice = ethers.BigNumber.from("90" + eighteenZeros); + const askConstants = [max_uint256, askPrice]; + const vAskOutputMax = op(OrderBook.Opcodes.CONSTANT, 0); + const vAskPrice = op(OrderBook.Opcodes.CONSTANT, 1); + // prettier-ignore + const askSource = concat([ + vAskOutputMax, + vAskPrice, + ]); + const askOrderConfig: OrderConfig = { + inputToken: tokenA.address, + inputVaultId: aliceInputVault, + outputToken: tokenB.address, + outputVaultId: aliceOutputVault, + tracking: "0x00", + vmStateConfig: { + sources: [askSource], + constants: askConstants, + }, + }; + + const txAskOrderLive = await (orderBook.connect(alice)).addOrder(askOrderConfig); + + const { sender: askSender, config: askConfig } = await getEventArgs( + txAskOrderLive, + "OrderLive", + orderBook.address, + orderbookInterface + )as OrderLiveEvent["args"]; + + assert(askSender === alice.address, "wrong sender"); + compareStructs(askConfig, askOrderConfig); + + // BID ORDER + + const bidPrice = fixedPointDiv(ONE, askPrice); + const bidConstants = [max_uint256, bidPrice]; + const vBidOutputMax = op(OrderBook.Opcodes.CONSTANT, 0); + const vBidPrice = op(OrderBook.Opcodes.CONSTANT, 1); + // prettier-ignore + const bidSource = concat([ + vBidOutputMax, + vBidPrice, + ]); + const bidOrderConfig: OrderConfig = { + inputToken: tokenB.address, + inputVaultId: bobInputVault, + outputToken: tokenA.address, + outputVaultId: bobOutputVault, + tracking: "0x00", + vmStateConfig: { + sources: [bidSource], + constants: bidConstants, + }, + }; + + const txBidOrderLive = await orderBook + .connect(bob) + .addOrder(bidOrderConfig); + + const { sender: bidSender, config: bidConfig } = (await getEventArgs( + txBidOrderLive, + "OrderLive", + orderBook.address, + orderbookInterface + )) as OrderLiveEvent["args"]; + + assert(bidSender === bob.address, "wrong sender"); + compareStructs(bidConfig, bidOrderConfig); + }); + + it("should allow deposits", async function () { + const signers = await ethers.getSigners(); + + const sender = signers[0]; + const alice = signers[1]; + const bob = signers[2]; + + const orderBook = await OrderBook.get(sender); + + const aliceOutputVault = ethers.BigNumber.from(2); + const bobOutputVault = ethers.BigNumber.from(2); + + const amountB = ethers.BigNumber.from("1000" + eighteenZeros); + const amountA = ethers.BigNumber.from("1000" + eighteenZeros); + + await tokenB.transfer(alice.address, amountB); + await tokenA.transfer(bob.address, amountA); + + const depositConfigStructAlice: DepositConfig = { + token: tokenB.address, + vaultId: aliceOutputVault, + amount: amountB, + }; + const depositConfigStructBob: DepositConfig = { + token: tokenA.address, + vaultId: bobOutputVault, + amount: amountA, + }; + + await tokenB + .connect(alice) + .approve(orderBook.address, depositConfigStructAlice.amount); + await tokenA + .connect(bob) + .approve(orderBook.address, depositConfigStructBob.amount); + + // Alice deposits tokenB into her output vault + const txDepositOrderAlice = await orderBook + .connect(alice) + .deposit(depositConfigStructAlice); + // Bob deposits tokenA into his output vault + const txDepositOrderBob = await orderBook + .connect(bob) + .deposit(depositConfigStructBob); + + const { sender: depositAliceSender, config: depositAliceConfig } = + (await getEventArgs( + txDepositOrderAlice, + "Deposit", + orderBook.address, + orderbookInterface + )) as DepositEvent["args"]; + const { sender: depositBobSender, config: depositBobConfig } = + (await getEventArgs( + txDepositOrderBob, + "Deposit", + orderBook.address, + orderbookInterface + )) as DepositEvent["args"]; + + assert(depositAliceSender === alice.address); + compareStructs(depositAliceConfig, depositConfigStructAlice); + assert(depositBobSender === bob.address); + compareStructs(depositBobConfig, depositConfigStructBob); + + }); + + it("should support removing orders", async function () { + const signers = await ethers.getSigners(); + + const sender = signers[0]; + const alice = signers[1]; + + const orderBook = await OrderBook.get(sender); + + const aliceInputVault = ethers.BigNumber.from(1); + const aliceOutputVault = ethers.BigNumber.from(2); + + const askPrice = ethers.BigNumber.from("90" + eighteenZeros); + const askConstants = [max_uint256, askPrice]; + const vAskOutputMax = op(OrderBook.Opcodes.CONSTANT, 0); + const vAskPrice = op(OrderBook.Opcodes.CONSTANT, 1); + // prettier-ignore + const askSource = concat([ + vAskOutputMax, + vAskPrice, + ]); + const askOrderConfig: OrderConfig = { + inputToken: tokenA.address, + inputVaultId: aliceInputVault, + outputToken: tokenB.address, + outputVaultId: aliceOutputVault, + tracking: "0x00", + vmStateConfig: { + sources: [askSource], + constants: askConstants, + }, + }; + + const txAskOrderLive = await orderBook + .connect(alice) + .addOrder(askOrderConfig); + + const { sender: askLiveSender, config: askLiveConfig } = + (await getEventArgs( + txAskOrderLive, + "OrderLive", + orderBook.address, + orderbookInterface + )) as OrderLiveEvent["args"]; + + assert(askLiveSender === alice.address, "wrong sender"); + compareStructs(askLiveConfig, askOrderConfig); + + // REMOVE ASK ORDER + + const txAskOrderDead = await orderBook + .connect(alice) + .removeOrder(askLiveConfig); + + const { sender: askDeadSender, config: askDeadConfig } = + (await getEventArgs( + txAskOrderDead, + "OrderDead", + orderBook.address, + orderbookInterface + )) as OrderDeadEvent["args"]; + + assert(askDeadSender === alice.address, "wrong sender"); + compareStructs(askDeadConfig, askOrderConfig); + }); + + it("should allow withdrawals from vaults", async function () { + const signers = await ethers.getSigners(); + const sender = signers[0]; + const alice = signers[1]; + + const orderBook = await OrderBook.get(sender); + + const vaultId = ethers.BigNumber.from(1); + + // DEPOSITS + const amount = ethers.BigNumber.from("1000" + eighteenZeros); + await tokenA.transfer(alice.address, amount); + + const depositConfigStruct: DepositConfig = { + token: tokenA.address, + vaultId, + amount, + }; + + await tokenA + .connect(alice) + .approve(orderBook.address, depositConfigStruct.amount); + + // Alice deposits tokenA into her non-append-only vault + const txDeposit = await orderBook + .connect(alice) + .deposit(depositConfigStruct); + + const { sender: depositSender, config: depositConfig } = + (await getEventArgs( + txDeposit, + "Deposit", + orderBook.address, + orderbookInterface + )) as DepositEvent["args"]; + + assert(depositSender === alice.address); + compareStructs(depositConfig, depositConfigStruct); + + const aliceTokenABalance0 = await tokenA.balanceOf(alice.address); + + const withdrawConfigStruct: WithdrawConfig = { + token: tokenA.address, + vaultId: vaultId, + amount, + }; + + const txWithdraw = await orderBook + .connect(alice) + .withdraw(withdrawConfigStruct); + + const { sender: withdrawSender, config: withdrawConfig } = + (await getEventArgs( + txWithdraw, + "Withdraw", + orderBook.address, + orderbookInterface + )) as WithdrawEvent["args"]; + + assert(withdrawSender === alice.address); + compareStructs(withdrawConfig, withdrawConfigStruct); + + const aliceTokenABalance1 = await tokenA.balanceOf(alice.address); + + assert(aliceTokenABalance0.isZero()); + assert(aliceTokenABalance1.eq(amount)); + }); + + it("should add ask and bid orders and clear the order", async function () { + const signers = await ethers.getSigners(); + + const sender = signers[0]; + const alice = signers[1]; + const bob = signers[2]; + const bountyBot = signers[3]; + + const orderBook = await OrderBook.get(sender); + + const aliceInputVault = ethers.BigNumber.from(1); + const aliceOutputVault = ethers.BigNumber.from(2); + const bobInputVault = ethers.BigNumber.from(1); + const bobOutputVault = ethers.BigNumber.from(2); + const bountyBotVaultA = ethers.BigNumber.from(1); + const bountyBotVaultB = ethers.BigNumber.from(2); + + // ASK ORDER + + const askPrice = ethers.BigNumber.from("90" + eighteenZeros); + const askConstants = [max_uint256, askPrice]; + const vAskOutputMax = op(OrderBook.Opcodes.CONSTANT, 0); + const vAskPrice = op(OrderBook.Opcodes.CONSTANT, 1); + // prettier-ignore + const askSource = concat([ + vAskOutputMax, + vAskPrice, + ]); + const askOrderConfig: OrderConfig = { + inputToken: tokenA.address, + inputVaultId: aliceInputVault, + outputToken: tokenB.address, + outputVaultId: aliceOutputVault, + tracking: "0x00", + vmStateConfig: { + sources: [askSource], + constants: askConstants, + }, + }; + + const txAskOrderLive = await orderBook + .connect(alice) + .addOrder(askOrderConfig); + + const { sender: askSender, config: askConfig } = (await getEventArgs( + txAskOrderLive, + "OrderLive", + orderBook.address, + orderbookInterface + )) as OrderLiveEvent["args"]; + + assert(askSender === alice.address, "wrong sender"); + compareStructs(askConfig, askOrderConfig); + + // BID ORDER + const bidPrice = fixedPointDiv(ONE, askPrice); + const bidConstants = [max_uint256, bidPrice]; + const vBidOutputMax = op(OrderBook.Opcodes.CONSTANT, 0); + const vBidPrice = op(OrderBook.Opcodes.CONSTANT, 1); + // prettier-ignore + const bidSource = concat([ + vBidOutputMax, + vBidPrice, + ]); + const bidOrderConfig: OrderConfig = { + inputToken: tokenB.address, + inputVaultId: bobInputVault, + outputToken: tokenA.address, + outputVaultId: bobOutputVault, + tracking: "0x00", + vmStateConfig: { + sources: [bidSource], + constants: bidConstants, + }, + }; + + const txBidOrderLive = await orderBook + .connect(bob) + .addOrder(bidOrderConfig); + + const { sender: bidSender, config: bidConfig } = (await getEventArgs( + txBidOrderLive, + "OrderLive", + orderBook.address, + orderbookInterface + )) as OrderLiveEvent["args"]; + + assert(bidSender === bob.address, "wrong sender"); + compareStructs(bidConfig, bidOrderConfig); + + // DEPOSITS + const amountB = ethers.BigNumber.from("1000" + eighteenZeros); + const amountA = ethers.BigNumber.from("1000" + eighteenZeros); + + await tokenB.transfer(alice.address, amountB); + await tokenA.transfer(bob.address, amountA); + + const depositConfigStructAlice: DepositConfig = { + token: tokenB.address, + vaultId: aliceOutputVault, + amount: amountB, + }; + const depositConfigStructBob: DepositConfig = { + token: tokenA.address, + vaultId: bobOutputVault, + amount: amountA, + }; + + await tokenB + .connect(alice) + .approve(orderBook.address, depositConfigStructAlice.amount); + await tokenA + .connect(bob) + .approve(orderBook.address, depositConfigStructBob.amount); + + // Alice deposits tokenB into her output vault + const txDepositOrderAlice = await orderBook + .connect(alice) + .deposit(depositConfigStructAlice); + // Bob deposits tokenA into his output vault + const txDepositOrderBob = await orderBook + .connect(bob) + .deposit(depositConfigStructBob); + + const { sender: depositAliceSender, config: depositAliceConfig } = + (await getEventArgs( + txDepositOrderAlice, + "Deposit", + orderBook.address, + orderbookInterface + )) as DepositEvent["args"]; + const { sender: depositBobSender, config: depositBobConfig } = + (await getEventArgs( + txDepositOrderBob, + "Deposit", + orderBook.address, + orderbookInterface + )) as DepositEvent["args"]; + + assert(depositAliceSender === alice.address); + compareStructs(depositAliceConfig, depositConfigStructAlice); + assert(depositBobSender === bob.address); + compareStructs(depositBobConfig, depositConfigStructBob); + + // BOUNTY BOT CLEARS THE ORDER + + const bountyConfig: BountyConfig = { + aVaultId: bountyBotVaultA, + bVaultId: bountyBotVaultB, + }; + + const txClearOrder = await orderBook + .connect(bountyBot) + .clear(askConfig, bidConfig, bountyConfig); + + const { + sender: clearSender, + a_: clearA_, + b_: clearB_, + bountyConfig: clearBountyConfig, + } = (await getEventArgs( + txClearOrder, + "Clear", + orderBook.address, + orderbookInterface + )) as ClearEvent["args"]; + const { stateChange: clearStateChange } = (await getEventArgs( + txClearOrder, + "AfterClear", + orderBook.address, + orderbookInterface + )) as AfterClearEvent["args"]; + + const aOutputMaxExpected = amountA; + const bOutputMaxExpected = amountB; + + const aOutputExpected = minBN( + aOutputMaxExpected, + fixedPointMul(bidPrice, amountA) + ); + const bOutputExpected = minBN( + bOutputMaxExpected, + fixedPointMul(askPrice, amountB) + ); + + const expectedClearStateChange: ClearStateChange = { + aOutput: aOutputExpected, + bOutput: bOutputExpected, + aInput: fixedPointMul(askPrice, aOutputExpected), + bInput: fixedPointMul(bidPrice, bOutputExpected), + }; + + assert(clearSender === bountyBot.address); + compareSolStructs(clearA_, askConfig); + compareSolStructs(clearB_, bidConfig); + compareStructs(clearBountyConfig, bountyConfig); + compareStructs(clearStateChange, expectedClearStateChange); + }); + +}); + diff --git a/test/9_stake.test.ts b/test/9_stake.test.ts deleted file mode 100644 index 93ac589..0000000 --- a/test/9_stake.test.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { expect } from 'chai'; -import { ethers } from 'hardhat'; -import { ERC20, Stake } from '../src'; -import { ReserveToken } from '../typechain'; - -describe('SDK - Stake', () => { - - it('should deploy a Stake child correctly', async () => { - const [deployer, staker] = await ethers.getSigners(); - const TokenFactory = await ethers.getContractFactory( - 'ReserveToken', - deployer - ); - const erc20Contract = await TokenFactory.deploy() as ReserveToken; - const erc20Address = erc20Contract.address; - - // Create the instances - const erc20Deployer = new ERC20(erc20Address, deployer); - const reserveToken = erc20Deployer.connect(staker); - - // Transfer tokens from the deployer to the staker with the instances - const amountToTransfer = '50000000'; - await erc20Deployer.approve(staker.address, amountToTransfer); - await reserveToken.transferFrom( - deployer.address, - staker.address, - amountToTransfer - ); - expect(await reserveToken.balanceOf(staker.address)).to.be.equals( - amountToTransfer - ); - - - console.log("userA balance of reserveToken before deploying the stake contract: " + (await reserveToken.balanceOf(staker.address))) - console.log("--------------------------------------------------------------------") - - console.log("deploying the stake contract with initial ratio of 1:1") - console.log("--------------------------------------------------------------------") - - const stake = await Stake.deploy(staker, { - token: reserveToken.address, - initialRatio: "1000000000000000000000000000000", - name: "stToken", - symbol: "sss" - }) - console.log("stake contract deployed") - console.log("--------------------------------------------------------------------") - - console.log("stToken totalSupply before deposit: " + (await stake.totalSupply())) - console.log("reserveToken balance of stake contract before deposit: " + (await reserveToken.balanceOf(stake.address))) - console.log("--------------------------------------------------------------------") - - console.log("userA depositing 20 reserveToken into stake") - await reserveToken.approve(stake.address, ethers.constants.MaxUint256); - await stake.deposit("20000000") - console.log("--------------------------------------------------------------------") - - console.log("stToken totalSupply after deposit: " + (await stake.totalSupply())) - console.log("reserveToken balance of stake contract after deposit: " + (await reserveToken.balanceOf(stake.address))) - console.log("userA balance of stToken after depositing into stake: " + (await stake.balanceOf(staker.address))) - console.log("userA balance of reserveToken after depositing into stake: " + (await reserveToken.balanceOf(staker.address))) - console.log("--------------------------------------------------------------------") - - console.log("userA withdrawing 10 reserveToken from stake") - await stake.withdraw("10000000") - console.log("--------------------------------------------------------------------") - - console.log("stToken totalSupply after withdraw: " + (await stake.totalSupply())) - console.log("reserveToken balance of stake contract after withdraw: " + (await reserveToken.balanceOf(stake.address))) - console.log("userA balance of stToken after withdrawing from stake: " + (await stake.balanceOf(staker.address))) - console.log("userA balance of reserveToken after withdrawing from stake: " + (await reserveToken.balanceOf(staker.address))) - - }); -}) \ No newline at end of file diff --git a/test/utils.ts b/test/utils.ts index e407d89..673e577 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -1,19 +1,21 @@ +import { assert } from 'chai'; import { ethers } from 'hardhat'; +import { Interface } from 'ethers/lib/utils'; import { + utils, + Signer, BigNumber, BigNumberish, - Signer, ContractTransaction, - utils, } from 'ethers'; -import { assert } from 'chai'; - import { + ReserveToken, ReserveTokenTest, ReserveTokenERC721, ReserveTokenERC1155, } from '../typechain'; -import { Interface } from 'ethers/lib/utils'; + +const { hexlify } = utils; /** * Hardhat network chainID @@ -64,6 +66,7 @@ export interface Addresses { export const sixZeros = '000000'; export const eighteenZeros = '000000000000000000'; export const max_uint256 = ethers.constants.MaxUint256; +export const max_uint32 = BigNumber.from("0xffffffff"); export const RESERVE_ONE = ethers.BigNumber.from('1' + sixZeros); export const ONE = ethers.BigNumber.from('1' + eighteenZeros); @@ -89,6 +92,14 @@ export async function deployErc20(signer?: Signer): Promise { return (await TokenFactory.deploy()) as ReserveTokenTest; } +export async function deployReserve(signer?: Signer): Promise { + const TokenFactory = await ethers.getContractFactory( + 'ReserveToken', + signer + ); + return (await TokenFactory.deploy()) as ReserveToken; +} + export async function deployErc721( signer?: Signer ): Promise { @@ -285,4 +296,169 @@ export function arg(valIndex: number): number { _value = _value - 0x100; } return _value; -} \ No newline at end of file +} + +export const fixedPointMul = (a: BigNumber, b: BigNumber): BigNumber => + a.mul(b).div(ONE); + +export const fixedPointDiv = (a: BigNumber, b: BigNumber): BigNumber => + a.mul(ONE).div(b); + +export const minBN = (a: BigNumber, b: BigNumber): BigNumber => + a.lt(b) ? a : b; + +export const maxBN = (a: BigNumber, b: BigNumber): BigNumber => + a.gt(b) ? a : b; + +export const THRESHOLDS = [1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000].map( + (value) => ethers.BigNumber.from(value + sixZeros) +); + +const testStructs = ( + solObj: Record, + jsObj: Record +) => { + Object.keys(solObj).forEach((key) => { + let expectedValue = jsObj[key]; + let actualValue = solObj[key]; + + if (expectedValue !== undefined) { + if (expectedValue instanceof Uint8Array) { + expectedValue = hexlify(expectedValue); + } + if (actualValue instanceof BigNumber) { + expectedValue = BigNumber.from(expectedValue); + } + + if ( + typeof actualValue === "string" || + typeof expectedValue === "string" + ) { + actualValue = `${actualValue}`.toLowerCase(); + expectedValue = `${expectedValue}`.toLowerCase(); + } + + if ( + typeof actualValue === "object" || + typeof expectedValue === "object" + ) { + // recursive call for nested structs + testStructs( + actualValue as Record, + expectedValue as Record + ); + } else { + let condition: boolean; + try { + condition = + actualValue == expectedValue || actualValue["eq"](expectedValue); + } catch (error) { + console.log(error); + } + + assert( + condition!, + `wrong value for property: '${key}' + expected ${expectedValue} + got ${actualValue}` + ); + } + } + }); +}; + +/** + * Uses chai `assert` to compare a Solidity struct with a JavaScript object by checking whether the values for each property are equivalent. + * Will safely recurse over nested structs and compare nested properties. + * Throws an error if any comparisons fail. + * @param solStruct - Solidity struct, returned from something such as an emitted solidity Event. This should have an array-like structure + * with raw values followed by key-values (e.g. `solStruct: ['foo', 'bar', prop1: 'foo', prop2: 'bar']`). + * @param jsObj - JavaScript object literal to use as comparison. + */ + export const compareStructs = ( + solStruct: unknown[], + jsObj: Record +) => { + const solEntries = Object.entries(solStruct).splice( + solStruct.length // actually half the solStruct size + ); + + if (!solEntries.length) { + throw new Error( + `Could not generate entries from a solStruct of length ${solStruct.length}. Ensure you are using a Solidity struct for solStruct.` + ); + } + + const solObj = Object.fromEntries(solEntries); + + testStructs(solObj, jsObj); +}; + +/** + * Uses chai `assert` to compare Solidity structs by checking whether the values for each property are equivalent. + * Will safely recurse over nested structs and compare nested properties. + * Throws an error if any comparisons fail. + * @param solStructActual - Solidity struct, returned from something such as an emitted solidity Event. This should + * have an array-like structure with raw values followed by key-values (e.g. `solStruct: ['foo', 'bar', prop1: 'foo', prop2: 'bar']`). + * @param solStructExpected - Solidity struct. + */ + export const compareSolStructs = ( + solStructActual: unknown[], + solStructExpected: unknown[] +) => { + const solActualEntries = Object.entries(solStructActual).splice( + solStructActual.length // actually half the solStruct size + ); + const solExpectedEntries = Object.entries(solStructExpected).splice( + solStructExpected.length // actually half the solStruct size + ); + + if (!solActualEntries.length) { + throw new Error( + `Could not generate entries from a solStructActual of length ${solStructActual.length}. Ensure you are using a Solidity struct for solStructActual.` + ); + } + if (!solExpectedEntries.length) { + throw new Error( + `Could not generate entries from a solStructExpected of length ${solStructExpected.length}. Ensure you are using a Solidity struct for solStructExpected.` + ); + } + + const solAObj = Object.fromEntries(solActualEntries); + const solBObj = Object.fromEntries(solExpectedEntries); + + testSolStructs(solAObj, solBObj); +}; + +const testSolStructs = ( + solActualObj: Record, + solExpectedObj: Record +) => { + Object.keys(solActualObj).forEach((key) => { + const actualValue = solActualObj[key]; + const expectedValue = solExpectedObj[key]; + + if (typeof actualValue === "object" || typeof expectedValue === "object") { + // recursive call for nested structs + testSolStructs( + actualValue as Record, + expectedValue as Record + ); + } else { + let condition: boolean; + try { + condition = + actualValue == expectedValue || actualValue["eq"](expectedValue); + } catch (error) { + console.log(error); + } + + assert( + condition!, + `wrong value for property: '${key}' + expected ${expectedValue} + got ${actualValue}` + ); + } + }); +}; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index c177f34..b813d48 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,93 +10,93 @@ "@jridgewell/gen-mapping" "^0.1.0" "@jridgewell/trace-mapping" "^0.3.9" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7", "@babel/code-frame@^7.5.5": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" - integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.5.5": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== dependencies: - "@babel/highlight" "^7.16.7" + "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.10": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.5.tgz#acac0c839e317038c73137fbb6ef71a1d6238471" - integrity sha512-BxhE40PVCBxVEJsSBhB6UWyAuqJRxGsAw8BdHMJ3AKGydcwuWW4kOO3HmqBQAdcq/OP+/DlTVxLvsCzRTnZuGg== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" + integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.5.tgz#c597fa680e58d571c28dda9827669c78cdd7f000" - integrity sha512-MGY8vg3DxMnctw0LdvSEojOsumc70g0t18gNyUdAZqB1Rpd1Bqo/svHGvt+UJ6JcGX+DIekGFDxxIWofBxLCnQ== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" + integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== dependencies: "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helpers" "^7.18.2" - "@babel/parser" "^7.18.5" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.5" - "@babel/types" "^7.18.4" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helpers" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.2", "@babel/generator@^7.7.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.2.tgz#33873d6f89b21efe2da63fe554460f3df1c5880d" - integrity sha512-W1lG5vUwFvfMd8HVXqdfbuG7RuaSrTCCD8cl8fP8wOivdbtbIg2Db3IWUcgvfxKbbn6ZBGYRW/Zk1MIwK49mgw== +"@babel/generator@^7.18.6", "@babel/generator@^7.18.7", "@babel/generator@^7.7.2": + version "7.18.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.7.tgz#2aa78da3c05aadfc82dbac16c99552fc802284bd" + integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A== dependencies: - "@babel/types" "^7.18.2" - "@jridgewell/gen-mapping" "^0.3.0" + "@babel/types" "^7.18.7" + "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" -"@babel/helper-annotate-as-pure@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" - integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== +"@babel/helper-annotate-as-pure@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== dependencies: - "@babel/types" "^7.16.7" + "@babel/types" "^7.18.6" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz#38d138561ea207f0f69eb1626a418e4f7e6a580b" - integrity sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA== +"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz#f14d640ed1ee9246fb33b8255f08353acfe70e6a" + integrity sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw== dependencies: - "@babel/helper-explode-assignable-expression" "^7.16.7" - "@babel/types" "^7.16.7" + "@babel/helper-explode-assignable-expression" "^7.18.6" + "@babel/types" "^7.18.6" -"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.10", "@babel/helper-compilation-targets@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.2.tgz#67a85a10cbd5fc7f1457fec2e7f45441dc6c754b" - integrity sha512-s1jnPotJS9uQnzFtiZVBUxe67CuBa679oWFHpxYYnTpRL/1ffhyX44R9uYiXoa/pLXcY9H2moJta0iaanlk/rQ== +"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" + integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-validator-option" "^7.16.7" + "@babel/compat-data" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" -"@babel/helper-create-class-features-plugin@^7.17.12", "@babel/helper-create-class-features-plugin@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.0.tgz#fac430912606331cb075ea8d82f9a4c145a4da19" - integrity sha512-Kh8zTGR9de3J63e5nS0rQUdRs/kbtwoeQQ0sriS0lItjC96u8XXZN6lKpuyWd2coKSU13py/y+LTmThLuVX0Pg== +"@babel/helper-create-class-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" + integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" -"@babel/helper-create-regexp-features-plugin@^7.16.7", "@babel/helper-create-regexp-features-plugin@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.12.tgz#bb37ca467f9694bbe55b884ae7a5cc1e0084e4fd" - integrity sha512-b2aZrV4zvutr9AIa6/gA3wsZKRwTKYoDxYiFKcESS3Ug2GTXzwBEvMuuFLhCQpEnRXs1zng4ISAXSUxxKBIcxw== +"@babel/helper-create-regexp-features-plugin@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" + integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - regexpu-core "^5.0.1" + "@babel/helper-annotate-as-pure" "^7.18.6" + regexpu-core "^5.1.0" "@babel/helper-define-polyfill-provider@^0.0.3": version "0.0.3" @@ -126,300 +126,302 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.16.7", "@babel/helper-environment-visitor@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.2.tgz#8a6d2dedb53f6bf248e31b4baf38739ee4a637bd" - integrity sha512-14GQKWkX9oJzPiQQ7/J36FTXcD4kSp8egKjO9nINlSKiHITRA9q/R74qu8S9xlc/b/yjsJItQUeeh3xnGN0voQ== - -"@babel/helper-explode-assignable-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" - integrity sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ== +"@babel/helper-environment-visitor@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" + integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== + +"@babel/helper-explode-assignable-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" + integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-function-name@^7.16.7", "@babel/helper-function-name@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12" - integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/types" "^7.17.0" - -"@babel/helper-hoist-variables@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" - integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-member-expression-to-functions@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" - integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== - dependencies: - "@babel/types" "^7.17.0" - -"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" - integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-module-transforms@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz#baf05dec7a5875fb9235bd34ca18bad4e21221cd" - integrity sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA== - dependencies: - "@babel/helper-environment-visitor" "^7.16.7" - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-simple-access" "^7.17.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/helper-validator-identifier" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.0" - "@babel/types" "^7.18.0" - -"@babel/helper-optimise-call-expression@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz#a34e3560605abbd31a18546bd2aad3e6d9a174f2" - integrity sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.17.12", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz#86c2347da5acbf5583ba0a10aed4c9bf9da9cf96" - integrity sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA== - -"@babel/helper-remap-async-to-generator@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz#29ffaade68a367e2ed09c90901986918d25e57e3" - integrity sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-wrap-function" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helper-replace-supers@^7.16.7", "@babel/helper-replace-supers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.2.tgz#41fdfcc9abaf900e18ba6e5931816d9062a7b2e0" - integrity sha512-XzAIyxx+vFnrOxiQrToSUOzUOn0e1J2Li40ntddek1Y69AXUTXoDJ40/D5RdjFu7s7qHiaeoTiempZcbuVXh2Q== - dependencies: - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-member-expression-to-functions" "^7.17.7" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/helper-simple-access@^7.17.7", "@babel/helper-simple-access@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.2.tgz#4dc473c2169ac3a1c9f4a51cfcd091d1c36fcff9" - integrity sha512-7LIrjYzndorDY88MycupkpQLKS1AFfsVRm2k/9PtKScSy5tZq0McZTj+DiMRynboZfIqOKvo03pmhTaUgiD6fQ== - dependencies: - "@babel/types" "^7.18.2" - -"@babel/helper-skip-transparent-expression-wrappers@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz#0ee3388070147c3ae051e487eca3ebb0e2e8bb09" - integrity sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw== - dependencies: - "@babel/types" "^7.16.0" - -"@babel/helper-split-export-declaration@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" - integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== - dependencies: - "@babel/types" "^7.16.7" - -"@babel/helper-validator-identifier@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" - integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== - -"@babel/helper-validator-option@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" - integrity sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ== - -"@babel/helper-wrap-function@^7.16.8": - version "7.16.8" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz#58afda087c4cd235de92f7ceedebca2c41274200" - integrity sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw== - dependencies: - "@babel/helper-function-name" "^7.16.7" - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.16.8" - "@babel/types" "^7.16.8" - -"@babel/helpers@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.2.tgz#970d74f0deadc3f5a938bfa250738eb4ac889384" - integrity sha512-j+d+u5xT5utcQSzrh9p+PaJX94h++KN+ng9b9WEJq7pkUPAd61FGqhjuUEdfknb3E/uDBb7ruwEeKkIxNJPIrg== - dependencies: - "@babel/template" "^7.16.7" - "@babel/traverse" "^7.18.2" - "@babel/types" "^7.18.2" - -"@babel/highlight@^7.16.7": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.12.tgz#257de56ee5afbd20451ac0a75686b6b404257351" - integrity sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg== - dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/types" "^7.18.6" + +"@babel/helper-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83" + integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-member-expression-to-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz#44802d7d602c285e1692db0bad9396d007be2afc" + integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" + integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-module-transforms@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz#4f8408afead0188cfa48672f9d0e5787b61778c8" + integrity sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.8" + "@babel/types" "^7.18.8" + +"@babel/helper-optimise-call-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" + integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" + integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== + +"@babel/helper-remap-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz#fa1f81acd19daee9d73de297c0308783cd3cfc23" + integrity sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-wrap-function" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-replace-supers@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" + integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== + dependencies: + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helper-simple-access@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" + integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-skip-transparent-expression-wrappers@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9" + integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + +"@babel/helper-validator-option@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" + integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== + +"@babel/helper-wrap-function@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz#ec44ea4ad9d8988b90c3e465ba2382f4de81a073" + integrity sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw== + dependencies: + "@babel/helper-function-name" "^7.18.6" + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/helpers@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" + integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== + dependencies: + "@babel/template" "^7.18.6" + "@babel/traverse" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.18.5", "@babel/parser@^7.7.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.5.tgz#337062363436a893a2d22faa60be5bb37091c83c" - integrity sha512-YZWVaglMiplo7v8f1oMQ5ZPQr0vn7HPeZXxXWsxXJRjGVrzUFn9OxFQl1sb5wzfootjA/yChhW84BV+383FSOw== +"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.8", "@babel/parser@^7.7.0": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.8.tgz#822146080ac9c62dac0823bb3489622e0bc1cbdf" + integrity sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA== -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.17.12.tgz#1dca338caaefca368639c9ffb095afbd4d420b1e" - integrity sha512-xCJQXl4EeQ3J9C4yOmpTrtVGmzpm2iSzyxbkZHw7UCnZBftHpF/hpII80uWVyVrc40ytIClHjgWGTG1g/yB+aw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" + integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.17.12.tgz#0d498ec8f0374b1e2eb54b9cb2c4c78714c77753" - integrity sha512-/vt0hpIw0x4b6BLKUkwlvEoiGZYYLNZ96CzyHYPbtG2jZGz6LBe7/V+drYrc/d+ovrF9NBi0pmtvmNb/FsWtRQ== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" + integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" -"@babel/plugin-proposal-async-generator-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.17.12.tgz#094a417e31ce7e692d84bab06c8e2a607cbeef03" - integrity sha512-RWVvqD1ooLKP6IqWTA5GyFVX2isGEgC5iFxKzfYOIy/QEFdxYyCybBDtIGjipHpb9bDWHzcqGqFakf+mVmBTdQ== +"@babel/plugin-proposal-async-generator-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz#aedac81e6fc12bb643374656dd5f2605bf743d17" + integrity sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" -"@babel/plugin-proposal-class-properties@^7.17.12", "@babel/plugin-proposal-class-properties@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.17.12.tgz#84f65c0cc247d46f40a6da99aadd6438315d80a4" - integrity sha512-U0mI9q8pW5Q9EaTHFPwSVusPMV/DV9Mm8p7csqROFLtIE9rBF5piLqyrBGigftALrBcsBGu4m38JneAe7ZDLXw== +"@babel/plugin-proposal-class-properties@^7.18.6", "@babel/plugin-proposal-class-properties@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-class-static-block@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.0.tgz#7d02253156e3c3793bdb9f2faac3a1c05f0ba710" - integrity sha512-t+8LsRMMDE74c6sV7KShIw13sqbqd58tlqNrsWoWBTIMw7SVQ0cZ905wLNS/FBCy/3PyooRHLFFlfrUNyyz5lA== +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" + integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-class-static-block" "^7.14.5" -"@babel/plugin-proposal-dynamic-import@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz#c19c897eaa46b27634a00fee9fb7d829158704b2" - integrity sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg== +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.17.12.tgz#b22864ccd662db9606edb2287ea5fd1709f05378" - integrity sha512-j7Ye5EWdwoXOpRmo5QmRyHPsDIe6+u70ZYZrd7uz+ebPYFKfRcLcNu3Ro0vOlJ5zuv8rU7xa+GttNiRzX56snQ== +"@babel/plugin-proposal-export-namespace-from@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" + integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" -"@babel/plugin-proposal-json-strings@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.17.12.tgz#f4642951792437233216d8c1af370bb0fbff4664" - integrity sha512-rKJ+rKBoXwLnIn7n6o6fulViHMrOThz99ybH+hKHcOZbnN14VuMnH9fo2eHE69C8pO4uX1Q7t2HYYIDmv8VYkg== +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.17.12.tgz#c64a1bcb2b0a6d0ed2ff674fd120f90ee4b88a23" - integrity sha512-EqFo2s1Z5yy+JeJu7SFfbIUtToJTVlC61/C7WLKDntSw4Sz6JNAIfL7zQ74VvirxpjB5kz/kIx0gCcb+5OEo2Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" + integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" -"@babel/plugin-proposal-nullish-coalescing-operator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.17.12.tgz#1e93079bbc2cbc756f6db6a1925157c4a92b94be" - integrity sha512-ws/g3FSGVzv+VH86+QvgtuJL/kR67xaEIF2x0iPqdDfYW6ra6JF3lKVBkWynRLcNtIC1oCTfDRVxmm2mKzy+ag== +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-proposal-numeric-separator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz#d6b69f4af63fb38b6ca2558442a7fb191236eba9" - integrity sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw== +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.0.tgz#79f2390c892ba2a68ec112eb0d895cfbd11155e8" - integrity sha512-nbTv371eTrFabDfHLElkn9oyf9VG+VKK6WMzhY2o4eHKaG19BToD9947zzGMO6I/Irstx9d8CwX6njPNIAR/yw== +"@babel/plugin-proposal-object-rest-spread@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" + integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.17.10" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.17.12" + "@babel/plugin-transform-parameters" "^7.18.6" -"@babel/plugin-proposal-optional-catch-binding@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz#c623a430674ffc4ab732fd0a0ae7722b67cb74cf" - integrity sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA== +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.17.12.tgz#f96949e9bacace3a9066323a5cf90cfb9de67174" - integrity sha512-7wigcOs/Z4YWlK7xxjkvaIw84vGhDv/P1dFGQap0nHkc8gFKY/r+hXc8Qzf5k1gY7CvGIcHqAnOagVKJJ1wVOQ== +"@babel/plugin-proposal-optional-chaining@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" + integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-proposal-private-methods@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.17.12.tgz#c2ca3a80beb7539289938da005ad525a038a819c" - integrity sha512-SllXoxo19HmxhDWm3luPz+cPhtoTSKLJE9PXshsfrOzBqs60QP0r8OaJItrPhAj0d7mZMnNF0Y1UUggCDgMz1A== +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-private-property-in-object@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.17.12.tgz#b02efb7f106d544667d91ae97405a9fd8c93952d" - integrity sha512-/6BtVi57CJfrtDNKfK5b66ydK2J5pXUKBKSPD2G1whamMuEnZWgoOIfO8Vf9F/DoD4izBLD/Au4NMQfruzzykg== +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" + integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-create-class-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-proposal-unicode-property-regex@^7.17.12", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.17.12.tgz#3dbd7a67bd7f94c8238b394da112d86aaf32ad4d" - integrity sha512-Wb9qLjXf3ZazqXA7IvI7ozqRIXIGPtSo+L5coFmEkhTQK18ao4UDDD0zdTGAarmbLj2urpRwrc6893cu5Bfh0A== +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -463,12 +465,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-syntax-import-assertions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.17.12.tgz#58096a92b11b2e4e54b24c6a0cc0e5e607abcedd" - integrity sha512-n/loy2zkq9ZEM8tEOwON9wTQSTNDTDEz6NujPtJGLU7qObzT1N4c4YZZf8E6ATB2AjNQg/Ib2AIpO03EZaCehw== +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" + integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" @@ -541,296 +543,296 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz#b54fc3be6de734a56b87508f99d6428b5b605a7b" - integrity sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-arrow-functions@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.17.12.tgz#dddd783b473b1b1537ef46423e3944ff24898c45" - integrity sha512-PHln3CNi/49V+mza4xMwrg+WGYevSF1oaiXaC2EQfdp4HWlSjRsrDXWJiQBKpP7749u6vQ9mcry2uuFOv5CXvA== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-async-to-generator@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.17.12.tgz#dbe5511e6b01eee1496c944e35cdfe3f58050832" - integrity sha512-J8dbrWIOO3orDzir57NRsjg4uxucvhby0L/KZuGsWDj0g7twWK3g7JhJhOrXtuXiw8MeiSdJ3E0OW9H8LYEzLQ== - dependencies: - "@babel/helper-module-imports" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-remap-async-to-generator" "^7.16.8" - -"@babel/plugin-transform-block-scoped-functions@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz#4d0d57d9632ef6062cdf354bb717102ee042a620" - integrity sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg== - dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - -"@babel/plugin-transform-block-scoping@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.4.tgz#7988627b3e9186a13e4d7735dc9c34a056613fb9" - integrity sha512-+Hq10ye+jlvLEogSOtq4mKvtk7qwcUQ1f0Mrueai866C82f844Yom2cttfJdMdqRLTxWpsbfbkIkOIfovyUQXw== - dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - -"@babel/plugin-transform-classes@^7.17.12": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.4.tgz#51310b812a090b846c784e47087fa6457baef814" - integrity sha512-e42NSG2mlKWgxKUAD9EJJSkZxR67+wZqzNxLSpc51T8tRU5SLFHsPmgYR5yr7sdgX4u+iHA1C5VafJ6AyImV3A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.16.7" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-optimise-call-expression" "^7.16.7" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-replace-supers" "^7.18.2" - "@babel/helper-split-export-declaration" "^7.16.7" + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" + integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" + integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" + integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-block-scoping@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" + integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-transform-classes@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.8.tgz#7e85777e622e979c85c701a095280360b818ce49" + integrity sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-optimise-call-expression" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.17.12.tgz#bca616a83679698f3258e892ed422546e531387f" - integrity sha512-a7XINeplB5cQUWMg1E/GI1tFz3LfK021IjV1rj1ypE+R7jHm+pIHmHl25VNkZxtx9uuYp7ThGk8fur1HHG7PgQ== +"@babel/plugin-transform-computed-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" + integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-destructuring@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.0.tgz#dc4f92587e291b4daa78aa20cc2d7a63aa11e858" - integrity sha512-Mo69klS79z6KEfrLg/1WkmVnB8javh75HX4pi2btjvlIoasuxilEyjtsQW6XPrubNd7AQy0MMaNIaQE4e7+PQw== +"@babel/plugin-transform-destructuring@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" + integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-dotall-regex@^7.16.7", "@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz#6b2d67686fab15fb6a7fd4bd895d5982cfc81241" - integrity sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ== +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" + integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.17.12.tgz#a09aa709a3310013f8e48e0e23bc7ace0f21477c" - integrity sha512-EA5eYFUG6xeerdabina/xIoB95jJ17mAkR8ivx6ZSu9frKShBjpOGZPn511MTDTkiCO+zXnzNczvUM69YSf3Zw== +"@babel/plugin-transform-duplicate-keys@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" + integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-exponentiation-operator@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz#efa9862ef97e9e9e5f653f6ddc7b665e8536fe9b" - integrity sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA== +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" + integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.1": - version "7.18.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.1.tgz#ed14b657e162b72afbbb2b4cdad277bf2bb32036" - integrity sha512-+TTB5XwvJ5hZbO8xvl2H4XaMDOAK57zF4miuC9qQJgysPNEAZZ9Z69rdF5LJkozGdZrjBIUAIyKUWRMmebI7vg== +"@babel/plugin-transform-for-of@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" + integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz#5ab34375c64d61d083d7d2f05c38d90b97ec65cf" - integrity sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA== +"@babel/plugin-transform-function-name@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" + integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== dependencies: - "@babel/helper-compilation-targets" "^7.16.7" - "@babel/helper-function-name" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-literals@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.17.12.tgz#97131fbc6bbb261487105b4b3edbf9ebf9c830ae" - integrity sha512-8iRkvaTjJciWycPIZ9k9duu663FT7VrBdNqNgxnVXEFwOIp55JWcZd23VBRySYbnS3PwQ3rGiabJBBBGj5APmQ== +"@babel/plugin-transform-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" + integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-member-expression-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz#6e5dcf906ef8a098e630149d14c867dd28f92384" - integrity sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw== +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" + integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-modules-amd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.0.tgz#7ef1002e67e36da3155edc8bf1ac9398064c02ed" - integrity sha512-h8FjOlYmdZwl7Xm2Ug4iX2j7Qy63NANI+NQVWQzv6r25fqgg7k2dZl03p95kvqNclglHs4FZ+isv4p1uXMA+QA== +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" + integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.2.tgz#1aa8efa2e2a6e818b6a7f2235fceaf09bdb31e9e" - integrity sha512-f5A865gFPAJAEE0K7F/+nm5CmAE3y8AWlMBG9unu5j9+tk50UQVK0QS8RNxSp7MJf0wh97uYyLWt3Zvu71zyOQ== +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" + integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-simple-access" "^7.18.2" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.0": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.5.tgz#87f11c44fbfd3657be000d4897e192d9cb535996" - integrity sha512-SEewrhPpcqMF1V7DhnEbhVJLrC+nnYfe1E0piZMZXBpxi9WvZqWGwpsk7JYP7wPWeqaBh4gyKlBhHJu3uz5g4Q== +"@babel/plugin-transform-modules-systemjs@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" + integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== dependencies: - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.0.tgz#56aac64a2c2a1922341129a4597d1fd5c3ff020f" - integrity sha512-d/zZ8I3BWli1tmROLxXLc9A6YXvGK8egMxHp+E/rRwMh1Kip0AP77VwZae3snEJ33iiWwvNv2+UIIhfalqhzZA== +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" + integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== dependencies: - "@babel/helper-module-transforms" "^7.18.0" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-module-transforms" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-named-capturing-groups-regex@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.17.12.tgz#9c4a5a5966e0434d515f2675c227fd8cc8606931" - integrity sha512-vWoWFM5CKaTeHrdUJ/3SIOTRV+MBVGybOC9mhJkaprGNt5demMymDW24yC74avb915/mIRe3TgNb/d8idvnCRA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" + integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.17.12" - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-new-target@^7.17.12": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.5.tgz#8c228c4a07501dd12c95c5f23d1622131cc23931" - integrity sha512-TuRL5uGW4KXU6OsRj+mLp9BM7pO8e7SGNTEokQRRxHFkXYMFiy2jlKSZPFtI/mKORDzciH+hneskcSOp0gU8hg== +"@babel/plugin-transform-new-target@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" + integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-object-super@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz#ac359cf8d32cf4354d27a46867999490b6c32a94" - integrity sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw== +"@babel/plugin-transform-object-super@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" + integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" - "@babel/helper-replace-supers" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.17.12.tgz#eb467cd9586ff5ff115a9880d6fdbd4a846b7766" - integrity sha512-6qW4rWo1cyCdq1FkYri7AHpauchbGLXpdwnYsfxFb+KtddHENfsY5JZb35xUwkK5opOLcJ3BNd2l7PhRYGlwIA== +"@babel/plugin-transform-parameters@^7.18.6": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" + integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-property-literals@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz#2dadac85155436f22c696c4827730e0fe1057a55" - integrity sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw== +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" + integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-regenerator@^7.18.0": - version "7.18.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.0.tgz#44274d655eb3f1af3f3a574ba819d3f48caf99d5" - integrity sha512-C8YdRw9uzx25HSIzwA7EM7YP0FhCe5wNvJbZzjVNHHPGVcDJ3Aie+qGYYdS1oVQgn+B3eAIJbWFLrJ4Jipv7nw== +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" + integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" regenerator-transform "^0.15.0" -"@babel/plugin-transform-reserved-words@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.17.12.tgz#7dbd349f3cdffba751e817cf40ca1386732f652f" - integrity sha512-1KYqwbJV3Co03NIi14uEHW8P50Md6KqFgt0FfpHdK6oyAHQVTosgPuPSiWud1HX0oYJ1hGRRlk0fP87jFpqXZA== +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" + integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-shorthand-properties@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz#e8549ae4afcf8382f711794c0c7b6b934c5fbd2a" - integrity sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg== +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" + integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.17.12.tgz#c112cad3064299f03ea32afed1d659223935d1f5" - integrity sha512-9pgmuQAtFi3lpNUstvG9nGfk9DkrdmWNp9KeKPFmuZCpEnxRzYlS8JgwPjYj+1AWDOSvoGN0H30p1cBOmT/Svg== +"@babel/plugin-transform-spread@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" + integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-skip-transparent-expression-wrappers" "^7.16.0" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" -"@babel/plugin-transform-sticky-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz#c84741d4f4a38072b9a1e2e3fd56d359552e8660" - integrity sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw== +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" + integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.18.2": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.2.tgz#31ed6915721864847c48b656281d0098ea1add28" - integrity sha512-/cmuBVw9sZBGZVOMkpAEaVLwm4JmK2GZ1dFKOGGpMzEHWFmyZZ59lUU0PdRr8YNYeQdNzTDwuxP2X2gzydTc9g== +"@babel/plugin-transform-template-literals@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" + integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-typeof-symbol@^7.17.12": - version "7.17.12" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.17.12.tgz#0f12f57ac35e98b35b4ed34829948d42bd0e6889" - integrity sha512-Q8y+Jp7ZdtSPXCThB6zjQ74N3lj0f6TDh1Hnf5B+sYlzQ8i5Pjp8gW0My79iekSpT4WnI06blqP6DT0OmaXXmw== +"@babel/plugin-transform-typeof-symbol@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" + integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== dependencies: - "@babel/helper-plugin-utils" "^7.17.12" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-unicode-escapes@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz#da8717de7b3287a2c6d659750c964f302b31ece3" - integrity sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q== +"@babel/plugin-transform-unicode-escapes@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz#0d01fb7fb2243ae1c033f65f6e3b4be78db75f27" + integrity sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw== dependencies: - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-unicode-regex@^7.16.7": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz#0f7aa4a501198976e25e82702574c34cfebe9ef2" - integrity sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q== +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" + integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.16.7" - "@babel/helper-plugin-utils" "^7.16.7" + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.11.0": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.2.tgz#f47d3000a098617926e674c945d95a28cb90977a" - integrity sha512-PfpdxotV6afmXMU47S08F9ZKIm2bJIQ0YbAAtDfIENX7G1NUAXigLREh69CWDjtgUy7dYn7bsMzkgdtAlmS68Q== - dependencies: - "@babel/compat-data" "^7.17.10" - "@babel/helper-compilation-targets" "^7.18.2" - "@babel/helper-plugin-utils" "^7.17.12" - "@babel/helper-validator-option" "^7.16.7" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.17.12" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-async-generator-functions" "^7.17.12" - "@babel/plugin-proposal-class-properties" "^7.17.12" - "@babel/plugin-proposal-class-static-block" "^7.18.0" - "@babel/plugin-proposal-dynamic-import" "^7.16.7" - "@babel/plugin-proposal-export-namespace-from" "^7.17.12" - "@babel/plugin-proposal-json-strings" "^7.17.12" - "@babel/plugin-proposal-logical-assignment-operators" "^7.17.12" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.17.12" - "@babel/plugin-proposal-numeric-separator" "^7.16.7" - "@babel/plugin-proposal-object-rest-spread" "^7.18.0" - "@babel/plugin-proposal-optional-catch-binding" "^7.16.7" - "@babel/plugin-proposal-optional-chaining" "^7.17.12" - "@babel/plugin-proposal-private-methods" "^7.17.12" - "@babel/plugin-proposal-private-property-in-object" "^7.17.12" - "@babel/plugin-proposal-unicode-property-regex" "^7.17.12" + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" + integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== + dependencies: + "@babel/compat-data" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-async-generator-functions" "^7.18.6" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.6" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.6" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" "@babel/plugin-syntax-class-static-block" "^7.14.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.17.12" + "@babel/plugin-syntax-import-assertions" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -840,43 +842,43 @@ "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.17.12" - "@babel/plugin-transform-async-to-generator" "^7.17.12" - "@babel/plugin-transform-block-scoped-functions" "^7.16.7" - "@babel/plugin-transform-block-scoping" "^7.17.12" - "@babel/plugin-transform-classes" "^7.17.12" - "@babel/plugin-transform-computed-properties" "^7.17.12" - "@babel/plugin-transform-destructuring" "^7.18.0" - "@babel/plugin-transform-dotall-regex" "^7.16.7" - "@babel/plugin-transform-duplicate-keys" "^7.17.12" - "@babel/plugin-transform-exponentiation-operator" "^7.16.7" - "@babel/plugin-transform-for-of" "^7.18.1" - "@babel/plugin-transform-function-name" "^7.16.7" - "@babel/plugin-transform-literals" "^7.17.12" - "@babel/plugin-transform-member-expression-literals" "^7.16.7" - "@babel/plugin-transform-modules-amd" "^7.18.0" - "@babel/plugin-transform-modules-commonjs" "^7.18.2" - "@babel/plugin-transform-modules-systemjs" "^7.18.0" - "@babel/plugin-transform-modules-umd" "^7.18.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.17.12" - "@babel/plugin-transform-new-target" "^7.17.12" - "@babel/plugin-transform-object-super" "^7.16.7" - "@babel/plugin-transform-parameters" "^7.17.12" - "@babel/plugin-transform-property-literals" "^7.16.7" - "@babel/plugin-transform-regenerator" "^7.18.0" - "@babel/plugin-transform-reserved-words" "^7.17.12" - "@babel/plugin-transform-shorthand-properties" "^7.16.7" - "@babel/plugin-transform-spread" "^7.17.12" - "@babel/plugin-transform-sticky-regex" "^7.16.7" - "@babel/plugin-transform-template-literals" "^7.18.2" - "@babel/plugin-transform-typeof-symbol" "^7.17.12" - "@babel/plugin-transform-unicode-escapes" "^7.16.7" - "@babel/plugin-transform-unicode-regex" "^7.16.7" + "@babel/plugin-transform-arrow-functions" "^7.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.6" + "@babel/plugin-transform-classes" "^7.18.6" + "@babel/plugin-transform-computed-properties" "^7.18.6" + "@babel/plugin-transform-destructuring" "^7.18.6" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.6" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.6" + "@babel/plugin-transform-function-name" "^7.18.6" + "@babel/plugin-transform-literals" "^7.18.6" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.6" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.6" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.6" + "@babel/plugin-transform-typeof-symbol" "^7.18.6" + "@babel/plugin-transform-unicode-escapes" "^7.18.6" + "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.2" - babel-plugin-polyfill-corejs2 "^0.3.0" - babel-plugin-polyfill-corejs3 "^0.5.0" - babel-plugin-polyfill-regenerator "^0.3.0" + "@babel/types" "^7.18.6" + babel-plugin-polyfill-corejs2 "^0.3.1" + babel-plugin-polyfill-corejs3 "^0.5.2" + babel-plugin-polyfill-regenerator "^0.3.1" core-js-compat "^3.22.1" semver "^6.3.0" @@ -892,51 +894,51 @@ esutils "^2.0.2" "@babel/runtime-corejs3@^7.10.2": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.3.tgz#52f0241a31e0ec61a6187530af6227c2846bd60c" - integrity sha512-l4ddFwrc9rnR+EJsHsh+TJ4A35YqQz/UqcjtlX2ov53hlJYG5CxtQmNZxyajwDVmCxwy++rtvGU5HazCK4W41Q== + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.6.tgz#6f02c5536911f4b445946a2179554b95c8838635" + integrity sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.16.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.18.3" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.3.tgz#c7b654b57f6f63cf7f8b418ac9ca04408c4579f4" - integrity sha512-38Y8f7YUhce/K7RMwTp7m0uCumpv9hZkitCbBClqQIow1qSbCvGkcegKOXpEWCQLfWmevgRiWokZ1GkpfhbZug== +"@babel/runtime@^7.10.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" + integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== dependencies: regenerator-runtime "^0.13.4" -"@babel/template@^7.16.7", "@babel/template@^7.3.3": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" - integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/parser" "^7.16.7" - "@babel/types" "^7.16.7" - -"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.8", "@babel/traverse@^7.18.0", "@babel/traverse@^7.18.2", "@babel/traverse@^7.18.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.18.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.5.tgz#94a8195ad9642801837988ab77f36e992d9a20cd" - integrity sha512-aKXj1KT66sBj0vVzk6rEeAO6Z9aiiQ68wfDgge3nHhA/my6xMM/7HGQUNumKZaoa2qUPQ5whJG9aAifsxUKfLA== - dependencies: - "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.18.2" - "@babel/helper-environment-visitor" "^7.18.2" - "@babel/helper-function-name" "^7.17.9" - "@babel/helper-hoist-variables" "^7.16.7" - "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.18.5" - "@babel/types" "^7.18.4" +"@babel/template@^7.18.6", "@babel/template@^7.3.3": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" + integrity sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.6" + "@babel/types" "^7.18.6" + +"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.8", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.8.tgz#f095e62ab46abf1da35e5a2011f43aee72d8d5b0" + integrity sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.7" + "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-function-name" "^7.18.6" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.8" + "@babel/types" "^7.18.8" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.18.0", "@babel/types@^7.18.2", "@babel/types@^7.18.4", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.18.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.4.tgz#27eae9b9fd18e9dccc3f9d6ad051336f307be354" - integrity sha512-ThN1mBcMq5pG/Vm2IcBmPPfyPXbd8S02rS+OBIDENdufvqC7Z/jHPCv9IcP01277aKtDI8g/2XysBN4hA8niiw== +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.7", "@babel/types@^7.18.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.18.8" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.8.tgz#c5af199951bf41ba4a6a9a6d0d8ad722b30cd42f" + integrity sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw== dependencies: - "@babel/helper-validator-identifier" "^7.16.7" + "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -958,7 +960,7 @@ dependencies: "@jridgewell/trace-mapping" "0.3.9" -"@discoveryjs/json-ext@^0.5.5": +"@discoveryjs/json-ext@^0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== @@ -1037,14 +1039,14 @@ patch-package "^6.2.2" postinstall-postinstall "^2.1.0" -"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2": - version "3.6.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.2.tgz#63d1e26d0b7a7a3684fce920de6ebabec1e5b674" - integrity sha512-mOqYWwMlAZpYUEOEqt7EfMFuVL2eyLqWWIzcf4odn6QgXY8jBI2NhVuJncrMCKeMZrsJAe7/auaRRB6YcdH+Qw== +"@ethereumjs/block@^3.5.0", "@ethereumjs/block@^3.6.2", "@ethereumjs/block@^3.6.3": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/block/-/block-3.6.3.tgz#d96cbd7af38b92ebb3424223dbf773f5ccd27f84" + integrity sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg== dependencies: - "@ethereumjs/common" "^2.6.3" - "@ethereumjs/tx" "^3.5.1" - ethereumjs-util "^7.1.4" + "@ethereumjs/common" "^2.6.5" + "@ethereumjs/tx" "^3.5.2" + ethereumjs-util "^7.1.5" merkle-patricia-tree "^4.2.4" "@ethereumjs/blockchain@^5.5.2", "@ethereumjs/blockchain@^5.5.3": @@ -1061,13 +1063,13 @@ lru-cache "^5.1.1" semaphore-async-await "^1.5.1" -"@ethereumjs/common@^2.6.3", "@ethereumjs/common@^2.6.4": - version "2.6.4" - resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.4.tgz#1b3cdd3aa4ee3b0ca366756fc35e4a03022a01cc" - integrity sha512-RDJh/R/EAr+B7ZRg5LfJ0BIpf/1LydFgYdvZEuTraojCbVypO2sQ+QnpP5u2wJf9DASyooKqu8O4FJEWUV6NXw== +"@ethereumjs/common@^2.6.4", "@ethereumjs/common@^2.6.5": + version "2.6.5" + resolved "https://registry.yarnpkg.com/@ethereumjs/common/-/common-2.6.5.tgz#0a75a22a046272579d91919cb12d84f2756e8d30" + integrity sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA== dependencies: crc-32 "^1.2.0" - ethereumjs-util "^7.1.4" + ethereumjs-util "^7.1.5" "@ethereumjs/ethash@^1.1.0": version "1.1.0" @@ -1089,13 +1091,13 @@ ethereumjs-util "^7.1.5" "@ethereumjs/vm@^5.9.0": - version "5.9.2" - resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.2.tgz#e707976d507793096e449a87f0b204f614421cee" - integrity sha512-6zvH7iuMI7+74aGak6j9+GDYpV2T08vy2FL4iSK1PId7lNyjFELCAzDCSTQcVoyPoRMkZvRHy79W+djwvguMCA== + version "5.9.3" + resolved "https://registry.yarnpkg.com/@ethereumjs/vm/-/vm-5.9.3.tgz#6d69202e4c132a4a1e1628ac246e92062e230823" + integrity sha512-Ha04TeF8goEglr8eL7hkkYyjhzdZS0PsoRURzYlTF6I0VVId5KjKb0N7MrA8GMgheN+UeTncfTgYx52D/WhEmg== dependencies: - "@ethereumjs/block" "^3.6.2" + "@ethereumjs/block" "^3.6.3" "@ethereumjs/blockchain" "^5.5.3" - "@ethereumjs/common" "^2.6.4" + "@ethereumjs/common" "^2.6.5" "@ethereumjs/tx" "^3.5.2" async-eventemitter "^0.2.4" core-js-pure "^3.0.1" @@ -1686,24 +1688,24 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz#cf92a983c83466b8c0ce9124fadeaf09f7c66ea9" - integrity sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg== +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" + integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== dependencies: - "@jridgewell/set-array" "^1.0.0" + "@jridgewell/set-array" "^1.0.1" "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/resolve-uri@^3.0.3": - version "3.0.7" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.7.tgz#30cd49820a962aff48c8fffc5cd760151fca61fe" - integrity sha512-8cXDaBBHOr2pQ7j77Y6Vp5VDT2sIqWyWQ56TjEq4ih/a4iST3dItRe8Q9fp0rrIl9DoKhWQtUQz/YpOxLkXbNA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" + integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== -"@jridgewell/set-array@^1.0.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.1.tgz#36a6acc93987adcf0ba50c66908bd0b70de8afea" - integrity sha512-Ct5MqZkLGEXTVmQYbGtx9SVqD2fqwvdubdps5D3djjAkgkKwT918VNOz65pEHFaYTeWcukmJmH5SwsA9Tn2ObQ== +"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== "@jridgewell/source-map@^0.3.2": version "0.3.2" @@ -1714,9 +1716,9 @@ "@jridgewell/trace-mapping" "^0.3.9" "@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.13" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.13.tgz#b6461fb0c2964356c469e115f504c95ad97ab88c" - integrity sha512-GryiOJmNcWbovBxTfZSF71V/mXbgcV3MewDe3kIMCLyIh5e7SKAeUZs+rMnJ8jkMolZ/4/VsdBmMrw3l+VdZ3w== + version "1.4.14" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" + integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" @@ -1727,9 +1729,9 @@ "@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" - integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + version "0.3.14" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" + integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" @@ -1745,26 +1747,26 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@microsoft/api-extractor-model@7.18.2", "@microsoft/api-extractor-model@^7.0.28": - version "7.18.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.18.2.tgz#def74be8bc785beb9a6f52a0a4c0b9f8f782e587" - integrity sha512-m7MCvJrudnWyE4iuRhdmgJTdTkYLw+yN/XUp3y9sxicu5/mNdg8y4pflaM82ZbLakhfGreMlB/XgjvyGbLHwkA== +"@microsoft/api-extractor-model@7.21.0", "@microsoft/api-extractor-model@^7.0.28": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.21.0.tgz#2138682e738a14038d40165ec77362e69853f200" + integrity sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ== dependencies: "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.7" + "@rushstack/node-core-library" "3.49.0" "@microsoft/api-extractor@^7.22.2": - version "7.25.2" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.25.2.tgz#365639ad7409dcc1ccdfdd9ba35db99592a41531" - integrity sha512-ITuiZqMszZE38dGqavkFFIAW/GQGfkk8ahgBqVj3j1qD4wioPTRlSidhQDCezExAhrMt/bTkuZ3woLeR0uiSsg== + version "7.28.4" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.28.4.tgz#8e67a69edb4937beda516d42d4f325e6e1258445" + integrity sha512-7JeROBGYTUt4/4HPnpMscsQgLzX0OfGTQR2qOQzzh3kdkMyxmiv2mzpuhoMnwbubb1GvPcyFm+NguoqOqkCVaw== dependencies: - "@microsoft/api-extractor-model" "7.18.2" + "@microsoft/api-extractor-model" "7.21.0" "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" - "@rushstack/node-core-library" "3.45.7" - "@rushstack/rig-package" "0.3.12" - "@rushstack/ts-command-line" "4.11.1" + "@rushstack/node-core-library" "3.49.0" + "@rushstack/rig-package" "0.3.13" + "@rushstack/ts-command-line" "4.12.1" colors "~1.2.1" lodash "~4.17.15" resolve "~1.17.0" @@ -1792,6 +1794,21 @@ resolved "https://registry.yarnpkg.com/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz#30728e34ebc90351dd3aff4e18d038eed2c3e098" integrity sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg== +"@noble/hashes@1.1.2", "@noble/hashes@~1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" + integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== + +"@noble/secp256k1@1.6.2": + version "1.6.2" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.2.tgz#ee040d2a290febc2342f39790b0e40723fd8dcb8" + integrity sha512-4AmNQqf+ysJx67kw3SMiPQl/JMjGB97dRGvAmwEu7txbY8B8FAHanQ0V9+i2b1ti+uQt5Cs9OByeDrFOaN1kjw== + +"@noble/secp256k1@~1.6.0": + version "1.6.3" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" + integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -1814,9 +1831,9 @@ fastq "^1.6.0" "@nomiclabs/hardhat-ethers@^2.0.3": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.6.tgz#1c695263d5b46a375dcda48c248c4fba9dfe2fc2" - integrity sha512-q2Cjp20IB48rEn2NPjR1qxsIQBvFVYW9rFRCFq+bC4RUrn1Ljz3g4wM8uSlgIBZYBi2JMXxmOzFqHraczxq4Ng== + version "2.1.0" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.1.0.tgz#9b7dc94d669ad9dc286b94f6f2f1513118c7027b" + integrity sha512-vlW90etB3675QWG7tMrHaDoTa7ymMB7irM4DAQ98g8zJoe9YqEggeDnbO6v5b+BLth/ty4vN6Ko/kaqRN1krHw== "@nomiclabs/hardhat-waffle@^2.0.1": version "2.0.3" @@ -1904,14 +1921,14 @@ tslib "^2.3.1" "@openzeppelin/contracts-upgradeable@^4.4.1": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.6.0.tgz#1bf55f230f008554d4c6fe25eb165b85112108b0" - integrity sha512-5OnVuO4HlkjSCJO165a4i2Pu1zQGzMs//o54LPrwUgxvEO2P3ax1QuaSI0cEHHTveA77guS0PnNugpR2JMsPfA== + version "4.7.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.0.tgz#6437261286879d353f6de7bf3ac8216bef8a486d" + integrity sha512-wO3PyoAaAV/rA77cK8H4c3SbO98QylTjfiFxyvURUZKTFLV180rnAvna1x7/Nxvt0Gqv+jt1sXKC7ygxsq8iCw== "@openzeppelin/contracts@^4.3.3": - version "4.6.0" - resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.6.0.tgz#c91cf64bc27f573836dba4122758b4743418c1b3" - integrity sha512-8vi4d50NNya/bQqCmaVzvHNmwHvS0OBKb7HNtuNwEE3scXWrP31fKQoGxNMT+KbzmrNZzatE3QK5p2gFONI/hg== + version "4.7.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.0.tgz#3092d70ea60e3d1835466266b1d68ad47035a2d5" + integrity sha512-52Qb+A1DdOss8QvJrijYYPSf32GUg2pGaG/yCxtaA3cu4jduouTdg4XZSMLW9op54m1jH7J8hoajhHKOPsoJFw== "@princjef/api-documenter@^1.0.2": version "1.0.2" @@ -2018,10 +2035,10 @@ estree-walker "^1.0.1" picomatch "^2.2.2" -"@rushstack/node-core-library@3.45.7": - version "3.45.7" - resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.45.7.tgz#e959820a6db067c278c20df51503e2bc422e9349" - integrity sha512-DHfOvgPrm9X4uILlUfGgiqcobe5QGNDmqqYLM8dJ5M5fqQ9H5GwyUwBnFeRsxBo0b75RE83l41Oze+gdHKvKaA== +"@rushstack/node-core-library@3.49.0": + version "3.49.0" + resolved "https://registry.yarnpkg.com/@rushstack/node-core-library/-/node-core-library-3.49.0.tgz#0324c1a5ba5e469967b70e9718d1a90750648503" + integrity sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw== dependencies: "@types/node" "12.20.24" colors "~1.2.1" @@ -2033,24 +2050,46 @@ timsort "~0.3.0" z-schema "~5.0.2" -"@rushstack/rig-package@0.3.12": - version "0.3.12" - resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.12.tgz#6bf2d45374ba665902bf31ec0c6e5dad55ba1b73" - integrity sha512-ZzxuBWG0wbOtI+9IHYvOsr3QN52GtxTWpcaHMsQ/PC9us2ve/k0xK0XOMu+CtStyHSnBG2nDdnF9vFv9HMYOZg== +"@rushstack/rig-package@0.3.13": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@rushstack/rig-package/-/rig-package-0.3.13.tgz#80d7b34bc9b7a7feeba133f317df8dbd1f65a822" + integrity sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA== dependencies: resolve "~1.17.0" strip-json-comments "~3.1.1" -"@rushstack/ts-command-line@4.11.1": - version "4.11.1" - resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.11.1.tgz#10b80960ddaed685445289807c75743e4ef0b5e9" - integrity sha512-Xo8LaQOXlNSfp+qIuIPb1tfX7b4H21ksqiMo/HbeZI5AX1klHMqKjWcEs0AqgE9huvQj6cvnCla8Eq/GDcwMIg== +"@rushstack/ts-command-line@4.12.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@rushstack/ts-command-line/-/ts-command-line-4.12.1.tgz#4437ffae6459eb88791625ad9e89b2f0ba254476" + integrity sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ== dependencies: "@types/argparse" "1.0.38" argparse "~1.0.9" colors "~1.2.1" string-argv "~0.3.1" +"@scure/base@~1.1.0": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" + integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== + +"@scure/bip32@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.0.tgz#dea45875e7fbc720c2b4560325f1cf5d2246d95b" + integrity sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q== + dependencies: + "@noble/hashes" "~1.1.1" + "@noble/secp256k1" "~1.6.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.0.tgz#92f11d095bae025f166bef3defcc5bf4945d419a" + integrity sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w== + dependencies: + "@noble/hashes" "~1.1.1" + "@scure/base" "~1.1.0" + "@sentry/core@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" @@ -2167,10 +2206,10 @@ style-loader "^3.3.1" webpack "^5.61.0" -"@solidity-parser/parser@^0.14.1": - version "0.14.2" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.2.tgz#2d8f2bddb217621df882ceeae7d7b42ae8664db3" - integrity sha512-10cr0s+MtRtqjEw0WFJrm2rwULN30xx7btd/v9cmqME2617/2M5MbHDkFIGIGTa7lwNw4bN9mVGfhlLzrYw8pA== +"@solidity-parser/parser@^0.14.2": + version "0.14.3" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.3.tgz#0d627427b35a40d8521aaa933cc3df7d07bfa36f" + integrity sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw== dependencies: antlr4ts "^0.5.0-alpha.4" @@ -2179,129 +2218,129 @@ resolved "https://registry.yarnpkg.com/@statoscope/extensions/-/extensions-5.14.1.tgz#b7c32b39de447da76b9fa2daada61b2f699754e6" integrity sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw== -"@statoscope/helpers@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.19.0.tgz#02f8101643a0fd9b706eb59eafac4448c7d97db9" - integrity sha512-EFD7XqZZxtZJZlaWznAYIOrqECYHqobXxa0EADtn/mIToUrsL9g/bnkBMl28KX6zy07QcDt9gLmp5s+5GDJCoQ== +"@statoscope/helpers@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.22.0.tgz#e5121f003ee3ba0f5771961f31e278d4f9456434" + integrity sha512-hRDbkwJdnKkN79RBbBkZuPNksywtPEEI1WfECXaDE6Fv1qLjacMLC7L1uGeraDXDvzB3Jedjq8fesLEF8Z3cVw== dependencies: "@types/archy" "^0.0.32" - "@types/semver" "^7.3.6" + "@types/semver" "^7.3.10" archy "~1.0.0" - jora "^1.0.0-beta.5" - semver "^7.3.5" + jora "^1.0.0-beta.6" + semver "^7.3.7" -"@statoscope/report-writer@5.20.0": - version "5.20.0" - resolved "https://registry.yarnpkg.com/@statoscope/report-writer/-/report-writer-5.20.0.tgz#18329ca8b194660087cdd2cbd996883a845be5d4" - integrity sha512-/QwHWzRoOCpcJkZYoTb1kuMaLoDxJpo/VteSNbhOOyCwK/74oAPAsSgbGz52T6bHAn6zkMqrSEJFJMVbYeWAJw== +"@statoscope/report-writer@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/report-writer/-/report-writer-5.22.0.tgz#40accefd4b34b7b8d7c2890d943ff4eee013fb2e" + integrity sha512-oEIlfsMSwBM8PcHnHDwhgMz5fyDgu10oAVFwuQSJFBUXMwaZ/46ewr1kfAcUNc8CkOIolhO6EIo/e0ZjcVCR1g== dependencies: - "@discoveryjs/json-ext" "^0.5.5" + "@discoveryjs/json-ext" "^0.5.7" -"@statoscope/stats-extension-compressed@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.19.0.tgz#1a5b22416db344b9e7f5cc2ddbb08ec2c57436e8" - integrity sha512-CVV6dDi0vo5wDzXOuTmwydeHyjE/i56TUfA+S3llVLsxasMc6udtkLBKUfCQkbAUTJlYJcY8yUR6fH7SfiqOZw== +"@statoscope/stats-extension-compressed@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.22.0.tgz#38b96e780c99c417b8b96c7624a56014b16bb094" + integrity sha512-ICyNuow4crTW2ZSRvyP07ZbZpFWs66fUL6bTbt80GmX1bYaamAOkvJpD+sbCj3Pv9Ohd6ORVf4tRka2kyUU97Q== dependencies: - "@statoscope/helpers" "5.19.0" + "@statoscope/helpers" "5.22.0" gzip-size "^6.0.0" -"@statoscope/stats-extension-custom-reports@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.19.0.tgz#6d7be7000f8c50a84c75044d466ac21aba0f3cce" - integrity sha512-RoOyVPZSYsk1MF/yvryuD0mNlc88OCSyr32EXTpqxlK1w0w/7SxxLtDHpSbKoMxdMrYHxvi32apjoNh03BsD+Q== +"@statoscope/stats-extension-custom-reports@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.22.0.tgz#a6829a086e1066a83b00260969fc8ac091e12dcf" + integrity sha512-uW8puzbIr42nFyrT1eooytZrOCL37dV2yW1+7tJfPPvvrBktHqimKhjQxgRzRInqwbLKdJ+XuZgKKhOFZguCxg== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.19.0" + "@statoscope/helpers" "5.22.0" "@statoscope/stats" "5.14.1" - "@statoscope/types" "5.14.1" + "@statoscope/types" "5.22.0" -"@statoscope/stats-extension-package-info@5.19.3": - version "5.19.3" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.19.3.tgz#9ec60dc8e36ac6f23a0a9a9e0fbc813d6354f07f" - integrity sha512-KUvzAkNiw1vNUY2i5IoSVnf6pIyiK3BWHOkmw94SCPWA+BXizwGbGIn6qyW/A4BI1icZvnuE4Gcrtyg0zML0KA== +"@statoscope/stats-extension-package-info@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.22.0.tgz#0c36ad08fdbd071e9cc1e90378f4cfb8e7c129f5" + integrity sha512-9eSssD9J5uNXpBY2t6Qn2EYokxsqkbYy0cQGk6vBmxRrUQld34FPsZklmIwKB1sHY4Us85Up0wDcYxbu96cTsQ== dependencies: - "@statoscope/helpers" "5.19.0" + "@statoscope/helpers" "5.22.0" -"@statoscope/stats-extension-stats-validation-result@5.19.0": - version "5.19.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.19.0.tgz#ab430fe1c64272f3a7fed3585c7d404bac5fb0de" - integrity sha512-9pNmSooDvhUNF5OJyOrmiKjEo+WaCKZhjmZX592uX653JeKr1xTwDxjSWgWyPKkkeyvMHw2T2CjB+WM8Rd/FmA== +"@statoscope/stats-extension-stats-validation-result@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.22.0.tgz#549fa1c3e7e142a1bb91a6be4881c5f8f4590896" + integrity sha512-6EJc7QBTezZmpYlp7a23WZy2GitI4DDy22qPVamP++2pkNk4VFM2VV2to5e+VQwTKJcOwAWwgQ9XSQJwDmFcxQ== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.19.0" + "@statoscope/helpers" "5.22.0" "@statoscope/stats" "5.14.1" - "@statoscope/types" "5.14.1" + "@statoscope/types" "5.22.0" "@statoscope/stats@5.14.1": version "5.14.1" resolved "https://registry.yarnpkg.com/@statoscope/stats/-/stats-5.14.1.tgz#728656629bc06aa4bf5634398662ac05287793d5" integrity sha512-Kz7kCKuT6DXaqAPfyTwp27xHMDUna9o6UlRSQXXBZ8Yyk7eYYvTNw+5ffRyqivL9IOzD7FQYDQ6VUBHh0UfyDw== -"@statoscope/types@5.14.1": - version "5.14.1" - resolved "https://registry.yarnpkg.com/@statoscope/types/-/types-5.14.1.tgz#4cc3da44f6a63d4318c50a75efe89f97d512ac8b" - integrity sha512-vIo7aq2E71AC3y3mdnZqA5aupYUaEIHuPD2gUG0bAA8zTXH7YICk7nRkuxx7xnCBhTZTXAgvtF8hgQ35K4N8oQ== +"@statoscope/types@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/types/-/types-5.22.0.tgz#2b5ccf134504294b9e365374e83625c20851df2b" + integrity sha512-FHgunU7M95v7c71pvQ2nr8bWy1QcTDOHSnkoFQErORH9RmxlK9oRkoWrO8BJpnxa55m/9ZHjFVmpLF4SsVGHoA== dependencies: "@statoscope/stats" "5.14.1" -"@statoscope/webpack-model@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.20.1.tgz#b749d75ab179cdd0933e9022a426766e1070659c" - integrity sha512-3I8fccxQiikQqoLq9K0A/qLedNehGwifpcJtXGC8YuIXJVAGU1BVudjBSveqgaVyiSdw3RKJB9TU6lsf6BGoQw== +"@statoscope/webpack-model@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.22.0.tgz#247b6e3cc6a48a3c931f2f77ae160b5ba24f090a" + integrity sha512-9e2UM5WoyhynuBQ84iTcA83h8Y5e8LF1y8rRiysjoMpt3dLNH25mUbUWY1KgGqu809l22cgYScnkoiYPw7POQA== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.19.0" + "@statoscope/helpers" "5.22.0" "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.19.0" - "@statoscope/stats-extension-custom-reports" "5.19.0" - "@statoscope/stats-extension-package-info" "5.19.3" - "@statoscope/stats-extension-stats-validation-result" "5.19.0" - "@statoscope/types" "5.14.1" - ajv "^8.6.3" + "@statoscope/stats-extension-compressed" "5.22.0" + "@statoscope/stats-extension-custom-reports" "5.22.0" + "@statoscope/stats-extension-package-info" "5.22.0" + "@statoscope/stats-extension-stats-validation-result" "5.22.0" + "@statoscope/types" "5.22.0" + ajv "^8.11.0" md5 "^2.3.0" "@statoscope/webpack-plugin@^5.17.0": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.20.1.tgz#4e967087265b1db08c5b5e93364930cf83a464c5" - integrity sha512-H4RsRnsEPnbKtC3/OuvhFzAolw8TwKOw0RVso8brlh2a5WLddWikFGUl1/KRQqKB45R3q1e4rnTPe+MVAVwAVA== + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.22.0.tgz#82ac4bb486298a6e7ee062a2df7510c362a6e80d" + integrity sha512-KXsWr9vGNQqYA1iKSJPqxHffQqFY6TXLHNNdjb0+KI3Yo4sbXbTF2NgJybtE8a1Eli3Z/QZVL9ZqPVBdi769Rw== dependencies: - "@discoveryjs/json-ext" "^0.5.5" - "@statoscope/report-writer" "5.20.0" + "@discoveryjs/json-ext" "^0.5.7" + "@statoscope/report-writer" "5.22.0" "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.19.0" - "@statoscope/stats-extension-custom-reports" "5.19.0" - "@statoscope/types" "5.14.1" - "@statoscope/webpack-model" "5.20.1" - "@statoscope/webpack-stats-extension-compressed" "5.20.1" - "@statoscope/webpack-stats-extension-package-info" "5.20.1" - "@statoscope/webpack-ui" "5.20.1" - open "^8.2.1" - -"@statoscope/webpack-stats-extension-compressed@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.20.1.tgz#e5929e1ebf1687baff15957d4dd0154c578b5017" - integrity sha512-UpvC2sKzFDBgetoyF4D8EyUqoPNHwIlUSewRwyqA0pdUYgNPNv8jGdNeLSLBDP7DORXaWDu1cFAf2Feal+d4OQ== + "@statoscope/stats-extension-compressed" "5.22.0" + "@statoscope/stats-extension-custom-reports" "5.22.0" + "@statoscope/types" "5.22.0" + "@statoscope/webpack-model" "5.22.0" + "@statoscope/webpack-stats-extension-compressed" "5.22.0" + "@statoscope/webpack-stats-extension-package-info" "5.22.0" + "@statoscope/webpack-ui" "5.22.0" + open "^8.4.0" + +"@statoscope/webpack-stats-extension-compressed@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.22.0.tgz#217914af61afaa98a22414e878666aa4bc27556c" + integrity sha512-C6K7u+Teg+4XaIx46lazpZJeVamXjlU3N0PWjbi5GS+UM+Pg/kTUmr8r2Kj7FHmKUhQO90HuXY+GOlcu6CMCMw== dependencies: "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.19.0" - "@statoscope/webpack-model" "5.20.1" + "@statoscope/stats-extension-compressed" "5.22.0" + "@statoscope/webpack-model" "5.22.0" -"@statoscope/webpack-stats-extension-package-info@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.20.1.tgz#6f69f21328994b23437b5d76f082fc246daeb385" - integrity sha512-pHGEe1vgyaOk5U9QRpHyRLgV+Ju8SnvPxHGl1BSsle1YJv7ksW6gkatEN95ySaPFcVGp+YOMacjAf1mHQ+0I/g== +"@statoscope/webpack-stats-extension-package-info@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.22.0.tgz#107595f91f3f5fcd8a9e8b84ea07a74a73dd9f52" + integrity sha512-HNgcbWOl+Y26LzC1FhS6qb/B97fSKovqwQC9qf7VJuE8qHHUtGgqfNubi+RutIpkyuL5/lmdXJaRXi1QUPA70A== dependencies: "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-package-info" "5.19.3" - "@statoscope/webpack-model" "5.20.1" + "@statoscope/stats-extension-package-info" "5.22.0" + "@statoscope/webpack-model" "5.22.0" -"@statoscope/webpack-ui@5.20.1": - version "5.20.1" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.20.1.tgz#b8e596a6725c826a1be86e3af2d029611fb68284" - integrity sha512-C/6yOuYYdaHEe3BWUavkJAu8BoXLiRzRxq01z1FolT6V3btr2ILnCHdhNOtkIJt5wbTFnmtxCbMsx4RK49gq2g== +"@statoscope/webpack-ui@5.22.0": + version "5.22.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.22.0.tgz#2f7d857be3581e3fd9d57cc384e54c929856220f" + integrity sha512-UGABlETD/gZ6/2ONuSL7CZ/HqdEYPMcEubq+5wE6aZ+I6uxtSXJAbxukGUT8TeZqL2tMz4ZyfspbbwJmHbTfEQ== dependencies: - "@statoscope/types" "5.14.1" - highcharts "^9.2.2" + "@statoscope/types" "5.22.0" + highcharts "^9.3.3" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -2430,31 +2469,36 @@ integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== "@types/eslint-scope@^3.7.3": - version "3.7.3" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.3.tgz#125b88504b61e3c8bc6f870882003253005c3224" - integrity sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g== + version "3.7.4" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" + integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.4.3" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.3.tgz#5c92815a3838b1985c90034cd85f26f59d9d0ece" - integrity sha512-YP1S7YJRMPs+7KZKDb9G63n8YejIwW9BALq7a5j2+H4yl6iOv9CB29edho+cuFRrvmJbbaH2yiVChKLJVysDGw== + version "8.4.5" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4" + integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ== dependencies: "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*", "@types/estree@^0.0.51": - version "0.0.51" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" - integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/estree@*": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2" + integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ== "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -2547,9 +2591,9 @@ form-data "^3.0.0" "@types/node@*": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== + version "18.0.4" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.4.tgz#48aedbf35efb3af1248e4cd4d792c730290cd5d6" + integrity sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA== "@types/node@12.20.24": version "12.20.24" @@ -2562,9 +2606,9 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^16.11.11": - version "16.11.41" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.41.tgz#88eb485b1bfdb4c224d878b7832239536aa2f813" - integrity sha512-mqoYK2TnVjdkGk8qXAVGc/x9nSaTpSrFaGFm43BUH3IdoBV0nta6hYaGmdOvIMlbHJbUEVen3gvwpwovAZKNdQ== + version "16.11.44" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.44.tgz#447e3eecad9d19bd779f4a575f361d34898c0722" + integrity sha512-gwP6+QDgL5TDBIWh1lbYh3EFPU11pa+8xcamcsA3ROkp3A9X+/3Y5cRgq93VPEEE+CGfxlQnqkg1kkWGBgh3fw== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2604,7 +2648,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.3.6": +"@types/semver@^7.3.10": version "7.3.10" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.10.tgz#5f19ee40cbeff87d916eedc8c2bfe2305d957f73" integrity sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw== @@ -2618,9 +2662,9 @@ "@types/sinon" "*" "@types/sinon@*": - version "10.0.11" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.11.tgz#8245827b05d3fc57a6601bd35aee1f7ad330fc42" - integrity sha512-dmZsHlBsKUtBpHriNjlK0ndlvEh8dcb9uV9Afsbt89QIyydpC7NcR+nWlAhASfy3GHnxTl4FX/aKE7XZUt/B4g== + version "10.0.12" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.12.tgz#fb7009ea71f313a9da4644ba73b94e44d6b84f7f" + integrity sha512-uWf4QJ4oky/GckJ1MYQxU52cgVDcXwBhDkpvLbi4EKoLPqLE4MOH6T/ttM33l3hi0oZ882G6oIzWv/oupRYSxQ== dependencies: "@types/sinonjs__fake-timers" "*" @@ -2672,13 +2716,13 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^5.4.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz#6204ac33bdd05ab27c7f77960f1023951115d403" - integrity sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA== + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz#9c6017b6c1d04894141b4a87816388967f64c359" + integrity sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg== dependencies: - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/type-utils" "5.28.0" - "@typescript-eslint/utils" "5.28.0" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/type-utils" "5.30.6" + "@typescript-eslint/utils" "5.30.6" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2687,68 +2731,68 @@ tsutils "^3.21.0" "@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^5.4.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.28.0.tgz#639b101cad2bfb7ae16e69710ac95c42bd4eae33" - integrity sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA== + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.6.tgz#add440db038fa9d777e4ebdaf66da9e7fb7abe92" + integrity sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA== dependencies: - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/typescript-estree" "5.28.0" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" - integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w== +"@typescript-eslint/scope-manager@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz#ce1b49ff5ce47f55518d63dbe8fc9181ddbd1a33" + integrity sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g== dependencies: - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/visitor-keys" "5.28.0" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" -"@typescript-eslint/type-utils@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" - integrity sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ== +"@typescript-eslint/type-utils@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz#a64aa9acbe609ab77f09f53434a6af2b9685f3af" + integrity sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA== dependencies: - "@typescript-eslint/utils" "5.28.0" + "@typescript-eslint/utils" "5.30.6" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" - integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== +"@typescript-eslint/types@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.6.tgz#86369d0a7af8c67024115ac1da3e8fb2d38907e1" + integrity sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg== -"@typescript-eslint/typescript-estree@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" - integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA== +"@typescript-eslint/typescript-estree@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz#a84a0d6a486f9b54042da1de3d671a2c9f14484e" + integrity sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A== dependencies: - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/visitor-keys" "5.28.0" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" - integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g== +"@typescript-eslint/utils@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.6.tgz#1de2da14f678e7d187daa6f2e4cdb558ed0609dc" + integrity sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/typescript-estree" "5.28.0" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" - integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA== +"@typescript-eslint/visitor-keys@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz#94dd10bb481c8083378d24de1742a14b38a2678c" + integrity sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA== dependencies: - "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/types" "5.30.6" eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": @@ -3064,7 +3108,7 @@ ajv@^6.0.1, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.5.0, ajv@ json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.6.3, ajv@^8.8.0: +ajv@^8.0.0, ajv@^8.11.0, ajv@^8.8.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -3382,10 +3426,10 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^4.3.5: - version "4.4.2" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.2.tgz#dcf7fb6dea866166c3eab33d68208afe4d5f670c" - integrity sha512-LVAaGp/wkkgYJcjmHsoKx4juT1aQvJyPcW09MLCjVTh3V2cc6PnyempiLMNH5iMdfIX/zdbjUx2KDjMLCTdPeA== +axe-core@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" + integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== axobject-query@^2.2.0: version "2.2.0" @@ -3640,7 +3684,7 @@ babel-plugin-macros@^2.6.1: cosmiconfig "^6.0.0" resolve "^1.12.0" -babel-plugin-polyfill-corejs2@^0.3.0: +babel-plugin-polyfill-corejs2@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz#440f1b70ccfaabc6b676d196239b138f8a2cfba5" integrity sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w== @@ -3649,7 +3693,7 @@ babel-plugin-polyfill-corejs2@^0.3.0: "@babel/helper-define-polyfill-provider" "^0.3.1" semver "^6.1.1" -babel-plugin-polyfill-corejs3@^0.5.0: +babel-plugin-polyfill-corejs3@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz#aabe4b2fa04a6e038b688c5e55d44e78cd3a5f72" integrity sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ== @@ -3664,7 +3708,7 @@ babel-plugin-polyfill-regenerator@^0.0.4: dependencies: "@babel/helper-define-polyfill-provider" "^0.0.3" -babel-plugin-polyfill-regenerator@^0.3.0: +babel-plugin-polyfill-regenerator@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz#2c0678ea47c75c8cc2fbb1852278d8fb68233990" integrity sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A== @@ -4172,6 +4216,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" @@ -4272,16 +4323,15 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.20.4: - version "4.20.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.4.tgz#98096c9042af689ee1e0271333dbc564b8ce4477" - integrity sha512-ok1d+1WpnU24XYN7oC3QWgTyMhY/avPJ/r9T00xxvUOIparA/gc+UPUMaod3i+G6s+nI2nUb9xZ5k794uIwShw== +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.1: + version "4.21.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" + integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== dependencies: - caniuse-lite "^1.0.30001349" - electron-to-chromium "^1.4.147" - escalade "^3.1.1" - node-releases "^2.0.5" - picocolors "^1.0.0" + caniuse-lite "^1.0.30001366" + electron-to-chromium "^1.4.188" + node-releases "^2.0.6" + update-browserslist-db "^1.0.4" bs-logger@0.x: version "0.2.6" @@ -4466,10 +4516,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001349: - version "1.0.30001356" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001356.tgz#cbf5fe7b33f90962bfbca532212ea478d4ec9de8" - integrity sha512-/30854bktMLhxtjieIxsrJBfs2gTM1pel6MXKF3K+RdIVJZcsn2A2QdhsuR4/p9+R204fZw0zCBBhktX8xWuyQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001366: + version "1.0.30001366" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001366.tgz#c73352c83830a9eaf2dea0ff71fb4b9a4bbaa89c" + integrity sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA== caseless@~0.12.0: version "0.12.0" @@ -4924,17 +4974,17 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.1.tgz#23d44d9f209086e60dabf9130cea7719af6e199b" - integrity sha512-KeYrEc8t6FJsKYB2qnDwRHWaC0cJNaqlHfCpMe5q3j/W1nje3moib/txNklddLPCtGb+etcBIyJ8zuMa/LN5/A== + version "3.23.4" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.4.tgz#56ad4a352884317a15f6b04548ff7139d23b917f" + integrity sha512-RkSRPe+JYEoflcsuxJWaiMPhnZoFS51FcIxm53k4KzhISCBTmaGlto9dTIrYuk0hnJc3G6pKufAKepHnBq6B6Q== dependencies: - browserslist "^4.20.4" + browserslist "^4.21.1" semver "7.0.0" core-js-pure@^3.0.1, core-js-pure@^3.20.2: - version "3.23.1" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.1.tgz#0b27e4c3ad46178b84e790dbbb81987218ab82ad" - integrity sha512-3qNgf6TqI3U1uhuSYRzJZGfFd4T+YlbyVPl+jgRiKjdZopvG4keZQwWZDAWpu1UH9nCgTpUzIV3GFawC7cJsqg== + version "3.23.4" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.4.tgz#aba5c7fb297063444f6bf93afb0362151679a012" + integrity sha512-lizxkcgj3XDmi7TUBFe+bQ1vNpD5E4t76BrBWI3HdUxdw/Mq1VF4CkiHzIKyieECKtcODK2asJttoofEeUKICQ== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -5202,7 +5252,7 @@ d@1, d@^1.0.1: es5-ext "^0.10.50" type "^1.0.1" -damerau-levenshtein@^1.0.7: +damerau-levenshtein@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== @@ -5242,20 +5292,13 @@ debug@3.2.6: dependencies: ms "^2.1.1" -debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: +debug@4, debug@4.3.4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -5559,9 +5602,9 @@ dotignore@~0.1.2: minimatch "^3.0.4" duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA== + version "0.1.5" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== duplexer@^0.1.2: version "0.1.2" @@ -5581,10 +5624,10 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== -electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.147: - version "1.4.161" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.161.tgz#49cb5b35385bfee6cc439d0a04fbba7a7a7f08a1" - integrity sha512-sTjBRhqh6wFodzZtc5Iu8/R95OkwaPNn7tj/TaDU5nu/5EFiQDtADGAXdR4tJcTEHlYfJpHqigzJqHvPgehP8A== +electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.188: + version "1.4.189" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.189.tgz#4e5b221dc44e09e9dddc9abbc6457857dee7ba25" + integrity sha512-dQ6Zn4ll2NofGtxPXaDfY2laIa6NyCQdqXYHdwH90GJQW0LpJJib0ZU/ERtbb0XkBEmUD2eJtagbOie3pdMiPg== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -5660,9 +5703,9 @@ end-of-stream@^1.1.0: once "^1.4.0" enhanced-resolve@^5.9.3: - version "5.9.3" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" - integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow== + version "5.10.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== dependencies: graceful-fs "^4.2.4" tapable "^2.2.0" @@ -5907,22 +5950,23 @@ eslint-plugin-import@~2.14.0: resolve "^1.6.0" eslint-plugin-jsx-a11y@^6.2.3: - version "6.5.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz#cdbf2df901040ca140b6ec14715c988889c2a6d8" - integrity sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g== + version "6.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415" + integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw== dependencies: - "@babel/runtime" "^7.16.3" + "@babel/runtime" "^7.18.3" aria-query "^4.2.2" - array-includes "^3.1.4" + array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.3.5" + axe-core "^4.4.2" axobject-query "^2.2.0" - damerau-levenshtein "^1.0.7" + damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.2.1" + jsx-ast-utils "^3.3.1" language-tags "^1.0.5" - minimatch "^3.0.4" + minimatch "^3.1.2" + semver "^6.3.0" eslint-plugin-node@~7.0.1: version "7.0.1" @@ -5954,9 +5998,9 @@ eslint-plugin-react-hooks@^2.2.0: integrity sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g== eslint-plugin-react@^7.14.3: - version "7.30.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.0.tgz#8e7b1b2934b8426ac067a0febade1b13bd7064e3" - integrity sha512-RgwH7hjW48BleKsYyHK5vUAvxtE9SMPDKmcPRQgtRCYaZA0XQPt5FSkrU3nhz5ifzMZcA8opwmRJ2cmOO8tr5A== + version "7.30.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz#2be4ab23ce09b5949c6631413ba64b2810fd3e22" + integrity sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg== dependencies: array-includes "^3.1.5" array.prototype.flatmap "^1.3.0" @@ -6330,7 +6374,7 @@ ethereum-common@^0.0.18: resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.0.18.tgz#2fdc3576f232903358976eb39da783213ff9523f" integrity sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ== -ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: +ethereum-cryptography@^0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== @@ -6351,6 +6395,16 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-cryptography@^1.0.3: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.1.tgz#10d4b4d48b8caa4472c7be1b421129c601b94cb5" + integrity sha512-zp6caNCfG3S2LtSjCeZtOjfRCXNoPv16XTBzM/jOVVlWmO1m59QZdp+VpI8Org4UwPTJ/LzI/XbRHKqi4cMRVg== + dependencies: + "@noble/hashes" "1.1.2" + "@noble/secp256k1" "1.6.2" + "@scure/bip32" "1.1.0" + "@scure/bip39" "1.1.0" + ethereum-waffle@^3.4.0: version "3.4.4" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.4.4.tgz#1378b72040697857b7f5e8f473ca8f97a37b5840" @@ -7436,11 +7490,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -7462,9 +7511,9 @@ har-validator@~5.1.3: har-schema "^2.0.0" hardhat@^2.7.0: - version "2.9.9" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.9.9.tgz#05c1015eb73e0230309534b00deeb080724aace0" - integrity sha512-Qv7SXnRc0zq1kGXruNnSKpP3eFccXMR5Qv6GVX9hBIJ5efN0PflKPq92aQ5Cv3jrjJeRevLznWZVz7bttXhVfw== + version "2.10.1" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.10.1.tgz#37fdc0c96d6a5d16b322269db2ad8f9f115c4046" + integrity sha512-0FN9TyCtn7Lt25SB2ei2G7nA2rZjP+RN6MvFOm+zYwherxLZNo6RbD8nDz88eCbhRapevmXqOiL2nM8INKsjmA== dependencies: "@ethereumjs/block" "^3.6.2" "@ethereumjs/blockchain" "^5.5.2" @@ -7474,7 +7523,7 @@ hardhat@^2.7.0: "@ethersproject/abi" "^5.1.2" "@metamask/eth-sig-util" "^4.0.0" "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.14.1" + "@solidity-parser/parser" "^0.14.2" "@types/bn.js" "^5.1.0" "@types/lru-cache" "^5.1.0" abort-controller "^3.0.0" @@ -7487,7 +7536,7 @@ hardhat@^2.7.0: debug "^4.1.1" enquirer "^2.3.0" env-paths "^2.2.0" - ethereum-cryptography "^0.1.2" + ethereum-cryptography "^1.0.3" ethereumjs-abi "^0.6.8" ethereumjs-util "^7.1.4" find-up "^2.1.0" @@ -7499,7 +7548,7 @@ hardhat@^2.7.0: lodash "^4.17.11" merkle-patricia-tree "^4.2.4" mnemonist "^0.38.0" - mocha "^9.2.0" + mocha "^10.0.0" p-map "^4.0.0" qs "^6.7.0" raw-body "^2.4.1" @@ -7633,7 +7682,7 @@ heap@0.2.6: resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== -highcharts@^9.2.2: +highcharts@^9.3.3: version "9.3.3" resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-9.3.3.tgz#ae62178de788fd7934431aa26b8e250b8073c541" integrity sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg== @@ -8326,9 +8375,9 @@ istanbul-lib-source-maps@^4.0.0: source-map "^0.6.1" istanbul-reports@^3.1.3: - version "3.1.4" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.4.tgz#1b6f068ecbc6c331040aab5741991273e609e40c" - integrity sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" + integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== dependencies: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" @@ -8829,10 +8878,10 @@ jju@~1.4.0: resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== -jora@^1.0.0-beta.5: - version "1.0.0-beta.6" - resolved "https://registry.yarnpkg.com/jora/-/jora-1.0.0-beta.6.tgz#c2dfa27773421279ba0c7eed452c2fe17dba8537" - integrity sha512-2FkqL/aVGKpZAYPwaElAV8x8P34E9NfxWCNl8VjimTfiftEjRb5xohNuosUyDMg2ukdn3iXKm2I6rNF7UQKM7A== +jora@^1.0.0-beta.6: + version "1.0.0-beta.7" + resolved "https://registry.yarnpkg.com/jora/-/jora-1.0.0-beta.7.tgz#51a9208c83d3b7e66b27e3c1c1caeeb0c5c2e679" + integrity sha512-7Mq37XUPQM/fEetH8Z4iHTABWgoq64UL9mIRfssX1b0Ogns3TqbOS0UIV7gwQ3D0RshfLJzGgbbW17UyFjxSLQ== dependencies: "@discoveryjs/natural-compare" "^1.0.0" @@ -9063,12 +9112,12 @@ jsx-ast-utils@^2.0.1: array-includes "^3.1.1" object.assign "^4.1.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.0.tgz#e624f259143b9062c92b6413ff92a164c80d3ccb" - integrity sha512-XzO9luP6L0xkxwhIJMTJQpZo/eeN60K08jHdexfD569AGxeNug6UketeHXEhROoM8aR7EcUoOQmIhcJQjcuq8Q== +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" + integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== dependencies: - array-includes "^3.1.4" + array-includes "^3.1.5" object.assign "^4.1.2" keccak@3.0.1: @@ -9139,9 +9188,9 @@ kleur@^3.0.3: integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== language-subtag-registry@~0.3.2: - version "0.3.21" - resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz#04ac218bea46f04cb039084602c6da9e788dd45a" - integrity sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg== + version "0.3.22" + resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d" + integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w== language-tags@^1.0.5: version "1.0.5" @@ -9368,9 +9417,9 @@ levn@^0.3.0, levn@~0.3.0: type-check "~0.3.2" lilconfig@^2.0.3: - version "2.0.5" - resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25" - integrity sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg== + version "2.0.6" + resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4" + integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg== lines-and-columns@^1.1.6: version "1.2.4" @@ -9841,12 +9890,12 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== +minimatch@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: - brace-expansion "^1.1.7" + brace-expansion "^2.0.1" minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" @@ -9909,32 +9958,30 @@ mnemonist@^0.38.0: dependencies: obliterator "^2.0.0" -mocha@^9.2.0: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== +mocha@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.0.0.tgz#205447d8993ec755335c4b13deba3d3a13c4def9" + integrity sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" chokidar "3.5.3" - debug "4.3.3" + debug "4.3.4" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" glob "7.2.0" - growl "1.10.5" he "1.2.0" js-yaml "4.1.0" log-symbols "4.1.0" - minimatch "4.2.1" + minimatch "5.0.1" ms "2.1.3" - nanoid "3.3.1" + nanoid "3.3.3" serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" + workerpool "6.2.1" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -10019,10 +10066,10 @@ nano-json-stream-parser@^0.1.2: resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew== -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== nanoid@^3.1.30, nanoid@^3.3.4: version "3.3.4" @@ -10107,19 +10154,19 @@ node-fetch@~1.7.1: is-stream "^1.0.1" node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.5.0.tgz#7a64eefa0b21112f89f58379da128ac177f20e40" + integrity sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg== node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== -node-releases@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.5.tgz#280ed5bc3eba0d96ce44897d8aee478bfb3d9666" - integrity sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q== +node-releases@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" + integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== normalize-package-data@^2.3.2: version "2.5.0" @@ -10174,9 +10221,9 @@ number-to-bn@1.7.0: strip-hex-prefix "1.0.0" nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + version "2.2.1" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.1.tgz#10a9f268fbf4c461249ebcfe38e359aa36e2577c" + integrity sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg== oauth-sign@~0.9.0: version "0.9.0" @@ -10337,7 +10384,7 @@ open@^7.4.2: is-docker "^2.0.0" is-wsl "^2.1.1" -open@^8.2.1: +open@^8.4.0: version "8.4.0" resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== @@ -11125,9 +11172,9 @@ pseudomap@^1.0.1: integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== psl@^1.1.28, psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + version "1.9.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7" + integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== public-encrypt@^4.0.0: version "4.0.3" @@ -11220,9 +11267,9 @@ qs@6.10.3: side-channel "^1.0.4" qs@^6.7.0: - version "6.10.5" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.5.tgz#974715920a80ff6a262264acd2c7e6c2a53282b4" - integrity sha512-O5RlPh0VFtR78y79rgcgKK4wbAI0C5zGVLztOIdpWX6ep368q5Hv6XRxDvXuZ9q3C6v+e3n8UfZZJw7IIG27eQ== + version "6.11.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" + integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== dependencies: side-channel "^1.0.4" @@ -11459,10 +11506,10 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.0.1.tgz#c531122a7840de743dcf9c83e923b5560323ced3" - integrity sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw== +regexpu-core@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" + integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== dependencies: regenerate "^1.4.2" regenerate-unicode-properties "^10.0.1" @@ -12776,18 +12823,18 @@ terser-webpack-plugin@^5.1.3: terser "^5.7.2" terser@^4.6.2: - version "4.8.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" - integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + version "4.8.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.1.tgz#a00e5634562de2239fd404c649051bf6fc21144f" + integrity sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw== dependencies: commander "^2.20.0" source-map "~0.6.1" source-map-support "~0.5.12" terser@^5.7.2: - version "5.14.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.1.tgz#7c95eec36436cb11cf1902cc79ac564741d19eca" - integrity sha512-+ahUAE+iheqBTDxXhTisdA8hgvbEG1hHOQ9xmNjeUJSoi6DU/gMrKNcfZjHkyY6Alnuyc+ikYJaxxfHkT3+WuQ== + version "5.14.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== dependencies: "@jridgewell/source-map" "^0.3.2" acorn "^8.5.0" @@ -13022,9 +13069,9 @@ ts-jest@^25.3.1, ts-jest@^27.0.7: yargs-parser "20.x" ts-node@^10.4.0: - version "10.8.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.8.1.tgz#ea2bd3459011b52699d7e88daa55a45a1af4f066" - integrity sha512-Wwsnao4DQoJsN034wePSg5nZiw4YKXf56mPIAeD6wVmiv+RytNSWqc2f3fKvcUoV+Yn2+yocD71VOfQHbmVX4g== + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" "@tsconfig/node10" "^1.0.7" @@ -13305,9 +13352,9 @@ underscore@1.9.1: integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== undici@^5.4.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.5.1.tgz#baaf25844a99eaa0b22e1ef8d205bffe587c8f43" - integrity sha512-MEvryPLf18HvlCbLSzCW0U00IMftKGI5udnjrQbC5D4P0Hodwffhv+iGfWuJwg16Y/TK11ZFK8i+BPVW2z/eAw== + version "5.7.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.7.0.tgz#979f89229c01505573cb274d0e11ea8d82b4004f" + integrity sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -13375,6 +13422,14 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" +update-browserslist-db@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" + integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -13812,11 +13867,11 @@ web3-utils@1.2.11: utf8 "3.0.0" web3-utils@^1.0.0-beta.31: - version "1.7.3" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.3.tgz#b214d05f124530d8694ad364509ac454d05f207c" - integrity sha512-g6nQgvb/bUpVUIxJE+ezVN+rYwYmlFyMvMIRSuqpi1dk6ApDD00YNArrk7sPcZnjvxOJ76813Xs2vIN2rgh4lg== + version "1.7.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.7.4.tgz#eb6fa3706b058602747228234453811bbee017f5" + integrity sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA== dependencies: - bn.js "^4.11.9" + bn.js "^5.2.1" ethereum-bloom-filters "^1.0.6" ethereumjs-util "^7.1.0" ethjs-unit "0.1.6" @@ -13961,13 +14016,6 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== -which@2.0.2, which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -13975,6 +14023,13 @@ which@^1.2.9: dependencies: isexe "^2.0.0" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -14000,10 +14055,10 @@ wordwrapjs@^4.0.0: reduce-flatten "^2.0.0" typical "^5.2.0" -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +workerpool@6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^2.0.0: version "2.1.0" From 14325576bcd0cc1186581a282475f8e3fa8e16cf Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 14 Jul 2022 12:44:36 +0000 Subject: [PATCH 039/125] upgrading version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ee36375..921df56 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "2.0.0", + "version": "2.1.0-beta", "license": "CAL", "main": "dist/index.js", "typings": "dist/index.d.ts", From 26ef2572a48e9b36642bf4d998cd8c293401a6a2 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 14 Jul 2022 15:55:14 +0000 Subject: [PATCH 040/125] replacing tierContract with ITierV2 + BalanceTier deploy method on CombineTier class --- src/RainJS/RainJS.ts | 4 +- src/RainJS/vmSimulation.ts | 2 +- src/classes/{tierContract.ts => iTierV2.ts} | 64 +++++++++++++------ src/classes/vm.ts | 2 +- src/contracts/emissionsERC20.ts | 8 +-- .../combineTierScriptGenerator.ts | 2 +- .../emissionsERC20ScriptGenerator.ts | 2 +- src/contracts/stake.ts | 6 +- src/contracts/tiers/combineTier.ts | 61 ++++++++++++++++-- src/contracts/tiers/iTierV2.ts | 43 ------------- src/contracts/tiers/verifyTier.ts | 9 ++- src/index.ts | 3 +- 12 files changed, 120 insertions(+), 86 deletions(-) rename src/classes/{tierContract.ts => iTierV2.ts} (68%) delete mode 100644 src/contracts/tiers/iTierV2.ts diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 48d7356..9c64738 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -1,11 +1,11 @@ +import { ITierV2 } from '../classes/iTierV2'; import { eighteenZeros } from './types'; -import { Tier } from '../classes/tierContract'; +import { Tier } from '../classes/iTierV2'; import { StateConfig, VM } from '../classes/vm'; import { BigNumber, ethers, Signer } from 'ethers'; import { ERC1155 } from '../contracts/generics/erc1155'; import { ERC20 } from '../contracts/generics/erc20'; import { ERC721 } from '../contracts/generics/erc721'; -import { ITierV2 } from '../contracts/tiers/iTierV2'; import { ERC20Snapshot__factory } from '../typechain'; import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; diff --git a/src/RainJS/vmSimulation.ts b/src/RainJS/vmSimulation.ts index ba4cbec..92be0bb 100644 --- a/src/RainJS/vmSimulation.ts +++ b/src/RainJS/vmSimulation.ts @@ -1,7 +1,7 @@ import { SaleJS } from "./SaleJS"; import { BigNumber, ethers } from "ethers"; import { OrderbookJS } from "./OrderbookJS"; -import { Tier } from "../classes/tierContract"; +import { Tier } from "../classes/iTierV2"; import { StateConfig, VM } from "../classes/vm"; import { SaleStorage } from "../contracts/sale"; import { CombineTierJS } from "./CombineTierJS"; diff --git a/src/classes/tierContract.ts b/src/classes/iTierV2.ts similarity index 68% rename from src/classes/tierContract.ts rename to src/classes/iTierV2.ts index b8f01af..91ab5d7 100644 --- a/src/classes/tierContract.ts +++ b/src/classes/iTierV2.ts @@ -2,13 +2,7 @@ import { paddedUInt256 } from '../utils'; import { ReadTxOverrides } from './rainContract'; import { FactoryContract } from './factoryContract'; import { BigNumber, BigNumberish, Signer } from 'ethers'; -import { - Stake, - ITierV2, - VerifyTier, - CombineTier, - EmissionsERC20 -} from '../typechain'; +import { ITierV2__factory } from '../typechain'; /** * @public @@ -56,25 +50,59 @@ export enum Tier { /** * @public - * Combine the static methods that are present in factories with the ITier instance methods. - * Should be use to the TierFactories. + * Class to interact with any Rain Tier contract i.e ITierV2 contracts + * + * @remarks + * Generic class to interact with any ITierV2 contract in chain with the basic methods and functions. + * `ITierV2` is a simple interface that contracts can implement to provide membership lists for other contracts. + * And all other Rain Tier contract inherit form it. + * This class can be used to interact with any contract that implement the ITierV2 interface in their code, but + * does not know if the contract has implemented the code. + * + * @example + * ```typescript + * import { ITierV2 } from "rain-sdk"; + * + * // to instantiate a new ethers.js ITierV2 contract from this class pass the contract address and signer + * const newTier = new ITierV2(tierAddress, signer); + * + * // to connect to an existing ITierV2 instance with a new signer + * newTier.connect(signer); + * ``` */ -export abstract class TierContract extends FactoryContract { +export class ITierV2 extends FactoryContract { - constructor( - address: string, - signer: Signer, - tierContract: VerifyTier | CombineTier | ITierV2 | Stake | EmissionsERC20 - ) { - super(address, signer); + /** + * Constructor of ITierV2 class to instantiate any Rain Tier contract from a known address + * + * @param address - Address of the Rain tier contract + * @param signer - The signer to get connected to the instance + * @returns A new instance of ITierV2 contract from the address with Signer + */ + constructor(address: string, signer: Signer) { + ITierV2.checkAddress(address); - this.report = tierContract.report; - this.reportTimeForTier = tierContract.reportTimeForTier; + super(address, signer); + const _iTierV2 = ITierV2__factory.connect(address, signer); + + this.report = _iTierV2.report; + this.reportTimeForTier = _iTierV2.reportTimeForTier; } /** {@inheritDoc Tier} */ public readonly levels = Tier; + /** + * @public + * Conncect to this ITierV2 contract with another signer + * + * @param signer - the signer to get connected to the ITierV2 instance + * @returns the ITierV2 instance with the new signer + */ + public readonly connect = (signer: Signer): ITierV2 => { + return new ITierV2(this.address, signer); + }; + /** * @public * A tier report is a `uint256` that contains each of the block numbers each tier has been diff --git a/src/classes/vm.ts b/src/classes/vm.ts index a187120..48e7d20 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1,4 +1,4 @@ -import { Tier } from './tierContract'; +import { Tier } from './iTierV2'; import { BytesLike, BigNumberish, utils, BigNumber, ethers } from 'ethers'; import { paddedUInt256, diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index c6ad48b..9e9c508 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -1,4 +1,4 @@ -import { TierContract } from '../classes/tierContract'; +import { ITierV2 } from '../classes/iTierV2'; import { StateConfig, StorageOpcodesRange } from '../classes/vm'; import { Signer, @@ -65,7 +65,7 @@ export enum EmissionsERC20Storage { *``` */ -export class EmissionsERC20 extends TierContract { +export class EmissionsERC20 extends ITierV2 { protected static readonly nameBookReference: string = 'emissionsERC20Factory'; /** @@ -79,9 +79,9 @@ export class EmissionsERC20 extends TierContract { constructor(address: string, signer: Signer) { EmissionsERC20.checkAddress(address); + super(address, signer); const _emission = EmissionsERC20__factory.connect(address, signer); - super(address, signer, _emission); - + this.allowDelegatedClaims = _emission.allowDelegatedClaims; this.allowance = _emission.allowance; this.approve = _emission.approve; diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index d0569b6..7062833 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -1,5 +1,5 @@ +import { Tier } from '../../classes/iTierV2'; import { StateConfig, VM } from '../../classes/vm'; -import { Tier } from '../../classes/tierContract'; import { BigNumberish, BigNumber, BytesLike, ethers } from 'ethers'; import { concat, diff --git a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts index 69f4015..4fd525e 100644 --- a/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts +++ b/src/contracts/script-generators/emissionsERC20ScriptGenerator.ts @@ -1,5 +1,5 @@ import { VM } from '../../classes/vm'; -import { Tier } from '../../classes/tierContract'; +import { Tier } from '../../classes/iTierV2'; import { EmissionsERC20Context } from '../emissionsERC20'; import { ethers, BigNumberish, BigNumber, BytesLike } from 'ethers'; import { diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts index 306e259..899c928 100644 --- a/src/contracts/stake.ts +++ b/src/contracts/stake.ts @@ -1,4 +1,4 @@ -import { TierContract } from '../classes/tierContract'; +import { ITierV2 } from '../classes/iTierV2'; import { Stake__factory, StakeFactory__factory } from '../typechain'; import { TxOverrides, ReadTxOverrides } from '../classes/rainContract'; import { @@ -27,7 +27,7 @@ import { * await Stake.isChild(signer, maybeChildAddress); *``` */ -export class Stake extends TierContract { +export class Stake extends ITierV2 { protected static readonly nameBookReference: string = 'stakeFactory'; /** @@ -40,8 +40,8 @@ export class Stake extends TierContract { constructor(address: string, signer: Signer) { Stake.checkAddress(address); + super(address, signer); const _stake = Stake__factory.connect(address, signer); - super(address, signer, _stake); this.allowance = _stake.allowance; this.approve = _stake.approve; diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index d8e7894..89caea4 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -1,8 +1,9 @@ -import { Signer, BigNumberish } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; -import { ReadTxOverrides, TxOverrides } from '../../classes/rainContract'; +import { Signer, BigNumberish, BigNumber } from 'ethers'; +import { ITierV2 } from '../../classes/iTierV2'; +import { RainContract, ReadTxOverrides, TxOverrides } from '../../classes/rainContract'; import { StateConfig, StorageOpcodesRange } from '../../classes/vm'; import { CombineTierFactory__factory, CombineTier__factory } from '../../typechain'; +import { ERC1155BalanceTier, ERC20BalanceTier, ERC721BalanceTier } from '../script-generators/combineTierScriptGenerator'; /** * @public @@ -82,7 +83,7 @@ export enum CombineTierStorage { * const alwaysTier = await CombineTier.getAlwaysTier(signer); * ``` */ -export class CombineTier extends TierContract { +export class CombineTier extends ITierV2 { protected static readonly nameBookReference: string = 'combineTierFactory'; /** @@ -96,7 +97,7 @@ export class CombineTier extends TierContract { CombineTier.checkAddress(address); const _combineTier = CombineTier__factory.connect(address, signer); - super(address, signer, _combineTier); + super(address, signer); this.fnPtrs = _combineTier.fnPtrs; this.storageOpcodesRange = _combineTier.storageOpcodesRange; @@ -197,4 +198,54 @@ export class CombineTier extends TierContract { public readonly storageOpcodesRange: ( overrides?: ReadTxOverrides ) => Promise; + + /** + * @public + * Method to deploy similar to Rain v1 BalanceTier contracts using CombineTier and CombineTier script generator for either of + * ERC20, ERC721, or ERC1155 tokens + * + * @remarks + * A BalanceTier checks a wallet address balance of the token and reports the results as an ALWAYS/NEVER tier. + * + * @example + * ```typescript + * Deploy a new BalanceTier contract using CombineTier class and script generators + * const newBalanceTier = CombineTier.deployBalanceTier(address, type, levels, signer) + * ``` + * @param address - The token Address + * @param type - The type of the BalanceTier, either erc20, erc721, or erc1155 + * @param levels - An array of 8 items represnting the 8 tier levels + * @param signer - An ethers Signer + * @param erc20Decimals - (optional) Decimals of the erc20 token if the type of this BalanceTier is ERC20, default is 18 + * @param tokenId - (optional) the tokenId used if the type of the BalanceTier is ERC1155 + * @returns A new combineTier instance + */ + public static deployBalanceTier = async( + address: string, + type: "erc20" | "erc721" | "erc1155", + levels: (number | string)[], + signer: Signer, + erc20Decimals: number = 18, + tokenId?: BigNumber + ) => { + let _balanceTierConfig!: StateConfig; + + RainContract.checkAddress(address); + + if (type === "erc20") { + _balanceTierConfig = new ERC20BalanceTier(levels, address, erc20Decimals) + } + if (type === "erc721") { + _balanceTierConfig = new ERC721BalanceTier(levels, address) + } + if ( type === "erc1155" && tokenId) { + _balanceTierConfig = new ERC1155BalanceTier(levels, tokenId, address) + } + const deplyArg: CombineTierDeployArgs = { + combinedTiersLength: 0, + sourceConfig: _balanceTierConfig + } + return await CombineTier.deploy(signer, deplyArg) + } + } diff --git a/src/contracts/tiers/iTierV2.ts b/src/contracts/tiers/iTierV2.ts deleted file mode 100644 index cf25b11..0000000 --- a/src/contracts/tiers/iTierV2.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { Signer } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; -import { ITierV2__factory } from '../../typechain'; - -/** - * @public - * Class to interact with ITierV2 contracts - * - * @remarks - * Generic class to interact with any ITierV2 contract in chain with the basic methods and functions. - * - * `ITierV2` is a simple interface that contracts can implement to provide membership lists for other contracts. - * - * This class can be used to interact with any contract that implement the ITierV2 interface in their code, but - * does not know if the contract has implemented the code. - */ -export class ITierV2 extends TierContract { - - /** - * Constructor of ITierV2 class to instantiate any Rain Tier contract from a known address - * - * @param address - Address of the Rain tier contract - * @param signer - The signer to get connected to the instance - * @returns A new instance of ITierV2 contract from the address with Signer - */ - constructor(address: string, signer: Signer) { - ITierV2.checkAddress(address); - - const _iTierV2 = ITierV2__factory.connect(address, signer); - super(address, signer, _iTierV2); - } - - /** - * @public - * Conncect to this ITierV2 contract with another signer - * - * @param signer - the signer to get connected to the ITierV2 instance - * @returns the ITierV2 instance with the new signer - */ - public readonly connect = (signer: Signer): ITierV2 => { - return new ITierV2(this.address, signer); - }; -} diff --git a/src/contracts/tiers/verifyTier.ts b/src/contracts/tiers/verifyTier.ts index f967444..2910ab4 100644 --- a/src/contracts/tiers/verifyTier.ts +++ b/src/contracts/tiers/verifyTier.ts @@ -1,7 +1,7 @@ import { Signer } from 'ethers'; -import { TierContract } from '../../classes/tierContract'; +import { ITierV2 } from '../../classes/iTierV2'; import { TxOverrides } from '../../classes/rainContract'; -import { VerifyTierFactory__factory, VerifyTier__factory } from '../../typechain'; +import { VerifyTierFactory__factory } from '../../typechain'; /** * @public @@ -29,7 +29,7 @@ import { VerifyTierFactory__factory, VerifyTier__factory } from '../../typechain * ``` * */ -export class VerifyTier extends TierContract { +export class VerifyTier extends ITierV2 { protected static readonly nameBookReference: string = 'verifyTierFactory'; /** @@ -42,8 +42,7 @@ export class VerifyTier extends TierContract { constructor(address: string, signer: Signer) { VerifyTier.checkAddress(address); - const _verifyTier = VerifyTier__factory.connect(address, signer); - super(address, signer, _verifyTier); + super(address, signer); } /** diff --git a/src/index.ts b/src/index.ts index 5bf9cb3..666e7a1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,7 +4,7 @@ export { utils }; export * from './classes/factoryContract'; export * from './classes/rainContract'; -export * from './classes/tierContract'; +export * from './classes/iTierV2'; export * from './classes/vm'; export * from './addresses'; @@ -26,7 +26,6 @@ export * from './RainJS/CombineTierJS'; export * from './RainJS/EmissionsERC20JS'; export * from './RainJS/SaleJS'; -export * from './contracts/tiers/iTierV2'; export * from './contracts/tiers/combineTier'; export * from './contracts/tiers/verifyTier'; From 467858cb058d66591717a54a0d269030ab33e8ae Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 14 Jul 2022 15:55:58 +0000 Subject: [PATCH 041/125] upgrading version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 921df56..4d419ab 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "2.1.0-beta", + "version": "2.1.1-beta", "license": "CAL", "main": "dist/index.js", "typings": "dist/index.d.ts", From 961a899ecd7a8e6615153fcfbbeee2c30d3eb59f Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 14 Jul 2022 19:01:21 +0000 Subject: [PATCH 042/125] snapshot for ERC20 class --- src/RainJS/RainJS.ts | 8 +-- src/contracts/generics/erc1155.ts | 3 +- src/contracts/generics/erc20.ts | 106 ++++++++++++++++++++---------- src/contracts/generics/erc721.ts | 3 +- 4 files changed, 78 insertions(+), 42 deletions(-) diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 9c64738..7e651ed 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -422,8 +422,8 @@ export class RainJS { const snapshotId_ = item3_; const account_ = paddedUInt160(item2_); const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = ERC20Snapshot__factory.connect(erc20Address_, this.signer); - state.stack.push(await erc20Snapshot_.balanceOfAt(account_, snapshotId_)); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); } else throw new Error('Undefined stack variables'); }, @@ -438,8 +438,8 @@ export class RainJS { if (item1_ && item2_ && this.signer !== undefined) { const snapshotId_ = item2_; const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = ERC20Snapshot__factory.connect(erc20Address_, this.signer); - state.stack.push(await erc20Snapshot_.totalSupplyAt(snapshotId_)); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); } else throw new Error('Undefined stack variables'); }, diff --git a/src/contracts/generics/erc1155.ts b/src/contracts/generics/erc1155.ts index 81d8fca..51a206c 100644 --- a/src/contracts/generics/erc1155.ts +++ b/src/contracts/generics/erc1155.ts @@ -1,5 +1,5 @@ import { ERC1155Burnable__factory } from '../../typechain'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; +import { TxOverrides, ReadTxOverrides, RainContract } from '../../classes/rainContract'; import { BigNumberish, BigNumber, @@ -31,6 +31,7 @@ export class ERC1155 { * */ constructor(address: string, signer: Signer) { + RainContract.checkAddress(address); this.address = address; this.signer = signer; const _erc1155 = ERC1155Burnable__factory.connect(address, signer); diff --git a/src/contracts/generics/erc20.ts b/src/contracts/generics/erc20.ts index feb4c00..be45e19 100644 --- a/src/contracts/generics/erc20.ts +++ b/src/contracts/generics/erc20.ts @@ -1,15 +1,16 @@ -import { ERC20Burnable__factory } from '../../typechain'; +import { ERC20Burnable__factory, ERC20Snapshot__factory } from '../../typechain'; import { BigNumberish, BigNumber, Signer, ContractTransaction } from 'ethers'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; +import { TxOverrides, ReadTxOverrides, RainContract } from '../../classes/rainContract'; /** * @public - * * A generic ERC20 interface to get connected to any ERC20 address and make transactions. * * @remarks * The interface only have and provide generic and common methods calls. Remember that any specific * method implemented in the contract will NOT be available in this interface. + * Can get connected to ERC20Snapshot as well. + * */ export class ERC20 { public readonly signer: Signer; @@ -20,19 +21,29 @@ export class ERC20 { * * @param address - The address of the ERC20 contract * @param signer - An ethers.js Signer + * @param isSnapshot - (optional) True if the token is ERC20Snapshot * @returns A new ERC20 instance - * */ - constructor(address: string, signer: Signer) { + constructor(address: string, signer: Signer, isSnapshot?: boolean) { + let _erc20; this.address = address; this.signer = signer; - const _erc20 = ERC20Burnable__factory.connect(address, signer); + RainContract.checkAddress(address); + + if (isSnapshot) { + _erc20 = ERC20Snapshot__factory.connect(address, signer); + this.balanceOfAt = _erc20.balanceOfAt; + this.totalSupplyAt = _erc20.totalSupplyAt; + } + else { + _erc20 = ERC20Burnable__factory.connect(address, signer); + this.burn = _erc20.burn; + this.burnFrom = _erc20.burnFrom; + } this.allowance = _erc20.allowance; this.approve = _erc20.approve; this.balanceOf = _erc20.balanceOf; - this.burn = _erc20.burn; - this.burnFrom = _erc20.burnFrom; this.decimals = _erc20.decimals; this.decreaseAllowance = _erc20.decreaseAllowance; this.increaseAllowance = _erc20.increaseAllowance; @@ -138,34 +149,6 @@ export class ERC20 { overrides?: ReadTxOverrides ) => Promise; - /** - * Destroys `amount` tokens from the caller. - * - * @param amount - Amount of tokens to burn - * @param overrides - @see TxOverrides - */ - public readonly burn: ( - amount: BigNumberish, - overrides?: TxOverrides - ) => Promise; - - /** - * Destroys `amount` tokens from `account`, deducting from the caller's - * allowance. - * Requirements: - * - * - the caller must have allowance for `accounts`'s tokens of at least - * `amount`. - * - * @param account - Account address to get the balance - * @param amount - Amount of tokens to burn - */ - public readonly burnFrom: ( - account: string, - amount: BigNumberish, - overrides?: TxOverrides - ) => Promise; - /** * Returns the number of decimals used to get its user representation. * @@ -273,4 +256,55 @@ export class ERC20 { amount: BigNumberish, overrides?: TxOverrides ) => Promise; + + /** + * Destroys `amount` tokens from the caller. + * + * @param amount - Amount of tokens to burn + * @param overrides - @see TxOverrides + */ + public readonly burn?: ( + amount: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + /** + * Destroys `amount` tokens from `account`, deducting from the caller's + * allowance. + * Requirements: + * + * - the caller must have allowance for `accounts`'s tokens of at least + * `amount`. + * + * @param account - Account address to get the balance + * @param amount - Amount of tokens to burn + */ + public readonly burnFrom?: ( + account: string, + amount: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + /** + * Get the totalSupply at the snapshotId + * + * @param snapshotId - snapshotId of tokens to get the totalSupply at + * @param overrides - @see TxOverrides + */ + public readonly totalSupplyAt?: ( + snapshotId: BigNumberish, + overrides?: TxOverrides + ) => Promise; + + /** + * Get the balanceOf the account at the snapshotId + * + * @param account - Account address to get the balance of at + * @param snapshotId - snapshotId + */ + public readonly balanceOfAt?: ( + account: string, + snapshotId: BigNumberish, + overrides?: TxOverrides + ) => Promise; } diff --git a/src/contracts/generics/erc721.ts b/src/contracts/generics/erc721.ts index 60bf13a..1ee6246 100644 --- a/src/contracts/generics/erc721.ts +++ b/src/contracts/generics/erc721.ts @@ -1,5 +1,5 @@ import { ERC721Burnable__factory } from '../../typechain'; -import { TxOverrides, ReadTxOverrides } from '../../classes/rainContract'; +import { TxOverrides, ReadTxOverrides, RainContract } from '../../classes/rainContract'; import { BigNumberish, BigNumber, @@ -31,6 +31,7 @@ export class ERC721 { * */ constructor(address: string, signer: Signer) { + RainContract.checkAddress(address); this.address = address; this.signer = signer; const _erc721 = ERC721Burnable__factory.connect(address, signer); From 0ee4114b93a4afb84abac54330069d52aa730c71 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Thu, 14 Jul 2022 19:02:42 +0000 Subject: [PATCH 043/125] Update RainJS.ts --- src/RainJS/RainJS.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts index 7e651ed..a73bd63 100644 --- a/src/RainJS/RainJS.ts +++ b/src/RainJS/RainJS.ts @@ -6,7 +6,6 @@ import { BigNumber, ethers, Signer } from 'ethers'; import { ERC1155 } from '../contracts/generics/erc1155'; import { ERC20 } from '../contracts/generics/erc20'; import { ERC721 } from '../contracts/generics/erc721'; -import { ERC20Snapshot__factory } from '../typechain'; import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; From d9eb2bc066c7a0467ed9879c4fa261da5e9fe3f4 Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Tue, 19 Jul 2022 22:04:46 +0000 Subject: [PATCH 044/125] rearrange and refactor jsvm lib and dedicated files/folders for jsvm ops --- src/RainJS/CombineTierJS.ts | 65 - src/RainJS/EmissionsERC20JS.ts | 64 - src/RainJS/OrderbookJS.ts | 131 -- src/RainJS/RainJS.ts | 1157 -------------- src/RainJS/SaleJS.ts | 127 -- src/RainJS/types.ts | 157 -- src/RainJS/vmSimulation.ts | 1360 ----------------- src/index.ts | 65 +- src/jsvm/CombineTierJSVM.ts | 46 + src/jsvm/EmissionsERC20JSVM.ts | 45 + src/jsvm/OrderbookJSVM.ts | 93 ++ src/jsvm/RainJSVM.ts | 440 ++++++ src/jsvm/SaleJSVM.ts | 127 ++ src/jsvm/lib/FixedPointMath.ts | 42 + src/jsvm/lib/SaturatingMath.ts | 28 + src/jsvm/lib/TierReport.ts | 28 + src/jsvm/lib/TierwiseCombine.ts | 121 ++ src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts | 25 + .../ops/erc1155/OpERC1155BalanceOfBatch.ts | 38 + src/jsvm/ops/erc20/OpERC20BalanceOf.ts | 21 + src/jsvm/ops/erc20/OpERC20TotalSupply.ts | 19 + .../snapshot/OpERC20SnapshotBalanceOfAt.ts | 24 + .../snapshot/OpERC20SnapshotTotalSupplyAt.ts | 22 + src/jsvm/ops/erc721/OpERC721BalanceOf.ts | 21 + src/jsvm/ops/erc721/OpERC721OwnerOf.ts | 25 + src/jsvm/ops/evm/OpBlockNumber.ts | 23 + src/jsvm/ops/evm/OpCaller.ts | 17 + src/jsvm/ops/evm/OpThisAddress.ts | 15 + src/jsvm/ops/evm/OpTimestamp.ts | 23 + src/jsvm/ops/math/OpAdd.ts | 27 + src/jsvm/ops/math/OpDiv.ts | 26 + src/jsvm/ops/math/OpExp.ts | 31 + src/jsvm/ops/math/OpMax.ts | 16 + src/jsvm/ops/math/OpMin.ts | 16 + src/jsvm/ops/math/OpMod.ts | 26 + src/jsvm/ops/math/OpMul.ts | 27 + src/jsvm/ops/math/OpSub.ts | 29 + src/jsvm/ops/math/fixedPoint/OpScale18.ts | 18 + src/jsvm/ops/math/fixedPoint/OpScale18Div.ts | 20 + src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts | 20 + src/jsvm/ops/math/fixedPoint/OpScaleBy.ts | 17 + src/jsvm/ops/math/fixedPoint/OpScaleN.ts | 19 + src/jsvm/ops/math/logic/OpAny.ts | 35 + src/jsvm/ops/math/logic/OpEagerIf.ts | 18 + src/jsvm/ops/math/logic/OpEqualTo.ts | 18 + src/jsvm/ops/math/logic/OpEvery.ts | 33 + src/jsvm/ops/math/logic/OpGreaterThan.ts | 19 + src/jsvm/ops/math/logic/OpIsZero.ts | 17 + src/jsvm/ops/math/logic/OpLessThan.ts | 18 + .../ops/math/saturating/OpSaturatingAdd.ts | 25 + .../ops/math/saturating/OpSaturatingMul.ts | 28 + .../ops/math/saturating/OpSaturatingSub.ts | 25 + src/jsvm/ops/tier/OpITierV2Report.ts | 27 + .../ops/tier/OpITierV2ReportTimesForTier.ts | 34 + src/jsvm/ops/tier/OpSaturatingDiff.ts | 19 + src/jsvm/ops/tier/OpSelectLte.ts | 23 + .../ops/tier/OpUpdateTimesForTierRange.ts | 19 + src/jsvm/simulation/CombineTierSimulation.ts | 75 + .../simulation/EmissionsERC20Simulation.ts | 177 +++ .../simulation/Matchmaker.ts} | 14 +- src/jsvm/simulation/OrderbookSimulation.ts | 441 ++++++ src/jsvm/simulation/SaleSimulation.ts | 246 +++ src/jsvm/simulation/vmSimulation.ts | 438 ++++++ src/jsvm/types.ts | 208 +++ src/utils.ts | 386 +++-- .../HumanFreindlyRead.ts} | 14 +- test/{1_initSDK.test.ts => 1_Init.test.ts} | 0 test/{6_RainJS.test.ts => 6_RainJSVM.test.ts} | 56 +- test/7_FriendlySource.test.ts | 126 +- 69 files changed, 3919 insertions(+), 3281 deletions(-) delete mode 100644 src/RainJS/CombineTierJS.ts delete mode 100644 src/RainJS/EmissionsERC20JS.ts delete mode 100644 src/RainJS/OrderbookJS.ts delete mode 100644 src/RainJS/RainJS.ts delete mode 100644 src/RainJS/SaleJS.ts delete mode 100644 src/RainJS/types.ts delete mode 100644 src/RainJS/vmSimulation.ts create mode 100644 src/jsvm/CombineTierJSVM.ts create mode 100644 src/jsvm/EmissionsERC20JSVM.ts create mode 100644 src/jsvm/OrderbookJSVM.ts create mode 100644 src/jsvm/RainJSVM.ts create mode 100644 src/jsvm/SaleJSVM.ts create mode 100644 src/jsvm/lib/FixedPointMath.ts create mode 100644 src/jsvm/lib/SaturatingMath.ts create mode 100644 src/jsvm/lib/TierReport.ts create mode 100644 src/jsvm/lib/TierwiseCombine.ts create mode 100644 src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts create mode 100644 src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts create mode 100644 src/jsvm/ops/erc20/OpERC20BalanceOf.ts create mode 100644 src/jsvm/ops/erc20/OpERC20TotalSupply.ts create mode 100644 src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts create mode 100644 src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts create mode 100644 src/jsvm/ops/erc721/OpERC721BalanceOf.ts create mode 100644 src/jsvm/ops/erc721/OpERC721OwnerOf.ts create mode 100644 src/jsvm/ops/evm/OpBlockNumber.ts create mode 100644 src/jsvm/ops/evm/OpCaller.ts create mode 100644 src/jsvm/ops/evm/OpThisAddress.ts create mode 100644 src/jsvm/ops/evm/OpTimestamp.ts create mode 100644 src/jsvm/ops/math/OpAdd.ts create mode 100644 src/jsvm/ops/math/OpDiv.ts create mode 100644 src/jsvm/ops/math/OpExp.ts create mode 100644 src/jsvm/ops/math/OpMax.ts create mode 100644 src/jsvm/ops/math/OpMin.ts create mode 100644 src/jsvm/ops/math/OpMod.ts create mode 100644 src/jsvm/ops/math/OpMul.ts create mode 100644 src/jsvm/ops/math/OpSub.ts create mode 100644 src/jsvm/ops/math/fixedPoint/OpScale18.ts create mode 100644 src/jsvm/ops/math/fixedPoint/OpScale18Div.ts create mode 100644 src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts create mode 100644 src/jsvm/ops/math/fixedPoint/OpScaleBy.ts create mode 100644 src/jsvm/ops/math/fixedPoint/OpScaleN.ts create mode 100644 src/jsvm/ops/math/logic/OpAny.ts create mode 100644 src/jsvm/ops/math/logic/OpEagerIf.ts create mode 100644 src/jsvm/ops/math/logic/OpEqualTo.ts create mode 100644 src/jsvm/ops/math/logic/OpEvery.ts create mode 100644 src/jsvm/ops/math/logic/OpGreaterThan.ts create mode 100644 src/jsvm/ops/math/logic/OpIsZero.ts create mode 100644 src/jsvm/ops/math/logic/OpLessThan.ts create mode 100644 src/jsvm/ops/math/saturating/OpSaturatingAdd.ts create mode 100644 src/jsvm/ops/math/saturating/OpSaturatingMul.ts create mode 100644 src/jsvm/ops/math/saturating/OpSaturatingSub.ts create mode 100644 src/jsvm/ops/tier/OpITierV2Report.ts create mode 100644 src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts create mode 100644 src/jsvm/ops/tier/OpSaturatingDiff.ts create mode 100644 src/jsvm/ops/tier/OpSelectLte.ts create mode 100644 src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts create mode 100644 src/jsvm/simulation/CombineTierSimulation.ts create mode 100644 src/jsvm/simulation/EmissionsERC20Simulation.ts rename src/{RainJS/matchmaker.ts => jsvm/simulation/Matchmaker.ts} (97%) create mode 100644 src/jsvm/simulation/OrderbookSimulation.ts create mode 100644 src/jsvm/simulation/SaleSimulation.ts create mode 100644 src/jsvm/simulation/vmSimulation.ts create mode 100644 src/jsvm/types.ts rename src/{friendlySource.ts => vm/HumanFreindlyRead.ts} (98%) rename test/{1_initSDK.test.ts => 1_Init.test.ts} (100%) rename test/{6_RainJS.test.ts => 6_RainJSVM.test.ts} (93%) diff --git a/src/RainJS/CombineTierJS.ts b/src/RainJS/CombineTierJS.ts deleted file mode 100644 index 6f60ee8..0000000 --- a/src/RainJS/CombineTierJS.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Signer } from 'ethers'; -import { StateConfig } from '../classes/vm'; -import { ApplyOpFn, RainJS } from './RainJS'; -import { CombineTierStorage } from '../contracts/tiers/combineTier'; - -/** - * @public - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. - * @see CombineTier.sol in contracts - * - */ -export class CombineTierJS extends RainJS { - - /** - * CombineTierJS can have any length for context - */ - protected readonly ContextLength = NaN; - - /** - * CombineTierJS valid storage range - */ - protected readonly StorageRange = CombineTierStorage.length; - - /** - * Constructor of CombineTierJS to create a instance of this class with CombineTier's local opcodes. - * @see RainJS - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a CombineTier Contract and custom opcode functions) - * - */ - constructor( - state: StateConfig, - options?: { - signer?: Signer, - contract?: string, - applyOpFn?: ApplyOpFn, - contextLength?: number, - storageOpFn?: ApplyOpFn, // for overriding the CombineTierJS's STORAGE opcode function - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - contextLength: options?.contextLength, - } - ); - - // assigning custom functions to the STORAGE/CONTEXT functions - // custom functions should be passed at the time construction - if (options?.storageOpFn) { - this._STORAGE_ = options.storageOpFn; - } - } - - /** - * key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) - * @remarks CombineTier doesnt have any STORAGE opcode by default and in its contract level, - * however in JSVM there is the ability to pass in custom opcode functions to it - */ - protected _STORAGE_: ApplyOpFn = {}; -} diff --git a/src/RainJS/EmissionsERC20JS.ts b/src/RainJS/EmissionsERC20JS.ts deleted file mode 100644 index 093f76d..0000000 --- a/src/RainJS/EmissionsERC20JS.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { ApplyOpFn, RainJS } from "./RainJS"; -import { EmissionsERC20Context, EmissionsERC20Storage } from "../contracts/emissionsERC20"; - -/** - * @public - The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. - * @see EmissionsERC20.sol in contracts - * - */ -export class EmissionsERC20JS extends RainJS { - - /** - * EmissionsERC20JS valid storage range - */ - protected readonly StorageRange = EmissionsERC20Storage.length; - - /** - * EmissionsERC20JS valid context length - */ - protected readonly ContextLength = EmissionsERC20Context.length; - - /** - * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. - * @see RainJS - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a EmissionsERC20JS Contract and custom opcode functions) - * - */ - constructor( - state: StateConfig, - options?: { - signer?: Signer, - contract?: string, - applyOpFn?: ApplyOpFn, - storageRange?: number; - storageOpFn?: ApplyOpFn, // for overriding the EmissionsERC20's STORAGE opcode function - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn - } - ); - - // assigning custom functions to the STORAGE/CONTEXT functions - // custom functions should be passed at the time construction - if (options?.storageOpFn) { - this._STORAGE_ = options.storageOpFn; - } - } - - /** - * key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) - * @remarks EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, - * however in JSVM there is the ability to pass in custom opcode functions to it - */ - protected _STORAGE_: ApplyOpFn = {}; -} diff --git a/src/RainJS/OrderbookJS.ts b/src/RainJS/OrderbookJS.ts deleted file mode 100644 index f22c5f2..0000000 --- a/src/RainJS/OrderbookJS.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { Signer } from 'ethers'; -import { StateConfig } from '../classes/vm'; -import { ApplyOpFn, RainJS, StateJS } from './RainJS'; -import { OrderBook, OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; - - -// @TODO - not complete, local opcodes functions need to be added -/** - * @public - The javascript version of OrderbookVM which inherits RainJS with local Orderbook opcodes. - * @see Orderbook.sol in contracts - * - */ -export class OrderbookJS extends RainJS { - - /** - * OrderbookJS valid storage range - */ - protected readonly StorageRange = OrderbookStorage.length; - - /** - * OrderbookJS valid context length - */ - protected readonly ContextLength = OrderbookContext.length; - - // /** - // * - // */ - // public chainId?: number; - - /** - * Constructor of OrderbookJS to create a instance of this class with Orderbook's local opcodes. - * @see RainJS - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a Orderbook Contract and custom opcode functions) - * - */ - constructor( - state: StateConfig, - options?: { - signer?: Signer; - contract?: string; - applyOpFn?: ApplyOpFn; - storageOpFn?: ApplyOpFn; // for overriding the OrderbookJS's STORAGE opcode function - chainId?: number - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - } - ); - - // assigning custom functions to the STORAGE/CONTEXT functions - // custom functions should be passed at the time construction - if (options?.storageOpFn !== undefined) { - this._STORAGE_ = options.storageOpFn; - } - // if (options && options.chainId !== undefined) { - // this.chainId = options.chainId; - // } - } - - // /** - // * - // * @param chainId - // */ - // public setChainId (chainId: number) { - // this.chainId = chainId; - // } - - protected _OPCODE_: ApplyOpFn = { - - ...this._OPCODE_, - - [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async ( - - state: StateJS, - operand: number, - data?: any - ) => { - // if (this.chainId && data.chainId !== undefined) { - // const chainId = this.chainId !== undefined ? this.chainId : data.chainId; - // const EndPoint = AddressBook.getSubgraphEndpoint(chainId); - // let subgraphData = await fetch(EndPoint, { - // method: 'POST', - // headers: { - // 'Content-Type': 'application/json', - // }, - // body: JSON.stringify({ - // query: ` - // query { - // redeemableEscrowDeposits(where: - // {iSaleAddress:"${SALE_ADDRESS}"} - // ) { - // id - - // } - // } - // ` - // }) - // }); - // subgraphData = await subgraphData.json(); - // subgraphData = subgraphData.data.redeemableEscrowDeposits[0]; - - // state.stack.push(BigNumber.from(subgraphData)) - // } - // else throw new Error("undefined chainID") - }, - - [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - - }, - }; - - /** - * key/value pair of STORAGE opcodes of the Orderbook JSVM (empty with no functions) - * @remarks Orderbook doesnt have any STORAGE opcode by default and in its contract level, - * however in JSVM there is the ability to pass in custom opcode functions to it - */ - protected _STORAGE_: ApplyOpFn = {}; - -} diff --git a/src/RainJS/RainJS.ts b/src/RainJS/RainJS.ts deleted file mode 100644 index a73bd63..0000000 --- a/src/RainJS/RainJS.ts +++ /dev/null @@ -1,1157 +0,0 @@ -import { ITierV2 } from '../classes/iTierV2'; -import { eighteenZeros } from './types'; -import { Tier } from '../classes/iTierV2'; -import { StateConfig, VM } from '../classes/vm'; -import { BigNumber, ethers, Signer } from 'ethers'; -import { ERC1155 } from '../contracts/generics/erc1155'; -import { ERC20 } from '../contracts/generics/erc20'; -import { ERC721 } from '../contracts/generics/erc721'; -import { arrayify, paddedUInt160, paddedUInt256, paddedUInt32 } from '../utils'; - - -/** - * @public - * A type for functions to override the default opcodes functions with it. - */ -export type OpcodeFN = (state: StateJS, operand: number, data?: any) => void; - -/** - * @public - * An interface for creating a key/value pair of custom opcodes functions to override. - */ -export interface ApplyOpFn { - [key: number]: OpcodeFN; -} - -/** - * @public - An interface, StateJS is basically javascript version of 'State' struct - * in RainVM, although it doesn't need stackLength and argumentsLength to operate. It - * receives a regular RainVM in the constructor and initiates the stack for it and all - * opcodes do their operations to the stack. - * @see State in RainVM.sol - * - */ -export interface StateJS { - /** - * The property to store the RainVM script constants. - */ - readonly constants: BigNumber[]; - - /** - * The property to store the RainVM script sources. - */ - readonly sources: Uint8Array[]; - - /** - * The RainJS's stack. - */ - readonly stack: BigNumber[]; - - /** - * Used only for zipmap opcode - */ - readonly argumentsStack: BigNumber[]; -} - -/** - * @public - The javascript version of the RainVM, basically does the same job RainVM does - * but off-chain. - * @see RainVM in RainVM.sol - * - */ -export class RainJS { - /** - * The result state of the executed Rainjs. - */ - public readonly lastState: BigNumber[] = []; - - /** - * The property of type StateJS which that RainJS will run based on. - */ - private readonly state: StateJS; - - /** - * It is a property for overriding the opcodes. Need to ba passed at the time of construction - * because the RainJS opcode functions should not change after an instance has be created. - */ - private readonly applyOpFn?: ApplyOpFn; - - /** - * An ethers Signer. - */ - public signer?: Signer; - - /** - * The contract address of the instance of this class used for THIS_ADDRESS opcode - */ - public contract?: string; - - /** - * Object that contains the STORAGE opcode functions (i.e. local opcodes) - */ - protected _STORAGE_?: ApplyOpFn; - - /** - * Length of the valid context argument accessible by eval - */ - protected readonly ContextLength: number = 0; - - /** - * Range of available storage variables accessible by eval - */ - protected readonly StorageRange: number = 0; - - /** - * The constructor of RainJS which initiates the RainJS and also a StateJS for a RainVM script. - * - * @param state - A regular StateConfig used to new a StateJS object to be used in RainJS. - * @param options - (optional) used for initiating the optional properties (signer, provider, contract and applyOpFn) - * - */ - constructor( - state: StateConfig, - options?: { - signer?: Signer; - contract?: string; - applyOpFn?: ApplyOpFn; - contextLength?: number; - storageRange?: number; - storageOpFn?: ApplyOpFn; // for providing STORAGE opcode functions - } - ) { - const stack: BigNumber[] = []; - const argumentsStack: BigNumber[] = []; - const constants: BigNumber[] = []; - const sources: Uint8Array[] = []; - - for (let i = 0; i < state.constants.length; i++) { - constants.push(BigNumber.from(state.constants[i])); - } - for (let i = 0; i < state.sources.length; i++) { - sources.push(arrayify(state.sources[i], { allowMissingPrefix: true })); - } - - this.state = { - stack, - argumentsStack, - constants, - sources, - }; - this.applyOpFn = options?.applyOpFn; - this.signer = options?.signer; - this.contract = options?.contract; - - // assigning the StorageRange and ContextLength - if (options?.contextLength) { - this.ContextLength = options.contextLength; - } - if (options?.storageRange) { - this.StorageRange = options.storageRange; - } - - // assigning custom functions to the STORAGE functions - // custom functions should be passed at the time construction - this._STORAGE_ = options?.storageOpFn; - } - - /** - * The main workhorse of RainJS, basically the javascript version of 'eval' method in RainVM.sol. - * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that - * has been passed at the time of cinstruction of a RainJS object. - * @see eval method in RainVM.sol - * - * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there - * are custom opcodes passed at the time of construction ot to pass in some user input value to the script. - * @param index - used internally for indicating which item in state sources array to execute for zipmap function. - * - */ - private async eval(data?: any, index?: number): Promise { - const sourcesIndex = index ? index : 0; - - for (let i = 0; i < this.state.sources[sourcesIndex].length; i++) { - if (this.applyOpFn !== undefined) { - if ( - Object.keys(this.applyOpFn).includes( - this.state.sources[sourcesIndex][i].toString() - ) - ) { - await this.applyOpFn[this.state.sources[sourcesIndex][i]]( - this.state, - this.state.sources[sourcesIndex][i + 1], - data - ); - } - else { - await this.dispatch( - this.state, - this.state.sources[sourcesIndex][i], - this.state.sources[sourcesIndex][i + 1], - data - ); - } - } - else { - await this.dispatch( - this.state, - this.state.sources[sourcesIndex][i], - this.state.sources[sourcesIndex][i + 1], - data - ); - } - i++; - } - } - - /** - * It is a protected method used by eval to run the correct function for each opcode in the script. - * For each opcode please @see AllStandardOps - * - * @param state - StateJS property used in each opcode function to either read or write data into stack. - * @param opcode - the opcode to dispatch and run the function of that opcode - * @param operand - the addtional info for each opcode to run based on. - * @param data - (optional) used only for zipmap opcode in order to be able to run custom function i.e. applyOpFn - * for zipmap function source. - * - */ - private async dispatch( - state: StateJS, - opcode: number, - operand: number, - data?: any - ): Promise { - await this._OPCODE_[opcode](state, operand, data); - } - - /** - * Method to execute the RainJS. - * - * @param data - (optional) Used as additional info for some local opcodes - * or custom opcode functions i.e. applyOpFn. - * - * @returns - An array represting the final state of the RainJS stack. - */ - public async run(data?: any, index?: number): Promise { - this.lastState.splice(-this.lastState.length); - await this.eval(data, index); - const result_ = this.state.stack.splice(-this.state.stack.length); - this.lastState.push(...result_); - - return result_; - } - - /** - * key/value pair of opcodes and their functions for all standard opcodes - */ - protected readonly _OPCODE_: ApplyOpFn = { - - [VM.Opcodes.CONSTANT]: (state: StateJS, operand: number, data?: any) => { - if (operand < state.constants.length) { - if (state.constants[operand] !== undefined) { - state.stack.push(state.constants[operand]); - } else throw new Error('out-of-bound constants'); - } - else { - if ( - state.argumentsStack[operand - state.constants.length] !== undefined - ) { - state.stack.push( - state.argumentsStack[operand - state.constants.length] - ); - } - else throw new Error('out-of-bound arguments'); - } - }, - - [VM.Opcodes.STACK]: (state: StateJS, operand: number, data?: any) => { - state.stack.push(state.stack[operand]); - }, - - [VM.Opcodes.CONTEXT]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (this.ContextLength) { - if (this.ContextLength > 0 && operand < this.ContextLength) { - if (data?.context && data.context[operand] !== undefined) { - state.stack.push( - BigNumber.from(data.context[operand]) - ); - } else throw new Error('Undefined context'); - } - else throw new Error("out-of-bounds context") - } - else if (data?.context && data.context[operand] !== undefined) { - state.stack.push( - BigNumber.from(data.context[operand]) - ); - } - else throw new Error('Undefined context'); - }, - - [VM.Opcodes.STORAGE]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (this.StorageRange > 0 && operand < this.StorageRange) { - if (this._STORAGE_) { - if (this._STORAGE_[operand]) { - await this._STORAGE_[operand](state, operand, data); - } - else throw new Error('no or out-of-bound storage opcode') - } - else {}; - } - else {}; - }, - - [VM.Opcodes.ZIPMAP]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const sourceIndex_ = operand & 7; - const numberOfVals_ = (operand & 224) >> 5; - const a_ = (operand & 24) >> 3; - const valSize_ = a_ === 3 ? 8 : a_ === 2 ? 16 : a_ === 1 ? 32 : 64; - const loopSize_ = 64 / valSize_; - const items_ = state.stack.splice(-(numberOfVals_ + 1)); - let _startIndex = 64 - valSize_; - let _endIndex = 64; - - if (items_.length === numberOfVals_ + 1) { - for (let i = 0; i < loopSize_; i++) { - state.argumentsStack.splice(-(numberOfVals_ + 1)); - for (let j = 0; j < items_.length; j++) { - state.argumentsStack.push( - BigNumber.from( - '0x' + - paddedUInt256(items_[j]) - .substring(2) - .slice(_startIndex, _endIndex) - ) - ); - } - for (let i = 0; i < this.state.sources[sourceIndex_].length; i++) { - if (this.applyOpFn !== undefined) { - if ( - Object.keys(this.applyOpFn).includes( - this.state.sources[sourceIndex_][i].toString() - ) - ) { - this.applyOpFn[this.state.sources[sourceIndex_][i]]( - this.state, - this.state.sources[sourceIndex_][i + 1], - data - ); - } - else { - await this.dispatch( - this.state, - this.state.sources[sourceIndex_][i], - this.state.sources[sourceIndex_][i + 1], - data - ); - } - } - else { - await this.dispatch( - this.state, - this.state.sources[sourceIndex_][i], - this.state.sources[sourceIndex_][i + 1], - data - ); - } - i++; - } - _startIndex -= valSize_; - _endIndex -= valSize_; - } - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.DEBUG]: (state: StateJS, operand: number, data?: any) => { - if (operand < 4) { - console.log(state.stack); - } - else throw new Error('out-of-bound debug operand'); - }, - - [VM.Opcodes.IERC20_BALANCE_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.balanceOf(account_)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC20_TOTAL_SUPPLY]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item_ = state.stack.pop(); - if (item_ && this.signer !== undefined) { - const erc20Address_ = paddedUInt160(item_); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.totalSupply()); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer !== undefined) { - const snapshotId_ = item3_; - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); - state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { - const snapshotId_ = item2_; - const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); - state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC721_BALANCE_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { - const account_ = paddedUInt160(item2_); - const erc721Address_ = paddedUInt160(item1_); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push(await erc721Contract_.balanceOf(account_)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC721_OWNER_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { - const tokenId_ = BigNumber.from(item2_); - const erc721Address_ = paddedUInt160(item1_); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push( - BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) - ); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.IERC1155_BALANCE_OF]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer !== undefined) { - const id_ = BigNumber.from(item3_); - const account_ = paddedUInt160(item2_); - const erc1155Address_ = paddedUInt160(item1_); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const item3_ = state.stack.splice(-(operand + 1)); - const item2_ = state.stack.splice(-(operand + 1)); - const item1_ = state.stack.pop(); - if ( - item1_ && - item2_ && - item3_ && - this.signer !== undefined && - item2_.length === item3_.length - ) { - const tokenIds_: BigNumber[] = []; - for (let i = 0; i < item3_.length; i++) { - tokenIds_.push(BigNumber.from(item3_[i])); - } - const accounts_: string[] = []; - for (let i = 0; i < item2_.length; i++) { - accounts_.push(paddedUInt160(item2_[i])); - } - const erc1155Address_ = paddedUInt160(item1_); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - state.stack.push( - ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) - ); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.BLOCK_NUMBER]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (this.signer !== undefined) { - const _provider = this.signer.provider; - if (_provider !== undefined) { - state.stack.push(BigNumber.from(await _provider.getBlockNumber())); - } - else throw new Error("undefined Provider") - } - else throw new Error('Undefined Signer'); - }, - - [VM.Opcodes.SENDER]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (this.signer !== undefined) { - state.stack.push(BigNumber.from(await this.signer.getAddress())); - } - else throw new Error("undefined signer or signer address") - }, - - [VM.Opcodes.THIS_ADDRESS]: ( - state: StateJS, - operand: number, - data?: any - ) => { - if (this.contract !== undefined) { - state.stack.push(BigNumber.from(this.contract)); - } - else throw new Error('Undefined contract'); - }, - - [VM.Opcodes.BLOCK_TIMESTAMP]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - if (this.signer !== undefined) { - const _provider = this.signer.provider; - if (_provider !== undefined) { - state.stack.push( - BigNumber.from( - (await _provider.getBlock(await _provider.getBlockNumber())) - .timestamp - ) - ); - } - else throw new Error("Undefined provider") - } - else throw new Error('Undefined Signer'); - }, - - [VM.Opcodes.SCALE18]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - state.stack.push( - operand <= 18 - ? item_.mul((10 ** (18 - operand)).toString()) - : item_.div((10 ** (operand - 18)).toString()) - ); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.SCALE18_DIV]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - state.stack.push( - ((operand <= 18 - ? item1_.mul((10 ** (18 - operand)).toString()) - : item1_.div((10 ** (operand - 18)).toString()) - ).mul(eighteenZeros)).div(item2_) - ); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.SCALE18_MUL]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - state.stack.push( - (item2_.mul( - operand <= 18 - ? item1_.mul((10 ** (18 - operand)).toString()) - : item1_.div((10 ** (operand - 18)).toString()) - ) - ).div(eighteenZeros) - ); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.SCALE_BY]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - if (operand > 127) { - operand = 256 - operand; - state.stack.push( - item_.div((10 ** (operand)).toString()) - ); - } - else { - state.stack.push( - item_.mul((10 ** (operand)).toString()) - ); - } - } - else throw new Error("Undefined stack variable") - }, - - [VM.Opcodes.SCALEN]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - state.stack.push( - operand <= 18 - ? item_.div((10 ** (18 - operand)).toString()) - : item_.mul((10 ** (operand - 18)).toString()) - ); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.ANY]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _check; - let _item; - for (let i = 0; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - if (_item.gt(0)) { - _check = ethers.constants.One; - break; - } else _check = ethers.constants.Zero; - } - else throw new Error('Undefined stack variables'); - } - if (_check !== undefined) { - state.stack.push(_check); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.EAGER_IF]: (state: StateJS, operand: number, data?: any) => { - const false_ = state.stack.pop(); - const true_ = state.stack.pop(); - const condition_ = state.stack.pop(); - if (false_ && true_ && condition_ !== undefined) { - state.stack.push(condition_.gt(0) ? true_ : false_); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.EQUAL_TO]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Underfined stack variables'); - }, - - [VM.Opcodes.EVERY]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _check; - let _item; - for (let i = 0; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - if (_item.isZero()) { - _check = ethers.constants.Zero; - break; - } else _check = ethers.constants.One; - } - else throw new Error('Undefined stack variables'); - } - if (_check !== undefined) { - state.stack.push(_check); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.GREATER_THAN]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.ISZERO]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - state.stack.push( - item_.isZero() ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.LESS_THAN]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.SATURATING_ADD]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.Zero; - let _item; - for (let i = 0; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator.add(_item); - _accumulator = _accumulator.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : _accumulator; - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.SATURATING_SUB]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator?.sub(_item); - _accumulator = _accumulator.gt(0) - ? _accumulator - : ethers.constants.Zero; - } - else throw new Error('Undefined stack variabble'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.SATURATING_MUL]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.One; - let _item; - for (let i = 0; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator.mul(_item); - _accumulator = _accumulator.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : _accumulator; - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.ADD]: (state: StateJS, operand: number, data?: any) => { - let _item; - let _accumulator = ethers.constants.Zero; - for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); - if (_item !== undefined) { - _accumulator = _accumulator.add(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.DIV]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator.div(_item); - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.EXP]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator.pow(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.MAX]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - if ((items_.length = operand)) { - state.stack.push(items_.reduce((e, m) => (e.gt(m) ? e : m))); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.MIN]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - if (items_.length === operand) { - state.stack.push(items_.reduce((e, m) => (e.lt(m) ? e : m))); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.MOD]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator.mod(_item); - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.MUL]: (state: StateJS, operand: number, data?: any) => { - let _accumulator = ethers.constants.One; - let _item; - for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); - if (_item !== undefined) { - _accumulator = _accumulator.mul(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - }, - - [VM.Opcodes.SUB]: (state: StateJS, operand: number, data?: any) => { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; - if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { - _item = items_.shift(); - if (_item !== undefined) { - _accumulator = _accumulator.sub(_item); - } - else throw new Error('Undefined stack variables'); - } - if (_accumulator.isNegative()) { - throw new Error('Invalid value (negative value not allowed)'); - } - else state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.ITIERV2_REPORT]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const context_ = operand ? state.stack.splice(-operand) : []; - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { - const account_ = paddedUInt160(item2_); - const iTierV2Contract = new ITierV2( - paddedUInt160(item1_), - this.signer - ); - state.stack.push( - await iTierV2Contract.report(account_, context_) - ); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.ITIERV2_REPORT_TIME_FOR_TIER]: async ( - state: StateJS, - operand: number, - data?: any - ) => { - const context_ = operand ? state.stack.splice(-operand) : []; - const item3_ = state.stack.pop(); - if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { - const tier_ = item3_; - const account_ = paddedUInt160(item2_); - const iTierV2Contract = new ITierV2( - paddedUInt160(item1_), - this.signer - ); - state.stack.push( - await iTierV2Contract.reportTimeForTier(account_, tier_,context_) - ); - } - else throw new Error('Undefined stack variables'); - } - else throw new Error("not valid tier"); - }, - - [VM.Opcodes.SATURATING_DIFF]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ !== undefined) { - const report1_ = paddedUInt256(item1_).substring(2); - const report2_ = paddedUInt256(item2_).substring(2); - let _startIndex = 0; - let _endIndex = 8; - let _result = ''; - let _tierRep1; - let _tierRep2; - - for (let i = 0; i < 8; i++) { - _tierRep1 = BigNumber.from( - '0x' + report1_.slice(_startIndex, _endIndex) - ); - _tierRep2 = BigNumber.from( - '0x' + report2_.slice(_startIndex, _endIndex) - ); - _result += _tierRep1.gt(_tierRep2) - ? paddedUInt32(_tierRep1.sub(_tierRep2)) - : '00000000'; - _startIndex += 8; - _endIndex += 8; - } - state.stack.push(BigNumber.from('0x' + _result)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.SELECT_LTE]: (state: StateJS, operand: number, data?: any) => { - const length_ = operand & 31; - const mode_ = (operand & 96) >> 5; - const logic_ = (operand & 128) >> 7; - const item_ = state.stack.pop(); - let _item; - // array of raw reports - let _reports: string[] = []; - // array of array of each tier's lte report - let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; - let _result = ''; - - //building an array of each tier's report against blockNumber_ - //tiers greater than blockNumber_ will get "ffffffff" - if (item_ !== undefined) { - const blockNumber_ = paddedUInt32(item_); - for (let i = 0; i < length_; i++) { - let _startIndex = 0; - let _endIndex = 8; - _item = state.stack.pop(); - if (_item !== undefined) { - _reports[i] = paddedUInt256(_item).substring(2); - for (let j = 0; j < 8; j++) { - _reportsAtTier[j].push( - blockNumber_ < _reports[i].slice(_startIndex, _endIndex) - ? 'ffffffff' - : _reports[i].slice(_startIndex, _endIndex) - ); - _startIndex += 8; - _endIndex += 8; - } - } - else throw new Error('Undefined stack variables'); - } - } - else throw new Error('Undefined stack variable'); - - // logic_ and mode_ selections - if (logic_) { - for (let i = 0; i < 8; i++) { - if (mode_ === 0) { - _reportsAtTier[i] = [ - _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), - ]; - } - else if (mode_ === 1) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e !== 'ffffffff' - ); - _reportsAtTier[i] = - _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] - : ['ffffffff']; - } - else if (mode_ === 2) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e !== 'ffffffff' - ); - _reportsAtTier[i] = - _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] - : ['ffffffff']; - } - } - } - else { - for (let i = 0; i < 8; i++) { - if (mode_ === 0) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; - } - else if (mode_ === 1) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; - } - else if (mode_ === 2) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; - } - } - } - //building the final report - for (let i = 0; i < 8; i++) { - _result += _reportsAtTier[i][0]; - } - state.stack.push(BigNumber.from('0x' + _result)); - }, - - [VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE]: ( - state: StateJS, - operand: number, - data?: any - ) => { - const endTier_ = operand >> 4; - const startTier_ = operand & 15; - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ !== undefined) { - const _blockNumber = paddedUInt32(item2_); - const _report = paddedUInt256(item1_).substring(2); - let _startIndex = (8 - endTier_) * 8; - let _endIndex = _startIndex + 8; - let _result = _report.slice(0, _startIndex); - const resultLow_ = _report.slice( - _startIndex + (endTier_ - startTier_) * 8 - ); - - for (let i = 0; i < endTier_ - startTier_; i++) { - _result += - _report.slice(_startIndex, _endIndex) > _blockNumber - ? _blockNumber - : _report.slice(_startIndex, _endIndex); - _startIndex += 8; - _endIndex += 8; - } - state.stack.push(BigNumber.from('0x' + _result + resultLow_)); - } - else throw new Error('Undefined stack variables'); - }, - }; -} \ No newline at end of file diff --git a/src/RainJS/SaleJS.ts b/src/RainJS/SaleJS.ts deleted file mode 100644 index 35bdf88..0000000 --- a/src/RainJS/SaleJS.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { BigNumber, Signer } from "ethers"; -import { StateConfig } from "../classes/vm"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; -import { ERC20 } from "../contracts/generics/erc20"; -import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; - - -/** - * @public - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. - * @see Sale.sol in contracts - * - */ -export class SaleJS extends RainJS { - - /** - * SaleJS valid storage range - */ - protected readonly StorageRange = SaleStorage.length; - - /** - * SaleJS valid context length - */ - protected readonly ContextLength = SaleContext.length; - - /** - * Constructor of SaleJS to create a instance of this class with Sale's local opcodes. - * @see RainJS - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a Sale Contract and custom opcode functions, custom STORAGE/CONTEXT opcode functions) - * - */ - constructor( - state: StateConfig, - options?: { - signer?: Signer, - contract?: string, - applyOpFn?: ApplyOpFn, - storageOpFn?: ApplyOpFn, // for overriding the SaleJS's STORAGE opcode function - } - ) { - super( - state, - { - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - } - ); - - // assigning custom functions to the STORAGE/CONTEXT functions - // custom functions should be passed at the time construction - if (options?.storageOpFn) { - this._STORAGE_ = options.storageOpFn; - } - }; - - /** - * key/value pair of STORAGE opcodes of the sale JSVM - */ - protected _STORAGE_: ApplyOpFn = { - - [SaleStorage.RemainingUnits] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract !== undefined) { - const salecontract_ = new Sale(this.contract, this.signer); - const rTKNAddress_ = await salecontract_.token(); - const rTKNContract_ = new ERC20( - rTKNAddress_, - this.signer - ); - state.stack.push( - BigNumber.from( - await rTKNContract_.balanceOf(this.contract) - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleStorage.TotalReserveIn] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract !== undefined) { - const salecontract_ = new Sale(this.contract, this.signer); - const reserveAddress_ = await salecontract_.reserve(); - const reserveContract_ = new ERC20( - reserveAddress_, - this.signer - ); - state.stack.push( - BigNumber.from( - await reserveContract_.balanceOf(this.contract) - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleStorage.TokenAddress] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract !== undefined) { - const salecontract_ = new Sale(this.contract, this.signer); - state.stack.push( - BigNumber.from( - await salecontract_.token() - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleStorage.ReserveAddress] : - async(state: StateJS, operand: number, data?: any) => { - if (this.signer && this.contract !== undefined) { - const salecontract_ = new Sale(this.contract, this.signer); - state.stack.push( - BigNumber.from( - await salecontract_.reserve() - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - }; - -} \ No newline at end of file diff --git a/src/RainJS/types.ts b/src/RainJS/types.ts deleted file mode 100644 index c4be0de..0000000 --- a/src/RainJS/types.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { BigNumber} from 'ethers'; -import { isHexString } from 'ethers/lib/utils'; -import { StateConfig} from '../classes/vm'; - - -// 18 decimals or i.e "DECIMALS" - used for fixed point match -export const eighteenZeros = "1000000000000000000"; - -/** - * type for simulating and storing ITier contract data - */ -export interface itiers { - [address: string]: { - report: { - [wallet: string]: BigNumber - } - } -} - -/** - * type for simulating and storing ERC20token contract data - */ -export interface erc20 { - totalSupply: BigNumber, - decimals: number, - balanceOf: { - [wallet: string]: BigNumber - }, - snapshots?: { - [id: string]: { - totalSupplyAt: BigNumber, - balanceOfAt: { - [wallet: string]: BigNumber - } - } - } -} - -/** - * type for simulating and storing ERC721 contract data - */ -export interface erc721 { - [id: string]: { - ownerOf: string - } -} - -/** - * type for simulating and storing ERC1155 contract data - */ -export interface erc1155 { - [id: string]: { - balanceOf: { - [wallet: string]: BigNumber - } - } -} - -/** - * type for simulating and storing multiple ERC20 tokens - */ -export interface erc20s { - [address: string]: erc20 -} - -/** - * type for simulating and storing multiple ERC721 tokens - */ -export interface erc721s { - [address: string]: erc721 -} - -/** - * type for simulating and storing multiple ERC1155 tokens - */ -export interface erc1155s { - [address: string]: erc1155 -} - -/** - * type for simulating and storing orderbook Vaults data - */ -export interface vaults { - [owner: string]: { - [tokenAddress: string]: { - vaultId: { - [vaultId: string]: BigNumber - } - } - } -} - -/** - * type for simulating and storing orderbook Order data - */ -export interface order { - orderHash: string, - owner: string, - inputToken: string, - outputToken: string, - inputVaultId: string, - outputVaultId: string, - vmConfig: StateConfig -} - -/** - * type for simulating and storing multiple orderbook Orders - */ -export interface orders { - [orderHash: string]: order -} - -/** - * type for bounty config - */ -export interface bountyConfig { - aVaultId: string, - bVaultId: string, -} - -/** - * type for simulating and storing matched order cleared funds - */ -export interface clearedFunds { - [orderHash: string]: BigNumber -} - -/** - * type for simulating and storing matched order counterparty cleared funds - */ -export interface clearedCounterPartyFunds { - [orderHash: string]: { - [counterPartyAddress: string]: BigNumber - } -} - -/** - * function to check if the strings values of the simulatioin types are correct - * - * @param address - address string to check - * - * @returns boolean - */ -export function isValidString(address: string) : boolean { - if (isHexString(address) || !isNaN(Number(address))) { - return true - } - else { - try { - BigInt(address) - return true - } - catch(err) { - return false - } - } -} \ No newline at end of file diff --git a/src/RainJS/vmSimulation.ts b/src/RainJS/vmSimulation.ts deleted file mode 100644 index 92be0bb..0000000 --- a/src/RainJS/vmSimulation.ts +++ /dev/null @@ -1,1360 +0,0 @@ -import { SaleJS } from "./SaleJS"; -import { BigNumber, ethers } from "ethers"; -import { OrderbookJS } from "./OrderbookJS"; -import { Tier } from "../classes/iTierV2"; -import { StateConfig, VM } from "../classes/vm"; -import { SaleStorage } from "../contracts/sale"; -import { CombineTierJS } from "./CombineTierJS"; -import { OrderBook } from "../contracts/orderBook"; -import { EmissionsERC20JS } from "./EmissionsERC20JS"; -import { ApplyOpFn, RainJS, StateJS } from "./RainJS"; -import { - parseUnits, - paddedUInt32, - paddedUInt160, - paddedUInt256, -} from "../utils"; -import { - order, - erc20s, - itiers, - orders, - vaults, - erc721s, - erc1155s, - clearedFunds, - bountyConfig, - erc20,eighteenZeros, - clearedCounterPartyFunds -} from "./types"; - - - -/** - * @public - * A class for creating a simulation environment for running pure RainVM off-chain using JSVM. - */ -export class vmSimulation { - - /** - * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, - * and updating storage types after method calls and needs to be a string number or hex string. - */ - public sender?: string; - - /** - * A property of type erc20s that act like a storage for simulation and stores the erc20 token data. - * this is needed for IERC20 related opcodes @see erc20s and @see erc20 - */ - public erc20s: erc20s = {}; - - /** - * A property of type erc721s that act like a storage for simulation and stores the erc721 token data. - * this is needed for IERC721 related opcodes @see erc721s and @see erc721 - */ - public erc721s: erc721s = {}; - - /** - * A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. - * this is needed for IERC1155 related opcodes @see erc1155s and @see erc1155 - */ - public erc1155s: erc1155s = {}; - - /** - * A property of type itiers that act like a storage for simulation of Rain tier contracts. - * this is needed for ITIERV2_REPORT and ITIERV2_REPORT_TIME_FOR_TIER opcodes. @see itiers - */ - public iTiers: itiers = {}; - - /** - * The contract address of this simulation that the simulation is done for. this is needed for THIS_ADDRESS opcode - * simulation and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address?: string; - - /** - * The script to simulate @see StateConfig - */ - public script?: StateConfig; - - /** - * A property for producing timestamp for the class which will be used in BLOCK_TIMESTAMP opcode - * but BLOCK_TIMESTAMP opcode can also be passed at runtime - */ - public timestamp?: number; - - /** - * A property for producing block number for the class which will be used in BLOCK_NUMBER opcode - * but BLOCK_NUMBER opcode can also be passed at runtime - */ - public blockNumber?: number; - - /** - * Opcodes functions body for simulation that use the class properties/types. @see ApplyOpFn and @see OpcodeFN - */ - protected OpFns: ApplyOpFn = { - - [VM.Opcodes.BLOCK_NUMBER]: (state: StateJS, operand: number, data?: any) => { - if (data && data.blockNumber !== undefined) { - state.stack.push(BigNumber.from(data.blockNumber)) - } - else if (this.blockNumber !== undefined) { - state.stack.push(BigNumber.from(this.blockNumber)) - } - else throw new Error("undefined block number") - }, - - [VM.Opcodes.BLOCK_TIMESTAMP]: (state: StateJS, operand: number, data?: any) => { - if (data && data.timestamp !== undefined) { - state.stack.push(BigNumber.from(data.timestamp)) - } - if (this.timestamp !== undefined) { - state.stack.push(BigNumber.from(this.timestamp)) - } - else throw new Error("undefined block timestamp") - }, - - [VM.Opcodes.SENDER]: (state: StateJS, operand: number, data?: any) => { - if (this.sender !== undefined) - state.stack.push(BigNumber.from(this.sender)) - else throw new Error("undefined sender") - }, - - [VM.Opcodes.THIS_ADDRESS]: (state: StateJS, operand: number, data?: any) => { - if (this.address !== undefined) - state.stack.push(BigNumber.from(this.address)) - else throw new Error("undefined contract") - }, - - [VM.Opcodes.ITIERV2_REPORT]: (state: StateJS, operand: number, data?: any) => { - const context_ = operand ? state.stack.splice(-operand) : []; - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ !== undefined && context_.length !== operand) { - const account_ = paddedUInt160(item2_); - let iTierV2Contract; - if (this.iTiers[paddedUInt160(item1_)] !== undefined) { - iTierV2Contract = this.iTiers[paddedUInt160(item1_)]; - } - else throw new Error("iTier contract does not exist") - - if (iTierV2Contract.report[account_] !== undefined) { - state.stack.push(iTierV2Contract.report[account_]); - } - else throw new Error("report doesn not exist for this address") - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.ITIERV2_REPORT_TIME_FOR_TIER]: (state: StateJS, operand: number, data?: any) => { - const context_ = operand ? state.stack.splice(-operand) : []; - const item3_ = state.stack.pop(); - if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined && context_.length === operand) { - let iTierV2Contract; - const tier_ = item3_; - const account_ = paddedUInt160(item2_); - if (this.iTiers[paddedUInt160(item1_)] !== undefined) { - iTierV2Contract = this.iTiers[paddedUInt160(item1_)]; - } - else throw new Error("iTier contract does not exist") - if (iTierV2Contract.report[account_] !== undefined) { - state.stack.push( - BigNumber.from( - paddedUInt256(iTierV2Contract.report[account_]) - .substring(2) - .slice( - (-(tier_.toNumber() - 8) * 8), - (-(tier_.toNumber() - 9) * 8) - ) - ) - ) - } - else throw new Error("report doesn not exist for this address") - } - else throw new Error('Undefined stack variables'); - } - else throw new Error("not valid tier"); - }, - - [VM.Opcodes.IERC20_BALANCE_OF]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - let erc20Contract_; - if (this.erc20s[erc20Address_] !== undefined) { - erc20Contract_ = this.erc20s[erc20Address_]; - } - else throw new Error("erc20 token does not exist") - state.stack.push(erc20Contract_.balanceOf[account_] ?? ethers.constants.Zero); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC20_TOTAL_SUPPLY]: (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - const erc20Address_ = paddedUInt160(item_); - let erc20Contract_; - if (this.erc20s[erc20Address_] !== undefined) { - erc20Contract_ = this.erc20s[erc20Address_]; - } - else throw new Error("erc20 token does not exist") - state.stack.push(erc20Contract_.totalSupply); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.IERC721_BALANCE_OF]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - const account_ = paddedUInt160(item2_); - const erc721Address_ = paddedUInt160(item1_); - let erc721Contract_; - if (this.erc721s[erc721Address_] !== undefined) { - erc721Contract_ = this.erc721s[erc721Address_] - } - else throw new Error("erc721 token does not exist") - let counter = 0; - for (let i = 0; i < Object.keys(erc721Contract_).length; i++) { - if (Object.values(erc721Contract_)[i].ownerOf === account_) counter++ - } - state.stack.push(BigNumber.from(counter)); - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC721_OWNER_OF]: (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - const tokenId_ = item2_.toNumber(); - const erc721Address_ = paddedUInt160(item1_); - let erc721Contract_; - if (this.erc721s[erc721Address_] !== undefined) { - erc721Contract_ = this.erc721s[erc721Address_] - } - else throw new Error("erc721 token does not exist") - if (erc721Contract_[tokenId_] !== undefined) { - state.stack.push( - BigNumber.from(erc721Contract_[tokenId_].ownerOf) - ) - } - else throw new Error("token ID doesn not exist") - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.IERC1155_BALANCE_OF]: (state: StateJS, operand: number, data?: any) => { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ !== undefined) { - const id_ = item3_.toNumber(); - const account_ = paddedUInt160(item2_); - const erc1155Address_ = paddedUInt160(item1_); - let erc1155Contract_; - if (this.erc1155s[erc1155Address_] !== undefined) { - erc1155Contract_ = this.erc1155s[erc1155Address_] - } - else throw new Error("erc1155 token doesn not exist") - if (erc1155Contract_[id_] !== undefined) { - state.stack.push(erc1155Contract_[id_].balanceOf[account_] ?? ethers.constants.Zero); - } - else throw new Error("token ID doesn not exist") - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: (state: StateJS, operand: number, data?: any) => { - const item3_ = state.stack.splice(-(operand + 1)); - const item2_ = state.stack.splice(-(operand + 1)); - const item1_ = state.stack.pop(); - if ( - item1_ && - item2_ && - item3_ && - item2_.length === item3_.length - ) { - const tokenIds_: number[] = []; - for (let i = 0; i < item3_.length; i++) { - tokenIds_.push(item3_[i].toNumber()); - } - const accounts_: string[] = []; - for (let i = 0; i < item2_.length; i++) { - accounts_.push(paddedUInt160(item2_[i])); - } - const erc1155Address_ = paddedUInt160(item1_); - let erc1155Contract_; - if (this.erc1155s[erc1155Address_] !== undefined) { - erc1155Contract_ = this.erc1155s[erc1155Address_] - } - else throw new Error("erc1155 token doesn not exist") - let balanceOfBatch: BigNumber[] = []; - for (let i = 0; i < tokenIds_.length; i++) { - if (Object.keys(erc1155Contract_).includes(tokenIds_[i].toString())) { - balanceOfBatch.push( - erc1155Contract_[tokenIds_[i]].balanceOf[accounts_[i]] ?? ethers.constants.Zero - ) - } - } - state.stack.push( - ...balanceOfBatch - ); - } - else throw new Error('Undefined stack variable'); - }, - - [VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT]: (state: StateJS, operand: number, data?: number) => { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ !== undefined) { - const snapshotId_ = item3_.toNumber(); - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - let erc20Contract_; - if (this.erc20s[erc20Address_] !== undefined) { - erc20Contract_ = this.erc20s[erc20Address_]; - } - else throw new Error("erc20 token does not exist") - if (erc20Contract_.snapshots && erc20Contract_.snapshots[snapshotId_] !== undefined) { - state.stack.push(erc20Contract_.snapshots[snapshotId_].balanceOfAt[account_] ?? ethers.constants.Zero); - } - else throw new Error("no snapshot has created for this token") - } - else throw new Error('Undefined stack variables'); - }, - - [VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT]: (state: StateJS, operand: number, data?: number) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - const snapshotId_ = item2_.toNumber(); - const erc20Address_ = paddedUInt160(item1_); - let erc20Contract_; - if (this.erc20s[erc20Address_] !== undefined) { - erc20Contract_ = this.erc20s[erc20Address_]; - } - else throw new Error("erc20 token does not exist") - if (erc20Contract_.snapshots && erc20Contract_.snapshots[snapshotId_] !== undefined) { - state.stack.push(erc20Contract_.snapshots[snapshotId_].totalSupplyAt); - } - else throw new Error("no snapshot has created for this token") - } - else throw new Error('Undefined stack variables'); - } - } - - /** - * Method to set the class sender property - * - * @param senderAddress - a string number/hex string - */ - public setSender(senderAddress: string) { - this.sender = paddedUInt160(senderAddress); - } - - /** - * Method to set the class address property - * - * @param contractAddress - a string number/hex string - */ - public setContractAddress(contractAddress: string) { - this.address = paddedUInt160(contractAddress); - } - - /** - * Method to set the class script - * - * @param script - A StateConfig - */ - public setScript(script: StateConfig) { - this.script = script; - } - - /** - * Method to add assets i.e erc20/721/1155 types objects - * - * @param erc20s - An object of type erc20s - * @param erc721s - An object of type erc721s - * @param erc1155s - An object of type erc1155s - */ - public addAssets(erc20s?: erc20s, erc721s?: erc721s, erc1155s?: erc1155s) { - if (erc20s) { - for (let i = 0; i < Object.keys(erc20s).length; i++) { - if (Object.keys(this.erc20s).includes(Object.keys(erc20s)[i])) { - delete this.erc20s[Object.keys(erc20s)[i]] - } - } - this.erc20s = {...this.erc20s, ...erc20s} - } - if (erc721s) { - for (let i = 0; i < Object.keys(erc721s).length; i++) { - if (Object.keys(this.erc721s).includes(Object.keys(erc721s)[i])) { - delete this.erc721s[Object.keys(erc721s)[i]] - } - } - this.erc721s = {...this.erc721s, ...erc721s} - } - if (erc1155s) { - for (let i = 0; i < Object.keys(erc1155s).length; i++) { - if (Object.keys(this.erc1155s).includes(Object.keys(erc1155s)[i])) { - delete this.erc1155s[Object.keys(erc1155s)[i]] - } - } - this.erc1155s = {...this.erc1155s, ...erc1155s} - } - } - - /** - * Method to add tier contract types objects to the class (iTiers) - * - * @param iTiers - An Object of itiers type - */ - public addITiers (iTiers: itiers) { - for (let i = 0; i < Object.keys(iTiers).length; i++) { - if (Object.keys(this.iTiers).includes(Object.keys(iTiers)[i])) { - delete this.iTiers[Object.keys(iTiers)[i]] - } - } - this.iTiers = { - ...this.iTiers, - ...iTiers - } - } - - /** - * Method to run the script using JSVM - * - * @param data - (optional) the additional data that needs to be passed at the runtime such as timestamp used in BLOCK_TIMESTAMP opcode. - * @param index - (optional) the ENTRYPOINT or the index in the script sources to run - * - * @returns An array of BigNumbers, which are the stacked result of the script - */ - public async runScript (data?: any, index?: number): Promise { - if (this.script !== undefined) { - let simulation = new RainJS( - this.script, - {applyOpFn: this.OpFns} - ) - let result = simulation.run(data, index); - return result; - } - else throw new Error("no script to execute") - } -} - -/** - * @public - * A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. - */ -export class SaleSimulation extends vmSimulation { - - /** - * The sale address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * The reedeemable token of this sale i.e rTKN which needs to a string number or hex string @see erc20 - */ - public token: erc20; - - /** - * The reserve token of this sale as an erc20 type object @see erc20 - */ - public reserve: erc20; - - /** - * The reserve token addres of this sale as an erc20 type object - */ - public tokenAddress: string; - - /** - * The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string - */ - public reserveAddress: string; - - /** - * Constructor of this class - * - * @param address - A string number or hex string - * @param tokenAddress - A string number or hex string of the rTKN address - * @param reserveAddress - A string number or hex string of the reserve token address - * @param token - the rTKN - * @param reserve - the reserve token - */ - constructor ( - address: string, - tokenAddress: string, - reserveAddress: string, - token: erc20, - reserve: erc20 - ) { - super(); - this.token = token; - this.address = paddedUInt160(address); - this.reserve = reserve; - this.tokenAddress = paddedUInt160(tokenAddress); - this.reserveAddress = paddedUInt160(reserveAddress); - - if (this.erc20s[this.tokenAddress] === undefined) { - this.erc20s[this.tokenAddress] = this.token; - } - if (this.erc20s[this.reserveAddress] === undefined) { - this.erc20s[this.reserveAddress] = this.reserve; - } - if (this.erc20s[this.tokenAddress].balanceOf[this.address] === undefined) { - this.erc20s[this.tokenAddress].balanceOf[this.address] = this.token.balanceOf[this.address] - } - if (this.erc20s[this.reserveAddress].balanceOf[this.address] === undefined) { - this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address] - } - } - - /** - * Sale storage opcodes's functions body that use the class properties/types. @see ApplyOpFn and @see OpcodeFN - */ - private storageOps: ApplyOpFn = { - [SaleStorage.RemainingUnits]: (state: StateJS, operand: number, data?: any) => { - state.stack.push(this.token.balanceOf[this.address]) - }, - [SaleStorage.TotalReserveIn]: (state: StateJS, operand: number, data?: any) => { - state.stack.push(this.reserve.balanceOf[this.address]) - }, - [SaleStorage.TokenAddress]: (state: StateJS, operand: number, data?: any) => { - state.stack.push(BigNumber.from(this.tokenAddress)) - }, - [SaleStorage.ReserveAddress]: (state: StateJS, operand: number, data?: any) => { - state.stack.push(BigNumber.from(this.reserveAddress)) - } - }; - - /** - * Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. - * requires the class's sender property to be defined - * - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns a boolean represting if the sale can live (active status - 1) or not - */ - public async canLive(timestamp?: number, blockNumber?: number) : Promise { - let canLive: boolean; - const canLive_entrypoint = 0; - if (this.script && this.sender !== undefined) { - let simulation = new SaleJS( - this.script, - {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} - ) - const result_ = await simulation.run( - {timestamp, blockNumber}, - canLive_entrypoint - ); - canLive = result_[0].isZero() ? false : true; - } - else throw new Error("no script or sender to execute canLive"); - return canLive; - } - - /** - * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. - * requires the class's sender property to be defined - * - * @param units - Units to get the calculation for - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @return a pair of BigNumbers represting amount and price - */ - public async calculateBuy( - units: number, - timestamp?: number, - blockNumber?: number - ): Promise<[BigNumber, BigNumber]> { - let maxUnits; - let price; - const amount_price_entrypoint = 1; - - if (this.script && this.sender !== undefined) { - let simulation = new SaleJS( - this.script, - {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} - ) - const result_ = await simulation.run( - {context: [units], timestamp, blockNumber}, - amount_price_entrypoint - ); - maxUnits = result_[result_.length - 2]; - price = result_[result_.length - 1]; - } - else throw new Error("no script or sender to execute calculateBuy") - return [maxUnits, price]; - } - - /** - * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. - * requires the class's sender property to be defined. - * - * @remark after running this method all the defined class's related types/storage will get updated with new - * values that are result of the JSVM running the script. - * - * @param units - Units to get the calculation for - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @return void - */ - public async buy( - units: number, - timestamp?: number, - blockNumber?: number - ): Promise { - const amount_price_entrypoint = 1; - - if (this.script && this.sender !== undefined) { - let simulation = new SaleJS( - this.script, - {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} - ) - const result_ = await simulation.run( - {context: [units], timestamp, blockNumber}, - amount_price_entrypoint - ); - const maxUnits = result_[result_.length - 2]; - const price = result_[result_.length - 1]; - const Value_ = (maxUnits.mul(price)).div(eighteenZeros); - - if (Value_.lte(this.erc20s[this.reserveAddress].balanceOf[this.sender])) { - if (this.token.balanceOf[this.address].gte(maxUnits)) { - - this.reserve.balanceOf[this.address] = this.reserve.balanceOf[this.address].add(Value_); - this.token.balanceOf[this.address] = this.token.balanceOf[this.address].sub(maxUnits); - - this.erc20s[this.reserveAddress].balanceOf[this.address] = - this.erc20s[this.reserveAddress].balanceOf[this.address] - .add(Value_); - - this.erc20s[this.tokenAddress].balanceOf[this.address] = - this.erc20s[this.tokenAddress].balanceOf[this.address] - .sub(maxUnits); - - this.erc20s[this.reserveAddress].balanceOf[this.sender] = - this.erc20s[this.reserveAddress].balanceOf[this.sender] - .sub(Value_); - - this.erc20s[this.tokenAddress].balanceOf[this.sender] = - this.erc20s[this.tokenAddress].balanceOf[this.sender] - ? this.erc20s[this.tokenAddress].balanceOf[this.sender].add(maxUnits) - : maxUnits; - - this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; - this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; - - } - else { - this.reserve.balanceOf[this.address] = - this.reserve.balanceOf[this.address] - .add((this.token.balanceOf[this.address].mul(price)).div(eighteenZeros)); - - this.erc20s[this.tokenAddress].balanceOf[this.sender] = - this.erc20s[this.tokenAddress].balanceOf[this.sender] - ? this.erc20s[this.tokenAddress].balanceOf[this.sender] - .add(this.erc20s[this.tokenAddress].balanceOf[this.sender]) - : this.token.balanceOf[this.address]; - - this.erc20s[this.reserveAddress].balanceOf[this.sender] = - this.erc20s[this.reserveAddress].balanceOf[this.sender] - .sub((this.erc20s[this.tokenAddress].balanceOf[this.sender].mul(price)).div(eighteenZeros)); - - this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; - this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; - - this.token.balanceOf[this.address] = ethers.constants.Zero; - - this.erc20s[this.tokenAddress].balanceOf[this.address] = ethers.constants.Zero; - this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address]; - } - } - else throw new Error("insufficient balance") - } - else throw new Error("no script or sender to perform the buy") - } -} - - -/** - * @public - * A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. - * - * @remark - * this class is compatible with @see erc20 interface and @see itiers interface with using its address - */ -export class EmissionSmiulation extends vmSimulation { - - /** - * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, - * and updating storage types after method calls and needs to be a string number or hex string. - */ - public sender: string; - - /** - * The current totalSupply of the emissions token which can increase everytime a successful mint happens - */ - public totalSupply: BigNumber = ethers.constants.Zero; - - /** - * The decimals value of the emissions token which is 18 - */ - public readonly decimals: number = 18 - - /** - * The report of each claimant which is compatible and can be stored in @see itiers interface as well - */ - public report: {[wallet: string]: BigNumber} = {}; - - /** - * The balance of emission token holders which is compatible with @see erc20 interface - */ - public balanceOf: {[wallet: string]: BigNumber} = {}; - - /** - * Constructor of this class - * - * @param address - this EmissionsERC20 class adress which needs to be a string number or hex string - * @param sender - the sender which needs to be string number or hex string - * @param reports - the reports of claimants - * @param balances - the balances of token holders - * @param initialSupply - (optional) emissions token initial supply for the sender - */ - constructor ( - address: string, - sender: string, - reports: {[wallet: string]: BigNumber} = {}, - balances: {[wallet: string]: BigNumber} = {}, - initialSupply: BigNumber = ethers.constants.Zero, - ) { - super(); - this.address = paddedUInt160(address); - this.sender = paddedUInt160(sender); - this.report = reports; - this.balanceOf = balances; - this.totalSupply = initialSupply; - if (initialSupply.gt(0)) { - if (this.erc20s[this.address] === undefined) { - this.erc20s[this.address] = { - totalSupply: this.totalSupply, - decimals: 18, - balanceOf: {[this.sender]: BigNumber.from(initialSupply)} - } - } - if ( - this.erc20s[this.address].balanceOf[this.sender] === undefined || - this.erc20s[this.address].balanceOf[this.sender].isZero() - ) { - this.erc20s[this.address].balanceOf[this.sender] = BigNumber.from(initialSupply) - } - if (this.balanceOf[this.sender] === undefined) { - this.balanceOf[this.sender] = BigNumber.from(initialSupply) - } - else throw new Error("undefined sender") - } - } - - /** - * Method to calculate the cliamable amount for the claimant by running the script by JSVM - * - * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @return A BigNumber that represents the claimable amount - */ - public async calculateClaim( - claimantAccount: string, - timestamp?: number, - blockNumber?: number - ) : Promise { - const entrypoint = 0; - const _claimantAccount = paddedUInt160(claimantAccount) - - if (this.script !== undefined) { - if (this.report[_claimantAccount] === undefined) { - this.report[_claimantAccount] = ethers.constants.Zero; - } - let simulation = new EmissionsERC20JS( - this.script, - {applyOpFn: this.OpFns} - ); - let claimUnits = await simulation.run( - {context: [_claimantAccount], timestamp, blockNumber}, - entrypoint - ); - return claimUnits[0] - } - else throw new Error("no script or sender to execute calculateClaim"); - } - - /** - * The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM - * - * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @return the minted amount in a BigNumber format - */ - public async claim ( - claimantAccount: string, - timestamp?: number, - blockNumber?: number - ) : Promise { - const entrypoint = 0; - const _claimantAccount = paddedUInt160(claimantAccount) - - if (this.script !== undefined) { - if (this.report[_claimantAccount] === undefined) { - this.report[_claimantAccount] = ethers.constants.Zero; - } - - if (this.balanceOf[_claimantAccount] === undefined) { - this.balanceOf[_claimantAccount] = ethers.constants.Zero; - } - - if (this.erc20s[this.address].balanceOf[_claimantAccount] === undefined) { - this.erc20s[this.address].balanceOf[_claimantAccount] = ethers.constants.Zero; - } - - let simulation = new EmissionsERC20JS( - this.script, - {applyOpFn: this.OpFns} - ); - let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp : timestamp!).repeat(8))) - let mintUnits = await simulation.run( - {context: [_claimantAccount], timestamp, blockNumber}, - entrypoint - ); - - if (mintUnits[0].gt(ethers.constants.Zero)) { - this.totalSupply = this.totalSupply.add(mintUnits[0]); - this.balanceOf[_claimantAccount] = this.balanceOf[_claimantAccount].add(mintUnits[0]); - this.report[_claimantAccount] = newReport; - this.erc20s[this.address].balanceOf[_claimantAccount] = - this.erc20s[this.address].balanceOf[_claimantAccount].add(mintUnits[0]); - } - - return mintUnits[0]; - } - throw new Error("no script to execute") - } -} - - -/** - * @public - * A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. - * - * @remark - * this class is compatible with @see itiers interface with using its address - */ -export class CombinetierSimulation extends vmSimulation { - - /** - * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * The report of each account which is compatible and can be stored in @see itiers interface as well - */ - public report: {[wallet: string]: BigNumber} = {}; - - /** - * Constructor of this class - * - * @param address - this CombineTier class adress which needs to be a string number or hex string - * @param reports - (optional) the initial reports object - */ - constructor (address: string, reports?: {[wallet: string]: BigNumber}) { - super(); - this.address = address; - if (reports !== undefined) { - this.report = reports; - } - } - - /** - * Method to get the report for an account which then will be stored in the class's report property and can be - * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of - * the account it is been called for - * - * @param account - the account to get and update the report for which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns the report of the account in a 64 char length hex string - */ - public async setReport( - account: string, - timestamp?: number, - blockNumber?: number - ): Promise { - const entrypoint = 0; - const _account = paddedUInt160(account) - - if (this.script !== undefined) { - let simulation = new CombineTierJS( - this.script, - {applyOpFn: this.OpFns} - ); - const newReport = (await simulation.run( - {context: [_account], timestamp, blockNumber}, - entrypoint - ))[0]; - this.report[_account] = newReport; - - return paddedUInt256(newReport); - } - else throw new Error("no script to execute") - } -} - - -/** - * @public - * A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. - * or to be used to perform off-chain matchmaking based on. - */ -export class OrderbookSimulation extends vmSimulation { - - /** - * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, - * and updating storage types after method calls and needs to be a string number or hex string. - */ - public sender: string; - - /** - * The property that stores all the data of the class's vaults @see vault - */ - public vaults: vaults = {}; - - /** - * The property that stores all the data of the class's orders, @see orders and @see order - */ - public orders: orders = {}; - - /** - * The property that stores all the data of an order's total cleared amount, @see clearedFunds - */ - public clearedFunds: clearedFunds = {}; - - /** - * The property that stores all the data of an order's total cleared amount to a specific counterparty address - * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds - */ - public clearedCounterPartyFunds: clearedCounterPartyFunds = {}; - - /** - * Constructor of this class - * - * @param address - this Orderbook's class adress which needs to be a string number or hex string - * @param sender - the sender which needs to be string number or hex string - * @param vaults - (optinal) the initial vaults object (vaults storage) - * @param orders - (optional) the initial orders - */ - constructor(address: string, sender: string, vaults?: vaults, orders?: orders) { - super(); - this.address = paddedUInt160(address); - this.sender = paddedUInt160(sender); - if (vaults !== undefined) { - this.vaults = vaults; - } - if (orders !== undefined) { - this.orders = orders; - } - } - - /** - * Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. @see ApplyOpFn and @see OpcodeFN - */ - protected OpFns: ApplyOpFn = { - - ...this.OpFns, - - [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: - (state: StateJS, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - const orderHash = paddedUInt256(item_); - if (this.clearedFunds[orderHash] !== undefined) { - state.stack.push(this.clearedFunds[orderHash]); - } - else throw new Error("no record of cleared funds for this orderHash") - } - else throw new Error("undefined stack value") - }, - [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: - (state: StateJS, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - const orderHash = paddedUInt256(item1_); - const counterParty = paddedUInt160(item2_); - if (this.clearedCounterPartyFunds[orderHash][counterParty] !== undefined) { - state.stack.push(this.clearedCounterPartyFunds[orderHash][counterParty]) - } - else throw new Error("no record of cleared funds for this orderHash's counterparty") - } - else throw new Error("undefined stack values") - } - }; - - /** - * Method to submit an order into the class orders - * - * @param order - the order to add - * @return void - */ - public addOrder(order: order): void { - this.orders[order.orderHash] = order; - - if (this.vaults[order.owner] === undefined) { - this.vaults[order.owner] = { - [order.inputToken]: { - vaultId: { - [order.inputVaultId]: ethers.constants.Zero - } - }, - [order.outputToken]: { - vaultId: { - [order.outputVaultId]: ethers.constants.Zero - } - } - } - } - if (this.vaults[order.owner][order.inputToken] === undefined) { - this.vaults[order.owner][order.inputToken] = { - vaultId: { - [order.inputVaultId]: ethers.constants.Zero - } - } - } - if (this.vaults[order.owner][order.outputToken] === undefined) { - this.vaults[order.owner][order.outputToken] = { - vaultId: { - [order.outputVaultId]: ethers.constants.Zero - } - } - } - if (this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] === undefined) { - this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] = ethers.constants.Zero; - } - if (this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] === undefined) { - this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] = ethers.constants.Zero - } - } - - - /** - * Method to remove an order from the class's orders - * - * @param order - the order to remove - * @return void - */ - public removeOrder(order: order | string): void { - if (typeof order === "string") { - delete(this.orders[order]) - } - else { - delete(this.orders[order.orderHash]) - } - } - - /** - * Method to dposit some units of token of tokenAddress into the vaultId of the sender - * - * @param sender - sender that deposit is done for - * @param tokenAddress - the address of the token - * @param vaultId - the vault ID to deposit - * @param units - amount of token to deposit - * @param tokenDecimals - (optional) decimals of the token, 18 will be used as default - * - * @return void - */ - public deposit ( - sender: string, - tokenAddress: string, - vaultId: string, - units: number, - tokenDecimals: number = 18 - ): void { - const _sender = paddedUInt160(sender); - const units_ = parseUnits( - units.toString(), - tokenDecimals - ); - if (this.erc20s[tokenAddress].balanceOf[_sender]) { - if (this.erc20s[tokenAddress].balanceOf[_sender].gte(units_)) { - this.erc20s[tokenAddress].balanceOf[_sender] = - this.erc20s[tokenAddress].balanceOf[_sender].sub(units_) - } - else throw new Error("insufficient balance") - } - if (this.erc20s[tokenAddress].balanceOf[this.address]) { - this.erc20s[tokenAddress].balanceOf[this.address] = - this.erc20s[tokenAddress].balanceOf[this.address].add(units_) - } - else { - this.erc20s[tokenAddress] = { - balanceOf: { - [this.address]: units_ - }, - decimals: tokenDecimals, - totalSupply: units_ - } - } - if (this.vaults[_sender] === undefined) { - this.vaults[_sender] = { - [tokenAddress]: { - vaultId: { - [vaultId]: ethers.constants.Zero - } - } - } - } - if (this.vaults[_sender][tokenAddress] === undefined) { - this.vaults[_sender][tokenAddress] = { - vaultId: { - [vaultId]: ethers.constants.Zero - } - } - } - if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { - this.vaults[_sender][tokenAddress].vaultId[vaultId] = ethers.constants.Zero; - } - this.vaults[_sender][tokenAddress].vaultId[vaultId] = - this.vaults[_sender][tokenAddress].vaultId[vaultId].add(units_); - } - - /** - * Method to withdraw some units of token of tokenAddress from VaultId of the sender - * - * @param sender - sender that withdraw is done for - * @param tokenAddress - the address of the token - * @param vaultId - the vault ID to withdraw - * @param units - amount of token to withdraw - * - * @return void - */ - public withdraw ( - sender: string, - tokenAddress: string, - vaultId: string, - units: number, - tokenDecimals: number = 18 - ): void { - const _sender = paddedUInt160(sender); - - if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { - throw new Error("this vault doesnt not exist") - } - else { - const units_ = parseUnits(units.toString(), tokenDecimals); - if (this.erc20s[tokenAddress].balanceOf[_sender]) { - this.erc20s[tokenAddress].balanceOf[_sender] = - this.erc20s[tokenAddress].balanceOf[_sender].add(units_) - } - if (this.erc20s[tokenAddress].balanceOf[this.address]) { - if (this.erc20s[tokenAddress].balanceOf[this.address].gte(units_)) { - this.erc20s[tokenAddress].balanceOf[this.address] = - this.erc20s[tokenAddress].balanceOf[this.address].sub(units_) - } - else this.erc20s[tokenAddress].balanceOf[this.address] = ethers.constants.Zero - } - - this.vaults[_sender][tokenAddress].vaultId[vaultId] = - this.vaults[_sender][tokenAddress].vaultId[vaultId].gte(units_) - ? this.vaults[_sender][tokenAddress].vaultId[vaultId].sub(units_) - : ethers.constants.Zero - } - } - - /** - * Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class - * - * @param a - order A to clear - * @param b - order B to clear - * @param bountyConfig - the BountyConfig type to collect bounties of this clear - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @return void - */ - public async clear ( - a: order, - b: order, - bountyConfig: bountyConfig, - timestamp?: number, - blockNumber?: number - ): Promise { - if (a.vmConfig && b.vmConfig && this.sender !== undefined) { - const entrypoint = 0; - const aJS = new OrderbookJS(a.vmConfig, {applyOpFn: this.OpFns}); - const bJS = new OrderbookJS(b.vmConfig, {applyOpFn: this.OpFns}); - - const aResult_ = await aJS.run( - {context: [a.orderHash, b.owner], timestamp, blockNumber}, - entrypoint - ); - const bResult_ = await bJS.run( - {context: [b.orderHash, a.owner], timestamp, blockNumber}, - entrypoint - ); - - const aOutputMax = aResult_[aResult_.length - 2]; - const bOutputMax = bResult_[bResult_.length - 2]; - const aPrice = aResult_[aResult_.length - 1]; - const bPrice = bResult_[bResult_.length - 1]; - - const aStateChangeOutput = aOutputMax.gt((bOutputMax.mul(bPrice)).div(eighteenZeros)) - ? (bOutputMax.mul(bPrice)).div(eighteenZeros) - : aOutputMax; - const bStateChangeOutput = bOutputMax.gt((aOutputMax.mul(aPrice)).div(eighteenZeros)) - ? (aOutputMax.mul(aPrice)).div(eighteenZeros) - : bOutputMax; - - if (!aStateChangeOutput.isZero() || !bStateChangeOutput.isZero()) { - - const aStateChangeInput = (aStateChangeOutput.mul(aPrice)).div(eighteenZeros); - const bStateChangeInput = (bStateChangeOutput.mul(bPrice)).div(eighteenZeros); - - if (!aStateChangeOutput.sub(bStateChangeInput).isNegative() && !bStateChangeOutput.sub(aStateChangeInput).isNegative()) { - - if (this.vaults[this.sender] === undefined) { - this.vaults[this.sender] = { - [a.outputToken]: { - vaultId: { - [bountyConfig.aVaultId]: ethers.constants.Zero - } - }, - [b.outputToken]: { - vaultId: { - [bountyConfig.bVaultId]: ethers.constants.Zero - } - }, - } - } - - if (this.vaults[this.sender][a.outputToken] === undefined) { - this.vaults[this.sender][a.outputToken] = { - vaultId: { - [bountyConfig.aVaultId]: ethers.constants.Zero - } - } - } - - if (this.vaults[this.sender][b.outputToken] === undefined) { - this.vaults[this.sender][b.outputToken] = { - vaultId: { - [bountyConfig.bVaultId]: ethers.constants.Zero - } - } - } - - if (this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] === undefined) { - this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = ethers.constants.Zero - } - - if (this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] === undefined) { - this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = ethers.constants.Zero - } - - if(this.clearedFunds[a.orderHash] === undefined) { - this.clearedFunds[a.orderHash] = ethers.constants.Zero - } - - if(this.clearedFunds[b.orderHash] === undefined) { - this.clearedFunds[b.orderHash] = ethers.constants.Zero - } - - if(this.clearedCounterPartyFunds[a.orderHash] === undefined) { - this.clearedCounterPartyFunds[a.orderHash] = { - [b.owner]: ethers.constants.Zero - } - } - - if(this.clearedCounterPartyFunds[b.orderHash] === undefined) { - this.clearedCounterPartyFunds[b.orderHash] = { - [a.owner]: ethers.constants.Zero - } - } - - this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = - this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] - .add(aStateChangeOutput.sub(bStateChangeInput)); - - this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = - this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] - .add(bStateChangeOutput.sub(aStateChangeInput)); - - this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId] = - this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].gte(aStateChangeOutput) - ? this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].sub(aStateChangeOutput) - : ethers.constants.Zero; - - this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId] = - this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].gte(bStateChangeOutput) - ? this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].sub(bStateChangeOutput) - : ethers.constants.Zero; - - this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId] = - this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId].add(aStateChangeInput); - - this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId] = - this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId].add(bStateChangeInput); - - this.clearedCounterPartyFunds[a.orderHash][b.owner] = - this.clearedCounterPartyFunds[a.orderHash][b.owner].add(aStateChangeOutput); - - this.clearedCounterPartyFunds[b.orderHash][a.owner] = - this.clearedCounterPartyFunds[b.orderHash][a.owner].add(bStateChangeOutput); - - console.log(` - ******************************************************************** - - Order ${"0x" + a.orderHash.substring(2).padStart(40, "0")} - Successfully Cleared Agaisnt - Order ${"0x" + b.orderHash.substring(2).padStart(40, "0")} - - ******************************************************************** - `); - - } - else console.log("negative clear not possible") - } - } - else console.log("one or more orders have no script"); - } - -} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 666e7a1..a0457ae 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,10 +21,65 @@ export * from './contracts/script-generators/saleScriptGenerator'; export * from './contracts/script-generators/combineTierScriptGenerator'; export * from './contracts/script-generators/emissionsERC20ScriptGenerator'; -export * from './RainJS/RainJS'; -export * from './RainJS/CombineTierJS'; -export * from './RainJS/EmissionsERC20JS'; -export * from './RainJS/SaleJS'; +export * from './jsvm/RainJSVM'; +export * from './jsvm/CombineTierJSVM'; +export * from './jsvm/EmissionsERC20JSVM'; +export * from './jsvm/SaleJSVM'; +export * from './jsvm/types'; + +export * from './jsvm/lib/FixedPointMath'; +export * from './jsvm/lib/SaturatingMath'; +export * from './jsvm/lib/TierReport'; +export * from './jsvm/lib/TierwiseCombine'; + +export * from './jsvm/ops/erc1155/OpERC1155BalanceOf'; +export * from './jsvm/ops/erc1155/OpERC1155BalanceOfBatch'; +export * from './jsvm/ops/erc721/OpERC721BalanceOf'; +export * from './jsvm/ops/erc721/OpERC721OwnerOf'; +export * from './jsvm/ops/erc20/OpERC20BalanceOf'; +export * from './jsvm/ops/erc20/OpERC20TotalSupply'; +export * from './jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt'; +export * from './jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt'; +export * from './jsvm/ops/evm/OpBlockNumber'; +export * from './jsvm/ops/evm/OpCaller'; +export * from './jsvm/ops/evm/OpThisAddress'; +export * from './jsvm/ops/evm/OpTimestamp'; +export * from './jsvm/ops/evm/OpBlockNumber'; +export * from './jsvm/ops/math/OpAdd'; +export * from './jsvm/ops/math/OpDiv'; +export * from './jsvm/ops/math/OpExp'; +export * from './jsvm/ops/math/OpMax'; +export * from './jsvm/ops/math/OpMin'; +export * from './jsvm/ops/math/OpMod'; +export * from './jsvm/ops/math/OpMul'; +export * from './jsvm/ops/math/OpSub'; +export * from './jsvm/ops/math/fixedPoint/OpScale18'; +export * from './jsvm/ops/math/fixedPoint/OpScale18Div'; +export * from './jsvm/ops/math/fixedPoint/OpScale18Mul'; +export * from './jsvm/ops/math/fixedPoint/OpScaleBy'; +export * from './jsvm/ops/math/fixedPoint/OpScaleN'; +export * from './jsvm/ops/math/logic/OpAny'; +export * from './jsvm/ops/math/logic/OpEagerIf'; +export * from './jsvm/ops/math/logic/OpEqualTo'; +export * from './jsvm/ops/math/logic/OpEvery'; +export * from './jsvm/ops/math/logic/OpGreaterThan'; +export * from './jsvm/ops/math/logic/OpIsZero'; +export * from './jsvm/ops/math/logic/OpLessThan'; +export * from './jsvm/ops/math/saturating/OpSaturatingAdd'; +export * from './jsvm/ops/math/saturating/OpSaturatingMul'; +export * from './jsvm/ops/math/saturating/OpSaturatingSub'; +export * from './jsvm/ops/tier/OpITierV2Report'; +export * from './jsvm/ops/tier/OpITierV2ReportTimesForTier'; +export * from './jsvm/ops/tier/OpSaturatingDiff'; +export * from './jsvm/ops/tier/OpSelectLte'; +export * from './jsvm/ops/tier/OpUpdateTimesForTierRange'; + +export * from './jsvm/simulation/CombineTierSimulation'; +export * from './jsvm/simulation/EmissionsERC20Simulation'; +export * from './jsvm/simulation/OrderbookSimulation'; +export * from './jsvm/simulation/SaleSimulation'; +export * from './jsvm/simulation/Matchmaker'; +export * from './jsvm/simulation/vmSimulation'; export * from './contracts/tiers/combineTier'; export * from './contracts/tiers/verifyTier'; @@ -33,4 +88,4 @@ export * from './contracts/generics/erc20'; export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; -export * from './friendlySource'; +export * from './vm/HumanFreindlyRead'; diff --git a/src/jsvm/CombineTierJSVM.ts b/src/jsvm/CombineTierJSVM.ts new file mode 100644 index 0000000..d04d9ae --- /dev/null +++ b/src/jsvm/CombineTierJSVM.ts @@ -0,0 +1,46 @@ +import { StateConfig } from '../classes/vm'; +import { CallOptions, RainJSVM } from './RainJSVM'; +import { CombineTierStorage } from '../contracts/tiers/combineTier'; + + +/** + * @public - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. + * @see CombineTier.sol in contracts + * + */ +export class CombineTierJSVM extends RainJSVM { + + /** + * CombineTierJSVM can have any length for context + */ + protected readonly ContextLength = NaN; + + /** + * CombineTierJSVM valid storage range + */ + protected readonly StorageRange = CombineTierStorage.length; + + /** + * Constructor of CombineTierJSVM to create a instance of this class with CombineTier's local opcodes. + * @see RainJS + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a CombineTier Contract and custom opcode functions) + * + */ + constructor(state: StateConfig, options: CallOptions) { + + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn, + } + ); + } + +} diff --git a/src/jsvm/EmissionsERC20JSVM.ts b/src/jsvm/EmissionsERC20JSVM.ts new file mode 100644 index 0000000..d127cb5 --- /dev/null +++ b/src/jsvm/EmissionsERC20JSVM.ts @@ -0,0 +1,45 @@ +import { StateConfig } from "../classes/vm"; +import { CallOptions, RainJSVM } from "./RainJSVM"; +import { EmissionsERC20Context, EmissionsERC20Storage } from "../contracts/emissionsERC20"; + +/** + * @public - The javascript version of EmissionsERC20JSVM which inherits RainJS with local EmissionsERC20JSVM opcodes. + * @see EmissionsERC20.sol in contracts + * + */ +export class EmissionsERC20JSVM extends RainJSVM { + + /** + * EmissionsERC20JSVM valid storage range + */ + protected readonly StorageRange = EmissionsERC20Storage.length; + + /** + * EmissionsERC20JSVM valid context length + */ + protected readonly ContextLength = EmissionsERC20Context.length; + + /** + * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. + * @see RainJS + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a EmissionsERC20JSVM Contract and custom opcode functions) + * + */ + constructor(state: StateConfig, options: CallOptions) { + + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn + } + ); + } + +} diff --git a/src/jsvm/OrderbookJSVM.ts b/src/jsvm/OrderbookJSVM.ts new file mode 100644 index 0000000..0020545 --- /dev/null +++ b/src/jsvm/OrderbookJSVM.ts @@ -0,0 +1,93 @@ +import { StateConfig } from '../classes/vm'; +import { CallOptions, RainJSVM } from './RainJSVM'; +import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; + + +// @TODO - not complete, local opcodes functions need to be added + +/** + * @public - The javascript version of OrderbookVM which inherits RainJS with local Orderbook opcodes. + * @see Orderbook.sol in contracts + * + */ +export class OrderbookJSVM extends RainJSVM { + + /** + * OrderbookJSVM valid storage range + */ + protected readonly StorageRange = OrderbookStorage.length; + + /** + * OrderbookJSVM valid context length + */ + protected readonly ContextLength = OrderbookContext.length; + + /** + * Constructor of OrderbookJSVM to create a instance of this class with Orderbook's local opcodes. + * @see RainJS + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a Orderbook Contract and custom opcode functions) + * + */ + constructor(state: StateConfig, options: CallOptions) { + + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn + } + ); + } + + // @TODO - write orderbook local opcodes + + // /** + // * + // * @param chainId + // */ + // public setChainId (chainId: number) { + // this.chainId = chainId; + // } + // protected _OPCODE_: ApplyOpFn = { + + // [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async (state: StateJS, operand: number, data?: any) => { + + // if (this.chainId && data.chainId !== undefined) { + // const chainId = this.chainId !== undefined ? this.chainId : data.chainId; + // const EndPoint = AddressBook.getSubgraphEndpoint(chainId); + // let subgraphData = await fetch(EndPoint, { + // method: 'POST', + // headers: { + // 'Content-Type': 'application/json', + // }, + // body: JSON.stringify({ + // query: ` + // query { + // redeemableEscrowDeposits(where: + // {iSaleAddress:"${SALE_ADDRESS}"} + // ) { + // id + + // } + // } + // ` + // }) + // }); + // subgraphData = await subgraphData.json(); + // subgraphData = subgraphData.data.redeemableEscrowDeposits[0]; + + // state.stack.push(BigNumber.from(subgraphData)) + // } + // else throw new Error("undefined chainID") + // }, + + // [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async (state: StateJS, operand: number, data?: any) => {}, + // }; + +} diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts new file mode 100644 index 0000000..d0d5510 --- /dev/null +++ b/src/jsvm/RainJSVM.ts @@ -0,0 +1,440 @@ +import { FnPtrs, StateJSVM } from './types'; +import { StateConfig } from '../classes/vm'; +import { BigNumber, Contract, Signer } from 'ethers'; +import { arrayify, mapToRecord, paddedUInt256 } from '../utils'; +import { IOpMeta, OpMeta } from '../vm/OpMeta'; + + +/** + * Options for instantiating RainJSVM + */ +export type CallOptions = { + signer?: Signer; + contract?: string | Contract; + applyOpFn?: FnPtrs; + storageOpFn?: FnPtrs; + opMeta?: Map; +} + +/** + * @public - The javascript version of the RainVM, basically does the same job RainVM does + * but off-chain. + * @see RainVM in RainVM.sol + * + */ +export class RainJSVM { + + /** + * The result state of the executed Rainjs. + */ + public readonly lastState: BigNumber[] = []; + + /** + * The property of type StateJSVM which that RainJS will run based on. + */ + private readonly state: StateJSVM; + + /** + * It is a property for overriding the opcodes. Need to ba passed at the time of construction + * because the RainJS opcode functions should not change after an instance has be created. + */ + public readonly applyOpFn?: FnPtrs; + + /** + * An ethers Signer. + */ + public signer?: Signer; + + /** + * The contract address of the instance of this class used for THIS_ADDRESS opcode + */ + public self?: string; + + /** + * Object that contains the STORAGE opcode functions (i.e. local opcodes) + */ + protected readonly StorageOps?: FnPtrs; + + /** + * Range of available storage variables accessible by eval + */ + protected readonly StorageRange: number = 0; + + /** + * Length of the valid context argument accessible by eval + */ + protected readonly ContextRange?: number; + + /** + * The constructor of RainJS which initiates the RainJS and also a StateJSVM for a RainVM script. + * + * @param state - A regular StateConfig used to new a StateJSVM object to be used in RainJS. + * @param options - (optional) used for initiating the optional properties (signer, provider, contract and applyOpFn) + */ + constructor(state: StateConfig, options?: CallOptions) { + + let _opmeta = OpMeta; + if(options?.opMeta) { + _opmeta = options.opMeta; + } + this.fnPtrs = mapToRecord(_opmeta, ["jsvmfn"]); + + const stack: BigNumber[] = []; + const argumentsStack: BigNumber[] = []; + const constants: BigNumber[] = []; + const sources: Uint8Array[] = []; + + for (let i = 0; i < state.constants.length; i++) { + constants.push(BigNumber.from(state.constants[i])); + } + for (let i = 0; i < state.sources.length; i++) { + sources.push(arrayify(state.sources[i], { allowMissingPrefix: true })); + } + + this.state = { + stack, + argumentsStack, + constants, + sources, + }; + this.applyOpFn = options?.applyOpFn; + this.signer = options?.signer; + + if (options?.contract instanceof Contract) { + this.self = options.contract.address; + } + if (typeof options?.contract === "string") { + this.self = options.contract; + } + + if (options?.storageOpFn) { + this.StorageOps = options.storageOpFn; + this.StorageRange = Object.keys(options.storageOpFn).length; + } + + } + static opsFromOpMeta(_opmeta: Map): FnPtrs { + throw new Error('Method not implemented.'); + } + + /** + * key/value pair of opcodes and their functions for all standard opcodes + */ + protected readonly fnPtrs: FnPtrs; + + /** + * The main workhorse of RainJS, basically the javascript version of 'eval' method in RainVM.sol. + * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that + * has been passed at the time of cinstruction of a RainJS object. + * @see eval method in RainVM.sol + * + * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there + * are custom opcodes passed at the time of construction ot to pass in some user input value to the script. + * @param entrypoint - used internally for indicating which item in state sources array to execute. the entrypoint to sources. + * + */ + private async eval(data?: any, entrypoint?: number): Promise { + + const _entrypoint = entrypoint ? entrypoint : 0; + + for (let i = 0; i < this.state.sources[_entrypoint].length; i++) { + + if (this.applyOpFn !== undefined) { + + if ( + Object.keys(this.applyOpFn).includes( + this.state.sources[_entrypoint][i].toString() + ) + ) { + await this.applyOpFn[this.state.sources[_entrypoint][i]].call( + this, + this.state, + this.state.sources[_entrypoint][i + 1], + data + ); + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + i++; + } + } + + /** + * It is a protected method used by eval to run the correct function for each opcode in the script. + * For each opcode please @see AllStandardOps + * + * @param state - StateJSVM property used in each opcode function to either read or write data into stack. + * @param opcode - the opcode to dispatch and run the function of that opcode + * @param operand - the addtional info for each opcode to run based on. + * @param data - (optional) used only for zipmap opcode in order to be able to run custom function i.e. applyOpFn + * for zipmap function source. + * + */ + private async dispatch(state: StateJSVM, opcode: number, operand: number, data?: any): Promise { + + await this.fnPtrs[opcode].call(this, state, operand, data); + + } + + /** + * Method to execute the RainJS. + * + * @param data - (optional) Used as additional info for some local opcodes + * or custom opcode functions i.e. applyOpFn. + * + * @returns - An array represting the final state of the RainJS stack. + */ + public async run(data?: any, entrypoint?: number): Promise { + + this.lastState.splice(-this.lastState.length); + await this.eval(data, entrypoint); + this.lastState.push(...this.state.stack.splice(-this.state.stack.length)); + + return this.lastState; + } + + /** + * + */ + private _constant(operand: number, data?: any): void { + + if (operand < this.state.constants.length) { + + if (this.state.constants[operand] !== undefined) { + + this.state.stack.push(this.state.constants[operand]); + } + else throw new Error('out-of-bound constants'); + } + else if (this.state.argumentsStack[operand - this.state.constants.length] !== undefined) { + + this.state.stack.push( + this.state.argumentsStack[operand - this.state.constants.length] + ); + } + else throw new Error('out-of-bound arguments'); + } + + /** + * + */ + private _stack(operand: number, data?: any): void { + + this.state.stack.push(this.state.stack[operand]); + } + + /** + * + */ + private _context(operand: number, data?: any): void { + + if (data?.context && data.context[operand] !== undefined) { + + if (this.ContextRange) { + + if (operand < this.ContextRange) { + + this.state.stack.push( + BigNumber.from(data.context[operand]) + ) + } + else throw new Error("out-of-bounds context") + } + else { + this.state.stack.push( + BigNumber.from(data.context[operand]) + ) + } + } + else throw new Error('Undefined context') + } + + /** + * + */ + private async _storage(operand: number, data?: any): Promise { + + if (this.StorageRange > 0 && operand < this.StorageRange) { + + if (this.StorageOps) { + + if (this.StorageOps[operand]) { + + await this.StorageOps[operand](this.state, operand, data); + } + else throw new Error("no or out-of-bound storage opcode") + } + else throw new Error("undefined storage"); + } + else throw new Error("no or out-of-bound storage opcode"); + } + + /** + * + */ + private _debug(operand: number, data?: any): void { + + if (operand < 4) { + console.log(this.state.stack); + } + else throw new Error('out-of-bound debug operand'); + } + + /** + * + */ + private async _zipmap(operand: number, data?: any): Promise { + + const _entrypoint = operand & 7; + const numberOfVals_ = (operand & 224) >> 5; + const a_ = (operand & 24) >> 3; + const valSize_ = a_ === 3 ? 8 : a_ === 2 ? 16 : a_ === 1 ? 32 : 64; + const loopSize_ = 64 / valSize_; + const items_ = this.state.stack.splice(-(numberOfVals_ + 1)); + let _startIndex = 64 - valSize_; + let _endIndex = 64; + + if (items_.length === numberOfVals_ + 1) { + + for (let i = 0; i < loopSize_; i++) { + + this.state.argumentsStack.splice(-(numberOfVals_ + 1)); + + for (let j = 0; j < items_.length; j++) { + + this.state.argumentsStack.push( + BigNumber.from( + '0x' + + paddedUInt256(items_[j]) + .substring(2) + .slice(_startIndex, _endIndex) + ) + ); + } + + for (let i = 0; i < this.state.sources[_entrypoint].length; i++) { + + if (this.applyOpFn !== undefined) { + + if ( + Object.keys(this.applyOpFn).includes( + this.state.sources[_entrypoint][i].toString() + ) + ) { + this.applyOpFn[this.state.sources[_entrypoint][i]].call( + this, + this.state, + this.state.sources[_entrypoint][i + 1], + data + ); + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + i++; + } + _startIndex -= valSize_; + _endIndex -= valSize_; + } + } + else throw new Error('Undefined stack variables'); + + } + + /** + * + */ + public get constant() { + return this._constant + } + + /** + * + */ + public get stack() { + return this._stack + } + + /** + * + */ + public get context() { + return this._context + } + + /** + * + */ + public get storage() { + return this._storage + } + + /** + * + */ + public get debug() { + return this._debug + } + + /** + * + */ + public get zipmap() { + return this._zipmap + } + + /** + * + * @param signer + * @returns + */ + public connect(signer: Signer): this { + this.signer = signer; + return this; + } + + /** + * + * @param contract + * @returns + */ + public setContract(contract: string | Contract): this { + if (contract instanceof Contract) { + this.self = contract.address; + } + else this.self = contract; + + return this; + } + +} + diff --git a/src/jsvm/SaleJSVM.ts b/src/jsvm/SaleJSVM.ts new file mode 100644 index 0000000..2ec8955 --- /dev/null +++ b/src/jsvm/SaleJSVM.ts @@ -0,0 +1,127 @@ +import { BigNumber } from "ethers"; +import { StateConfig } from "../classes/vm"; +import { CallOptions, RainJSVM } from "./RainJSVM"; +import { ERC20 } from "../contracts/generics/erc20"; +import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; +import { FnPtrs, StateJSVM } from "./types"; + + +/** + * @public - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. + * @see Sale.sol in contracts + * + */ +export class SaleJSVM extends RainJSVM { + + /** + * SaleJSVM valid storage range + */ + protected readonly StorageRange = SaleStorage.length; + + /** + * SaleJSVM valid context length + */ + protected readonly ContextRange = SaleContext.length; + + /** + * Constructor of SaleJSVM to create a instance of this class with Sale's local opcodes. + * @see RainJS + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a Sale Contract and custom opcode functions, custom STORAGE/CONTEXT opcode functions) + * + */ + constructor(state: StateConfig, options?: CallOptions) { + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn, + } + ); + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + if (options?.storageOpFn) { + this.StorageOps = options.storageOpFn; + } + }; + + /** + * key/value pair of STORAGE opcodes of the sale JSVM + */ + protected readonly StorageOps: FnPtrs = { + + [SaleStorage.RemainingUnits] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + const rTKNAddress_ = await salecontract_.token(); + const rTKNContract_ = new ERC20( + rTKNAddress_, + this.signer + ); + state.stack.push( + BigNumber.from( + await rTKNContract_.balanceOf(this.self) + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + + }, + + [SaleStorage.TotalReserveIn] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + const reserveAddress_ = await salecontract_.reserve(); + const reserveContract_ = new ERC20( + reserveAddress_, + this.signer + ); + state.stack.push( + BigNumber.from( + await reserveContract_.balanceOf(this.self) + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + }, + + [SaleStorage.TokenAddress] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + state.stack.push( + BigNumber.from( + await salecontract_.token() + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + }, + + [SaleStorage.ReserveAddress] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + state.stack.push( + BigNumber.from( + await salecontract_.reserve() + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + }, + }; + +} \ No newline at end of file diff --git a/src/jsvm/lib/FixedPointMath.ts b/src/jsvm/lib/FixedPointMath.ts new file mode 100644 index 0000000..44ae376 --- /dev/null +++ b/src/jsvm/lib/FixedPointMath.ts @@ -0,0 +1,42 @@ +import { BigNumber } from "ethers"; +import { eighteenZeros } from "../types"; + + +export const scale18 = (value: BigNumber, scale: number) : BigNumber => { + return scale <= 18 + ? value.mul((10 ** (18 - scale)).toString()) + : value.div((10 ** (scale - 18)).toString()) +} + +export const scaleBy = (value: BigNumber, scale: number) : BigNumber => { + if (scale > 127) { + scale = 256 - scale; + return value.div((10 ** (scale)).toString()); + } + else { + return value.mul((10 ** (scale)).toString()); + } +} + +export const scaleN = (value: BigNumber, scale: number) : BigNumber => { + return scale <= 18 + ? value.div((10 ** (18 - scale)).toString()) + : value.mul((10 ** (scale - 18)).toString()) +} + +export const fixedPointDiv = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { + return (scale <= 18 + ? value1.mul((10 ** (18 - scale)).toString()) + : value1.div((10 ** (scale - 18)).toString()) + ) + .mul(eighteenZeros).div(value2) +} + +export const fixedPointMul = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { + return value2.mul( + scale <= 18 + ? value1.mul((10 ** (18 - scale)).toString()) + : value1.div((10 ** (scale - 18)).toString()) + ) + .div(eighteenZeros) +} \ No newline at end of file diff --git a/src/jsvm/lib/SaturatingMath.ts b/src/jsvm/lib/SaturatingMath.ts new file mode 100644 index 0000000..b1ef65c --- /dev/null +++ b/src/jsvm/lib/SaturatingMath.ts @@ -0,0 +1,28 @@ +import { BigNumber, ethers } from "ethers" + +export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber => { + value1 = value1.add(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; + + return value1; +} + +export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber => { + value1 = value1.mul(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; + + return value1; +} + +export const saturatingSub = (value1: BigNumber, value2: BigNumber) : BigNumber => { + value1 = value1?.sub(value2); + value1 = value1.gt(0) + ? value1 + : ethers.constants.Zero; + + return value1; +} \ No newline at end of file diff --git a/src/jsvm/lib/TierReport.ts b/src/jsvm/lib/TierReport.ts new file mode 100644 index 0000000..935f5cc --- /dev/null +++ b/src/jsvm/lib/TierReport.ts @@ -0,0 +1,28 @@ +import { BigNumber } from "ethers"; +import { paddedUInt256, paddedUInt32 } from "../../utils"; + + +export const updateTimesForTierRange = (report: BigNumber, timestamp: BigNumber, range: number) : BigNumber => { + + const endTier_ = range >> 4; + const startTier_ = range & 15; + const _timestamp = paddedUInt32(timestamp); + const _report = paddedUInt256(report).substring(2); + let _startIndex = (8 - endTier_) * 8; + let _endIndex = _startIndex + 8; + let _result = _report.slice(0, _startIndex); + const resultLow_ = _report.slice( + _startIndex + (endTier_ - startTier_) * 8 + ); + + for (let i = 0; i < endTier_ - startTier_; i++) { + _result += + _report.slice(_startIndex, _endIndex) > _timestamp + ? _timestamp + : _report.slice(_startIndex, _endIndex); + _startIndex += 8; + _endIndex += 8; + } + + return BigNumber.from('0x' + _result + resultLow_); +} \ No newline at end of file diff --git a/src/jsvm/lib/TierwiseCombine.ts b/src/jsvm/lib/TierwiseCombine.ts new file mode 100644 index 0000000..ffdc7a3 --- /dev/null +++ b/src/jsvm/lib/TierwiseCombine.ts @@ -0,0 +1,121 @@ +import { BigNumber } from "ethers"; +import { paddedUInt256, paddedUInt32 } from "../../utils"; + +export const saturatingDiff = (report1: BigNumber, report2: BigNumber) : BigNumber => { + const report1_ = paddedUInt256(report1).substring(2); + const report2_ = paddedUInt256(report2).substring(2); + let _startIndex = 0; + let _endIndex = 8; + let _result = ''; + let _tierRep1; + let _tierRep2; + + for (let i = 0; i < 8; i++) { + _tierRep1 = BigNumber.from( + '0x' + report1_.slice(_startIndex, _endIndex) + ); + _tierRep2 = BigNumber.from( + '0x' + report2_.slice(_startIndex, _endIndex) + ); + _result += _tierRep1.gt(_tierRep2) + ? paddedUInt32(_tierRep1.sub(_tierRep2)) + : '00000000'; + _startIndex += 8; + _endIndex += 8; + } + + return BigNumber.from('0x' + _result); +} + +export const selectLte = ( + reports: BigNumber[], + timestamp: BigNumber, + logic: number, + mode: number, + length: number +) : BigNumber => { + + let _report; + // array of raw reports + let _reports: string[] = []; + // array of array of each tier's lte report + let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; + let _result = ''; + + //building an array of each tier's report against blockNumber_ + //tiers greater than blockNumber_ will get "ffffffff" + const blockNumber_ = paddedUInt32(timestamp); + for (let i = 0; i < length; i++) { + let _startIndex = 0; + let _endIndex = 8; + _report = reports[reports.length - 1 - i]; + _reports[i] = paddedUInt256(_report).substring(2); + for (let j = 0; j < 8; j++) { + _reportsAtTier[j].push( + blockNumber_ < _reports[i].slice(_startIndex, _endIndex) + ? 'ffffffff' + : _reports[i].slice(_startIndex, _endIndex) + ); + _startIndex += 8; + _endIndex += 8; + } + } + + // logic and mode selections + if (logic) { + for (let i = 0; i < 8; i++) { + if (mode === 0) { + _reportsAtTier[i] = [ + _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), + ]; + } + else if (mode === 1) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e !== 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] + : ['ffffffff']; + } + else if (mode === 2) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e !== 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] + : ['ffffffff']; + } + } + } + else { + for (let i = 0; i < 8; i++) { + if (mode === 0) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; + } + else if (mode === 1) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; + } + else if (mode === 2) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; + } + } + } + //building the final report + for (let i = 0; i < 8; i++) { + _result += _reportsAtTier[i][0]; + } + return BigNumber.from('0x' + _result); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts new file mode 100644 index 0000000..894ca90 --- /dev/null +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts @@ -0,0 +1,25 @@ +import { BigNumber } from "ethers"; +import { ERC1155 } from "../../../contracts/generics/erc1155"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpERC1155BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && item3_ && this.signer !== undefined) { + + const id_ = BigNumber.from(item3_); + const account_ = paddedUInt160(item2_); + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + + state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); + + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts new file mode 100644 index 0000000..5e97c19 --- /dev/null +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts @@ -0,0 +1,38 @@ +import { BigNumber } from "ethers"; +import { ERC1155 } from "../../../contracts/generics/erc1155"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpERC1155BalanceOfBatch(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item3_ = state.stack.splice(-(operand + 1)); + const item2_ = state.stack.splice(-(operand + 1)); + const item1_ = state.stack.pop(); + + if ( + item1_ && + item2_ && + item3_ && + this.signer !== undefined && + item2_.length === item3_.length + ) { + const tokenIds_: BigNumber[] = []; + for (let i = 0; i < item3_.length; i++) { + tokenIds_.push(BigNumber.from(item3_[i])); + } + const accounts_: string[] = []; + for (let i = 0; i < item2_.length; i++) { + accounts_.push(paddedUInt160(item2_[i])); + } + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + + state.stack.push( + ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) + ); + + } + else throw new Error('Undefined stack variable'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts new file mode 100644 index 0000000..3012827 --- /dev/null +++ b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts @@ -0,0 +1,21 @@ +import { ERC20 } from "../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpERC20BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined) { + + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); + + state.stack.push(await erc20Contract_.balanceOf(account_)); + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts new file mode 100644 index 0000000..600286a --- /dev/null +++ b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts @@ -0,0 +1,19 @@ +import { ERC20 } from "../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpERC20TotalSupply(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item_ = state.stack.pop(); + + if (item_ && this.signer !== undefined) { + + const erc20Address_ = paddedUInt160(item_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); + + state.stack.push(await erc20Contract_.totalSupply()); + } + else throw new Error('Undefined stack variable'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts new file mode 100644 index 0000000..4d22eb5 --- /dev/null +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts @@ -0,0 +1,24 @@ +import { ERC20 } from "../../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../../utils"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export async function OpERC20SnapshotBalanceOfAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && item3_ && this.signer !== undefined) { + + const snapshotId_ = item3_; + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + + state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); + + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts new file mode 100644 index 0000000..310d5f8 --- /dev/null +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts @@ -0,0 +1,22 @@ +import { ERC20 } from "../../../../contracts/generics/erc20"; +import { paddedUInt160 } from "../../../../utils"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export async function OpERC20SnapshotTotalSupplyAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined) { + + const snapshotId_ = item2_; + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + + state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); + + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts new file mode 100644 index 0000000..6f2885f --- /dev/null +++ b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts @@ -0,0 +1,21 @@ +import { ERC721 } from "../../../contracts/generics/erc721"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpERC721BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined) { + const account_ = paddedUInt160(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); + + state.stack.push(await erc721Contract_.balanceOf(account_)); + + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts new file mode 100644 index 0000000..8738093 --- /dev/null +++ b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts @@ -0,0 +1,25 @@ +import { BigNumber } from "ethers"; +import { ERC721 } from "../../../contracts/generics/erc721"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpERC721OwnerOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined) { + + const tokenId_ = BigNumber.from(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); + + state.stack.push( + BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) + ); + + } + else throw new Error('Undefined stack variable'); +} \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpBlockNumber.ts b/src/jsvm/ops/evm/OpBlockNumber.ts new file mode 100644 index 0000000..dd0f173 --- /dev/null +++ b/src/jsvm/ops/evm/OpBlockNumber.ts @@ -0,0 +1,23 @@ +import { BigNumber } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpBlockNumber(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + if (this.signer !== undefined) { + + const _provider = this.signer.provider; + + if (_provider !== undefined) { + + state.stack.push( + BigNumber.from( + await _provider.getBlockNumber() + ) + ) + } + else throw new Error("undefined Provider") + } + else throw new Error('Undefined Signer'); +} \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpCaller.ts b/src/jsvm/ops/evm/OpCaller.ts new file mode 100644 index 0000000..ce23627 --- /dev/null +++ b/src/jsvm/ops/evm/OpCaller.ts @@ -0,0 +1,17 @@ +import { BigNumber } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpCaller(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + if (this.signer !== undefined) { + + state.stack.push( + BigNumber.from( + await this.signer.getAddress() + ) + ); + } + else throw new Error("undefined signer or signer address") +} \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpThisAddress.ts b/src/jsvm/ops/evm/OpThisAddress.ts new file mode 100644 index 0000000..13ceb04 --- /dev/null +++ b/src/jsvm/ops/evm/OpThisAddress.ts @@ -0,0 +1,15 @@ +import { BigNumber } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export function OpThisAddress(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + if (this.self !== undefined) { + + state.stack.push( + BigNumber.from(this.self) + ); + } + else throw new Error('Undefined contract'); +} \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpTimestamp.ts b/src/jsvm/ops/evm/OpTimestamp.ts new file mode 100644 index 0000000..951262b --- /dev/null +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -0,0 +1,23 @@ +import { BigNumber } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpTimestamp(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + if (this.signer !== undefined) { + + const _provider = this.signer.provider; + + if (_provider !== undefined) { + + state.stack.push( + BigNumber.from( + (await _provider.getBlock(await _provider.getBlockNumber())).timestamp + ) + ) + } + else throw new Error("Undefined provider") + } + else throw new Error('Undefined Signer'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpAdd.ts b/src/jsvm/ops/math/OpAdd.ts new file mode 100644 index 0000000..8e57ca8 --- /dev/null +++ b/src/jsvm/ops/math/OpAdd.ts @@ -0,0 +1,27 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + let _item; + let _accumulator = ethers.constants.Zero; + + for (let i = 0; i < operand; i++) { + + _item = state.stack.pop(); + + if (_item !== undefined) { + + _accumulator = _accumulator.add(_item); + + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpDiv.ts b/src/jsvm/ops/math/OpDiv.ts new file mode 100644 index 0000000..5f663d2 --- /dev/null +++ b/src/jsvm/ops/math/OpDiv.ts @@ -0,0 +1,26 @@ +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpDiv(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + + if (_accumulator !== undefined) { + + for (let i = 1; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = _accumulator.div(_item); + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpExp.ts b/src/jsvm/ops/math/OpExp.ts new file mode 100644 index 0000000..6eb65f2 --- /dev/null +++ b/src/jsvm/ops/math/OpExp.ts @@ -0,0 +1,31 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpExp(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + + if (_accumulator !== undefined) { + + for (let i = 1; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = _accumulator.pow(_item); + + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts new file mode 100644 index 0000000..5f79897 --- /dev/null +++ b/src/jsvm/ops/math/OpMax.ts @@ -0,0 +1,16 @@ +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpMax(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + + if ((items_.length = operand)) { + + state.stack.push( + items_.reduce((e, m) => (e.gt(m) ? e : m)) + ); + + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMin.ts b/src/jsvm/ops/math/OpMin.ts new file mode 100644 index 0000000..cb41c8c --- /dev/null +++ b/src/jsvm/ops/math/OpMin.ts @@ -0,0 +1,16 @@ +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpMin(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + + if (items_.length === operand) { + + state.stack.push( + items_.reduce((e, m) => (e.lt(m) ? e : m)) + ); + + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMod.ts b/src/jsvm/ops/math/OpMod.ts new file mode 100644 index 0000000..7ea2015 --- /dev/null +++ b/src/jsvm/ops/math/OpMod.ts @@ -0,0 +1,26 @@ +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpMod(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + + if (_accumulator !== undefined) { + + for (let i = 1; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = _accumulator.mod(_item); + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMul.ts b/src/jsvm/ops/math/OpMul.ts new file mode 100644 index 0000000..4dcb0cf --- /dev/null +++ b/src/jsvm/ops/math/OpMul.ts @@ -0,0 +1,27 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + let _accumulator = ethers.constants.One; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = state.stack.pop(); + + if (_item !== undefined) { + + _accumulator = _accumulator.mul(_item); + + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpSub.ts b/src/jsvm/ops/math/OpSub.ts new file mode 100644 index 0000000..37765a3 --- /dev/null +++ b/src/jsvm/ops/math/OpSub.ts @@ -0,0 +1,29 @@ +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export function OpSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + + if (_accumulator !== undefined) { + + for (let i = 1; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = _accumulator.sub(_item); + } + else throw new Error('Undefined stack variables'); + } + if (_accumulator.isNegative()) { + + throw new Error('Invalid value (negative value not allowed)'); + } + else state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18.ts b/src/jsvm/ops/math/fixedPoint/OpScale18.ts new file mode 100644 index 0000000..ed1335e --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -0,0 +1,18 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { scale18 } from "../../../lib/FixedPointMath"; +import { StateJSVM } from "../../../types"; + + +export function OpScale18(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const item_ = state.stack.pop(); + + if (item_ !== undefined) { + + state.stack.push( + scale18(item_, operand) + ); + } + else throw new Error('Undefined stack variable'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts new file mode 100644 index 0000000..dd6c58d --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts @@ -0,0 +1,20 @@ +import { fixedPointDiv } from "../../../lib/FixedPointMath"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpScale18Div(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + fixedPointDiv(item1_, item2_, operand) + ); + + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts new file mode 100644 index 0000000..a79c9a3 --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts @@ -0,0 +1,20 @@ +import { fixedPointMul } from "../../../lib/FixedPointMath"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpScale18Mul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + fixedPointMul(item1_, item2_, operand) + ); + + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts new file mode 100644 index 0000000..2fc1ddd --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts @@ -0,0 +1,17 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { scaleBy } from "../../../lib/FixedPointMath"; +import { StateJSVM } from "../../../types"; + + +export function OpScaleBy(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const item_ = state.stack.pop(); + + if (item_ !== undefined) { + + state.stack.push(scaleBy(item_, operand)) + + } + else throw new Error("Undefined stack variable") + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts new file mode 100644 index 0000000..110ab4e --- /dev/null +++ b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts @@ -0,0 +1,19 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { scaleN } from "../../../lib/FixedPointMath"; +import { StateJSVM } from "../../../types"; + + +export function OpScaleN(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const item_ = state.stack.pop(); + + if (item_ !== undefined) { + + state.stack.push( + scaleN(item_, operand) + ) + + } + else throw new Error('Undefined stack variable'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpAny.ts b/src/jsvm/ops/math/logic/OpAny.ts new file mode 100644 index 0000000..646bd80 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -0,0 +1,35 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpAny(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const items_ = state.stack.splice(-operand); + let _check; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + if (_item.gt(0)) { + + _check = ethers.constants.One; + break; + + } + else _check = ethers.constants.Zero; + } + else throw new Error('Undefined stack variables'); + } + if (_check !== undefined) { + + state.stack.push(_check); + + } + else throw new Error('Undefined stack variable'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEagerIf.ts b/src/jsvm/ops/math/logic/OpEagerIf.ts new file mode 100644 index 0000000..70b99a7 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpEagerIf.ts @@ -0,0 +1,18 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpEagerIf(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const false_ = state.stack.pop(); + const true_ = state.stack.pop(); + const condition_ = state.stack.pop(); + + if (false_ && true_ && condition_ !== undefined) { + + state.stack.push(condition_.gt(0) ? true_ : false_); + + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEqualTo.ts b/src/jsvm/ops/math/logic/OpEqualTo.ts new file mode 100644 index 0000000..1362635 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpEqualTo.ts @@ -0,0 +1,18 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpEqualTo(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Underfined stack variables'); +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEvery.ts b/src/jsvm/ops/math/logic/OpEvery.ts new file mode 100644 index 0000000..9187329 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -0,0 +1,33 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpEvery(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _check; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + if (_item.isZero()) { + + _check = ethers.constants.Zero; + break; + } + else _check = ethers.constants.One; + } + else throw new Error('Undefined stack variables'); + } + if (_check !== undefined) { + + state.stack.push(_check); + } + else throw new Error('Undefined stack variable'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpGreaterThan.ts b/src/jsvm/ops/math/logic/OpGreaterThan.ts new file mode 100644 index 0000000..67a022c --- /dev/null +++ b/src/jsvm/ops/math/logic/OpGreaterThan.ts @@ -0,0 +1,19 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + + +export function OpGreaterThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpIsZero.ts b/src/jsvm/ops/math/logic/OpIsZero.ts new file mode 100644 index 0000000..1457dcf --- /dev/null +++ b/src/jsvm/ops/math/logic/OpIsZero.ts @@ -0,0 +1,17 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + +export function OpIsZero(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const item_ = state.stack.pop(); + + if (item_ !== undefined) { + + state.stack.push( + item_.isZero() ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variable'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpLessThan.ts b/src/jsvm/ops/math/logic/OpLessThan.ts new file mode 100644 index 0000000..0dccd80 --- /dev/null +++ b/src/jsvm/ops/math/logic/OpLessThan.ts @@ -0,0 +1,18 @@ +import { ethers } from "ethers"; +import { RainJSVM } from "../../../RainJSVM"; +import { StateJSVM } from "../../../types"; + +export function OpLessThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts new file mode 100644 index 0000000..e417cd4 --- /dev/null +++ b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts @@ -0,0 +1,25 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { saturatingAdd } from "../../../lib/SaturatingMath"; +import { StateJSVM } from "../../../types"; +import { ethers } from "ethers"; + +export function OpSaturatingAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.Zero; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = saturatingAdd(_accumulator, _item) + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts new file mode 100644 index 0000000..50b788c --- /dev/null +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -0,0 +1,28 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { saturatingMul } from "../../../lib/SaturatingMath"; +import { StateJSVM } from "../../../types"; + +export function OpSaturatingMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; + + if (_accumulator !== undefined) { + + for (let i = 1; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = saturatingMul(_accumulator, _item); + + } + else throw new Error('Undefined stack variabble'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts new file mode 100644 index 0000000..6a332d9 --- /dev/null +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -0,0 +1,25 @@ +import { RainJSVM } from "../../../RainJSVM"; +import { saturatingSub } from "../../../lib/SaturatingMath"; +import { StateJSVM } from "../../../types"; +import { ethers } from "ethers"; + +export function OpSaturatingSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.One; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = saturatingSub(_accumulator, _item) + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + +} \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpITierV2Report.ts b/src/jsvm/ops/tier/OpITierV2Report.ts new file mode 100644 index 0000000..ae356c9 --- /dev/null +++ b/src/jsvm/ops/tier/OpITierV2Report.ts @@ -0,0 +1,27 @@ +import { ITierV2 } from "../../../classes/iTierV2"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + +export async function OpITierV2Report(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const context_ = operand ? state.stack.splice(-operand) : []; + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { + + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); + + state.stack.push( + await iTierV2Contract.report(account_, context_) + ); + + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts new file mode 100644 index 0000000..d1b3e12 --- /dev/null +++ b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts @@ -0,0 +1,34 @@ +import { ITierV2, Tier } from "../../../classes/iTierV2"; +import { paddedUInt160 } from "../../../utils"; +import { RainJSVM } from "../../RainJSVM"; +import { StateJSVM } from "../../types"; + + +export async function OpITierV2ReportTimesForTier(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + + const context_ = operand ? state.stack.splice(-operand) : []; + const item3_ = state.stack.pop(); + + if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { + const tier_ = item3_; + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); + + state.stack.push( + await iTierV2Contract.reportTimeForTier(account_, tier_,context_) + ); + } + else throw new Error('Undefined stack variables'); + + } + else throw new Error("not valid tier"); + +} \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpSaturatingDiff.ts b/src/jsvm/ops/tier/OpSaturatingDiff.ts new file mode 100644 index 0000000..6a81442 --- /dev/null +++ b/src/jsvm/ops/tier/OpSaturatingDiff.ts @@ -0,0 +1,19 @@ +import { RainJSVM } from "../../RainJSVM"; +import { saturatingDiff } from "../../lib/TierwiseCombine"; +import { StateJSVM } from "../../types"; + +export function OpSaturatingDiff(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + saturatingDiff(item1_, item2_) + ); + + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpSelectLte.ts b/src/jsvm/ops/tier/OpSelectLte.ts new file mode 100644 index 0000000..19e3c09 --- /dev/null +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -0,0 +1,23 @@ +import { RainJSVM } from "../../RainJSVM"; +import { selectLte } from "../../lib/TierwiseCombine"; +import { StateJSVM } from "../../types"; + + +export function OpSelectLte(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const length_ = operand & 31; + const mode_ = (operand & 96) >> 5; + const logic_ = (operand & 128) >> 7; + const timestamp_ = state.stack.pop(); + const reports_ = state.stack.splice(-length_) + + if (timestamp_ !== undefined && reports_.length === length_) { + + state.stack.push( + selectLte(reports_, timestamp_, logic_, mode_, length_) + ); + + } + else throw new Error("Undefined stack variables") + +} \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts new file mode 100644 index 0000000..826e3aa --- /dev/null +++ b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts @@ -0,0 +1,19 @@ +import { RainJSVM } from "../../RainJSVM"; +import { updateTimesForTierRange } from "../../lib/TierReport"; +import { StateJSVM } from "../../types"; + +export function OpUpdateTimesForTierRange(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + + state.stack.push( + updateTimesForTierRange(item1_, item2_, operand) + ); + + } + else throw new Error('Undefined stack variables'); + +} \ No newline at end of file diff --git a/src/jsvm/simulation/CombineTierSimulation.ts b/src/jsvm/simulation/CombineTierSimulation.ts new file mode 100644 index 0000000..1912f55 --- /dev/null +++ b/src/jsvm/simulation/CombineTierSimulation.ts @@ -0,0 +1,75 @@ +import { BigNumber } from "ethers"; +import { paddedUInt160, paddedUInt256 } from "../../utils"; +import { CombineTierJSVM } from "../CombineTierJSVM"; +import { vmSimulation } from "./vmSimulation"; + + +/** + * @public + * A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. + * + * @remark + * this class is compatible with @see itiers interface with using its address + */ + export class CombinetierSimulation extends vmSimulation { + + /** + * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * The report of each account which is compatible and can be stored in @see itiers interface as well + */ + public report: {[wallet: string]: BigNumber} = {}; + + /** + * Constructor of this class + * + * @param address - this CombineTier class adress which needs to be a string number or hex string + * @param reports - (optional) the initial reports object + */ + constructor (address: string, reports?: {[wallet: string]: BigNumber}) { + super(); + this.address = address; + if (reports !== undefined) { + this.report = reports; + } + } + + /** + * Method to get the report for an account which then will be stored in the class's report property and can be + * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of + * the account it is been called for + * + * @param account - the account to get and update the report for which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns the report of the account in a 64 char length hex string + */ + public async setReport( + account: string, + timestamp?: number, + blockNumber?: number + ): Promise { + const entrypoint = 0; + const _account = paddedUInt160(account) + + if (this.script !== undefined) { + let simulation = new CombineTierJSVM( + this.script, + {applyOpFn: this.OpFns} + ); + const newReport = (await simulation.run( + {context: [_account], timestamp, blockNumber}, + entrypoint + ))[0]; + this.report[_account] = newReport; + + return paddedUInt256(newReport); + } + else throw new Error("no script to execute") + } + } \ No newline at end of file diff --git a/src/jsvm/simulation/EmissionsERC20Simulation.ts b/src/jsvm/simulation/EmissionsERC20Simulation.ts new file mode 100644 index 0000000..d942347 --- /dev/null +++ b/src/jsvm/simulation/EmissionsERC20Simulation.ts @@ -0,0 +1,177 @@ +import { BigNumber, ethers } from "ethers"; +import { paddedUInt160, paddedUInt256, paddedUInt32 } from "../../utils"; +import { EmissionsERC20JSVM } from "../EmissionsERC20JSVM"; +import { vmSimulation } from "./vmSimulation"; + + +/** + * @public + * A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. + * + * @remark + * this class is compatible with @see erc20 interface and @see itiers interface with using its address + */ + export class EmissionSmiulation extends vmSimulation { + + /** + * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender: string; + + /** + * The current totalSupply of the emissions token which can increase everytime a successful mint happens + */ + public totalSupply: BigNumber = ethers.constants.Zero; + + /** + * The decimals value of the emissions token which is 18 + */ + public readonly decimals: number = 18 + + /** + * The report of each claimant which is compatible and can be stored in @see itiers interface as well + */ + public report: {[wallet: string]: BigNumber} = {}; + + /** + * The balance of emission token holders which is compatible with @see erc20 interface + */ + public balanceOf: {[wallet: string]: BigNumber} = {}; + + /** + * Constructor of this class + * + * @param address - this EmissionsERC20 class adress which needs to be a string number or hex string + * @param sender - the sender which needs to be string number or hex string + * @param reports - the reports of claimants + * @param balances - the balances of token holders + * @param initialSupply - (optional) emissions token initial supply for the sender + */ + constructor ( + address: string, + sender: string, + reports: {[wallet: string]: BigNumber} = {}, + balances: {[wallet: string]: BigNumber} = {}, + initialSupply: BigNumber = ethers.constants.Zero, + ) { + super(); + this.address = paddedUInt160(address); + this.sender = paddedUInt160(sender); + this.report = reports; + this.balanceOf = balances; + this.totalSupply = initialSupply; + if (initialSupply.gt(0)) { + if (this.erc20s[this.address] === undefined) { + this.erc20s[this.address] = { + totalSupply: this.totalSupply, + decimals: 18, + balanceOf: {[this.sender]: BigNumber.from(initialSupply)} + } + } + if ( + this.erc20s[this.address].balanceOf[this.sender] === undefined || + this.erc20s[this.address].balanceOf[this.sender].isZero() + ) { + this.erc20s[this.address].balanceOf[this.sender] = BigNumber.from(initialSupply) + } + if (this.balanceOf[this.sender] === undefined) { + this.balanceOf[this.sender] = BigNumber.from(initialSupply) + } + else throw new Error("undefined sender") + } + } + + /** + * Method to calculate the cliamable amount for the claimant by running the script by JSVM + * + * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return A BigNumber that represents the claimable amount + */ + public async calculateClaim( + claimantAccount: string, + timestamp?: number, + blockNumber?: number + ) : Promise { + const entrypoint = 0; + const _claimantAccount = paddedUInt160(claimantAccount) + + if (this.script !== undefined) { + if (this.report[_claimantAccount] === undefined) { + this.report[_claimantAccount] = ethers.constants.Zero; + } + let simulation = new EmissionsERC20JSVM( + this.script, + {applyOpFn: this.OpFns} + ); + let claimUnits = await simulation.run( + {context: [_claimantAccount], timestamp, blockNumber}, + entrypoint + ); + return claimUnits[0] + } + else throw new Error("no script or sender to execute calculateClaim"); + } + + /** + * The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM + * + * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return the minted amount in a BigNumber format + */ + public async claim ( + claimantAccount: string, + timestamp?: number, + blockNumber?: number + ) : Promise { + const entrypoint = 0; + const _claimantAccount = paddedUInt160(claimantAccount) + + if (this.script !== undefined) { + if (this.report[_claimantAccount] === undefined) { + this.report[_claimantAccount] = ethers.constants.Zero; + } + + if (this.balanceOf[_claimantAccount] === undefined) { + this.balanceOf[_claimantAccount] = ethers.constants.Zero; + } + + if (this.erc20s[this.address].balanceOf[_claimantAccount] === undefined) { + this.erc20s[this.address].balanceOf[_claimantAccount] = ethers.constants.Zero; + } + + let simulation = new EmissionsERC20JSVM( + this.script, + {applyOpFn: this.OpFns} + ); + let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp : timestamp!).repeat(8))) + let mintUnits = await simulation.run( + {context: [_claimantAccount], timestamp, blockNumber}, + entrypoint + ); + + if (mintUnits[0].gt(ethers.constants.Zero)) { + this.totalSupply = this.totalSupply.add(mintUnits[0]); + this.balanceOf[_claimantAccount] = this.balanceOf[_claimantAccount].add(mintUnits[0]); + this.report[_claimantAccount] = newReport; + this.erc20s[this.address].balanceOf[_claimantAccount] = + this.erc20s[this.address].balanceOf[_claimantAccount].add(mintUnits[0]); + } + + return mintUnits[0]; + } + throw new Error("no script to execute") + } + } \ No newline at end of file diff --git a/src/RainJS/matchmaker.ts b/src/jsvm/simulation/Matchmaker.ts similarity index 97% rename from src/RainJS/matchmaker.ts rename to src/jsvm/simulation/Matchmaker.ts index 552f910..f20ad77 100644 --- a/src/RainJS/matchmaker.ts +++ b/src/jsvm/simulation/Matchmaker.ts @@ -1,15 +1,15 @@ import { BigNumber } from "ethers"; -import { VM } from "../classes/vm"; -import { OrderbookJS } from "./OrderbookJS"; -import { OrderbookSimulation } from "./vmSimulation"; -import { FixedPrice, IncDecPrice } from "../../src"; -import { paddedUInt160, paddedUInt256, parseUnits } from "../utils"; +import { VM } from "../../classes/vm"; +import { OrderbookJSVM } from "./../OrderbookJSVM"; +import { OrderbookSimulation } from "./OrderbookSimulation"; +import { paddedUInt160, paddedUInt256, parseUnits } from "../../utils"; +import { FixedPrice, IncDecPrice } from "./../../contracts/script-generators/saleScriptGenerator"; import { order, erc20s, eighteenZeros, bountyConfig -} from "./types"; +} from "../types"; /** @@ -84,7 +84,7 @@ export class MatchMaker extends OrderbookSimulation { */ public async orderEval(order: order, timestamp?: number, blockNumber?: number) { this.script = order.vmConfig; - const jsvm = new OrderbookJS(this.script, {applyOpFn: this.OpFns}); + const jsvm = new OrderbookJSVM(this.script, {applyOpFn: this.OpFns}); const result1 = await jsvm.run({context: [order.orderHash], timestamp, blockNumber}); const out1 = result1[0]; diff --git a/src/jsvm/simulation/OrderbookSimulation.ts b/src/jsvm/simulation/OrderbookSimulation.ts new file mode 100644 index 0000000..ce19258 --- /dev/null +++ b/src/jsvm/simulation/OrderbookSimulation.ts @@ -0,0 +1,441 @@ +import { ethers } from "ethers"; +import { vmSimulation } from "./vmSimulation"; +import { OrderbookJSVM } from "../OrderbookJSVM"; +import { OrderBook } from "../../contracts/orderBook"; +import { paddedUInt160, paddedUInt256, parseUnits } from "../../utils"; +import { + order, + FnPtrs, + orders, + vaults, + StateJSVM, + bountyConfig, + clearedFunds, + eighteenZeros, + clearedCounterPartyFunds +} from "../types"; + + +/** + * @public + * A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. + * or to be used to perform off-chain matchmaking based on. + */ + export class OrderbookSimulation extends vmSimulation { + + /** + * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender: string; + + /** + * The property that stores all the data of the class's vaults @see vault + */ + public vaults: vaults = {}; + + /** + * The property that stores all the data of the class's orders, @see orders and @see order + */ + public orders: orders = {}; + + /** + * The property that stores all the data of an order's total cleared amount, @see clearedFunds + */ + public clearedFunds: clearedFunds = {}; + + /** + * The property that stores all the data of an order's total cleared amount to a specific counterparty address + * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds + */ + public clearedCounterPartyFunds: clearedCounterPartyFunds = {}; + + /** + * Constructor of this class + * + * @param address - this Orderbook's class adress which needs to be a string number or hex string + * @param sender - the sender which needs to be string number or hex string + * @param vaults - (optinal) the initial vaults object (vaults storage) + * @param orders - (optional) the initial orders + */ + constructor(address: string, sender: string, vaults?: vaults, orders?: orders) { + super(); + this.address = paddedUInt160(address); + this.sender = paddedUInt160(sender); + if (vaults !== undefined) { + this.vaults = vaults; + } + if (orders !== undefined) { + this.orders = orders; + } + } + + /** + * Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. @see FnPtrs and @see OpcodeFN + */ + protected OpFns: FnPtrs = { + + ...this.OpFns, + + [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: + (state: StateJSVM, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ !== undefined) { + const orderHash = paddedUInt256(item_); + if (this.clearedFunds[orderHash] !== undefined) { + state.stack.push(this.clearedFunds[orderHash]); + } + else throw new Error("no record of cleared funds for this orderHash") + } + else throw new Error("undefined stack value") + }, + [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: + (state: StateJSVM, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const orderHash = paddedUInt256(item1_); + const counterParty = paddedUInt160(item2_); + if (this.clearedCounterPartyFunds[orderHash][counterParty] !== undefined) { + state.stack.push(this.clearedCounterPartyFunds[orderHash][counterParty]) + } + else throw new Error("no record of cleared funds for this orderHash's counterparty") + } + else throw new Error("undefined stack values") + } + }; + + /** + * Method to submit an order into the class orders + * + * @param order - the order to add + * @return void + */ + public addOrder(order: order): void { + this.orders[order.orderHash] = order; + + if (this.vaults[order.owner] === undefined) { + this.vaults[order.owner] = { + [order.inputToken]: { + vaultId: { + [order.inputVaultId]: ethers.constants.Zero + } + }, + [order.outputToken]: { + vaultId: { + [order.outputVaultId]: ethers.constants.Zero + } + } + } + } + if (this.vaults[order.owner][order.inputToken] === undefined) { + this.vaults[order.owner][order.inputToken] = { + vaultId: { + [order.inputVaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[order.owner][order.outputToken] === undefined) { + this.vaults[order.owner][order.outputToken] = { + vaultId: { + [order.outputVaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] === undefined) { + this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] = ethers.constants.Zero; + } + if (this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] === undefined) { + this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] = ethers.constants.Zero + } + } + + + /** + * Method to remove an order from the class's orders + * + * @param order - the order to remove + * @return void + */ + public removeOrder(order: order | string): void { + if (typeof order === "string") { + delete(this.orders[order]) + } + else { + delete(this.orders[order.orderHash]) + } + } + + /** + * Method to dposit some units of token of tokenAddress into the vaultId of the sender + * + * @param sender - sender that deposit is done for + * @param tokenAddress - the address of the token + * @param vaultId - the vault ID to deposit + * @param units - amount of token to deposit + * @param tokenDecimals - (optional) decimals of the token, 18 will be used as default + * + * @return void + */ + public deposit ( + sender: string, + tokenAddress: string, + vaultId: string, + units: number, + tokenDecimals: number = 18 + ): void { + const _sender = paddedUInt160(sender); + const units_ = parseUnits( + units.toString(), + tokenDecimals + ); + if (this.erc20s[tokenAddress].balanceOf[_sender]) { + if (this.erc20s[tokenAddress].balanceOf[_sender].gte(units_)) { + this.erc20s[tokenAddress].balanceOf[_sender] = + this.erc20s[tokenAddress].balanceOf[_sender].sub(units_) + } + else throw new Error("insufficient balance") + } + if (this.erc20s[tokenAddress].balanceOf[this.address]) { + this.erc20s[tokenAddress].balanceOf[this.address] = + this.erc20s[tokenAddress].balanceOf[this.address].add(units_) + } + else { + this.erc20s[tokenAddress] = { + balanceOf: { + [this.address]: units_ + }, + decimals: tokenDecimals, + totalSupply: units_ + } + } + if (this.vaults[_sender] === undefined) { + this.vaults[_sender] = { + [tokenAddress]: { + vaultId: { + [vaultId]: ethers.constants.Zero + } + } + } + } + if (this.vaults[_sender][tokenAddress] === undefined) { + this.vaults[_sender][tokenAddress] = { + vaultId: { + [vaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { + this.vaults[_sender][tokenAddress].vaultId[vaultId] = ethers.constants.Zero; + } + this.vaults[_sender][tokenAddress].vaultId[vaultId] = + this.vaults[_sender][tokenAddress].vaultId[vaultId].add(units_); + } + + /** + * Method to withdraw some units of token of tokenAddress from VaultId of the sender + * + * @param sender - sender that withdraw is done for + * @param tokenAddress - the address of the token + * @param vaultId - the vault ID to withdraw + * @param units - amount of token to withdraw + * + * @return void + */ + public withdraw ( + sender: string, + tokenAddress: string, + vaultId: string, + units: number, + tokenDecimals: number = 18 + ): void { + const _sender = paddedUInt160(sender); + + if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { + throw new Error("this vault doesnt not exist") + } + else { + const units_ = parseUnits(units.toString(), tokenDecimals); + if (this.erc20s[tokenAddress].balanceOf[_sender]) { + this.erc20s[tokenAddress].balanceOf[_sender] = + this.erc20s[tokenAddress].balanceOf[_sender].add(units_) + } + if (this.erc20s[tokenAddress].balanceOf[this.address]) { + if (this.erc20s[tokenAddress].balanceOf[this.address].gte(units_)) { + this.erc20s[tokenAddress].balanceOf[this.address] = + this.erc20s[tokenAddress].balanceOf[this.address].sub(units_) + } + else this.erc20s[tokenAddress].balanceOf[this.address] = ethers.constants.Zero + } + + this.vaults[_sender][tokenAddress].vaultId[vaultId] = + this.vaults[_sender][tokenAddress].vaultId[vaultId].gte(units_) + ? this.vaults[_sender][tokenAddress].vaultId[vaultId].sub(units_) + : ethers.constants.Zero + } + } + + /** + * Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class + * + * @param a - order A to clear + * @param b - order B to clear + * @param bountyConfig - the BountyConfig type to collect bounties of this clear + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return void + */ + public async clear ( + a: order, + b: order, + bountyConfig: bountyConfig, + timestamp?: number, + blockNumber?: number + ): Promise { + if (a.vmConfig && b.vmConfig && this.sender !== undefined) { + const entrypoint = 0; + const aJS = new OrderbookJSVM(a.vmConfig, {applyOpFn: this.OpFns}); + const bJS = new OrderbookJSVM(b.vmConfig, {applyOpFn: this.OpFns}); + + const aResult_ = await aJS.run( + {context: [a.orderHash, b.owner], timestamp, blockNumber}, + entrypoint + ); + const bResult_ = await bJS.run( + {context: [b.orderHash, a.owner], timestamp, blockNumber}, + entrypoint + ); + + const aOutputMax = aResult_[aResult_.length - 2]; + const bOutputMax = bResult_[bResult_.length - 2]; + const aPrice = aResult_[aResult_.length - 1]; + const bPrice = bResult_[bResult_.length - 1]; + + const aStateChangeOutput = aOutputMax.gt((bOutputMax.mul(bPrice)).div(eighteenZeros)) + ? (bOutputMax.mul(bPrice)).div(eighteenZeros) + : aOutputMax; + const bStateChangeOutput = bOutputMax.gt((aOutputMax.mul(aPrice)).div(eighteenZeros)) + ? (aOutputMax.mul(aPrice)).div(eighteenZeros) + : bOutputMax; + + if (!aStateChangeOutput.isZero() || !bStateChangeOutput.isZero()) { + + const aStateChangeInput = (aStateChangeOutput.mul(aPrice)).div(eighteenZeros); + const bStateChangeInput = (bStateChangeOutput.mul(bPrice)).div(eighteenZeros); + + if (!aStateChangeOutput.sub(bStateChangeInput).isNegative() && !bStateChangeOutput.sub(aStateChangeInput).isNegative()) { + + if (this.vaults[this.sender] === undefined) { + this.vaults[this.sender] = { + [a.outputToken]: { + vaultId: { + [bountyConfig.aVaultId]: ethers.constants.Zero + } + }, + [b.outputToken]: { + vaultId: { + [bountyConfig.bVaultId]: ethers.constants.Zero + } + }, + } + } + + if (this.vaults[this.sender][a.outputToken] === undefined) { + this.vaults[this.sender][a.outputToken] = { + vaultId: { + [bountyConfig.aVaultId]: ethers.constants.Zero + } + } + } + + if (this.vaults[this.sender][b.outputToken] === undefined) { + this.vaults[this.sender][b.outputToken] = { + vaultId: { + [bountyConfig.bVaultId]: ethers.constants.Zero + } + } + } + + if (this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] === undefined) { + this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = ethers.constants.Zero + } + + if (this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] === undefined) { + this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = ethers.constants.Zero + } + + if(this.clearedFunds[a.orderHash] === undefined) { + this.clearedFunds[a.orderHash] = ethers.constants.Zero + } + + if(this.clearedFunds[b.orderHash] === undefined) { + this.clearedFunds[b.orderHash] = ethers.constants.Zero + } + + if(this.clearedCounterPartyFunds[a.orderHash] === undefined) { + this.clearedCounterPartyFunds[a.orderHash] = { + [b.owner]: ethers.constants.Zero + } + } + + if(this.clearedCounterPartyFunds[b.orderHash] === undefined) { + this.clearedCounterPartyFunds[b.orderHash] = { + [a.owner]: ethers.constants.Zero + } + } + + this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = + this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] + .add(aStateChangeOutput.sub(bStateChangeInput)); + + this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = + this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] + .add(bStateChangeOutput.sub(aStateChangeInput)); + + this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId] = + this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].gte(aStateChangeOutput) + ? this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].sub(aStateChangeOutput) + : ethers.constants.Zero; + + this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId] = + this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].gte(bStateChangeOutput) + ? this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].sub(bStateChangeOutput) + : ethers.constants.Zero; + + this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId] = + this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId].add(aStateChangeInput); + + this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId] = + this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId].add(bStateChangeInput); + + this.clearedCounterPartyFunds[a.orderHash][b.owner] = + this.clearedCounterPartyFunds[a.orderHash][b.owner].add(aStateChangeOutput); + + this.clearedCounterPartyFunds[b.orderHash][a.owner] = + this.clearedCounterPartyFunds[b.orderHash][a.owner].add(bStateChangeOutput); + + console.log(` + ******************************************************************** + + Order ${"0x" + a.orderHash.substring(2).padStart(40, "0")} + Successfully Cleared Agaisnt + Order ${"0x" + b.orderHash.substring(2).padStart(40, "0")} + + ******************************************************************** + `); + + } + else console.log("negative clear not possible") + } + } + else console.log("one or more orders have no script"); + } + + } \ No newline at end of file diff --git a/src/jsvm/simulation/SaleSimulation.ts b/src/jsvm/simulation/SaleSimulation.ts new file mode 100644 index 0000000..bc1c31b --- /dev/null +++ b/src/jsvm/simulation/SaleSimulation.ts @@ -0,0 +1,246 @@ +import { BigNumber, ethers } from "ethers"; +import { SaleStorage } from "../../contracts/sale"; +import { paddedUInt160 } from "../../utils"; +import { SaleJSVM } from "../SaleJSVM"; +import { eighteenZeros, erc20, FnPtrs, StateJSVM } from "../types"; +import { vmSimulation } from "./vmSimulation"; + + +/** + * @public + * A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. + */ + export class SaleSimulation extends vmSimulation { + + /** + * The sale address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * The reedeemable token of this sale i.e rTKN which needs to a string number or hex string @see erc20 + */ + public token: erc20; + + /** + * The reserve token of this sale as an erc20 type object @see erc20 + */ + public reserve: erc20; + + /** + * The reserve token addres of this sale as an erc20 type object + */ + public tokenAddress: string; + + /** + * The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string + */ + public reserveAddress: string; + + /** + * Constructor of this class + * + * @param address - A string number or hex string + * @param tokenAddress - A string number or hex string of the rTKN address + * @param reserveAddress - A string number or hex string of the reserve token address + * @param token - the rTKN + * @param reserve - the reserve token + */ + constructor ( + address: string, + tokenAddress: string, + reserveAddress: string, + token: erc20, + reserve: erc20 + ) { + super(); + this.token = token; + this.address = paddedUInt160(address); + this.reserve = reserve; + this.tokenAddress = paddedUInt160(tokenAddress); + this.reserveAddress = paddedUInt160(reserveAddress); + + if (this.erc20s[this.tokenAddress] === undefined) { + this.erc20s[this.tokenAddress] = this.token; + } + if (this.erc20s[this.reserveAddress] === undefined) { + this.erc20s[this.reserveAddress] = this.reserve; + } + if (this.erc20s[this.tokenAddress].balanceOf[this.address] === undefined) { + this.erc20s[this.tokenAddress].balanceOf[this.address] = this.token.balanceOf[this.address] + } + if (this.erc20s[this.reserveAddress].balanceOf[this.address] === undefined) { + this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address] + } + } + + /** + * Sale storage opcodes's functions body that use the class properties/types. @see FnPtrs and @see OpcodeFN + */ + private storageOps: FnPtrs = { + [SaleStorage.RemainingUnits]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(this.token.balanceOf[this.address]) + }, + [SaleStorage.TotalReserveIn]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(this.reserve.balanceOf[this.address]) + }, + [SaleStorage.TokenAddress]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(BigNumber.from(this.tokenAddress)) + }, + [SaleStorage.ReserveAddress]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(BigNumber.from(this.reserveAddress)) + } + }; + + /** + * Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. + * requires the class's sender property to be defined + * + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns a boolean represting if the sale can live (active status - 1) or not + */ + public async canLive(timestamp?: number, blockNumber?: number) : Promise { + let canLive: boolean; + const canLive_entrypoint = 0; + if (this.script && this.sender !== undefined) { + let simulation = new SaleJSVM( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {timestamp, blockNumber}, + canLive_entrypoint + ); + canLive = result_[0].isZero() ? false : true; + } + else throw new Error("no script or sender to execute canLive"); + return canLive; + } + + /** + * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. + * requires the class's sender property to be defined + * + * @param units - Units to get the calculation for + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return a pair of BigNumbers represting amount and price + */ + public async calculateBuy( + units: number, + timestamp?: number, + blockNumber?: number + ): Promise<[BigNumber, BigNumber]> { + let maxUnits; + let price; + const amount_price_entrypoint = 1; + + if (this.script && this.sender !== undefined) { + let simulation = new SaleJSVM( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {context: [units], timestamp, blockNumber}, + amount_price_entrypoint + ); + maxUnits = result_[result_.length - 2]; + price = result_[result_.length - 1]; + } + else throw new Error("no script or sender to execute calculateBuy") + return [maxUnits, price]; + } + + /** + * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. + * requires the class's sender property to be defined. + * + * @remark after running this method all the defined class's related types/storage will get updated with new + * values that are result of the JSVM running the script. + * + * @param units - Units to get the calculation for + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @return void + */ + public async buy( + units: number, + timestamp?: number, + blockNumber?: number + ): Promise { + const amount_price_entrypoint = 1; + + if (this.script && this.sender !== undefined) { + let simulation = new SaleJSVM( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {context: [units], timestamp, blockNumber}, + amount_price_entrypoint + ); + const maxUnits = result_[result_.length - 2]; + const price = result_[result_.length - 1]; + const Value_ = (maxUnits.mul(price)).div(eighteenZeros); + + if (Value_.lte(this.erc20s[this.reserveAddress].balanceOf[this.sender])) { + if (this.token.balanceOf[this.address].gte(maxUnits)) { + + this.reserve.balanceOf[this.address] = this.reserve.balanceOf[this.address].add(Value_); + this.token.balanceOf[this.address] = this.token.balanceOf[this.address].sub(maxUnits); + + this.erc20s[this.reserveAddress].balanceOf[this.address] = + this.erc20s[this.reserveAddress].balanceOf[this.address] + .add(Value_); + + this.erc20s[this.tokenAddress].balanceOf[this.address] = + this.erc20s[this.tokenAddress].balanceOf[this.address] + .sub(maxUnits); + + this.erc20s[this.reserveAddress].balanceOf[this.sender] = + this.erc20s[this.reserveAddress].balanceOf[this.sender] + .sub(Value_); + + this.erc20s[this.tokenAddress].balanceOf[this.sender] = + this.erc20s[this.tokenAddress].balanceOf[this.sender] + ? this.erc20s[this.tokenAddress].balanceOf[this.sender].add(maxUnits) + : maxUnits; + + this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; + this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; + + } + else { + this.reserve.balanceOf[this.address] = + this.reserve.balanceOf[this.address] + .add((this.token.balanceOf[this.address].mul(price)).div(eighteenZeros)); + + this.erc20s[this.tokenAddress].balanceOf[this.sender] = + this.erc20s[this.tokenAddress].balanceOf[this.sender] + ? this.erc20s[this.tokenAddress].balanceOf[this.sender] + .add(this.erc20s[this.tokenAddress].balanceOf[this.sender]) + : this.token.balanceOf[this.address]; + + this.erc20s[this.reserveAddress].balanceOf[this.sender] = + this.erc20s[this.reserveAddress].balanceOf[this.sender] + .sub((this.erc20s[this.tokenAddress].balanceOf[this.sender].mul(price)).div(eighteenZeros)); + + this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; + this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; + + this.token.balanceOf[this.address] = ethers.constants.Zero; + + this.erc20s[this.tokenAddress].balanceOf[this.address] = ethers.constants.Zero; + this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address]; + } + } + else throw new Error("insufficient balance") + } + else throw new Error("no script or sender to perform the buy") + } + } \ No newline at end of file diff --git a/src/jsvm/simulation/vmSimulation.ts b/src/jsvm/simulation/vmSimulation.ts new file mode 100644 index 0000000..4d51e9c --- /dev/null +++ b/src/jsvm/simulation/vmSimulation.ts @@ -0,0 +1,438 @@ +import { RainJSVM } from "../RainJSVM"; +import { BigNumber, ethers } from "ethers"; +import { Tier } from "../../classes/iTierV2"; +import { StateConfig, VM } from "../../classes/vm"; +import { + paddedUInt160, + paddedUInt256, +} from "../../utils"; +import { + FnPtrs, + erc20s, + itiers, + erc721s, + erc1155s, + StateJSVM, +} from "../types"; + + +/** + * @public + * A class for creating a simulation environment for running pure RainVM off-chain using JSVM. + */ +export class vmSimulation { + + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender?: string; + + /** + * A property of type erc20s that act like a storage for simulation and stores the erc20 token data. + * this is needed for IERC20 related opcodes @see erc20s and @see erc20 + */ + public erc20s: erc20s = {}; + + /** + * A property of type erc721s that act like a storage for simulation and stores the erc721 token data. + * this is needed for IERC721 related opcodes @see erc721s and @see erc721 + */ + public erc721s: erc721s = {}; + + /** + * A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. + * this is needed for IERC1155 related opcodes @see erc1155s and @see erc1155 + */ + public erc1155s: erc1155s = {}; + + /** + * A property of type itiers that act like a storage for simulation of Rain tier contracts. + * this is needed for ITIERV2_REPORT and ITIERV2_REPORT_TIME_FOR_TIER opcodes. @see itiers + */ + public iTiers: itiers = {}; + + /** + * The contract address of this simulation that the simulation is done for. this is needed for THIS_ADDRESS opcode + * simulation and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address?: string; + + /** + * The script to simulate @see StateConfig + */ + public script?: StateConfig; + + /** + * A property for producing timestamp for the class which will be used in BLOCK_TIMESTAMP opcode + * but BLOCK_TIMESTAMP opcode can also be passed at runtime + */ + public timestamp?: number; + + /** + * A property for producing block number for the class which will be used in BLOCK_NUMBER opcode + * but BLOCK_NUMBER opcode can also be passed at runtime + */ + public blockNumber?: number; + + /** + * Opcodes functions body for simulation that use the class properties/types. @see FnPtrs and @see OpcodeFN + */ + protected OpFns: FnPtrs = { + + [VM.Opcodes.BLOCK_NUMBER]: (state: StateJSVM, operand: number, data?: any) => { + if (data && data.blockNumber !== undefined) { + state.stack.push(BigNumber.from(data.blockNumber)) + } + else if (this.blockNumber !== undefined) { + state.stack.push(BigNumber.from(this.blockNumber)) + } + else throw new Error("undefined block number") + }, + + [VM.Opcodes.BLOCK_TIMESTAMP]: (state: StateJSVM, operand: number, data?: any) => { + if (data && data.timestamp !== undefined) { + state.stack.push(BigNumber.from(data.timestamp)) + } + if (this.timestamp !== undefined) { + state.stack.push(BigNumber.from(this.timestamp)) + } + else throw new Error("undefined block timestamp") + }, + + [VM.Opcodes.SENDER]: (state: StateJSVM, operand: number, data?: any) => { + if (this.sender !== undefined) + state.stack.push(BigNumber.from(this.sender)) + else throw new Error("undefined sender") + }, + + [VM.Opcodes.THIS_ADDRESS]: (state: StateJSVM, operand: number, data?: any) => { + if (this.address !== undefined) + state.stack.push(BigNumber.from(this.address)) + else throw new Error("undefined contract") + }, + + [VM.Opcodes.ITIERV2_REPORT]: (state: StateJSVM, operand: number, data?: any) => { + const context_ = operand ? state.stack.splice(-operand) : []; + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined && context_.length !== operand) { + const account_ = paddedUInt160(item2_); + let iTierV2Contract; + if (this.iTiers[paddedUInt160(item1_)] !== undefined) { + iTierV2Contract = this.iTiers[paddedUInt160(item1_)]; + } + else throw new Error("iTier contract does not exist") + + if (iTierV2Contract.report[account_] !== undefined) { + state.stack.push(iTierV2Contract.report[account_]); + } + else throw new Error("report doesn not exist for this address") + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.ITIERV2_REPORT_TIME_FOR_TIER]: (state: StateJSVM, operand: number, data?: any) => { + const context_ = operand ? state.stack.splice(-operand) : []; + const item3_ = state.stack.pop(); + if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined && context_.length === operand) { + let iTierV2Contract; + const tier_ = item3_; + const account_ = paddedUInt160(item2_); + if (this.iTiers[paddedUInt160(item1_)] !== undefined) { + iTierV2Contract = this.iTiers[paddedUInt160(item1_)]; + } + else throw new Error("iTier contract does not exist") + if (iTierV2Contract.report[account_] !== undefined) { + state.stack.push( + BigNumber.from( + paddedUInt256(iTierV2Contract.report[account_]) + .substring(2) + .slice( + (-(tier_.toNumber() - 8) * 8), + (-(tier_.toNumber() - 9) * 8) + ) + ) + ) + } + else throw new Error("report doesn not exist for this address") + } + else throw new Error('Undefined stack variables'); + } + else throw new Error("not valid tier"); + }, + + [VM.Opcodes.IERC20_BALANCE_OF]: (state: StateJSVM, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + state.stack.push(erc20Contract_.balanceOf[account_] ?? ethers.constants.Zero); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC20_TOTAL_SUPPLY]: (state: StateJSVM, operand: number, data?: any) => { + const item_ = state.stack.pop(); + if (item_ !== undefined) { + const erc20Address_ = paddedUInt160(item_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + state.stack.push(erc20Contract_.totalSupply); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC721_BALANCE_OF]: (state: StateJSVM, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const account_ = paddedUInt160(item2_); + const erc721Address_ = paddedUInt160(item1_); + let erc721Contract_; + if (this.erc721s[erc721Address_] !== undefined) { + erc721Contract_ = this.erc721s[erc721Address_] + } + else throw new Error("erc721 token does not exist") + let counter = 0; + for (let i = 0; i < Object.keys(erc721Contract_).length; i++) { + if (Object.values(erc721Contract_)[i].ownerOf === account_) counter++ + } + state.stack.push(BigNumber.from(counter)); + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC721_OWNER_OF]: (state: StateJSVM, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const tokenId_ = item2_.toNumber(); + const erc721Address_ = paddedUInt160(item1_); + let erc721Contract_; + if (this.erc721s[erc721Address_] !== undefined) { + erc721Contract_ = this.erc721s[erc721Address_] + } + else throw new Error("erc721 token does not exist") + if (erc721Contract_[tokenId_] !== undefined) { + state.stack.push( + BigNumber.from(erc721Contract_[tokenId_].ownerOf) + ) + } + else throw new Error("token ID doesn not exist") + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF]: (state: StateJSVM, operand: number, data?: any) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ !== undefined) { + const id_ = item3_.toNumber(); + const account_ = paddedUInt160(item2_); + const erc1155Address_ = paddedUInt160(item1_); + let erc1155Contract_; + if (this.erc1155s[erc1155Address_] !== undefined) { + erc1155Contract_ = this.erc1155s[erc1155Address_] + } + else throw new Error("erc1155 token doesn not exist") + if (erc1155Contract_[id_] !== undefined) { + state.stack.push(erc1155Contract_[id_].balanceOf[account_] ?? ethers.constants.Zero); + } + else throw new Error("token ID doesn not exist") + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC1155_BALANCE_OF_BATCH]: (state: StateJSVM, operand: number, data?: any) => { + const item3_ = state.stack.splice(-(operand + 1)); + const item2_ = state.stack.splice(-(operand + 1)); + const item1_ = state.stack.pop(); + if ( + item1_ && + item2_ && + item3_ && + item2_.length === item3_.length + ) { + const tokenIds_: number[] = []; + for (let i = 0; i < item3_.length; i++) { + tokenIds_.push(item3_[i].toNumber()); + } + const accounts_: string[] = []; + for (let i = 0; i < item2_.length; i++) { + accounts_.push(paddedUInt160(item2_[i])); + } + const erc1155Address_ = paddedUInt160(item1_); + let erc1155Contract_; + if (this.erc1155s[erc1155Address_] !== undefined) { + erc1155Contract_ = this.erc1155s[erc1155Address_] + } + else throw new Error("erc1155 token doesn not exist") + let balanceOfBatch: BigNumber[] = []; + for (let i = 0; i < tokenIds_.length; i++) { + if (Object.keys(erc1155Contract_).includes(tokenIds_[i].toString())) { + balanceOfBatch.push( + erc1155Contract_[tokenIds_[i]].balanceOf[accounts_[i]] ?? ethers.constants.Zero + ) + } + } + state.stack.push( + ...balanceOfBatch + ); + } + else throw new Error('Undefined stack variable'); + }, + + [VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT]: (state: StateJSVM, operand: number, data?: number) => { + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ && item3_ !== undefined) { + const snapshotId_ = item3_.toNumber(); + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + if (erc20Contract_.snapshots && erc20Contract_.snapshots[snapshotId_] !== undefined) { + state.stack.push(erc20Contract_.snapshots[snapshotId_].balanceOfAt[account_] ?? ethers.constants.Zero); + } + else throw new Error("no snapshot has created for this token") + } + else throw new Error('Undefined stack variables'); + }, + + [VM.Opcodes.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT]: (state: StateJSVM, operand: number, data?: number) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + const snapshotId_ = item2_.toNumber(); + const erc20Address_ = paddedUInt160(item1_); + let erc20Contract_; + if (this.erc20s[erc20Address_] !== undefined) { + erc20Contract_ = this.erc20s[erc20Address_]; + } + else throw new Error("erc20 token does not exist") + if (erc20Contract_.snapshots && erc20Contract_.snapshots[snapshotId_] !== undefined) { + state.stack.push(erc20Contract_.snapshots[snapshotId_].totalSupplyAt); + } + else throw new Error("no snapshot has created for this token") + } + else throw new Error('Undefined stack variables'); + } + } + + /** + * Method to set the class sender property + * + * @param senderAddress - a string number/hex string + */ + public setSender(senderAddress: string) { + this.sender = paddedUInt160(senderAddress); + } + + /** + * Method to set the class address property + * + * @param contractAddress - a string number/hex string + */ + public setContractAddress(contractAddress: string) { + this.address = paddedUInt160(contractAddress); + } + + /** + * Method to set the class script + * + * @param script - A StateConfig + */ + public setScript(script: StateConfig) { + this.script = script; + } + + /** + * Method to add assets i.e erc20/721/1155 types objects + * + * @param erc20s - An object of type erc20s + * @param erc721s - An object of type erc721s + * @param erc1155s - An object of type erc1155s + */ + public addAssets(erc20s?: erc20s, erc721s?: erc721s, erc1155s?: erc1155s) { + if (erc20s) { + for (let i = 0; i < Object.keys(erc20s).length; i++) { + if (Object.keys(this.erc20s).includes(Object.keys(erc20s)[i])) { + delete this.erc20s[Object.keys(erc20s)[i]] + } + } + this.erc20s = {...this.erc20s, ...erc20s} + } + if (erc721s) { + for (let i = 0; i < Object.keys(erc721s).length; i++) { + if (Object.keys(this.erc721s).includes(Object.keys(erc721s)[i])) { + delete this.erc721s[Object.keys(erc721s)[i]] + } + } + this.erc721s = {...this.erc721s, ...erc721s} + } + if (erc1155s) { + for (let i = 0; i < Object.keys(erc1155s).length; i++) { + if (Object.keys(this.erc1155s).includes(Object.keys(erc1155s)[i])) { + delete this.erc1155s[Object.keys(erc1155s)[i]] + } + } + this.erc1155s = {...this.erc1155s, ...erc1155s} + } + } + + /** + * Method to add tier contract types objects to the class (iTiers) + * + * @param iTiers - An Object of itiers type + */ + public addITiers (iTiers: itiers) { + for (let i = 0; i < Object.keys(iTiers).length; i++) { + if (Object.keys(this.iTiers).includes(Object.keys(iTiers)[i])) { + delete this.iTiers[Object.keys(iTiers)[i]] + } + } + this.iTiers = { + ...this.iTiers, + ...iTiers + } + } + + /** + * Method to run the script using JSVM + * + * @param data - (optional) the additional data that needs to be passed at the runtime such as timestamp used in BLOCK_TIMESTAMP opcode. + * @param index - (optional) the ENTRYPOINT or the index in the script sources to run + * + * @returns An array of BigNumbers, which are the stacked result of the script + */ + public async runScript (data?: any, index?: number): Promise { + if (this.script !== undefined) { + let simulation = new RainJSVM( + this.script, + {applyOpFn: this.OpFns} + ) + let result = simulation.run(data, index); + return result; + } + else throw new Error("no script to execute") + } +} \ No newline at end of file diff --git a/src/jsvm/types.ts b/src/jsvm/types.ts new file mode 100644 index 0000000..a48f4f2 --- /dev/null +++ b/src/jsvm/types.ts @@ -0,0 +1,208 @@ +import { BigNumber } from 'ethers'; +import { StateConfig } from '../classes/vm'; + + +/** + * @public + * An interface/type of JSVM opcodes' function's body + */ +export interface OpFn { + + (state: StateJSVM, operand: number, data?: any): void +} + + +/** + * @public + * An interface for creating a key/value pair of opcodes functions to override. + */ +export interface FnPtrs extends Record {} + +/** + * @public - An interface, StateJS is basically javascript version of 'State' struct + * in RainVM, although it doesn't need stackLength and argumentsLength to operate. It + * receives a regular RainVM in the constructor and initiates the stack for it and all + * opcodes do their operations to the stack. + * @see State in RainVM.sol + * + */ +export interface StateJSVM { + + /** + * The property to store the RainVM script constants. + */ + readonly constants: BigNumber[]; + + /** + * The property to store the RainVM script sources. + */ + readonly sources: Uint8Array[]; + + /** + * The RainJS's stack. + */ + readonly stack: BigNumber[]; + + /** + * Used only for zipmap opcode + */ + readonly argumentsStack: BigNumber[]; + +} + +// 18 decimals or i.e "DECIMALS" - used for fixed point match +export const eighteenZeros = "1000000000000000000"; + +/** + * type for simulating and storing ITier contract data + */ +export interface itiers { + + [address: string]: { + report: { + [wallet: string]: BigNumber + } + } + +} + +/** + * type for simulating and storing ERC20token contract data + */ +export interface erc20 { + + totalSupply: BigNumber, + decimals: number, + balanceOf: { + [wallet: string]: BigNumber + }, + snapshots?: { + [id: string]: { + totalSupplyAt: BigNumber, + balanceOfAt: { + [wallet: string]: BigNumber + } + } + } + +} + +/** + * type for simulating and storing ERC721 contract data + */ +export interface erc721 { + + [id: string]: { + ownerOf: string + } + +} + +/** + * type for simulating and storing ERC1155 contract data + */ +export interface erc1155 { + + [id: string]: { + balanceOf: { + [wallet: string]: BigNumber + } + } + +} + +/** + * type for simulating and storing multiple ERC20 tokens + */ +export interface erc20s { + + [address: string]: erc20 + +} + +/** + * type for simulating and storing multiple ERC721 tokens + */ +export interface erc721s { + + [address: string]: erc721 + +} + +/** + * type for simulating and storing multiple ERC1155 tokens + */ +export interface erc1155s { + + [address: string]: erc1155 + +} + +/** + * type for simulating and storing orderbook Vaults data + */ +export interface vaults { + + [owner: string]: { + [tokenAddress: string]: { + vaultId: { + [vaultId: string]: BigNumber + } + } + } + +} + +/** + * type for simulating and storing orderbook Order data + */ +export interface order { + + orderHash: string, + owner: string, + inputToken: string, + outputToken: string, + inputVaultId: string, + outputVaultId: string, + vmConfig: StateConfig + +} + +/** + * type for simulating and storing multiple orderbook Orders + */ +export interface orders { + + [orderHash: string]: order + +} + +/** + * type for bounty config + */ +export interface bountyConfig { + + aVaultId: string, + bVaultId: string, + +} + +/** + * type for simulating and storing matched order cleared funds + */ +export interface clearedFunds { + + [orderHash: string]: BigNumber + +} + +/** + * type for simulating and storing matched order counterparty cleared funds + */ +export interface clearedCounterPartyFunds { + + [orderHash: string]: { + [counterPartyAddress: string]: BigNumber + } + +} \ No newline at end of file diff --git a/src/utils.ts b/src/utils.ts index b5a8129..b486e84 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,37 +1,40 @@ import type { BytesLike } from 'ethers'; +import { isBytes, isHexString } from 'ethers/lib/utils'; import { BigNumber, BigNumberish, ethers, utils } from 'ethers'; + export const { - /** - * @public ethers concat - * @see ethers.concat - */ - concat, - /** - * @public ethers hexlify - * @see ethers.hexlify - */ - hexlify, - /** - * @public ethers zeroPad - * @see ethers.zeroPad - */ - zeroPad, - /** - * @public ethers hexZeroPad - * @see ethers.hexZeroPad - */ - hexZeroPad, - /** - * @public ethers arrayify - * @see ethers.arrayify - */ - arrayify, - /** - * @public ethers parseUnits - * @see ethers.parseUnits - */ - parseUnits, + /** + * @public ethers concat + * @see ethers.concat + */ + concat, + /** + * @public ethers hexlify + * @see ethers.hexlify + */ + hexlify, + /** + * @public ethers zeroPad + * @see ethers.zeroPad + */ + zeroPad, + /** + * @public ethers hexZeroPad + * @see ethers.hexZeroPad + */ + hexZeroPad, + /** + * @public ethers arrayify + * @see ethers.arrayify + */ + arrayify, + /** + * @public ethers parseUnits + * @see ethers.parseUnits + */ + parseUnits, + } = utils; /** @@ -43,17 +46,17 @@ export type Hexable = utils.Hexable; * @public An enum for selectLte logic */ export enum selectLteLogic { - every, - any, + every, + any, } /** * @public An enum for selectLte mode */ export enum selectLteMode { - min, - max, - first, + min, + max, + first, } /** @@ -64,10 +67,11 @@ export enum selectLteMode { * @param erand - the operand, currently limited to 1 byte (defaults to 0) */ export const op = ( - code: number, - erand: number | BytesLike | utils.Hexable = 0 + code: number, + erand: number | BytesLike | utils.Hexable = 0 ): Uint8Array => { - return concat([bytify(code), bytify(erand)]); + + return concat([bytify(code), bytify(erand)]); }; /** @@ -82,10 +86,11 @@ export const op = ( * @returns raw bytes representation as Uint8Array */ export const bytify = ( - value: number | BytesLike | utils.Hexable, - bytesLength = 1 + value: number | BytesLike | utils.Hexable, + bytesLength = 1 ): BytesLike => { - return zeroPad(hexlify(value), bytesLength); + + return zeroPad(hexlify(value), bytesLength); }; /** @@ -96,10 +101,10 @@ export const bytify = ( * @returns hexadecimal string of the report already padded (64 char hexString) */ export const paddedUInt256 = (report: BigNumberish): string => { - if (BigNumber.from(report).gt(ethers.constants.MaxUint256)) { - throw new Error(`${report} exceeds max uint256`); - } - return "0x" + BigNumber.from(report).toHexString().substring(2).padStart(64, "0"); + if (BigNumber.from(report).gt(ethers.constants.MaxUint256)) { + throw new Error(`${report} exceeds max uint256`); + } + return "0x" + BigNumber.from(report).toHexString().substring(2).padStart(64, "0"); }; /** @@ -110,10 +115,10 @@ export const paddedUInt256 = (report: BigNumberish): string => { * @returns a 8 char hexString (without 0x prefix) */ export const paddedUInt32 = (number: BigNumberish): string => { - if (BigNumber.from(number).gt('0xffffffff')) { - throw new Error(`${number} exceeds max uint32`); - } - return BigNumber.from(number).toHexString().substring(2).padStart(8, "0"); + if (BigNumber.from(number).gt('0xffffffff')) { + throw new Error(`${number} exceeds max uint32`); + } + return BigNumber.from(number).toHexString().substring(2).padStart(8, "0"); }; /** @@ -125,18 +130,18 @@ export const paddedUInt32 = (number: BigNumberish): string => { * @returns a byte size number */ export function tierRange(startTier: number, endTier: number): number { - // op_.val & 0x0f, // 00001111 - // op_.val & 0xf0, // 11110000 - - if (startTier < 0 || startTier > 8) { - throw new Error(`Invalid startTier ${startTier}`); - } else if (endTier < 0 || endTier > 8) { - throw new Error(`Invalid endTier ${endTier}`); - } - let range = endTier; - range <<= 4; - range += startTier; - return range; + // op_.val & 0x0f, // 00001111 + // op_.val & 0xf0, // 11110000 + + if (startTier < 0 || startTier > 8) { + throw new Error(`Invalid startTier ${startTier}`); + } else if (endTier < 0 || endTier > 8) { + throw new Error(`Invalid endTier ${endTier}`); + } + let range = endTier; + range <<= 4; + range += startTier; + return range; } /** @@ -151,29 +156,30 @@ export function tierRange(startTier: number, endTier: number): number { * @param valSize - number of vals in outer stack (range 0-7) */ export function callSize( - sourceIndex: number, - loopSize: number, - valSize: number + sourceIndex: number, + loopSize: number, + valSize: number ): number { - // CallSize( - // op_.val & 0x07, // 00000111 - // op_.val >> 3 & 0x03, // 00011000 - // op_.val >> 5 & 0x07 // 11100000 - // ) - - if (sourceIndex < 0 || sourceIndex > 7) { - throw new Error('Invalid fnIndex'); - } else if (loopSize < 0 || loopSize > 3) { - throw new Error('Invalid loopSize'); - } else if (valSize < 0 || valSize > 7) { - throw new Error('Invalid valSize'); - } - let callSize = valSize; - callSize <<= 2; - callSize += loopSize; - callSize <<= 3; - callSize += sourceIndex; - return callSize; + // CallSize( + // op_.val & 0x07, // 00000111 + // op_.val >> 3 & 0x03, // 00011000 + // op_.val >> 5 & 0x07 // 11100000 + // ) + + if (sourceIndex < 0 || sourceIndex > 7) { + throw new Error('Invalid fnIndex'); + } else if (loopSize < 0 || loopSize > 3) { + throw new Error('Invalid loopSize'); + } else if (valSize < 0 || valSize > 7) { + throw new Error('Invalid valSize'); + } + let callSize = valSize; + callSize <<= 2; + callSize += loopSize; + callSize <<= 3; + callSize += sourceIndex; + + return callSize; } /** @@ -186,12 +192,13 @@ export function callSize( * @returns a byte size number */ export function selectLte(logic: number, mode: number, length: number): number { - let lte = logic; - lte <<= 2; - lte += mode; - lte <<= 5; - lte += length; - return lte; + let lte = logic; + lte <<= 2; + lte += mode; + lte <<= 5; + lte += length; + + return lte; } /** @@ -204,13 +211,15 @@ export function selectLte(logic: number, mode: number, length: number): number { * @returns BytesLike with the value replaced */ export const replaceAt = ( - original: BytesLike, - index: number, - replacement: string | number + original: BytesLike, + index: number, + replacement: string | number ): BytesLike => { - const originalParsed = arrayify(original, { allowMissingPrefix: true }); - originalParsed[index] = parseInt(replacement.toString()); - return originalParsed; + + const originalParsed = arrayify(original, { allowMissingPrefix: true }); + originalParsed[index] = parseInt(replacement.toString()); + + return originalParsed; }; /** @@ -221,10 +230,10 @@ export const replaceAt = ( * @returns a 16 character hexString (without 0x prefix) */ export const paddedUInt64 = (number: BigNumberish): string => { - if (BigNumber.from(number).gt('0xffffffffffffffff')) { - throw new Error(`${number} exceeds max uint64`); - } - return BigNumber.from(number).toHexString().substring(2).padStart(16, "0"); + if (BigNumber.from(number).gt('0xffffffffffffffff')) { + throw new Error(`${number} exceeds max uint64`); + } + return BigNumber.from(number).toHexString().substring(2).padStart(16, "0"); }; /** @@ -235,10 +244,10 @@ export const paddedUInt64 = (number: BigNumberish): string => { * @returns a 32 character hexString (without 0x prefix) */ export const paddedUInt128 = (number: BigNumberish): string => { - if (BigNumber.from(number).gt('0xffffffffffffffffffffffffffffffff')) { - throw new Error(`${number} exceeds max uint128`); - } - return BigNumber.from(number).toHexString().substring(2).padStart(32, "0"); + if (BigNumber.from(number).gt('0xffffffffffffffffffffffffffffffff')) { + throw new Error(`${number} exceeds max uint128`); + } + return BigNumber.from(number).toHexString().substring(2).padStart(32, "0"); }; /** @@ -249,10 +258,167 @@ export const paddedUInt128 = (number: BigNumberish): string => { * @returns hexadecimal string as an ether address (40 char length hexString) */ export const paddedUInt160 = (address: BigNumberish): string => { - if ( - BigNumber.from(address).gt('0xffffffffffffffffffffffffffffffffffffffff') - ) { - throw new Error(`${address} exceeds max uint160`); - } - return "0x" + BigNumber.from(address).toHexString().substring(2).padStart(40, "0"); -}; \ No newline at end of file + if ( + BigNumber.from(address).gt('0xffffffffffffffffffffffffffffffffffffffff') + ) { + throw new Error(`${address} exceeds max uint160`); + } + return "0x" + BigNumber.from(address).toHexString().substring(2).padStart(40, "0"); +}; + +/** + * Convert an array of 8 BigNumberish values to 8 32bit values packed in a HexString uint256 i.e. Report + * + * @param array - The array to make report from + * @returns a 64char length HexString (uint256) + */ +export const arrToReport = (array: BigNumberish[]): string => { + for (let i = 0; i < 8; i++) { + if (array[i] === undefined) { + array[i] = 0; + } + } + return paddedUInt256( + "0x" + + paddedUInt32(array[7]) + + paddedUInt32(array[6]) + + paddedUInt32(array[5]) + + paddedUInt32(array[4]) + + paddedUInt32(array[3]) + + paddedUInt32(array[2]) + + paddedUInt32(array[1]) + + paddedUInt32(array[0]) + ) +} + +/** + * function to check if the a value is of type BigNumberish + * + * @param value - the value to check + * @returns boolean + */ +export function isBigNumberish(value: any): boolean { + + return (value != null) && ( + BigNumber.isBigNumber(value) || + (typeof(value) === "number" && (value % 1) === 0) || + (typeof(value) === "string" && !!value.match(/^-?[0-9]+$/)) || + isHexString(value) || + (typeof(value) === "bigint") || + isBytes(value) + ); +} + +/** + * Extract some of the properites from a Map as a new Map with same keys. + * + * @param map - the map to extract from + * @param properties - name of the properties in second item of the map elements + * @returns a new Map + */ +export function extractFromMap(map: Map, properties: string[]): Map { + + if (properties.length > 0) { + + let _arr = Array.from(map.entries()) + for(const item of _arr) { + let _newArr = {} + for(const key of Object.keys(item[1])) { + if(properties.includes(key)) { + _newArr = { + ..._newArr, + [key]: item[1][key] + } + } + } + item[1] = _newArr; + } + return new Map(_arr) + } + else return map; +} + +/** + * Extract some of the properties from a Record as new Record with same keys. + * + * @param record - the record to extract from. + * @param properties - name of the properties in value item of the key/va;ue pair of a Record object + * @returns a new Record i.e. a new key/value pair object + */ +export function extractFromRecord( + record: Record, + properties: string | string[] +): Record { + + if (typeof properties === "string") { + for (const key in record) { + for (const value in record[key]) { + if (properties.includes(value)) { + record[key] = record[key][value] + } + } + } + return record as Record + } + else if (properties.length > 0) { + for (const key in record) { + for (const value in record[key]) { + if (!properties.includes(value)) { + delete(record[key][value]) + } + } + } + return record as Record + } + else return record; +} + +/** + * Conver a Map to a equivelant Record (a key/value pair object). Map keys must be of type acceptable by Record constructor, + * which are string, number or symbol. + * + * @param map - The Map to conver to Record + * @param properties - (optional) properties to pick from the second item of the Map's elements. + * @returns a new Record (a key/value pait object) + */ +export function mapToRecord( + map: Map, + properties?: string[] +): Record { + + let _ret: Record = {}; + const Properties = properties ? properties : []; + + if (Properties.length === 1) { + for (const [key, value] of map) { + _ret[key] = value[Properties[0]] + } + + return _ret as Record; + } + else { + for (const [key, value] of extractFromMap(map, Properties)) { + _ret[key] = value; + } + + return _ret as Record; + } +} + +/** + * Conver a Record (a key/value pair object) to a equivelant Map. Map keys will be of type acceptable by Record constructor, + * which are string, number or symbol. + * + * @param record - The Record to convert to a Map + * @param properties - (optional) properties to pick from the values of key/value pair items of the Record object. + * @returns + */ +export function recordToMap( + record: Record, + properties?: string | string[] +): Map { + + const Properties = properties ? properties : []; + + return new Map(Object.entries(extractFromRecord(record, Properties))) as Map +} \ No newline at end of file diff --git a/src/friendlySource.ts b/src/vm/HumanFreindlyRead.ts similarity index 98% rename from src/friendlySource.ts rename to src/vm/HumanFreindlyRead.ts index ac8c324..8cb4c8a 100644 --- a/src/friendlySource.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -1,18 +1,18 @@ import { BytesLike, BigNumberish, BigNumber } from 'ethers'; -import { AllStandardOps, StateConfig } from './classes/vm'; -import { CombineTierStorage } from './contracts/tiers/combineTier'; +import { AllStandardOps, StateConfig } from '../classes/vm'; +import { CombineTierStorage } from '../contracts/tiers/combineTier'; import { EmissionsERC20Context, EmissionsERC20Storage, -} from './contracts/emissionsERC20'; -import { OrderbookContext, OrderbookStorage } from './contracts/orderBook'; -import { SaleContext, SaleStorage } from './contracts/sale'; +} from '../contracts/emissionsERC20'; +import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; +import { SaleContext, SaleStorage } from '../contracts/sale'; import { arrayify, paddedUInt256, selectLteLogic, selectLteMode, -} from './utils'; +} from '../utils'; interface OpMeta { opcode: number; @@ -338,7 +338,7 @@ const newOpMeta: OpMeta[] = [ * If you find an issue or you want to propose a better way to show a specific script or opcodes, please * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ -export class HumanFriendlySource { +export class HumanFriendlyRead { private static opMeta: OpMeta[] = newOpMeta; private static _context: string | undefined; private static _pretty: boolean; diff --git a/test/1_initSDK.test.ts b/test/1_Init.test.ts similarity index 100% rename from test/1_initSDK.test.ts rename to test/1_Init.test.ts diff --git a/test/6_RainJS.test.ts b/test/6_RainJSVM.test.ts similarity index 93% rename from test/6_RainJS.test.ts rename to test/6_RainJSVM.test.ts index dce1fbd..40c3628 100644 --- a/test/6_RainJS.test.ts +++ b/test/6_RainJSVM.test.ts @@ -2,7 +2,7 @@ import { assert } from 'chai'; import { ethers } from 'hardhat'; import { BigNumber } from 'ethers'; import { expectAsyncError, ONE, Tier, Time } from './utils'; -import { StateConfig, RainJS, OpcodeFN, ApplyOpFn, VM } from '../src'; +import { StateConfig, RainJSVM, OpFn, FnPtrs, VM } from '../src'; import { op, paddedUInt32, @@ -15,12 +15,12 @@ import { } from '../src/utils'; -describe('SDK - RainJS', () => { +describe('SDK - RainJSVM', () => { it('should perform correctly with custom opcode function', async () => { - const customBlockNumber: OpcodeFN = (state, operand, data) => { + const customBlockNumber: OpFn = (state, operand, data) => { state.stack.push(BigNumber.from(data.blockNumber)); }; - const applyOpFn: ApplyOpFn = {}; + const applyOpFn: FnPtrs = {}; applyOpFn[VM.Opcodes.BLOCK_NUMBER] = customBlockNumber; const script: StateConfig = { @@ -38,7 +38,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { applyOpFn }); + const rainJs = new RainJSVM(script, { applyOpFn }); const result = await rainJs.run({ blockNumber: 111 }); @@ -126,7 +126,7 @@ describe('SDK - RainJS', () => { stackLength: 3, }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); @@ -162,7 +162,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); const result = await rainJs.run(); const block = await Time.currentBlock(); @@ -194,7 +194,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); for (let i = 0; i < 100; i++) { const result = await rainJs.run(); @@ -231,7 +231,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); for (let i = 0; i < 100; i++) { const result = await rainJs.run(); @@ -265,7 +265,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); for (let i = 0; i < 100; i++) { const result = await rainJs.run(); @@ -300,7 +300,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); for (let i = 0; i < 100; i++) { const result = await rainJs.run(); @@ -335,7 +335,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); @@ -365,7 +365,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); @@ -392,7 +392,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); @@ -419,7 +419,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); @@ -446,7 +446,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); @@ -473,7 +473,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('0x22').mul('10000000000000').mul('0x44'); @@ -499,7 +499,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('0x22').mul('100000000').mul(ONE).div('0x44'); @@ -521,7 +521,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('22000000000000000001'); @@ -541,7 +541,7 @@ describe('SDK - RainJS', () => { sources: [concat([op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SCALEN, 3)])], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('44371'); @@ -563,7 +563,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('443711838001274368'); @@ -592,7 +592,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('10'); @@ -622,7 +622,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('60'); @@ -652,7 +652,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('30'); @@ -695,7 +695,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script); + const rainJs = new RainJSVM(script); const result = await rainJs.run(); const expected = BigNumber.from('30'); @@ -733,7 +733,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); const result = await rainJs.run(); const expected = BigNumber.from( @@ -777,7 +777,7 @@ describe('SDK - RainJS', () => { ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); const result = await rainJs.run(); const expected = BigNumber.from( @@ -809,7 +809,7 @@ describe('SDK - RainJS', () => { ]), ], }; - const rainJs = new RainJS(script, { signer }); + const rainJs = new RainJSVM(script, { signer }); await expectAsyncError(rainJs.run(), 'max numeric range overflow'); }); diff --git a/test/7_FriendlySource.test.ts b/test/7_FriendlySource.test.ts index 444f7b3..a7773dc 100644 --- a/test/7_FriendlySource.test.ts +++ b/test/7_FriendlySource.test.ts @@ -2,19 +2,19 @@ import { expect } from 'chai'; import { ethers } from 'hardhat'; import { VM, - HumanFriendlySource, utils, AllStandardOps, StateConfig, SaleStorage, SaleContext, + HumanFriendlyRead, } from '../src'; +import { arrToReport } from '../src/utils'; import { getSigned8, eighteenZeros, sixZeros, max_uint256, - timestampToReport, Time, RESERVE_ONE, ONE, @@ -59,7 +59,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.eq(`EXP(${constants[0]}, ${constants[1]})`); }); @@ -82,7 +82,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.eql(`MUL(${constants[0]}, ${constants[1]})`); }); @@ -105,7 +105,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SUB(${constants[0]}, ${constants[1]})`); }); @@ -128,7 +128,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`ADD(${constants[0]}, ${constants[1]})`); }); @@ -151,7 +151,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); }); @@ -174,7 +174,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); }); @@ -197,7 +197,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); }); @@ -220,7 +220,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); }); @@ -245,7 +245,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALE18_DIV(${value1}*10**18, ${value2})`); }); @@ -270,7 +270,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALE18_MUL(${value1}*10**18, ${value2})`); }); @@ -292,7 +292,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.be.equal(`SCALE18(${value})`); }); @@ -351,7 +351,7 @@ describe('SDK - Human Friendly Source Generator', () => { }; // 0x/00000001.00000000.00000003.00000000.00000005.00000000.00000007.00000008 - const friendly0 = HumanFriendlySource.get(state); + const friendly0 = HumanFriendlyRead.get(state); expect(friendly0).to.eq(`ZIPMAP_8( ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], @@ -381,7 +381,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`ANY(1, 2, 3)`); // prettier-ignore @@ -396,7 +396,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`ANY(0, 0)`); // prettier-ignore @@ -412,7 +412,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly2 = HumanFriendlySource.get(state2); + const friendly2 = HumanFriendlyRead.get(state2); expect(friendly2).to.be.equals(`ANY(0, 0, 3)`); }); @@ -437,7 +437,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`EVERY(1, 2, 3)`); // prettier-ignore @@ -453,7 +453,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`EVERY(0, 1, 2)`); // prettier-ignore @@ -468,7 +468,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly2 = HumanFriendlySource.get(state2); + const friendly2 = HumanFriendlyRead.get(state2); expect(friendly2).to.be.equals(`EVERY(0, 3)`); }); @@ -494,7 +494,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`EAGER_IF(1, 2, 3)`); // prettier-ignore @@ -511,7 +511,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`EAGER_IF(2, 2, 3)`); // prettier-ignore @@ -528,7 +528,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly2 = HumanFriendlySource.get(state2); + const friendly2 = HumanFriendlyRead.get(state2); expect(friendly2).to.be.equals(`EAGER_IF(0, 2, 3)`); }); @@ -547,7 +547,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`GREATER_THAN(2, 1)`); // prettier-ignore @@ -562,7 +562,7 @@ describe('SDK - Human Friendly Source Generator', () => { constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`GREATER_THAN(1, 2)`); }); @@ -580,7 +580,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source0, constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`LESS_THAN(2, 1)`); // prettier-ignore @@ -594,7 +594,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source1, constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`LESS_THAN(1, 2)`); }); @@ -612,7 +612,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source0, constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`EQUAL_TO(2, 2)`); // prettier-ignore @@ -626,7 +626,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source1, constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`EQUAL_TO(1, 2)`); }); @@ -643,7 +643,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source0, constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.be.equals(`ISZERO(0)`); // prettier-ignore @@ -656,7 +656,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source1, constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.be.equals(`ISZERO(1)`); }); @@ -672,7 +672,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source0, constants, }; - const friendly0 = HumanFriendlySource.get(state0); + const friendly0 = HumanFriendlyRead.get(state0); expect(friendly0).to.eq('CURRENT_BLOCK'); @@ -685,7 +685,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source1, constants, }; - const friendly1 = HumanFriendlySource.get(state1); + const friendly1 = HumanFriendlyRead.get(state1); expect(friendly1).to.eq('CURRENT_TIMESTAMP'); }); @@ -709,7 +709,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('MOD(7, 4, 2)'); }); @@ -732,7 +732,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('EXP(2, 4, 3)'); }); @@ -756,7 +756,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('MAX(22, 11, 33)'); }); @@ -780,7 +780,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('MIN(22, 11, 33)'); }); @@ -797,7 +797,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('CURRENT_BLOCK'); }); @@ -867,7 +867,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq(`ZIPMAP_8( [1, 2, 3, 4, 5, 6, 7, 8], @@ -914,7 +914,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq(`ZIPMAP_2( [5, 3], @@ -1025,7 +1025,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq(`ZIPMAP_1( 10, @@ -1090,7 +1090,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq(`ZIPMAP_1( 1, @@ -1140,7 +1140,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq(`ZIPMAP_1( 3, @@ -1185,7 +1185,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq(`ZIPMAP_1( 1, @@ -1225,7 +1225,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq( 'MUL(CURRENT_BLOCK, DIV(6, 3), ADD(3, 4, SUB(2, 1)))' @@ -1256,7 +1256,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('DIV(MUL(ADD(2, 2, 2), 3), 2, 3)'); }); @@ -1281,7 +1281,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('MOD(13, 2, 3)'); }); @@ -1306,7 +1306,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('DIV(12, 2, 3)'); }); @@ -1331,7 +1331,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('MUL(3, 4, 5)'); }); @@ -1356,7 +1356,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('SUB(10, 2, 3)'); }); @@ -1381,7 +1381,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.eq('ADD(1, 2, 3)'); }); @@ -1389,9 +1389,9 @@ describe('SDK - Human Friendly Source Generator', () => { it('should use saturating sub for diff where only some tiers would underflow', async () => { const constants0 = [ // 0x01000000020000000300000004000000050000000600000007 - timestampToReport([0, 1, 2, 3, 4, 5, 6, 7].reverse()), + arrToReport([0, 1, 2, 3, 4, 5, 6, 7]), // 0x0200000000000000040000000000000006000000000000000800000000 - timestampToReport([2, 0, 4, 0, 6, 0, 8, 0].reverse()), + arrToReport([2, 0, 4, 0, 6, 0, 8, 0]), ]; const vReport0 = op(Opcode.CONSTANT, 0); @@ -1408,7 +1408,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources: source0, constants: constants0, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal( `SATURATING_DIFF(${constants0[0]}, ${constants0[1]})` @@ -1447,7 +1447,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal( `IERC1155_BALANCE_OF_BATCH(${tokenERC1155.address}, ${signer1.address}, ${signer2.address}, ${tokenId}, ${tokenId})` @@ -1477,7 +1477,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal( `IERC1155_BALANCE_OF(${tokenERC1155.address}, ${signer1.address}, ${tokenId})` @@ -1503,7 +1503,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal( `IERC721_OWNER_OF(${tokenERC721.address}, ${nftId})` @@ -1529,7 +1529,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal( `IERC721_BALANCE_OF(${tokenERC721.address}, ${signer1.address})` @@ -1554,7 +1554,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal(`IERC20_TOTAL_SUPPLY(${tokenERC20.address})`); }); @@ -1578,7 +1578,7 @@ describe('SDK - Human Friendly Source Generator', () => { sources, constants, }; - const friendly = HumanFriendlySource.get(state); + const friendly = HumanFriendlyRead.get(state); expect(friendly).to.be.equal( `IERC20_BALANCE_OF(${tokenERC20.address}, ${signer1.address})` @@ -1679,7 +1679,7 @@ describe('SDK - Human Friendly Source Generator', () => { }; // @ts-ignore - const friendly = HumanFriendlySource.get(saleConfig, { + const friendly = HumanFriendlyRead.get(saleConfig, { contract: 'sale', pretty: true, }); @@ -1831,7 +1831,7 @@ EAGER_IF( }; expect(() => { - HumanFriendlySource.get(saleConfig, { + HumanFriendlyRead.get(saleConfig, { pretty: true, }); }).to.throw('Not contract/context provided to get the STORAGE'); @@ -1890,7 +1890,7 @@ EAGER_IF( constants, }; - const friendlyPretty = HumanFriendlySource.get(state, { + const friendlyPretty = HumanFriendlyRead.get(state, { pretty: true, }); From 66a7c6966a392530999c080f8f02932b70a3efbd Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Tue, 19 Jul 2022 22:07:35 +0000 Subject: [PATCH 045/125] update human friendly read --- test/{7_FriendlySource.test.ts => 7_HumanFriendlyRead.test.ts} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename test/{7_FriendlySource.test.ts => 7_HumanFriendlyRead.test.ts} (99%) diff --git a/test/7_FriendlySource.test.ts b/test/7_HumanFriendlyRead.test.ts similarity index 99% rename from test/7_FriendlySource.test.ts rename to test/7_HumanFriendlyRead.test.ts index a7773dc..cfc7292 100644 --- a/test/7_FriendlySource.test.ts +++ b/test/7_HumanFriendlyRead.test.ts @@ -40,7 +40,7 @@ if (a == 2) { // } -describe('SDK - Human Friendly Source Generator', () => { +describe('SDK - Human Friendly Read Generator', () => { it('should generate the human friendly from an exponentiation op source', async () => { const constants = [5, 2]; From dfef0299d766e009b564605aa7cbabda61a1980b Mon Sep 17 00:00:00 2001 From: rouzwelt <98348398+rouzwelt@users.noreply.github.com> Date: Tue, 19 Jul 2022 22:23:48 +0000 Subject: [PATCH 046/125] OpMeta --- src/vm/OpMeta.ts | 692 ++++++++++++++++++++++++++++++++++++++++++ yarn.lock | 763 +++++++++++++++++++++++------------------------ 2 files changed, 1071 insertions(+), 384 deletions(-) create mode 100644 src/vm/OpMeta.ts diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts new file mode 100644 index 0000000..568a7e8 --- /dev/null +++ b/src/vm/OpMeta.ts @@ -0,0 +1,692 @@ +// import { pnp } from "./VM"; +import { RainJSVM } from "../jsvm/RainJSVM"; +import { OpAdd } from "../jsvm/ops/math/OpAdd"; +import { OpDiv } from "../jsvm/ops/math/OpDiv"; +import { OpExp } from "../jsvm/ops/math/OpExp"; +import { OpMax } from "../jsvm/ops/math/OpMax"; +import { OpMin } from "../jsvm/ops/math/OpMin"; +import { OpMod } from "../jsvm/ops/math/OpMod"; +import { OpMul } from "../jsvm/ops/math/OpMul"; +import { OpSub } from "../jsvm/ops/math/OpSub"; +import { OpFn, StateJSVM } from "./../jsvm/types"; +import { AllStandardOps } from "../../src/classes/vm"; +import { OpCaller } from "../jsvm/ops/evm/OpCaller"; +import { OpAny } from "../jsvm/ops/math/logic/OpAny"; +import { OpEvery } from "../jsvm/ops/math/logic/OpEvery"; +import { OpTimestamp } from "../jsvm/ops/evm/OpTimestamp"; +import { OpSelectLte } from "../jsvm/ops/tier/OpSelectLte"; +import { OpIsZero } from "../jsvm/ops/math/logic/OpIsZero"; +import { OpEagerIf } from "../jsvm/ops/math/logic/OpEagerIf"; +import { OpEqualTo } from "../jsvm/ops/math/logic/OpEqualTo"; +import { OpBlockNumber } from "../jsvm/ops/evm/OpBlockNumber"; +import { OpThisAddress } from "../jsvm/ops/evm/OpThisAddress"; +import { OpLessThan } from "../jsvm/ops/math/logic/OpLessThan"; +import { OpScaleN } from "../jsvm/ops/math/fixedPoint/OpScaleN"; +import { OpScaleBy } from "../jsvm/ops/math/fixedPoint/OpScaleBy"; +import { OpScale18 } from "../jsvm/ops/math/fixedPoint/OpScale18"; +import { OpITierV2Report } from "../jsvm/ops/tier/OpITierV2Report"; +import { OpGreaterThan } from "../jsvm/ops/math/logic/OpGreaterThan"; +import { OpSaturatingDiff } from "../jsvm/ops/tier/OpSaturatingDiff"; +import { OpERC721OwnerOf } from "../jsvm/ops/erc721/OpERC721OwnerOf"; +import { OpERC20BalanceOf } from "../jsvm/ops/erc20/OpERC20BalanceOf"; +import { OpScale18Div } from "../jsvm/ops/math/fixedPoint/OpScale18Div"; +import { OpScale18Mul } from "../jsvm/ops/math/fixedPoint/OpScale18Mul"; +import { OpERC721BalanceOf } from "../jsvm/ops/erc721/OpERC721BalanceOf"; +import { OpERC20TotalSupply } from "../jsvm/ops/erc20/OpERC20TotalSupply"; +import { OpERC1155BalanceOf } from "../jsvm/ops/erc1155/OpERC1155BalanceOf"; +import { OpSaturatingAdd } from "../jsvm/ops/math/saturating/OpSaturatingAdd"; +import { OpSaturatingMul } from "../jsvm/ops/math/saturating/OpSaturatingMul"; +import { OpSaturatingSub } from "../jsvm/ops/math/saturating/OpSaturatingSub"; +import { OpERC1155BalanceOfBatch } from "../jsvm/ops/erc1155/OpERC1155BalanceOfBatch"; +import { OpUpdateTimesForTierRange } from "../jsvm/ops/tier/OpUpdateTimesForTierRange"; +import { OpITierV2ReportTimesForTier } from "../jsvm/ops/tier/OpITierV2ReportTimesForTier"; +import { OpERC20SnapshotBalanceOfAt } from "../jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt"; +import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt"; + + + +/** + * + */ + export const pnp: Record number> = { + + /** + * + */ + zero: (opcode: number, operand: number) => 0, + + /** + * + */ + one: (opcode: number, operand: number) => 1, + + /** + * + */ + two: (opcode: number, operand: number) => 2, + + /** + * + */ + three: (opcode: number, operand: number) => 3, + + /** + * + */ + oprnd: (opcode: number, operand: number) => operand, + + /** + * + */ + derived: (opcode: number, operand: number) => { + + if (opcode === AllStandardOps.ZIPMAP) { + return operand >> 5; + } + if (opcode === AllStandardOps.SELECT_LTE) { + return (operand & 248) >> 3; + } + if (opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { + return (operand * 2) + 1; + } + if (opcode === AllStandardOps.ITIERV2_REPORT) { + return operand + 1; + } + if (opcode === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { + return operand + 2; + } + else return NaN; + }, + + /** + * + */ + zipmappush: (opcode: number, operand: number) => { + return 2 ** ((operand >> 3) & 3); + } +}; + +/** + * + */ +export interface IOpMeta extends Record { + + enum: number; + name: string; + input: string, + pushes: (opcode: number, operand: number) => number; + pops: (opcode: number, operand: number) => number; + jsvmfn: OpFn; + description?: string; +} + +/** + * + */ +export const OpMeta: Map = new Map([ + [ + 0, + { + enum: AllStandardOps.CONSTANT, + name: 'CONSTANT', + description: '', + input: 'constantIndex', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + this.constant(operand, data) + } + } + ], + [ + 1, + { + enum: AllStandardOps.STACK, + name: 'STACK', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + this.stack(operand, data) + } + } + ], + [ + 2, + { + enum: AllStandardOps.CONTEXT, + name: 'CONTEXT', + description: '', + input: 'CONTEXT', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + this.context(operand, data) + } + } + ], + [ + 3, + { + enum: AllStandardOps.STORAGE, + name: 'STORAGE', + description: '', + input: 'STORAGE', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + await this.storage(operand, data) + } + } + ], + [ + 4, + { + enum: AllStandardOps.ZIPMAP, + name: 'ZIPMAP', + description: '', + input: 'zipmap', + pushes: pnp.zipmappush, + pops: pnp.derived, + jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + await this.zipmap(operand, data) + } + } + ], + [ + 5, + { + enum: AllStandardOps.DEBUG, + name: 'DEBUG', + description: '', + input: '', + pushes: pnp.zero, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + this.debug(operand, data) + } + } + ], + [ + 6, + { + enum: AllStandardOps.IERC20_BALANCE_OF, + name: 'IERC20_BALANCE_OF', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC20BalanceOf + } + ], + [ + 7, + { + enum: AllStandardOps.IERC20_TOTAL_SUPPLY, + name: 'IERC20_TOTAL_SUPPLY', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpERC20TotalSupply + } + ], + [ + 8, + { + enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, + name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpERC20SnapshotBalanceOfAt + } + ], + [ + 9, + { + enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, + name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC20SnapshotTotalSupplyAt + } + ], + [ + 10, + { + enum: AllStandardOps.IERC721_BALANCE_OF, + name: 'IERC721_BALANCE_OF', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC721BalanceOf + } + ], + [ + 11, + { + enum: AllStandardOps.IERC721_OWNER_OF, + name: 'IERC721_OWNER_OF', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC721OwnerOf + } + ], + [ + 12, + { + enum: AllStandardOps.IERC1155_BALANCE_OF, + name: 'IERC1155_BALANCE_OF', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpERC1155BalanceOf + } + ], + [ + 13, + { + enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, + name: 'IERC1155_BALANCE_OF_BATCH', + description: '', + input: 'takeFromStack', + pushes: pnp.oprnd, + pops: pnp.derived, + jsvmfn: OpERC1155BalanceOfBatch + } + ], + [ + 14, + { + enum: AllStandardOps.BLOCK_NUMBER, + name: 'BLOCK_NUMBER', + description: '', + input: 'blockNumber', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpBlockNumber + } + ], + [ + 15, + { + enum: AllStandardOps.SENDER, + name: 'SENDER', + description: '', + input: 'msgSender', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpCaller + } + ], + [ + 16, + { + enum: AllStandardOps.THIS_ADDRESS, + name: 'THIS_ADDRESS', + description: '', + input: 'thisAddress', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpThisAddress + } + ], + [ + 17, + { + enum: AllStandardOps.BLOCK_TIMESTAMP, + name: 'BLOCK_TIMESTAMP', + description: '', + input: 'blockTimestamp', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpTimestamp + } + ], + [ + 18, + { + enum: AllStandardOps.SCALE18, + name: 'SCALE18', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScale18 + } + ], + [ + 19, + { + enum: AllStandardOps.SCALE18_DIV, + name: 'SCALE18_DIV', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpScale18Div + } + ], + [ + 20, + { + enum: AllStandardOps.SCALE18_MUL, + name: 'SCALE18_MUL', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpScale18Mul + } + ], + [ + 21, + { + enum: AllStandardOps.SCALE_BY, + name: 'SCALE_BY', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScaleBy + } + ], + [ + 22, + { + enum: AllStandardOps.SCALEN, + name: 'SCALEN', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScaleN + } + ], + [ + 23, + { + enum: AllStandardOps.ANY, + name: 'ANY', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpAny + } + ], + [ + 24, + { + enum: AllStandardOps.EAGER_IF, + name: 'EAGER_IF', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpEagerIf + } + ], + [ + 25, + { + enum: AllStandardOps.EQUAL_TO, + name: 'EQUAL_TO', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpEqualTo + } + ], + [ + 26, + { + enum: AllStandardOps.EVERY, + name: 'EVERY', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpEvery + } + ], + [ + 27, + { + enum: AllStandardOps.GREATER_THAN, + name: 'GREATER_THAN', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpGreaterThan + } + ], + [ + 28, + { + enum: AllStandardOps.ISZERO, + name: 'ISZERO', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpIsZero + } + ], + [ + 29, + { + enum: AllStandardOps.LESS_THAN, + name: 'LESS_THAN', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpLessThan + } + ], + [ + 30, + { + enum: AllStandardOps.SATURATING_ADD, + name: 'SATURATING_ADD', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingAdd + } + ], + [ + 31, + { + enum: AllStandardOps.SATURATING_MUL, + name: 'SATURATING_MUL', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingMul + } + ], + [ + 32, + { + enum: AllStandardOps.SATURATING_SUB, + name: 'SATURATING_SUB', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingSub + } + ], + [ + 33, + { + enum: AllStandardOps.ADD, + name: 'ADD', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpAdd + } + ], + [ + 34, + { + enum: AllStandardOps.DIV, + name: 'DIV', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpDiv + } + ], + [ + 35, + { + enum: AllStandardOps.EXP, + name: 'EXP', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpExp + } + ], + [ + 36, + { + enum: AllStandardOps.MAX, + name: 'MAX', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMax + } + ], + [ + 37, + { + enum: AllStandardOps.MIN, + name: 'MIN', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMin + } + ], + [ + 38, + { + enum: AllStandardOps.MOD, + name: 'MOD', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMod + } + ], + [ + 39, + { + enum: AllStandardOps.MUL, + name: 'MUL', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMul + } + ], + [ + 40, + { + enum: AllStandardOps.SUB, + name: 'SUB', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSub + } + ], + [ + 41, + { + enum: AllStandardOps.ITIERV2_REPORT, + name: 'ITIERV2_REPORT', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpITierV2Report + } + ], + [ + 42, + { + enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, + name: 'ITIERV2_REPORT_TIME_FOR_TIER', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpITierV2ReportTimesForTier + } + ], + [ + 43, + { + enum: AllStandardOps.SATURATING_DIFF, + name: 'SATURATING_DIFF', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpSaturatingDiff + } + ], + [ + 44, + { + enum: AllStandardOps.SELECT_LTE, + name: 'SELECT_LTE', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpSelectLte + } + ], + [ + 45, + { + enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, + name: 'UPDATE_TIMES_FOR_TIER_RANGE', + description: '', + input: 'takeFromStack', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpUpdateTimesForTierRange + } + ] +]) + diff --git a/yarn.lock b/yarn.lock index b813d48..c38e8f6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,38 +17,38 @@ dependencies: "@babel/highlight" "^7.18.6" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.6": +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.4.4", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.6.tgz#54a107a3c298aee3fe5e1947a6464b9b6faca03d" - integrity sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.9.tgz#805461f967c77ff46c74ca0460ccf4fe933ddd59" + integrity sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helpers" "^7.18.6" - "@babel/parser" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.9" "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.18.6", "@babel/generator@^7.18.7", "@babel/generator@^7.7.2": - version "7.18.7" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.7.tgz#2aa78da3c05aadfc82dbac16c99552fc802284bd" - integrity sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A== +"@babel/generator@^7.18.9", "@babel/generator@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.9.tgz#68337e9ea8044d6ddc690fb29acae39359cca0a5" + integrity sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug== dependencies: - "@babel/types" "^7.18.7" + "@babel/types" "^7.18.9" "@jridgewell/gen-mapping" "^0.3.2" jsesc "^2.5.1" @@ -60,34 +60,34 @@ "@babel/types" "^7.18.6" "@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.6.tgz#f14d640ed1ee9246fb33b8255f08353acfe70e6a" - integrity sha512-KT10c1oWEpmrIRYnthbzHgoOf6B+Xd6a5yhdbNtdhtG7aO1or5HViuf1TQR36xY/QprXA5nvxO6nAjhJ4y38jw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" + integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== dependencies: "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" -"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz#18d35bfb9f83b1293c22c55b3d576c1315b6ed96" - integrity sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg== +"@babel/helper-compilation-targets@^7.10.4", "@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" + integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== dependencies: - "@babel/compat-data" "^7.18.6" + "@babel/compat-data" "^7.18.8" "@babel/helper-validator-option" "^7.18.6" browserslist "^4.20.2" semver "^6.3.0" "@babel/helper-create-class-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.6.tgz#6f15f8459f3b523b39e00a99982e2c040871ed72" - integrity sha512-YfDzdnoxHGV8CzqHGyCbFvXg5QESPFkXlHtvdCkesLjjVMT2Adxe4FGUR5ChIb3DxSaXO12iIOCWoXdsUVwnqw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" + integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-create-regexp-features-plugin@^7.18.6": @@ -126,10 +126,10 @@ resolve "^1.14.2" semver "^6.1.2" -"@babel/helper-environment-visitor@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz#b7eee2b5b9d70602e59d1a6cad7dd24de7ca6cd7" - integrity sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q== +"@babel/helper-environment-visitor@^7.18.6", "@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== "@babel/helper-explode-assignable-expression@^7.18.6": version "7.18.6" @@ -138,13 +138,13 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-function-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz#8334fecb0afba66e6d87a7e8c6bb7fed79926b83" - integrity sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw== +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== dependencies: "@babel/template" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" "@babel/helper-hoist-variables@^7.18.6": version "7.18.6" @@ -153,12 +153,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-member-expression-to-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.6.tgz#44802d7d602c285e1692db0bad9396d007be2afc" - integrity sha512-CeHxqwwipekotzPDUuJOfIMtcIHBuc7WAzLmTYWctVigqS5RktNMQ5bEwQSuGewzYnCtTWa3BARXeiLxDTv+Ng== +"@babel/helper-member-expression-to-functions@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" + integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.12.13", "@babel/helper-module-imports@^7.18.6": version "7.18.6" @@ -167,19 +167,19 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-module-transforms@^7.18.6": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.8.tgz#4f8408afead0188cfa48672f9d0e5787b61778c8" - integrity sha512-che3jvZwIcZxrwh63VfnFTUzcAM9v/lznYkkRxIBGMPt1SudOKHAEec0SIRCfiuIzTcF7VGj/CaTT6gY4eWxvA== +"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" + integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== dependencies: - "@babel/helper-environment-visitor" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" "@babel/helper-module-imports" "^7.18.6" "@babel/helper-simple-access" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" "@babel/helper-validator-identifier" "^7.18.6" "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.8" - "@babel/types" "^7.18.8" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" "@babel/helper-optimise-call-expression@^7.18.6": version "7.18.6" @@ -188,31 +188,31 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.6.tgz#9448974dd4fb1d80fefe72e8a0af37809cd30d6d" - integrity sha512-gvZnm1YAAxh13eJdkb9EWHBnF3eAub3XTLCZEehHT2kWxiKVRL64+ae5Y6Ivne0mVHmMYKT+xWgZO+gQhuLUBg== +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.13.0", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" + integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== "@babel/helper-remap-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.6.tgz#fa1f81acd19daee9d73de297c0308783cd3cfc23" - integrity sha512-z5wbmV55TveUPZlCLZvxWHtrjuJd+8inFhk7DG0WW87/oJuGDcjDiu7HIvGcpf5464L6xKCg3vNkmlVVz9hwyQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" + integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-wrap-function" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-wrap-function" "^7.18.9" + "@babel/types" "^7.18.9" -"@babel/helper-replace-supers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.6.tgz#efedf51cfccea7b7b8c0f00002ab317e7abfe420" - integrity sha512-fTf7zoXnUGl9gF25fXCWE26t7Tvtyn6H4hkLSYhATwJvw2uYxd3aoXplMSe0g9XbwK7bmxNes7+FGO0rB/xC0g== +"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" + integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== dependencies: - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-member-expression-to-functions" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-member-expression-to-functions" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" "@babel/helper-simple-access@^7.18.6": version "7.18.6" @@ -221,12 +221,12 @@ dependencies: "@babel/types" "^7.18.6" -"@babel/helper-skip-transparent-expression-wrappers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.6.tgz#7dff00a5320ca4cf63270e5a0eca4b268b7380d9" - integrity sha512-4KoLhwGS9vGethZpAhYnMejWkX64wsnHPDwvOsKWU6Fg4+AlK2Jz3TyjQLMEPvz+1zemi/WBdkYxCD0bAfIkiw== +"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" + integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== dependencies: - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" "@babel/helper-split-export-declaration@^7.18.6": version "7.18.6" @@ -245,24 +245,24 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== -"@babel/helper-wrap-function@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.6.tgz#ec44ea4ad9d8988b90c3e465ba2382f4de81a073" - integrity sha512-I5/LZfozwMNbwr/b1vhhuYD+J/mU+gfGAj5td7l5Rv9WYmH6i3Om69WGKNmlIpsVW/mF6O5bvTKbvDQZVgjqOw== +"@babel/helper-wrap-function@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz#ae1feddc6ebbaa2fd79346b77821c3bd73a39646" + integrity sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ== dependencies: - "@babel/helper-function-name" "^7.18.6" + "@babel/helper-function-name" "^7.18.9" "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" -"@babel/helpers@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.6.tgz#4c966140eaa1fcaa3d5a8c09d7db61077d4debfd" - integrity sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ== +"@babel/helpers@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" + integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== dependencies: "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.6" - "@babel/types" "^7.18.6" + "@babel/traverse" "^7.18.9" + "@babel/types" "^7.18.9" "@babel/highlight@^7.18.6": version "7.18.6" @@ -273,10 +273,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.8", "@babel/parser@^7.7.0": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.8.tgz#822146080ac9c62dac0823bb3489622e0bc1cbdf" - integrity sha512-RSKRfYX20dyH+elbJK2uqAkVyucL+xXzhqlMD5/ZXx+dAAwpyB7HsvnHe/ZUGOF+xLr5Wx9/JoXVTj6BQE2/oA== +"@babel/parser@^7.1.0", "@babel/parser@^7.11.5", "@babel/parser@^7.14.7", "@babel/parser@^7.18.6", "@babel/parser@^7.18.9", "@babel/parser@^7.7.0": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.9.tgz#f2dde0c682ccc264a9a8595efd030a5cc8fd2539" + integrity sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg== "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" @@ -285,14 +285,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.6.tgz#b4e4dbc2cd1acd0133479918f7c6412961c9adb8" - integrity sha512-Udgu8ZRgrBrttVz6A0EVL0SJ1z+RLbIeqsu632SA1hf0awEppD6TvdznoH+orIF8wtFFAV/Enmw9Y+9oV8TQcw== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" + integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions@^7.18.6": version "7.18.6" @@ -329,12 +329,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-dynamic-import" "^7.8.3" -"@babel/plugin-proposal-export-namespace-from@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.6.tgz#1016f0aa5ab383bbf8b3a85a2dcaedf6c8ee7491" - integrity sha512-zr/QcUlUo7GPo6+X1wC98NJADqmy5QTFWWhqeQWiki4XHafJtLl/YMGkmRB2szDD2IYJCCdBTd4ElwhId9T7Xw== +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-proposal-json-strings@^7.18.6": @@ -345,12 +345,12 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-json-strings" "^7.8.3" -"@babel/plugin-proposal-logical-assignment-operators@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.6.tgz#3b9cac6f1ffc2aa459d111df80c12020dfc6b665" - integrity sha512-zMo66azZth/0tVd7gmkxOkOjs2rpHyhpcFo565PUP37hSp6hSd9uUKIfTDFMz58BwqgQKhJ9YxtM5XddjXVn+Q== +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" + integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": @@ -369,16 +369,16 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-numeric-separator" "^7.10.4" -"@babel/plugin-proposal-object-rest-spread@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.6.tgz#ec93bba06bfb3e15ebd7da73e953d84b094d5daf" - integrity sha512-9yuM6wr4rIsKa1wlUAbZEazkCrgw2sMPEXCr4Rnwetu7cEW1NydkCWytLuYletbf8vFxdJxFhwEZqMpOx2eZyw== +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" + integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-proposal-optional-catch-binding@^7.18.6": version "7.18.6" @@ -388,13 +388,13 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" -"@babel/plugin-proposal-optional-chaining@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.6.tgz#46d4f2ffc20e87fad1d98bc4fa5d466366f6aa0b" - integrity sha512-PatI6elL5eMzoypFAiYDpYQyMtXTn+iMhuxxQt5mAXD4fEmKorpSI3PHd+i3JXBJN3xyA6MvJv7at23HffFHwA== +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" + integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-proposal-private-methods@^7.18.6": @@ -572,40 +572,40 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-block-scoping@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.6.tgz#b5f78318914615397d86a731ef2cc668796a726c" - integrity sha512-pRqwb91C42vs1ahSAWJkxOxU1RHWDn16XAa6ggQ72wjLlWyYeAcLvTtE0aM8ph3KNydy9CQF2nLYcjq1WysgxQ== +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" + integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-classes@^7.18.6": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.8.tgz#7e85777e622e979c85c701a095280360b818ce49" - integrity sha512-RySDoXdF6hgHSHuAW4aLGyVQdmvEX/iJtjVre52k0pxRq4hzqze+rAVP++NmNv596brBpYmaiKgTZby7ziBnVg== +"@babel/plugin-transform-classes@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" + integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== dependencies: "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-replace-supers" "^7.18.9" "@babel/helper-split-export-declaration" "^7.18.6" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.6.tgz#5d15eb90e22e69604f3348344c91165c5395d032" - integrity sha512-9repI4BhNrR0KenoR9vm3/cIc1tSBIo+u1WVjKCAynahj25O8zfbiE6JtAtHPGQSs4yZ+bA8mRasRP+qc+2R5A== +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" + integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-destructuring@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.6.tgz#a98b0e42c7ffbf5eefcbcf33280430f230895c6f" - integrity sha512-tgy3u6lRp17ilY8r1kP4i2+HDUwxlVqq3RTc943eAWSzGgpU1qhiKpqZ5CMyHReIYPHdo3Kg8v8edKtDqSVEyQ== +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" + integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": version "7.18.6" @@ -615,12 +615,12 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-duplicate-keys@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.6.tgz#e6c94e8cd3c9dd8a88144f7b78ae22975a7ff473" - integrity sha512-NJU26U/208+sxYszf82nmGYqVF9QN8py2HFTblPT9hbawi8+1C5a9JubODLTGFuT0qlkqVinmkwOD13s0sZktg== +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" + integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-exponentiation-operator@^7.18.6": version "7.18.6" @@ -630,28 +630,28 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-for-of@^7.18.6": +"@babel/plugin-transform-for-of@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-function-name@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.6.tgz#6a7e4ae2893d336fd1b8f64c9f92276391d0f1b4" - integrity sha512-kJha/Gbs5RjzIu0CxZwf5e3aTTSlhZnHMT8zPWnJMjNpLOUgqevg+PN5oMH68nMCXnfiMo4Bhgxqj59KHTlAnA== +"@babel/plugin-transform-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" + integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== dependencies: - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.6.tgz#9d6af353b5209df72960baf4492722d56f39a205" - integrity sha512-x3HEw0cJZVDoENXOp20HlypIHfl0zMIhMVZEBVTfmqbObIpsMxMbmU5nOEO8R7LYT+z5RORKPlTI5Hj4OsO9/Q== +"@babel/plugin-transform-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" + integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-member-expression-literals@^7.18.6": version "7.18.6" @@ -679,14 +679,14 @@ "@babel/helper-simple-access" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.6.tgz#026511b7657d63bf5d4cf2fd4aeb963139914a54" - integrity sha512-UbPYpXxLjTw6w6yXX2BYNxF3p6QY225wcTkfQCy3OMnSlS/C3xGtwUjEzGkldb/sy6PWLiCQ3NbYfjWUTI3t4g== +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" + integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== dependencies: "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-validator-identifier" "^7.18.6" babel-plugin-dynamic-import-node "^2.3.3" @@ -721,7 +721,7 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/helper-replace-supers" "^7.18.6" -"@babel/plugin-transform-parameters@^7.18.6": +"@babel/plugin-transform-parameters@^7.18.8": version "7.18.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== @@ -757,13 +757,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-spread@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.6.tgz#82b080241965f1689f0a60ecc6f1f6575dbdb9d6" - integrity sha512-ayT53rT/ENF8WWexIRg9AiV9h0aIteyWn5ptfZTZQrjk/+f3WdrJGCY4c9wcgl2+MKkKPhzbYp97FTsquZpDCw== +"@babel/plugin-transform-spread@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" + integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" "@babel/plugin-transform-sticky-regex@^7.18.6": version "7.18.6" @@ -772,19 +772,19 @@ dependencies: "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-template-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.6.tgz#b763f4dc9d11a7cce58cf9a490d82e80547db9c2" - integrity sha512-UuqlRrQmT2SWRvahW46cGSany0uTlcj8NYOS5sRGYi8FxPYPoLd5DDmMd32ZXEj2Jq+06uGVQKHxa/hJx2EzKw== +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" + integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" -"@babel/plugin-transform-typeof-symbol@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.6.tgz#486bb39d5a18047358e0d04dc0d2f322f0b92e92" - integrity sha512-7m71iS/QhsPk85xSjFPovHPcH3H9qeyzsujhTc+vcdnsXavoWYJ74zx0lP5RhpC5+iDnVLO+PPMHzC11qels1g== +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" + integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== dependencies: - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/plugin-transform-unicode-escapes@^7.18.6": version "7.18.6" @@ -802,28 +802,28 @@ "@babel/helper-plugin-utils" "^7.18.6" "@babel/preset-env@^7.11.0": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.6.tgz#953422e98a5f66bc56cd0b9074eaea127ec86ace" - integrity sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.9.tgz#9b3425140d724fbe590322017466580844c7eaff" + integrity sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg== dependencies: - "@babel/compat-data" "^7.18.6" - "@babel/helper-compilation-targets" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" "@babel/helper-validator-option" "^7.18.6" "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" "@babel/plugin-proposal-async-generator-functions" "^7.18.6" "@babel/plugin-proposal-class-properties" "^7.18.6" "@babel/plugin-proposal-class-static-block" "^7.18.6" "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" "@babel/plugin-proposal-private-methods" "^7.18.6" "@babel/plugin-proposal-private-property-in-object" "^7.18.6" "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" @@ -845,37 +845,37 @@ "@babel/plugin-transform-arrow-functions" "^7.18.6" "@babel/plugin-transform-async-to-generator" "^7.18.6" "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.6" - "@babel/plugin-transform-classes" "^7.18.6" - "@babel/plugin-transform-computed-properties" "^7.18.6" - "@babel/plugin-transform-destructuring" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.6" - "@babel/plugin-transform-function-name" "^7.18.6" - "@babel/plugin-transform-literals" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" "@babel/plugin-transform-member-expression-literals" "^7.18.6" "@babel/plugin-transform-modules-amd" "^7.18.6" "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" "@babel/plugin-transform-modules-umd" "^7.18.6" "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" "@babel/plugin-transform-new-target" "^7.18.6" "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" "@babel/plugin-transform-property-literals" "^7.18.6" "@babel/plugin-transform-regenerator" "^7.18.6" "@babel/plugin-transform-reserved-words" "^7.18.6" "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.6" - "@babel/plugin-transform-typeof-symbol" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" "@babel/plugin-transform-unicode-escapes" "^7.18.6" "@babel/plugin-transform-unicode-regex" "^7.18.6" "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.6" + "@babel/types" "^7.18.9" babel-plugin-polyfill-corejs2 "^0.3.1" babel-plugin-polyfill-corejs3 "^0.5.2" babel-plugin-polyfill-regenerator "^0.3.1" @@ -894,17 +894,17 @@ esutils "^2.0.2" "@babel/runtime-corejs3@^7.10.2": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.6.tgz#6f02c5536911f4b445946a2179554b95c8838635" - integrity sha512-cOu5wH2JFBgMjje+a+fz2JNIWU4GzYpl05oSob3UDvBEh6EuIn+TXFHMmBbhSb+k/4HMzgKCQfEEDArAWNF9Cw== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz#7bacecd1cb2dd694eacd32a91fcf7021c20770ae" + integrity sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A== dependencies: core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" "@babel/runtime@^7.10.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.6.tgz#6a1ef59f838debd670421f8c7f2cbb8da9751580" - integrity sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ== + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== dependencies: regenerator-runtime "^0.13.4" @@ -917,26 +917,26 @@ "@babel/parser" "^7.18.6" "@babel/types" "^7.18.6" -"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.6", "@babel/traverse@^7.18.8", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.8.tgz#f095e62ab46abf1da35e5a2011f43aee72d8d5b0" - integrity sha512-UNg/AcSySJYR/+mIcJQDCv00T+AqRO7j/ZEJLzpaYtgM48rMg5MnkJgyNqkzo88+p4tfRvZJCEiwwfG6h4jkRg== +"@babel/traverse@^7.11.5", "@babel/traverse@^7.13.0", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.0", "@babel/traverse@^7.7.2": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.9.tgz#deeff3e8f1bad9786874cb2feda7a2d77a904f98" + integrity sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg== dependencies: "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.7" - "@babel/helper-environment-visitor" "^7.18.6" - "@babel/helper-function-name" "^7.18.6" + "@babel/generator" "^7.18.9" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" "@babel/helper-hoist-variables" "^7.18.6" "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/parser" "^7.18.8" - "@babel/types" "^7.18.8" + "@babel/parser" "^7.18.9" + "@babel/types" "^7.18.9" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.7", "@babel/types@^7.18.8", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.8.tgz#c5af199951bf41ba4a6a9a6d0d8ad722b30cd42f" - integrity sha512-qwpdsmraq0aJ3osLJRApsc2ouSJCdnMeZwB0DhbtHAtRpZNZCdlbRnHIgcRKzdE1g0iOGg644fzjOBcdOz9cPw== +"@babel/types@^7.0.0", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.9.tgz#7148d64ba133d8d73a41b3172ac4b83a1452205f" + integrity sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg== dependencies: "@babel/helper-validator-identifier" "^7.18.6" to-fast-properties "^2.0.0" @@ -1799,12 +1799,7 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183" integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA== -"@noble/secp256k1@1.6.2": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.2.tgz#ee040d2a290febc2342f39790b0e40723fd8dcb8" - integrity sha512-4AmNQqf+ysJx67kw3SMiPQl/JMjGB97dRGvAmwEu7txbY8B8FAHanQ0V9+i2b1ti+uQt5Cs9OByeDrFOaN1kjw== - -"@noble/secp256k1@~1.6.0": +"@noble/secp256k1@1.6.3", "@noble/secp256k1@~1.6.0": version "1.6.3" resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94" integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ== @@ -2218,15 +2213,15 @@ resolved "https://registry.yarnpkg.com/@statoscope/extensions/-/extensions-5.14.1.tgz#b7c32b39de447da76b9fa2daada61b2f699754e6" integrity sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw== -"@statoscope/helpers@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.22.0.tgz#e5121f003ee3ba0f5771961f31e278d4f9456434" - integrity sha512-hRDbkwJdnKkN79RBbBkZuPNksywtPEEI1WfECXaDE6Fv1qLjacMLC7L1uGeraDXDvzB3Jedjq8fesLEF8Z3cVw== +"@statoscope/helpers@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.23.0.tgz#4f24f079a68039d2c21d1d8513acd6e7368c18b5" + integrity sha512-Rmix1ayv6BqxNAR71HrgcvFpa2o3GFm0GpL5zqfLnkAyVtd3fAc4eVo2KaRG3RnxfpetoPNfmueI0zsbpn7tVA== dependencies: "@types/archy" "^0.0.32" "@types/semver" "^7.3.10" archy "~1.0.0" - jora "^1.0.0-beta.6" + jora "^1.0.0-beta.7" semver "^7.3.7" "@statoscope/report-writer@5.22.0": @@ -2236,38 +2231,38 @@ dependencies: "@discoveryjs/json-ext" "^0.5.7" -"@statoscope/stats-extension-compressed@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.22.0.tgz#38b96e780c99c417b8b96c7624a56014b16bb094" - integrity sha512-ICyNuow4crTW2ZSRvyP07ZbZpFWs66fUL6bTbt80GmX1bYaamAOkvJpD+sbCj3Pv9Ohd6ORVf4tRka2kyUU97Q== +"@statoscope/stats-extension-compressed@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.23.0.tgz#2bca5b340b660c170af5f59b4efc60d09747ff32" + integrity sha512-HkOBGCOIP6CxZBxwZtWEXUqQhNnoQWWsz+UPDuPebsp5biuSYbwTvv6e6y/SAEIsRSRquENh3UspcdrYFIb9AQ== dependencies: - "@statoscope/helpers" "5.22.0" + "@statoscope/helpers" "5.23.0" gzip-size "^6.0.0" -"@statoscope/stats-extension-custom-reports@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.22.0.tgz#a6829a086e1066a83b00260969fc8ac091e12dcf" - integrity sha512-uW8puzbIr42nFyrT1eooytZrOCL37dV2yW1+7tJfPPvvrBktHqimKhjQxgRzRInqwbLKdJ+XuZgKKhOFZguCxg== +"@statoscope/stats-extension-custom-reports@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.23.0.tgz#2eb5dcca6d088d1fbd6aff074ed3c4cc25447406" + integrity sha512-jQxQMn+rbES/JCJUbzP0ciGUBRtvkX5bsS4JoUkn/jHdUv+v0T60/LlbmnokCyPknuuvCQm+g0e2WLQrLUJxww== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.22.0" + "@statoscope/helpers" "5.23.0" "@statoscope/stats" "5.14.1" "@statoscope/types" "5.22.0" -"@statoscope/stats-extension-package-info@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.22.0.tgz#0c36ad08fdbd071e9cc1e90378f4cfb8e7c129f5" - integrity sha512-9eSssD9J5uNXpBY2t6Qn2EYokxsqkbYy0cQGk6vBmxRrUQld34FPsZklmIwKB1sHY4Us85Up0wDcYxbu96cTsQ== +"@statoscope/stats-extension-package-info@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.23.0.tgz#11dbab0eb0ead806fe826bd35b282f36cae7bbe1" + integrity sha512-XGJLeAbGMT2KUgnmycDALbWEIz040tDPsKAdJHhqqLFvTNVvh8rqJW+Jj7WfweiBr7H/MbQpPHZiZ7yqodSm9w== dependencies: - "@statoscope/helpers" "5.22.0" + "@statoscope/helpers" "5.23.0" -"@statoscope/stats-extension-stats-validation-result@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.22.0.tgz#549fa1c3e7e142a1bb91a6be4881c5f8f4590896" - integrity sha512-6EJc7QBTezZmpYlp7a23WZy2GitI4DDy22qPVamP++2pkNk4VFM2VV2to5e+VQwTKJcOwAWwgQ9XSQJwDmFcxQ== +"@statoscope/stats-extension-stats-validation-result@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.23.0.tgz#dbfe086638e3a9b07676f6d2330e391f2fba93e2" + integrity sha512-UWEEo2ahzy9hupO44+Wzr8+PqbtBFBOXuOcD+eKWRZPORNfkidPahjJ/DHK6QsuoModqMPr9SLaxYjaeN+neaA== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.22.0" + "@statoscope/helpers" "5.23.0" "@statoscope/stats" "5.14.1" "@statoscope/types" "5.22.0" @@ -2283,64 +2278,64 @@ dependencies: "@statoscope/stats" "5.14.1" -"@statoscope/webpack-model@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.22.0.tgz#247b6e3cc6a48a3c931f2f77ae160b5ba24f090a" - integrity sha512-9e2UM5WoyhynuBQ84iTcA83h8Y5e8LF1y8rRiysjoMpt3dLNH25mUbUWY1KgGqu809l22cgYScnkoiYPw7POQA== +"@statoscope/webpack-model@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.23.0.tgz#997c4f5a96c7ba1aeb3404d2932a481d56cac77d" + integrity sha512-ivAQAO0TS67xNPtdFHg2JxugFW2qCAiuEdOe7R8EGZ+6d5ZFBAcelz74toZ8x4h5wm5SSgwPFVEasYCxfGQJSg== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.22.0" + "@statoscope/helpers" "5.23.0" "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.22.0" - "@statoscope/stats-extension-custom-reports" "5.22.0" - "@statoscope/stats-extension-package-info" "5.22.0" - "@statoscope/stats-extension-stats-validation-result" "5.22.0" + "@statoscope/stats-extension-compressed" "5.23.0" + "@statoscope/stats-extension-custom-reports" "5.23.0" + "@statoscope/stats-extension-package-info" "5.23.0" + "@statoscope/stats-extension-stats-validation-result" "5.23.0" "@statoscope/types" "5.22.0" ajv "^8.11.0" md5 "^2.3.0" "@statoscope/webpack-plugin@^5.17.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.22.0.tgz#82ac4bb486298a6e7ee062a2df7510c362a6e80d" - integrity sha512-KXsWr9vGNQqYA1iKSJPqxHffQqFY6TXLHNNdjb0+KI3Yo4sbXbTF2NgJybtE8a1Eli3Z/QZVL9ZqPVBdi769Rw== + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.23.0.tgz#d2a363d7957f4cc9d1b8fd03d53bf302b927885d" + integrity sha512-6XC8689UpDeHxKNJ/ZNT8jaCNV0IQhm1qW1SWb1VeOmWj7Rh78GLlFeD3EcJ55MJp7EesU2g90DAUDq//xpdvQ== dependencies: "@discoveryjs/json-ext" "^0.5.7" "@statoscope/report-writer" "5.22.0" "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.22.0" - "@statoscope/stats-extension-custom-reports" "5.22.0" + "@statoscope/stats-extension-compressed" "5.23.0" + "@statoscope/stats-extension-custom-reports" "5.23.0" "@statoscope/types" "5.22.0" - "@statoscope/webpack-model" "5.22.0" - "@statoscope/webpack-stats-extension-compressed" "5.22.0" - "@statoscope/webpack-stats-extension-package-info" "5.22.0" - "@statoscope/webpack-ui" "5.22.0" + "@statoscope/webpack-model" "5.23.0" + "@statoscope/webpack-stats-extension-compressed" "5.23.0" + "@statoscope/webpack-stats-extension-package-info" "5.23.0" + "@statoscope/webpack-ui" "5.23.0" open "^8.4.0" -"@statoscope/webpack-stats-extension-compressed@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.22.0.tgz#217914af61afaa98a22414e878666aa4bc27556c" - integrity sha512-C6K7u+Teg+4XaIx46lazpZJeVamXjlU3N0PWjbi5GS+UM+Pg/kTUmr8r2Kj7FHmKUhQO90HuXY+GOlcu6CMCMw== +"@statoscope/webpack-stats-extension-compressed@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.23.0.tgz#972f27c6f6beb249c92b6aae9eb9f2292a57ad33" + integrity sha512-eexc4fOLnpQWmG+BubWOppvBaPhDOgZ1gXw8c+9WJVZyG3/Um4G3MVsokaocAakXgZm4s1C60dj963mN5V0QeQ== dependencies: "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.22.0" - "@statoscope/webpack-model" "5.22.0" + "@statoscope/stats-extension-compressed" "5.23.0" + "@statoscope/webpack-model" "5.23.0" -"@statoscope/webpack-stats-extension-package-info@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.22.0.tgz#107595f91f3f5fcd8a9e8b84ea07a74a73dd9f52" - integrity sha512-HNgcbWOl+Y26LzC1FhS6qb/B97fSKovqwQC9qf7VJuE8qHHUtGgqfNubi+RutIpkyuL5/lmdXJaRXi1QUPA70A== +"@statoscope/webpack-stats-extension-package-info@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.23.0.tgz#f718568c8de46c5eb4324449579e7e5ef98fffc4" + integrity sha512-uY+ArAZeWfXa47vhcEHcOm2fPy77PV9eYjGYCdn57fA7pmAGcusw+rw0CHcFCeA/fRsUc1czOwoxrpLUfABGJA== dependencies: "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-package-info" "5.22.0" - "@statoscope/webpack-model" "5.22.0" + "@statoscope/stats-extension-package-info" "5.23.0" + "@statoscope/webpack-model" "5.23.0" -"@statoscope/webpack-ui@5.22.0": - version "5.22.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.22.0.tgz#2f7d857be3581e3fd9d57cc384e54c929856220f" - integrity sha512-UGABlETD/gZ6/2ONuSL7CZ/HqdEYPMcEubq+5wE6aZ+I6uxtSXJAbxukGUT8TeZqL2tMz4ZyfspbbwJmHbTfEQ== +"@statoscope/webpack-ui@5.23.0": + version "5.23.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.23.0.tgz#0425388c32ef71ef5b9f574ce157d5283c94333e" + integrity sha512-4pvEPOin/wlv8WZjbh2mrr2ynMyzv6cMhStKQiC/sApgiyOoVUTlqKWm1AaKkteb8uzlZmj442zhwlNBjG1nww== dependencies: "@statoscope/types" "5.22.0" - highcharts "^9.3.3" + highcharts "^10.2.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -2591,9 +2586,9 @@ form-data "^3.0.0" "@types/node@*": - version "18.0.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.4.tgz#48aedbf35efb3af1248e4cd4d792c730290cd5d6" - integrity sha512-M0+G6V0Y4YV8cqzHssZpaNCqvYwlCiulmm0PwpNLF55r/+cT8Ol42CHRU1SEaYFH2rTwiiE1aYg/2g2rrtGdPA== + version "18.0.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7" + integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw== "@types/node@12.20.24": version "12.20.24" @@ -2606,9 +2601,9 @@ integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== "@types/node@^16.11.11": - version "16.11.44" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.44.tgz#447e3eecad9d19bd779f4a575f361d34898c0722" - integrity sha512-gwP6+QDgL5TDBIWh1lbYh3EFPU11pa+8xcamcsA3ROkp3A9X+/3Y5cRgq93VPEEE+CGfxlQnqkg1kkWGBgh3fw== + version "16.11.45" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810" + integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ== "@types/parse-json@^4.0.0": version "4.0.0" @@ -2716,13 +2711,13 @@ "@types/yargs-parser" "*" "@typescript-eslint/eslint-plugin@^2.12.0", "@typescript-eslint/eslint-plugin@^5.4.0": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz#9c6017b6c1d04894141b4a87816388967f64c359" - integrity sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg== + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.7.tgz#1621dabc1ae4084310e19e9efc80dfdbb97e7493" + integrity sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw== dependencies: - "@typescript-eslint/scope-manager" "5.30.6" - "@typescript-eslint/type-utils" "5.30.6" - "@typescript-eslint/utils" "5.30.6" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/type-utils" "5.30.7" + "@typescript-eslint/utils" "5.30.7" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2731,68 +2726,68 @@ tsutils "^3.21.0" "@typescript-eslint/parser@^2.12.0", "@typescript-eslint/parser@^5.4.0": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.6.tgz#add440db038fa9d777e4ebdaf66da9e7fb7abe92" - integrity sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA== + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.7.tgz#99d09729392aec9e64b1de45cd63cb81a4ddd980" + integrity sha512-Rg5xwznHWWSy7v2o0cdho6n+xLhK2gntImp0rJroVVFkcYFYQ8C8UJTSuTw/3CnExBmPjycjmUJkxVmjXsld6A== dependencies: - "@typescript-eslint/scope-manager" "5.30.6" - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/typescript-estree" "5.30.6" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.30.6": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz#ce1b49ff5ce47f55518d63dbe8fc9181ddbd1a33" - integrity sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g== +"@typescript-eslint/scope-manager@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.7.tgz#8269a931ef1e5ae68b5eb80743cc515c4ffe3dd7" + integrity sha512-7BM1bwvdF1UUvt+b9smhqdc/eniOnCKxQT/kj3oXtj3LqnTWCAM0qHRHfyzCzhEfWX0zrW7KqXXeE4DlchZBKw== dependencies: - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" -"@typescript-eslint/type-utils@5.30.6": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz#a64aa9acbe609ab77f09f53434a6af2b9685f3af" - integrity sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA== +"@typescript-eslint/type-utils@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.7.tgz#5693dc3db6f313f302764282d614cfdbc8a9fcfd" + integrity sha512-nD5qAE2aJX/YLyKMvOU5jvJyku4QN5XBVsoTynFrjQZaDgDV6i7QHFiYCx10wvn7hFvfuqIRNBtsgaLe0DbWhw== dependencies: - "@typescript-eslint/utils" "5.30.6" + "@typescript-eslint/utils" "5.30.7" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.30.6": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.6.tgz#86369d0a7af8c67024115ac1da3e8fb2d38907e1" - integrity sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg== +"@typescript-eslint/types@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.7.tgz#18331487cc92d0f1fb1a6f580c8ec832528079d0" + integrity sha512-ocVkETUs82+U+HowkovV6uxf1AnVRKCmDRNUBUUo46/5SQv1owC/EBFkiu4MOHeZqhKz2ktZ3kvJJ1uFqQ8QPg== -"@typescript-eslint/typescript-estree@5.30.6": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz#a84a0d6a486f9b54042da1de3d671a2c9f14484e" - integrity sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A== +"@typescript-eslint/typescript-estree@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.7.tgz#05da9f1b281985bfedcf62349847f8d168eecc07" + integrity sha512-tNslqXI1ZdmXXrHER83TJ8OTYl4epUzJC0aj2i4DMDT4iU+UqLT3EJeGQvJ17BMbm31x5scSwo3hPM0nqQ1AEA== dependencies: - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/visitor-keys" "5.30.6" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/visitor-keys" "5.30.7" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.6": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.6.tgz#1de2da14f678e7d187daa6f2e4cdb558ed0609dc" - integrity sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA== +"@typescript-eslint/utils@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.7.tgz#7135be070349e9f7caa262b0ca59dc96123351bb" + integrity sha512-Z3pHdbFw+ftZiGUnm1GZhkJgVqsDL5CYW2yj+TB2mfXDFOMqtbzQi2dNJIyPqPbx9mv2kUxS1gU+r2gKlKi1rQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.30.6" - "@typescript-eslint/types" "5.30.6" - "@typescript-eslint/typescript-estree" "5.30.6" + "@typescript-eslint/scope-manager" "5.30.7" + "@typescript-eslint/types" "5.30.7" + "@typescript-eslint/typescript-estree" "5.30.7" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.30.6": - version "5.30.6" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz#94dd10bb481c8083378d24de1742a14b38a2678c" - integrity sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA== +"@typescript-eslint/visitor-keys@5.30.7": + version "5.30.7" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.7.tgz#c093abae75b4fd822bfbad9fc337f38a7a14909a" + integrity sha512-KrRXf8nnjvcpxDFOKej4xkD7657+PClJs5cJVSG7NNoCNnjEdc46juNAQt7AyuWctuCgs6mVRc1xGctEqrjxWw== dependencies: - "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/types" "5.30.7" eslint-visitor-keys "^3.3.0" "@ungap/promise-all-settled@1.1.2": @@ -4323,7 +4318,7 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.1: +browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.2: version "4.21.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA== @@ -4517,9 +4512,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001366: - version "1.0.30001366" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001366.tgz#c73352c83830a9eaf2dea0ff71fb4b9a4bbaa89c" - integrity sha512-yy7XLWCubDobokgzudpkKux8e0UOOnLHE6mlNJBzT3lZJz6s5atSEzjoL+fsCPkI0G8MP5uVdDx1ur/fXEWkZA== + version "1.0.30001367" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz#2b97fe472e8fa29c78c5970615d7cd2ee414108a" + integrity sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw== caseless@~0.12.0: version "0.12.0" @@ -4756,9 +4751,9 @@ cliui@^7.0.2: wrap-ansi "^7.0.0" clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q== + version "1.0.3" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== dependencies: mimic-response "^1.0.0" @@ -4974,17 +4969,17 @@ copy-descriptor@^0.1.0: integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw== core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.23.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.4.tgz#56ad4a352884317a15f6b04548ff7139d23b917f" - integrity sha512-RkSRPe+JYEoflcsuxJWaiMPhnZoFS51FcIxm53k4KzhISCBTmaGlto9dTIrYuk0hnJc3G6pKufAKepHnBq6B6Q== + version "3.23.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.23.5.tgz#11edce2f1c4f69a96d30ce77c805ce118909cd5b" + integrity sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg== dependencies: - browserslist "^4.21.1" + browserslist "^4.21.2" semver "7.0.0" core-js-pure@^3.0.1, core-js-pure@^3.20.2: - version "3.23.4" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.4.tgz#aba5c7fb297063444f6bf93afb0362151679a012" - integrity sha512-lizxkcgj3XDmi7TUBFe+bQ1vNpD5E4t76BrBWI3HdUxdw/Mq1VF4CkiHzIKyieECKtcODK2asJttoofEeUKICQ== + version "3.23.5" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.23.5.tgz#23daaa9af9230e50f10b0fa4b8e6b87402be4c33" + integrity sha512-8t78LdpKSuCq4pJYCYk8hl7XEkAX+BP16yRIwL3AanTksxuEf7CM83vRyctmiEL8NDZ3jpUcv56fk9/zG3aIuw== core-js@^2.4.0, core-js@^2.5.0: version "2.6.12" @@ -5625,9 +5620,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.188: - version "1.4.189" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.189.tgz#4e5b221dc44e09e9dddc9abbc6457857dee7ba25" - integrity sha512-dQ6Zn4ll2NofGtxPXaDfY2laIa6NyCQdqXYHdwH90GJQW0LpJJib0ZU/ERtbb0XkBEmUD2eJtagbOie3pdMiPg== + version "1.4.195" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.195.tgz#139b2d95a42a3f17df217589723a1deac71d1473" + integrity sha512-vefjEh0sk871xNmR5whJf9TEngX+KTKS3hOHpjoMpauKkwlGwtMz1H8IaIjAT/GNnX0TbGwAdmVoXCAzXf+PPg== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -6396,12 +6391,12 @@ ethereum-cryptography@^0.1.3: setimmediate "^1.0.5" ethereum-cryptography@^1.0.3: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.1.tgz#10d4b4d48b8caa4472c7be1b421129c601b94cb5" - integrity sha512-zp6caNCfG3S2LtSjCeZtOjfRCXNoPv16XTBzM/jOVVlWmO1m59QZdp+VpI8Org4UwPTJ/LzI/XbRHKqi4cMRVg== + version "1.1.2" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz#74f2ac0f0f5fe79f012c889b3b8446a9a6264e6d" + integrity sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ== dependencies: "@noble/hashes" "1.1.2" - "@noble/secp256k1" "1.6.2" + "@noble/secp256k1" "1.6.3" "@scure/bip32" "1.1.0" "@scure/bip39" "1.1.0" @@ -7682,10 +7677,10 @@ heap@0.2.6: resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== -highcharts@^9.3.3: - version "9.3.3" - resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-9.3.3.tgz#ae62178de788fd7934431aa26b8e250b8073c541" - integrity sha512-QeOvm6cifeZYYdTLm4IxZsXcOE9c4xqfs0z0OJJ0z7hhA9WG0rmcVAyuIp5HBl/znjA/ayYHmpYjBYD/9PG4Fg== +highcharts@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-10.2.0.tgz#646b1c80fb4add9e35e5813bd87419ccdf1fc6b7" + integrity sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA== hmac-drbg@^1.0.1: version "1.0.1" @@ -8878,7 +8873,7 @@ jju@~1.4.0: resolved "https://registry.yarnpkg.com/jju/-/jju-1.4.0.tgz#a3abe2718af241a2b2904f84a625970f389ae32a" integrity sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA== -jora@^1.0.0-beta.6: +jora@^1.0.0-beta.7: version "1.0.0-beta.7" resolved "https://registry.yarnpkg.com/jora/-/jora-1.0.0-beta.7.tgz#51a9208c83d3b7e66b27e3c1c1caeeb0c5c2e679" integrity sha512-7Mq37XUPQM/fEetH8Z4iHTABWgoq64UL9mIRfssX1b0Ogns3TqbOS0UIV7gwQ3D0RshfLJzGgbbW17UyFjxSLQ== @@ -13352,9 +13347,9 @@ underscore@1.9.1: integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== undici@^5.4.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.7.0.tgz#979f89229c01505573cb274d0e11ea8d82b4004f" - integrity sha512-ORgxwDkiPS+gK2VxE7iyVeR7JliVn5DqhZ4LgQqYLBXsuK+lwOEmnJ66dhvlpLM0tC3fC7eYF1Bti2frbw2eAA== + version "5.8.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.8.0.tgz#dec9a8ccd90e5a1d81d43c0eab6503146d649a4f" + integrity sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -13423,9 +13418,9 @@ unset-value@^1.0.0: isobject "^3.0.0" update-browserslist-db@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz#dbfc5a789caa26b1db8990796c2c8ebbce304824" - integrity sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" + integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== dependencies: escalade "^3.1.1" picocolors "^1.0.0" @@ -14145,9 +14140,9 @@ ws@^5.1.1: async-limiter "~1.0.0" ws@^7.4.6: - version "7.5.8" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.8.tgz#ac2729881ab9e7cbaf8787fe3469a48c5c7f636a" - integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== + version "7.5.9" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== xhr-request-promise@^0.1.2: version "0.1.3" From bb7b03fb639b1c31203b716d08268b6859697b06 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 19 Jul 2022 23:15:34 +0000 Subject: [PATCH 047/125] fix for docs generation --- ...ledurationinblocks.md => betweenblocks.md} | 61 +- docs/classes/betweentimestamps.md | 137 ++++ docs/classes/buildreport.md | 6 +- docs/classes/{buycap.md => buyamount.md} | 19 +- docs/classes/combinetier.md | 53 +- docs/classes/combinetiergenerator.md | 27 +- docs/classes/combinetierjs.md | 60 -- docs/classes/combinetierjsvm.md | 72 ++ docs/classes/combinetiersimulation.md | 99 +++ docs/classes/createerc20.md | 39 ++ docs/classes/emissionserc20.md | 53 +- docs/classes/emissionserc20js.md | 60 -- docs/classes/emissionserc20jsvm.md | 72 ++ docs/classes/emissionsmiulation.md | 181 ++++++ docs/classes/erc1155.md | 4 +- docs/classes/erc1155balancetier.md | 61 ++ docs/classes/erc20.md | 56 +- docs/classes/erc20balancetier.md | 6 +- docs/classes/erc721.md | 4 +- docs/classes/erc721balancetier.md | 6 +- docs/classes/fixedprice.md | 19 +- ...friendlysource.md => humanfriendlyread.md} | 17 +- .../{increasingprice.md => incdecprice.md} | 18 +- docs/classes/itierv2.md | 102 ++- docs/classes/matchmaker.md | 162 +++++ docs/classes/noticeboard.md | 4 +- docs/classes/orderbook.md | 42 +- docs/classes/orderbooksimulation.md | 272 ++++++++ docs/classes/pricecurve.md | 11 +- docs/classes/rainjs.md | 141 ---- docs/classes/rainjsvm.md | 297 +++++++++ docs/classes/redeemableerc20.md | 28 +- docs/classes/redeemableerc20claimescrow.md | 4 +- docs/classes/sale.md | 4 +- docs/classes/saledurationintimestamp.md | 164 ----- docs/classes/salejs.md | 58 -- docs/classes/salejsvm.md | 87 +++ docs/classes/salesimulation.md | 189 ++++++ .../{salescriptfrom.md => salevmfrom.md} | 18 +- docs/classes/stake.md | 94 ++- docs/classes/tiercontract.md | 111 ---- docs/classes/verify.md | 4 +- docs/classes/verifytier.md | 29 +- docs/classes/vlbp.md | 2 +- docs/classes/vm.md | 614 +++++++++++++++++- docs/classes/vmsimulation.md | 298 +++++++++ docs/enums/combinetiercontext.md | 2 +- docs/enums/combinetierstorage.md | 2 +- docs/enums/emissionserc20context.md | 2 +- docs/enums/emissionserc20storage.md | 2 +- ...rderbookstroage.md => orderbookstorage.md} | 4 +- docs/enums/salecontext.md | 2 +- docs/enums/salestorage.md | 2 +- docs/index.md | 134 +++- docs/interfaces/applyopfn.md | 10 - docs/interfaces/bountyconfig.md | 39 ++ docs/interfaces/clearedcounterpartyfunds.md | 10 + docs/interfaces/clearedfunds.md | 10 + docs/interfaces/erc1155.md | 10 + docs/interfaces/erc1155s.md | 10 + docs/interfaces/erc20.md | 70 ++ docs/interfaces/erc20s.md | 10 + docs/interfaces/erc721.md | 10 + docs/interfaces/erc721s.md | 10 + docs/interfaces/fnptrs.md | 16 + docs/interfaces/forcast.md | 10 + docs/interfaces/iopmeta.md | 98 +++ docs/interfaces/itiers.md | 10 + docs/interfaces/opfn.md | 10 + docs/interfaces/order.md | 94 +++ docs/interfaces/orders.md | 10 + docs/interfaces/{statejs.md => statejsvm.md} | 12 +- docs/interfaces/vaults.md | 10 + docs/namespaces/utils.md | 6 + .../namespaces/utils/variables/arrtoreport.md | 10 + .../utils/variables/extractfrommap_1.md | 24 + .../utils/variables/extractfromrecord_1.md | 24 + .../utils/variables/isbignumberish_1.md | 23 + .../utils/variables/maptorecord_1.md | 24 + .../utils/variables/recordtomap_1.md | 23 + docs/types/bountyconfig.md | 1 + docs/types/calloptions.md | 16 + docs/types/clearstatechange.md | 15 + docs/types/depositconfig.md | 1 + docs/types/emissionsconfig.md | 1 + docs/types/opcodefn.md | 10 - docs/types/order.md | 2 +- docs/types/orderconfig.md | 3 + docs/types/stakedeployargs.md | 3 + docs/types/withdrawconfig.md | 1 + docs/variables/eighteenzeros.md | 10 + docs/variables/fixedpointdiv.md | 9 + docs/variables/fixedpointmul.md | 9 + docs/variables/opadd_1.md | 23 + docs/variables/opany_1.md | 23 + docs/variables/opblocknumber_1.md | 23 + docs/variables/opcaller_1.md | 23 + docs/variables/opdiv_1.md | 23 + docs/variables/opeagerif_1.md | 23 + docs/variables/opequalto_1.md | 23 + docs/variables/operc1155balanceof_1.md | 23 + docs/variables/operc1155balanceofbatch_1.md | 23 + docs/variables/operc20balanceof_1.md | 23 + .../variables/operc20snapshotbalanceofat_1.md | 23 + .../operc20snapshottotalsupplyat_1.md | 23 + docs/variables/operc20totalsupply_1.md | 23 + docs/variables/operc721balanceof_1.md | 23 + docs/variables/operc721ownerof_1.md | 23 + docs/variables/opevery_1.md | 23 + docs/variables/opexp_1.md | 23 + docs/variables/opgreaterthan_1.md | 23 + docs/variables/opiszero_1.md | 23 + docs/variables/opitierv2report_1.md | 23 + .../opitierv2reporttimesfortier_1.md | 23 + docs/variables/oplessthan_1.md | 23 + docs/variables/opmax_1.md | 23 + docs/variables/opmeta.md | 9 + docs/variables/opmin_1.md | 23 + docs/variables/opmod_1.md | 23 + docs/variables/opmul_1.md | 23 + docs/variables/opsaturatingadd_1.md | 23 + docs/variables/opsaturatingdiff_1.md | 23 + docs/variables/opsaturatingmul_1.md | 23 + docs/variables/opsaturatingsub_1.md | 23 + docs/variables/opscale18_1.md | 23 + docs/variables/opscale18div_1.md | 23 + docs/variables/opscale18mul_1.md | 23 + docs/variables/opscaleby_1.md | 23 + docs/variables/opscalen_1.md | 23 + docs/variables/opselectlte_1.md | 23 + docs/variables/opsub_1.md | 23 + docs/variables/opthisaddress_1.md | 23 + docs/variables/optimestamp_1.md | 23 + docs/variables/opupdatetimesfortierrange_1.md | 23 + docs/variables/pnp.md | 10 + docs/variables/saturatingadd.md | 9 + docs/variables/saturatingdiff.md | 9 + docs/variables/saturatingmul.md | 9 + docs/variables/saturatingsub.md | 9 + docs/variables/scale18.md | 9 + docs/variables/scaleby.md | 9 + docs/variables/scalen.md | 9 + docs/variables/selectlte.md | 9 + docs/variables/updatetimesfortierrange.md | 9 + src/index.ts | 1 + src/jsvm/RainJSVM.ts | 32 +- src/jsvm/lib/FixedPointMath.ts | 16 +- src/jsvm/lib/SaturatingMath.ts | 10 + src/jsvm/lib/TierReport.ts | 3 + src/jsvm/lib/TierwiseCombine.ts | 7 + src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts | 3 + .../ops/erc1155/OpERC1155BalanceOfBatch.ts | 3 + src/jsvm/ops/erc20/OpERC20BalanceOf.ts | 3 + src/jsvm/ops/erc20/OpERC20TotalSupply.ts | 3 + .../snapshot/OpERC20SnapshotBalanceOfAt.ts | 3 + .../snapshot/OpERC20SnapshotTotalSupplyAt.ts | 3 + src/jsvm/ops/erc721/OpERC721BalanceOf.ts | 3 + src/jsvm/ops/erc721/OpERC721OwnerOf.ts | 3 + src/jsvm/ops/evm/OpBlockNumber.ts | 3 + src/jsvm/ops/evm/OpCaller.ts | 3 + src/jsvm/ops/evm/OpThisAddress.ts | 3 + src/jsvm/ops/evm/OpTimestamp.ts | 4 +- src/jsvm/ops/math/OpAdd.ts | 3 + src/jsvm/ops/math/OpDiv.ts | 4 + src/jsvm/ops/math/OpExp.ts | 3 + src/jsvm/ops/math/OpMax.ts | 4 + src/jsvm/ops/math/OpMin.ts | 4 + src/jsvm/ops/math/OpMod.ts | 4 + src/jsvm/ops/math/OpMul.ts | 4 + src/jsvm/ops/math/OpSub.ts | 4 + src/jsvm/ops/math/fixedPoint/OpScale18.ts | 3 + src/jsvm/ops/math/fixedPoint/OpScale18Div.ts | 3 + src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts | 3 + src/jsvm/ops/math/fixedPoint/OpScaleBy.ts | 3 + src/jsvm/ops/math/fixedPoint/OpScaleN.ts | 3 + src/jsvm/ops/math/logic/OpAny.ts | 3 + src/jsvm/ops/math/logic/OpEagerIf.ts | 3 + src/jsvm/ops/math/logic/OpEqualTo.ts | 3 + src/jsvm/ops/math/logic/OpEvery.ts | 3 + src/jsvm/ops/math/logic/OpGreaterThan.ts | 3 + src/jsvm/ops/math/logic/OpIsZero.ts | 4 + src/jsvm/ops/math/logic/OpLessThan.ts | 4 + .../ops/math/saturating/OpSaturatingAdd.ts | 4 + .../ops/math/saturating/OpSaturatingMul.ts | 4 + .../ops/math/saturating/OpSaturatingSub.ts | 4 + src/jsvm/ops/tier/OpITierV2Report.ts | 4 + .../ops/tier/OpITierV2ReportTimesForTier.ts | 3 + src/jsvm/ops/tier/OpSaturatingDiff.ts | 4 + src/jsvm/ops/tier/OpSelectLte.ts | 3 + .../ops/tier/OpUpdateTimesForTierRange.ts | 4 + src/jsvm/simulation/CombineTierSimulation.ts | 2 +- .../simulation/EmissionsERC20Simulation.ts | 6 +- src/jsvm/simulation/Matchmaker.ts | 8 +- src/jsvm/simulation/OrderbookSimulation.ts | 23 +- src/jsvm/simulation/SaleSimulation.ts | 6 +- src/jsvm/types.ts | 18 +- src/utils.ts | 6 + src/vm/OpMeta.ts | 21 +- 198 files changed, 4986 insertions(+), 1017 deletions(-) rename docs/classes/{saledurationinblocks.md => betweenblocks.md} (54%) create mode 100644 docs/classes/betweentimestamps.md rename docs/classes/{buycap.md => buyamount.md} (53%) delete mode 100644 docs/classes/combinetierjs.md create mode 100644 docs/classes/combinetierjsvm.md create mode 100644 docs/classes/combinetiersimulation.md create mode 100644 docs/classes/createerc20.md delete mode 100644 docs/classes/emissionserc20js.md create mode 100644 docs/classes/emissionserc20jsvm.md create mode 100644 docs/classes/emissionsmiulation.md create mode 100644 docs/classes/erc1155balancetier.md rename docs/classes/{humanfriendlysource.md => humanfriendlyread.md} (57%) rename docs/classes/{increasingprice.md => incdecprice.md} (61%) create mode 100644 docs/classes/matchmaker.md create mode 100644 docs/classes/orderbooksimulation.md delete mode 100644 docs/classes/rainjs.md create mode 100644 docs/classes/rainjsvm.md delete mode 100644 docs/classes/saledurationintimestamp.md delete mode 100644 docs/classes/salejs.md create mode 100644 docs/classes/salejsvm.md create mode 100644 docs/classes/salesimulation.md rename docs/classes/{salescriptfrom.md => salevmfrom.md} (61%) delete mode 100644 docs/classes/tiercontract.md create mode 100644 docs/classes/vmsimulation.md rename docs/enums/{orderbookstroage.md => orderbookstorage.md} (83%) delete mode 100644 docs/interfaces/applyopfn.md create mode 100644 docs/interfaces/bountyconfig.md create mode 100644 docs/interfaces/clearedcounterpartyfunds.md create mode 100644 docs/interfaces/clearedfunds.md create mode 100644 docs/interfaces/erc1155.md create mode 100644 docs/interfaces/erc1155s.md create mode 100644 docs/interfaces/erc20.md create mode 100644 docs/interfaces/erc20s.md create mode 100644 docs/interfaces/erc721.md create mode 100644 docs/interfaces/erc721s.md create mode 100644 docs/interfaces/fnptrs.md create mode 100644 docs/interfaces/forcast.md create mode 100644 docs/interfaces/iopmeta.md create mode 100644 docs/interfaces/itiers.md create mode 100644 docs/interfaces/opfn.md create mode 100644 docs/interfaces/order.md create mode 100644 docs/interfaces/orders.md rename docs/interfaces/{statejs.md => statejsvm.md} (68%) create mode 100644 docs/interfaces/vaults.md create mode 100644 docs/namespaces/utils/variables/arrtoreport.md create mode 100644 docs/namespaces/utils/variables/extractfrommap_1.md create mode 100644 docs/namespaces/utils/variables/extractfromrecord_1.md create mode 100644 docs/namespaces/utils/variables/isbignumberish_1.md create mode 100644 docs/namespaces/utils/variables/maptorecord_1.md create mode 100644 docs/namespaces/utils/variables/recordtomap_1.md create mode 100644 docs/types/calloptions.md create mode 100644 docs/types/clearstatechange.md delete mode 100644 docs/types/opcodefn.md create mode 100644 docs/variables/eighteenzeros.md create mode 100644 docs/variables/fixedpointdiv.md create mode 100644 docs/variables/fixedpointmul.md create mode 100644 docs/variables/opadd_1.md create mode 100644 docs/variables/opany_1.md create mode 100644 docs/variables/opblocknumber_1.md create mode 100644 docs/variables/opcaller_1.md create mode 100644 docs/variables/opdiv_1.md create mode 100644 docs/variables/opeagerif_1.md create mode 100644 docs/variables/opequalto_1.md create mode 100644 docs/variables/operc1155balanceof_1.md create mode 100644 docs/variables/operc1155balanceofbatch_1.md create mode 100644 docs/variables/operc20balanceof_1.md create mode 100644 docs/variables/operc20snapshotbalanceofat_1.md create mode 100644 docs/variables/operc20snapshottotalsupplyat_1.md create mode 100644 docs/variables/operc20totalsupply_1.md create mode 100644 docs/variables/operc721balanceof_1.md create mode 100644 docs/variables/operc721ownerof_1.md create mode 100644 docs/variables/opevery_1.md create mode 100644 docs/variables/opexp_1.md create mode 100644 docs/variables/opgreaterthan_1.md create mode 100644 docs/variables/opiszero_1.md create mode 100644 docs/variables/opitierv2report_1.md create mode 100644 docs/variables/opitierv2reporttimesfortier_1.md create mode 100644 docs/variables/oplessthan_1.md create mode 100644 docs/variables/opmax_1.md create mode 100644 docs/variables/opmeta.md create mode 100644 docs/variables/opmin_1.md create mode 100644 docs/variables/opmod_1.md create mode 100644 docs/variables/opmul_1.md create mode 100644 docs/variables/opsaturatingadd_1.md create mode 100644 docs/variables/opsaturatingdiff_1.md create mode 100644 docs/variables/opsaturatingmul_1.md create mode 100644 docs/variables/opsaturatingsub_1.md create mode 100644 docs/variables/opscale18_1.md create mode 100644 docs/variables/opscale18div_1.md create mode 100644 docs/variables/opscale18mul_1.md create mode 100644 docs/variables/opscaleby_1.md create mode 100644 docs/variables/opscalen_1.md create mode 100644 docs/variables/opselectlte_1.md create mode 100644 docs/variables/opsub_1.md create mode 100644 docs/variables/opthisaddress_1.md create mode 100644 docs/variables/optimestamp_1.md create mode 100644 docs/variables/opupdatetimesfortierrange_1.md create mode 100644 docs/variables/pnp.md create mode 100644 docs/variables/saturatingadd.md create mode 100644 docs/variables/saturatingdiff.md create mode 100644 docs/variables/saturatingmul.md create mode 100644 docs/variables/saturatingsub.md create mode 100644 docs/variables/scale18.md create mode 100644 docs/variables/scaleby.md create mode 100644 docs/variables/scalen.md create mode 100644 docs/variables/selectlte.md create mode 100644 docs/variables/updatetimesfortierrange.md diff --git a/docs/classes/saledurationinblocks.md b/docs/classes/betweenblocks.md similarity index 54% rename from docs/classes/saledurationinblocks.md rename to docs/classes/betweenblocks.md index 09dcb3a..1ed4e90 100644 --- a/docs/classes/saledurationinblocks.md +++ b/docs/classes/betweenblocks.md @@ -1,14 +1,14 @@ -# Class SaleDurationInBlocks +# Class BetweenBlocks - A class used for creating a VM state for Sale's canLive StateConfig based on block number. -- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. For example 'applyOwner' should be called at last in order to apply the ownership over the whole script. The general methods calling order in this class is: 1.applyExtarTime or afterMinimumRaise (one of which only) 2.applyOwner +- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. Methods afterMinimumRaise and applyExtratime should not be used together as they are opposite of eachother and will cancel eachother out. Signature: ```typescript -class SaleDurationInBlocks +class BetweenBlocks ``` ## Example @@ -24,18 +24,17 @@ const saleDuration = new SaleDuration(startBlockNumber, endBlockNumber) | Property | Type | Description | | --- | --- | --- | -| [constants](./saledurationinblocks.md#constants-property) | `BigNumberish[]` | | -| [endBlockNumber](./saledurationinblocks.md#endBlockNumber-property) | `number` | | -| [sources](./saledurationinblocks.md#sources-property) | `BytesLike[]` | | -| [startBlockNumber](./saledurationinblocks.md#startBlockNumber-property) | `number` | | +| [constants](./betweenblocks.md#constants-property) | `BigNumberish[]` | | +| [endBlockNumber](./betweenblocks.md#endBlockNumber-property) | `number` | | +| [sources](./betweenblocks.md#sources-property) | `BytesLike[]` | | +| [startBlockNumber](./betweenblocks.md#startBlockNumber-property) | `number` | | ## Methods | Method | Description | | --- | --- | -| [afterMinimumRaise(minimumRaise, erc20decimals)](./saledurationinblocks.md#afterMinimumRaise-method-1) | A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. | -| [applyExtraTime(extraTimeBlocks, extraTimeAmount, erc20decimals)](./saledurationinblocks.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTimeBlocks' more blocks). | -| [applyOwnership(ownerAddress)](./saledurationinblocks.md#applyOwnership-method-1) | Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. | +| [afterMinimumRaise(minimumRaise, reserveTokenDecimals)](./betweenblocks.md#afterMinimumRaise-method-1) | A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. | +| [applyExtraTime(extraTimeBlocks, extraTimeAmount, reserveTokenDecimals)](./betweenblocks.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTimeBlocks' more blocks). | ## Property Details @@ -83,7 +82,7 @@ readonly startBlockNumber: number; -### afterMinimumRaise(minimumRaise, erc20decimals) +### afterMinimumRaise(minimumRaise, reserveTokenDecimals) A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. @@ -92,7 +91,7 @@ please note that this method should not be used with applyExtraTime as they are Signature: ```typescript -afterMinimumRaise(minimumRaise: number, erc20decimals?: number): SaleDurationInBlocks; +afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): this; ``` #### Parameters @@ -100,17 +99,17 @@ afterMinimumRaise(minimumRaise: number, erc20decimals?: number): SaleDurationInB | Parameter | Type | Description | | --- | --- | --- | | minimumRaise | `number` | the minimumRaise parameter of the raise which is passed at the time of sale's deployment as part of the SaleConfig | -| erc20decimals | `number` | | +| reserveTokenDecimals | `number` | | Returns: -`SaleDurationInBlocks` +`this` this -### applyExtraTime(extraTimeBlocks, extraTimeAmount, erc20decimals) +### applyExtraTime(extraTimeBlocks, extraTimeAmount, reserveTokenDecimals) Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTimeBlocks' more blocks). @@ -119,7 +118,7 @@ Method to apply extra time to the sale duration. if the extra time criteria whic Signature: ```typescript -applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, erc20decimals?: number): SaleDurationInBlocks; +applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDecimals?: number): this; ``` #### Parameters @@ -128,37 +127,11 @@ applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, erc20decimals?: | --- | --- | --- | | extraTimeBlocks | `number` | The amount of time (in blocks) that sale can continue for, if the extra time criteria has been met. | | extraTimeAmount | `number` | The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. | -| erc20decimals | `number` | | +| reserveTokenDecimals | `number` | | Returns: -`SaleDurationInBlocks` - -this - - - -### applyOwnership(ownerAddress) - -Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. - -- applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get the desired result. - -Signature: - -```typescript -applyOwnership(ownerAddress: string): SaleDurationInBlocks; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ownerAddress | `string` | The address that will be the owner, only this wallet address can start or end a raise if this method is applied. | - -Returns: - -`SaleDurationInBlocks` +`this` this diff --git a/docs/classes/betweentimestamps.md b/docs/classes/betweentimestamps.md new file mode 100644 index 0000000..50ece7b --- /dev/null +++ b/docs/classes/betweentimestamps.md @@ -0,0 +1,137 @@ + +# Class BetweenTimestamps + +- A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. + +- Like all the method calls, order of calling methods in this class is important in order to produce the desired result, although calling in any order will produce a reliable result, that depends on what the intention is. Methods afterMinimumRaise and applyExtratime should not be used together as they are opposite of eachother and will cancel eachother out. + +Signature: + +```typescript +class BetweenTimestamps +``` + +## Example + + +```typescript +//For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. +const saleDuration = new SaleDuration(startTimestamp, endTimestamp) + +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [constants](./betweentimestamps.md#constants-property) | `BigNumberish[]` | | +| [endTimestamp](./betweentimestamps.md#endTimestamp-property) | `number` | | +| [sources](./betweentimestamps.md#sources-property) | `BytesLike[]` | | +| [startTimestamp](./betweentimestamps.md#startTimestamp-property) | `number` | | + +## Methods + +| Method | Description | +| --- | --- | +| [afterMinimumRaise(minimumRaise, reserveTokenDecimals)](./betweentimestamps.md#afterMinimumRaise-method-1) | A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. | +| [applyExtraTime(extraTime, extraTimeAmount, reserveTokenDecimals)](./betweentimestamps.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). | + +## Property Details + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### endTimestamp + +Signature: + +```typescript +readonly endTimestamp: number; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` + + + +### startTimestamp + +Signature: + +```typescript +readonly startTimestamp: number; +``` + +## Method Details + + + +### afterMinimumRaise(minimumRaise, reserveTokenDecimals) + +A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. + +please note that this method should not be used with applyExtraTime as they are opossit of eachother and also the order of using this method along with other methods of this class is important + +Signature: + +```typescript +afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): this; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| minimumRaise | `number` | the minimumRaise parameter of the raise which is passed at the time of sale's deployment as part of the SaleConfig | +| reserveTokenDecimals | `number` | | + +Returns: + +`this` + +this + + + +### applyExtraTime(extraTime, extraTimeAmount, reserveTokenDecimals) + +Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). + +- If the sale has extra time discount, it is important that this method to be applied for canEndStateConfig of the sale. + +Signature: + +```typescript +applyExtraTime(extraTime: number, extraTimeAmount: number, reserveTokenDecimals?: number): this; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| extraTime | `number` | The amount of time (in minutes) that sale can continue for, if the extra time criteria has been met. | +| extraTimeAmount | `number` | The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. | +| reserveTokenDecimals | `number` | | + +Returns: + +`this` + +this + diff --git a/docs/classes/buildreport.md b/docs/classes/buildreport.md index a9f5c29..61cba36 100644 --- a/docs/classes/buildreport.md +++ b/docs/classes/buildreport.md @@ -20,8 +20,8 @@ class BuildReport extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | -| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/buycap.md b/docs/classes/buyamount.md similarity index 53% rename from docs/classes/buycap.md rename to docs/classes/buyamount.md index 9699f46..ea69b0d 100644 --- a/docs/classes/buycap.md +++ b/docs/classes/buyamount.md @@ -1,27 +1,27 @@ -# Class BuyCap +# Class BuyAmount The fisrt piece of script in a sale's amount/price pair script which determines the amoount or cap that can be bought. Signature: ```typescript -class BuyCap +class BuyAmount ``` ## Properties | Property | Type | Description | | --- | --- | --- | -| [buyCapConfig](./buycap.md#buyCapConfig-property) | `StateConfig \| undefined` | | -| [constants](./buycap.md#constants-property) | `BigNumberish[]` | | -| [sources](./buycap.md#sources-property) | `BytesLike[]` | | +| [buyCapConfig](./buyamount.md#buyCapConfig-property) | `StateConfig \| undefined` | | +| [constants](./buyamount.md#constants-property) | `BigNumberish[]` | | +| [sources](./buyamount.md#sources-property) | `BytesLike[]` | | ## Methods | Method | Description | | --- | --- | -| [applyWalletCap(mode, options)](./buycap.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet. | +| [applyWalletCap(mode, options)](./buyamount.md#applyWalletCap-method-1) | Method to apply cap per wallet to the sale. addresses can only buy that certain amount of rTKNs. With the option of applying multiplier for max cap per wallet. | ## Property Details @@ -72,7 +72,8 @@ applyWalletCap(mode: BuyCapMode, options?: { tierAddress?: string; tierMultiplier?: number[]; tierActivation?: (number | string)[]; - }): BuyCap; + tierContext?: BigNumber[]; + }): BuyAmount; ``` #### Parameters @@ -80,11 +81,11 @@ applyWalletCap(mode: BuyCapMode, options?: { | Parameter | Type | Description | | --- | --- | --- | | mode | [BuyCapMode](../enums/buycapmode.md) | The mode that determines if there is max or min cap per wallet or both. | -| options |
{
    minWalletCap?: number;
    maxWalletCap?: number;
    tierAddress?: string;
    tierMultiplier?: number[];
    tierActivation?: (number \| string)[];
}
| (optional) Additional arguments to configure the cap per wallet behaviour: - (param) minWalletCap - The number for min cap per wallet, addresses cannot buy less number of rTKNs than this amount. - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. - (param) tierMultiplier - An array of each tiers' Multiplier value. - (param) tierActivation - An array of number of blocks for each tier that will be the required period of time for that tiered address to hold the tier's in order to be eligible for that tier's multiplier. | +| options |
{
    minWalletCap?: number;
    maxWalletCap?: number;
    tierAddress?: string;
    tierMultiplier?: number[];
    tierActivation?: (number \| string)[];
    tierContext?: BigNumber[];
}
| (optional) Additional arguments to configure the cap per wallet behaviour: - (param) minWalletCap - The number for min cap per wallet, addresses cannot buy less number of rTKNs than this amount. - (param) maxWalletCap - The number for max cap per wallet, addresses cannot buy more number of rTKNs than this amount. - (param) tierAddress - The Tier contract address for tiers' max cap per wallet multiplier. - (param) tierMultiplier - An array of each tiers' Multiplier value. - (param) tierActivation - An array of number of timestamps for each tier that will be the required period of time for that tiered address to hold the tier's in order to be eligible for that tier's multiplier. - (param) tierContext - an array of 8 items represtenting stake contract thresholds | Returns: -`BuyCap` +`BuyAmount` this diff --git a/docs/classes/combinetier.md b/docs/classes/combinetier.md index 8667ffa..98ac197 100644 --- a/docs/classes/combinetier.md +++ b/docs/classes/combinetier.md @@ -10,7 +10,7 @@ The combine tiers implements the `ReadOnlyTier` over RainVM. Allows combining th Signature: ```typescript -class CombineTier extends TierContract +class CombineTier extends ITierV2 ``` ## Example @@ -41,6 +41,7 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | Property | Type | Description | | --- | --- | --- | | [deploy](./combinetier.md#deploy-property-static) | `(signer: Signer, args: CombineTierDeployArgs, overrides?: TxOverrides) => Promise` | Deploy a new CombineTier contract from the factory. | +| [deployBalanceTier](./combinetier.md#deployBalanceTier-property-static) | `(address: string, type: "erc20" \| "erc721" \| "erc1155", levels: (number \| string)[], signer: Signer, erc20Decimals?: number, tokenId?: BigNumber) => Promise` | Method to deploy similar to Rain v1 BalanceTier contracts using CombineTier and CombineTier script generator for either of ERC20, ERC721, or ERC1155 tokens | | [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | | [getAlwaysTier](./combinetier.md#getAlwaysTier-property-static) | `(signer: Signer) => Promise` | Get an instance of a CombineTier contract that represent an AlwaysTier contract. | | [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | @@ -53,12 +54,11 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | Property | Type | Description | | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [connect](./combinetier.md#connect-property) | `(signer: Signer) => CombineTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./combinetier.md#connect-property) | `(signer: Signer) => CombineTier` | Conncect to this CombineTier contract with another signer

*Overrides [ITierV2.connect](./itierv2.md#connect-property)* | | [fnPtrs](./combinetier.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | -| [setTier](./combinetier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | It is NOT implemented in CombineTiers. Always will throw an error | +| [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [ITierV2.levels](./itierv2.md#levels-property)* | +| [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [ITierV2.report](./itierv2.md#report-property)* | +| [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually.

*Inherited from [ITierV2.reportTimeForTier](./itierv2.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | | [storageOpcodesRange](./combinetier.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for combineTier's storage opcodes | @@ -75,7 +75,7 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./itierv2.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [ITierV2.currentTier()](./itierv2.md#currentTier-method-1)* | ## Static Property Details @@ -93,6 +93,29 @@ Use the factory stored in the book addresses and use the provided signer as depl static deploy: (signer: Signer, args: CombineTierDeployArgs, overrides?: TxOverrides) => Promise; ``` + + +### deployBalanceTier + +Method to deploy similar to Rain v1 BalanceTier contracts using CombineTier and CombineTier script generator for either of ERC20, ERC721, or ERC1155 tokens + +A BalanceTier checks a wallet address balance of the token and reports the results as an ALWAYS/NEVER tier. + +Signature: + +```typescript +static deployBalanceTier: (address: string, type: "erc20" | "erc721" | "erc1155", levels: (number | string)[], signer: Signer, erc20Decimals?: number, tokenId?: BigNumber) => Promise; +``` + +#### Example + + +```typescript +Deploy a new BalanceTier contract using CombineTier class and script generators +const newBalanceTier = CombineTier.deployBalanceTier(address, type, levels, signer) + +``` + ### getAlwaysTier @@ -143,9 +166,9 @@ protected static readonly nameBookReference: string; ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this CombineTier contract with another signer -*Overrides [RainContract.connect](./raincontract.md#connect-property)* +*Overrides [ITierV2.connect](./itierv2.md#connect-property)* Signature: @@ -165,18 +188,6 @@ Pointers to opcode functions, necessary for being able to read the packedBytes readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; ``` - - -### setTier - -It is NOT implemented in CombineTiers. Always will throw an error - -Signature: - -```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; -``` - ### storageOpcodesRange diff --git a/docs/classes/combinetiergenerator.md b/docs/classes/combinetiergenerator.md index ecd1cf1..8e431f9 100644 --- a/docs/classes/combinetiergenerator.md +++ b/docs/classes/combinetiergenerator.md @@ -24,9 +24,9 @@ new CombineTier(a tierAddress or a StateConfig) | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | -| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports | -| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. | +| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | +| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports | +| [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8) | ## Property Details @@ -55,14 +55,14 @@ sources: BytesLike[]; -### combineWith(reporter, logic, mode, number) +### combineWith(reporter, logic, mode, accountOrSender, number) Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode Signature: ```typescript -combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, number?: number): CombineTierGenerator; +combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, accountOrSender?: boolean, number?: number): CombineTierGenerator; ``` #### Parameters @@ -72,6 +72,7 @@ combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectL | reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | | logic | `selectLteLogic` | selectLte logic | | mode | `selectLteMode` | selectLte mode | +| accountOrSender | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | | number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_TIMESTAMP | Returns: @@ -82,14 +83,14 @@ this -### differenceFrom(reporter) +### differenceFrom(reporter, accountOrSender) Saturating difference between 2 reports Signature: ```typescript -differenceFrom(reporter: string | StateConfig): this; +differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this; ``` #### Parameters @@ -97,6 +98,7 @@ differenceFrom(reporter: string | StateConfig): this; | Parameter | Type | Description | | --- | --- | --- | | reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | +| accountOrSender | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | Returns: @@ -106,24 +108,21 @@ this -### isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals) +### isTierHeldFor(duration) -Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier. +Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. Signature: ```typescript -isTierHeldFor(reporter: string | StateConfig, numberOfBlocks: number | number[], thresholds?: (number | string)[], tokenDecimals?: number): CombineTierGenerator; +isTierHeldFor(duration: number | number[]): CombineTierGenerator; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| reporter | `string \| StateConfig` | either a TransferTier contract address or a StateConfig of TransferTier REPORT script (or can be any other form of StateConfig desired) | -| numberOfBlocks | `number \| number[]` | A number or an array of numbers represting the number of blocks a given tier must be held to get ALWAYS report or else it gets NEVER report. | -| thresholds | `(number \| string)[]` | | -| tokenDecimals | `number` | | +| duration | `number \| number[]` | A number or an array of numbers represting the duration in timestamp a given tier must be held to get ALWAYS report or else it gets NEVER report. | Returns: diff --git a/docs/classes/combinetierjs.md b/docs/classes/combinetierjs.md deleted file mode 100644 index a331e23..0000000 --- a/docs/classes/combinetierjs.md +++ /dev/null @@ -1,60 +0,0 @@ - -# Class CombineTierJS - -- The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. - -Signature: - -```typescript -class CombineTierJS extends RainJS -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_CONTEXT\_](./combinetierjs.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime.

*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* | -| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | -| [\_STORAGE\_](./combinetierjs.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions)

*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* | -| [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract

*Inherited from [RainJS.contract](./rainjs.md#contract-property)* | -| [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJS.lastState](./rainjs.md#lastState-property)* | -| [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider.

*Inherited from [RainJS.provider](./rainjs.md#provider-property)* | -| [signer](./rainjs.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJS.signer](./rainjs.md#signer-property)* | - -## Methods - -| Method | Description | -| --- | --- | -| [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJS.run()](./rainjs.md#run-method-1)* | - -## Property Details - - - -### \_CONTEXT\_ - -key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - -*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* - -Signature: - -```typescript -protected _CONTEXT_: ApplyOpFn; -``` - - - -### \_STORAGE\_ - -key/value pair of STORAGE opcodes of the CombineTier JSVM (empty with no functions) - -*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* - -CombineTier doesnt have any STORAGE opcode by default and in its contract level, however in JSVM there is the ability to pass in custom opcode functions to it - -Signature: - -```typescript -protected _STORAGE_: ApplyOpFn; -``` diff --git a/docs/classes/combinetierjsvm.md b/docs/classes/combinetierjsvm.md new file mode 100644 index 0000000..e73c4cf --- /dev/null +++ b/docs/classes/combinetierjsvm.md @@ -0,0 +1,72 @@ + +# Class CombineTierJSVM + +- The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. + +Signature: + +```typescript +class CombineTierJSVM extends RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | +| [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | +| [ContextLength](./combinetierjsvm.md#ContextLength-property) | `number` | CombineTierJSVM can have any length for context | +| [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval

*Inherited from [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | +| [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-property)* | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | +| [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJSVM.lastState](./rainjsvm.md#lastState-property)* | +| [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode

*Inherited from [RainJSVM.self](./rainjsvm.md#self-property)* | +| [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJSVM.signer](./rainjsvm.md#signer-property)* | +| [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.stack](./rainjsvm.md#stack-property)* | +| [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` |

*Inherited from [RainJSVM.storage](./rainjsvm.md#storage-property)* | +| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes)

*Inherited from [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | +| [StorageRange](./combinetierjsvm.md#StorageRange-property) | `` | CombineTierJSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | +| [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | + +## Static Methods + +| Method | Description | +| --- | --- | +| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | *Inherited from [RainJSVM.opsFromOpMeta()](./rainjsvm.md#opsFromOpMeta-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [connect(signer)](./rainjsvm.md#connect-method-1) |

*Inherited from [RainJSVM.connect()](./rainjsvm.md#connect-method-1)* | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | +| [setContract(contract)](./rainjsvm.md#setContract-method-1) |

*Inherited from [RainJSVM.setContract()](./rainjsvm.md#setContract-method-1)* | + +## Property Details + + + +### ContextLength + +CombineTierJSVM can have any length for context + +Signature: + +```typescript +protected readonly ContextLength: number; +``` + + + +### StorageRange + +CombineTierJSVM valid storage range + +*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* + +Signature: + +```typescript +protected readonly StorageRange = CombineTierStorage.length; +``` diff --git a/docs/classes/combinetiersimulation.md b/docs/classes/combinetiersimulation.md new file mode 100644 index 0000000..65b5ac5 --- /dev/null +++ b/docs/classes/combinetiersimulation.md @@ -0,0 +1,99 @@ + +# Class CombinetierSimulation + +A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. + +this class is compatible with + +Signature: + +```typescript +class CombinetierSimulation extends vmSimulation +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./combinetiersimulation.md#address-property) | `string` | The CombineTier address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | +| [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [report](./combinetiersimulation.md#report-property) |
{
    [wallet: string]: BigNumber;
}
| The report of each account which is compatible and can be stored in | +| [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | +| [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [vmSimulation.sender](./vmsimulation.md#sender-property)* | +| [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | + +## Methods + +| Method | Description | +| --- | --- | +| [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | +| [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | +| [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | +| [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property

*Inherited from [vmSimulation.setContractAddress()](./vmsimulation.md#setContractAddress-method-1)* | +| [setReport(account, timestamp, blockNumber)](./combinetiersimulation.md#setReport-method-1) | Method to get the report for an account which then will be stored in the class's report property and can be accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of the account it is been called for | +| [setScript(script)](./vmsimulation.md#setScript-method-1) | Method to set the class script

*Inherited from [vmSimulation.setScript()](./vmsimulation.md#setScript-method-1)* | +| [setSender(senderAddress)](./vmsimulation.md#setSender-method-1) | Method to set the class sender property

*Inherited from [vmSimulation.setSender()](./vmsimulation.md#setSender-method-1)* | + +## Property Details + + + +### address + +The CombineTier address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string. + +*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* + +Signature: + +```typescript +address: string; +``` + + + +### report + +The report of each account which is compatible and can be stored in + +Signature: + +```typescript +report: { + [wallet: string]: BigNumber; + }; +``` + +## Method Details + + + +### setReport(account, timestamp, blockNumber) + +Method to get the report for an account which then will be stored in the class's report property and can be accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of the account it is been called for + +Signature: + +```typescript +setReport(account: string, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| account | `string` | the account to get and update the report for which needs to be string number or hex string | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise` + +the report of the account in a 64 char length hex string + diff --git a/docs/classes/createerc20.md b/docs/classes/createerc20.md new file mode 100644 index 0000000..f4b3564 --- /dev/null +++ b/docs/classes/createerc20.md @@ -0,0 +1,39 @@ + +# Class CreateERC20 + +A class to creat a an ERC20 token with ability to be a faucet. owner can mint extar token if i=the token is not fixed supply. It can be claimed x number of tokens once every number of blocks passed which is defined by the faucet at the time of deployment. + +Signature: + +```typescript +class CreateERC20 +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [constants](./createerc20.md#constants-property) | `BigNumberish[]` | | +| [sources](./createerc20.md#sources-property) | `BytesLike[]` | | + +## Property Details + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` diff --git a/docs/classes/emissionserc20.md b/docs/classes/emissionserc20.md index 9d3aefc..e25186a 100644 --- a/docs/classes/emissionserc20.md +++ b/docs/classes/emissionserc20.md @@ -8,7 +8,7 @@ This class provides an easy way to deploy and interact with EmissionsERC20's. Signature: ```typescript -class EmissionsERC20 extends TierContract +class EmissionsERC20 extends ITierV2 ``` ## Example @@ -43,26 +43,25 @@ await EmissionsERC20.isChild(signer, newEmission.address); | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [allowance](./emissionserc20.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through `transferFrom()`. This is zero by default.

This value changes when `approve()` or `transferFrom()` are called. | | [allowDelegatedClaims](./emissionserc20.md#allowDelegatedClaims-property) | `(overrides?: ReadTxOverrides) => Promise` | Whether the claimant must be the caller of `claim`. If `false` then accounts other than claimant can claim. This may or may not be desirable depending on the emissions schedule. For example, a linear schedule will produce the same end result for the claimant regardless of who calls `claim` or when but an exponential schedule is more profitable if the claimant waits longer between claims. In the non-linear case delegated claims would be inappropriate as third party accounts could grief claimants by claiming "early", thus forcing opportunity cost on claimants who would have preferred to wait. | -| [approve](./emissionserc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Sets `amount` as the allowance of `spender` over the caller's tokens. | +| [approve](./emissionserc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Approve spend limit `amount` as the allowance for a `spender` over this tokens. | | [balanceOf](./emissionserc20.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens owned by `account`. | | [calculateClaim](./emissionserc20.md#calculateClaim-property) | `(claimant: string, overrides?: ReadTxOverrides) => Promise` | Calculates the claim without processing it. Read only method that may be useful downstream both onchain and offchain if a claimant wants to check the claim amount before deciding whether to process it. As this is read only there are no checks against delegated claims. It is possible to return a value from `calculateClaim` and to not be able to process the claim with `claim` if `msg.sender` is not the `claimant`. | | [claim](./emissionserc20.md#claim-property) | `(claimant: string, data: BytesLike, overrides?: TxOverrides) => Promise` | Processes the claim for `claimant_`. - Enforces `allowDelegatedClaims` if it is `true` so that `msg.sender` must also be `claimant_`. - Takes the return from `calculateClaim` and mints for `claimant_`. - Records the current block as the claim-tier for this contract. - emits a `Claim` event as per `IClaim`. | -| [connect](./emissionserc20.md#connect-property) | `(signer: Signer) => EmissionsERC20` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [decimals](./emissionserc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. | -| [decreaseAllowance](./emissionserc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [connect](./emissionserc20.md#connect-property) | `(signer: Signer) => EmissionsERC20` | Conncect to this EmissionsERC20 contract with another signer

*Overrides [ITierV2.connect](./itierv2.md#connect-property)* | +| [decimals](./emissionserc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) | +| [decreaseAllowance](./emissionserc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automatically decreases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | | [fnPtrs](./emissionserc20.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | -| [increaseAllowance](./emissionserc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | +| [increaseAllowance](./emissionserc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automically increases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [ITierV2.levels](./itierv2.md#levels-property)* | | [name](./emissionserc20.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | -| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | -| [setTier](./emissionserc20.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | It is NOT implemented in Emissions. Always will throw an error | +| [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [ITierV2.report](./itierv2.md#report-property)* | +| [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually.

*Inherited from [ITierV2.reportTimeForTier](./itierv2.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | | [storageOpcodesRange](./emissionserc20.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for emissionERC20's storage opcodes | | [symbol](./emissionserc20.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the symbol of the token, usually a shorter version of the name. | | [totalSupply](./emissionserc20.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens in existence. | -| [transfer](./emissionserc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | -| [transferFrom](./emissionserc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | +| [transfer](./emissionserc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | +| [transferFrom](./emissionserc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | ## Static Methods @@ -77,7 +76,7 @@ await EmissionsERC20.isChild(signer, newEmission.address); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./itierv2.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [ITierV2.currentTier()](./itierv2.md#currentTier-method-1)* | ## Static Property Details @@ -153,7 +152,7 @@ readonly allowDelegatedClaims: (overrides?: ReadTxOverrides) => Promise ### approve -Sets `amount` as the allowance of `spender` over the caller's tokens. +Approve spend limit `amount` as the allowance for a `spender` over this tokens. Signature: @@ -201,9 +200,9 @@ readonly claim: (claimant: string, data: BytesLike, overrides?: TxOverrides) => ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this EmissionsERC20 contract with another signer -*Overrides [RainContract.connect](./raincontract.md#connect-property)* +*Overrides [ITierV2.connect](./itierv2.md#connect-property)* Signature: @@ -215,7 +214,7 @@ readonly connect: (signer: Signer) => EmissionsERC20; ### decimals -Returns the number of decimals used to get its user representation. +Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) Signature: @@ -227,7 +226,7 @@ readonly decimals: (overrides?: ReadTxOverrides) => Promise; ### decreaseAllowance -Atomically decreases the allowance granted to `spender` by the caller. +Automatically decreases the allowance granted to `spender` for this token. This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. @@ -253,7 +252,7 @@ readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; ### increaseAllowance -Atomically increases the allowance granted to `spender` by the caller. +Automically increases the allowance granted to `spender` for this token. This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. @@ -275,18 +274,6 @@ Returns the name of the token. readonly name: (overrides?: ReadTxOverrides) => Promise; ``` - - -### setTier - -It is NOT implemented in Emissions. Always will throw an error - -Signature: - -```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; -``` - ### storageOpcodesRange @@ -327,7 +314,7 @@ readonly totalSupply: (overrides?: ReadTxOverrides) => Promise; ### transfer -Moves `amount` tokens from the caller's account to `to`. +Moves `amount` of tokens from the caller's account to `to`. Requirements: @@ -343,7 +330,7 @@ readonly transfer: (to: string, amount: BigNumberish, overrides?: TxOverrides) = ### transferFrom -Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. +Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. diff --git a/docs/classes/emissionserc20js.md b/docs/classes/emissionserc20js.md deleted file mode 100644 index cba6f49..0000000 --- a/docs/classes/emissionserc20js.md +++ /dev/null @@ -1,60 +0,0 @@ - -# Class EmissionsERC20JS - -- The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. - -Signature: - -```typescript -class EmissionsERC20JS extends RainJS -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_CONTEXT\_](./emissionserc20js.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime.

*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* | -| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | -| [\_STORAGE\_](./emissionserc20js.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions)

*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* | -| [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract

*Inherited from [RainJS.contract](./rainjs.md#contract-property)* | -| [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJS.lastState](./rainjs.md#lastState-property)* | -| [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider.

*Inherited from [RainJS.provider](./rainjs.md#provider-property)* | -| [signer](./rainjs.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJS.signer](./rainjs.md#signer-property)* | - -## Methods - -| Method | Description | -| --- | --- | -| [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJS.run()](./rainjs.md#run-method-1)* | - -## Property Details - - - -### \_CONTEXT\_ - -key/value pair of CONTEXT opcodes of the CombineTier JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - -*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* - -Signature: - -```typescript -protected _CONTEXT_: ApplyOpFn; -``` - - - -### \_STORAGE\_ - -key/value pair of STORAGE opcodes of the EmissionsERC20 JSVM (empty with no functions) - -*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* - -EmissionsERC20 doesnt have any STORAGE opcode by default and in its contract level, however in JSVM there is the ability to pass in custom opcode functions to it - -Signature: - -```typescript -protected _STORAGE_: ApplyOpFn; -``` diff --git a/docs/classes/emissionserc20jsvm.md b/docs/classes/emissionserc20jsvm.md new file mode 100644 index 0000000..36cdff2 --- /dev/null +++ b/docs/classes/emissionserc20jsvm.md @@ -0,0 +1,72 @@ + +# Class EmissionsERC20JSVM + +- The javascript version of EmissionsERC20JSVM which inherits RainJS with local EmissionsERC20JSVM opcodes. + +Signature: + +```typescript +class EmissionsERC20JSVM extends RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | +| [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | +| [ContextLength](./emissionserc20jsvm.md#ContextLength-property) | `` | EmissionsERC20JSVM valid context length | +| [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval

*Inherited from [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | +| [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-property)* | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | +| [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJSVM.lastState](./rainjsvm.md#lastState-property)* | +| [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode

*Inherited from [RainJSVM.self](./rainjsvm.md#self-property)* | +| [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJSVM.signer](./rainjsvm.md#signer-property)* | +| [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.stack](./rainjsvm.md#stack-property)* | +| [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` |

*Inherited from [RainJSVM.storage](./rainjsvm.md#storage-property)* | +| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes)

*Inherited from [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | +| [StorageRange](./emissionserc20jsvm.md#StorageRange-property) | `` | EmissionsERC20JSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | +| [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | + +## Static Methods + +| Method | Description | +| --- | --- | +| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | *Inherited from [RainJSVM.opsFromOpMeta()](./rainjsvm.md#opsFromOpMeta-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [connect(signer)](./rainjsvm.md#connect-method-1) |

*Inherited from [RainJSVM.connect()](./rainjsvm.md#connect-method-1)* | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | +| [setContract(contract)](./rainjsvm.md#setContract-method-1) |

*Inherited from [RainJSVM.setContract()](./rainjsvm.md#setContract-method-1)* | + +## Property Details + + + +### ContextLength + +EmissionsERC20JSVM valid context length + +Signature: + +```typescript +protected readonly ContextLength = EmissionsERC20Context.length; +``` + + + +### StorageRange + +EmissionsERC20JSVM valid storage range + +*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* + +Signature: + +```typescript +protected readonly StorageRange = EmissionsERC20Storage.length; +``` diff --git a/docs/classes/emissionsmiulation.md b/docs/classes/emissionsmiulation.md new file mode 100644 index 0000000..41bfdad --- /dev/null +++ b/docs/classes/emissionsmiulation.md @@ -0,0 +1,181 @@ + +# Class EmissionSmiulation + +A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. + +this class is compatible with + +Signature: + +```typescript +class EmissionSmiulation extends vmSimulation +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./emissionsmiulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | +| [balanceOf](./emissionsmiulation.md#balanceOf-property) |
{
    [wallet: string]: BigNumber;
}
| The balance of emission token holders which is compatible with | +| [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | +| [decimals](./emissionsmiulation.md#decimals-property) | `number` | The decimals value of the emissions token which is 18 | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [report](./emissionsmiulation.md#report-property) |
{
    [wallet: string]: BigNumber;
}
| The report of each claimant which is compatible and can be stored in | +| [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | +| [sender](./emissionsmiulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* | +| [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | +| [totalSupply](./emissionsmiulation.md#totalSupply-property) | `BigNumber` | The current totalSupply of the emissions token which can increase everytime a successful mint happens | + +## Methods + +| Method | Description | +| --- | --- | +| [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | +| [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | +| [calculateClaim(claimantAccount, timestamp, blockNumber)](./emissionsmiulation.md#calculateClaim-method-1) | Method to calculate the cliamable amount for the claimant by running the script by JSVM | +| [claim(claimantAccount, timestamp, blockNumber)](./emissionsmiulation.md#claim-method-1) | The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM | +| [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | +| [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property

*Inherited from [vmSimulation.setContractAddress()](./vmsimulation.md#setContractAddress-method-1)* | +| [setScript(script)](./vmsimulation.md#setScript-method-1) | Method to set the class script

*Inherited from [vmSimulation.setScript()](./vmsimulation.md#setScript-method-1)* | +| [setSender(senderAddress)](./vmsimulation.md#setSender-method-1) | Method to set the class sender property

*Inherited from [vmSimulation.setSender()](./vmsimulation.md#setSender-method-1)* | + +## Property Details + + + +### address + +The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string. + +*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* + +Signature: + +```typescript +address: string; +``` + + + +### balanceOf + +The balance of emission token holders which is compatible with + +Signature: + +```typescript +balanceOf: { + [wallet: string]: BigNumber; + }; +``` + + + +### decimals + +The decimals value of the emissions token which is 18 + +Signature: + +```typescript +readonly decimals: number; +``` + + + +### report + +The report of each claimant which is compatible and can be stored in + +Signature: + +```typescript +report: { + [wallet: string]: BigNumber; + }; +``` + + + +### sender + +A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string. + +*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* + +Signature: + +```typescript +sender: string; +``` + + + +### totalSupply + +The current totalSupply of the emissions token which can increase everytime a successful mint happens + +Signature: + +```typescript +totalSupply: BigNumber; +``` + +## Method Details + + + +### calculateClaim(claimantAccount, timestamp, blockNumber) + +Method to calculate the cliamable amount for the claimant by running the script by JSVM + +Signature: + +```typescript +calculateClaim(claimantAccount: string, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| claimantAccount | `string` | the account to calculate the claimable amount which needs to be string number or hex string | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise` + +A BigNumber that represents the claimable amount + + + +### claim(claimantAccount, timestamp, blockNumber) + +The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM + +Signature: + +```typescript +claim(claimantAccount: string, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| claimantAccount | `string` | the account to calculate the claimable amount which needs to be string number or hex string | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise` + +the minted amount in a BigNumber format + diff --git a/docs/classes/erc1155.md b/docs/classes/erc1155.md index b01672d..62ca97c 100644 --- a/docs/classes/erc1155.md +++ b/docs/classes/erc1155.md @@ -27,7 +27,7 @@ class ERC1155 | [balanceOfBatch](./erc1155.md#balanceOfBatch-property) | `(accounts: string[], ids: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Return a batch of the balances

Requirements:

- `accounts` and `ids` must have the same length. | | [burn](./erc1155.md#burn-property) | `(account: string, id: BigNumberish, value: BigNumberish, overrides?: TxOverrides) => Promise` | Burn the tokens of type `id` from `account ` | | [burnBatch](./erc1155.md#burnBatch-property) | `(account: string, ids: BigNumberish[], values: BigNumberish[], overrides?: TxOverrides) => Promise` | Burn the tokens of type `id` from `account as a batch` | -| [connect](./erc1155.md#connect-property) | `(signer: Signer) => ERC1155` | Connect the current instance to a new signer | +| [connect](./erc1155.md#connect-property) | `(signer: Signer) => ERC1155` | Connect the current instance of ERC1155 to a new signer | | [isApprovedForAll](./erc1155.md#isApprovedForAll-property) | `(account: string, operator: string, overrides?: ReadTxOverrides) => Promise` | Returns true if `operator` is approved to transfer `account`'s tokens. | | [safeBatchTransferFrom](./erc1155.md#safeBatchTransferFrom-property) | `(from: string, to: string, ids: BigNumberish[], amounts: BigNumberish[], data: BytesLike, overrides?: TxOverrides) => Promise` | Transfers each `amounts` tokens of token type `ids` from `from` to `to`.

Requirements:

- `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend `from`'s tokens via `setApprovalForAll()`. - `from` must have a balance of tokens of type `id` of at least `amount`. | | [safeTransferFrom](./erc1155.md#safeTransferFrom-property) | `(from: string, to: string, id: BigNumberish, amount: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | Transfers `amount` tokens of token type `id` from `from` to `to`.

Requirements:

- `to` cannot be the zero address. - If the caller is not `from`, it must be have been approved to spend `from`'s tokens via `setApprovalForAll()`. - `from` must have a balance of tokens of type `id` of at least `amount`. | @@ -136,7 +136,7 @@ readonly burnBatch: (account: string, ids: BigNumberish[], values: BigNumberish[ ### connect -Connect the current instance to a new signer +Connect the current instance of ERC1155 to a new signer Signature: diff --git a/docs/classes/erc1155balancetier.md b/docs/classes/erc1155balancetier.md new file mode 100644 index 0000000..2a2dc78 --- /dev/null +++ b/docs/classes/erc1155balancetier.md @@ -0,0 +1,61 @@ + +# Class ERC1155BalanceTier + +class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC1155BalancTier witha certain toke ID + +Signature: + +```typescript +class ERC1155BalanceTier extends CombineTierGenerator +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [constants](./combinetiergenerator.md#constants-property) | `BigNumberish[]` | *Inherited from [CombineTierGenerator.constants](./combinetiergenerator.md#constants-property)* | +| [sources](./combinetiergenerator.md#sources-property) | `BytesLike[]` | *Inherited from [CombineTierGenerator.sources](./combinetiergenerator.md#sources-property)* | +| [tierValues](./erc1155balancetier.md#tierValues-property) | `(number \| string)[]` | | +| [tokenAddress](./erc1155balancetier.md#tokenAddress-property) | `string` | | +| [tokenId](./erc1155balancetier.md#tokenId-property) | `BigNumber` | | + +## Methods + +| Method | Description | +| --- | --- | +| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | + +## Property Details + + + +### tierValues + +Signature: + +```typescript +readonly tierValues: (number | string)[]; +``` + + + +### tokenAddress + +Signature: + +```typescript +readonly tokenAddress: string; +``` + + + +### tokenId + +Signature: + +```typescript +readonly tokenId: BigNumber; +``` diff --git a/docs/classes/erc20.md b/docs/classes/erc20.md index 01fe034..0724982 100644 --- a/docs/classes/erc20.md +++ b/docs/classes/erc20.md @@ -3,7 +3,7 @@ A generic ERC20 interface to get connected to any ERC20 address and make transactions. -The interface only have and provide generic and common methods calls. Remember that any specific method implemented in the contract will NOT be available in this interface. +The interface only have and provide generic and common methods calls. Remember that any specific method implemented in the contract will NOT be available in this interface. Can get connected to ERC20Snapshot as well. Signature: @@ -23,21 +23,23 @@ class ERC20 | --- | --- | --- | | [address](./erc20.md#address-property) | `string` | | | [allowance](./erc20.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through `transferFrom()`. This is zero by default.

This value changes when `approve()` or `transferFrom()` are called. | -| [approve](./erc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Sets `amount` as the allowance of `spender` over the caller's tokens. | +| [approve](./erc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Approve spend limit `amount` as the allowance for a `spender` over this tokens. | | [attach](./erc20.md#attach-property) | `(address: string) => ERC20` | Create new instance with same signer but different contract address | | [balanceOf](./erc20.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens owned by `account`. | +| [balanceOfAt](./erc20.md#balanceOfAt-property) | `(account: string, snapshotId: BigNumberish, overrides?: TxOverrides) => Promise` | Get the balanceOf the account at the snapshotId | | [burn](./erc20.md#burn-property) | `(amount: BigNumberish, overrides?: TxOverrides) => Promise` | Destroys `amount` tokens from the caller. | | [burnFrom](./erc20.md#burnFrom-property) | `(account: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Destroys `amount` tokens from `account`, deducting from the caller's allowance. Requirements:

- the caller must have allowance for `accounts`'s tokens of at least `amount`. | -| [connect](./erc20.md#connect-property) | `(signer: Signer) => ERC20` | Connect the current instance to a new signer | +| [connect](./erc20.md#connect-property) | `(signer: Signer) => ERC20` | Connect the current instance of the ERC20 to a new signer | | [decimals](./erc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. | -| [decreaseAllowance](./erc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | -| [increaseAllowance](./erc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [decreaseAllowance](./erc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automatically decreases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [increaseAllowance](./erc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automically increases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | | [name](./erc20.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | | [signer](./erc20.md#signer-property) | `Signer` | | | [symbol](./erc20.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the symbol of the token, usually a shorter version of the name. | | [totalSupply](./erc20.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens in existence. | -| [transfer](./erc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | -| [transferFrom](./erc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | +| [totalSupplyAt](./erc20.md#totalSupplyAt-property) | `(snapshotId: BigNumberish, overrides?: TxOverrides) => Promise` | Get the totalSupply at the snapshotId | +| [transfer](./erc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | +| [transferFrom](./erc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | ## Static Property Details @@ -85,7 +87,7 @@ readonly allowance: (owner: string, spender: string, overrides?: ReadTxOverrides ### approve -Sets `amount` as the allowance of `spender` over the caller's tokens. +Approve spend limit `amount` as the allowance for a `spender` over this tokens. Signature: @@ -117,6 +119,18 @@ Returns the amount of tokens owned by `account`. readonly balanceOf: (account: string, overrides?: ReadTxOverrides) => Promise; ``` + + +### balanceOfAt + +Get the balanceOf the account at the snapshotId + +Signature: + +```typescript +readonly balanceOfAt?: (account: string, snapshotId: BigNumberish, overrides?: TxOverrides) => Promise; +``` + ### burn @@ -126,7 +140,7 @@ Destroys `amount` tokens from the caller. Signature: ```typescript -readonly burn: (amount: BigNumberish, overrides?: TxOverrides) => Promise; +readonly burn?: (amount: BigNumberish, overrides?: TxOverrides) => Promise; ``` @@ -140,14 +154,14 @@ Destroys `amount` tokens from `account`, deducting from the caller's all Signature: ```typescript -readonly burnFrom: (account: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; +readonly burnFrom?: (account: string, amount: BigNumberish, overrides?: TxOverrides) => Promise; ``` ### connect -Connect the current instance to a new signer +Connect the current instance of the ERC20 to a new signer Signature: @@ -171,7 +185,7 @@ readonly decimals: (overrides?: ReadTxOverrides) => Promise; ### decreaseAllowance -Atomically decreases the allowance granted to `spender` by the caller. +Automatically decreases the allowance granted to `spender` for this token. This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. @@ -185,7 +199,7 @@ readonly decreaseAllowance: (spender: string, subtractedValue: BigNumberish, ove ### increaseAllowance -Atomically increases the allowance granted to `spender` by the caller. +Automically increases the allowance granted to `spender` for this token. This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. @@ -241,11 +255,23 @@ Returns the amount of tokens in existence. readonly totalSupply: (overrides?: ReadTxOverrides) => Promise; ``` + + +### totalSupplyAt + +Get the totalSupply at the snapshotId + +Signature: + +```typescript +readonly totalSupplyAt?: (snapshotId: BigNumberish, overrides?: TxOverrides) => Promise; +``` + ### transfer -Moves `amount` tokens from the caller's account to `to`. +Moves `amount` of tokens from the caller's account to `to`. Requirements: @@ -261,7 +287,7 @@ readonly transfer: (to: string, amount: BigNumberish, overrides?: TxOverrides) = ### transferFrom -Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. +Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. diff --git a/docs/classes/erc20balancetier.md b/docs/classes/erc20balancetier.md index fd69569..b253e04 100644 --- a/docs/classes/erc20balancetier.md +++ b/docs/classes/erc20balancetier.md @@ -22,9 +22,9 @@ class ERC20BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | -| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | ## Property Details diff --git a/docs/classes/erc721.md b/docs/classes/erc721.md index 2797e26..aa9c70e 100644 --- a/docs/classes/erc721.md +++ b/docs/classes/erc721.md @@ -26,7 +26,7 @@ class ERC721 | [attach](./erc721.md#attach-property) | `(address: string) => ERC721` | Create new instance with same signer but different contract address | | [balanceOf](./erc721.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Returns the number of tokens in `owner`'s account. | | [burn](./erc721.md#burn-property) | `(tokenId: BigNumberish, overrides?: TxOverrides) => Promise` | Burns `tokenId`.

Requirements:

- The caller must own `tokenId` or be an approved operator. | -| [connect](./erc721.md#connect-property) | `(signer: Signer) => ERC721` | Connect the current instance to a new signer | +| [connect](./erc721.md#connect-property) | `(signer: Signer) => ERC721` | Connect the current instance of ERC721 to a new signer | | [getApproved](./erc721.md#getApproved-property) | `(tokenId: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Returns the account approved for `tokenId` token.

Requirements:

- `tokenId` must exist. | | [isApprovedForAll](./erc721.md#isApprovedForAll-property) | `(owner: string, operator: string, overrides?: ReadTxOverrides) => Promise` | Returns if the `operator` is allowed to manage all of the assets of `owner`. | | [name](./erc721.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | @@ -130,7 +130,7 @@ readonly burn: (tokenId: BigNumberish, overrides?: TxOverrides) => PromiseSignature: diff --git a/docs/classes/erc721balancetier.md b/docs/classes/erc721balancetier.md index 7e0ba85..33d54b0 100644 --- a/docs/classes/erc721balancetier.md +++ b/docs/classes/erc721balancetier.md @@ -22,9 +22,9 @@ class ERC721BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | -| [isTierHeldFor(reporter, numberOfBlocks, thresholds, tokenDecimals)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a CombineTier contract out of a TransferTier.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | +| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | ## Property Details diff --git a/docs/classes/fixedprice.md b/docs/classes/fixedprice.md index ea72f17..bfd81c8 100644 --- a/docs/classes/fixedprice.md +++ b/docs/classes/fixedprice.md @@ -18,12 +18,6 @@ const saleType = new FixedPrice(price) ``` -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [FIXED\_PRICE\_SOURCES](./fixedprice.md#FIXED_PRICE_SOURCES-property-static) | `() => Uint8Array` | | - ## Properties | Property | Type | Description | @@ -36,16 +30,5 @@ const saleType = new FixedPrice(price) | Method | Description | | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase.

*Inherited from [PriceCurve.applyExtraTimeDiscount()](./pricecurve.md#applyExtraTimeDiscount-method-1)* | -| [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | - -## Static Property Details - - +| [applyTierDiscount(tierAddress, tierDiscount, options)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | -### FIXED\_PRICE\_SOURCES - -Signature: - -```typescript -static FIXED_PRICE_SOURCES: () => Uint8Array; -``` diff --git a/docs/classes/humanfriendlysource.md b/docs/classes/humanfriendlyread.md similarity index 57% rename from docs/classes/humanfriendlysource.md rename to docs/classes/humanfriendlyread.md index 863375f..4998eae 100644 --- a/docs/classes/humanfriendlysource.md +++ b/docs/classes/humanfriendlyread.md @@ -1,24 +1,24 @@ -# Class HumanFriendlySource +# Class HumanFriendlyRead The generator of friendly human readable source. -Parse a State to a more human readable form, so feel free to use it and make more friendly anyone that want to read the script that is being used in the code. +Parse an State/Script to a more human readable form, making easier to understand. This form allow to the users read exactly what the Script is made for, like the conditions, values used, etc. Also, anyone can learn to write their own scripts if use the Human Form to see the output for each combination that they made. If you find an issue or you want to propose a better way to show a specific script or opcodes, please feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues Signature: ```typescript -class HumanFriendlySource +class HumanFriendlyRead ``` ## Static Methods | Method | Description | | --- | --- | -| [get(\_state, \_config)](./humanfriendlysource.md#get-method-static-1) | | -| [prettify(\_text, \_config)](./humanfriendlysource.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis | +| [get(\_state, \_config)](./humanfriendlyread.md#get-method-static-1) | Obtain the friendly output from an script. | +| [prettify(\_text, \_config)](./humanfriendlyread.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis | ## Static Method Details @@ -26,6 +26,8 @@ class HumanFriendlySource ### get(\_state, \_config) +Obtain the friendly output from an script. + Signature: ```typescript @@ -36,13 +38,14 @@ static get(_state: StateConfig, _config?: Config): string; | Parameter | Type | Description | | --- | --- | --- | -| \_state | [StateConfig](../interfaces/stateconfig.md) | | -| \_config | [Config](../types/config.md) | | +| \_state | [StateConfig](../interfaces/stateconfig.md) | The state or script to generate the friendly version | +| \_config | [Config](../types/config.md) | The configuration that will run the generator. | Returns: `string` + ### prettify(\_text, \_config) diff --git a/docs/classes/increasingprice.md b/docs/classes/incdecprice.md similarity index 61% rename from docs/classes/increasingprice.md rename to docs/classes/incdecprice.md index e696671..a0f2921 100644 --- a/docs/classes/increasingprice.md +++ b/docs/classes/incdecprice.md @@ -1,21 +1,21 @@ -# Class IncreasingPrice +# Class IncDecPrice -- A sub-class of PriceCurve for creating an linear Increasing sale type. +- A sub-class of PriceCurve for creating an linear Increasing or Decreasing sale type. - Price starts at 'startPrice' and goes to 'endPrice' over the span of the sale's duration. Signature: ```typescript -class IncreasingPrice extends PriceCurve +class IncDecPrice extends PriceCurve ``` ## Example ```typescript -//For generating a Increasing Price sale type pass in the required arguments to the constructor. +//For generating a Increasing/Decreasing Price sale type pass in the required arguments to the constructor. const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTimestamp) ``` @@ -24,7 +24,7 @@ const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTi | Property | Type | Description | | --- | --- | --- | -| [INC\_PRICE\_SOURCES](./increasingprice.md#INC_PRICE_SOURCES-property-static) | `() => Uint8Array` | | +| [INC\_DEC\_PRICE\_SOURCES](./incdecprice.md#INC_DEC_PRICE_SOURCES-property-static) | `(isInc: boolean) => Uint8Array` | | ## Properties @@ -38,16 +38,16 @@ const saleType = new IncreasingPrice(startPrice, endPrice, startTimestamp, endTi | Method | Description | | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase.

*Inherited from [PriceCurve.applyExtraTimeDiscount()](./pricecurve.md#applyExtraTimeDiscount-method-1)* | -| [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | +| [applyTierDiscount(tierAddress, tierDiscount, options)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | ## Static Property Details - + -### INC\_PRICE\_SOURCES +### INC\_DEC\_PRICE\_SOURCES Signature: ```typescript -static INC_PRICE_SOURCES: () => Uint8Array; +static INC_DEC_PRICE_SOURCES: (isInc: boolean) => Uint8Array; ``` diff --git a/docs/classes/itierv2.md b/docs/classes/itierv2.md index da8a66d..f14b211 100644 --- a/docs/classes/itierv2.md +++ b/docs/classes/itierv2.md @@ -1,18 +1,28 @@ # Class ITierV2 -Class to interact with ITierV2 contracts +Class to interact with any Rain Tier contract i.e ITierV2 contracts -Generic class to interact with any ITierV2 contract in chain with the basic methods and functions. +Generic class to interact with any ITierV2 contract in chain with the basic methods and functions. `ITierV2` is a simple interface that contracts can implement to provide membership lists for other contracts. And all other Rain Tier contract inherit form it. This class can be used to interact with any contract that implement the ITierV2 interface in their code, but does not know if the contract has implemented the code. -`ITierV2` is a simple interface that contracts can implement to provide membership lists for other contracts. +Signature: -This class can be used to interact with any contract that implement the ITierV2 interface in their code, but does not know if the contract has implemented the code. +```typescript +class ITierV2 extends FactoryContract +``` + +## Example -Signature: ```typescript -class ITierV2 extends TierContract +import { ITierV2 } from "rain-sdk"; + +// to instantiate a new ethers.js ITierV2 contract from this class pass the contract address and signer +const newTier = new ITierV2(tierAddress, signer); + +// to connect to an existing ITierV2 instance with a new signer +newTier.connect(signer); + ``` ## Static Properties @@ -29,10 +39,10 @@ class ITierV2 extends TierContract | Property | Type | Description | | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [connect](./itierv2.md#connect-property) | `(signer: Signer) => ITierV2` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | +| [connect](./itierv2.md#connect-property) | `(signer: Signer) => ITierV2` | Conncect to this ITierV2 contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts. | +| [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`. | +| [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually. | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | ## Static Methods @@ -48,7 +58,7 @@ class ITierV2 extends TierContract | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./itierv2.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. | ## Property Details @@ -56,7 +66,7 @@ class ITierV2 extends TierContract ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this ITierV2 contract with another signer *Overrides [RainContract.connect](./raincontract.md#connect-property)* @@ -65,3 +75,71 @@ Connect the current contract instance to a new ethers signer. ```typescript readonly connect: (signer: Signer) => ITierV2; ``` + + + +### levels + +All the contract tier levels availables in all ITier contracts. + +Signature: + +```typescript +readonly levels: typeof Tier; +``` + + + +### report + +A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`. + +There are 9 possible tier, starting with tier 0 for `0` offset or "never held any tier" and then working up through 8x 4 byte offsets to the full 256 bits. + +Signature: + +```typescript +readonly report: (account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; +``` + + + +### reportTimeForTier + +Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually. + +The return value is a `uint256` for gas efficiency but the values will be bounded by `type(uint32).max` as no single tier can report a value higher than this. + +Signature: + +```typescript +readonly reportTimeForTier: (account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; +``` + +## Method Details + + + +### currentTier(account, timestamp) + +Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. + +Signature: + +```typescript +currentTier(account: string, timestamp?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| account | `string` | address to check the current tier | +| timestamp | `number` | (optional) check the level tier of an account with respect to a specific timestamp | + +Returns: + +`Promise` + +current tier level of the account + diff --git a/docs/classes/matchmaker.md b/docs/classes/matchmaker.md new file mode 100644 index 0000000..90c8a0d --- /dev/null +++ b/docs/classes/matchmaker.md @@ -0,0 +1,162 @@ + +# Class MatchMaker + +A class for finding matches among orders off-chain in a simulated environment + +Signature: + +```typescript +class MatchMaker extends OrderbookSimulation +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./orderbooksimulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Inherited from [OrderbookSimulation.address](./orderbooksimulation.md#address-property)* | +| [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | +| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [clearedCounterPartyFunds](../interfaces/clearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string

*Inherited from [OrderbookSimulation.clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property)* | +| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [clearedFunds](../interfaces/clearedfunds.md) | The property that stores all the data of an order's total cleared amount,

*Inherited from [OrderbookSimulation.clearedFunds](./orderbooksimulation.md#clearedFunds-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [foundMatches](./matchmaker.md#foundMatches-property) |
{
    orderA: string;
    orderB: string;
}[]
| The type of stores all the found matches | +| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Inherited from [OrderbookSimulation.OpFns](./orderbooksimulation.md#OpFns-property)* | +| [orderForcast](./matchmaker.md#orderForcast-property) | [forcast](../interfaces/forcast.md) | The forcast property of the matchmaker | +| [orders](./orderbooksimulation.md#orders-property) | [orders](../interfaces/orders.md) | The property that stores all the data of the class's orders,

*Inherited from [OrderbookSimulation.orders](./orderbooksimulation.md#orders-property)* | +| [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | +| [sender](./orderbooksimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [OrderbookSimulation.sender](./orderbooksimulation.md#sender-property)* | +| [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | +| [vaults](./orderbooksimulation.md#vaults-property) | [vaults](../interfaces/vaults.md) | The property that stores all the data of the class's vaults

*Inherited from [OrderbookSimulation.vaults](./orderbooksimulation.md#vaults-property)* | + +## Methods + +| Method | Description | +| --- | --- | +| [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | +| [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | +| [addOrder(order)](./matchmaker.md#addOrder-method-1) | Method that inherits from the parent class addOrder and after perfroming that will execute orderEval method

*Overrides [OrderbookSimulation.addOrder()](./orderbooksimulation.md#addOrder-method-1)* | +| [clear(a, b, bountyConfig, timestamp, blockNumber)](./orderbooksimulation.md#clear-method-1) | Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class

*Inherited from [OrderbookSimulation.clear()](./orderbooksimulation.md#clear-method-1)* | +| [deposit(sender, tokenAddress, vaultId, units, tokenDecimals)](./orderbooksimulation.md#deposit-method-1) | Method to dposit some units of token of tokenAddress into the vaultId of the sender

*Inherited from [OrderbookSimulation.deposit()](./orderbooksimulation.md#deposit-method-1)* | +| [makeMatch(bountyConfig)](./matchmaker.md#makeMatch-method-1) | The main method to perform matchmaking and find matches among orders | +| [orderEval(order, timestamp, blockNumber)](./matchmaker.md#orderEval-method-1) | Method to evaluate and forcast the order's script | +| [removeOrder(order)](./orderbooksimulation.md#removeOrder-method-1) | Method to remove an order from the class's orders

*Inherited from [OrderbookSimulation.removeOrder()](./orderbooksimulation.md#removeOrder-method-1)* | +| [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | +| [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property

*Inherited from [vmSimulation.setContractAddress()](./vmsimulation.md#setContractAddress-method-1)* | +| [setScript(script)](./vmsimulation.md#setScript-method-1) | Method to set the class script

*Inherited from [vmSimulation.setScript()](./vmsimulation.md#setScript-method-1)* | +| [setSender(senderAddress)](./vmsimulation.md#setSender-method-1) | Method to set the class sender property

*Inherited from [vmSimulation.setSender()](./vmsimulation.md#setSender-method-1)* | +| [withdraw(sender, tokenAddress, vaultId, units, tokenDecimals)](./orderbooksimulation.md#withdraw-method-1) | Method to withdraw some units of token of tokenAddress from VaultId of the sender

*Inherited from [OrderbookSimulation.withdraw()](./orderbooksimulation.md#withdraw-method-1)* | + +## Property Details + + + +### foundMatches + +The type of stores all the found matches + +Signature: + +```typescript +foundMatches: { + orderA: string; + orderB: string; + }[]; +``` + + + +### orderForcast + +The forcast property of the matchmaker + +Signature: + +```typescript +orderForcast: forcast; +``` + +## Method Details + + + +### addOrder(order) + +Method that inherits from the parent class addOrder and after perfroming that will execute orderEval method + +*Overrides [OrderbookSimulation.addOrder()](./orderbooksimulation.md#addOrder-method-1)* + +Signature: + +```typescript +addOrder(order: order): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | [order](../interfaces/order.md) | the order to be added | + +Returns: + +`Promise` + +void + + + +### makeMatch(bountyConfig) + +The main method to perform matchmaking and find matches among orders + +Signature: + +```typescript +makeMatch(bountyConfig: bountyConfig): Promise<{ + orderA: string; + orderB: string; + }[]>; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| bountyConfig | [bountyConfig](../interfaces/bountyconfig.md) | the BountyConfig of this matchmaker class | + +Returns: + +`Promise<{ + orderA: string; + orderB: string; + }[]>` + + + + +### orderEval(order, timestamp, blockNumber) + +Method to evaluate and forcast the order's script + +Signature: + +```typescript +orderEval(order: order, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | [order](../interfaces/order.md) | the order to be evaluated | +| timestamp | `number` | | +| blockNumber | `number` | | + +Returns: + +`Promise` + +void + diff --git a/docs/classes/noticeboard.md b/docs/classes/noticeboard.md index f008c1e..2628273 100644 --- a/docs/classes/noticeboard.md +++ b/docs/classes/noticeboard.md @@ -47,7 +47,7 @@ const tx = await notice.createNotices([noticeArg]); | Property | Type | Description | | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [connect](./noticeboard.md#connect-property) | `(signer: Signer) => NoticeBoard` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./noticeboard.md#connect-property) | `(signer: Signer) => NoticeBoard` | Conncect to this Noticeboard contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [createNotices](./noticeboard.md#createNotices-property) | `(notices: NoticeStruct[], overrides?: TxOverrides) => Promise` | Anyone can create notices about some subject. The notice is opaque bytes. The indexer/GUI is expected to understand the context to decode/interpret it. The indexer/GUI is strongly recommended to filter out untrusted content. | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | @@ -101,7 +101,7 @@ protected static readonly nameBookReference: string; ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this Noticeboard contract with another signer *Overrides [RainContract.connect](./raincontract.md#connect-property)* diff --git a/docs/classes/orderbook.md b/docs/classes/orderbook.md index 06643e5..f8c6e43 100644 --- a/docs/classes/orderbook.md +++ b/docs/classes/orderbook.md @@ -1,7 +1,7 @@ # Class OrderBook -A class for calling method on a OrderBook. +A class for calling method on a Rain OrderBook contract. This class provides an easy way to interact with the OrderBook contract. @@ -17,6 +17,8 @@ class OrderBook extends RainContract ```typescript import { OrderBook } from 'rain-sdk' +const orderBook = await Orderbook.get(signer); +or const orderBook = new OrderBook(address, signer); const addOrderArg = { @@ -36,7 +38,7 @@ const tx = await orderBook.addOrder(addOrderArg); | Property | Type | Description | | --- | --- | --- | -| [get](./orderbook.md#get-property-static) | `(signer: Signer) => Promise` | Get the OrderBook instance

The function ask to the provider inside of the ethers signer what is the chain identifier to get the address in this chain. | +| [get](./orderbook.md#get-property-static) | `(signer: Signer) => Promise` | Get the OrderBook instance

The function ask to the provider inside of the ethers signer what is the chain identifier to get the address of the Orderbook Contract in this chain and connect to it. | | [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | | [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | | [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | @@ -47,16 +49,16 @@ const tx = await orderBook.addOrder(addOrderArg); | Property | Type | Description | | --- | --- | --- | -| [addOrder](./orderbook.md#addOrder-property) | `(orderConfig_: OrderConfig, overrides?: TxOverrides) => Promise` | | +| [addOrder](./orderbook.md#addOrder-property) | `(orderConfig_: OrderConfig, overrides?: TxOverrides) => Promise` | Adds an order config for signer (as the owner) into the Orderbook | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [clear](./orderbook.md#clear-property) | `(a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: TxOverrides) => Promise` | | -| [connect](./orderbook.md#connect-property) | `(signer: Signer) => OrderBook` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [deposit](./orderbook.md#deposit-property) | `(config_: DepositConfig, overrides?: TxOverrides) => Promise` | | -| [fnPtrs](./orderbook.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [removeOrder](./orderbook.md#removeOrder-property) | `(order_: Order, overrides?: TxOverrides) => Promise` | | +| [clear](./orderbook.md#clear-property) | `(a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: TxOverrides) => Promise` | Clears 2 matching order against each other, a\_ inputToken must match to b\_ outputToken and a\_ outputToken must match to b\_ inputToken. Order a\_ clears into Order b\_ and vice versa. The difference of the clearing amounts will go into the bounty's vaults and if any of them are negative then the transaction will revert | +| [connect](./orderbook.md#connect-property) | `(signer: Signer) => OrderBook` | Connect to this Orderbook instance with a new signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [deposit](./orderbook.md#deposit-property) | `(config_: DepositConfig, overrides?: TxOverrides) => Promise` | Allows the sender to deposit any tokens into their own vaults. The deposit will be 'config\_.amount' of the 'config\_.token' into 'config\_.vaultId' | +| [fnPtrs](./orderbook.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | +| [removeOrder](./orderbook.md#removeOrder-property) | `(order_: Order, overrides?: TxOverrides) => Promise` | Removes an order from the Orderbook completely. | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [storageOpcodesRange](./orderbook.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [withdraw](./orderbook.md#withdraw-property) | `(config_: WithdrawConfig, overrides?: TxOverrides) => Promise` | | +| [storageOpcodesRange](./orderbook.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for sale's storage opcodes | +| [withdraw](./orderbook.md#withdraw-property) | `(config_: WithdrawConfig, overrides?: TxOverrides) => Promise` | Allows the sender to withdraw any tokens from their own vaults. Notably if the amount is less than the current vault balance then the vault will be cleared to 0 rather than the withdraw transaction reverting. The withdraw will be 'config\_.amount' of the 'config\_.token' from 'config\_.vaultId' | ## Static Methods @@ -78,7 +80,7 @@ const tx = await orderBook.addOrder(addOrderArg); Get the OrderBook instance -The function ask to the provider inside of the ethers signer what is the chain identifier to get the address in this chain. +The function ask to the provider inside of the ethers signer what is the chain identifier to get the address of the Orderbook Contract in this chain and connect to it. Signature: @@ -108,7 +110,7 @@ protected static readonly nameBookReference: string; All the opcodes avaialbles in the OrderBook contract. -This expose all the standard opcodes along with the specific opcodes of the OrderBook. +This expose all the standard opcodes along with the specific local OrderBook opcodes. Signature: @@ -122,6 +124,8 @@ static Opcodes: OrderBookOpcodes; ### addOrder +Adds an order config for signer (as the owner) into the Orderbook + Signature: ```typescript @@ -132,6 +136,8 @@ readonly addOrder: (orderConfig_: OrderConfig, overrides?: TxOverrides) => Promi ### clear +Clears 2 matching order against each other, a\_ inputToken must match to b\_ outputToken and a\_ outputToken must match to b\_ inputToken. Order a\_ clears into Order b\_ and vice versa. The difference of the clearing amounts will go into the bounty's vaults and if any of them are negative then the transaction will revert + Signature: ```typescript @@ -142,7 +148,7 @@ readonly clear: (a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: ### connect -Connect the current contract instance to a new ethers signer. +Connect to this Orderbook instance with a new signer *Overrides [RainContract.connect](./raincontract.md#connect-property)* @@ -156,6 +162,8 @@ readonly connect: (signer: Signer) => OrderBook; ### deposit +Allows the sender to deposit any tokens into their own vaults. The deposit will be 'config\_.amount' of the 'config\_.token' into 'config\_.vaultId' + Signature: ```typescript @@ -166,6 +174,8 @@ readonly deposit: (config_: DepositConfig, overrides?: TxOverrides) => PromiseSignature: ```typescript @@ -176,6 +186,8 @@ readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; ### removeOrder +Removes an order from the Orderbook completely. + Signature: ```typescript @@ -186,6 +198,8 @@ readonly removeOrder: (order_: Order, overrides?: TxOverrides) => PromiseSignature: ```typescript @@ -196,6 +210,8 @@ readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => PromiseSignature: ```typescript diff --git a/docs/classes/orderbooksimulation.md b/docs/classes/orderbooksimulation.md new file mode 100644 index 0000000..3428213 --- /dev/null +++ b/docs/classes/orderbooksimulation.md @@ -0,0 +1,272 @@ + +# Class OrderbookSimulation + +A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. or to be used to perform off-chain matchmaking based on. + +Signature: + +```typescript +class OrderbookSimulation extends vmSimulation +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./orderbooksimulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | +| [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | +| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [clearedCounterPartyFunds](../interfaces/clearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string | +| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [clearedFunds](../interfaces/clearedfunds.md) | The property that stores all the data of an order's total cleared amount, | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Overrides [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [orders](./orderbooksimulation.md#orders-property) | [orders](../interfaces/orders.md) | The property that stores all the data of the class's orders, | +| [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | +| [sender](./orderbooksimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* | +| [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | +| [vaults](./orderbooksimulation.md#vaults-property) | [vaults](../interfaces/vaults.md) | The property that stores all the data of the class's vaults | + +## Methods + +| Method | Description | +| --- | --- | +| [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | +| [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | +| [addOrder(order)](./orderbooksimulation.md#addOrder-method-1) | Method to submit an order into the class orders | +| [clear(a, b, bountyConfig, timestamp, blockNumber)](./orderbooksimulation.md#clear-method-1) | Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class | +| [deposit(sender, tokenAddress, vaultId, units, tokenDecimals)](./orderbooksimulation.md#deposit-method-1) | Method to dposit some units of token of tokenAddress into the vaultId of the sender | +| [removeOrder(order)](./orderbooksimulation.md#removeOrder-method-1) | Method to remove an order from the class's orders | +| [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | +| [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property

*Inherited from [vmSimulation.setContractAddress()](./vmsimulation.md#setContractAddress-method-1)* | +| [setScript(script)](./vmsimulation.md#setScript-method-1) | Method to set the class script

*Inherited from [vmSimulation.setScript()](./vmsimulation.md#setScript-method-1)* | +| [setSender(senderAddress)](./vmsimulation.md#setSender-method-1) | Method to set the class sender property

*Inherited from [vmSimulation.setSender()](./vmsimulation.md#setSender-method-1)* | +| [withdraw(sender, tokenAddress, vaultId, units, tokenDecimals)](./orderbooksimulation.md#withdraw-method-1) | Method to withdraw some units of token of tokenAddress from VaultId of the sender | + +## Property Details + + + +### address + +The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string. + +*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* + +Signature: + +```typescript +address: string; +``` + + + +### clearedCounterPartyFunds + +The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string + +Signature: + +```typescript +clearedCounterPartyFunds: clearedCounterPartyFunds; +``` + + + +### clearedFunds + +The property that stores all the data of an order's total cleared amount, + +Signature: + +```typescript +clearedFunds: clearedFunds; +``` + + + +### OpFns + +Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. + +*Overrides [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* + +Signature: + +```typescript +protected OpFns: FnPtrs; +``` + + + +### orders + +The property that stores all the data of the class's orders, + +Signature: + +```typescript +orders: orders; +``` + + + +### sender + +A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string. + +*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* + +Signature: + +```typescript +sender: string; +``` + + + +### vaults + +The property that stores all the data of the class's vaults + +Signature: + +```typescript +vaults: vaults; +``` + +## Method Details + + + +### addOrder(order) + +Method to submit an order into the class orders + +Signature: + +```typescript +addOrder(order: order): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | [order](../interfaces/order.md) | the order to add | + +Returns: + +`void` + +void + + + +### clear(a, b, bountyConfig, timestamp, blockNumber) + +Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class + +Signature: + +```typescript +clear(a: order, b: order, bountyConfig: bountyConfig, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| a | [order](../interfaces/order.md) | order A to clear | +| b | [order](../interfaces/order.md) | order B to clear | +| bountyConfig | [bountyConfig](../interfaces/bountyconfig.md) | the BountyConfig type to collect bounties of this clear | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise` + +void + + + +### deposit(sender, tokenAddress, vaultId, units, tokenDecimals) + +Method to dposit some units of token of tokenAddress into the vaultId of the sender + +Signature: + +```typescript +deposit(sender: string, tokenAddress: string, vaultId: string, units: number, tokenDecimals?: number): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| sender | `string` | sender that deposit is done for | +| tokenAddress | `string` | the address of the token | +| vaultId | `string` | the vault ID to deposit | +| units | `number` | amount of token to deposit | +| tokenDecimals | `number` | (optional) decimals of the token, 18 will be used as default | + +Returns: + +`void` + +void + + + +### removeOrder(order) + +Method to remove an order from the class's orders + +Signature: + +```typescript +removeOrder(order: order | string): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| order | `order \| string` | the order to remove | + +Returns: + +`void` + +void + + + +### withdraw(sender, tokenAddress, vaultId, units, tokenDecimals) + +Method to withdraw some units of token of tokenAddress from VaultId of the sender + +Signature: + +```typescript +withdraw(sender: string, tokenAddress: string, vaultId: string, units: number, tokenDecimals?: number): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| sender | `string` | sender that withdraw is done for | +| tokenAddress | `string` | the address of the token | +| vaultId | `string` | the vault ID to withdraw | +| units | `number` | amount of token to withdraw | +| tokenDecimals | `number` | | + +Returns: + +`void` + +void + diff --git a/docs/classes/pricecurve.md b/docs/classes/pricecurve.md index 6b60f09..707965f 100644 --- a/docs/classes/pricecurve.md +++ b/docs/classes/pricecurve.md @@ -23,7 +23,7 @@ class PriceCurve | Method | Description | | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase. | -| [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold. | +| [applyTierDiscount(tierAddress, tierDiscount, options)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold. | ## Property Details @@ -79,14 +79,17 @@ this -### applyTierDiscount(tierAddress, tierDiscount, tierActivation) +### applyTierDiscount(tierAddress, tierDiscount, options) Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold. Signature: ```typescript -applyTierDiscount(tierAddress: string, tierDiscount: number[], tierActivation?: (number | string)[]): PriceCurve; +applyTierDiscount(tierAddress: string, tierDiscount: number[], options?: { + tierActivation?: (number | string)[]; + tierContext?: BigNumber[]; + }): PriceCurve; ``` #### Parameters @@ -95,7 +98,7 @@ applyTierDiscount(tierAddress: string, tierDiscount: number[], tierActivation?: | --- | --- | --- | | tierAddress | `string` | The Tier contract address. | | tierDiscount | `number[]` | An array of each tiers' discount ranging between 0 - 99. | -| tierActivation | `(number \| string)[]` | (optional) An array of number of blocks for each tier that will be the required period of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. | +| options |
{
    tierActivation?: (number \| string)[];
    tierContext?: BigNumber[];
}
| (optional) used for stake tier contracts - (param) tierActivation - An array of number of timestamps for each tier that will be the required period of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. - (param) tierContext - an array of 8 items represtenting stake contract thresholds | Returns: diff --git a/docs/classes/rainjs.md b/docs/classes/rainjs.md deleted file mode 100644 index 2b2f318..0000000 --- a/docs/classes/rainjs.md +++ /dev/null @@ -1,141 +0,0 @@ - -# Class RainJS - -- The javascript version of the RainVM, basically does the same job RainVM does but off-chain. - -Signature: - -```typescript -class RainJS -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_CONTEXT\_](./rainjs.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | Object that contains the CONTEXT opcode functions (i.e. local opcodes) the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. | -| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes | -| [\_STORAGE\_](./rainjs.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes) | -| [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract | -| [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs. | -| [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider. | -| [signer](./rainjs.md#signer-property) | `Signer` | An ethers Signer. | - -## Methods - -| Method | Description | -| --- | --- | -| [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS. | - -## Property Details - - - -### \_CONTEXT\_ - -Object that contains the CONTEXT opcode functions (i.e. local opcodes) the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - -Signature: - -```typescript -protected _CONTEXT_?: ApplyOpFn; -``` - - - -### \_OPCODE\_ - -key/value pair of opcodes and their functions for all standard opcodes - -Signature: - -```typescript -protected readonly _OPCODE_: ApplyOpFn; -``` - - - -### \_STORAGE\_ - -Object that contains the STORAGE opcode functions (i.e. local opcodes) - -Signature: - -```typescript -protected _STORAGE_?: ApplyOpFn; -``` - - - -### contract - -An ethers Contract - -Signature: - -```typescript -contract?: Contract; -``` - - - -### lastState - -The result state of the executed Rainjs. - -Signature: - -```typescript -readonly lastState: BigNumber[]; -``` - - - -### provider - -An ethers provider. - -Signature: - -```typescript -provider?: Provider; -``` - - - -### signer - -An ethers Signer. - -Signature: - -```typescript -signer?: Signer; -``` - -## Method Details - - - -### run(data) - -Method to execute the RainJS. - -Signature: - -```typescript -run(data?: any): Promise; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| data | `any` | (optional) Used as additional info for some local opcodes or custom opcode functions i.e. applyOpFn. | - -Returns: - -`Promise` - -- An array represting the final state of the RainJS stack. - diff --git a/docs/classes/rainjsvm.md b/docs/classes/rainjsvm.md new file mode 100644 index 0000000..3468a24 --- /dev/null +++ b/docs/classes/rainjsvm.md @@ -0,0 +1,297 @@ + +# Class RainJSVM + +- The javascript version of the RainVM, basically does the same job RainVM does but off-chain. + +Signature: + +```typescript +class RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created. | +| [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` | | +| [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` | | +| [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval | +| [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes | +| [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs. | +| [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode | +| [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer. | +| [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` | | +| [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` | | +| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes) | +| [StorageRange](./rainjsvm.md#StorageRange-property) | `number` | Range of available storage variables accessible by eval | +| [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | | + +## Static Methods + +| Method | Description | +| --- | --- | +| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | | + +## Methods + +| Method | Description | +| --- | --- | +| [connect(signer)](./rainjsvm.md#connect-method-1) | | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS. | +| [setContract(contract)](./rainjsvm.md#setContract-method-1) | | + +## Property Details + + + +### applyOpFn + +It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created. + +Signature: + +```typescript +readonly applyOpFn?: FnPtrs; +``` + + + +### constant + + +Signature: + +```typescript +get constant(): (operand: number, data?: any) => void; +``` + + + +### context + + +Signature: + +```typescript +get context(): (operand: number, data?: any) => void; +``` + + + +### ContextRange + +Length of the valid context argument accessible by eval + +Signature: + +```typescript +protected readonly ContextRange?: number; +``` + + + +### debug + +Signature: + +```typescript +get debug(): (operand: number, data?: any) => void; +``` + + + +### fnPtrs + +key/value pair of opcodes and their functions for all standard opcodes + +Signature: + +```typescript +protected readonly fnPtrs: FnPtrs; +``` + + + +### lastState + +The result state of the executed Rainjs. + +Signature: + +```typescript +readonly lastState: BigNumber[]; +``` + + + +### self + +The contract address of the instance of this class used for THIS\_ADDRESS opcode + +Signature: + +```typescript +self?: string; +``` + + + +### signer + +An ethers Signer. + +Signature: + +```typescript +signer?: Signer; +``` + + + +### stack + + +Signature: + +```typescript +get stack(): (operand: number, data?: any) => void; +``` + + + +### storage + + +Signature: + +```typescript +get storage(): (operand: number, data?: any) => Promise; +``` + + + +### StorageOps + +Object that contains the STORAGE opcode functions (i.e. local opcodes) + +Signature: + +```typescript +protected readonly StorageOps?: FnPtrs; +``` + + + +### StorageRange + +Range of available storage variables accessible by eval + +Signature: + +```typescript +protected readonly StorageRange: number; +``` + + + +### zipmap + +Signature: + +```typescript +get zipmap(): (operand: number, data?: any) => Promise; +``` + +## Static Method Details + + + +### opsFromOpMeta(\_opmeta) + +Signature: + +```typescript +static opsFromOpMeta(_opmeta: Map): FnPtrs; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| \_opmeta | `Map` | | + +Returns: + +`FnPtrs` + +## Method Details + + + +### connect(signer) + + +Signature: + +```typescript +connect(signer: Signer): this; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| signer | `Signer` | | + +Returns: + +`this` + + + +### run(data, entrypoint) + +Method to execute the RainJS. + +Signature: + +```typescript +run(data?: any, entrypoint?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| data | `any` | (optional) Used as additional info for some local opcodes or custom opcode functions i.e. applyOpFn. | +| entrypoint | `number` | the index of sources to start eval | + +Returns: + +`Promise` + +- An array represting the final state of the RainJS stack. + + + +### setContract(contract) + + +Signature: + +```typescript +setContract(contract: string | Contract): this; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| contract | `string \| Contract` | | + +Returns: + +`this` + diff --git a/docs/classes/redeemableerc20.md b/docs/classes/redeemableerc20.md index 2235abf..3d9fc34 100644 --- a/docs/classes/redeemableerc20.md +++ b/docs/classes/redeemableerc20.md @@ -52,18 +52,18 @@ await RedeemableERC20.isChild(signer, maybeChildAddress); | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [allowance](./redeemableerc20.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through `transferFrom()`. This is zero by default.

This value changes when `approve()` or `transferFrom()` are called. | -| [approve](./redeemableerc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Sets `amount` as the allowance of `spender` over the caller's tokens. | +| [approve](./redeemableerc20.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Approve spend limit `amount` as the allowance for a `spender` over this tokens. | | [balanceOf](./redeemableerc20.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens owned by `account`. | | [burn](./redeemableerc20.md#burn-property) | `(amount: BigNumberish, overrides?: TxOverrides) => Promise` | Destroys `amount` tokens from the caller, reducing the total supply. Emits a `Transfer` event with `to` set to the zero address.

Requirements: - Caller MUST have at least `amount` tokens. | | [burnFrom](./redeemableerc20.md#burnFrom-property) | `(account: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Destroys `amount` tokens from `account`, deducting from the caller's allowance.

Requirements: - The caller must have allowance for `accounts`'s tokens of at least `amount`. | -| [connect](./redeemableerc20.md#connect-property) | `(signer: Signer) => RedeemableERC20` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./redeemableerc20.md#connect-property) | `(signer: Signer) => RedeemableERC20` | Conncect to this RedeemableErc20 contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [currentPhase](./redeemableerc20.md#currentPhase-property) | `(overrides?: ReadTxOverrides) => Promise` | Impure read-only function to return the "current" phase from internal contract state. Simply wraps `phaseAtBlockNumber` for current values of `phaseBlocks` and `block.number`. | -| [decimals](./redeemableerc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. | -| [decreaseAllowance](./redeemableerc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [decimals](./redeemableerc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) | +| [decreaseAllowance](./redeemableerc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automatically decreases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | | [endDistribution](./redeemableerc20.md#endDistribution-property) | `(distributor: string, overrides?: TxOverrides) => Promise` | The admin can forward or burn all tokens of a single address to end `PHASE_DISTRIBUTING`.

The intent is that during `PHASE_DISTRIBUTING` there is some contract responsible for distributing the tokens.

The admin specifies the distributor to end `PHASE_DISTRIBUTING` and the forwarding address set during initialization is used. If the forwarding address is `0` the rTKN will be burned, otherwise the entire balance of the distributor is forwarded to the nominated address. In practical terms the forwarding allows for escrow depositors to receive a prorata claim on unsold rTKN if they forward it to themselves, otherwise raise participants will receive a greater share of the final escrowed tokens due to the burn reducing the total supply.

The distributor is NOT set during the constructor because it may not exist at that point. For example, Balancer needs the paired erc20 tokens to exist before the trading pool can be built. | | [grantReceiver](./redeemableerc20.md#grantReceiver-property) | `(newReceiver: string, overrides?: TxOverrides) => Promise` | Admin can grant an address receiver rights.

Requirements: - Caller have to be the admin | | [grantSender](./redeemableerc20.md#grantSender-property) | `(newSender: string, overrides?: TxOverrides) => Promise` | Admin can grant an addres sender rights.

Requirements: - Caller have to be the admin | -| [increaseAllowance](./redeemableerc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | 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 https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [increaseAllowance](./redeemableerc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automically increases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | | [isReceiver](./redeemableerc20.md#isReceiver-property) | `(maybeReceiver: string, overrides?: ReadTxOverrides) => Promise` | Check that an address is a receiver. A sender is also a receiver. | | [isSender](./redeemableerc20.md#isSender-property) | `(maybeSender: string, overrides?: ReadTxOverrides) => Promise` | Check that an address is a sender. | | [minimumTier](./redeemableerc20.md#minimumTier-property) | `(overrides?: ReadTxOverrides) => Promise` | The minimum status that a user must hold to receive transfers during `Phase.ZERO`. | @@ -77,8 +77,8 @@ await RedeemableERC20.isChild(signer, maybeChildAddress); | [tier](./redeemableerc20.md#tier-property) | `(overrides?: ReadTxOverrides) => Promise` | Tier contract that produces the report that `minimumTier` is checked against. | | [timeForPhase](./redeemableerc20.md#timeForPhase-property) | `(phaseTimes_: BigNumberish[], phase_: BigNumberish, overrides?: ReadTxOverrides) => Promise` | Pure function to reduce an array of phase times and phase to a specific timestamp. `Phase.ZERO` will always return block `0`. Every other phase will map to a time in `phaseTimes_`. | | [totalSupply](./redeemableerc20.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens in existence. | -| [transfer](./redeemableerc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | -| [transferFrom](./redeemableerc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | +| [transfer](./redeemableerc20.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | +| [transferFrom](./redeemableerc20.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | ## Static Methods @@ -156,7 +156,7 @@ readonly allowance: (owner: string, spender: string, overrides?: ReadTxOverrides ### approve -Sets `amount` as the allowance of `spender` over the caller's tokens. +Approve spend limit `amount` as the allowance for a `spender` over this tokens. Signature: @@ -208,7 +208,7 @@ readonly burnFrom: (account: string, amount: BigNumberish, overrides?: TxOverrid ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this RedeemableErc20 contract with another signer *Overrides [RainContract.connect](./raincontract.md#connect-property)* @@ -234,7 +234,7 @@ readonly currentPhase: (overrides?: ReadTxOverrides) => Promise; ### decimals -Returns the number of decimals used to get its user representation. +Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) Signature: @@ -246,7 +246,7 @@ readonly decimals: (overrides?: ReadTxOverrides) => Promise; ### decreaseAllowance -Atomically decreases the allowance granted to `spender` by the caller. +Automatically decreases the allowance granted to `spender` for this token. This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. @@ -306,7 +306,7 @@ readonly grantSender: (newSender: string, overrides?: TxOverrides) => Promise Promise; ### transfer -Moves `amount` tokens from the caller's account to `to`. +Moves `amount` of tokens from the caller's account to `to`. Requirements: @@ -488,7 +488,7 @@ readonly transfer: (to: string, amount: BigNumberish, overrides?: TxOverrides) = ### transferFrom -Moves `amount` tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. +Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. diff --git a/docs/classes/redeemableerc20claimescrow.md b/docs/classes/redeemableerc20claimescrow.md index 8356b5e..7a62a92 100644 --- a/docs/classes/redeemableerc20claimescrow.md +++ b/docs/classes/redeemableerc20claimescrow.md @@ -46,7 +46,7 @@ const tx = escrow.deposit(amount); | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [changeSale](./redeemableerc20claimescrow.md#changeSale-property) | `(newSale: string) => RedeemableERC20ClaimEscrow` | Get a new instance with a different Sale to interact with the Escrow contract | | [changeToken](./redeemableerc20claimescrow.md#changeToken-property) | `(newToken: string) => RedeemableERC20ClaimEscrow` | Get a new instance with a different ERC20 to interact with the Escrow contract | -| [connect](./redeemableerc20claimescrow.md#connect-property) | `(signer: Signer) => RedeemableERC20ClaimEscrow` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./redeemableerc20claimescrow.md#connect-property) | `(signer: Signer) => RedeemableERC20ClaimEscrow` | Conncect to this RedeemableERC20ClaimEscrow contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [deposit](./redeemableerc20claimescrow.md#deposit-property) | `(amount: BigNumberish, overrides?: TxOverrides) => Promise` | Make a deposit in the Escrow contract. | | [depositPending](./redeemableerc20claimescrow.md#depositPending-property) | `(amount: BigNumberish, overrides?: TxOverrides) => Promise` | Make a deposit pending in the escrow | | [sale](./redeemableerc20claimescrow.md#sale-property) | `string` | The `ISale` contract address that is used to interact with the Escrow contract. | @@ -130,7 +130,7 @@ readonly changeToken: (newToken: string) => RedeemableERC20ClaimEscrow; ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this RedeemableERC20ClaimEscrow contract with another signer *Overrides [RainContract.connect](./raincontract.md#connect-property)* diff --git a/docs/classes/sale.md b/docs/classes/sale.md index 82294de..089c5a8 100644 --- a/docs/classes/sale.md +++ b/docs/classes/sale.md @@ -48,7 +48,7 @@ await existingSale.buy(config_) | [calculateBuy](./sale.md#calculateBuy-property) | `(targetUnits: BigNumberish, overrides?: ReadTxOverrides) => Promise<[BigNumber, BigNumber]>` | Calculates the current reserve price quoted for 1 unit of rTKN. Used internally to process `buy` | | [canLive](./sale.md#canLive-property) | `(overrides?: ReadTxOverrides) => Promise` | Can the sale live? Evals the "can live" script. If a non zero value is returned then the sale can move from pending to active, or remain active. If a zero value is returned the sale can remain pending or move from active to a finalised status. An out of stock (0 remaining units) WILL ALWAYS return `false` without evaluating the script. | | [claimFees](./sale.md#claimFees-property) | `(recipient: string, overrides?: TxOverrides) => Promise` | After a sale ends in success all fees collected for a recipient can be cleared. If the raise is active or fails then fees cannot be claimed as they are set aside in case of refund. A failed raise implies that all buyers should immediately refund and zero fees claimed. | -| [connect](./sale.md#connect-property) | `(signer: Signer) => Sale` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./sale.md#connect-property) | `(signer: Signer) => Sale` | Conncect to this Sale contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [end](./sale.md#end-property) | `(overrides?: TxOverrides) => Promise` | End the sale (move from active to success or fail). This is also done automatically inline with each `buy` call so is optional for anon to call outside of a purchase. - `canLive` MUST return true and sale status must be either `Active`. | | [fnPtrs](./sale.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [getRedeemable](./sale.md#getRedeemable-property) | `(signer?: Signer) => Promise` | Obtain the instance redeemable token from this sale. | @@ -172,7 +172,7 @@ readonly claimFees: (recipient: string, overrides?: TxOverrides) => PromiseSignature: - -```typescript -class SaleDurationInTimestamp -``` - -## Example - - -```typescript -//For generating a canLive StateConfig for the sale pass in the required arguments to the constructor. -const saleDuration = new SaleDuration(startTimestamp, endTimestamp) - -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [constants](./saledurationintimestamp.md#constants-property) | `BigNumberish[]` | | -| [endTimestamp](./saledurationintimestamp.md#endTimestamp-property) | `number` | | -| [sources](./saledurationintimestamp.md#sources-property) | `BytesLike[]` | | -| [startTimestamp](./saledurationintimestamp.md#startTimestamp-property) | `number` | | - -## Methods - -| Method | Description | -| --- | --- | -| [afterMinimumRaise(minimumRaise, erc20decimals)](./saledurationintimestamp.md#afterMinimumRaise-method-1) | A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. | -| [applyExtraTime(extraTime, extraTimeAmount, erc20decimals)](./saledurationintimestamp.md#applyExtraTime-method-1) | Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). | -| [applyOwnership(ownerAddress)](./saledurationintimestamp.md#applyOwnership-method-1) | Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. | - -## Property Details - - - -### constants - -Signature: - -```typescript -constants: BigNumberish[]; -``` - - - -### endTimestamp - -Signature: - -```typescript -readonly endTimestamp: number; -``` - - - -### sources - -Signature: - -```typescript -sources: BytesLike[]; -``` - - - -### startTimestamp - -Signature: - -```typescript -readonly startTimestamp: number; -``` - -## Method Details - - - -### afterMinimumRaise(minimumRaise, erc20decimals) - -A method for the sale to be able to end once the sale hits minimumRaise i.e. the minimum amount that needs to be raiseed so the raises status becomes "success" after raise ends. - -please note that this method should not be used with applyExtraTime as they are opossit of eachother and also the order of using this method along with other methods of this class is important - -Signature: - -```typescript -afterMinimumRaise(minimumRaise: number, erc20decimals?: number): SaleDurationInTimestamp; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| minimumRaise | `number` | the minimumRaise parameter of the raise which is passed at the time of sale's deployment as part of the SaleConfig | -| erc20decimals | `number` | | - -Returns: - -`SaleDurationInTimestamp` - -this - - - -### applyExtraTime(extraTime, extraTimeAmount, erc20decimals) - -Method to apply extra time to the sale duration. if the extra time criteria which is raising more than 'extraTimeAmount' has been met the sale continue for longer (for 'extraTime' more minutes). - -- If the sale has extra time discount, it is important that this method to be applied for canEndStateConfig of the sale. - -Signature: - -```typescript -applyExtraTime(extraTime: number, extraTimeAmount: number, erc20decimals?: number): SaleDurationInTimestamp; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| extraTime | `number` | The amount of time (in minutes) that sale can continue for, if the extra time criteria has been met. | -| extraTimeAmount | `number` | The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. | -| erc20decimals | `number` | | - -Returns: - -`SaleDurationInTimestamp` - -this - - - -### applyOwnership(ownerAddress) - -Method to apply owner to the sale's canLive function. Sale's canLive functions are public and can be triggered by anyone when the criteria is met, but with using this method for sale's canLive StateConfig, it can be configured in a way that only a certain address can actually trigger the sale's start/end functions. - -- applyOwnership will apply the ownership over the StateConfig it is been called for, so the order of call is important to get the desired result. - -Signature: - -```typescript -applyOwnership(ownerAddress: string): SaleDurationInTimestamp; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| ownerAddress | `string` | The address that will be the owner, only this wallet address can start or end a raise if this method is applied. | - -Returns: - -`SaleDurationInTimestamp` - -this - diff --git a/docs/classes/salejs.md b/docs/classes/salejs.md deleted file mode 100644 index dde7f06..0000000 --- a/docs/classes/salejs.md +++ /dev/null @@ -1,58 +0,0 @@ - -# Class SaleJS - -- The javascript version of SaleVM which inherits RainJS with local Sale opcodes. - -Signature: - -```typescript -class SaleJS extends RainJS -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [\_CONTEXT\_](./salejs.md#_CONTEXT_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of CONTEXT opcodes of the sale JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime.

*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* | -| [\_OPCODE\_](./rainjs.md#_OPCODE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJS.\_OPCODE\_](./rainjs.md#_OPCODE_-property)* | -| [\_STORAGE\_](./salejs.md#_STORAGE_-property) | [ApplyOpFn](../interfaces/applyopfn.md) | key/value pair of STORAGE opcodes of the sale JSVM

*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* | -| [contract](./rainjs.md#contract-property) | `Contract` | An ethers Contract

*Inherited from [RainJS.contract](./rainjs.md#contract-property)* | -| [lastState](./rainjs.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJS.lastState](./rainjs.md#lastState-property)* | -| [provider](./rainjs.md#provider-property) | `Provider` | An ethers provider.

*Inherited from [RainJS.provider](./rainjs.md#provider-property)* | -| [signer](./rainjs.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJS.signer](./rainjs.md#signer-property)* | - -## Methods - -| Method | Description | -| --- | --- | -| [run(data)](./rainjs.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJS.run()](./rainjs.md#run-method-1)* | - -## Property Details - - - -### \_CONTEXT\_ - -key/value pair of CONTEXT opcodes of the sale JSVM the required value need to be passed to "run" method as the context array in "data" object. the reason is the CONTEXT opcode is contextual and is passed the VM at runtime. - -*Overrides [RainJS.\_CONTEXT\_](./rainjs.md#_CONTEXT_-property)* - -Signature: - -```typescript -protected _CONTEXT_: ApplyOpFn; -``` - - - -### \_STORAGE\_ - -key/value pair of STORAGE opcodes of the sale JSVM - -*Overrides [RainJS.\_STORAGE\_](./rainjs.md#_STORAGE_-property)* - -Signature: - -```typescript -protected _STORAGE_: ApplyOpFn; -``` diff --git a/docs/classes/salejsvm.md b/docs/classes/salejsvm.md new file mode 100644 index 0000000..880035a --- /dev/null +++ b/docs/classes/salejsvm.md @@ -0,0 +1,87 @@ + +# Class SaleJSVM + +- The javascript version of SaleVM which inherits RainJS with local Sale opcodes. + +Signature: + +```typescript +class SaleJSVM extends RainJSVM +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | +| [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | +| [ContextRange](./salejsvm.md#ContextRange-property) | `` | SaleJSVM valid context length

*Overrides [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | +| [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-property)* | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | +| [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJSVM.lastState](./rainjsvm.md#lastState-property)* | +| [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode

*Inherited from [RainJSVM.self](./rainjsvm.md#self-property)* | +| [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJSVM.signer](./rainjsvm.md#signer-property)* | +| [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.stack](./rainjsvm.md#stack-property)* | +| [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` |

*Inherited from [RainJSVM.storage](./rainjsvm.md#storage-property)* | +| [StorageOps](./salejsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of STORAGE opcodes of the sale JSVM

*Overrides [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | +| [StorageRange](./salejsvm.md#StorageRange-property) | `` | SaleJSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | +| [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | + +## Static Methods + +| Method | Description | +| --- | --- | +| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | *Inherited from [RainJSVM.opsFromOpMeta()](./rainjsvm.md#opsFromOpMeta-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [connect(signer)](./rainjsvm.md#connect-method-1) |

*Inherited from [RainJSVM.connect()](./rainjsvm.md#connect-method-1)* | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | +| [setContract(contract)](./rainjsvm.md#setContract-method-1) |

*Inherited from [RainJSVM.setContract()](./rainjsvm.md#setContract-method-1)* | + +## Property Details + + + +### ContextRange + +SaleJSVM valid context length + +*Overrides [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* + +Signature: + +```typescript +protected readonly ContextRange = SaleContext.length; +``` + + + +### StorageOps + +key/value pair of STORAGE opcodes of the sale JSVM + +*Overrides [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* + +Signature: + +```typescript +protected readonly StorageOps: FnPtrs; +``` + + + +### StorageRange + +SaleJSVM valid storage range + +*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* + +Signature: + +```typescript +protected readonly StorageRange = SaleStorage.length; +``` diff --git a/docs/classes/salesimulation.md b/docs/classes/salesimulation.md new file mode 100644 index 0000000..beb4935 --- /dev/null +++ b/docs/classes/salesimulation.md @@ -0,0 +1,189 @@ + +# Class SaleSimulation + +A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. + +Signature: + +```typescript +class SaleSimulation extends vmSimulation +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./salesimulation.md#address-property) | `string` | The sale address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | +| [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [reserve](./salesimulation.md#reserve-property) | [erc20](../interfaces/erc20.md) | The reserve token of this sale as an erc20 type object | +| [reserveAddress](./salesimulation.md#reserveAddress-property) | `string` | The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string | +| [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | +| [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [vmSimulation.sender](./vmsimulation.md#sender-property)* | +| [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | +| [token](./salesimulation.md#token-property) | [erc20](../interfaces/erc20.md) | The reedeemable token of this sale i.e rTKN which needs to a string number or hex string | +| [tokenAddress](./salesimulation.md#tokenAddress-property) | `string` | The reserve token addres of this sale as an erc20 type object | + +## Methods + +| Method | Description | +| --- | --- | +| [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | +| [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | +| [buy(units, timestamp, blockNumber)](./salesimulation.md#buy-method-1) | Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. requires the class's sender property to be defined. | +| [calculateBuy(units, timestamp, blockNumber)](./salesimulation.md#calculateBuy-method-1) | Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. requires the class's sender property to be defined | +| [canLive(timestamp, blockNumber)](./salesimulation.md#canLive-method-1) | Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. requires the class's sender property to be defined | +| [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | +| [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property

*Inherited from [vmSimulation.setContractAddress()](./vmsimulation.md#setContractAddress-method-1)* | +| [setScript(script)](./vmsimulation.md#setScript-method-1) | Method to set the class script

*Inherited from [vmSimulation.setScript()](./vmsimulation.md#setScript-method-1)* | +| [setSender(senderAddress)](./vmsimulation.md#setSender-method-1) | Method to set the class sender property

*Inherited from [vmSimulation.setSender()](./vmsimulation.md#setSender-method-1)* | + +## Property Details + + + +### address + +The sale address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string. + +*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* + +Signature: + +```typescript +address: string; +``` + + + +### reserve + +The reserve token of this sale as an erc20 type object + +Signature: + +```typescript +reserve: erc20; +``` + + + +### reserveAddress + +The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string + +Signature: + +```typescript +reserveAddress: string; +``` + + + +### token + +The reedeemable token of this sale i.e rTKN which needs to a string number or hex string + +Signature: + +```typescript +token: erc20; +``` + + + +### tokenAddress + +The reserve token addres of this sale as an erc20 type object + +Signature: + +```typescript +tokenAddress: string; +``` + +## Method Details + + + +### buy(units, timestamp, blockNumber) + +Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. requires the class's sender property to be defined. + +after running this method all the defined class's related types/storage will get updated with new values that are result of the JSVM running the script. + +Signature: + +```typescript +buy(units: number, timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| units | `number` | Units to get the calculation for | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise` + +void + + + +### calculateBuy(units, timestamp, blockNumber) + +Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. requires the class's sender property to be defined + +Signature: + +```typescript +calculateBuy(units: number, timestamp?: number, blockNumber?: number): Promise<[BigNumber, BigNumber]>; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| units | `number` | Units to get the calculation for | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise<[BigNumber, BigNumber]>` + +a pair of BigNumbers represting amount and price + + + +### canLive(timestamp, blockNumber) + +Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. requires the class's sender property to be defined + +Signature: + +```typescript +canLive(timestamp?: number, blockNumber?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| timestamp | `number` | (optional) custom timestamp to be used when running the script | +| blockNumber | `number` | (optional) custom block number to be used when running the script | + +Returns: + +`Promise` + +a boolean represting if the sale can live (active status - 1) or not + diff --git a/docs/classes/salescriptfrom.md b/docs/classes/salevmfrom.md similarity index 61% rename from docs/classes/salescriptfrom.md rename to docs/classes/salevmfrom.md index ad10642..85d72a1 100644 --- a/docs/classes/salescriptfrom.md +++ b/docs/classes/salevmfrom.md @@ -1,12 +1,12 @@ -# Class SaleScriptFrom +# Class SaleVmFrom Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) Signature: ```typescript -class SaleScriptFrom +class SaleVmFrom ``` ## Example @@ -23,11 +23,11 @@ const saleConfig = new SaleConfigBuilder(new FixedPrice, new CanLiveInTimestamp) | Property | Type | Description | | --- | --- | --- | -| [buyCapScript](./salescriptfrom.md#buyCapScript-property) | `BuyCap \| StateConfig` | | -| [calculateBuyScript](./salescriptfrom.md#calculateBuyScript-property) | `PriceCurve \| StateConfig` | | -| [canLiveScript](./salescriptfrom.md#canLiveScript-property) | `SaleDurationInTimestamp \| SaleDurationInBlocks \| StateConfig` | | -| [constants](./salescriptfrom.md#constants-property) | `BigNumberish[]` | | -| [sources](./salescriptfrom.md#sources-property) | `BytesLike[]` | | +| [buyCapScript](./salevmfrom.md#buyCapScript-property) | `BuyAmount \| StateConfig` | | +| [calculateBuyScript](./salevmfrom.md#calculateBuyScript-property) | `PriceCurve \| StateConfig` | | +| [canLiveScript](./salevmfrom.md#canLiveScript-property) | `BetweenTimestamps \| BetweenBlocks \| StateConfig` | | +| [constants](./salevmfrom.md#constants-property) | `BigNumberish[]` | | +| [sources](./salevmfrom.md#sources-property) | `BytesLike[]` | | ## Property Details @@ -38,7 +38,7 @@ const saleConfig = new SaleConfigBuilder(new FixedPrice, new CanLiveInTimestamp) Signature: ```typescript -readonly buyCapScript: BuyCap | StateConfig; +readonly buyCapScript: BuyAmount | StateConfig; ``` @@ -58,7 +58,7 @@ readonly calculateBuyScript: PriceCurve | StateConfig; Signature: ```typescript -readonly canLiveScript: SaleDurationInTimestamp | SaleDurationInBlocks | StateConfig; +readonly canLiveScript: BetweenTimestamps | BetweenBlocks | StateConfig; ``` diff --git a/docs/classes/stake.md b/docs/classes/stake.md index 61ba646..e1a142f 100644 --- a/docs/classes/stake.md +++ b/docs/classes/stake.md @@ -8,7 +8,7 @@ This class provides an easy way to interact with Stake contracts. Signature: ```typescript -class Stake extends TierContract +class Stake extends ITierV2 ``` ## Example @@ -29,7 +29,7 @@ await Stake.isChild(signer, maybeChildAddress); | Property | Type | Description | | --- | --- | --- | -| [deploy](./stake.md#deploy-property-static) | `(signer: Signer, args: StakeDeployArgs, overrides?: TxOverrides) => Promise` | Deploys a new Stake. | +| [deploy](./stake.md#deploy-property-static) | `(signer: Signer, stakeConfig: StakeDeployArgs, overrides?: TxOverrides) => Promise` | Deploys a new Stake. | | [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | | [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | | [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | @@ -41,25 +41,25 @@ await Stake.isChild(signer, maybeChildAddress); | Property | Type | Description | | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [allowance](./stake.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | | -| [approve](./stake.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | | -| [balanceOf](./stake.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | | -| [connect](./stake.md#connect-property) | `(signer: Signer) => Stake` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [decimals](./stake.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [decreaseAllowance](./stake.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | | -| [deposit](./stake.md#deposit-property) | `(amount_: BigNumberish, overrides?: TxOverrides) => Promise` | | -| [increaseAllowance](./stake.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [name](./stake.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | +| [allowance](./stake.md#allowance-property) | `(owner: string, spender: string, overrides?: ReadTxOverrides) => Promise` | Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through `transferFrom()`. This is zero by default.

This value changes when `approve()` or `transferFrom()` are called. | +| [approve](./stake.md#approve-property) | `(spender: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Approve spend limit `amount` as the allowance for a `spender` over this tokens. | +| [balanceOf](./stake.md#balanceOf-property) | `(account: string, overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens owned by `account`. | +| [connect](./stake.md#connect-property) | `(signer: Signer) => Stake` | Conncect to this Stake contract with another signer

*Overrides [ITierV2.connect](./itierv2.md#connect-property)* | +| [decimals](./stake.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) | +| [decreaseAllowance](./stake.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automatically decreases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [deposit](./stake.md#deposit-property) | `(amount_: BigNumberish, overrides?: TxOverrides) => Promise` | Method to deposit some 'amount\_' of token (assets) by the signer into the Stake contract which then will result in minting of the stake token (shares) at the current Stake contract ratio and be transfered to the signer's wallet. | +| [increaseAllowance](./stake.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automically increases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | +| [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [ITierV2.levels](./itierv2.md#levels-property)* | +| [name](./stake.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | +| [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [ITierV2.report](./itierv2.md#report-property)* | +| [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually.

*Inherited from [ITierV2.reportTimeForTier](./itierv2.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | -| [supportsInterface](./stake.md#supportsInterface-property) | `(interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise` | | -| [symbol](./stake.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [totalSupply](./stake.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [transfer](./stake.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | | -| [transferFrom](./stake.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | | -| [withdraw](./stake.md#withdraw-property) | `(amount_: BigNumberish, overrides?: TxOverrides) => Promise` | | +| [supportsInterface](./stake.md#supportsInterface-property) | `(interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise` | Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165\#how-interfaces-are-identified\[EIP section\] to learn more about how these ids are created.

This function call must use less than 30 000 gas. | +| [symbol](./stake.md#symbol-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the symbol of the token, usually a shorter version of the name. | +| [totalSupply](./stake.md#totalSupply-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the amount of tokens in existence. | +| [transfer](./stake.md#transfer-property) | `(to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from the caller's account to `to`.

Requirements:

- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. | +| [transferFrom](./stake.md#transferFrom-property) | `(from: string, to: string, amount: BigNumberish, overrides?: TxOverrides) => Promise` | Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance.

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`. | +| [withdraw](./stake.md#withdraw-property) | `(amount_: BigNumberish, overrides?: TxOverrides) => Promise` | Method to Withdraw some amount of already staked token (assets) by the signer from the Stake contract which then will result in burning of 'amount\_' of stake tokens (shares) and will result in a transfer of asset at the current Stake contract ratio to the signer's wallet. | ## Static Methods @@ -74,7 +74,7 @@ await Stake.isChild(signer, maybeChildAddress); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./itierv2.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [ITierV2.currentTier()](./itierv2.md#currentTier-method-1)* | ## Static Property Details @@ -87,7 +87,7 @@ Deploys a new Stake. Signature: ```typescript -static deploy: (signer: Signer, args: StakeDeployArgs, overrides?: TxOverrides) => Promise; +static deploy: (signer: Signer, stakeConfig: StakeDeployArgs, overrides?: TxOverrides) => Promise; ``` @@ -124,6 +124,10 @@ protected static readonly nameBookReference: string; ### allowance +Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through `transferFrom()`. This is zero by default. + +This value changes when `approve()` or `transferFrom()` are called. + Signature: ```typescript @@ -134,6 +138,8 @@ readonly allowance: (owner: string, spender: string, overrides?: ReadTxOverrides ### approve +Approve spend limit `amount` as the allowance for a `spender` over this tokens. + Signature: ```typescript @@ -144,6 +150,8 @@ readonly approve: (spender: string, amount: BigNumberish, overrides?: TxOverride ### balanceOf +Returns the amount of tokens owned by `account`. + Signature: ```typescript @@ -154,9 +162,9 @@ readonly balanceOf: (account: string, overrides?: ReadTxOverrides) => PromiseSignature: @@ -168,6 +176,8 @@ readonly connect: (signer: Signer) => Stake; ### decimals +Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) + Signature: ```typescript @@ -178,6 +188,10 @@ readonly decimals: (overrides?: ReadTxOverrides) => Promise; ### decreaseAllowance +Automatically decreases the allowance granted to `spender` for this token. + +This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. + Signature: ```typescript @@ -188,6 +202,8 @@ readonly decreaseAllowance: (spender: string, subtractedValue: BigNumberish, ove ### deposit +Method to deposit some 'amount\_' of token (assets) by the signer into the Stake contract which then will result in minting of the stake token (shares) at the current Stake contract ratio and be transfered to the signer's wallet. + Signature: ```typescript @@ -198,6 +214,10 @@ readonly deposit: (amount_: BigNumberish, overrides?: TxOverrides) => PromiseSignature: ```typescript @@ -208,6 +228,8 @@ readonly increaseAllowance: (spender: string, addedValue: BigNumberish, override ### name +Returns the name of the token. + Signature: ```typescript @@ -218,6 +240,10 @@ readonly name: (overrides?: ReadTxOverrides) => Promise; ### supportsInterface +Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165\#how-interfaces-are-identified\[EIP section\] to learn more about how these ids are created. + +This function call must use less than 30 000 gas. + Signature: ```typescript @@ -228,6 +254,8 @@ readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverride ### symbol +Returns the symbol of the token, usually a shorter version of the name. + Signature: ```typescript @@ -238,6 +266,8 @@ readonly symbol: (overrides?: ReadTxOverrides) => Promise; ### totalSupply +Returns the amount of tokens in existence. + Signature: ```typescript @@ -248,6 +278,12 @@ readonly totalSupply: (overrides?: ReadTxOverrides) => Promise; ### transfer +Moves `amount` of tokens from the caller's account to `to`. + +Requirements: + +- `to` cannot be the zero address. - the caller must have a balance of at least `amount`. + Signature: ```typescript @@ -258,6 +294,14 @@ readonly transfer: (to: string, amount: BigNumberish, overrides?: TxOverrides) = ### transferFrom +Moves `amount` of tokens from `from` to `to` using the allowance mechanism. `amount` is then deducted from the caller's allowance. + +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`. + Signature: ```typescript @@ -268,6 +312,8 @@ readonly transferFrom: (from: string, to: string, amount: BigNumberish, override ### withdraw +Method to Withdraw some amount of already staked token (assets) by the signer from the Stake contract which then will result in burning of 'amount\_' of stake tokens (shares) and will result in a transfer of asset at the current Stake contract ratio to the signer's wallet. + Signature: ```typescript diff --git a/docs/classes/tiercontract.md b/docs/classes/tiercontract.md deleted file mode 100644 index 35d6118..0000000 --- a/docs/classes/tiercontract.md +++ /dev/null @@ -1,111 +0,0 @@ - -# Class TierContract - -Combine the static methods that are present in factories with the ITier instance methods. Should be use to the TierFactories. - -Signature: - -```typescript -abstract class TierContract extends FactoryContract -``` - -## Static Properties - -| Property | Type | Description | -| --- | --- | --- | -| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | -| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | -| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | -| [nameBookReference](./raincontract.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Inherited from [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [connect](./raincontract.md#connect-property) | `(signer: Signer) => RainContract` | Connect the current contract instance to a new ethers signer.

*Inherited from [RainContract.connect](./raincontract.md#connect-property)* | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts. | -| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`. | -| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | | -| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | - -## Static Methods - -| Method | Description | -| --- | --- | -| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | -| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | -| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | - -## Methods - -| Method | Description | -| --- | --- | -| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. | - -## Property Details - - - -### levels - -All the contract tier levels availables in all ITier contracts. - -Signature: - -```typescript -readonly levels: typeof Tier; -``` - - - -### report - -A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`. - -There are 9 possible tier, starting with tier 0 for `0` offset or "never held any tier" then working up through 8x 4 byte offsets to the full 256 bits. - -Signature: - -```typescript -readonly report: (account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; -``` - - - -### reportTimeForTier - -Signature: - -```typescript -readonly reportTimeForTier: (account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise; -``` - -## Method Details - - - -### currentTier(account, timestamp) - -Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract. - -Signature: - -```typescript -currentTier(account: string, timestamp?: number): Promise; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| account | `string` | address to check the current tier | -| timestamp | `number` | (optional) check the level tier of an account with respect to a specific timestamp | - -Returns: - -`Promise` - -current tier level of the account - diff --git a/docs/classes/verify.md b/docs/classes/verify.md index 1e57da4..f71558f 100644 --- a/docs/classes/verify.md +++ b/docs/classes/verify.md @@ -54,7 +54,7 @@ const existingVerify = new Verify(address, signer) | [BANNER](./verify.md#BANNER-property) | `(overrides?: ReadTxOverrides) => Promise` | Role for `BANNER` | | [BANNER\_ADMIN](./verify.md#BANNER_ADMIN-property) | `(overrides?: ReadTxOverrides) => Promise` | Admin role for `BANNER` | | [callback](./verify.md#callback-property) | `(overrides?: ReadTxOverrides) => Promise` | | -| [connect](./verify.md#connect-property) | `(signer: Signer) => Verify` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [connect](./verify.md#connect-property) | `(signer: Signer) => Verify` | Conncect to this Verify contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [DEFAULT\_ADMIN\_ROLE](./verify.md#DEFAULT_ADMIN_ROLE-property) | `(overrides?: ReadTxOverrides) => Promise` | By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles.

WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. | | [getRoleAdmin](./verify.md#getRoleAdmin-property) | `(role: BytesLike, overrides?: ReadTxOverrides) => Promise` | Get the admin role that controls `role` | | [grantRole](./verify.md#grantRole-property) | `(role: BytesLike, account: string, overrides?: TxOverrides) => Promise` | Grants `role` to `account`.

If `account` had not been already granted `role`, emits a RoleGranted event.

Require that caller have admin role of `role`. | @@ -243,7 +243,7 @@ readonly callback: (overrides?: ReadTxOverrides) => Promise; ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this Verify contract with another signer *Overrides [RainContract.connect](./raincontract.md#connect-property)* diff --git a/docs/classes/verifytier.md b/docs/classes/verifytier.md index 7ab6b0b..571a9ac 100644 --- a/docs/classes/verifytier.md +++ b/docs/classes/verifytier.md @@ -10,7 +10,7 @@ This class provides an easy way to deploy VerifyTiers using Rain's canonical fac Signature: ```typescript -class VerifyTier extends TierContract +class VerifyTier extends ITierV2 ``` ## Example @@ -45,11 +45,10 @@ const report = await existingTier.report(address); | Property | Type | Description | | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [connect](./verifytier.md#connect-property) | `(signer: Signer) => VerifyTier` | Connect the current contract instance to a new ethers signer.

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | -| [levels](./tiercontract.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [TierContract.levels](./tiercontract.md#levels-property)* | -| [report](./tiercontract.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [TierContract.report](./tiercontract.md#report-property)* | -| [reportTimeForTier](./tiercontract.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | *Inherited from [TierContract.reportTimeForTier](./tiercontract.md#reportTimeForTier-property)* | -| [setTier](./verifytier.md#setTier-property) | `(account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise` | It is NOT implemented in VerifyTiers. Always will throw an error | +| [connect](./verifytier.md#connect-property) | `(signer: Signer) => VerifyTier` | Conncect to this VerifyTier contract with another signer

*Overrides [ITierV2.connect](./itierv2.md#connect-property)* | +| [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [ITierV2.levels](./itierv2.md#levels-property)* | +| [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [ITierV2.report](./itierv2.md#report-property)* | +| [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually.

*Inherited from [ITierV2.reportTimeForTier](./itierv2.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | ## Static Methods @@ -65,7 +64,7 @@ const report = await existingTier.report(address); | Method | Description | | --- | --- | | [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | -| [currentTier(account, timestamp)](./tiercontract.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [TierContract.currentTier()](./tiercontract.md#currentTier-method-1)* | +| [currentTier(account, timestamp)](./itierv2.md#currentTier-method-1) | Get the current tier of an `account` in the Tier as an expression between `[0 - 8]`. Tier 0 is that a address has never interact with the Tier Contract.

*Inherited from [ITierV2.currentTier()](./itierv2.md#currentTier-method-1)* | ## Static Property Details @@ -115,24 +114,12 @@ protected static readonly nameBookReference: string; ### connect -Connect the current contract instance to a new ethers signer. +Conncect to this VerifyTier contract with another signer -*Overrides [RainContract.connect](./raincontract.md#connect-property)* +*Overrides [ITierV2.connect](./itierv2.md#connect-property)* Signature: ```typescript readonly connect: (signer: Signer) => VerifyTier; ``` - - - -### setTier - -It is NOT implemented in VerifyTiers. Always will throw an error - -Signature: - -```typescript -readonly setTier: (account: string, endTier: BigNumberish, data: BytesLike, overrides?: TxOverrides) => Promise; -``` diff --git a/docs/classes/vlbp.md b/docs/classes/vlbp.md index 03dabef..afe4e8a 100644 --- a/docs/classes/vlbp.md +++ b/docs/classes/vlbp.md @@ -38,7 +38,7 @@ const saleType = new vLBP(startPrice, startTimestamp, endTimestamp, minimumRaise | Method | Description | | --- | --- | | [applyExtraTimeDiscount(endTimestamp, extraTimeDiscountThreshold, extraTimeDiscount)](./pricecurve.md#applyExtraTimeDiscount-method-1) | Method to apply extra time discount to the sale. if sale's continues into extra time then those addresses that have met the critera of extra time discount which is already purchased a certain amount of rTKN will get some discount on price for their next purchase.

*Inherited from [PriceCurve.applyExtraTimeDiscount()](./pricecurve.md#applyExtraTimeDiscount-method-1)* | -| [applyTierDiscount(tierAddress, tierDiscount, tierActivation)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | +| [applyTierDiscount(tierAddress, tierDiscount, options)](./pricecurve.md#applyTierDiscount-method-1) | Method to apply tiers' discounts to the sale. Tiered addresses will get discount based on the tier they hold.

*Inherited from [PriceCurve.applyTierDiscount()](./pricecurve.md#applyTierDiscount-method-1)* | ## Static Property Details diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 2813b79..53aa468 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -19,13 +19,34 @@ class VM | Method | Description | | --- | --- | +| [addTogether(configs)](./vm.md#addTogether-method-static-1) | Method to add multiple scripts together | +| [and(configs)](./vm.md#and-method-static-1) | Method to and multiple scripts together ie EVERY | +| [beforeAfterBlock(blockNumber, type: "gt" \| "lt" \| "gte" \| "lte")](./vm.md#beforeAfterBlock-method-static-1) | Method to create a simple block number based rule | +| [beforeAfterTime(timestamp, type: "gt" \| "lt" \| "gte" \| "lte")](./vm.md#beforeAfterTime-method-static-1) | Method to create a simple time based rule | | [combiner(config1, config2, options)](./vm.md#combiner-method-static-1) | Combines 2 individual VM scripts | +| [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | +| [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | +| [gt(config1, config2)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | +| [gte(config1, config2)](./vm.md#gte-method-static-1) | Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not | +| [hasAnyTier(tierConfig)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | +| [hasMinTier(tierConfig, tier)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | +| [ifelse(condition, ifStatement, elseStatement)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | +| [isEqual(config1, config2)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | +| [isZero(config)](./vm.md#isZero-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | +| [lt(config1, config2)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | +| [lte(config1, config2)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | +| [max(configs)](./vm.md#max-method-static-1) | Method to get maximum of multiple scripts | +| [min(configs)](./vm.md#min-method-static-1) | Method to get minimum of multiple scripts | +| [multi(configs)](./vm.md#multi-method-static-1) | A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. | +| [mulTogether(configs)](./vm.md#mulTogether-method-static-1) | Method to multiply multiple scripts together | +| [or(configs)](./vm.md#or-method-static-1) | Method to or multiple scripts together ie ANY | | [pair(amountConfig, priceConfig)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | -| [toOwnerMaker(config, ownerAddress, options)](./vm.md#toOwnerMaker-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | -| [toTierDiscounter(config, tierAddress, tierDiscount, options)](./vm.md#toTierDiscounter-method-static-1) | Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. | -| [toTierMultiplier(config, tierAddress, tierMultiplier, options)](./vm.md#toTierMultiplier-method-static-1) | Multiply the result of a VM script based on the holding tier of a tier contract. | -| [toTimeSlicer(configs, times, inBlockNumber)](./vm.md#toTimeSlicer-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | +| [setDiscountForTiers(config, tierAddress, tierDiscount, options)](./vm.md#setDiscountForTiers-method-static-1) | Deducts percentage off of the result of a VM script based on a tier contract. | +| [setMultiplierForTiers(config, tierAddress, tierMultiplier, options)](./vm.md#setMultiplierForTiers-method-static-1) | Multiply the result of a VM script based on a tier contract. | +| [setOwnership(config, ownerAddress, options)](./vm.md#setOwnership-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | +| [setTimers(configs, times, inBlockNumber)](./vm.md#setTimers-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | +| [setValueForTiers(config, tierAddress, tierValues, ascending, options)](./vm.md#setValueForTiers-method-static-1) | Produce different values from the result of a VM script based on a tier contract. | ## Static Property Details @@ -43,6 +64,104 @@ static Opcodes: typeof AllStandardOps; ## Static Method Details + + +### addTogether(configs) + +Method to add multiple scripts together + +Signature: + +```typescript +static addTogether(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to add | + +Returns: + +`StateConfig` + +a + + + +### and(configs) + +Method to and multiple scripts together ie EVERY + +Signature: + +```typescript +static and(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to and | + +Returns: + +`StateConfig` + +a + + + +### beforeAfterBlock(blockNumber, type: "gt" \| "lt" \| "gte" \| "lte") + +Method to create a simple block number based rule + +Signature: + +```typescript +static beforeAfterBlock(blockNumber: number, type: "gt" | "lt" | "gte" | "lte"): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| blockNumber | `number` | the block number to set the rule for | +| type | `"gt" \| "lt" \| "gte" \| "lte"` | type of the check, meaning current block number to be gt, gte, lt, lte than the "blockNumber" | + +Returns: + +`StateConfig` + +A + + + +### beforeAfterTime(timestamp, type: "gt" \| "lt" \| "gte" \| "lte") + +Method to create a simple time based rule + +Signature: + +```typescript +static beforeAfterTime(timestamp: number, type: "gt" | "lt" | "gte" | "lte"): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| timestamp | `number` | the timestamp to set the rule for | +| type | `"gt" \| "lt" \| "gte" \| "lte"` | type of the check, meaning current timestamp to be gt, gte, lt, lte than the "timestamp" | + +Returns: + +`StateConfig` + +A + ### combiner(config1, config2, options) @@ -75,6 +194,30 @@ static combiner(config1: StateConfig, config2: StateConfig, options?: { combined VM script. + + +### constant(value) + +Methdo to create a simple signle value script, ie CONTANT + +Signature: + +```typescript +static constant(value: BigNumberish): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| value | `BigNumberish` | the value | + +Returns: + +`StateConfig` + +a + ### createVMSources(OPerands) @@ -99,6 +242,376 @@ static createVMSources(OPerands: (OPerand | Uint8Array)[]): [Uint8Array]; A source + + +### getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id) + +A method to generate the StateConfig out of EVM assets' opcodes + +Signature: + +```typescript +static getAsset(type: "erc20-balance-of" | "erc20-total-supply" | "snapshot-balance-of" | "snapshot-total-supply" | "erc721-balance-of" | "erc721-owner-of" | "erc1155-balance-of" | "erc1155-balance-of-batch", address: string[], id?: BigNumber[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| type | `"erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch"` | the type of the asset script | +| address | `string[]` | an array of address(es) of the asset(s) contract(s), only IERC20-Balance-of-Batch uses more than 1 address | +| id | `BigNumber[]` | an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id | + +Returns: + +`StateConfig` + +a VM script + + + +### gt(config1, config2) + +Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not + +Signature: + +```typescript +static gt(config1: StateConfig, config2: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | + +Returns: + +`StateConfig` + +a + + + +### gte(config1, config2) + +Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not + +Signature: + +```typescript +static gte(config1: StateConfig, config2: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | + +Returns: + +`StateConfig` + +a + + + +### hasAnyTier(tierConfig) + +Method to check if an address has any tier status or not, i.e if is in tier contract or not + +Signature: + +```typescript +static hasAnyTier(tierConfig: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tierConfig | [StateConfig](../interfaces/stateconfig.md) | the tier report config | + +Returns: + +`StateConfig` + +a VM script + + + +### hasMinTier(tierConfig, tier) + +Method to check if an address has at least the "TIER" status + +Signature: + +```typescript +static hasMinTier(tierConfig: StateConfig, tier: Tier): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| tierConfig | [StateConfig](../interfaces/stateconfig.md) | the tier report config | +| tier | [Tier](../enums/tier.md) | the minimum tier needed to be held | + +Returns: + +`StateConfig` + +a VM script + + + +### ifelse(condition, ifStatement, elseStatement) + +Method to create an if/else script + +Signature: + +```typescript +static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| condition | [StateConfig](../interfaces/stateconfig.md) | the condition script ie the if check statement | +| ifStatement | [StateConfig](../interfaces/stateconfig.md) | the script(statement) if the check passes | +| elseStatement | [StateConfig](../interfaces/stateconfig.md) | the script(statement) if the check fails | + +Returns: + +`StateConfig` + +a + + + +### isEqual(config1, config2) + +Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not + +Signature: + +```typescript +static isEqual(config1: StateConfig, config2: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | + +Returns: + +`StateConfig` + +a + + + +### isZero(config) + +Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not + +Signature: + +```typescript +static isZero(config: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | the script to check | + +Returns: + +`StateConfig` + +a + + + +### lt(config1, config2) + +Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not + +Signature: + +```typescript +static lt(config1: StateConfig, config2: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | + +Returns: + +`StateConfig` + +a + + + +### lte(config1, config2) + +Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not + +Signature: + +```typescript +static lte(config1: StateConfig, config2: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | + +Returns: + +`StateConfig` + +a + + + +### max(configs) + +Method to get maximum of multiple scripts + +Signature: + +```typescript +static max(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to get maximum of | + +Returns: + +`StateConfig` + +a + + + +### min(configs) + +Method to get minimum of multiple scripts + +Signature: + +```typescript +static min(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to get minimum of | + +Returns: + +`StateConfig` + +a + + + +### multi(configs) + +A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. + +Signature: + +```typescript +static multi(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | An array of StateConfigs to combine together and its lengths should be more than 2 (can use VM.pair() method for combining 2 configs - | + +Returns: + +`StateConfig` + +a + + + +### mulTogether(configs) + +Method to multiply multiple scripts together + +Signature: + +```typescript +static mulTogether(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to multiply | + +Returns: + +`StateConfig` + +a + + + +### or(configs) + +Method to or multiple scripts together ie ANY + +Signature: + +```typescript +static or(configs: StateConfig[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to or | + +Returns: + +`StateConfig` + +a + ### pair(amountConfig, priceConfig) @@ -124,21 +637,19 @@ static pair(amountConfig: StateConfig, priceConfig: StateConfig): StateConfig; a - + -### toOwnerMaker(config, ownerAddress, options) +### setDiscountForTiers(config, tierAddress, tierDiscount, options) -Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. - -- please be aware if your script has DUP opcode, as DUP is relative to script and cannot be handled by this method and needs to be dealt with manualy before calling this method. +Deducts percentage off of the result of a VM script based on a tier contract. Signature: ```typescript -static toOwnerMaker(config: StateConfig, ownerAddress: string, options?: { +static setDiscountForTiers(config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { index?: number; - position?: number[]; - notOwnerVar?: StateConfig | number; + tierActivation?: (string | number)[]; + tierContext?: BigNumber[]; }): StateConfig; ``` @@ -147,27 +658,29 @@ static toOwnerMaker(config: StateConfig, ownerAddress: string, options?: { | Parameter | Type | Description | | --- | --- | --- | | config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | -| ownerAddress | `string` | the address that is going to be the owner of the main VM script. | -| options |
{
    index?: number;
    position?: number[];
    notOwnerVar?: StateConfig \| number;
}
| used for additional configuraions: - (param) index - to identify which sources item in config.sources the combination starts at, if not specified, it will be 0. - (param) position - An array representing the positions of config script where notOwnerVar sources (if exists) will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. | +| tierAddress | `string` | the contract address of the tier contract. | +| tierDiscount | `number[]` | an array of 8 items - the discount value (range 0 - 99) of each tier are the 8 items of the array. | +| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the discount, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the discount.(used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. | Returns: `StateConfig` -a VM script. +a VM script - + -### toTierDiscounter(config, tierAddress, tierDiscount, options) +### setMultiplierForTiers(config, tierAddress, tierMultiplier, options) -Deducts percentage off of the result of a VM script based on the holding tier of a tier contract. +Multiply the result of a VM script based on a tier contract. Signature: ```typescript -static toTierDiscounter(config: StateConfig, tierAddress: string, tierDiscount: number[], options?: { +static setMultiplierForTiers(config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { index?: number; tierActivation?: (string | number)[]; + tierContext?: BigNumber[]; }): StateConfig; ``` @@ -177,8 +690,8 @@ static toTierDiscounter(config: StateConfig, tierAddress: string, tierDiscount: | --- | --- | --- | | config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | | tierAddress | `string` | the contract address of the tier contract. | -| tierDiscount | `number[]` | an array of 8 items - the discount value (range 0 - 99) of each tier are the 8 items of the array. | -| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of blocks each tier must hold in order to get the discount, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 blocks to get the discount. | +| tierMultiplier | `number[]` | an array of 8 items - the multiplier value (2 decimals max) of each tier are the 8 items of the array. | +| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the multiplier, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the multiplier.(used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. | Returns: @@ -186,18 +699,21 @@ static toTierDiscounter(config: StateConfig, tierAddress: string, tierDiscount: a VM script - + -### toTierMultiplier(config, tierAddress, tierMultiplier, options) +### setOwnership(config, ownerAddress, options) -Multiply the result of a VM script based on the holding tier of a tier contract. +Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. + +- please be aware if your script has DUP opcode, as DUP is relative to script and cannot be handled by this method and needs to be dealt with manualy before calling this method. Signature: ```typescript -static toTierMultiplier(config: StateConfig, tierAddress: string, tierMultiplier: number[], options?: { +static setOwnership(config: StateConfig, ownerAddress: string, options?: { index?: number; - tierActivation?: (string | number)[]; + position?: number[]; + notOwnerVar?: StateConfig | number; }): StateConfig; ``` @@ -206,26 +722,25 @@ static toTierMultiplier(config: StateConfig, tierAddress: string, tierMultiplier | Parameter | Type | Description | | --- | --- | --- | | config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | -| tierAddress | `string` | the contract address of the tier contract. | -| tierMultiplier | `number[]` | an array of 8 items - the multiplier value (2 decimals max) of each tier are the 8 items of the array. | -| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of blocks each tier must hold in order to get the multiplier, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 blocks to get the multiplier. | +| ownerAddress | `string` | the address that is going to be the owner of the main VM script. | +| options |
{
    index?: number;
    position?: number[];
    notOwnerVar?: StateConfig \| number;
}
| used for additional configuraions: - (param) index - to identify which sources item in config.sources the combination starts at, if not specified, it will be 0. - (param) position - An array representing the positions of config script where notOwnerVar sources (if exists) will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. | Returns: `StateConfig` -a VM script +a VM script. - + -### toTimeSlicer(configs, times, inBlockNumber) +### setTimers(configs, times, inBlockNumber) A method to merge multiple (more than 1) scripts to be executed based on time slices. Signature: ```typescript -static toTimeSlicer(configs: StateConfig[], times: number[], inBlockNumber?: boolean): StateConfig; +static setTimers(configs: StateConfig[], times: number[], inBlockNumber?: boolean): StateConfig; ``` #### Parameters @@ -242,3 +757,36 @@ static toTimeSlicer(configs: StateConfig[], times: number[], inBlockNumber?: boo a VM script + + +### setValueForTiers(config, tierAddress, tierValues, ascending, options) + +Produce different values from the result of a VM script based on a tier contract. + +Signature: + +```typescript +static setValueForTiers(config: StateConfig, tierAddress: string, tierValues: number[], ascending: boolean, options?: { + index?: number; + tierActivation?: (string | number)[]; + tierContext?: BigNumber[]; + finalDecimals?: number; + }): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | +| tierAddress | `string` | the contract address of the tier contract. | +| tierValues | `number[]` | an array of 8 items - the value (6 decimals max) of each tier are the 8 items of the array. | +| ascending | `boolean` | true if the tierValues (argument above) are ascending and false if descending from tier 1 to 8 | +| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
    finalDecimals?: number;
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the TierValues applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the different value, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the respective value. (used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. - (param) finalDecimals produce the final values in this fixed decimals - 0 by deafult | + +Returns: + +`StateConfig` + +a VM script + diff --git a/docs/classes/vmsimulation.md b/docs/classes/vmsimulation.md new file mode 100644 index 0000000..cddf92a --- /dev/null +++ b/docs/classes/vmsimulation.md @@ -0,0 +1,298 @@ + +# Class vmSimulation + +A class for creating a simulation environment for running pure RainVM off-chain using JSVM. + +Signature: + +```typescript +class vmSimulation +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./vmsimulation.md#address-property) | `string` | The contract address of this simulation that the simulation is done for. this is needed for THIS\_ADDRESS opcode simulation and updating storage types after method calls, and needs to be a string number or hex string. | +| [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes | +| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes | +| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes | +| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes. | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types. | +| [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate | +| [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string. | +| [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime | + +## Methods + +| Method | Description | +| --- | --- | +| [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects | +| [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers) | +| [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM | +| [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property | +| [setScript(script)](./vmsimulation.md#setScript-method-1) | Method to set the class script | +| [setSender(senderAddress)](./vmsimulation.md#setSender-method-1) | Method to set the class sender property | + +## Property Details + + + +### address + +The contract address of this simulation that the simulation is done for. this is needed for THIS\_ADDRESS opcode simulation and updating storage types after method calls, and needs to be a string number or hex string. + +Signature: + +```typescript +address?: string; +``` + + + +### blockNumber + +A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime + +Signature: + +```typescript +blockNumber?: number; +``` + + + +### erc1155s + +A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes + +Signature: + +```typescript +erc1155s: erc1155s; +``` + + + +### erc20s + +A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes + +Signature: + +```typescript +erc20s: erc20s; +``` + + + +### erc721s + +A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes + +Signature: + +```typescript +erc721s: erc721s; +``` + + + +### iTiers + +A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes. + +Signature: + +```typescript +iTiers: itiers; +``` + + + +### OpFns + +Opcodes functions body for simulation that use the class properties/types. + +Signature: + +```typescript +protected OpFns: FnPtrs; +``` + + + +### script + +The script to simulate + +Signature: + +```typescript +script?: StateConfig; +``` + + + +### sender + +A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string. + +Signature: + +```typescript +sender?: string; +``` + + + +### timestamp + +A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime + +Signature: + +```typescript +timestamp?: number; +``` + +## Method Details + + + +### addAssets(erc20s, erc721s, erc1155s) + +Method to add assets i.e erc20/721/1155 types objects + +Signature: + +```typescript +addAssets(erc20s?: erc20s, erc721s?: erc721s, erc1155s?: erc1155s): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| erc20s | [erc20s](../interfaces/erc20s.md) | An object of type erc20s | +| erc721s | [erc721s](../interfaces/erc721s.md) | An object of type erc721s | +| erc1155s | [erc1155s](../interfaces/erc1155s.md) | An object of type erc1155s | + +Returns: + +`void` + + + +### addITiers(iTiers) + +Method to add tier contract types objects to the class (iTiers) + +Signature: + +```typescript +addITiers(iTiers: itiers): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| iTiers | [itiers](../interfaces/itiers.md) | An Object of itiers type | + +Returns: + +`void` + + + +### runScript(data, index) + +Method to run the script using JSVM + +Signature: + +```typescript +runScript(data?: any, index?: number): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| data | `any` | (optional) the additional data that needs to be passed at the runtime such as timestamp used in BLOCK\_TIMESTAMP opcode. | +| index | `number` | (optional) the ENTRYPOINT or the index in the script sources to run | + +Returns: + +`Promise` + +An array of BigNumbers, which are the stacked result of the script + + + +### setContractAddress(contractAddress) + +Method to set the class address property + +Signature: + +```typescript +setContractAddress(contractAddress: string): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| contractAddress | `string` | a string number/hex string | + +Returns: + +`void` + + + +### setScript(script) + +Method to set the class script + +Signature: + +```typescript +setScript(script: StateConfig): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| script | [StateConfig](../interfaces/stateconfig.md) | A StateConfig | + +Returns: + +`void` + + + +### setSender(senderAddress) + +Method to set the class sender property + +Signature: + +```typescript +setSender(senderAddress: string): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| senderAddress | `string` | a string number/hex string | + +Returns: + +`void` + diff --git a/docs/enums/combinetiercontext.md b/docs/enums/combinetiercontext.md index cfee3ab..80b83fd 100644 --- a/docs/enums/combinetiercontext.md +++ b/docs/enums/combinetiercontext.md @@ -14,5 +14,5 @@ enum CombineTierContext | Member | Value | Description | | --- | --- | --- | | Account | `0` | 0 or the index of the context array in the combineTier contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the account that report is being call for. | -| length | `1` | length of CombineTier's valid context opcodes | +| Tier | `1` | 1 or the index of the context array in the combineTier contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the tier that reportTimeForTier is being call for. The tier (between 1 to 8) used for tierTimeForTier and it has no use for "ITIERV2\_REPORT" opcode | diff --git a/docs/enums/combinetierstorage.md b/docs/enums/combinetierstorage.md index d9c2c0e..7f85d8d 100644 --- a/docs/enums/combinetierstorage.md +++ b/docs/enums/combinetierstorage.md @@ -13,5 +13,5 @@ enum CombineTierStorage | Member | Value | Description | | --- | --- | --- | -| length | `0` | length of CombineTier's valid storage opcodes | +| length | `0` | length of CombineTier's valid storage opcodes - 0 | diff --git a/docs/enums/emissionserc20context.md b/docs/enums/emissionserc20context.md index 6b1fc53..3ba6a99 100644 --- a/docs/enums/emissionserc20context.md +++ b/docs/enums/emissionserc20context.md @@ -14,5 +14,5 @@ enum EmissionsERC20Context | Member | Value | Description | | --- | --- | --- | | ClaimantAccount | `0` | 0 or the index of the context array in the emissionsERC20 contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the claimant account that report is being call for. | -| length | `1` | length of EmissionsERC20's valid context opcodes | +| length | `1` | length of EmissionsERC20's valid context opcodes - 2 | diff --git a/docs/enums/emissionserc20storage.md b/docs/enums/emissionserc20storage.md index a08797e..da86928 100644 --- a/docs/enums/emissionserc20storage.md +++ b/docs/enums/emissionserc20storage.md @@ -13,5 +13,5 @@ enum EmissionsERC20Storage | Member | Value | Description | | --- | --- | --- | -| length | `0` | length of EmissionsERC20's valid storage opcodes | +| length | `0` | length of EmissionsERC20's valid storage opcodes - 0 | diff --git a/docs/enums/orderbookstroage.md b/docs/enums/orderbookstorage.md similarity index 83% rename from docs/enums/orderbookstroage.md rename to docs/enums/orderbookstorage.md index f75d0e3..94b516f 100644 --- a/docs/enums/orderbookstroage.md +++ b/docs/enums/orderbookstorage.md @@ -1,12 +1,12 @@ -# Enum OrderbookStroage +# Enum OrderbookStorage Enum for operand of the Orderbook's STORAGE opcode Signature: ```typescript -enum OrderbookStroage +enum OrderbookStorage ``` ## Enumeration Members diff --git a/docs/enums/salecontext.md b/docs/enums/salecontext.md index 2de57ef..555ccd2 100644 --- a/docs/enums/salecontext.md +++ b/docs/enums/salecontext.md @@ -14,5 +14,5 @@ enum SaleContext | Member | Value | Description | | --- | --- | --- | | CurrentBuyUnits | `0` | 0 or the index of the context array in the sale contract used as the operand for CONTEXT opcode. operand for CONTEXT opcode to stack the rTKN units/amount of the current buy. | -| length | `1` | length of Sale's valid context opcode | +| length | `1` | length of Sale's valid context opcode - 1 | diff --git a/docs/enums/salestorage.md b/docs/enums/salestorage.md index 99e8015..daaaa9e 100644 --- a/docs/enums/salestorage.md +++ b/docs/enums/salestorage.md @@ -13,7 +13,7 @@ enum SaleStorage | Member | Value | Description | | --- | --- | --- | -| length | `4` | length of Sale's valid storage opcodes | +| length | `4` | length of Sale's valid storage opcodes - 4 | | RemainingUnits | `0` | 0 or the location of the \_remainingUnits property in the sale contract used as the operand for STORAGE opcode operand for STORAGE opcode to stack remaining rTKN units. | | ReserveAddress | `3` | 3 or the location of the \_reserve property in the sale contract used as the operand for STORAGE opcode. operand for STORAGE opcode to stack the address of the reserve token. | | TokenAddress | `2` | 2 or the location of the \_token property in the sale contract used as the operand for STORAGE opcode. operand for STORAGE opcode to stack the address of the rTKN. | diff --git a/docs/index.md b/docs/index.md index 36ef0f5..1454816 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,43 +5,50 @@ | Class | Description | | --- | --- | | [AddressBook](./classes/addressbook.md) | Class related to handle and obtain all the addresses and tools (like Subgraph) deployed by chain and stored in the SDK. | +| [BetweenBlocks](./classes/betweenblocks.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on block number. | +| [BetweenTimestamps](./classes/betweentimestamps.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. | | [BuildReport](./classes/buildreport.md) | A class for creating a report-like script which inherits from CombineTierGenerator | -| [BuyCap](./classes/buycap.md) | The fisrt piece of script in a sale's amount/price pair script which determines the amoount or cap that can be bought. | +| [BuyAmount](./classes/buyamount.md) | The fisrt piece of script in a sale's amount/price pair script which determines the amoount or cap that can be bought. | | [CombineTier](./classes/combinetier.md) | Class for deploying and calling methods on a CombineTier contract, providin easy way to interact with deployed CombineTiers. | | [CombineTierGenerator](./classes/combinetiergenerator.md) | The script generator for generating CombineTier scripts although it is worth mentioning that the usecases would not be only limited to CombineTier contract and can be used for any script. | -| [CombineTierJS](./classes/combinetierjs.md) | - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. | +| [CombineTierJSVM](./classes/combinetierjsvm.md) | - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. | +| [CombinetierSimulation](./classes/combinetiersimulation.md) | A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. | +| [CreateERC20](./classes/createerc20.md) | A class to creat a an ERC20 token with ability to be a faucet. owner can mint extar token if i=the token is not fixed supply. It can be claimed x number of tokens once every number of blocks passed which is defined by the faucet at the time of deployment. | | [EmissionsERC20](./classes/emissionserc20.md) | A class for calling methods on a EmissionsERC20. | -| [EmissionsERC20JS](./classes/emissionserc20js.md) | - The javascript version of EmissionsERC20JS which inherits RainJS with local EmissionsERC20JS opcodes. | +| [EmissionsERC20JSVM](./classes/emissionserc20jsvm.md) | - The javascript version of EmissionsERC20JSVM which inherits RainJS with local EmissionsERC20JSVM opcodes. | +| [EmissionSmiulation](./classes/emissionsmiulation.md) | A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. | | [ERC1155](./classes/erc1155.md) | A generic ERC1155 interface to get connected to any ERC1155 address and make transactions. | +| [ERC1155BalanceTier](./classes/erc1155balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC1155BalancTier witha certain toke ID | | [ERC20](./classes/erc20.md) | A generic ERC20 interface to get connected to any ERC20 address and make transactions. | | [ERC20BalanceTier](./classes/erc20balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalancTier in RainVM version 1.0 | | [ERC721](./classes/erc721.md) | A generic ERC721 interface to get connected to any ERC721 address and make transactions. | | [ERC721BalanceTier](./classes/erc721balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC721BalancTier in RainVM version 1.0 | | [FactoryContract](./classes/factorycontract.md) | All contract factory should use this instead of directly Rain contract to take advantage of specific method to factories | | [FixedPrice](./classes/fixedprice.md) | - A sub-class of PriceCurve for creating a Fixed Price sale type. The price is a constant value over the span of the sale. | -| [HumanFriendlySource](./classes/humanfriendlysource.md) | The generator of friendly human readable source. | -| [IncreasingPrice](./classes/increasingprice.md) | - A sub-class of PriceCurve for creating an linear Increasing sale type. | -| [ITierV2](./classes/itierv2.md) | Class to interact with ITierV2 contracts | +| [HumanFriendlyRead](./classes/humanfriendlyread.md) | The generator of friendly human readable source. | +| [IncDecPrice](./classes/incdecprice.md) | - A sub-class of PriceCurve for creating an linear Increasing or Decreasing sale type. | +| [ITierV2](./classes/itierv2.md) | Class to interact with any Rain Tier contract i.e ITierV2 contracts | | [LinearEmissions](./classes/linearemissions.md) | A linear minting emissions over a period of time. holding more before claiming would result in a more reward. | +| [MatchMaker](./classes/matchmaker.md) | A class for finding matches among orders off-chain in a simulated environment | | [NoticeBoard](./classes/noticeboard.md) | A class for calling method on a NoticeBoard. | -| [OrderBook](./classes/orderbook.md) | A class for calling method on a OrderBook. | +| [OrderBook](./classes/orderbook.md) | A class for calling method on a Rain OrderBook contract. | +| [OrderbookSimulation](./classes/orderbooksimulation.md) | A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. or to be used to perform off-chain matchmaking based on. | | [PriceCurve](./classes/pricecurve.md) | - PriceCurve is an class that all the other sale types (sub-classes) will inherit from. | | [RainContract](./classes/raincontract.md) | //TODO: Add doc | -| [RainJS](./classes/rainjs.md) | - The javascript version of the RainVM, basically does the same job RainVM does but off-chain. | +| [RainJSVM](./classes/rainjsvm.md) | - The javascript version of the RainVM, basically does the same job RainVM does but off-chain. | | [RedeemableERC20](./classes/redeemableerc20.md) | A class for calling methods on a RedeemableERC20. | | [RedeemableERC20ClaimEscrow](./classes/redeemableerc20claimescrow.md) | A class for calling methods on a RedeemableERC20ClaimEscrow. | | [Sale](./classes/sale.md) | A class for deploying and calling methods on a Sale. | -| [SaleDurationInBlocks](./classes/saledurationinblocks.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on block number. | -| [SaleDurationInTimestamp](./classes/saledurationintimestamp.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. | -| [SaleJS](./classes/salejs.md) | - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. | -| [SaleScriptFrom](./classes/salescriptfrom.md) | Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) | +| [SaleJSVM](./classes/salejsvm.md) | - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. | +| [SaleSimulation](./classes/salesimulation.md) | A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. | +| [SaleVmFrom](./classes/salevmfrom.md) | Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) | | [SequentialEmissions](./classes/sequentialemissions.md) | A sequential minting emission, minting can only be done once in every period of time, also can set a max reward with increment over the span of several periods. | | [Stake](./classes/stake.md) | A class for calling methods on a Stake. | -| [TierContract](./classes/tiercontract.md) | Combine the static methods that are present in factories with the ITier instance methods. Should be use to the TierFactories. | | [Verify](./classes/verify.md) | A class for deploying and calling methods on a Verify. | | [VerifyTier](./classes/verifytier.md) | A class for deploying and calling methods on a VerifyTier.

A contract that is `VerifyTier` expects to derive tiers from the time the account was approved by the underlying `Verify` contract. The approval block numbers defer to `State.since` returned from `Verify.state`. | | [vLBP](./classes/vlbp.md) | - A sub-class of PriceCurve for creating an vLBP i.e virtual LBP sale type. | | [VM](./classes/vm.md) | //TODO: Add doc | +| [vmSimulation](./classes/vmsimulation.md) | A class for creating a simulation environment for running pure RainVM off-chain using JSVM. | ## Enumerations @@ -55,22 +62,82 @@ | [EmissionsERC20Context](./enums/emissionserc20context.md) | Enum for operand of the emissionsERC20's CONTEXT opcode | | [EmissionsERC20Storage](./enums/emissionserc20storage.md) | Enum for operand of the EmissionsERC20's STORAGE opcode | | [OrderbookContext](./enums/orderbookcontext.md) | Enum for operand of the Orderbook's CONTEXT opcode | -| [OrderbookStroage](./enums/orderbookstroage.md) | Enum for operand of the Orderbook's STORAGE opcode | +| [OrderbookStorage](./enums/orderbookstorage.md) | Enum for operand of the Orderbook's STORAGE opcode | | [SaleContext](./enums/salecontext.md) | Enum for operand of the sale's CONTEXT opcode | | [SaleStorage](./enums/salestorage.md) | Enum for operand of the sale's Storage Opcodes | | [Tier](./enums/tier.md) | All the contract tier levels availables in all ITier contracts. | | [VerifyStatus](./enums/verifystatus.md) | Summary statuses derived from a `State` by comparing the `Since` times against a specific block number. | +## Functions + +| Function | Description | +| --- | --- | +| [OpAdd(this, state, operand, data)](./variables/opadd_1.md) | | +| [OpAny(this, state, operand, data)](./variables/opany_1.md) | | +| [OpBlockNumber(this, state, operand, data)](./variables/opblocknumber_1.md) | | +| [OpCaller(this, state, operand, data)](./variables/opcaller_1.md) | | +| [OpDiv(this, state, operand, data)](./variables/opdiv_1.md) | | +| [OpEagerIf(this, state, operand, data)](./variables/opeagerif_1.md) | | +| [OpEqualTo(this, state, operand, data)](./variables/opequalto_1.md) | | +| [OpERC1155BalanceOf(this, state, operand, data)](./variables/operc1155balanceof_1.md) | | +| [OpERC1155BalanceOfBatch(this, state, operand, data)](./variables/operc1155balanceofbatch_1.md) | | +| [OpERC20BalanceOf(this, state, operand, data)](./variables/operc20balanceof_1.md) | | +| [OpERC20SnapshotBalanceOfAt(this, state, operand, data)](./variables/operc20snapshotbalanceofat_1.md) | | +| [OpERC20SnapshotTotalSupplyAt(this, state, operand, data)](./variables/operc20snapshottotalsupplyat_1.md) | | +| [OpERC20TotalSupply(this, state, operand, data)](./variables/operc20totalsupply_1.md) | | +| [OpERC721BalanceOf(this, state, operand, data)](./variables/operc721balanceof_1.md) | | +| [OpERC721OwnerOf(this, state, operand, data)](./variables/operc721ownerof_1.md) | | +| [OpEvery(this, state, operand, data)](./variables/opevery_1.md) | | +| [OpExp(this, state, operand, data)](./variables/opexp_1.md) | | +| [OpGreaterThan(this, state, operand, data)](./variables/opgreaterthan_1.md) | | +| [OpIsZero(this, state, operand, data)](./variables/opiszero_1.md) | | +| [OpITierV2Report(this, state, operand, data)](./variables/opitierv2report_1.md) | | +| [OpITierV2ReportTimesForTier(this, state, operand, data)](./variables/opitierv2reporttimesfortier_1.md) | | +| [OpLessThan(this, state, operand, data)](./variables/oplessthan_1.md) | | +| [OpMax(this, state, operand, data)](./variables/opmax_1.md) | | +| [OpMin(this, state, operand, data)](./variables/opmin_1.md) | | +| [OpMod(this, state, operand, data)](./variables/opmod_1.md) | | +| [OpMul(this, state, operand, data)](./variables/opmul_1.md) | | +| [OpSaturatingAdd(this, state, operand, data)](./variables/opsaturatingadd_1.md) | | +| [OpSaturatingDiff(this, state, operand, data)](./variables/opsaturatingdiff_1.md) | | +| [OpSaturatingMul(this, state, operand, data)](./variables/opsaturatingmul_1.md) | | +| [OpSaturatingSub(this, state, operand, data)](./variables/opsaturatingsub_1.md) | | +| [OpScale18(this, state, operand, data)](./variables/opscale18_1.md) | | +| [OpScale18Div(this, state, operand, data)](./variables/opscale18div_1.md) | | +| [OpScale18Mul(this, state, operand, data)](./variables/opscale18mul_1.md) | | +| [OpScaleBy(this, state, operand, data)](./variables/opscaleby_1.md) | | +| [OpScaleN(this, state, operand, data)](./variables/opscalen_1.md) | | +| [OpSelectLte(this, state, operand, data)](./variables/opselectlte_1.md) | | +| [OpSub(this, state, operand, data)](./variables/opsub_1.md) | | +| [OpThisAddress(this, state, operand, data)](./variables/opthisaddress_1.md) | | +| [OpTimestamp(this, state, operand, data)](./variables/optimestamp_1.md) | | +| [OpUpdateTimesForTierRange(this, state, operand, data)](./variables/opupdatetimesfortierrange_1.md) | | + ## Interfaces | Interface | Description | | --- | --- | -| [ApplyOpFn](./interfaces/applyopfn.md) | An interface for creating a key/value pair of custom opcodes functions to override. | +| [bountyConfig](./interfaces/bountyconfig.md) | type for bounty config | | [BuyConfig](./interfaces/buyconfig.md) | The configuration that is need it to buy in the sale | +| [clearedCounterPartyFunds](./interfaces/clearedcounterpartyfunds.md) | type for simulating and storing matched order counterparty cleared funds | +| [clearedFunds](./interfaces/clearedfunds.md) | type for simulating and storing matched order cleared funds | | [EmissionsERC20DeployArgs](./interfaces/emissionserc20deployargs.md) | Everything required by the `EmissionsERC20` constructor. | +| [erc1155](./interfaces/erc1155.md) | type for simulating and storing ERC1155 contract data | +| [erc1155s](./interfaces/erc1155s.md) | type for simulating and storing multiple ERC1155 tokens | +| [erc20](./interfaces/erc20.md) | type for simulating and storing ERC20token contract data | | [ERC20Config](./interfaces/erc20config.md) | Constructor config for standard Open Zeppelin ERC20. | +| [erc20s](./interfaces/erc20s.md) | type for simulating and storing multiple ERC20 tokens | +| [erc721](./interfaces/erc721.md) | type for simulating and storing ERC721 contract data | +| [erc721s](./interfaces/erc721s.md) | type for simulating and storing multiple ERC721 tokens | | [Evidence](./interfaces/evidence.md) | Structure of arbitrary evidence to support any action taken. Priviledged roles are expected to provide evidence just as applicants as an audit trail will be preserved permanently in the logs. | +| [FnPtrs](./interfaces/fnptrs.md) | An interface for creating a key/value pair of opcodes functions to override. | +| [forcast](./interfaces/forcast.md) | Interface for matchmaker forcasting a script | +| [IOpMeta](./interfaces/iopmeta.md) | | +| [itiers](./interfaces/itiers.md) | type for simulating and storing ITier contract data | | [NoticeStruct](./interfaces/noticestruct.md) | | +| [OpFn](./interfaces/opfn.md) | An interface/type of JSVM opcodes' function's body | +| [order](./interfaces/order.md) | type for simulating and storing orderbook Order data | +| [orders](./interfaces/orders.md) | type for simulating and storing multiple orderbook Orders | | [ReadTxOverrides](./interfaces/readtxoverrides.md) | More read about `ReadTxOverrides` that comes from CallOverrides of ethers | | [Receipt](./interfaces/receipt.md) | The receipt that contain the information of the buy | | [RedeemableERC20DeployArgs](./interfaces/redeemableerc20deployargs.md) | Everything required by the `RedeemableERC20` constructor. | @@ -78,9 +145,10 @@ | [SaleDeployArguments](./interfaces/saledeployarguments.md) | Arguments to deploy/create a new Sale | | [SaleRedeemableERC20Config](./interfaces/saleredeemableerc20config.md) | Configuration that will have the Redeemable of the Sale | | [StateConfig](./interfaces/stateconfig.md) | Config required to build a new `State`. | -| [StateJS](./interfaces/statejs.md) | - An interface, StateJS is basically javascript version of 'State' struct in RainVM, although it doesn't need stackLength and argumentsLength to operate. It receives a regular RainVM in the constructor and initiates the stack for it and all opcodes do their operations to the stack. | +| [StateJSVM](./interfaces/statejsvm.md) | - An interface, StateJS is basically javascript version of 'State' struct in RainVM, although it doesn't need stackLength and argumentsLength to operate. It receives a regular RainVM in the constructor and initiates the stack for it and all opcodes do their operations to the stack. | | [StorageOpcodesRange](./interfaces/storageopcodesrange.md) | Interface for accessible by vm storage's slots range available for a contract to be used as local opcodes. | | [TxOverrides](./interfaces/txoverrides.md) | More read about `TxOverrides` that comes from Overrides of ethers | +| [vaults](./interfaces/vaults.md) | type for simulating and storing orderbook Vaults data | | [VerifyDeployArgs](./interfaces/verifydeployargs.md) | Config to initialize a Verify contract with. | | [VerifyState](./interfaces/verifystate.md) | Records the block a verify session reaches each status. If a status is not reached it is left as UNINITIALIZED, i.e. 0xFFFFFFFF. Most accounts will never be banned so most accounts will never reach every status, which is a good thing. | @@ -90,23 +158,43 @@ | --- | --- | | [utils](./namespaces/utils.md) | | +## Variables + +| Variable | Description | +| --- | --- | +| [eighteenZeros](./variables/eighteenzeros.md) | 18 decimals or i.e "DECIMALS" - used for fixed point match | +| [fixedPointDiv](./variables/fixedpointdiv.md) | | +| [fixedPointMul](./variables/fixedpointmul.md) | | +| [OpMeta](./variables/opmeta.md) | | +| [pnp](./variables/pnp.md) | Class for Opcodes number of stack pushes and pops | +| [saturatingAdd](./variables/saturatingadd.md) | | +| [saturatingDiff](./variables/saturatingdiff.md) | | +| [saturatingMul](./variables/saturatingmul.md) | | +| [saturatingSub](./variables/saturatingsub.md) | | +| [scale18](./variables/scale18.md) | | +| [scaleBy](./variables/scaleby.md) | | +| [scaleN](./variables/scalen.md) | | +| [selectLte](./variables/selectlte.md) | | +| [updateTimesForTierRange](./variables/updatetimesfortierrange.md) | | + ## Type Aliases | Type Alias | Description | | --- | --- | | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | -| [BountyConfig](./types/bountyconfig.md) | | +| [BountyConfig](./types/bountyconfig.md) | Type for bounty vaultIds used when in | +| [CallOptions](./types/calloptions.md) | Options for instantiating RainJSVM | +| [ClearStateChange](./types/clearstatechange.md) | Type for changes in state of an orderbook vaults after an successful clear | | [CombineTierDeployArgs](./types/combinetierdeployargs.md) | The argument of the CombineTier. The StateConfig will be deployed as a pointer under VM State Pointer. | | [Config](./types/config.md) | Specific the configuration of the generation method | -| [DepositConfig](./types/depositconfig.md) | | +| [DepositConfig](./types/depositconfig.md) | Type for depositing some token amount into a vault used in | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | -| [OpcodeFN](./types/opcodefn.md) | A type for functions to override the default opcodes functions with it. | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | -| [Order](./types/order.md) | Order | +| [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | -| [OrderConfig](./types/orderconfig.md) | | +| [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner

'inputToken' address - the desired token to be recieved if order clears 'inputVaultId' corresponding inputToken vault 'outputToken' address - the token to be paid if order clears 'outputVaultId' corresponding outputToken vault 'tracking' the tracking state of the order 'vmState' the | | [PrettifyConfig](./types/prettifyconfig.md) | Specific the configuration of the Prettify method. | -| [StakeDeployArgs](./types/stakedeployargs.md) | | +| [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | -| [WithdrawConfig](./types/withdrawconfig.md) | | +| [WithdrawConfig](./types/withdrawconfig.md) | Type for withdrawing some token amount from a vault used in | diff --git a/docs/interfaces/applyopfn.md b/docs/interfaces/applyopfn.md deleted file mode 100644 index 284a0b8..0000000 --- a/docs/interfaces/applyopfn.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface ApplyOpFn - -An interface for creating a key/value pair of custom opcodes functions to override. - -Signature: - -```typescript -interface ApplyOpFn -``` diff --git a/docs/interfaces/bountyconfig.md b/docs/interfaces/bountyconfig.md new file mode 100644 index 0000000..e5b7adb --- /dev/null +++ b/docs/interfaces/bountyconfig.md @@ -0,0 +1,39 @@ + +# Interface bountyConfig + +type for bounty config + +Signature: + +```typescript +interface bountyConfig +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [aVaultId](./bountyconfig.md#aVaultId-property) | `string` | | +| [bVaultId](./bountyconfig.md#bVaultId-property) | `string` | | + +## Property Details + + + +### aVaultId + +Signature: + +```typescript +aVaultId: string; +``` + + + +### bVaultId + +Signature: + +```typescript +bVaultId: string; +``` diff --git a/docs/interfaces/clearedcounterpartyfunds.md b/docs/interfaces/clearedcounterpartyfunds.md new file mode 100644 index 0000000..aa25564 --- /dev/null +++ b/docs/interfaces/clearedcounterpartyfunds.md @@ -0,0 +1,10 @@ + +# Interface clearedCounterPartyFunds + +type for simulating and storing matched order counterparty cleared funds + +Signature: + +```typescript +interface clearedCounterPartyFunds +``` diff --git a/docs/interfaces/clearedfunds.md b/docs/interfaces/clearedfunds.md new file mode 100644 index 0000000..ed78fc0 --- /dev/null +++ b/docs/interfaces/clearedfunds.md @@ -0,0 +1,10 @@ + +# Interface clearedFunds + +type for simulating and storing matched order cleared funds + +Signature: + +```typescript +interface clearedFunds +``` diff --git a/docs/interfaces/erc1155.md b/docs/interfaces/erc1155.md new file mode 100644 index 0000000..1333b75 --- /dev/null +++ b/docs/interfaces/erc1155.md @@ -0,0 +1,10 @@ + +# Interface erc1155 + +type for simulating and storing ERC1155 contract data + +Signature: + +```typescript +interface erc1155 +``` diff --git a/docs/interfaces/erc1155s.md b/docs/interfaces/erc1155s.md new file mode 100644 index 0000000..99e8209 --- /dev/null +++ b/docs/interfaces/erc1155s.md @@ -0,0 +1,10 @@ + +# Interface erc1155s + +type for simulating and storing multiple ERC1155 tokens + +Signature: + +```typescript +interface erc1155s +``` diff --git a/docs/interfaces/erc20.md b/docs/interfaces/erc20.md new file mode 100644 index 0000000..d158718 --- /dev/null +++ b/docs/interfaces/erc20.md @@ -0,0 +1,70 @@ + +# Interface erc20 + +type for simulating and storing ERC20token contract data + +Signature: + +```typescript +interface erc20 +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [balanceOf](./erc20.md#balanceOf-property) |
{
    [wallet: string]: BigNumber;
}
| | +| [decimals](./erc20.md#decimals-property) | `number` | | +| [snapshots](./erc20.md#snapshots-property) |
{
    [id: string]: {
        totalSupplyAt: BigNumber;
        balanceOfAt: {
            [wallet: string]: BigNumber;
        };
    };
}
| | +| [totalSupply](./erc20.md#totalSupply-property) | `BigNumber` | | + +## Property Details + + + +### balanceOf + +Signature: + +```typescript +balanceOf: { + [wallet: string]: BigNumber; + }; +``` + + + +### decimals + +Signature: + +```typescript +decimals: number; +``` + + + +### snapshots + +Signature: + +```typescript +snapshots?: { + [id: string]: { + totalSupplyAt: BigNumber; + balanceOfAt: { + [wallet: string]: BigNumber; + }; + }; + }; +``` + + + +### totalSupply + +Signature: + +```typescript +totalSupply: BigNumber; +``` diff --git a/docs/interfaces/erc20s.md b/docs/interfaces/erc20s.md new file mode 100644 index 0000000..a23f800 --- /dev/null +++ b/docs/interfaces/erc20s.md @@ -0,0 +1,10 @@ + +# Interface erc20s + +type for simulating and storing multiple ERC20 tokens + +Signature: + +```typescript +interface erc20s +``` diff --git a/docs/interfaces/erc721.md b/docs/interfaces/erc721.md new file mode 100644 index 0000000..27fea82 --- /dev/null +++ b/docs/interfaces/erc721.md @@ -0,0 +1,10 @@ + +# Interface erc721 + +type for simulating and storing ERC721 contract data + +Signature: + +```typescript +interface erc721 +``` diff --git a/docs/interfaces/erc721s.md b/docs/interfaces/erc721s.md new file mode 100644 index 0000000..1e12c1c --- /dev/null +++ b/docs/interfaces/erc721s.md @@ -0,0 +1,10 @@ + +# Interface erc721s + +type for simulating and storing multiple ERC721 tokens + +Signature: + +```typescript +interface erc721s +``` diff --git a/docs/interfaces/fnptrs.md b/docs/interfaces/fnptrs.md new file mode 100644 index 0000000..16e052b --- /dev/null +++ b/docs/interfaces/fnptrs.md @@ -0,0 +1,16 @@ + +# Interface FnPtrs + +An interface for creating a key/value pair of opcodes functions to override. + +Signature: + +```typescript +interface FnPtrs extends Record +``` + +## Implements Interfaces + +- FnPtrs + - Record + diff --git a/docs/interfaces/forcast.md b/docs/interfaces/forcast.md new file mode 100644 index 0000000..8c8bda6 --- /dev/null +++ b/docs/interfaces/forcast.md @@ -0,0 +1,10 @@ + +# Interface forcast + +Interface for matchmaker forcasting a script + +Signature: + +```typescript +interface forcast +``` diff --git a/docs/interfaces/iopmeta.md b/docs/interfaces/iopmeta.md new file mode 100644 index 0000000..2ba24e7 --- /dev/null +++ b/docs/interfaces/iopmeta.md @@ -0,0 +1,98 @@ + +# Interface IOpMeta + + +Signature: + +```typescript +interface IOpMeta extends Record +``` + +## Implements Interfaces + +- IOpMeta + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [description](./iopmeta.md#description-property) | `string` | | +| [enum](./iopmeta.md#enum-property) | `number` | | +| [input](./iopmeta.md#input-property) | `string` | | +| [jsvmfn](./iopmeta.md#jsvmfn-property) | [OpFn](./opfn.md) | | +| [name](./iopmeta.md#name-property) | `string` | | +| [pops](./iopmeta.md#pops-property) | `(opcode: number, operand: number) => number` | | +| [pushes](./iopmeta.md#pushes-property) | `(opcode: number, operand: number) => number` | | + +## Property Details + + + +### description + +Signature: + +```typescript +description?: string; +``` + + + +### enum + +Signature: + +```typescript +enum: number; +``` + + + +### input + +Signature: + +```typescript +input: string; +``` + + + +### jsvmfn + +Signature: + +```typescript +jsvmfn: OpFn; +``` + + + +### name + +Signature: + +```typescript +name: string; +``` + + + +### pops + +Signature: + +```typescript +pops: (opcode: number, operand: number) => number; +``` + + + +### pushes + +Signature: + +```typescript +pushes: (opcode: number, operand: number) => number; +``` diff --git a/docs/interfaces/itiers.md b/docs/interfaces/itiers.md new file mode 100644 index 0000000..d458372 --- /dev/null +++ b/docs/interfaces/itiers.md @@ -0,0 +1,10 @@ + +# Interface itiers + +type for simulating and storing ITier contract data + +Signature: + +```typescript +interface itiers +``` diff --git a/docs/interfaces/opfn.md b/docs/interfaces/opfn.md new file mode 100644 index 0000000..ee31e6f --- /dev/null +++ b/docs/interfaces/opfn.md @@ -0,0 +1,10 @@ + +# Interface OpFn + +An interface/type of JSVM opcodes' function's body + +Signature: + +```typescript +interface OpFn +``` diff --git a/docs/interfaces/order.md b/docs/interfaces/order.md new file mode 100644 index 0000000..175384f --- /dev/null +++ b/docs/interfaces/order.md @@ -0,0 +1,94 @@ + +# Interface order + +type for simulating and storing orderbook Order data + +Signature: + +```typescript +interface order +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [inputToken](./order.md#inputToken-property) | `string` | | +| [inputVaultId](./order.md#inputVaultId-property) | `string` | | +| [orderHash](./order.md#orderHash-property) | `string` | | +| [outputToken](./order.md#outputToken-property) | `string` | | +| [outputVaultId](./order.md#outputVaultId-property) | `string` | | +| [owner](./order.md#owner-property) | `string` | | +| [vmConfig](./order.md#vmConfig-property) | [StateConfig](./stateconfig.md) | | + +## Property Details + + + +### inputToken + +Signature: + +```typescript +inputToken: string; +``` + + + +### inputVaultId + +Signature: + +```typescript +inputVaultId: string; +``` + + + +### orderHash + +Signature: + +```typescript +orderHash: string; +``` + + + +### outputToken + +Signature: + +```typescript +outputToken: string; +``` + + + +### outputVaultId + +Signature: + +```typescript +outputVaultId: string; +``` + + + +### owner + +Signature: + +```typescript +owner: string; +``` + + + +### vmConfig + +Signature: + +```typescript +vmConfig: StateConfig; +``` diff --git a/docs/interfaces/orders.md b/docs/interfaces/orders.md new file mode 100644 index 0000000..a104134 --- /dev/null +++ b/docs/interfaces/orders.md @@ -0,0 +1,10 @@ + +# Interface orders + +type for simulating and storing multiple orderbook Orders + +Signature: + +```typescript +interface orders +``` diff --git a/docs/interfaces/statejs.md b/docs/interfaces/statejsvm.md similarity index 68% rename from docs/interfaces/statejs.md rename to docs/interfaces/statejsvm.md index 6bd9061..7d2b33a 100644 --- a/docs/interfaces/statejs.md +++ b/docs/interfaces/statejsvm.md @@ -1,22 +1,22 @@ -# Interface StateJS +# Interface StateJSVM - An interface, StateJS is basically javascript version of 'State' struct in RainVM, although it doesn't need stackLength and argumentsLength to operate. It receives a regular RainVM in the constructor and initiates the stack for it and all opcodes do their operations to the stack. Signature: ```typescript -interface StateJS +interface StateJSVM ``` ## Properties | Property | Type | Description | | --- | --- | --- | -| [argumentsStack](./statejs.md#argumentsStack-property) | `BigNumber[]` | Used only for zipmap opcode | -| [constants](./statejs.md#constants-property) | `BigNumber[]` | The property to store the RainVM script constants. | -| [sources](./statejs.md#sources-property) | `Uint8Array[]` | The property to store the RainVM script sources. | -| [stack](./statejs.md#stack-property) | `BigNumber[]` | The RainJS's stack. | +| [argumentsStack](./statejsvm.md#argumentsStack-property) | `BigNumber[]` | Used only for zipmap opcode | +| [constants](./statejsvm.md#constants-property) | `BigNumber[]` | The property to store the RainVM script constants. | +| [sources](./statejsvm.md#sources-property) | `Uint8Array[]` | The property to store the RainVM script sources. | +| [stack](./statejsvm.md#stack-property) | `BigNumber[]` | The RainJS's stack. | ## Property Details diff --git a/docs/interfaces/vaults.md b/docs/interfaces/vaults.md new file mode 100644 index 0000000..cb9b69c --- /dev/null +++ b/docs/interfaces/vaults.md @@ -0,0 +1,10 @@ + +# Interface vaults + +type for simulating and storing orderbook Vaults data + +Signature: + +```typescript +interface vaults +``` diff --git a/docs/namespaces/utils.md b/docs/namespaces/utils.md index 7b07e3a..231eec3 100644 --- a/docs/namespaces/utils.md +++ b/docs/namespaces/utils.md @@ -13,6 +13,11 @@ | Function | Description | | --- | --- | | [callSize(sourceIndex, loopSize, valSize)](./utils/variables/callsize_1.md) | Constructs the operand for RainVM's `zipmap` opcode by packing 3 numbers into a single byte. All parameters use zero-based counting i.e. an `fnSize` of 0 means to allocate one element (32 bytes) on the stack to define your functions, while an `fnSize` of 3 means to allocate all four elements (4 \* 32 bytes) on the stack. | +| [extractFromMap(map, properties)](./utils/variables/extractfrommap_1.md) | Extract some of the properites from a Map as a new Map with same keys. | +| [extractFromRecord(record, properties)](./utils/variables/extractfromrecord_1.md) | Extract some of the properties from a Record as new Record with same keys. | +| [isBigNumberish(value)](./utils/variables/isbignumberish_1.md) | function to check if the a value is of type BigNumberish | +| [mapToRecord(map, properties)](./utils/variables/maptorecord_1.md) | Conver a Map to a equivelant Record (a key/value pair object). Map keys must be of type acceptable by Record constructor, which are string, number or symbol. | +| [recordToMap(record, properties)](./utils/variables/recordtomap_1.md) | Conver a Record (a key/value pair object) to a equivelant Map. Map keys will be of type acceptable by Record constructor, which are string, number or symbol. | | [selectLte(logic, mode, length)](./utils/variables/selectlte_1.md) | function to set up the operand for a SELECT\_LTE opcode | | [tierRange(startTier, endTier)](./utils/variables/tierrange_1.md) | function to pack start/end tier range into a byte size number for the UPDATE\_BLOCKS\_FOR\_TIER\_RANGE opcode | @@ -21,6 +26,7 @@ | Variable | Description | | --- | --- | | [arrayify](./utils/variables/arrayify.md) | ethers arrayify | +| [arrToReport](./utils/variables/arrtoreport.md) | Convert an array of 8 BigNumberish values to 8 32bit values packed in a HexString uint256 i.e. Report | | [bytify](./utils/variables/bytify.md) | Converts a value to raw bytes representation. Assumes `value` is less than or equal to 1 byte, unless a desired `bytesLength` is specified. | | [concat](./utils/variables/concat.md) | ethers concat | | [hexlify](./utils/variables/hexlify.md) | ethers hexlify | diff --git a/docs/namespaces/utils/variables/arrtoreport.md b/docs/namespaces/utils/variables/arrtoreport.md new file mode 100644 index 0000000..e74a3b7 --- /dev/null +++ b/docs/namespaces/utils/variables/arrtoreport.md @@ -0,0 +1,10 @@ + +# Variable utils.arrToReport + +Convert an array of 8 BigNumberish values to 8 32bit values packed in a HexString uint256 i.e. Report + +Signature: + +```typescript +arrToReport: (array: BigNumberish[]) => string +``` diff --git a/docs/namespaces/utils/variables/extractfrommap_1.md b/docs/namespaces/utils/variables/extractfrommap_1.md new file mode 100644 index 0000000..1724ac3 --- /dev/null +++ b/docs/namespaces/utils/variables/extractfrommap_1.md @@ -0,0 +1,24 @@ + +# Function utils.extractFromMap() + +Extract some of the properites from a Map as a new Map with same keys. + +Signature: + +```typescript +function extractFromMap(map: Map, properties: string[]): Map; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| map | `Map` | the map to extract from | +| properties | `string[]` | name of the properties in second item of the map elements | + +Returns: + +`Map` + +a new Map + diff --git a/docs/namespaces/utils/variables/extractfromrecord_1.md b/docs/namespaces/utils/variables/extractfromrecord_1.md new file mode 100644 index 0000000..83dfc2e --- /dev/null +++ b/docs/namespaces/utils/variables/extractfromrecord_1.md @@ -0,0 +1,24 @@ + +# Function utils.extractFromRecord() + +Extract some of the properties from a Record as new Record with same keys. + +Signature: + +```typescript +function extractFromRecord(record: Record, properties: string | string[]): Record; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| record | `Record` | the record to extract from. | +| properties | `string \| string[]` | name of the properties in value item of the key/va;ue pair of a Record object | + +Returns: + +`Record` + +a new Record i.e. a new key/value pair object + diff --git a/docs/namespaces/utils/variables/isbignumberish_1.md b/docs/namespaces/utils/variables/isbignumberish_1.md new file mode 100644 index 0000000..99adc38 --- /dev/null +++ b/docs/namespaces/utils/variables/isbignumberish_1.md @@ -0,0 +1,23 @@ + +# Function utils.isBigNumberish() + +function to check if the a value is of type BigNumberish + +Signature: + +```typescript +function isBigNumberish(value: any): boolean; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| value | `any` | the value to check | + +Returns: + +`boolean` + +boolean + diff --git a/docs/namespaces/utils/variables/maptorecord_1.md b/docs/namespaces/utils/variables/maptorecord_1.md new file mode 100644 index 0000000..1cc32d7 --- /dev/null +++ b/docs/namespaces/utils/variables/maptorecord_1.md @@ -0,0 +1,24 @@ + +# Function utils.mapToRecord() + +Conver a Map to a equivelant Record (a key/value pair object). Map keys must be of type acceptable by Record constructor, which are string, number or symbol. + +Signature: + +```typescript +function mapToRecord(map: Map, properties?: string[]): Record; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| map | `Map` | The Map to conver to Record | +| properties | `string[]` | (optional) properties to pick from the second item of the Map's elements. | + +Returns: + +`Record` + +a new Record (a key/value pait object) + diff --git a/docs/namespaces/utils/variables/recordtomap_1.md b/docs/namespaces/utils/variables/recordtomap_1.md new file mode 100644 index 0000000..b111028 --- /dev/null +++ b/docs/namespaces/utils/variables/recordtomap_1.md @@ -0,0 +1,23 @@ + +# Function utils.recordToMap() + +Conver a Record (a key/value pair object) to a equivelant Map. Map keys will be of type acceptable by Record constructor, which are string, number or symbol. + +Signature: + +```typescript +function recordToMap(record: Record, properties?: string | string[]): Map; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| record | `Record` | The Record to convert to a Map | +| properties | `string \| string[]` | (optional) properties to pick from the values of key/value pair items of the Record object. | + +Returns: + +`Map` + + diff --git a/docs/types/bountyconfig.md b/docs/types/bountyconfig.md index da27615..906c31b 100644 --- a/docs/types/bountyconfig.md +++ b/docs/types/bountyconfig.md @@ -1,6 +1,7 @@ # Type BountyConfig +Type for bounty vaultIds used when in Signature: diff --git a/docs/types/calloptions.md b/docs/types/calloptions.md new file mode 100644 index 0000000..ddab9e4 --- /dev/null +++ b/docs/types/calloptions.md @@ -0,0 +1,16 @@ + +# Type CallOptions + +Options for instantiating RainJSVM + +Signature: + +```typescript +type CallOptions = { + signer?: Signer; + contract?: string | Contract; + applyOpFn?: FnPtrs; + storageOpFn?: FnPtrs; + opMeta?: Map; +}; +``` diff --git a/docs/types/clearstatechange.md b/docs/types/clearstatechange.md new file mode 100644 index 0000000..e117ca1 --- /dev/null +++ b/docs/types/clearstatechange.md @@ -0,0 +1,15 @@ + +# Type ClearStateChange + +Type for changes in state of an orderbook vaults after an successful clear + +Signature: + +```typescript +type ClearStateChange = { + aOutput: BigNumberish; + bOutput: BigNumberish; + aInput: BigNumberish; + bInput: BigNumberish; +}; +``` diff --git a/docs/types/depositconfig.md b/docs/types/depositconfig.md index b687b8f..cd01729 100644 --- a/docs/types/depositconfig.md +++ b/docs/types/depositconfig.md @@ -1,6 +1,7 @@ # Type DepositConfig +Type for depositing some token amount into a vault used in Signature: diff --git a/docs/types/emissionsconfig.md b/docs/types/emissionsconfig.md index 4b7f9e6..600043b 100644 --- a/docs/types/emissionsconfig.md +++ b/docs/types/emissionsconfig.md @@ -31,5 +31,6 @@ type EmissionsConfig = { tier8: number; }; numberOfIncrements?: number; + tierContext?: BigNumber[]; }; ``` diff --git a/docs/types/opcodefn.md b/docs/types/opcodefn.md deleted file mode 100644 index 89777e7..0000000 --- a/docs/types/opcodefn.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type OpcodeFN - -A type for functions to override the default opcodes functions with it. - -Signature: - -```typescript -type OpcodeFN = (state: StateJS, operand: number, data?: any) => void; -``` diff --git a/docs/types/order.md b/docs/types/order.md index 9dd2c2c..331f456 100644 --- a/docs/types/order.md +++ b/docs/types/order.md @@ -1,7 +1,7 @@ # Type Order -Order +Type for an order containing all that is required in an order. An Order is an Signature: diff --git a/docs/types/orderconfig.md b/docs/types/orderconfig.md index 4d6f376..307d736 100644 --- a/docs/types/orderconfig.md +++ b/docs/types/orderconfig.md @@ -1,6 +1,9 @@ # Type OrderConfig +A type for an order configuration without any specific owner + +'inputToken' address - the desired token to be recieved if order clears 'inputVaultId' corresponding inputToken vault 'outputToken' address - the token to be paid if order clears 'outputVaultId' corresponding outputToken vault 'tracking' the tracking state of the order 'vmState' the Signature: diff --git a/docs/types/stakedeployargs.md b/docs/types/stakedeployargs.md index 56ae4c3..9159f55 100644 --- a/docs/types/stakedeployargs.md +++ b/docs/types/stakedeployargs.md @@ -1,6 +1,9 @@ # Type StakeDeployArgs +A type for deploying a new stake contract which contains everything required for deployment. + +'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token Signature: diff --git a/docs/types/withdrawconfig.md b/docs/types/withdrawconfig.md index 3f08e88..3e24be2 100644 --- a/docs/types/withdrawconfig.md +++ b/docs/types/withdrawconfig.md @@ -1,6 +1,7 @@ # Type WithdrawConfig +Type for withdrawing some token amount from a vault used in Signature: diff --git a/docs/variables/eighteenzeros.md b/docs/variables/eighteenzeros.md new file mode 100644 index 0000000..5947a70 --- /dev/null +++ b/docs/variables/eighteenzeros.md @@ -0,0 +1,10 @@ + +# Variable eighteenZeros + +18 decimals or i.e "DECIMALS" - used for fixed point match + +Signature: + +```typescript +eighteenZeros = "1000000000000000000" +``` diff --git a/docs/variables/fixedpointdiv.md b/docs/variables/fixedpointdiv.md new file mode 100644 index 0000000..6af8828 --- /dev/null +++ b/docs/variables/fixedpointdiv.md @@ -0,0 +1,9 @@ + +# Variable fixedPointDiv + + +Signature: + +```typescript +fixedPointDiv: (value1: BigNumber, value2: BigNumber, scale: number) => BigNumber +``` diff --git a/docs/variables/fixedpointmul.md b/docs/variables/fixedpointmul.md new file mode 100644 index 0000000..d8753f2 --- /dev/null +++ b/docs/variables/fixedpointmul.md @@ -0,0 +1,9 @@ + +# Variable fixedPointMul + + +Signature: + +```typescript +fixedPointMul: (value1: BigNumber, value2: BigNumber, scale: number) => BigNumber +``` diff --git a/docs/variables/opadd_1.md b/docs/variables/opadd_1.md new file mode 100644 index 0000000..cc4bbea --- /dev/null +++ b/docs/variables/opadd_1.md @@ -0,0 +1,23 @@ + +# Function OpAdd() + + +Signature: + +```typescript +function OpAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opany_1.md b/docs/variables/opany_1.md new file mode 100644 index 0000000..0462ccb --- /dev/null +++ b/docs/variables/opany_1.md @@ -0,0 +1,23 @@ + +# Function OpAny() + + +Signature: + +```typescript +function OpAny(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opblocknumber_1.md b/docs/variables/opblocknumber_1.md new file mode 100644 index 0000000..335e867 --- /dev/null +++ b/docs/variables/opblocknumber_1.md @@ -0,0 +1,23 @@ + +# Function OpBlockNumber() + + +Signature: + +```typescript +function OpBlockNumber(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/opcaller_1.md b/docs/variables/opcaller_1.md new file mode 100644 index 0000000..213605b --- /dev/null +++ b/docs/variables/opcaller_1.md @@ -0,0 +1,23 @@ + +# Function OpCaller() + + +Signature: + +```typescript +function OpCaller(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/opdiv_1.md b/docs/variables/opdiv_1.md new file mode 100644 index 0000000..a4cfd66 --- /dev/null +++ b/docs/variables/opdiv_1.md @@ -0,0 +1,23 @@ + +# Function OpDiv() + + +Signature: + +```typescript +function OpDiv(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opeagerif_1.md b/docs/variables/opeagerif_1.md new file mode 100644 index 0000000..b747534 --- /dev/null +++ b/docs/variables/opeagerif_1.md @@ -0,0 +1,23 @@ + +# Function OpEagerIf() + + +Signature: + +```typescript +function OpEagerIf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opequalto_1.md b/docs/variables/opequalto_1.md new file mode 100644 index 0000000..2e2d125 --- /dev/null +++ b/docs/variables/opequalto_1.md @@ -0,0 +1,23 @@ + +# Function OpEqualTo() + + +Signature: + +```typescript +function OpEqualTo(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/operc1155balanceof_1.md b/docs/variables/operc1155balanceof_1.md new file mode 100644 index 0000000..4b8bba0 --- /dev/null +++ b/docs/variables/operc1155balanceof_1.md @@ -0,0 +1,23 @@ + +# Function OpERC1155BalanceOf() + + +Signature: + +```typescript +function OpERC1155BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc1155balanceofbatch_1.md b/docs/variables/operc1155balanceofbatch_1.md new file mode 100644 index 0000000..a5b3e42 --- /dev/null +++ b/docs/variables/operc1155balanceofbatch_1.md @@ -0,0 +1,23 @@ + +# Function OpERC1155BalanceOfBatch() + + +Signature: + +```typescript +function OpERC1155BalanceOfBatch(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc20balanceof_1.md b/docs/variables/operc20balanceof_1.md new file mode 100644 index 0000000..963411b --- /dev/null +++ b/docs/variables/operc20balanceof_1.md @@ -0,0 +1,23 @@ + +# Function OpERC20BalanceOf() + + +Signature: + +```typescript +function OpERC20BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc20snapshotbalanceofat_1.md b/docs/variables/operc20snapshotbalanceofat_1.md new file mode 100644 index 0000000..7322520 --- /dev/null +++ b/docs/variables/operc20snapshotbalanceofat_1.md @@ -0,0 +1,23 @@ + +# Function OpERC20SnapshotBalanceOfAt() + + +Signature: + +```typescript +function OpERC20SnapshotBalanceOfAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc20snapshottotalsupplyat_1.md b/docs/variables/operc20snapshottotalsupplyat_1.md new file mode 100644 index 0000000..16a5ef1 --- /dev/null +++ b/docs/variables/operc20snapshottotalsupplyat_1.md @@ -0,0 +1,23 @@ + +# Function OpERC20SnapshotTotalSupplyAt() + + +Signature: + +```typescript +function OpERC20SnapshotTotalSupplyAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc20totalsupply_1.md b/docs/variables/operc20totalsupply_1.md new file mode 100644 index 0000000..b59a476 --- /dev/null +++ b/docs/variables/operc20totalsupply_1.md @@ -0,0 +1,23 @@ + +# Function OpERC20TotalSupply() + + +Signature: + +```typescript +function OpERC20TotalSupply(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc721balanceof_1.md b/docs/variables/operc721balanceof_1.md new file mode 100644 index 0000000..f2ebad1 --- /dev/null +++ b/docs/variables/operc721balanceof_1.md @@ -0,0 +1,23 @@ + +# Function OpERC721BalanceOf() + + +Signature: + +```typescript +function OpERC721BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/operc721ownerof_1.md b/docs/variables/operc721ownerof_1.md new file mode 100644 index 0000000..0c3ed81 --- /dev/null +++ b/docs/variables/operc721ownerof_1.md @@ -0,0 +1,23 @@ + +# Function OpERC721OwnerOf() + + +Signature: + +```typescript +function OpERC721OwnerOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/opevery_1.md b/docs/variables/opevery_1.md new file mode 100644 index 0000000..2602a82 --- /dev/null +++ b/docs/variables/opevery_1.md @@ -0,0 +1,23 @@ + +# Function OpEvery() + + +Signature: + +```typescript +function OpEvery(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opexp_1.md b/docs/variables/opexp_1.md new file mode 100644 index 0000000..d04442a --- /dev/null +++ b/docs/variables/opexp_1.md @@ -0,0 +1,23 @@ + +# Function OpExp() + + +Signature: + +```typescript +function OpExp(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opgreaterthan_1.md b/docs/variables/opgreaterthan_1.md new file mode 100644 index 0000000..dfaf76d --- /dev/null +++ b/docs/variables/opgreaterthan_1.md @@ -0,0 +1,23 @@ + +# Function OpGreaterThan() + + +Signature: + +```typescript +function OpGreaterThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opiszero_1.md b/docs/variables/opiszero_1.md new file mode 100644 index 0000000..3875b4e --- /dev/null +++ b/docs/variables/opiszero_1.md @@ -0,0 +1,23 @@ + +# Function OpIsZero() + + +Signature: + +```typescript +function OpIsZero(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opitierv2report_1.md b/docs/variables/opitierv2report_1.md new file mode 100644 index 0000000..2313d4c --- /dev/null +++ b/docs/variables/opitierv2report_1.md @@ -0,0 +1,23 @@ + +# Function OpITierV2Report() + + +Signature: + +```typescript +function OpITierV2Report(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/opitierv2reporttimesfortier_1.md b/docs/variables/opitierv2reporttimesfortier_1.md new file mode 100644 index 0000000..1bd5d7e --- /dev/null +++ b/docs/variables/opitierv2reporttimesfortier_1.md @@ -0,0 +1,23 @@ + +# Function OpITierV2ReportTimesForTier() + + +Signature: + +```typescript +function OpITierV2ReportTimesForTier(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/oplessthan_1.md b/docs/variables/oplessthan_1.md new file mode 100644 index 0000000..4741fad --- /dev/null +++ b/docs/variables/oplessthan_1.md @@ -0,0 +1,23 @@ + +# Function OpLessThan() + + +Signature: + +```typescript +function OpLessThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opmax_1.md b/docs/variables/opmax_1.md new file mode 100644 index 0000000..9c9f69e --- /dev/null +++ b/docs/variables/opmax_1.md @@ -0,0 +1,23 @@ + +# Function OpMax() + + +Signature: + +```typescript +function OpMax(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opmeta.md b/docs/variables/opmeta.md new file mode 100644 index 0000000..332e37c --- /dev/null +++ b/docs/variables/opmeta.md @@ -0,0 +1,9 @@ + +# Variable OpMeta + + +Signature: + +```typescript +OpMeta: Map +``` diff --git a/docs/variables/opmin_1.md b/docs/variables/opmin_1.md new file mode 100644 index 0000000..2198e98 --- /dev/null +++ b/docs/variables/opmin_1.md @@ -0,0 +1,23 @@ + +# Function OpMin() + + +Signature: + +```typescript +function OpMin(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opmod_1.md b/docs/variables/opmod_1.md new file mode 100644 index 0000000..ed44a2b --- /dev/null +++ b/docs/variables/opmod_1.md @@ -0,0 +1,23 @@ + +# Function OpMod() + + +Signature: + +```typescript +function OpMod(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opmul_1.md b/docs/variables/opmul_1.md new file mode 100644 index 0000000..20d278c --- /dev/null +++ b/docs/variables/opmul_1.md @@ -0,0 +1,23 @@ + +# Function OpMul() + + +Signature: + +```typescript +function OpMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opsaturatingadd_1.md b/docs/variables/opsaturatingadd_1.md new file mode 100644 index 0000000..0680566 --- /dev/null +++ b/docs/variables/opsaturatingadd_1.md @@ -0,0 +1,23 @@ + +# Function OpSaturatingAdd() + + +Signature: + +```typescript +function OpSaturatingAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opsaturatingdiff_1.md b/docs/variables/opsaturatingdiff_1.md new file mode 100644 index 0000000..2be6af1 --- /dev/null +++ b/docs/variables/opsaturatingdiff_1.md @@ -0,0 +1,23 @@ + +# Function OpSaturatingDiff() + + +Signature: + +```typescript +function OpSaturatingDiff(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opsaturatingmul_1.md b/docs/variables/opsaturatingmul_1.md new file mode 100644 index 0000000..4620221 --- /dev/null +++ b/docs/variables/opsaturatingmul_1.md @@ -0,0 +1,23 @@ + +# Function OpSaturatingMul() + + +Signature: + +```typescript +function OpSaturatingMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opsaturatingsub_1.md b/docs/variables/opsaturatingsub_1.md new file mode 100644 index 0000000..8c96e99 --- /dev/null +++ b/docs/variables/opsaturatingsub_1.md @@ -0,0 +1,23 @@ + +# Function OpSaturatingSub() + + +Signature: + +```typescript +function OpSaturatingSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opscale18_1.md b/docs/variables/opscale18_1.md new file mode 100644 index 0000000..534ef47 --- /dev/null +++ b/docs/variables/opscale18_1.md @@ -0,0 +1,23 @@ + +# Function OpScale18() + + +Signature: + +```typescript +function OpScale18(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opscale18div_1.md b/docs/variables/opscale18div_1.md new file mode 100644 index 0000000..7a7a01b --- /dev/null +++ b/docs/variables/opscale18div_1.md @@ -0,0 +1,23 @@ + +# Function OpScale18Div() + + +Signature: + +```typescript +function OpScale18Div(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opscale18mul_1.md b/docs/variables/opscale18mul_1.md new file mode 100644 index 0000000..0035a51 --- /dev/null +++ b/docs/variables/opscale18mul_1.md @@ -0,0 +1,23 @@ + +# Function OpScale18Mul() + + +Signature: + +```typescript +function OpScale18Mul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opscaleby_1.md b/docs/variables/opscaleby_1.md new file mode 100644 index 0000000..ce42ccb --- /dev/null +++ b/docs/variables/opscaleby_1.md @@ -0,0 +1,23 @@ + +# Function OpScaleBy() + + +Signature: + +```typescript +function OpScaleBy(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opscalen_1.md b/docs/variables/opscalen_1.md new file mode 100644 index 0000000..dfa6395 --- /dev/null +++ b/docs/variables/opscalen_1.md @@ -0,0 +1,23 @@ + +# Function OpScaleN() + + +Signature: + +```typescript +function OpScaleN(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opselectlte_1.md b/docs/variables/opselectlte_1.md new file mode 100644 index 0000000..fad30b2 --- /dev/null +++ b/docs/variables/opselectlte_1.md @@ -0,0 +1,23 @@ + +# Function OpSelectLte() + + +Signature: + +```typescript +function OpSelectLte(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opsub_1.md b/docs/variables/opsub_1.md new file mode 100644 index 0000000..c9bb9b1 --- /dev/null +++ b/docs/variables/opsub_1.md @@ -0,0 +1,23 @@ + +# Function OpSub() + + +Signature: + +```typescript +function OpSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/opthisaddress_1.md b/docs/variables/opthisaddress_1.md new file mode 100644 index 0000000..2a98d50 --- /dev/null +++ b/docs/variables/opthisaddress_1.md @@ -0,0 +1,23 @@ + +# Function OpThisAddress() + + +Signature: + +```typescript +function OpThisAddress(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/optimestamp_1.md b/docs/variables/optimestamp_1.md new file mode 100644 index 0000000..b80a7af --- /dev/null +++ b/docs/variables/optimestamp_1.md @@ -0,0 +1,23 @@ + +# Function OpTimestamp() + + +Signature: + +```typescript +function OpTimestamp(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`Promise` + diff --git a/docs/variables/opupdatetimesfortierrange_1.md b/docs/variables/opupdatetimesfortierrange_1.md new file mode 100644 index 0000000..1dc6a26 --- /dev/null +++ b/docs/variables/opupdatetimesfortierrange_1.md @@ -0,0 +1,23 @@ + +# Function OpUpdateTimesForTierRange() + + +Signature: + +```typescript +function OpUpdateTimesForTierRange(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void; +``` + +## Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| this | [RainJSVM](../classes/rainjsvm.md) | | +| state | [StateJSVM](../interfaces/statejsvm.md) | | +| operand | `number` | | +| data | `any` | | + +Returns: + +`void` + diff --git a/docs/variables/pnp.md b/docs/variables/pnp.md new file mode 100644 index 0000000..3e69908 --- /dev/null +++ b/docs/variables/pnp.md @@ -0,0 +1,10 @@ + +# Variable pnp + +Class for Opcodes number of stack pushes and pops + +Signature: + +```typescript +pnp: Record number> +``` diff --git a/docs/variables/saturatingadd.md b/docs/variables/saturatingadd.md new file mode 100644 index 0000000..ac4dc9c --- /dev/null +++ b/docs/variables/saturatingadd.md @@ -0,0 +1,9 @@ + +# Variable saturatingAdd + + +Signature: + +```typescript +saturatingAdd: (value1: BigNumber, value2: BigNumber) => BigNumber +``` diff --git a/docs/variables/saturatingdiff.md b/docs/variables/saturatingdiff.md new file mode 100644 index 0000000..0181fa8 --- /dev/null +++ b/docs/variables/saturatingdiff.md @@ -0,0 +1,9 @@ + +# Variable saturatingDiff + + +Signature: + +```typescript +saturatingDiff: (report1: BigNumber, report2: BigNumber) => BigNumber +``` diff --git a/docs/variables/saturatingmul.md b/docs/variables/saturatingmul.md new file mode 100644 index 0000000..df220e4 --- /dev/null +++ b/docs/variables/saturatingmul.md @@ -0,0 +1,9 @@ + +# Variable saturatingMul + + +Signature: + +```typescript +saturatingMul: (value1: BigNumber, value2: BigNumber) => BigNumber +``` diff --git a/docs/variables/saturatingsub.md b/docs/variables/saturatingsub.md new file mode 100644 index 0000000..e51ce97 --- /dev/null +++ b/docs/variables/saturatingsub.md @@ -0,0 +1,9 @@ + +# Variable saturatingSub + + +Signature: + +```typescript +saturatingSub: (value1: BigNumber, value2: BigNumber) => BigNumber +``` diff --git a/docs/variables/scale18.md b/docs/variables/scale18.md new file mode 100644 index 0000000..8e24bf7 --- /dev/null +++ b/docs/variables/scale18.md @@ -0,0 +1,9 @@ + +# Variable scale18 + + +Signature: + +```typescript +scale18: (value: BigNumber, scale: number) => BigNumber +``` diff --git a/docs/variables/scaleby.md b/docs/variables/scaleby.md new file mode 100644 index 0000000..9b94ebf --- /dev/null +++ b/docs/variables/scaleby.md @@ -0,0 +1,9 @@ + +# Variable scaleBy + + +Signature: + +```typescript +scaleBy: (value: BigNumber, scale: number) => BigNumber +``` diff --git a/docs/variables/scalen.md b/docs/variables/scalen.md new file mode 100644 index 0000000..8805d6d --- /dev/null +++ b/docs/variables/scalen.md @@ -0,0 +1,9 @@ + +# Variable scaleN + + +Signature: + +```typescript +scaleN: (value: BigNumber, scale: number) => BigNumber +``` diff --git a/docs/variables/selectlte.md b/docs/variables/selectlte.md new file mode 100644 index 0000000..1f4f284 --- /dev/null +++ b/docs/variables/selectlte.md @@ -0,0 +1,9 @@ + +# Variable selectLte + + +Signature: + +```typescript +selectLte: (reports: BigNumber[], timestamp: BigNumber, logic: number, mode: number, length: number) => BigNumber +``` diff --git a/docs/variables/updatetimesfortierrange.md b/docs/variables/updatetimesfortierrange.md new file mode 100644 index 0000000..da83f86 --- /dev/null +++ b/docs/variables/updatetimesfortierrange.md @@ -0,0 +1,9 @@ + +# Variable updateTimesForTierRange + + +Signature: + +```typescript +updateTimesForTierRange: (report: BigNumber, timestamp: BigNumber, range: number) => BigNumber +``` diff --git a/src/index.ts b/src/index.ts index a0457ae..60200a2 100644 --- a/src/index.ts +++ b/src/index.ts @@ -89,3 +89,4 @@ export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; export * from './vm/HumanFreindlyRead'; +export * from './vm/OpMeta'; diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts index d0d5510..215a250 100644 --- a/src/jsvm/RainJSVM.ts +++ b/src/jsvm/RainJSVM.ts @@ -6,6 +6,7 @@ import { IOpMeta, OpMeta } from '../vm/OpMeta'; /** + * @public * Options for instantiating RainJSVM */ export type CallOptions = { @@ -196,6 +197,7 @@ export class RainJSVM { * * @param data - (optional) Used as additional info for some local opcodes * or custom opcode functions i.e. applyOpFn. + * @param entrypoint - the index of sources to start eval * * @returns - An array represting the final state of the RainJS stack. */ @@ -209,7 +211,7 @@ export class RainJSVM { } /** - * + * @public */ private _constant(operand: number, data?: any): void { @@ -231,7 +233,7 @@ export class RainJSVM { } /** - * + * @public */ private _stack(operand: number, data?: any): void { @@ -239,7 +241,7 @@ export class RainJSVM { } /** - * + * @public */ private _context(operand: number, data?: any): void { @@ -265,7 +267,7 @@ export class RainJSVM { } /** - * + * @public */ private async _storage(operand: number, data?: any): Promise { @@ -285,7 +287,7 @@ export class RainJSVM { } /** - * + * @public */ private _debug(operand: number, data?: any): void { @@ -296,7 +298,7 @@ export class RainJSVM { } /** - * + * @public */ private async _zipmap(operand: number, data?: any): Promise { @@ -371,35 +373,35 @@ export class RainJSVM { } /** - * + * @public */ public get constant() { return this._constant } /** - * + * @public */ public get stack() { return this._stack } /** - * + * @public */ public get context() { return this._context } /** - * + * @public */ public get storage() { return this._storage } /** - * + * */ public get debug() { return this._debug @@ -413,9 +415,7 @@ export class RainJSVM { } /** - * - * @param signer - * @returns + * @public */ public connect(signer: Signer): this { this.signer = signer; @@ -423,9 +423,7 @@ export class RainJSVM { } /** - * - * @param contract - * @returns + * @public */ public setContract(contract: string | Contract): this { if (contract instanceof Contract) { diff --git a/src/jsvm/lib/FixedPointMath.ts b/src/jsvm/lib/FixedPointMath.ts index 44ae376..092aca1 100644 --- a/src/jsvm/lib/FixedPointMath.ts +++ b/src/jsvm/lib/FixedPointMath.ts @@ -1,13 +1,18 @@ import { BigNumber } from "ethers"; import { eighteenZeros } from "../types"; - +/** + * @public + */ export const scale18 = (value: BigNumber, scale: number) : BigNumber => { return scale <= 18 ? value.mul((10 ** (18 - scale)).toString()) : value.div((10 ** (scale - 18)).toString()) } +/** + * @public + */ export const scaleBy = (value: BigNumber, scale: number) : BigNumber => { if (scale > 127) { scale = 256 - scale; @@ -18,12 +23,18 @@ export const scaleBy = (value: BigNumber, scale: number) : BigNumber => { } } +/** + * @public + */ export const scaleN = (value: BigNumber, scale: number) : BigNumber => { return scale <= 18 ? value.div((10 ** (18 - scale)).toString()) : value.mul((10 ** (scale - 18)).toString()) } +/** + * @public + */ export const fixedPointDiv = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { return (scale <= 18 ? value1.mul((10 ** (18 - scale)).toString()) @@ -32,6 +43,9 @@ export const fixedPointDiv = (value1: BigNumber, value2: BigNumber, scale: numbe .mul(eighteenZeros).div(value2) } +/** + * @public + */ export const fixedPointMul = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { return value2.mul( scale <= 18 diff --git a/src/jsvm/lib/SaturatingMath.ts b/src/jsvm/lib/SaturatingMath.ts index b1ef65c..ac65af6 100644 --- a/src/jsvm/lib/SaturatingMath.ts +++ b/src/jsvm/lib/SaturatingMath.ts @@ -1,5 +1,8 @@ import { BigNumber, ethers } from "ethers" +/** + * @public + */ export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber => { value1 = value1.add(value2); value1 = value1.gt(ethers.constants.MaxUint256) @@ -9,6 +12,10 @@ export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber return value1; } +/** + * @public + * + */ export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber => { value1 = value1.mul(value2); value1 = value1.gt(ethers.constants.MaxUint256) @@ -18,6 +25,9 @@ export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber return value1; } +/** + * @public + */ export const saturatingSub = (value1: BigNumber, value2: BigNumber) : BigNumber => { value1 = value1?.sub(value2); value1 = value1.gt(0) diff --git a/src/jsvm/lib/TierReport.ts b/src/jsvm/lib/TierReport.ts index 935f5cc..2b5ef94 100644 --- a/src/jsvm/lib/TierReport.ts +++ b/src/jsvm/lib/TierReport.ts @@ -2,6 +2,9 @@ import { BigNumber } from "ethers"; import { paddedUInt256, paddedUInt32 } from "../../utils"; +/** + * @public + */ export const updateTimesForTierRange = (report: BigNumber, timestamp: BigNumber, range: number) : BigNumber => { const endTier_ = range >> 4; diff --git a/src/jsvm/lib/TierwiseCombine.ts b/src/jsvm/lib/TierwiseCombine.ts index ffdc7a3..e0148b8 100644 --- a/src/jsvm/lib/TierwiseCombine.ts +++ b/src/jsvm/lib/TierwiseCombine.ts @@ -1,6 +1,10 @@ import { BigNumber } from "ethers"; import { paddedUInt256, paddedUInt32 } from "../../utils"; + +/** + * @public + */ export const saturatingDiff = (report1: BigNumber, report2: BigNumber) : BigNumber => { const report1_ = paddedUInt256(report1).substring(2); const report2_ = paddedUInt256(report2).substring(2); @@ -27,6 +31,9 @@ export const saturatingDiff = (report1: BigNumber, report2: BigNumber) : BigNumb return BigNumber.from('0x' + _result); } +/** + * @public + */ export const selectLte = ( reports: BigNumber[], timestamp: BigNumber, diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts index 894ca90..d8d2ffc 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts @@ -5,6 +5,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpERC1155BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item3_ = state.stack.pop(); diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts index 5e97c19..d3eb458 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts @@ -5,6 +5,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpERC1155BalanceOfBatch(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item3_ = state.stack.splice(-(operand + 1)); diff --git a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts index 3012827..2d1ee5a 100644 --- a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts +++ b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts @@ -4,6 +4,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpERC20BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts index 600286a..621583e 100644 --- a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts +++ b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts @@ -4,6 +4,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpERC20TotalSupply(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item_ = state.stack.pop(); diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts index 4d22eb5..30a2bd7 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts @@ -4,6 +4,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export async function OpERC20SnapshotBalanceOfAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item3_ = state.stack.pop(); diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts index 310d5f8..97cdf6e 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts @@ -4,6 +4,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export async function OpERC20SnapshotTotalSupplyAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts index 6f2885f..02d0e57 100644 --- a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts +++ b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts @@ -4,6 +4,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpERC721BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts index 8738093..e7a73df 100644 --- a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts +++ b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts @@ -5,6 +5,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpERC721OwnerOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/evm/OpBlockNumber.ts b/src/jsvm/ops/evm/OpBlockNumber.ts index dd0f173..2e82087 100644 --- a/src/jsvm/ops/evm/OpBlockNumber.ts +++ b/src/jsvm/ops/evm/OpBlockNumber.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpBlockNumber(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { if (this.signer !== undefined) { diff --git a/src/jsvm/ops/evm/OpCaller.ts b/src/jsvm/ops/evm/OpCaller.ts index ce23627..fd88b28 100644 --- a/src/jsvm/ops/evm/OpCaller.ts +++ b/src/jsvm/ops/evm/OpCaller.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpCaller(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { if (this.signer !== undefined) { diff --git a/src/jsvm/ops/evm/OpThisAddress.ts b/src/jsvm/ops/evm/OpThisAddress.ts index 13ceb04..52f6276 100644 --- a/src/jsvm/ops/evm/OpThisAddress.ts +++ b/src/jsvm/ops/evm/OpThisAddress.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export function OpThisAddress(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { if (this.self !== undefined) { diff --git a/src/jsvm/ops/evm/OpTimestamp.ts b/src/jsvm/ops/evm/OpTimestamp.ts index 951262b..8b7a1f8 100644 --- a/src/jsvm/ops/evm/OpTimestamp.ts +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -2,7 +2,9 @@ import { BigNumber } from "ethers"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; - +/** + * @public + */ export async function OpTimestamp(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { if (this.signer !== undefined) { diff --git a/src/jsvm/ops/math/OpAdd.ts b/src/jsvm/ops/math/OpAdd.ts index 8e57ca8..c81b619 100644 --- a/src/jsvm/ops/math/OpAdd.ts +++ b/src/jsvm/ops/math/OpAdd.ts @@ -2,6 +2,9 @@ import { ethers } from "ethers"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export function OpAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { let _item; diff --git a/src/jsvm/ops/math/OpDiv.ts b/src/jsvm/ops/math/OpDiv.ts index 5f663d2..9b49318 100644 --- a/src/jsvm/ops/math/OpDiv.ts +++ b/src/jsvm/ops/math/OpDiv.ts @@ -1,6 +1,10 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpDiv(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/OpExp.ts b/src/jsvm/ops/math/OpExp.ts index 6eb65f2..7519ec7 100644 --- a/src/jsvm/ops/math/OpExp.ts +++ b/src/jsvm/ops/math/OpExp.ts @@ -2,6 +2,9 @@ import { ethers } from "ethers"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export function OpExp(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts index 5f79897..a5b180c 100644 --- a/src/jsvm/ops/math/OpMax.ts +++ b/src/jsvm/ops/math/OpMax.ts @@ -1,6 +1,10 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpMax(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/OpMin.ts b/src/jsvm/ops/math/OpMin.ts index cb41c8c..5568981 100644 --- a/src/jsvm/ops/math/OpMin.ts +++ b/src/jsvm/ops/math/OpMin.ts @@ -1,6 +1,10 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpMin(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/OpMod.ts b/src/jsvm/ops/math/OpMod.ts index 7ea2015..fc92474 100644 --- a/src/jsvm/ops/math/OpMod.ts +++ b/src/jsvm/ops/math/OpMod.ts @@ -1,6 +1,10 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpMod(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/OpMul.ts b/src/jsvm/ops/math/OpMul.ts index 4dcb0cf..bb60650 100644 --- a/src/jsvm/ops/math/OpMul.ts +++ b/src/jsvm/ops/math/OpMul.ts @@ -2,6 +2,10 @@ import { ethers } from "ethers"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { let _accumulator = ethers.constants.One; diff --git a/src/jsvm/ops/math/OpSub.ts b/src/jsvm/ops/math/OpSub.ts index 37765a3..5582562 100644 --- a/src/jsvm/ops/math/OpSub.ts +++ b/src/jsvm/ops/math/OpSub.ts @@ -1,6 +1,10 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18.ts b/src/jsvm/ops/math/fixedPoint/OpScale18.ts index ed1335e..2c61203 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -3,6 +3,9 @@ import { scale18 } from "../../../lib/FixedPointMath"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpScale18(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const item_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts index dd6c58d..d67bdfe 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpScale18Div(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts index a79c9a3..db916e8 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpScale18Mul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts index 2fc1ddd..8a5d07a 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts @@ -3,6 +3,9 @@ import { scaleBy } from "../../../lib/FixedPointMath"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpScaleBy(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const item_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts index 110ab4e..782a190 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts @@ -3,6 +3,9 @@ import { scaleN } from "../../../lib/FixedPointMath"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpScaleN(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const item_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/logic/OpAny.ts b/src/jsvm/ops/math/logic/OpAny.ts index 646bd80..0c1dc91 100644 --- a/src/jsvm/ops/math/logic/OpAny.ts +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpAny(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/logic/OpEagerIf.ts b/src/jsvm/ops/math/logic/OpEagerIf.ts index 70b99a7..72f5dc2 100644 --- a/src/jsvm/ops/math/logic/OpEagerIf.ts +++ b/src/jsvm/ops/math/logic/OpEagerIf.ts @@ -2,6 +2,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpEagerIf(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const false_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/logic/OpEqualTo.ts b/src/jsvm/ops/math/logic/OpEqualTo.ts index 1362635..8244248 100644 --- a/src/jsvm/ops/math/logic/OpEqualTo.ts +++ b/src/jsvm/ops/math/logic/OpEqualTo.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpEqualTo(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/logic/OpEvery.ts b/src/jsvm/ops/math/logic/OpEvery.ts index 9187329..1f1eb0c 100644 --- a/src/jsvm/ops/math/logic/OpEvery.ts +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpEvery(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/logic/OpGreaterThan.ts b/src/jsvm/ops/math/logic/OpGreaterThan.ts index 67a022c..a9a4c90 100644 --- a/src/jsvm/ops/math/logic/OpGreaterThan.ts +++ b/src/jsvm/ops/math/logic/OpGreaterThan.ts @@ -3,6 +3,9 @@ import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; +/** + * @public + */ export function OpGreaterThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/logic/OpIsZero.ts b/src/jsvm/ops/math/logic/OpIsZero.ts index 1457dcf..dcf2f21 100644 --- a/src/jsvm/ops/math/logic/OpIsZero.ts +++ b/src/jsvm/ops/math/logic/OpIsZero.ts @@ -2,6 +2,10 @@ import { ethers } from "ethers"; import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; + +/** + * @public + */ export function OpIsZero(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const item_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/logic/OpLessThan.ts b/src/jsvm/ops/math/logic/OpLessThan.ts index 0dccd80..29aa83c 100644 --- a/src/jsvm/ops/math/logic/OpLessThan.ts +++ b/src/jsvm/ops/math/logic/OpLessThan.ts @@ -2,6 +2,10 @@ import { ethers } from "ethers"; import { RainJSVM } from "../../../RainJSVM"; import { StateJSVM } from "../../../types"; + +/** + * @public + */ export function OpLessThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts index e417cd4..ee0c71e 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts @@ -3,6 +3,10 @@ import { saturatingAdd } from "../../../lib/SaturatingMath"; import { StateJSVM } from "../../../types"; import { ethers } from "ethers"; + +/** + * @public + */ export function OpSaturatingAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts index 50b788c..83af2d3 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -2,6 +2,10 @@ import { RainJSVM } from "../../../RainJSVM"; import { saturatingMul } from "../../../lib/SaturatingMath"; import { StateJSVM } from "../../../types"; + +/** + * @public + */ export function OpSaturatingMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts index 6a332d9..9a17555 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -3,6 +3,10 @@ import { saturatingSub } from "../../../lib/SaturatingMath"; import { StateJSVM } from "../../../types"; import { ethers } from "ethers"; + +/** + * @public + */ export function OpSaturatingSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const items_ = state.stack.splice(-operand); diff --git a/src/jsvm/ops/tier/OpITierV2Report.ts b/src/jsvm/ops/tier/OpITierV2Report.ts index ae356c9..30d9047 100644 --- a/src/jsvm/ops/tier/OpITierV2Report.ts +++ b/src/jsvm/ops/tier/OpITierV2Report.ts @@ -3,6 +3,10 @@ import { paddedUInt160 } from "../../../utils"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export async function OpITierV2Report(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const context_ = operand ? state.stack.splice(-operand) : []; diff --git a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts index d1b3e12..ffd5be8 100644 --- a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts +++ b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts @@ -4,6 +4,9 @@ import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; +/** + * @public + */ export async function OpITierV2ReportTimesForTier(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { const context_ = operand ? state.stack.splice(-operand) : []; diff --git a/src/jsvm/ops/tier/OpSaturatingDiff.ts b/src/jsvm/ops/tier/OpSaturatingDiff.ts index 6a81442..88e8935 100644 --- a/src/jsvm/ops/tier/OpSaturatingDiff.ts +++ b/src/jsvm/ops/tier/OpSaturatingDiff.ts @@ -2,6 +2,10 @@ import { RainJSVM } from "../../RainJSVM"; import { saturatingDiff } from "../../lib/TierwiseCombine"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpSaturatingDiff(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/ops/tier/OpSelectLte.ts b/src/jsvm/ops/tier/OpSelectLte.ts index 19e3c09..67e9545 100644 --- a/src/jsvm/ops/tier/OpSelectLte.ts +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -3,6 +3,9 @@ import { selectLte } from "../../lib/TierwiseCombine"; import { StateJSVM } from "../../types"; +/** + * @public + */ export function OpSelectLte(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const length_ = operand & 31; diff --git a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts index 826e3aa..2889dac 100644 --- a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts +++ b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts @@ -2,6 +2,10 @@ import { RainJSVM } from "../../RainJSVM"; import { updateTimesForTierRange } from "../../lib/TierReport"; import { StateJSVM } from "../../types"; + +/** + * @public + */ export function OpUpdateTimesForTierRange(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const item2_ = state.stack.pop(); diff --git a/src/jsvm/simulation/CombineTierSimulation.ts b/src/jsvm/simulation/CombineTierSimulation.ts index 1912f55..80683b1 100644 --- a/src/jsvm/simulation/CombineTierSimulation.ts +++ b/src/jsvm/simulation/CombineTierSimulation.ts @@ -8,7 +8,7 @@ import { vmSimulation } from "./vmSimulation"; * @public * A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. * - * @remark + * @remarks * this class is compatible with @see itiers interface with using its address */ export class CombinetierSimulation extends vmSimulation { diff --git a/src/jsvm/simulation/EmissionsERC20Simulation.ts b/src/jsvm/simulation/EmissionsERC20Simulation.ts index d942347..03eba43 100644 --- a/src/jsvm/simulation/EmissionsERC20Simulation.ts +++ b/src/jsvm/simulation/EmissionsERC20Simulation.ts @@ -8,7 +8,7 @@ import { vmSimulation } from "./vmSimulation"; * @public * A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. * - * @remark + * @remarks * this class is compatible with @see erc20 interface and @see itiers interface with using its address */ export class EmissionSmiulation extends vmSimulation { @@ -95,7 +95,7 @@ import { vmSimulation } from "./vmSimulation"; * @param timestamp - (optional) custom timestamp to be used when running the script * @param blockNumber - (optional) custom block number to be used when running the script * - * @return A BigNumber that represents the claimable amount + * @returns A BigNumber that represents the claimable amount */ public async calculateClaim( claimantAccount: string, @@ -129,7 +129,7 @@ import { vmSimulation } from "./vmSimulation"; * @param timestamp - (optional) custom timestamp to be used when running the script * @param blockNumber - (optional) custom block number to be used when running the script * - * @return the minted amount in a BigNumber format + * @returns the minted amount in a BigNumber format */ public async claim ( claimantAccount: string, diff --git a/src/jsvm/simulation/Matchmaker.ts b/src/jsvm/simulation/Matchmaker.ts index f20ad77..02f4860 100644 --- a/src/jsvm/simulation/Matchmaker.ts +++ b/src/jsvm/simulation/Matchmaker.ts @@ -13,6 +13,7 @@ import { /** + * @public * Interface for matchmaker forcasting a script */ export interface forcast { @@ -33,21 +34,24 @@ export interface forcast { export class MatchMaker extends OrderbookSimulation { /** + * @public * The forcast property of the matchmaker */ public orderForcast: forcast = {}; /** + * @public * The type of stores all the found matches */ public foundMatches: {orderA: string, orderB: string}[] = []; /** + * @public * Method that inherits from the parent class addOrder and after perfroming that will execute orderEval method * * @param order - the order to be added * - * @return void + * @returns void */ public async addOrder(order: order): Promise { super.addOrder(order); @@ -76,6 +80,7 @@ export class MatchMaker extends OrderbookSimulation { // } /** + * @public * Method to evaluate and forcast the order's script * * @param order - the order to be evaluated @@ -111,6 +116,7 @@ export class MatchMaker extends OrderbookSimulation { } /** + * @public * The main method to perform matchmaking and find matches among orders * * @param bountyConfig - the BountyConfig of this matchmaker class diff --git a/src/jsvm/simulation/OrderbookSimulation.ts b/src/jsvm/simulation/OrderbookSimulation.ts index ce19258..9fe931c 100644 --- a/src/jsvm/simulation/OrderbookSimulation.ts +++ b/src/jsvm/simulation/OrderbookSimulation.ts @@ -24,39 +24,46 @@ import { export class OrderbookSimulation extends vmSimulation { /** + * @public * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode * and updating storage types after method calls, and needs to be a string number or hex string. */ public address: string; /** + * @public * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, * and updating storage types after method calls and needs to be a string number or hex string. */ public sender: string; /** + * @public * The property that stores all the data of the class's vaults @see vault */ public vaults: vaults = {}; /** + * @public * The property that stores all the data of the class's orders, @see orders and @see order */ public orders: orders = {}; /** + * @public * The property that stores all the data of an order's total cleared amount, @see clearedFunds */ public clearedFunds: clearedFunds = {}; /** + * @public * The property that stores all the data of an order's total cleared amount to a specific counterparty address * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds */ public clearedCounterPartyFunds: clearedCounterPartyFunds = {}; /** + * @public * Constructor of this class * * @param address - this Orderbook's class adress which needs to be a string number or hex string @@ -77,6 +84,7 @@ import { } /** + * @public * Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. @see FnPtrs and @see OpcodeFN */ protected OpFns: FnPtrs = { @@ -112,10 +120,11 @@ import { }; /** + * @public * Method to submit an order into the class orders * * @param order - the order to add - * @return void + * @returns void */ public addOrder(order: order): void { this.orders[order.orderHash] = order; @@ -158,10 +167,11 @@ import { /** + * @public * Method to remove an order from the class's orders * * @param order - the order to remove - * @return void + * @returns void */ public removeOrder(order: order | string): void { if (typeof order === "string") { @@ -173,6 +183,7 @@ import { } /** + * @public * Method to dposit some units of token of tokenAddress into the vaultId of the sender * * @param sender - sender that deposit is done for @@ -181,7 +192,7 @@ import { * @param units - amount of token to deposit * @param tokenDecimals - (optional) decimals of the token, 18 will be used as default * - * @return void + * @returns void */ public deposit ( sender: string, @@ -239,6 +250,7 @@ import { } /** + * @public * Method to withdraw some units of token of tokenAddress from VaultId of the sender * * @param sender - sender that withdraw is done for @@ -246,7 +258,7 @@ import { * @param vaultId - the vault ID to withdraw * @param units - amount of token to withdraw * - * @return void + * @returns void */ public withdraw ( sender: string, @@ -282,6 +294,7 @@ import { } /** + * @public * Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class * * @param a - order A to clear @@ -290,7 +303,7 @@ import { * @param timestamp - (optional) custom timestamp to be used when running the script * @param blockNumber - (optional) custom block number to be used when running the script * - * @return void + * @returns void */ public async clear ( a: order, diff --git a/src/jsvm/simulation/SaleSimulation.ts b/src/jsvm/simulation/SaleSimulation.ts index bc1c31b..86bc646 100644 --- a/src/jsvm/simulation/SaleSimulation.ts +++ b/src/jsvm/simulation/SaleSimulation.ts @@ -128,7 +128,7 @@ import { vmSimulation } from "./vmSimulation"; * @param timestamp - (optional) custom timestamp to be used when running the script * @param blockNumber - (optional) custom block number to be used when running the script * - * @return a pair of BigNumbers represting amount and price + * @returns a pair of BigNumbers represting amount and price */ public async calculateBuy( units: number, @@ -159,14 +159,14 @@ import { vmSimulation } from "./vmSimulation"; * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. * requires the class's sender property to be defined. * - * @remark after running this method all the defined class's related types/storage will get updated with new + * @remarks after running this method all the defined class's related types/storage will get updated with new * values that are result of the JSVM running the script. * * @param units - Units to get the calculation for * @param timestamp - (optional) custom timestamp to be used when running the script * @param blockNumber - (optional) custom block number to be used when running the script * - * @return void + * @returns void */ public async buy( units: number, diff --git a/src/jsvm/types.ts b/src/jsvm/types.ts index a48f4f2..f374f5d 100644 --- a/src/jsvm/types.ts +++ b/src/jsvm/types.ts @@ -50,10 +50,14 @@ export interface StateJSVM { } -// 18 decimals or i.e "DECIMALS" - used for fixed point match +/** + * @public + * 18 decimals or i.e "DECIMALS" - used for fixed point match + */ export const eighteenZeros = "1000000000000000000"; /** + * @public * type for simulating and storing ITier contract data */ export interface itiers { @@ -67,6 +71,7 @@ export interface itiers { } /** + * @public * type for simulating and storing ERC20token contract data */ export interface erc20 { @@ -88,6 +93,7 @@ export interface erc20 { } /** + * @public * type for simulating and storing ERC721 contract data */ export interface erc721 { @@ -99,6 +105,7 @@ export interface erc721 { } /** + * @public * type for simulating and storing ERC1155 contract data */ export interface erc1155 { @@ -112,6 +119,7 @@ export interface erc1155 { } /** + * @public * type for simulating and storing multiple ERC20 tokens */ export interface erc20s { @@ -121,6 +129,7 @@ export interface erc20s { } /** + * @public * type for simulating and storing multiple ERC721 tokens */ export interface erc721s { @@ -130,6 +139,7 @@ export interface erc721s { } /** + * @public * type for simulating and storing multiple ERC1155 tokens */ export interface erc1155s { @@ -139,6 +149,7 @@ export interface erc1155s { } /** + * @public * type for simulating and storing orderbook Vaults data */ export interface vaults { @@ -154,6 +165,7 @@ export interface vaults { } /** + * @public * type for simulating and storing orderbook Order data */ export interface order { @@ -169,6 +181,7 @@ export interface order { } /** + * @public * type for simulating and storing multiple orderbook Orders */ export interface orders { @@ -178,6 +191,7 @@ export interface orders { } /** + * @public * type for bounty config */ export interface bountyConfig { @@ -188,6 +202,7 @@ export interface bountyConfig { } /** + * @public * type for simulating and storing matched order cleared funds */ export interface clearedFunds { @@ -197,6 +212,7 @@ export interface clearedFunds { } /** + * @public * type for simulating and storing matched order counterparty cleared funds */ export interface clearedCounterPartyFunds { diff --git a/src/utils.ts b/src/utils.ts index b486e84..38b02f2 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -267,6 +267,7 @@ export const paddedUInt160 = (address: BigNumberish): string => { }; /** + * @public * Convert an array of 8 BigNumberish values to 8 32bit values packed in a HexString uint256 i.e. Report * * @param array - The array to make report from @@ -292,6 +293,7 @@ export const arrToReport = (array: BigNumberish[]): string => { } /** + * @public * function to check if the a value is of type BigNumberish * * @param value - the value to check @@ -310,6 +312,7 @@ export function isBigNumberish(value: any): boolean { } /** + * @public * Extract some of the properites from a Map as a new Map with same keys. * * @param map - the map to extract from @@ -339,6 +342,7 @@ export function extractFromMap(map: Map, properties: string[]): Map( } /** + * @public * Conver a Map to a equivelant Record (a key/value pair object). Map keys must be of type acceptable by Record constructor, * which are string, number or symbol. * @@ -406,6 +411,7 @@ export function mapToRecord( } /** + * @public * Conver a Record (a key/value pair object) to a equivelant Map. Map keys will be of type acceptable by Record constructor, * which are string, number or symbol. * diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 568a7e8..7b7425c 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -46,37 +46,38 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 /** - * + * @public + * Class for Opcodes number of stack pushes and pops */ export const pnp: Record number> = { /** - * + * @public */ zero: (opcode: number, operand: number) => 0, /** - * + * @public */ one: (opcode: number, operand: number) => 1, /** - * + * @public */ two: (opcode: number, operand: number) => 2, /** - * + * @public */ three: (opcode: number, operand: number) => 3, /** - * + * @public */ oprnd: (opcode: number, operand: number) => operand, /** - * + * @public */ derived: (opcode: number, operand: number) => { @@ -99,7 +100,7 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 }, /** - * + * @public */ zipmappush: (opcode: number, operand: number) => { return 2 ** ((operand >> 3) & 3); @@ -107,7 +108,7 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 }; /** - * + * @public */ export interface IOpMeta extends Record { @@ -121,7 +122,7 @@ export interface IOpMeta extends Record { } /** - * + * @public */ export const OpMeta: Map = new Map([ [ From 504848e0983ad4a3ce4ec3a7ab549155d7fb1b8a Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 19 Jul 2022 23:34:20 +0000 Subject: [PATCH 048/125] update docs --- src/jsvm/CombineTierJSVM.ts | 4 ++-- src/jsvm/EmissionsERC20JSVM.ts | 4 ++-- src/jsvm/OrderbookJSVM.ts | 4 ++-- src/jsvm/RainJSVM.ts | 16 ++++++++-------- src/jsvm/SaleJSVM.ts | 4 ++-- src/jsvm/types.ts | 2 +- 6 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/jsvm/CombineTierJSVM.ts b/src/jsvm/CombineTierJSVM.ts index d04d9ae..70bd96f 100644 --- a/src/jsvm/CombineTierJSVM.ts +++ b/src/jsvm/CombineTierJSVM.ts @@ -4,7 +4,7 @@ import { CombineTierStorage } from '../contracts/tiers/combineTier'; /** - * @public - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. + * @public - The javascript version of CombineTierVM which inherits RainJSVM with local CombineTier opcodes. * @see CombineTier.sol in contracts * */ @@ -22,7 +22,7 @@ export class CombineTierJSVM extends RainJSVM { /** * Constructor of CombineTierJSVM to create a instance of this class with CombineTier's local opcodes. - * @see RainJS + * @see RainJSVM * * @param state - A regular StateConfig * @param options - (optional) additional arguments for instantiating this class diff --git a/src/jsvm/EmissionsERC20JSVM.ts b/src/jsvm/EmissionsERC20JSVM.ts index d127cb5..dd90174 100644 --- a/src/jsvm/EmissionsERC20JSVM.ts +++ b/src/jsvm/EmissionsERC20JSVM.ts @@ -3,7 +3,7 @@ import { CallOptions, RainJSVM } from "./RainJSVM"; import { EmissionsERC20Context, EmissionsERC20Storage } from "../contracts/emissionsERC20"; /** - * @public - The javascript version of EmissionsERC20JSVM which inherits RainJS with local EmissionsERC20JSVM opcodes. + * @public - The javascript version of EmissionsERC20JSVM which inherits RainJSVM with local EmissionsERC20JSVM opcodes. * @see EmissionsERC20.sol in contracts * */ @@ -21,7 +21,7 @@ export class EmissionsERC20JSVM extends RainJSVM { /** * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. - * @see RainJS + * @see RainJSVM * * @param state - A regular StateConfig * @param options - (optional) additional arguments for instantiating this class diff --git a/src/jsvm/OrderbookJSVM.ts b/src/jsvm/OrderbookJSVM.ts index 0020545..96a3c2e 100644 --- a/src/jsvm/OrderbookJSVM.ts +++ b/src/jsvm/OrderbookJSVM.ts @@ -6,7 +6,7 @@ import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; // @TODO - not complete, local opcodes functions need to be added /** - * @public - The javascript version of OrderbookVM which inherits RainJS with local Orderbook opcodes. + * @public - The javascript version of OrderbookVM which inherits RainJSVM with local Orderbook opcodes. * @see Orderbook.sol in contracts * */ @@ -24,7 +24,7 @@ export class OrderbookJSVM extends RainJSVM { /** * Constructor of OrderbookJSVM to create a instance of this class with Orderbook's local opcodes. - * @see RainJS + * @see RainJSVM * * @param state - A regular StateConfig * @param options - (optional) additional arguments for instantiating this class diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts index 215a250..b9c72b4 100644 --- a/src/jsvm/RainJSVM.ts +++ b/src/jsvm/RainJSVM.ts @@ -31,13 +31,13 @@ export class RainJSVM { public readonly lastState: BigNumber[] = []; /** - * The property of type StateJSVM which that RainJS will run based on. + * The property of type StateJSVM which that RainJSVM will run based on. */ private readonly state: StateJSVM; /** * It is a property for overriding the opcodes. Need to ba passed at the time of construction - * because the RainJS opcode functions should not change after an instance has be created. + * because the RainJSVM opcode functions should not change after an instance has be created. */ public readonly applyOpFn?: FnPtrs; @@ -67,9 +67,9 @@ export class RainJSVM { protected readonly ContextRange?: number; /** - * The constructor of RainJS which initiates the RainJS and also a StateJSVM for a RainVM script. + * The constructor of RainJSVM which initiates the RainJSVM and also a StateJSVM for a RainVM script. * - * @param state - A regular StateConfig used to new a StateJSVM object to be used in RainJS. + * @param state - A regular StateConfig used to new a StateJSVM object to be used in RainJSVM. * @param options - (optional) used for initiating the optional properties (signer, provider, contract and applyOpFn) */ constructor(state: StateConfig, options?: CallOptions) { @@ -124,9 +124,9 @@ export class RainJSVM { protected readonly fnPtrs: FnPtrs; /** - * The main workhorse of RainJS, basically the javascript version of 'eval' method in RainVM.sol. + * The main workhorse of RainJSVM, basically the javascript version of 'eval' method in RainVM.sol. * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that - * has been passed at the time of cinstruction of a RainJS object. + * has been passed at the time of cinstruction of a RainJSVM object. * @see eval method in RainVM.sol * * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there @@ -193,13 +193,13 @@ export class RainJSVM { } /** - * Method to execute the RainJS. + * Method to execute the RainJSVM. * * @param data - (optional) Used as additional info for some local opcodes * or custom opcode functions i.e. applyOpFn. * @param entrypoint - the index of sources to start eval * - * @returns - An array represting the final state of the RainJS stack. + * @returns - An array represting the final state of the RainJSVM stack. */ public async run(data?: any, entrypoint?: number): Promise { diff --git a/src/jsvm/SaleJSVM.ts b/src/jsvm/SaleJSVM.ts index 2ec8955..8ae0880 100644 --- a/src/jsvm/SaleJSVM.ts +++ b/src/jsvm/SaleJSVM.ts @@ -7,7 +7,7 @@ import { FnPtrs, StateJSVM } from "./types"; /** - * @public - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. + * @public - The javascript version of SaleVM which inherits RainJSVM with local Sale opcodes. * @see Sale.sol in contracts * */ @@ -25,7 +25,7 @@ export class SaleJSVM extends RainJSVM { /** * Constructor of SaleJSVM to create a instance of this class with Sale's local opcodes. - * @see RainJS + * @see RainJSVM * * @param state - A regular StateConfig * @param options - (optional) additional arguments for instantiating this class diff --git a/src/jsvm/types.ts b/src/jsvm/types.ts index f374f5d..03c2739 100644 --- a/src/jsvm/types.ts +++ b/src/jsvm/types.ts @@ -39,7 +39,7 @@ export interface StateJSVM { readonly sources: Uint8Array[]; /** - * The RainJS's stack. + * The RainJSVM's stack. */ readonly stack: BigNumber[]; From 28e3ac39b742f4965e6e995915568aafd3b506c6 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 23 Jul 2022 15:07:23 +0000 Subject: [PATCH 049/125] Upgrades, SeedDance and AutoApprove + added SeedDance class + added AutoApprove class + update for all VM active contracts +test for SeedDance and AutoApprove + update other tests + some minor changes/cleanups --- docs/classes/autoapprove.md | 254 + docs/classes/combinetier.md | 20 +- docs/classes/combinetierjsvm.md | 6 +- docs/classes/emissionserc20.md | 26 +- docs/classes/emissionserc20jsvm.md | 6 +- docs/classes/orderbook.md | 12 +- docs/classes/rainjsvm.md | 10 +- docs/classes/sale.md | 26 +- docs/classes/salejsvm.md | 6 +- docs/classes/seeddance.md | 101 + docs/enums/autoapprovecontext.md | 19 + docs/enums/autoapprovestorage.md | 17 + docs/index.md | 18 +- docs/interfaces/statejsvm.md | 4 +- docs/types/addresses.md | 1 + docs/types/autoapproveops.md | 12 + docs/types/bountyconfig.md | 13 - docs/types/clearconfig.md | 17 + docs/types/evidenceconfig.md | 12 + docs/types/ioconfig.md | 13 + docs/types/order.md | 6 +- docs/types/orderconfig.md | 8 +- docs/types/timeboundconfig.md | 12 + package-lock.json | 25151 ++++++++++++++++ package.json | 2 +- src/addresses.ts | 13 +- src/contracts/autoApprove.ts | 247 + src/contracts/emissionsERC20.ts | 20 +- src/contracts/generics/seedDance.ts | 75 + src/contracts/orderBook.ts | 61 +- src/contracts/sale.ts | 11 +- .../combineTierScriptGenerator.ts | 89 +- .../script-generators/saleScriptGenerator.ts | 24 +- src/contracts/tiers/combineTier.ts | 28 +- src/index.ts | 4 +- src/jsvm/CombineTierJSVM.ts | 65 +- src/jsvm/EmissionsERC20JSVM.ts | 60 +- src/jsvm/OrderbookJSVM.ts | 135 +- src/jsvm/RainJSVM.ts | 833 +- src/jsvm/SaleJSVM.ts | 224 +- src/jsvm/lib/FixedPointMath.ts | 50 +- src/jsvm/lib/SaturatingMath.ts | 34 +- src/jsvm/lib/TierReport.ts | 38 +- src/jsvm/lib/TierwiseCombine.ts | 216 +- src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts | 22 +- .../ops/erc1155/OpERC1155BalanceOfBatch.ts | 52 +- src/jsvm/ops/erc20/OpERC20BalanceOf.ts | 18 +- src/jsvm/ops/erc20/OpERC20TotalSupply.ts | 14 +- .../snapshot/OpERC20SnapshotBalanceOfAt.ts | 22 +- .../snapshot/OpERC20SnapshotTotalSupplyAt.ts | 20 +- src/jsvm/ops/erc721/OpERC721BalanceOf.ts | 20 +- src/jsvm/ops/erc721/OpERC721OwnerOf.ts | 22 +- src/jsvm/ops/evm/OpBlockNumber.ts | 26 +- src/jsvm/ops/evm/OpCaller.ts | 16 +- src/jsvm/ops/evm/OpThisAddress.ts | 12 +- src/jsvm/ops/evm/OpTimestamp.ts | 26 +- src/jsvm/ops/math/OpAdd.ts | 28 +- src/jsvm/ops/math/OpDiv.ts | 30 +- src/jsvm/ops/math/OpExp.ts | 36 +- src/jsvm/ops/math/OpMax.ts | 14 +- src/jsvm/ops/math/OpMin.ts | 14 +- src/jsvm/ops/math/OpMod.ts | 30 +- src/jsvm/ops/math/OpMul.ts | 28 +- src/jsvm/ops/math/OpSub.ts | 34 +- src/jsvm/ops/math/fixedPoint/OpScale18.ts | 16 +- src/jsvm/ops/math/fixedPoint/OpScale18Div.ts | 18 +- src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts | 16 +- src/jsvm/ops/math/fixedPoint/OpScaleBy.ts | 12 +- src/jsvm/ops/math/fixedPoint/OpScaleN.ts | 16 +- src/jsvm/ops/math/logic/OpAny.ts | 40 +- src/jsvm/ops/math/logic/OpEagerIf.ts | 14 +- src/jsvm/ops/math/logic/OpEqualTo.ts | 16 +- src/jsvm/ops/math/logic/OpEvery.ts | 48 +- src/jsvm/ops/math/logic/OpGreaterThan.ts | 18 +- src/jsvm/ops/math/logic/OpIsZero.ts | 16 +- src/jsvm/ops/math/logic/OpLessThan.ts | 18 +- .../ops/math/saturating/OpSaturatingAdd.ts | 24 +- .../ops/math/saturating/OpSaturatingMul.ts | 28 +- .../ops/math/saturating/OpSaturatingSub.ts | 22 +- src/jsvm/ops/tier/OpITierV2Report.ts | 28 +- .../ops/tier/OpITierV2ReportTimesForTier.ts | 48 +- src/jsvm/ops/tier/OpSaturatingDiff.ts | 18 +- src/jsvm/ops/tier/OpSelectLte.ts | 24 +- .../ops/tier/OpUpdateTimesForTierRange.ts | 16 +- src/jsvm/simulation/CombineTierSimulation.ts | 112 +- .../simulation/EmissionsERC20Simulation.ts | 297 +- src/jsvm/simulation/Matchmaker.ts | 352 +- src/jsvm/simulation/OrderbookSimulation.ts | 933 +- src/jsvm/simulation/SaleSimulation.ts | 466 +- src/jsvm/simulation/vmSimulation.ts | 33 +- src/jsvm/types.ts | 194 +- src/typechain/AllStandardOpsStateBuilder.ts | 93 +- src/typechain/AllStandardOpsTest.ts | 46 +- src/typechain/AutoApprove.ts | 441 + src/typechain/AutoApproveFactory.ts | 190 + src/typechain/AutoApproveStateBuilder.ts | 225 + src/typechain/CombineTier.ts | 36 +- src/typechain/EmissionsERC20.ts | 36 +- src/typechain/FactoryChildTest.ts | 127 + src/typechain/FactoryCurator.ts | 203 + src/typechain/FactoryTest.ts | 180 + src/typechain/LibCommitmentTest.ts | 18 +- src/typechain/OrderBook.ts | 122 +- src/typechain/OrderBookStateBuilder.ts | 95 +- src/typechain/Ownable.ts | 158 + src/typechain/RainVM.ts | 26 +- src/typechain/ReadWriteTier.ts | 36 +- src/typechain/ReportOMeter.ts | 168 + src/typechain/Sale.ts | 36 +- src/typechain/StackHeightTest.ts | 36 +- src/typechain/Stake.ts | 36 + src/typechain/StandardStateBuilder.ts | 225 + .../{FnPtrsTest.ts => StandardVM.ts} | 69 +- src/typechain/VMStateBuilder.ts | 93 +- src/typechain/VerifyCallback.ts | 315 + .../AllStandardOpsStateBuilder__factory.ts | 60 +- .../factories/AllStandardOpsTest__factory.ts | 30 +- .../factories/AutoApproveFactory__factory.ts | 184 + .../AutoApproveStateBuilder__factory.ts | 262 + .../factories/AutoApprove__factory.ts | 379 + .../factories/CombineTierFactory__factory.ts | 2 +- .../factories/CombineTier__factory.ts | 28 +- src/typechain/factories/Cooldown__factory.ts | 2 +- .../factories/ERC20PulleeTest__factory.ts | 2 +- .../factories/ERC20Redeem__factory.ts | 2 +- .../EmissionsERC20Factory__factory.ts | 2 +- .../factories/EmissionsERC20__factory.ts | 28 +- .../factories/FactoryChildTest__factory.ts | 124 + .../factories/FactoryCurator__factory.ts | 287 + .../factories/FactoryTest__factory.ts | 158 + .../factories/FnPtrsTest__factory.ts | 142 - .../factories/LibCommitmentTest__factory.ts | 6 +- .../factories/LibSeedTest__factory.ts | 2 +- .../OrderBookStateBuilder__factory.ts | 64 +- src/typechain/factories/OrderBook__factory.ts | 446 +- src/typechain/factories/Ownable__factory.ts | 75 + src/typechain/factories/RainVM__factory.ts | 4 +- .../factories/RandomTest__factory.ts | 2 +- .../factories/ReadWriteTier__factory.ts | 16 +- ...eemableERC20ClaimEscrowWrapper__factory.ts | 2 +- .../RedeemableERC20ClaimEscrow__factory.ts | 2 +- .../RedeemableERC20Factory__factory.ts | 2 +- .../RedeemableERC20Reentrant__factory.ts | 2 +- .../factories/RedeemableERC20__factory.ts | 7 +- .../factories/ReportOMeter__factory.ts | 122 + .../factories/ReserveToken18__factory.ts | 2 +- .../factories/ReserveTokenERC1155__factory.ts | 2 +- .../factories/ReserveTokenERC721__factory.ts | 2 +- .../factories/ReserveToken__factory.ts | 2 +- .../factories/SaleFactory__factory.ts | 2 +- .../factories/SaleReentrant__factory.ts | 2 +- src/typechain/factories/Sale__factory.ts | 28 +- .../factories/SeedDanceTest__factory.ts | 2 +- src/typechain/factories/SeedDance__factory.ts | 2 +- .../factories/StackHeightTest__factory.ts | 28 +- .../factories/StakeFactory__factory.ts | 2 +- src/typechain/factories/Stake__factory.ts | 31 +- .../StandardStateBuilder__factory.ts | 262 + .../factories/StandardVM__factory.ts | 112 + .../factories/TierReportTest__factory.ts | 2 +- .../factories/TierV2Test__factory.ts | 2 +- .../factories/VMStateBuilder__factory.ts | 67 +- .../factories/VerifyCallbackTest__factory.ts | 2 +- .../factories/VerifyCallback__factory.ts | 233 + .../factories/VerifyFactory__factory.ts | 2 +- .../factories/VerifyTierFactory__factory.ts | 2 +- .../factories/VerifyTier__factory.ts | 7 +- src/typechain/factories/Verify__factory.ts | 7 +- src/typechain/hardhat.d.ts | 106 +- src/typechain/index.ts | 24 +- src/vm/HumanFreindlyRead.ts | 311 +- src/vm/OpMeta.ts | 128 +- test/{1_Init.test.ts => 0_Init.test.ts} | 37 +- test/{2_sale.test.ts => 1_Sale.test.ts} | 2 +- test/{5_escrow.test.ts => 2_Escrow.test.ts} | 2 +- test/3_verify.test.ts | 2 +- test/4_tiers.test.ts | 2 +- test/5_AutoApprove.test.ts | 203 + test/{8_Stake.test.ts => 6_Stake.test.ts} | 2 +- ..._Orderbook.test.ts => 7_Orderbook.test.ts} | 83 +- ...{6_RainJSVM.test.ts => 8_RainJSVM.test.ts} | 8 +- ...ad.test.ts => 9_HumanFriendlyRead.test.ts} | 2 +- test/OB_MatchMaker.test.ts | 213 + test/utils.ts | 1 + yarn.lock | 195 +- 185 files changed, 34660 insertions(+), 4244 deletions(-) create mode 100644 docs/classes/autoapprove.md create mode 100644 docs/classes/seeddance.md create mode 100644 docs/enums/autoapprovecontext.md create mode 100644 docs/enums/autoapprovestorage.md create mode 100644 docs/types/autoapproveops.md delete mode 100644 docs/types/bountyconfig.md create mode 100644 docs/types/clearconfig.md create mode 100644 docs/types/evidenceconfig.md create mode 100644 docs/types/ioconfig.md create mode 100644 docs/types/timeboundconfig.md create mode 100644 package-lock.json create mode 100644 src/contracts/autoApprove.ts create mode 100644 src/contracts/generics/seedDance.ts create mode 100644 src/typechain/AutoApprove.ts create mode 100644 src/typechain/AutoApproveFactory.ts create mode 100644 src/typechain/AutoApproveStateBuilder.ts create mode 100644 src/typechain/FactoryChildTest.ts create mode 100644 src/typechain/FactoryCurator.ts create mode 100644 src/typechain/FactoryTest.ts create mode 100644 src/typechain/Ownable.ts create mode 100644 src/typechain/ReportOMeter.ts create mode 100644 src/typechain/StandardStateBuilder.ts rename src/typechain/{FnPtrsTest.ts => StandardVM.ts} (58%) create mode 100644 src/typechain/VerifyCallback.ts create mode 100644 src/typechain/factories/AutoApproveFactory__factory.ts create mode 100644 src/typechain/factories/AutoApproveStateBuilder__factory.ts create mode 100644 src/typechain/factories/AutoApprove__factory.ts create mode 100644 src/typechain/factories/FactoryChildTest__factory.ts create mode 100644 src/typechain/factories/FactoryCurator__factory.ts create mode 100644 src/typechain/factories/FactoryTest__factory.ts delete mode 100644 src/typechain/factories/FnPtrsTest__factory.ts create mode 100644 src/typechain/factories/Ownable__factory.ts create mode 100644 src/typechain/factories/ReportOMeter__factory.ts create mode 100644 src/typechain/factories/StandardStateBuilder__factory.ts create mode 100644 src/typechain/factories/StandardVM__factory.ts create mode 100644 src/typechain/factories/VerifyCallback__factory.ts rename test/{1_Init.test.ts => 0_Init.test.ts} (92%) rename test/{2_sale.test.ts => 1_Sale.test.ts} (99%) rename test/{5_escrow.test.ts => 2_Escrow.test.ts} (99%) create mode 100644 test/5_AutoApprove.test.ts rename test/{8_Stake.test.ts => 6_Stake.test.ts} (99%) rename test/{9_Orderbook.test.ts => 7_Orderbook.test.ts} (92%) rename test/{6_RainJSVM.test.ts => 8_RainJSVM.test.ts} (99%) rename test/{7_HumanFriendlyRead.test.ts => 9_HumanFriendlyRead.test.ts} (99%) create mode 100644 test/OB_MatchMaker.test.ts diff --git a/docs/classes/autoapprove.md b/docs/classes/autoapprove.md new file mode 100644 index 0000000..a3e12d3 --- /dev/null +++ b/docs/classes/autoapprove.md @@ -0,0 +1,254 @@ + +# Class AutoApprove + +A class for calling method on a Rain AutoApprove contract. + +This class provides an easy way to interact with the AutoApprove contract. + +Signature: + +```typescript +class AutoApprove extends FactoryContract +``` + +## Example + + +```typescript +import { AutoApprove } from 'rain-sdk' + +// To deploy a new AutoApprove, pass an ethers.js Signer and the config for the AutoApprove. +const newAutoApprove = await AutoApprove.deploy(signer, stateConfig) + +// To connect to an existing AutoApprove just pass the address and an ethers.js Signer. +const existingAutoApprove = new AutoApprove(address, signer) + +``` + +## Static Properties + +| Property | Type | Description | +| --- | --- | --- | +| [deploy](./autoapprove.md#deploy-property-static) | `(signer: Signer, autoApproveConfig: StateConfig, overrides?: TxOverrides) => Promise` | Deploys a new AutoApprove. | +| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | +| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | +| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | +| [isChild](./autoapprove.md#isChild-property-static) | `(signer: Signer, maybeChild: string) => Promise` | Checks if address is registered as a child contract of this AutoApproveFactory on a specific network | +| [nameBookReference](./autoapprove.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | +| [Opcodes](./autoapprove.md#Opcodes-property-static) | [AutoApproveOps](../types/autoapproveops.md) | All the opcodes avaialbles in the AutoApprove contract. | + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | +| [afterAdd](./autoapprove.md#afterAdd-property) |
(arg0: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & {
    from?: string \| Promise;
}) => Promise
| | +| [afterApprove](./autoapprove.md#afterApprove-property) |
(approver_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & {
    from?: string \| Promise;
}) => Promise
| | +| [afterBan](./autoapprove.md#afterBan-property) |
(banner_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & {
    from?: string \| Promise;
}) => Promise
| | +| [afterRemove](./autoapprove.md#afterRemove-property) |
(remover_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & {
    from?: string \| Promise;
}) => Promise
| | +| [connect](./autoapprove.md#connect-property) | `(signer: Signer) => AutoApprove` | Connect to this AutoApprove instance with a new signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [owner](./autoapprove.md#owner-property) | `(overrides?: ReadTxOverrides) => Promise` | | +| [packedFunctionPointers](./autoapprove.md#packedFunctionPointers-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | +| [renounceOwnership](./autoapprove.md#renounceOwnership-property) |
(overrides?: TxOverrides & {
    from?: string \| Promise;
}) => Promise
| | +| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | +| [storageOpcodesRange](./autoapprove.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for AutoApprove's storage opcodes | +| [transferOwnership](./autoapprove.md#transferOwnership-property) |
(newOwner: string, overrides?: TxOverrides & {
    from?: string \| Promise;
}) => Promise
| | + +## Static Methods + +| Method | Description | +| --- | --- | +| [\_isChild(signer, maybeChild)](./factorycontract.md#_isChild-method-static-1) | Checks if address is registered as a child contract of the factory in the chain.

*Inherited from [FactoryContract.\_isChild()](./factorycontract.md#_isChild-method-static-1)* | +| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | +| [getNewChildFromReceipt(receipt, parentContract)](./factorycontract.md#getNewChildFromReceipt-method-static-1) | Get the child from a receipt obtain from a Factory transaction

*Inherited from [FactoryContract.getNewChildFromReceipt()](./factorycontract.md#getNewChildFromReceipt-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | + +## Static Property Details + + + +### deploy + +Deploys a new AutoApprove. + +Signature: + +```typescript +static deploy: (signer: Signer, autoApproveConfig: StateConfig, overrides?: TxOverrides) => Promise; +``` + + + +### isChild + +Checks if address is registered as a child contract of this AutoApproveFactory on a specific network + +Signature: + +```typescript +static isChild: (signer: Signer, maybeChild: string) => Promise; +``` + + + +### nameBookReference + +Name reference to find the address of the contract in the book address. + +*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* + +Should be implemented in each class to find the factory or main address in the book. + +Signature: + +```typescript +protected static readonly nameBookReference: string; +``` + + + +### Opcodes + +All the opcodes avaialbles in the AutoApprove contract. + +This expose all the standard opcodes along with the specific local AutoApprove opcodes. + +Signature: + +```typescript +static Opcodes: AutoApproveOps; +``` + +## Property Details + + + +### afterAdd + + +Signature: + +```typescript +readonly afterAdd: (arg0: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & { + from?: string | Promise; + }) => Promise; +``` + + + +### afterApprove + + +Signature: + +```typescript +readonly afterApprove: (approver_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & { + from?: string | Promise; + }) => Promise; +``` + + + +### afterBan + + +Signature: + +```typescript +readonly afterBan: (banner_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & { + from?: string | Promise; + }) => Promise; +``` + + + +### afterRemove + + +Signature: + +```typescript +readonly afterRemove: (remover_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & { + from?: string | Promise; + }) => Promise; +``` + + + +### connect + +Connect to this AutoApprove instance with a new signer + +*Overrides [RainContract.connect](./raincontract.md#connect-property)* + +Signature: + +```typescript +readonly connect: (signer: Signer) => AutoApprove; +``` + + + +### owner + + +Signature: + +```typescript +readonly owner: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### packedFunctionPointers + +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### renounceOwnership + + +Signature: + +```typescript +readonly renounceOwnership: (overrides?: TxOverrides & { + from?: string | Promise; + }) => Promise; +``` + + + +### storageOpcodesRange + +Returns the pointer and length for AutoApprove's storage opcodes + +Signature: + +```typescript +readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; +``` + + + +### transferOwnership + + +Signature: + +```typescript +readonly transferOwnership: (newOwner: string, overrides?: TxOverrides & { + from?: string | Promise; + }) => Promise; +``` diff --git a/docs/classes/combinetier.md b/docs/classes/combinetier.md index 98ac197..d085dfe 100644 --- a/docs/classes/combinetier.md +++ b/docs/classes/combinetier.md @@ -55,12 +55,13 @@ const alwaysTier = await CombineTier.getAlwaysTier(signer); | --- | --- | --- | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | | [connect](./combinetier.md#connect-property) | `(signer: Signer) => CombineTier` | Conncect to this CombineTier contract with another signer

*Overrides [ITierV2.connect](./itierv2.md#connect-property)* | -| [fnPtrs](./combinetier.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [ITierV2.levels](./itierv2.md#levels-property)* | +| [packedFunctionPointers](./combinetier.md#packedFunctionPointers-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [ITierV2.report](./itierv2.md#report-property)* | | [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually.

*Inherited from [ITierV2.reportTimeForTier](./itierv2.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | | [storageOpcodesRange](./combinetier.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for combineTier's storage opcodes | +| [supportsInterface](./combinetier.md#supportsInterface-property) | `(interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise` | | ## Static Methods @@ -176,16 +177,16 @@ Conncect to this CombineTier contract with another signer readonly connect: (signer: Signer) => CombineTier; ``` - + -### fnPtrs +### packedFunctionPointers Pointers to opcode functions, necessary for being able to read the packedBytes Signature: ```typescript -readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; ``` @@ -199,3 +200,14 @@ Returns the pointer and length for combineTier's storage opcodes ```typescript readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; ``` + + + +### supportsInterface + + +Signature: + +```typescript +readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; +``` diff --git a/docs/classes/combinetierjsvm.md b/docs/classes/combinetierjsvm.md index e73c4cf..3bc0ab3 100644 --- a/docs/classes/combinetierjsvm.md +++ b/docs/classes/combinetierjsvm.md @@ -1,7 +1,7 @@ # Class CombineTierJSVM -- The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. +- The javascript version of CombineTierVM which inherits RainJSVM with local CombineTier opcodes. Signature: @@ -13,7 +13,7 @@ class CombineTierJSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextLength](./combinetierjsvm.md#ContextLength-property) | `number` | CombineTierJSVM can have any length for context | @@ -40,7 +40,7 @@ class CombineTierJSVM extends RainJSVM | Method | Description | | --- | --- | | [connect(signer)](./rainjsvm.md#connect-method-1) |

*Inherited from [RainJSVM.connect()](./rainjsvm.md#connect-method-1)* | -| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJSVM.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | | [setContract(contract)](./rainjsvm.md#setContract-method-1) |

*Inherited from [RainJSVM.setContract()](./rainjsvm.md#setContract-method-1)* | ## Property Details diff --git a/docs/classes/emissionserc20.md b/docs/classes/emissionserc20.md index e25186a..0bef0fa 100644 --- a/docs/classes/emissionserc20.md +++ b/docs/classes/emissionserc20.md @@ -50,10 +50,10 @@ await EmissionsERC20.isChild(signer, newEmission.address); | [connect](./emissionserc20.md#connect-property) | `(signer: Signer) => EmissionsERC20` | Conncect to this EmissionsERC20 contract with another signer

*Overrides [ITierV2.connect](./itierv2.md#connect-property)* | | [decimals](./emissionserc20.md#decimals-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the number of decimals used to get its user representation. (It is always 18 for this contract type) | | [decreaseAllowance](./emissionserc20.md#decreaseAllowance-property) | `(spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automatically decreases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | -| [fnPtrs](./emissionserc20.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [increaseAllowance](./emissionserc20.md#increaseAllowance-property) | `(spender: string, addedValue: BigNumberish, overrides?: TxOverrides) => Promise` | Automically increases the allowance granted to `spender` for this token.

This is an alternative to `approve()` that can be used as a mitigation for problems described in https://github.com/ethereum/EIPs/issues/20\#issuecomment-263524729. | | [levels](./itierv2.md#levels-property) | `typeof Tier` | All the contract tier levels availables in all ITier contracts.

*Inherited from [ITierV2.levels](./itierv2.md#levels-property)* | | [name](./emissionserc20.md#name-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the name of the token. | +| [packedFunctionPointers](./emissionserc20.md#packedFunctionPointers-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [report](./itierv2.md#report-property) | `(account: string, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | A tier report is a `uint256` that contains each of the block numbers each tier has been held continously since as a `uint32`.

*Inherited from [ITierV2.report](./itierv2.md#report-property)* | | [reportTimeForTier](./itierv2.md#reportTimeForTier-property) | `(account: string, tier: BigNumberish, context: BigNumberish[], overrides?: ReadTxOverrides) => Promise` | Same as report but only returns the time for a single tier. Often the implementing contract can calculate a single tier more efficiently than all 8 tiers. If the consumer only needs one or a few tiers it MAY be much cheaper to request only those tiers individually.

*Inherited from [ITierV2.reportTimeForTier](./itierv2.md#reportTimeForTier-property)* | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | @@ -236,18 +236,6 @@ This is an alternative to `approve()` that can be used as a mitigation for probl readonly decreaseAllowance: (spender: string, subtractedValue: BigNumberish, overrides?: TxOverrides) => Promise; ``` - - -### fnPtrs - -Pointers to opcode functions, necessary for being able to read the packedBytes - -Signature: - -```typescript -readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; -``` - ### increaseAllowance @@ -274,6 +262,18 @@ Returns the name of the token. readonly name: (overrides?: ReadTxOverrides) => Promise; ``` + + +### packedFunctionPointers + +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; +``` + ### storageOpcodesRange diff --git a/docs/classes/emissionserc20jsvm.md b/docs/classes/emissionserc20jsvm.md index 36cdff2..deb26f8 100644 --- a/docs/classes/emissionserc20jsvm.md +++ b/docs/classes/emissionserc20jsvm.md @@ -1,7 +1,7 @@ # Class EmissionsERC20JSVM -- The javascript version of EmissionsERC20JSVM which inherits RainJS with local EmissionsERC20JSVM opcodes. +- The javascript version of EmissionsERC20JSVM which inherits RainJSVM with local EmissionsERC20JSVM opcodes. Signature: @@ -13,7 +13,7 @@ class EmissionsERC20JSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextLength](./emissionserc20jsvm.md#ContextLength-property) | `` | EmissionsERC20JSVM valid context length | @@ -40,7 +40,7 @@ class EmissionsERC20JSVM extends RainJSVM | Method | Description | | --- | --- | | [connect(signer)](./rainjsvm.md#connect-method-1) |

*Inherited from [RainJSVM.connect()](./rainjsvm.md#connect-method-1)* | -| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJSVM.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | | [setContract(contract)](./rainjsvm.md#setContract-method-1) |

*Inherited from [RainJSVM.setContract()](./rainjsvm.md#setContract-method-1)* | ## Property Details diff --git a/docs/classes/orderbook.md b/docs/classes/orderbook.md index f8c6e43..d047bfa 100644 --- a/docs/classes/orderbook.md +++ b/docs/classes/orderbook.md @@ -51,10 +51,10 @@ const tx = await orderBook.addOrder(addOrderArg); | --- | --- | --- | | [addOrder](./orderbook.md#addOrder-property) | `(orderConfig_: OrderConfig, overrides?: TxOverrides) => Promise` | Adds an order config for signer (as the owner) into the Orderbook | | [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | -| [clear](./orderbook.md#clear-property) | `(a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: TxOverrides) => Promise` | Clears 2 matching order against each other, a\_ inputToken must match to b\_ outputToken and a\_ outputToken must match to b\_ inputToken. Order a\_ clears into Order b\_ and vice versa. The difference of the clearing amounts will go into the bounty's vaults and if any of them are negative then the transaction will revert | +| [clear](./orderbook.md#clear-property) | `(a_: Order, b_: Order, clearConfig_: ClearConfig, overrides?: TxOverrides) => Promise` | Clears 2 matching order against each other, a\_ inputToken must match to b\_ outputToken and a\_ outputToken must match to b\_ inputToken. Order a\_ clears into Order b\_ and vice versa. The difference of the clearing amounts will go into the bounty's vaults and if any of them are negative then the transaction will revert | | [connect](./orderbook.md#connect-property) | `(signer: Signer) => OrderBook` | Connect to this Orderbook instance with a new signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [deposit](./orderbook.md#deposit-property) | `(config_: DepositConfig, overrides?: TxOverrides) => Promise` | Allows the sender to deposit any tokens into their own vaults. The deposit will be 'config\_.amount' of the 'config\_.token' into 'config\_.vaultId' | -| [fnPtrs](./orderbook.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | +| [packedFunctionPointers](./orderbook.md#packedFunctionPointers-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [removeOrder](./orderbook.md#removeOrder-property) | `(order_: Order, overrides?: TxOverrides) => Promise` | Removes an order from the Orderbook completely. | | [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | | [storageOpcodesRange](./orderbook.md#storageOpcodesRange-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the pointer and length for sale's storage opcodes | @@ -141,7 +141,7 @@ Clears 2 matching order against each other, a\_ inputToken must match to b\_ out Signature: ```typescript -readonly clear: (a_: Order, b_: Order, bountyConfig_: BountyConfig, overrides?: TxOverrides) => Promise; +readonly clear: (a_: Order, b_: Order, clearConfig_: ClearConfig, overrides?: TxOverrides) => Promise; ``` @@ -170,16 +170,16 @@ Allows the sender to deposit any tokens into their own vaults. The deposit will readonly deposit: (config_: DepositConfig, overrides?: TxOverrides) => Promise; ``` - + -### fnPtrs +### packedFunctionPointers Pointers to opcode functions, necessary for being able to read the packedBytes Signature: ```typescript -readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; ``` diff --git a/docs/classes/rainjsvm.md b/docs/classes/rainjsvm.md index 3468a24..393e451 100644 --- a/docs/classes/rainjsvm.md +++ b/docs/classes/rainjsvm.md @@ -13,7 +13,7 @@ class RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created. | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created. | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` | | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` | | | [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval | @@ -39,7 +39,7 @@ class RainJSVM | Method | Description | | --- | --- | | [connect(signer)](./rainjsvm.md#connect-method-1) | | -| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS. | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJSVM. | | [setContract(contract)](./rainjsvm.md#setContract-method-1) | | ## Property Details @@ -48,7 +48,7 @@ class RainJSVM ### applyOpFn -It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created. +It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created. Signature: @@ -253,7 +253,7 @@ connect(signer: Signer): this; ### run(data, entrypoint) -Method to execute the RainJS. +Method to execute the RainJSVM. Signature: @@ -272,7 +272,7 @@ run(data?: any, entrypoint?: number): Promise; `Promise` -- An array represting the final state of the RainJS stack. +- An array represting the final state of the RainJSVM stack. diff --git a/docs/classes/sale.md b/docs/classes/sale.md index 089c5a8..886a5d0 100644 --- a/docs/classes/sale.md +++ b/docs/classes/sale.md @@ -50,9 +50,9 @@ await existingSale.buy(config_) | [claimFees](./sale.md#claimFees-property) | `(recipient: string, overrides?: TxOverrides) => Promise` | After a sale ends in success all fees collected for a recipient can be cleared. If the raise is active or fails then fees cannot be claimed as they are set aside in case of refund. A failed raise implies that all buyers should immediately refund and zero fees claimed. | | [connect](./sale.md#connect-property) | `(signer: Signer) => Sale` | Conncect to this Sale contract with another signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | | [end](./sale.md#end-property) | `(overrides?: TxOverrides) => Promise` | End the sale (move from active to success or fail). This is also done automatically inline with each `buy` call so is optional for anon to call outside of a purchase. - `canLive` MUST return true and sale status must be either `Active`. | -| [fnPtrs](./sale.md#fnPtrs-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [getRedeemable](./sale.md#getRedeemable-property) | `(signer?: Signer) => Promise` | Obtain the instance redeemable token from this sale. | | [getReserve](./sale.md#getReserve-property) | `(signer?: Signer) => Promise` | Obtain the instance of the reserve from this sale as a generic ERC20 Token | +| [packedFunctionPointers](./sale.md#packedFunctionPointers-property) | `(overrides?: ReadTxOverrides) => Promise` | Pointers to opcode functions, necessary for being able to read the packedBytes | | [refund](./sale.md#refund-property) | `(receipt: Receipt, overrides?: TxOverrides) => Promise` | Rollback a buy given its receipt. Ignoring gas (which cannot be refunded) the refund process rolls back all state changes caused by a buy, other than the receipt id increment. Refunds are limited by the global cooldown to mitigate rapid buy/refund cycling that could cause volatile price curves or other unwanted side effects for other sale participants. Cooldowns are bypassed if the sale ends and is a failure. | | [reserve](./sale.md#reserve-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the address of the token that sale prices are denominated in. MUST NOT change during the lifecycle of the sale contract. | | [saleStatus](./sale.md#saleStatus-property) | `(overrides?: ReadTxOverrides) => Promise` | Returns the current `SaleStatus` of the sale. Represents a linear progression of the sale through its major lifecycle events. | @@ -194,18 +194,6 @@ End the sale (move from active to success or fail). This is also done automatica readonly end: (overrides?: TxOverrides) => Promise; ``` - - -### fnPtrs - -Pointers to opcode functions, necessary for being able to read the packedBytes - -Signature: - -```typescript -readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; -``` - ### getRedeemable @@ -230,6 +218,18 @@ Obtain the instance of the reserve from this sale as a generic ERC20 Token readonly getReserve: (signer?: Signer) => Promise; ``` + + +### packedFunctionPointers + +Pointers to opcode functions, necessary for being able to read the packedBytes + +Signature: + +```typescript +readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; +``` + ### refund diff --git a/docs/classes/salejsvm.md b/docs/classes/salejsvm.md index 880035a..0f594bd 100644 --- a/docs/classes/salejsvm.md +++ b/docs/classes/salejsvm.md @@ -1,7 +1,7 @@ # Class SaleJSVM -- The javascript version of SaleVM which inherits RainJS with local Sale opcodes. +- The javascript version of SaleVM which inherits RainJSVM with local Sale opcodes. Signature: @@ -13,7 +13,7 @@ class SaleJSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJS opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextRange](./salejsvm.md#ContextRange-property) | `` | SaleJSVM valid context length

*Overrides [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | @@ -39,7 +39,7 @@ class SaleJSVM extends RainJSVM | Method | Description | | --- | --- | | [connect(signer)](./rainjsvm.md#connect-method-1) |

*Inherited from [RainJSVM.connect()](./rainjsvm.md#connect-method-1)* | -| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJS.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | +| [run(data, entrypoint)](./rainjsvm.md#run-method-1) | Method to execute the RainJSVM.

*Inherited from [RainJSVM.run()](./rainjsvm.md#run-method-1)* | | [setContract(contract)](./rainjsvm.md#setContract-method-1) |

*Inherited from [RainJSVM.setContract()](./rainjsvm.md#setContract-method-1)* | ## Property Details diff --git a/docs/classes/seeddance.md b/docs/classes/seeddance.md new file mode 100644 index 0000000..8409f6a --- /dev/null +++ b/docs/classes/seeddance.md @@ -0,0 +1,101 @@ + +# Class SeedDance + +A class for calling method on a Rain SeedDance contract. + +This class provides an easy way to interact with the SeedDance contract. + +Signature: + +```typescript +class SeedDance extends RainContract +``` + +## Example + + +```typescript +import { SeedDance } from 'rain-sdk' + +const seedDance = await SeedDance.get(signer); +or +const seedDance = new SeedDance(address, signer); + +const tx = await seedDance.canRevealUntil(requiredArgs); + +``` + +## Static Properties + +| Property | Type | Description | +| --- | --- | --- | +| [getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static) | `(chainId: number) => Addresses` | Obtain all the addresses deployed in a specific network with a chain ID.

*Inherited from [AddressBook.getAddressesForChainId](./addressbook.md#getAddressesForChainId-property-static)* | +| [getChainId](./raincontract.md#getChainId-property-static) | `(signerOrProvider: Signer \| Provider) => Promise` | Get the chain ID from a valid ethers provider.

Request to the provider stored in the signer which is the chain ID.

*Inherited from [RainContract.getChainId](./raincontract.md#getChainId-property-static)* | +| [getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static) | `(chainId: number) => string` | Obtain the latest subgraph endpoint related to the version that use the SDK.

*Inherited from [AddressBook.getSubgraphEndpoint](./addressbook.md#getSubgraphEndpoint-property-static)* | +| [nameBookReference](./seeddance.md#nameBookReference-property-static) | `string` | Name reference to find the address of the contract in the book address.

*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* | + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [address](./raincontract.md#address-property) | `string` | The contract address of the instance.

*Inherited from [RainContract.address](./raincontract.md#address-property)* | +| [canRevealUntil](./seeddance.md#canRevealUntil-property) | `(seed_: BigNumberish, start_: BigNumberish, timeBound_: TimeBoundConfig, owner_: string, overrides?: ReadTxOverrides) => Promise` | | +| [connect](./seeddance.md#connect-property) | `(signer: Signer) => SeedDance` | Connect to this SeedDance instance with a new signer

*Overrides [RainContract.connect](./raincontract.md#connect-property)* | +| [signer](./raincontract.md#signer-property) | `Signer` | The ethers signer that is connected to the instance.

*Inherited from [RainContract.signer](./raincontract.md#signer-property)* | + +## Static Methods + +| Method | Description | +| --- | --- | +| [getBookAddress(chainId)](./raincontract.md#getBookAddress-method-static-1) | Get the address stored in the book for a determined chain if it is available.

*Inherited from [RainContract.getBookAddress()](./raincontract.md#getBookAddress-method-static-1)* | + +## Methods + +| Method | Description | +| --- | --- | +| [checkAddress(address, message)](./raincontract.md#checkAddress-method-1) | Check if an address is correctly formatted and throw an error if it is not an valid address

*Inherited from [RainContract.checkAddress()](./raincontract.md#checkAddress-method-1)* | + +## Static Property Details + + + +### nameBookReference + +Name reference to find the address of the contract in the book address. + +*Overrides [RainContract.nameBookReference](./raincontract.md#nameBookReference-property-static)* + +Should be implemented in each class to find the factory or main address in the book. + +Signature: + +```typescript +protected static readonly nameBookReference: string; +``` + +## Property Details + + + +### canRevealUntil + + +Signature: + +```typescript +readonly canRevealUntil: (seed_: BigNumberish, start_: BigNumberish, timeBound_: TimeBoundConfig, owner_: string, overrides?: ReadTxOverrides) => Promise; +``` + + + +### connect + +Connect to this SeedDance instance with a new signer + +*Overrides [RainContract.connect](./raincontract.md#connect-property)* + +Signature: + +```typescript +readonly connect: (signer: Signer) => SeedDance; +``` diff --git a/docs/enums/autoapprovecontext.md b/docs/enums/autoapprovecontext.md new file mode 100644 index 0000000..6b07f9e --- /dev/null +++ b/docs/enums/autoapprovecontext.md @@ -0,0 +1,19 @@ + +# Enum AutoApproveContext + +Enum for operand of the AutoApprove's CONTEXT opcode + +Signature: + +```typescript +enum AutoApproveContext +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| Account | `0` | 0 or the index of the context array for AutoApprove CONTEXT opcode stacks the caller Account address | +| Data | `1` | 1 or the index of the context array in the AutoApprove CONTEXT opcode stacks data | +| length | `2` | length of AutoApprove's valid context opcodes operands | + diff --git a/docs/enums/autoapprovestorage.md b/docs/enums/autoapprovestorage.md new file mode 100644 index 0000000..29cc0ed --- /dev/null +++ b/docs/enums/autoapprovestorage.md @@ -0,0 +1,17 @@ + +# Enum AutoApproveStorage + +Enum for operand of the AutoApprove's STORAGE opcode + +Signature: + +```typescript +enum AutoApproveStorage +``` + +## Enumeration Members + +| Member | Value | Description | +| --- | --- | --- | +| length | `0` | length of AutoApprove's valid storage opcodes operands | + diff --git a/docs/index.md b/docs/index.md index 1454816..a5c5865 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,17 +5,18 @@ | Class | Description | | --- | --- | | [AddressBook](./classes/addressbook.md) | Class related to handle and obtain all the addresses and tools (like Subgraph) deployed by chain and stored in the SDK. | +| [AutoApprove](./classes/autoapprove.md) | A class for calling method on a Rain AutoApprove contract. | | [BetweenBlocks](./classes/betweenblocks.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on block number. | | [BetweenTimestamps](./classes/betweentimestamps.md) | - A class used for creating a VM state for Sale's canLive StateConfig based on timestamp. | | [BuildReport](./classes/buildreport.md) | A class for creating a report-like script which inherits from CombineTierGenerator | | [BuyAmount](./classes/buyamount.md) | The fisrt piece of script in a sale's amount/price pair script which determines the amoount or cap that can be bought. | | [CombineTier](./classes/combinetier.md) | Class for deploying and calling methods on a CombineTier contract, providin easy way to interact with deployed CombineTiers. | | [CombineTierGenerator](./classes/combinetiergenerator.md) | The script generator for generating CombineTier scripts although it is worth mentioning that the usecases would not be only limited to CombineTier contract and can be used for any script. | -| [CombineTierJSVM](./classes/combinetierjsvm.md) | - The javascript version of CombineTierVM which inherits RainJS with local CombineTier opcodes. | +| [CombineTierJSVM](./classes/combinetierjsvm.md) | - The javascript version of CombineTierVM which inherits RainJSVM with local CombineTier opcodes. | | [CombinetierSimulation](./classes/combinetiersimulation.md) | A class for creating a simulation environment for simulating a CombineTier contract off-chain using JSVM. | | [CreateERC20](./classes/createerc20.md) | A class to creat a an ERC20 token with ability to be a faucet. owner can mint extar token if i=the token is not fixed supply. It can be claimed x number of tokens once every number of blocks passed which is defined by the faucet at the time of deployment. | | [EmissionsERC20](./classes/emissionserc20.md) | A class for calling methods on a EmissionsERC20. | -| [EmissionsERC20JSVM](./classes/emissionserc20jsvm.md) | - The javascript version of EmissionsERC20JSVM which inherits RainJS with local EmissionsERC20JSVM opcodes. | +| [EmissionsERC20JSVM](./classes/emissionserc20jsvm.md) | - The javascript version of EmissionsERC20JSVM which inherits RainJSVM with local EmissionsERC20JSVM opcodes. | | [EmissionSmiulation](./classes/emissionsmiulation.md) | A class for creating a simulation environment for simulating a EmissionsERC20 contract off-chain using JSVM. | | [ERC1155](./classes/erc1155.md) | A generic ERC1155 interface to get connected to any ERC1155 address and make transactions. | | [ERC1155BalanceTier](./classes/erc1155balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC1155BalancTier witha certain toke ID | @@ -39,9 +40,10 @@ | [RedeemableERC20](./classes/redeemableerc20.md) | A class for calling methods on a RedeemableERC20. | | [RedeemableERC20ClaimEscrow](./classes/redeemableerc20claimescrow.md) | A class for calling methods on a RedeemableERC20ClaimEscrow. | | [Sale](./classes/sale.md) | A class for deploying and calling methods on a Sale. | -| [SaleJSVM](./classes/salejsvm.md) | - The javascript version of SaleVM which inherits RainJS with local Sale opcodes. | +| [SaleJSVM](./classes/salejsvm.md) | - The javascript version of SaleVM which inherits RainJSVM with local Sale opcodes. | | [SaleSimulation](./classes/salesimulation.md) | A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. | | [SaleVmFrom](./classes/salevmfrom.md) | Builds a sale compatible StateConfig out of 2 individual StateConfigs (canLive and calculateBuy) | +| [SeedDance](./classes/seeddance.md) | A class for calling method on a Rain SeedDance contract. | | [SequentialEmissions](./classes/sequentialemissions.md) | A sequential minting emission, minting can only be done once in every period of time, also can set a max reward with increment over the span of several periods. | | [Stake](./classes/stake.md) | A class for calling methods on a Stake. | | [Verify](./classes/verify.md) | A class for deploying and calling methods on a Verify. | @@ -55,6 +57,8 @@ | Enumeration | Description | | --- | --- | | [AllStandardOps](./enums/allstandardops.md) | All the standard Op Codes | +| [AutoApproveContext](./enums/autoapprovecontext.md) | Enum for operand of the AutoApprove's CONTEXT opcode | +| [AutoApproveStorage](./enums/autoapprovestorage.md) | Enum for operand of the AutoApprove's STORAGE opcode | | [BuyCapMode](./enums/buycapmode.md) | Standard cap per wallet modes | | [CombineTierContext](./enums/combinetiercontext.md) | Enum for operand of the combineTier's CONTEXT opcode | | [CombineTierStorage](./enums/combinetierstorage.md) | Enum for operand of the CombineTier's STORAGE opcode | @@ -182,19 +186,23 @@ | Type Alias | Description | | --- | --- | | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | -| [BountyConfig](./types/bountyconfig.md) | Type for bounty vaultIds used when in | +| [AutoApproveOps](./types/autoapproveops.md) | Type for the opcodes availables in a AutoApprove instance. | | [CallOptions](./types/calloptions.md) | Options for instantiating RainJSVM | +| [ClearConfig](./types/clearconfig.md) | Type for clear vaultIds used when in | | [ClearStateChange](./types/clearstatechange.md) | Type for changes in state of an orderbook vaults after an successful clear | | [CombineTierDeployArgs](./types/combinetierdeployargs.md) | The argument of the CombineTier. The StateConfig will be deployed as a pointer under VM State Pointer. | | [Config](./types/config.md) | Specific the configuration of the generation method | | [DepositConfig](./types/depositconfig.md) | Type for depositing some token amount into a vault used in | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | +| [EvidenceConfig](./types/evidenceconfig.md) | | +| [IOConfig](./types/ioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | -| [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner

'inputToken' address - the desired token to be recieved if order clears 'inputVaultId' corresponding inputToken vault 'outputToken' address - the token to be paid if order clears 'outputVaultId' corresponding outputToken vault 'tracking' the tracking state of the order 'vmState' the | +| [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | | [PrettifyConfig](./types/prettifyconfig.md) | Specific the configuration of the Prettify method. | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | +| [TimeBoundConfig](./types/timeboundconfig.md) | | | [WithdrawConfig](./types/withdrawconfig.md) | Type for withdrawing some token amount from a vault used in | diff --git a/docs/interfaces/statejsvm.md b/docs/interfaces/statejsvm.md index 7d2b33a..067bb1c 100644 --- a/docs/interfaces/statejsvm.md +++ b/docs/interfaces/statejsvm.md @@ -16,7 +16,7 @@ interface StateJSVM | [argumentsStack](./statejsvm.md#argumentsStack-property) | `BigNumber[]` | Used only for zipmap opcode | | [constants](./statejsvm.md#constants-property) | `BigNumber[]` | The property to store the RainVM script constants. | | [sources](./statejsvm.md#sources-property) | `Uint8Array[]` | The property to store the RainVM script sources. | -| [stack](./statejsvm.md#stack-property) | `BigNumber[]` | The RainJS's stack. | +| [stack](./statejsvm.md#stack-property) | `BigNumber[]` | The RainJSVM's stack. | ## Property Details @@ -60,7 +60,7 @@ readonly sources: Uint8Array[]; ### stack -The RainJS's stack. +The RainJSVM's stack. Signature: diff --git a/docs/types/addresses.md b/docs/types/addresses.md index 2b3012b..179faf9 100644 --- a/docs/types/addresses.md +++ b/docs/types/addresses.md @@ -20,5 +20,6 @@ type Addresses = { alwaysTier: string; stakeFactory: string; orderBook: string; + autoApproveFactory: string; }; ``` diff --git a/docs/types/autoapproveops.md b/docs/types/autoapproveops.md new file mode 100644 index 0000000..47b16ac --- /dev/null +++ b/docs/types/autoapproveops.md @@ -0,0 +1,12 @@ + +# Type AutoApproveOps + +Type for the opcodes availables in a AutoApprove instance. + +Signature: + +```typescript +type AutoApproveOps = typeof AllStandardOps & { + EVIDENCE_DATA_APPROVED: number; +}; +``` diff --git a/docs/types/bountyconfig.md b/docs/types/bountyconfig.md deleted file mode 100644 index 906c31b..0000000 --- a/docs/types/bountyconfig.md +++ /dev/null @@ -1,13 +0,0 @@ - -# Type BountyConfig - -Type for bounty vaultIds used when in - -Signature: - -```typescript -type BountyConfig = { - aVaultId: BigNumberish; - bVaultId: BigNumberish; -}; -``` diff --git a/docs/types/clearconfig.md b/docs/types/clearconfig.md new file mode 100644 index 0000000..56e3fb2 --- /dev/null +++ b/docs/types/clearconfig.md @@ -0,0 +1,17 @@ + +# Type ClearConfig + +Type for clear vaultIds used when in + +Signature: + +```typescript +type ClearConfig = { + aInputIndex: BigNumberish; + aOutputIndex: BigNumberish; + bInputIndex: BigNumberish; + bOutputIndex: BigNumberish; + aBountyVaultId: BigNumberish; + bBountyVaultId: BigNumberish; +}; +``` diff --git a/docs/types/evidenceconfig.md b/docs/types/evidenceconfig.md new file mode 100644 index 0000000..e44e753 --- /dev/null +++ b/docs/types/evidenceconfig.md @@ -0,0 +1,12 @@ + +# Type EvidenceConfig + + +Signature: + +```typescript +type EvidenceConfig = { + account: string; + data: string; +}; +``` diff --git a/docs/types/ioconfig.md b/docs/types/ioconfig.md new file mode 100644 index 0000000..d0e0d87 --- /dev/null +++ b/docs/types/ioconfig.md @@ -0,0 +1,13 @@ + +# Type IOConfig + +token the address of the desired token vaultId corresponding token vault id + +Signature: + +```typescript +type IOConfig = { + token: string; + vaultId: BigNumberish; +}; +``` diff --git a/docs/types/order.md b/docs/types/order.md index 331f456..00ba2e1 100644 --- a/docs/types/order.md +++ b/docs/types/order.md @@ -8,10 +8,8 @@ Type for an order containing all that is required in an order. An Order is an ```typescript type Order = { owner: string; - inputToken: string; - inputVaultId: BigNumberish; - outputToken: string; - outputVaultId: BigNumberish; + validInputs: IOConfig[]; + validOutputs: IOConfig[]; tracking: BigNumberish; vmState: BytesLike; }; diff --git a/docs/types/orderconfig.md b/docs/types/orderconfig.md index 307d736..7e32222 100644 --- a/docs/types/orderconfig.md +++ b/docs/types/orderconfig.md @@ -3,16 +3,12 @@ A type for an order configuration without any specific owner -'inputToken' address - the desired token to be recieved if order clears 'inputVaultId' corresponding inputToken vault 'outputToken' address - the token to be paid if order clears 'outputVaultId' corresponding outputToken vault 'tracking' the tracking state of the order 'vmState' the - Signature: ```typescript type OrderConfig = { - inputToken: string; - inputVaultId: BigNumberish; - outputToken: string; - outputVaultId: BigNumberish; + validInputs: IOConfig[]; + validOutputs: IOConfig[]; tracking: BigNumberish; vmStateConfig: StateConfig; }; diff --git a/docs/types/timeboundconfig.md b/docs/types/timeboundconfig.md new file mode 100644 index 0000000..f831644 --- /dev/null +++ b/docs/types/timeboundconfig.md @@ -0,0 +1,12 @@ + +# Type TimeBoundConfig + + +Signature: + +```typescript +type TimeBoundConfig = { + baseDuration: BigNumberish; + maxExtraTime: BigNumberish; +}; +``` diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..854e9a4 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,25151 @@ +{ + "name": "rain-sdk", + "version": "2.1.1-beta", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", + "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", + "dev": true + }, + "@babel/core": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.9.tgz", + "integrity": "sha512-1LIb1eL8APMy91/IMW+31ckrfBM4yCoLaVzoDhZUKSM4cu1L1nIidyxkCgzPAgrC5WEz36IPEr/eSeSF9pIn+g==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + } + }, + "@babel/generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", + "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", + "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.20.2", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", + "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", + "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.1.0" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", + "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", + "dev": true, + "requires": { + "@babel/template": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", + "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.18.6", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", + "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", + "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-simple-access": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", + "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", + "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", + "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", + "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.18.9", + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helpers": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", + "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", + "dev": true, + "requires": { + "@babel/template": "^7.18.6", + "@babel/traverse": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", + "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", + "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", + "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.18.8" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", + "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", + "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", + "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", + "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-replace-supers": "^7.18.9", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", + "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", + "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", + "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-simple-access": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", + "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-identifier": "^7.18.6", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", + "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", + "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", + "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", + "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", + "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.9.tgz", + "integrity": "sha512-75pt/q95cMIHWssYtyfjVlvI+QEZQThQbKvR9xH+F/Agtw/s4Wfc2V9Bwd/P39VtixB7oWxGdH4GteTTwYJWMg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.6", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.6", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.1", + "babel-plugin-polyfill-corejs3": "^0.5.2", + "babel-plugin-polyfill-regenerator": "^0.3.1", + "core-js-compat": "^3.22.1", + "semver": "^6.3.0" + }, + "dependencies": { + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", + "dev": true, + "requires": { + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", + "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.6", + "@babel/types": "^7.18.6" + } + }, + "@babel/traverse": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", + "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.9", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.18.9", + "@babel/types": "^7.18.9", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", + "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@beehiveinnovation/rain-protocol": { + "version": "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff", + "from": "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff", + "dev": true, + "requires": { + "@openzeppelin/contracts": "=4.7.0", + "@openzeppelin/contracts-upgradeable": "=4.7.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@discoveryjs/natural-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@discoveryjs/natural-compare/-/natural-compare-1.0.0.tgz", + "integrity": "sha512-Pq35vJMxLZq4whZhyaMGO/89mmFee2+6NojaXD2bNo+7CxI6P7C1tncgQ0CM60+WueRMr8uFDKSX/8KitImCQg==", + "dev": true + }, + "@ensdomains/ens": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", + "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", + "dev": true, + "requires": { + "bluebird": "^3.5.2", + "eth-ens-namehash": "^2.0.8", + "solc": "^0.4.20", + "testrpc": "0.0.1", + "web3-utils": "^1.0.0-beta.31" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "solc": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", + "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", + "dev": true, + "requires": { + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha512-LqodLrnIDM3IFT+Hf/5sxBnEGECrfdC1uIbgZeJmESCSo4HoCAaKEus8MylXHAkdacGc0ye+Qa+dpkuom8uVYA==", + "dev": true, + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha512-9pIKIJhnI5tonzG6OnCFlz/yln8xHYcGl+pn3xR0Vzff0vzN1PbNRaelgfgRUwZ3s4i3jvxT9WhmUGL4whnasA==", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + } + } + } + }, + "@ensdomains/resolver": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", + "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", + "dev": true + }, + "@ethereum-waffle/chai": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.4.tgz", + "integrity": "sha512-/K8czydBtXXkcM9X6q29EqEkc5dN3oYenyH2a9hF7rGAApAJUpH8QBtojxOY/xQ2up5W332jqgxwp0yPiYug1g==", + "dev": true, + "requires": { + "@ethereum-waffle/provider": "^3.4.4", + "ethers": "^5.5.2" + }, + "dependencies": { + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + } + } + }, + "@ethereum-waffle/compiler": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.4.tgz", + "integrity": "sha512-RUK3axJ8IkD5xpWjWoJgyHclOeEzDLQFga6gKpeGxiS/zBu+HB0W2FvsrrLalTFIaPw/CGYACRBSIxqiCqwqTQ==", + "dev": true, + "requires": { + "@resolver-engine/imports": "^0.3.3", + "@resolver-engine/imports-fs": "^0.3.3", + "@typechain/ethers-v5": "^2.0.0", + "@types/mkdirp": "^0.5.2", + "@types/node-fetch": "^2.5.5", + "ethers": "^5.0.1", + "mkdirp": "^0.5.1", + "node-fetch": "^2.6.1", + "solc": "^0.6.3", + "ts-generator": "^0.1.1", + "typechain": "^3.0.0" + }, + "dependencies": { + "@typechain/ethers-v5": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz", + "integrity": "sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==", + "dev": true, + "requires": { + "ethers": "^5.0.2" + } + }, + "command-line-args": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", + "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", + "dev": true, + "requires": { + "array-back": "^2.0.0", + "find-replace": "^1.0.3", + "typical": "^2.6.1" + } + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + }, + "find-replace": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", + "integrity": "sha512-KrUnjzDCD9426YnCP56zGYy/eieTnhtK6Vn++j+JJzmlsWWwEkDnsyVF575spT6HJ6Ow9tlbT3TQTDsa+O4UWA==", + "dev": true, + "requires": { + "array-back": "^1.0.4", + "test-value": "^2.1.0" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", + "dev": true, + "requires": { + "typical": "^2.6.0" + } + } + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "solc": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz", + "integrity": "sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + } + }, + "ts-essentials": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz", + "integrity": "sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==", + "dev": true + }, + "typechain": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz", + "integrity": "sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==", + "dev": true, + "requires": { + "command-line-args": "^4.0.7", + "debug": "^4.1.1", + "fs-extra": "^7.0.0", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "ts-essentials": "^6.0.3", + "ts-generator": "^0.1.1" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + } + } + } + } + }, + "@ethereum-waffle/ens": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.4.4.tgz", + "integrity": "sha512-0m4NdwWxliy3heBYva1Wr4WbJKLnwXizmy5FfSSr5PMbjI7SIGCdCB59U7/ZzY773/hY3bLnzLwvG5mggVjJWg==", + "dev": true, + "requires": { + "@ensdomains/ens": "^0.4.4", + "@ensdomains/resolver": "^0.2.4", + "ethers": "^5.5.2" + }, + "dependencies": { + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + } + } + }, + "@ethereum-waffle/mock-contract": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.4.4.tgz", + "integrity": "sha512-Mp0iB2YNWYGUV+VMl5tjPsaXKbKo8MDH9wSJ702l9EBjdxFf/vBvnMBAC1Fub1lLtmD0JHtp1pq+mWzg/xlLnA==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.5.0", + "ethers": "^5.5.2" + }, + "dependencies": { + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + } + } + }, + "@ethereum-waffle/provider": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.4.tgz", + "integrity": "sha512-GK8oKJAM8+PKy2nK08yDgl4A80mFuI8zBkE0C9GqTRYQqvuxIyXoLmJ5NZU9lIwyWVv5/KsoA11BgAv2jXE82g==", + "dev": true, + "requires": { + "@ethereum-waffle/ens": "^3.4.4", + "ethers": "^5.5.2", + "ganache-core": "^2.13.2", + "patch-package": "^6.2.2", + "postinstall-postinstall": "^2.1.0" + }, + "dependencies": { + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + } + } + }, + "@ethereumjs/block": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.6.3.tgz", + "integrity": "sha512-CegDeryc2DVKnDkg5COQrE0bJfw/p0v3GBk2W5/Dj5dOVfEmb50Ux0GLnSPypooLnfqjwFaorGuT9FokWB3GRg==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.6.5", + "@ethereumjs/tx": "^3.5.2", + "ethereumjs-util": "^7.1.5", + "merkle-patricia-tree": "^4.2.4" + } + }, + "@ethereumjs/blockchain": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.5.3.tgz", + "integrity": "sha512-bi0wuNJ1gw4ByNCV56H0Z4Q7D+SxUbwyG12Wxzbvqc89PXLRNR20LBcSUZRKpN0+YCPo6m0XZL/JLio3B52LTw==", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.6.2", + "@ethereumjs/common": "^2.6.4", + "@ethereumjs/ethash": "^1.1.0", + "debug": "^4.3.3", + "ethereumjs-util": "^7.1.5", + "level-mem": "^5.0.1", + "lru-cache": "^5.1.1", + "semaphore-async-await": "^1.5.1" + } + }, + "@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" + } + }, + "@ethereumjs/ethash": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.1.0.tgz", + "integrity": "sha512-/U7UOKW6BzpA+Vt+kISAoeDie1vAvY4Zy2KF5JJb+So7+1yKmJeJEHOGSnQIj330e9Zyl3L5Nae6VZyh2TJnAA==", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.5.0", + "@types/levelup": "^4.3.0", + "buffer-xor": "^2.0.1", + "ethereumjs-util": "^7.1.1", + "miller-rabin": "^4.0.0" + } + }, + "@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" + } + }, + "@ethereumjs/vm": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.9.3.tgz", + "integrity": "sha512-Ha04TeF8goEglr8eL7hkkYyjhzdZS0PsoRURzYlTF6I0VVId5KjKb0N7MrA8GMgheN+UeTncfTgYx52D/WhEmg==", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.6.3", + "@ethereumjs/blockchain": "^5.5.3", + "@ethereumjs/common": "^2.6.5", + "@ethereumjs/tx": "^3.5.2", + "async-eventemitter": "^0.2.4", + "core-js-pure": "^3.0.1", + "debug": "^4.3.3", + "ethereumjs-util": "^7.1.5", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "merkle-patricia-tree": "^4.2.4", + "rustbn.js": "~0.2.0" + } + }, + "@ethersproject/abi": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.6.4.tgz", + "integrity": "sha512-TTeZUlCeIHG6527/2goZA6gW5F8Emoc7MrZDC7hhP84aRGvW3TEdTnZR08Ls88YXM1m2SuK42Osw/jSi3uO8gg==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz", + "integrity": "sha512-BxlIgogYJtp1FS8Muvj8YfdClk3unZH0vRMVX791Z9INBNT/kuACZ9GzaY1Y4yFq+YSy6/w4gzj3HCRKrK9hsQ==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz", + "integrity": "sha512-n1r6lttFBG0t2vNiI3HoWaS/KdOt8xyDjzlP2cuevlWLG6EX0OwcKLyG/Kp/cuwNxdy/ous+R/DEMdTUwWQIjQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0" + } + }, + "@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "@ethersproject/base64": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.6.1.tgz", + "integrity": "sha512-qB76rjop6a0RIYYMiB4Eh/8n+Hxu2NIZm8S/Q7kNo5pmZfXhHGHmS4MinUainiBC54SCyRnwzL+KZjj8zbsSsw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1" + } + }, + "@ethersproject/basex": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.6.1.tgz", + "integrity": "sha512-a52MkVz4vuBXR06nvflPMotld1FJWSj2QT0985v7P/emPZO00PucFAkbcmq2vpVU7Ts7umKiSI6SppiLykVWsA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/properties": "^5.6.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.6.2.tgz", + "integrity": "sha512-v7+EEUbhGqT3XJ9LMPsKvXYHFc8eHxTowFCG/HgJErmq4XHJ2WR7aeyICg3uTOAQ7Icn0GFHAohXEhxQHq4Ubw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.6.1.tgz", + "integrity": "sha512-NwQt7cKn5+ZE4uDn+X5RAXLp46E1chXoaMmrxAyA0rblpxz8t58lVkrHXoRIn0lz1joQElQ8410GqhTqMOwc6g==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/constants": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.6.1.tgz", + "integrity": "sha512-QSq9WVnZbxXYFftrjSjZDUshp6/eKp6qrtdBtUCm0QxCV5z1fG/w3kdlcsjMCQuQHUnAclKoK7XpXMezhRDOLg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.6.2" + } + }, + "@ethersproject/contracts": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.6.2.tgz", + "integrity": "sha512-hguUA57BIKi6WY0kHvZp6PwPlWF87MCeB4B7Z7AbUpTxfFXFdn/3b0GmjZPagIHS+3yhcBJDnuEfU4Xz+Ks/8g==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.6.3", + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/transactions": "^5.6.2" + } + }, + "@ethersproject/hash": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.6.1.tgz", + "integrity": "sha512-L1xAHurbaxG8VVul4ankNX5HgQ8PNCTrnVXEiFnE9xoRnaUcgfD12tZINtDinSllxPLCtGwguQxJ5E6keE84pA==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/hdnode": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.6.2.tgz", + "integrity": "sha512-tERxW8Ccf9CxW2db3WsN01Qao3wFeRsfYY9TCuhmG0xNpl2IO8wgXU3HtWIZ49gUWPggRy4Yg5axU0ACaEKf1Q==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "@ethersproject/json-wallets": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.6.1.tgz", + "integrity": "sha512-KfyJ6Zwz3kGeX25nLihPwZYlDqamO6pfGKNnVMWWfEVVp42lTfCZVXXy5Ie8IZTN0HKwAngpIPi7gk4IJzgmqQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/pbkdf2": "^5.6.1", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "@ethersproject/keccak256": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.6.1.tgz", + "integrity": "sha512-bB7DQHCTRDooZZdL3lk9wpL0+XuG3XLGHLh3cePnybsO3V0rdCAOQGpn/0R3aODmnTOOkCATJiD2hnL+5bwthA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "js-sha3": "0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + } + } + }, + "@ethersproject/logger": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.6.0.tgz", + "integrity": "sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg==", + "dev": true + }, + "@ethersproject/networks": { + "version": "5.6.4", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.6.4.tgz", + "integrity": "sha512-KShHeHPahHI2UlWdtDMn2lJETcbtaJge4k7XSjDR9h79QTd6yQJmv6Cp2ZA4JdqWnhszAOLSuJEd9C0PRw7hSQ==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz", + "integrity": "sha512-k4gRQ+D93zDRPNUfmduNKq065uadC2YjMP/CqwwX5qG6R05f47boq6pLZtV/RnC4NZAYOPH1Cyo54q0c9sshRQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/sha2": "^5.6.1" + } + }, + "@ethersproject/properties": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.6.0.tgz", + "integrity": "sha512-szoOkHskajKePTJSZ46uHUWWkbv7TzP2ypdEK6jGMqJaEt2sb0jCgfBo0gH0m2HBpRixMuJ6TBRaQCF7a9DoCg==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/providers": { + "version": "5.6.8", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.6.8.tgz", + "integrity": "sha512-Wf+CseT/iOJjrGtAOf3ck9zS7AgPmr2fZ3N97r4+YXN3mBePTG2/bJ8DApl9mVwYL+RpYbNxMEkEp4mPGdwG/w==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/base64": "^5.6.1", + "@ethersproject/basex": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/networks": "^5.6.3", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/web": "^5.6.1", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true + } + } + }, + "@ethersproject/random": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.6.1.tgz", + "integrity": "sha512-/wtPNHwbmng+5yi3fkipA8YBT59DdkGRoC2vWk09Dci/q5DlgnMkhIycjHlavrvrjJBkFjO/ueLyT+aUDfc4lA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/rlp": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.6.1.tgz", + "integrity": "sha512-uYjmcZx+DKlFUk7a5/W9aQVaoEC7+1MOBgNtvNg13+RnuUwT4F0zTovC0tmay5SmRslb29V1B7Y5KCri46WhuQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/sha2": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.6.1.tgz", + "integrity": "sha512-5K2GyqcW7G4Yo3uenHegbXRPDgARpWUiXc6RiF7b6i/HXUoWlb7uCARh7BAHg7/qT/Q5ydofNwiZcim9qpjB6g==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.6.2.tgz", + "integrity": "sha512-jVbu0RuP7EFpw82vHcL+GP35+KaNruVAZM90GxgQnGqB6crhBqW/ozBfFvdeImtmb4qPko0uxXjn8l9jpn0cwQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.6.1.tgz", + "integrity": "sha512-KWqVLkUUoLBfL1iwdzUVlkNqAUIFMpbbeH0rgCfKmJp0vFtY4AsaN91gHKo9ZZLkC4UOm3cI3BmMV4N53BOq4g==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/sha2": "^5.6.1", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/strings": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.6.1.tgz", + "integrity": "sha512-2X1Lgk6Jyfg26MUnsHiT456U9ijxKUybz8IM1Vih+NJxYtXhmvKBcHOmvGqpFSVJ0nQ4ZCoIViR8XlRw1v/+Cw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/transactions": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.6.2.tgz", + "integrity": "sha512-BuV63IRPHmJvthNkkt9G70Ullx6AcM+SDc+a8Aw/8Yew6YwT51TcBKEp1P4oOQ/bP25I18JJr7rcFRgFtU9B2Q==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/rlp": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2" + } + }, + "@ethersproject/units": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.6.1.tgz", + "integrity": "sha512-rEfSEvMQ7obcx3KWD5EWWx77gqv54K6BKiZzKxkQJqtpriVsICrktIQmKl8ReNToPeIYPnFHpXvKpi068YFZXw==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/constants": "^5.6.1", + "@ethersproject/logger": "^5.6.0" + } + }, + "@ethersproject/wallet": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.6.2.tgz", + "integrity": "sha512-lrgh0FDQPuOnHcF80Q3gHYsSUODp6aJLAdDmDV0xKCN/T7D99ta1jGVhulg3PY8wiXEngD0DfM0I2XKXlrqJfg==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.6.1", + "@ethersproject/abstract-signer": "^5.6.2", + "@ethersproject/address": "^5.6.1", + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/hdnode": "^5.6.2", + "@ethersproject/json-wallets": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/random": "^5.6.1", + "@ethersproject/signing-key": "^5.6.2", + "@ethersproject/transactions": "^5.6.2", + "@ethersproject/wordlists": "^5.6.1" + } + }, + "@ethersproject/web": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.6.1.tgz", + "integrity": "sha512-/vSyzaQlNXkO1WV+RneYKqCJwualcUdx/Z3gseVovZP0wIlOFcCE1hkRhKBH8ImKbGQbMl9EAAyJFrJu7V0aqA==", + "dev": true, + "requires": { + "@ethersproject/base64": "^5.6.1", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@ethersproject/wordlists": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.6.1.tgz", + "integrity": "sha512-wiPRgBpNbNwCQFoCr8bcWO8o5I810cqO6mkdtKfLKFlLxeCWcnzDi4Alu8iyNzlhYuS9npCwivMbRWF19dyblw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/hash": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/properties": "^5.6.0", + "@ethersproject/strings": "^5.6.1" + } + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + } + } + }, + "@microsoft/api-extractor": { + "version": "7.28.4", + "dev": true, + "requires": { + "@microsoft/api-extractor-model": "7.21.0", + "@microsoft/tsdoc": "0.14.1", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.49.0", + "@rushstack/rig-package": "0.3.13", + "@rushstack/ts-command-line": "4.12.1", + "colors": "~1.2.1", + "lodash": "~4.17.15", + "resolve": "~1.17.0", + "semver": "~7.3.0", + "source-map": "~0.6.1", + "typescript": "~4.6.3" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "typescript": { + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.4.tgz", + "integrity": "sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@microsoft/api-extractor-model": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@microsoft/api-extractor-model/-/api-extractor-model-7.21.0.tgz", + "integrity": "sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.1", + "@microsoft/tsdoc-config": "~0.16.1", + "@rushstack/node-core-library": "3.49.0" + } + }, + "@microsoft/tsdoc": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.14.1.tgz", + "integrity": "sha512-6Wci+Tp3CgPt/B9B0a3J4s3yMgLNSku6w5TV6mN+61C71UqsRBv2FUibBf3tPGlNxebgPHMEUzKpb1ggE8KCKw==", + "dev": true + }, + "@microsoft/tsdoc-config": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc-config/-/tsdoc-config-0.16.1.tgz", + "integrity": "sha512-2RqkwiD4uN6MLnHFljqBlZIXlt/SaUT6cuogU1w2ARw4nKuuppSmR0+s+NC+7kXBQykd9zzu0P4HtBpZT5zBpQ==", + "dev": true, + "requires": { + "@microsoft/tsdoc": "0.14.1", + "ajv": "~6.12.6", + "jju": "~1.4.0", + "resolve": "~1.19.0" + }, + "dependencies": { + "resolve": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + } + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@nomiclabs/hardhat-ethers": { + "version": "2.1.0", + "dev": true + }, + "@nomiclabs/hardhat-waffle": { + "version": "2.0.3", + "dev": true, + "requires": { + "@types/sinon-chai": "^3.2.3", + "@types/web3": "1.0.19" + } + }, + "@oclif/command": { + "version": "1.8.16", + "resolved": "https://registry.npmjs.org/@oclif/command/-/command-1.8.16.tgz", + "integrity": "sha512-rmVKYEsKzurfRU0xJz+iHelbi1LGlihIWZ7Qvmb/CBz1EkhL7nOkW4SVXmG2dA5Ce0si2gr88i6q4eBOMRNJ1w==", + "dev": true, + "requires": { + "@oclif/config": "^1.18.2", + "@oclif/errors": "^1.3.5", + "@oclif/help": "^1.0.1", + "@oclif/parser": "^3.8.6", + "debug": "^4.1.1", + "semver": "^7.3.2" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@oclif/config": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.3.tgz", + "integrity": "sha512-sBpko86IrTscc39EvHUhL+c++81BVTsIZ3ETu/vG+cCdi0N6vb2DoahR67A9FI2CGnxRRHjnTfa3m6LulwNATA==", + "dev": true, + "requires": { + "@oclif/errors": "^1.3.5", + "@oclif/parser": "^3.8.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-wsl": "^2.1.1", + "tslib": "^2.3.1" + } + }, + "@oclif/errors": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@oclif/errors/-/errors-1.3.5.tgz", + "integrity": "sha512-OivucXPH/eLLlOT7FkCMoZXiaVYf8I/w1eTAM1+gKzfhALwWTusxEx7wBmW0uzvkSg/9ovWLycPaBgJbM3LOCQ==", + "dev": true, + "requires": { + "clean-stack": "^3.0.0", + "fs-extra": "^8.1", + "indent-string": "^4.0.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "dev": true, + "requires": { + "escape-string-regexp": "4.0.0" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "@oclif/help": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@oclif/help/-/help-1.0.1.tgz", + "integrity": "sha512-8rsl4RHL5+vBUAKBL6PFI3mj58hjPCp2VYyXD4TAa7IMStikFfOH2gtWmqLzIlxAED2EpD0dfYwo9JJxYsH7Aw==", + "dev": true, + "requires": { + "@oclif/config": "1.18.2", + "@oclif/errors": "1.3.5", + "chalk": "^4.1.2", + "indent-string": "^4.0.0", + "lodash": "^4.17.21", + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "widest-line": "^3.1.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "@oclif/config": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/@oclif/config/-/config-1.18.2.tgz", + "integrity": "sha512-cE3qfHWv8hGRCP31j7fIS7BfCflm/BNZ2HNqHexH+fDrdF2f1D5S8VmXWLC77ffv3oDvWyvE9AZeR0RfmHCCaA==", + "dev": true, + "requires": { + "@oclif/errors": "^1.3.3", + "@oclif/parser": "^3.8.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-wsl": "^2.1.1", + "tslib": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "@oclif/linewrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@oclif/linewrap/-/linewrap-1.0.0.tgz", + "integrity": "sha512-Ups2dShK52xXa8w6iBWLgcjPJWjais6KPJQq3gQ/88AY6BXoTX+MIGFPrWQO1KLMiQfoTpcLnUwloN4brrVUHw==", + "dev": true + }, + "@oclif/parser": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@oclif/parser/-/parser-3.8.7.tgz", + "integrity": "sha512-b11xBmIUK+LuuwVGJpFs4LwQN2xj2cBWj2c4z1FtiXGrJ85h9xV6q+k136Hw0tGg1jQoRXuvuBnqQ7es7vO9/Q==", + "dev": true, + "requires": { + "@oclif/errors": "^1.3.5", + "@oclif/linewrap": "^1.0.0", + "chalk": "^4.1.0", + "tslib": "^2.3.1" + } + }, + "@openzeppelin/contracts": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.0.tgz", + "integrity": "sha512-52Qb+A1DdOss8QvJrijYYPSf32GUg2pGaG/yCxtaA3cu4jduouTdg4XZSMLW9op54m1jH7J8hoajhHKOPsoJFw==", + "dev": true + }, + "@openzeppelin/contracts-upgradeable": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.0.tgz", + "integrity": "sha512-wO3PyoAaAV/rA77cK8H4c3SbO98QylTjfiFxyvURUZKTFLV180rnAvna1x7/Nxvt0Gqv+jt1sXKC7ygxsq8iCw==", + "dev": true + }, + "@princjef/api-documenter": { + "version": "1.0.2", + "dev": true, + "requires": { + "@microsoft/api-extractor-model": "^7.0.28", + "@microsoft/tsdoc": "^0.12.8", + "@oclif/command": "^1.5.10", + "@oclif/config": "^1.12.8", + "fs-extra": "^7.0.1" + }, + "dependencies": { + "@microsoft/tsdoc": { + "version": "0.12.24", + "resolved": "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.12.24.tgz", + "integrity": "sha512-Mfmij13RUTmHEMi9vRUhMXD7rnGR2VvxeNYtaGtaJ4redwwjT4UXYJ+nzmVJF7hhd4pn/Fx5sncDKxMVFJSWPg==", + "dev": true + } + } + }, + "@resolver-engine/core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", + "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "is-url": "^1.2.4", + "request": "^2.85.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@resolver-engine/fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", + "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", + "dev": true, + "requires": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@resolver-engine/imports": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", + "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", + "dev": true, + "requires": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0", + "hosted-git-info": "^2.6.0", + "path-browserify": "^1.0.0", + "url": "^0.11.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@resolver-engine/imports-fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", + "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", + "dev": true, + "requires": { + "@resolver-engine/fs": "^0.3.3", + "@resolver-engine/imports": "^0.3.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@rollup/plugin-babel": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz", + "integrity": "sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-commonjs": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz", + "integrity": "sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8", + "commondir": "^1.0.1", + "estree-walker": "^1.0.1", + "glob": "^7.1.2", + "is-reference": "^1.1.2", + "magic-string": "^0.25.2", + "resolve": "^1.11.0" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + } + } + }, + "@rushstack/node-core-library": { + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/@rushstack/node-core-library/-/node-core-library-3.49.0.tgz", + "integrity": "sha512-yBJRzGgUNFwulVrwwBARhbGaHsxVMjsZ9JwU1uSBbqPYCdac+t2HYdzi4f4q/Zpgb0eNbwYj2yxgHYpJORNEaw==", + "dev": true, + "requires": { + "@types/node": "12.20.24", + "colors": "~1.2.1", + "fs-extra": "~7.0.1", + "import-lazy": "~4.0.0", + "jju": "~1.4.0", + "resolve": "~1.17.0", + "semver": "~7.3.0", + "timsort": "~0.3.0", + "z-schema": "~5.0.2" + }, + "dependencies": { + "@types/node": { + "version": "12.20.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.24.tgz", + "integrity": "sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ==", + "dev": true + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@rushstack/rig-package": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@rushstack/rig-package/-/rig-package-0.3.13.tgz", + "integrity": "sha512-4/2+yyA/uDl7LQvtYtFs1AkhSWuaIGEKhP9/KK2nNARqOVc5eCXmu1vyOqr5mPvNq7sHoIR+sG84vFbaKYGaDA==", + "dev": true, + "requires": { + "resolve": "~1.17.0", + "strip-json-comments": "~3.1.1" + }, + "dependencies": { + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "@rushstack/ts-command-line": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@rushstack/ts-command-line/-/ts-command-line-4.12.1.tgz", + "integrity": "sha512-S1Nev6h/kNnamhHeGdp30WgxZTA+B76SJ/P721ctP7DrnC+rrjAc6h/R80I4V0cA2QuEEcMdVOQCtK2BTjsOiQ==", + "dev": true, + "requires": { + "@types/argparse": "1.0.38", + "argparse": "~1.0.9", + "colors": "~1.2.1", + "string-argv": "~0.3.1" + } + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true + }, + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "requires": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@size-limit/file": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-6.0.4.tgz", + "integrity": "sha512-SoGUUNEHsZJTDlw6znuMbR0z6apr/NmeEXSFT6iB6gUPyOHIdFtFJpvWeS1vijC7OFQhWHskedB6nBJ6L+bd+A==", + "dev": true, + "requires": { + "semver": "7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@size-limit/preset-small-lib": { + "version": "6.0.4", + "dev": true, + "requires": { + "@size-limit/file": "6.0.4", + "@size-limit/webpack": "6.0.4" + } + }, + "@size-limit/webpack": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@size-limit/webpack/-/webpack-6.0.4.tgz", + "integrity": "sha512-51rvLztZcvT+Qc5g8FusyC8ZDcpVg7+O1a4hfO2K2XMZV8CFguRN//xMwQXv5q6I1ImUQeyURyiCXIQD24qJYQ==", + "dev": true, + "requires": { + "@statoscope/webpack-plugin": "^5.17.0", + "css-loader": "^6.5.0", + "css-minimizer-webpack-plugin": "^3.0.2", + "escape-string-regexp": "^4.0.0", + "mkdirp": "^1.0.4", + "nanoid": "^3.1.30", + "style-loader": "^3.3.1", + "webpack": "^5.61.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@solidity-parser/parser": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.3.tgz", + "integrity": "sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw==", + "dev": true, + "requires": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "@statoscope/extensions": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/extensions/-/extensions-5.14.1.tgz", + "integrity": "sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw==", + "dev": true + }, + "@statoscope/helpers": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/helpers/-/helpers-5.23.0.tgz", + "integrity": "sha512-Rmix1ayv6BqxNAR71HrgcvFpa2o3GFm0GpL5zqfLnkAyVtd3fAc4eVo2KaRG3RnxfpetoPNfmueI0zsbpn7tVA==", + "dev": true, + "requires": { + "@types/archy": "^0.0.32", + "@types/semver": "^7.3.10", + "archy": "~1.0.0", + "jora": "^1.0.0-beta.7", + "semver": "^7.3.7" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@statoscope/report-writer": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@statoscope/report-writer/-/report-writer-5.22.0.tgz", + "integrity": "sha512-oEIlfsMSwBM8PcHnHDwhgMz5fyDgu10oAVFwuQSJFBUXMwaZ/46ewr1kfAcUNc8CkOIolhO6EIo/e0ZjcVCR1g==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.7" + } + }, + "@statoscope/stats": { + "version": "5.14.1", + "resolved": "https://registry.npmjs.org/@statoscope/stats/-/stats-5.14.1.tgz", + "integrity": "sha512-Kz7kCKuT6DXaqAPfyTwp27xHMDUna9o6UlRSQXXBZ8Yyk7eYYvTNw+5ffRyqivL9IOzD7FQYDQ6VUBHh0UfyDw==", + "dev": true + }, + "@statoscope/stats-extension-compressed": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.23.0.tgz", + "integrity": "sha512-HkOBGCOIP6CxZBxwZtWEXUqQhNnoQWWsz+UPDuPebsp5biuSYbwTvv6e6y/SAEIsRSRquENh3UspcdrYFIb9AQ==", + "dev": true, + "requires": { + "@statoscope/helpers": "5.23.0", + "gzip-size": "^6.0.0" + } + }, + "@statoscope/stats-extension-custom-reports": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.23.0.tgz", + "integrity": "sha512-jQxQMn+rbES/JCJUbzP0ciGUBRtvkX5bsS4JoUkn/jHdUv+v0T60/LlbmnokCyPknuuvCQm+g0e2WLQrLUJxww==", + "dev": true, + "requires": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.23.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.22.0" + } + }, + "@statoscope/stats-extension-package-info": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.23.0.tgz", + "integrity": "sha512-XGJLeAbGMT2KUgnmycDALbWEIz040tDPsKAdJHhqqLFvTNVvh8rqJW+Jj7WfweiBr7H/MbQpPHZiZ7yqodSm9w==", + "dev": true, + "requires": { + "@statoscope/helpers": "5.23.0" + } + }, + "@statoscope/stats-extension-stats-validation-result": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.23.0.tgz", + "integrity": "sha512-UWEEo2ahzy9hupO44+Wzr8+PqbtBFBOXuOcD+eKWRZPORNfkidPahjJ/DHK6QsuoModqMPr9SLaxYjaeN+neaA==", + "dev": true, + "requires": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.23.0", + "@statoscope/stats": "5.14.1", + "@statoscope/types": "5.22.0" + } + }, + "@statoscope/types": { + "version": "5.22.0", + "resolved": "https://registry.npmjs.org/@statoscope/types/-/types-5.22.0.tgz", + "integrity": "sha512-FHgunU7M95v7c71pvQ2nr8bWy1QcTDOHSnkoFQErORH9RmxlK9oRkoWrO8BJpnxa55m/9ZHjFVmpLF4SsVGHoA==", + "dev": true, + "requires": { + "@statoscope/stats": "5.14.1" + } + }, + "@statoscope/webpack-model": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-model/-/webpack-model-5.23.0.tgz", + "integrity": "sha512-ivAQAO0TS67xNPtdFHg2JxugFW2qCAiuEdOe7R8EGZ+6d5ZFBAcelz74toZ8x4h5wm5SSgwPFVEasYCxfGQJSg==", + "dev": true, + "requires": { + "@statoscope/extensions": "5.14.1", + "@statoscope/helpers": "5.23.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.23.0", + "@statoscope/stats-extension-custom-reports": "5.23.0", + "@statoscope/stats-extension-package-info": "5.23.0", + "@statoscope/stats-extension-stats-validation-result": "5.23.0", + "@statoscope/types": "5.22.0", + "ajv": "^8.11.0", + "md5": "^2.3.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "@statoscope/webpack-plugin": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-plugin/-/webpack-plugin-5.23.0.tgz", + "integrity": "sha512-6XC8689UpDeHxKNJ/ZNT8jaCNV0IQhm1qW1SWb1VeOmWj7Rh78GLlFeD3EcJ55MJp7EesU2g90DAUDq//xpdvQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.7", + "@statoscope/report-writer": "5.22.0", + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.23.0", + "@statoscope/stats-extension-custom-reports": "5.23.0", + "@statoscope/types": "5.22.0", + "@statoscope/webpack-model": "5.23.0", + "@statoscope/webpack-stats-extension-compressed": "5.23.0", + "@statoscope/webpack-stats-extension-package-info": "5.23.0", + "@statoscope/webpack-ui": "5.23.0", + "open": "^8.4.0" + }, + "dependencies": { + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + } + } + }, + "@statoscope/webpack-stats-extension-compressed": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.23.0.tgz", + "integrity": "sha512-eexc4fOLnpQWmG+BubWOppvBaPhDOgZ1gXw8c+9WJVZyG3/Um4G3MVsokaocAakXgZm4s1C60dj963mN5V0QeQ==", + "dev": true, + "requires": { + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-compressed": "5.23.0", + "@statoscope/webpack-model": "5.23.0" + } + }, + "@statoscope/webpack-stats-extension-package-info": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.23.0.tgz", + "integrity": "sha512-uY+ArAZeWfXa47vhcEHcOm2fPy77PV9eYjGYCdn57fA7pmAGcusw+rw0CHcFCeA/fRsUc1czOwoxrpLUfABGJA==", + "dev": true, + "requires": { + "@statoscope/stats": "5.14.1", + "@statoscope/stats-extension-package-info": "5.23.0", + "@statoscope/webpack-model": "5.23.0" + } + }, + "@statoscope/webpack-ui": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/@statoscope/webpack-ui/-/webpack-ui-5.23.0.tgz", + "integrity": "sha512-4pvEPOin/wlv8WZjbh2mrr2ynMyzv6cMhStKQiC/sApgiyOoVUTlqKWm1AaKkteb8uzlZmj442zhwlNBjG1nww==", + "dev": true, + "requires": { + "@statoscope/types": "5.22.0", + "highcharts": "^10.2.0" + } + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@typechain/ethers-v5": { + "version": "8.0.5", + "dev": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@typechain/hardhat": { + "version": "3.1.0", + "dev": true, + "requires": { + "fs-extra": "^9.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + } + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "@types/abstract-leveldown": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", + "integrity": "sha512-q5veSX6zjUy/DlDhR4Y4cU0k2Ar+DT2LUraP00T19WLmTO6Se1djepCCaqU6nQrwcJ5Hyo/CWqxTzrrFg8eqbQ==", + "dev": true + }, + "@types/archy": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/archy/-/archy-0.0.32.tgz", + "integrity": "sha512-5ZZ5+YGmUE01yejiXsKnTcvhakMZ2UllZlMsQni53Doc1JWhe21ia8VntRoRD6fAEWw08JBh/z9qQHJ+//MrIg==", + "dev": true + }, + "@types/argparse": { + "version": "1.0.38", + "resolved": "https://registry.npmjs.org/@types/argparse/-/argparse-1.0.38.tgz", + "integrity": "sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.1.tgz", + "integrity": "sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/chai": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", + "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", + "dev": true + }, + "@types/eslint": { + "version": "8.4.5", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", + "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", + "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/jest": { + "version": "25.2.3", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-25.2.3.tgz", + "integrity": "sha512-JXc1nK/tXHiDhV55dvfzqtmP4S3sy3T3ouV2tkViZgxY/zeUkcpQcQPGRlgF4KmWzWW5oiWYSZwtCB+2RsE4Fw==", + "dev": true, + "requires": { + "jest-diff": "^25.2.1", + "pretty-format": "^25.2.1" + }, + "dependencies": { + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "dev": true + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + } + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/level-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", + "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", + "dev": true + }, + "@types/levelup": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", + "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", + "dev": true, + "requires": { + "@types/abstract-leveldown": "*", + "@types/level-errors": "*", + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/mocha": { + "version": "9.1.1", + "dev": true + }, + "@types/node-fetch": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.2.tgz", + "integrity": "sha512-DHqhlq5jeESLy19TYhLakJ07kNumXWjcDdxXsLUMJZ6ue8VZJj4kLPQVE/2mdHh3xZziNF1xppu5lwmS53HR+A==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + } + } + }, + "@types/normalize-package-data": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/prettier": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.6.3.tgz", + "integrity": "sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg==", + "dev": true + }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "requires": { + "@types/node": "*" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "@types/semver": { + "version": "7.3.10", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.10.tgz", + "integrity": "sha512-zsv3fsC7S84NN6nPK06u79oWgrPVd0NvOyqgghV1haPaFcVxIrP4DLomRwGAXk0ui4HZA7mOcSFL98sMVW9viw==", + "dev": true + }, + "@types/sinon": { + "version": "10.0.12", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.12.tgz", + "integrity": "sha512-uWf4QJ4oky/GckJ1MYQxU52cgVDcXwBhDkpvLbi4EKoLPqLE4MOH6T/ttM33l3hi0oZ882G6oIzWv/oupRYSxQ==", + "dev": true, + "requires": { + "@types/sinonjs__fake-timers": "*" + } + }, + "@types/sinon-chai": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", + "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "@types/sinonjs__fake-timers": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.2.tgz", + "integrity": "sha512-9GcLXF0/v3t80caGs5p2rRfkB+a8VBGLJZVih6CNFkx8IZ994wiKKLSRs9nuFwk1HevWs/1mnUmkApGrSGsShA==", + "dev": true + }, + "@types/underscore": { + "version": "1.11.4", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.4.tgz", + "integrity": "sha512-uO4CD2ELOjw8tasUrAhvnn2W4A0ZECOvMjCivJr4gA9pGgjv+qxKWY9GLTMVEK8ej85BxQOocUyE7hImmSQYcg==", + "dev": true + }, + "@types/web3": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz", + "integrity": "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==", + "dev": true, + "requires": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "@ungap/promise-all-settled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", + "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-leveldown": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", + "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "acorn": { + "version": "8.7.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz", + "integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==", + "dev": true + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", + "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.10.2", + "@babel/runtime-corejs3": "^7.10.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-back": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "dev": true, + "requires": { + "typical": "^2.6.1" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", + "dev": true + }, + "array-includes": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.5.tgz", + "integrity": "sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5", + "get-intrinsic": "^1.1.1", + "is-string": "^1.0.7" + } + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "requires": { + "async": "^2.4.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "asyncro": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/asyncro/-/asyncro-3.0.0.tgz", + "integrity": "sha512-nEnWYfrBmA3taTiuiOoZYmgJ/CNrSoQLeLs29SeLcPu60yaw/mHDBHV0iOZ051fTvsTHxpCY+gXibqT9wbQYfg==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axe-core": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.3.tgz", + "integrity": "sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w==", + "dev": true + }, + "axobject-query": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", + "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-annotate-pure-calls": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-annotate-pure-calls/-/babel-plugin-annotate-pure-calls-0.4.0.tgz", + "integrity": "sha512-oi4M/PWUJOU9ZyRGoPTfPMqdyMp06jbJAomd3RcyYuzUtBOddv98BqLm96Lucpi2QFoQHkdGQt0ACvw7VzVEQA==", + "dev": true + }, + "babel-plugin-dev-expression": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dev-expression/-/babel-plugin-dev-expression-0.2.3.tgz", + "integrity": "sha512-rP5LK9QQTzCW61nVVzw88En1oK8t8gTsIeC6E61oelxNsU842yMjF0G1MxhvUpCkxCEIj7sE8/e5ieTheT//uw==", + "dev": true + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.0.4.tgz", + "integrity": "sha512-+/uCzO9JTYVZVGCpZpVAQkgPGt2zkR0VYiZvJ4aVoCe4ccgpKvNQqcjzAgQzSsjK64Jhc5hvrCR3l0087BevkA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.0.3" + }, + "dependencies": { + "@babel/helper-define-polyfill-provider": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.0.3.tgz", + "integrity": "sha512-dULDd/APiP4JowYDAMosecKOi/1v+UId99qhBGiO3myM29KtAVKS/R3x3OJJNBR0FeYB1BcYb2dCwkhqvxWXXQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/traverse": "^7.11.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + } + } + }, + "babel-plugin-transform-rename-import": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-rename-import/-/babel-plugin-transform-rename-import-2.3.0.tgz", + "integrity": "sha512-dPgJoT57XC0PqSnLgl2FwNvxFrWlspatX2dkk7yjKQj5HHGw071vAcOf+hqW8ClqcBDMvEbm6mevn5yHAD8mlQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + } + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + } + } + }, + "browserslist": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", + "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001366", + "electron-to-chromium": "^1.4.188", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.4" + } + }, + "bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-xor": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", + "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "bytes-iec": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/bytes-iec/-/bytes-iec-3.1.1.tgz", + "integrity": "sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha512-UJiE1otjXPF5/x+T3zTnSFiTOEmJoGTD9HmBoxnCUwho61a2eSNn/VwtwuIBDAo2SEOv1AJ7ARI5gCmohFLu/g==", + "dev": true, + "requires": { + "callsites": "^0.2.0" + }, + "dependencies": { + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha512-Zv4Dns9IbXXmPkgRRUjAaJQgfN4xX5p6+RQFhWUqscdvvK2xK/ZL8b3IXIJsj+4sD+f24NwnWy2BY8AJ82JB0A==", + "dev": true + } + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001367", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz", + "integrity": "sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chai": { + "version": "4.3.6", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "loupe": "^2.3.1", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "ci-job-number": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ci-job-number/-/ci-job-number-1.2.2.tgz", + "integrity": "sha512-CLOGsVDrVamzv8sXJGaILUVI6dsuAkouJP/n6t+OxLPeeA4DDby7zn9SB6EUpa1H7oIKoE+rMmkW80zYsFfUjA==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colors": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.2.5.tgz", + "integrity": "sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + }, + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true + } + } + }, + "command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "requires": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha512-OKZnPGeMQy2RPaUIBPFFd71iNf4791H12MCRuVQDnzGRwCYNYmTDy5pdafo2SLAcEMKzTOQnLWG4QdcjeJUMEg==", + "dev": true + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "core-js-compat": { + "version": "3.23.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.5.tgz", + "integrity": "sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg==", + "dev": true, + "requires": { + "browserslist": "^4.21.2", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.23.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.23.5.tgz", + "integrity": "sha512-8t78LdpKSuCq4pJYCYk8hl7XEkAX+BP16yRIwL3AanTksxuEf7CM83vRyctmiEL8NDZ3jpUcv56fk9/zG3aIuw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + }, + "dependencies": { + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true + }, + "css-declaration-sorter": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.3.0.tgz", + "integrity": "sha512-OGT677UGHJTAVMRhPO+HJ4oKln3wkBTwtDFH0ojbqm+MJm6xuDMHp2nkhh/ThaBqq20IbraBQSWKfSLNHQO9Og==", + "dev": true + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.5" + }, + "dependencies": { + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } + }, + "css-minimizer-webpack-plugin": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz", + "integrity": "sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + } + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "5.1.12", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.12.tgz", + "integrity": "sha512-TgvArbEZu0lk/dvg2ja+B7kYoD7BBCmn3+k58xD0qjrGHsFzXY/wKTo9M5egcUCabPol05e/PVoIu79s2JN4WQ==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.12", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.12", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.12.tgz", + "integrity": "sha512-OyCBTZi+PXgylz9HAA5kHyoYhfGcYdwFmyaJzWnzxuGRtnMw/kR6ilW9XzlzlRAtB6PLT/r+prYgkef7hngFew==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.3.0", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.2", + "postcss-discard-comments": "^5.1.2", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.6", + "postcss-merge-rules": "^5.1.2", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.3", + "postcss-minify-selectors": "^5.2.1", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.1", + "postcss-normalize-repeat-style": "^5.1.1", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.3", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + } + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "debug-log": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz", + "integrity": "sha512-gV/pe1YIaKNgLYnd1g9VNW80tcb7oV5qvNUxG7NM8rbDpnl6RGunzlAtlGSb0wEs3nesu2vHNiX9TSsZ+Y+RjA==", + "dev": true + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "dev": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "deglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/deglob/-/deglob-2.1.1.tgz", + "integrity": "sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw==", + "dev": true, + "requires": { + "find-root": "^1.0.0", + "glob": "^7.0.5", + "ignore": "^3.0.9", + "pkg-config": "^1.1.0", + "run-parallel": "^1.1.2", + "uniq": "^1.0.1" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "electron-to-chromium": { + "version": "1.4.195", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.195.tgz", + "integrity": "sha512-vefjEh0sk871xNmR5whJf9TEngX+KTKS3hOHpjoMpauKkwlGwtMz1H8IaIjAT/GNnX0TbGwAdmVoXCAzXf+PPg==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encoding-down": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", + "dev": true, + "requires": { + "abstract-leveldown": "^6.2.1", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", + "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.1.tgz", + "integrity": "sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "regexp.prototype.flags": "^1.4.3", + "string.prototype.trimend": "^1.0.5", + "string.prototype.trimstart": "^1.0.5", + "unbox-primitive": "^1.0.2" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz", + "integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-config-standard": { + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz", + "integrity": "sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ==", + "dev": true + }, + "eslint-config-standard-jsx": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz", + "integrity": "sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg==", + "dev": true + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", + "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "find-up": "^2.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "eslint-plugin-es": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-1.4.1.tgz", + "integrity": "sha512-5fa/gR2yR3NxQf+UXkeLeP8FBBl6tSgdrAz1+cF84v1FMM4twGwQoqTnn+QxFLcPOrF4pdKEJKDB/q9GoyJrCA==", + "dev": true, + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^2.0.1" + } + }, + "eslint-plugin-flowtype": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-3.13.0.tgz", + "integrity": "sha512-bhewp36P+t7cEV0b6OdmoRWJCBYRiHFlqPZAG1oS3SF+Y0LQkeDvFSM4oxoxvczD1OdONCXMlJfQFiWLcV9urw==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", + "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "dev": true, + "requires": { + "contains-path": "^0.1.0", + "debug": "^2.6.8", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.1", + "eslint-module-utils": "^2.2.0", + "has": "^1.0.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.3", + "read-pkg-up": "^2.0.0", + "resolve": "^1.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha512-lsGyRuYr4/PIB0txi+Fy2xOMI2dGaTguCaotzFGkVZuKR5usKfcRWIFKNM3QNrU7hh/+w2bwTW+ZeXPK5l8uVg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz", + "integrity": "sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.18.3", + "aria-query": "^4.2.2", + "array-includes": "^3.1.5", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.4.2", + "axobject-query": "^2.2.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.1", + "language-tags": "^1.0.5", + "minimatch": "^3.1.2", + "semver": "^6.3.0" + }, + "dependencies": { + "emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + } + } + }, + "eslint-plugin-node": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz", + "integrity": "sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw==", + "dev": true, + "requires": { + "eslint-plugin-es": "^1.3.1", + "eslint-utils": "^1.3.1", + "ignore": "^4.0.2", + "minimatch": "^3.0.4", + "resolve": "^1.8.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.1.tgz", + "integrity": "sha512-htg25EUYUeIhKHXjOinK4BgCcDwtLHjqaxCDsMy5nbnUMkKFvIhMVCp+5GFUXQ4Nr8lBsPqtGAqBenbpFqAA2g==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-promise": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz", + "integrity": "sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg==", + "dev": true + }, + "eslint-plugin-react": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz", + "integrity": "sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.0.1", + "prop-types": "^15.6.2" + }, + "dependencies": { + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-2.5.1.tgz", + "integrity": "sha512-Y2c4b55R+6ZzwtTppKwSmK/Kar8AdLiC2f9NADCuxbcTgPPg41Gyqa6b9GppgXSvCtkRw43ZE86CT5sejKC6/g==", + "dev": true + }, + "eslint-plugin-standard": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-standard/-/eslint-plugin-standard-4.0.2.tgz", + "integrity": "sha512-nKptN8l7jksXkwFk++PhJB3cCDTcXOEyhISIN86Ue2feJ1LFyY3PrY3/xT2keXlJSY5bpmbiTG0f885/YKAvTA==", + "dev": true + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dev": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "requires": { + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + } + } + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereum-waffle": { + "version": "3.4.4", + "dev": true, + "requires": { + "@ethereum-waffle/chai": "^3.4.4", + "@ethereum-waffle/compiler": "^3.4.4", + "@ethereum-waffle/mock-contract": "^3.4.4", + "@ethereum-waffle/provider": "^3.4.4", + "ethers": "^5.0.1" + }, + "dependencies": { + "ethers": { + "version": "5.6.9", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.6.9.tgz", + "integrity": "sha512-lMGC2zv9HC5EC+8r429WaWu3uWJUCgUCt8xxKCFqkrFuBDZXDYIdzDUECxzjf2BMF8IVBByY1EBoGSL3RTm8RA==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.6.4", + "@ethersproject/abstract-provider": "5.6.1", + "@ethersproject/abstract-signer": "5.6.2", + "@ethersproject/address": "5.6.1", + "@ethersproject/base64": "5.6.1", + "@ethersproject/basex": "5.6.1", + "@ethersproject/bignumber": "5.6.2", + "@ethersproject/bytes": "5.6.1", + "@ethersproject/constants": "5.6.1", + "@ethersproject/contracts": "5.6.2", + "@ethersproject/hash": "5.6.1", + "@ethersproject/hdnode": "5.6.2", + "@ethersproject/json-wallets": "5.6.1", + "@ethersproject/keccak256": "5.6.1", + "@ethersproject/logger": "5.6.0", + "@ethersproject/networks": "5.6.4", + "@ethersproject/pbkdf2": "5.6.1", + "@ethersproject/properties": "5.6.0", + "@ethersproject/providers": "5.6.8", + "@ethersproject/random": "5.6.1", + "@ethersproject/rlp": "5.6.1", + "@ethersproject/sha2": "5.6.1", + "@ethersproject/signing-key": "5.6.2", + "@ethersproject/solidity": "5.6.1", + "@ethersproject/strings": "5.6.1", + "@ethersproject/transactions": "5.6.2", + "@ethersproject/units": "5.6.1", + "@ethersproject/wallet": "5.6.2", + "@ethersproject/web": "5.6.1", + "@ethersproject/wordlists": "5.6.1" + } + } + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "requires": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "dependencies": { + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + } + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "requires": { + "array-back": "^3.0.1" + }, + "dependencies": { + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true + } + } + }, + "find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "dev": true + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "requires": { + "micromatch": "^4.0.2" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", + "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "ganache-core": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz", + "integrity": "sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw==", + "dev": true, + "requires": { + "abstract-leveldown": "3.0.0", + "async": "2.6.2", + "bip39": "2.5.0", + "cachedown": "1.0.0", + "clone": "2.1.2", + "debug": "3.2.6", + "encoding-down": "5.0.4", + "eth-sig-util": "3.0.0", + "ethereumjs-abi": "0.6.8", + "ethereumjs-account": "3.0.0", + "ethereumjs-block": "2.2.2", + "ethereumjs-common": "1.5.0", + "ethereumjs-tx": "2.1.2", + "ethereumjs-util": "6.2.1", + "ethereumjs-vm": "4.2.0", + "ethereumjs-wallet": "0.6.5", + "heap": "0.2.6", + "keccak": "3.0.1", + "level-sublevel": "6.6.4", + "levelup": "3.1.1", + "lodash": "4.17.20", + "lru-cache": "5.1.1", + "merkle-patricia-tree": "3.0.0", + "patch-package": "6.2.2", + "seedrandom": "3.0.1", + "source-map-support": "0.5.12", + "tmp": "0.1.0", + "web3": "1.2.11", + "web3-provider-engine": "14.2.1", + "websocket": "1.0.32" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.0.0-beta.153", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz", + "integrity": "sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/address": ">=5.0.0-beta.128", + "@ethersproject/bignumber": ">=5.0.0-beta.130", + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/constants": ">=5.0.0-beta.128", + "@ethersproject/hash": ">=5.0.0-beta.128", + "@ethersproject/keccak256": ">=5.0.0-beta.127", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/properties": ">=5.0.0-beta.131", + "@ethersproject/strings": ">=5.0.0-beta.130" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.0.8.tgz", + "integrity": "sha512-fqJXkewcGdi8LogKMgRyzc/Ls2js07yor7+g9KfPs09uPOcQLg7cc34JN+lk34HH9gg2HU0DIA5797ZR8znkfw==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/networks": "^5.0.7", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/transactions": "^5.0.9", + "@ethersproject/web": "^5.0.12" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.0.10.tgz", + "integrity": "sha512-irx7kH7FDAeW7QChDPW19WsxqeB1d3XLyOLSXm0bfPqL1SS07LXWltBJUBUxqC03ORpAOcM3JQj57DU8JnVY2g==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/abstract-provider": "^5.0.8", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7" + } + }, + "@ethersproject/address": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.0.9.tgz", + "integrity": "sha512-gKkmbZDMyGbVjr8nA5P0md1GgESqSGH7ILIrDidPdNXBl4adqbuA3OAuZx/O2oGpL6PtJ9BDa0kHheZ1ToHU3w==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/rlp": "^5.0.7" + } + }, + "@ethersproject/base64": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.0.7.tgz", + "integrity": "sha512-S5oh5DVfCo06xwJXT8fQC68mvJfgScTl2AXvbYMsHNfIBTDb084Wx4iA9MNlEReOv6HulkS+gyrUM/j3514rSw==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9" + } + }, + "@ethersproject/bignumber": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.0.13.tgz", + "integrity": "sha512-b89bX5li6aK492yuPP5mPgRVgIxxBP7ksaBtKX5QQBsrZTpNOjf/MR4CjcUrAw8g+RQuD6kap9lPjFgY4U1/5A==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "bn.js": "^4.4.0" + } + }, + "@ethersproject/bytes": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.0.9.tgz", + "integrity": "sha512-k+17ZViDtAugC0s7HM6rdsTWEdIYII4RPCDkPEuxKc6i40Bs+m6tjRAtCECX06wKZnrEoR9pjOJRXHJ/VLoOcA==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/constants": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.0.8.tgz", + "integrity": "sha512-sCc73pFBsl59eDfoQR5OCEZCRv5b0iywadunti6MQIr5lt3XpwxK1Iuzd8XSFO02N9jUifvuZRrt0cY0+NBgTg==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13" + } + }, + "@ethersproject/hash": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.0.10.tgz", + "integrity": "sha512-Tf0bvs6YFhw28LuHnhlDWyr0xfcDxSXdwM4TcskeBbmXVSKLv3bJQEEEBFUcRX0fJuslR3gCVySEaSh7vuMx5w==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/abstract-signer": "^5.0.10", + "@ethersproject/address": "^5.0.9", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/strings": "^5.0.8" + } + }, + "@ethersproject/keccak256": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.0.7.tgz", + "integrity": "sha512-zpUBmofWvx9PGfc7IICobgFQSgNmTOGTGLUxSYqZzY/T+b4y/2o5eqf/GGmD7qnTGzKQ42YlLNo+LeDP2qe55g==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "js-sha3": "0.5.7" + } + }, + "@ethersproject/logger": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.0.8.tgz", + "integrity": "sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A==", + "dev": true, + "optional": true + }, + "@ethersproject/networks": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.0.7.tgz", + "integrity": "sha512-dI14QATndIcUgcCBL1c5vUr/YsI5cCHLN81rF7PU+yS7Xgp2/Rzbr9+YqpC6NBXHFUASjh6GpKqsVMpufAL0BQ==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/properties": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.0.7.tgz", + "integrity": "sha512-812H1Rus2vjw0zbasfDI1GLNPDsoyX1pYqiCgaR1BuyKxUTbwcH1B+214l6VGe1v+F6iEVb7WjIwMjKhb4EUsg==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/rlp": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.0.7.tgz", + "integrity": "sha512-ulUTVEuV7PT4jJTPpfhRHK57tkLEDEY9XSYJtrSNHOqdwMvH0z7BM2AKIMq4LVDlnu4YZASdKrkFGEIO712V9w==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/signing-key": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.0.8.tgz", + "integrity": "sha512-YKxQM45eDa6WAD+s3QZPdm1uW1MutzVuyoepdRRVmMJ8qkk7iOiIhUkZwqKLNxKzEJijt/82ycuOREc9WBNAKg==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "elliptic": "6.5.3" + } + }, + "@ethersproject/strings": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.0.8.tgz", + "integrity": "sha512-5IsdXf8tMY8QuHl8vTLnk9ehXDDm6x9FB9S9Og5IA1GYhLe5ZewydXSjlJlsqU2t9HRbfv97OJZV/pX8DVA/Hw==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/transactions": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.0.9.tgz", + "integrity": "sha512-0Fu1yhdFBkrbMjenEr+39tmDxuHmaw0pe9Jb18XuKoItj7Z3p7+UzdHLr2S/okvHDHYPbZE5gtANDdQ3ZL1nBA==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/address": "^5.0.9", + "@ethersproject/bignumber": "^5.0.13", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/keccak256": "^5.0.7", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/rlp": "^5.0.7", + "@ethersproject/signing-key": "^5.0.8" + } + }, + "@ethersproject/web": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.0.12.tgz", + "integrity": "sha512-gVxS5iW0bgidZ76kr7LsTxj4uzN5XpCLzvZrLp8TP+4YgxHfCeetFyQkRPgBEAJdNrexdSBayvyJvzGvOq0O8g==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/base64": "^5.0.7", + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "@ethersproject/strings": "^5.0.8" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "optional": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "optional": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.20.tgz", + "integrity": "sha512-Y93R97Ouif9JEOWPIUyU+eyIdyRqQR0I8Ez1dzku4hDx34NWh4HbtIc3WNzwB1Y9ULvNGeu5B8h8bVL5cAk4/A==", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.1.tgz", + "integrity": "sha512-+ZjSA8ELlOp8SlKi0YLB2tz9d5iPNEmOBd+8Rz21wTMdaXQIa9b6TEnD6l5qKOCypE7FSyPyck12qZJxSDNoog==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abstract-leveldown": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-3.0.0.tgz", + "integrity": "sha512-KUWx9UWGQD12zsmLNj64/pndaz4iJh/Pj7nopgkfDG6RlCcbMZvT6+9l7dchK4idog2Is8VdC/PvNbFuFmalIQ==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "optional": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "aes-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", + "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", + "dev": true, + "optional": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", + "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "requires": { + "async": "^2.4.0" + } + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true + } + } + }, + "babelify": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/babelify/-/babelify-7.3.0.tgz", + "integrity": "sha512-vID8Fz6pPN5pJMdlUnNFSfrlcx5MUule4k9aKs/zbZPyXxMTcRrB0M4Tarw22L8afr8eYSWxDPYCob3TdrqtlA==", + "dev": true, + "requires": { + "babel-core": "^6.0.14", + "object-assign": "^4.0.0" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "dev": true, + "requires": { + "precond": "0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } + } + }, + "bignumber.js": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", + "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", + "dev": true, + "optional": true + }, + "bip39": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bip39/-/bip39-2.5.0.tgz", + "integrity": "sha512-xwIx/8JKoT2+IPJpFEfXoWdYwP7UVAoUxxLNfGCfVowaJE7yg1Y5B1BVPqlUNsBq5/nGwmFkwRJ8xDW4sX8OdA==", + "dev": true, + "requires": { + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", + "unorm": "^1.3.3" + } + }, + "blakejs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.0.tgz", + "integrity": "sha512-1TSf2Cf2KycDPzjJpzamYhr6PFSEgKWyoc4rQ/BarXJzp/jM0FC7yP1rLWtMOWT2EIJtjPv9fwpKquRNbRV7Lg==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true, + "optional": true + }, + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "optional": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "optional": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "optional": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "optional": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true, + "optional": true + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==", + "dev": true, + "optional": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "bufferutil": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", + "dev": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "optional": true + }, + "bytewise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", + "dev": true, + "requires": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "bytewise-core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", + "dev": true, + "requires": { + "typewise-core": "^1.2" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "optional": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "optional": true + } + } + }, + "cachedown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cachedown/-/cachedown-1.0.0.tgz", + "integrity": "sha512-t+yVk82vQWCJF3PsWHMld+jhhjkkWjcAzz8NbFx1iULOXWl8Tm/FdM4smZNVw3MRr0X+lVTx9PKzvEn4Ng19RQ==", + "dev": true, + "requires": { + "abstract-leveldown": "^2.4.1", + "lru-cache": "^3.2.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "lru-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-3.2.0.tgz", + "integrity": "sha512-91gyOKTc2k66UG6kHiH4h3S2eltcPwE1STVfMYC/NG+nZwf8IIuiamfmpGZjpbbxzSyEJaLC0tNSmhjlQUTJow==", + "dev": true, + "requires": { + "pseudomap": "^1.0.1" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001174", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001174.tgz", + "integrity": "sha512-tqClL/4ThQq6cfFXH3oJL4rifFBeM6gTkphjao5kgwMaW9yn0tKgQLAEfKzDwj6HQWCB/aWo8kTFlSvIN8geEA==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "checkpoint-store": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", + "integrity": "sha512-J/NdY2WvIx654cc6LWSq/IYFFCUf75fFTgwzFnmbqyORH4MwgiQCgswLLKBGzmsyTI5V7i5bp/So6sMbDWhedg==", + "dev": true, + "requires": { + "functional-red-black-tree": "^1.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true, + "optional": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cids": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", + "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "dependencies": { + "multicodec": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", + "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-is": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", + "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "dev": true, + "optional": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true + } + } + }, + "content-hash": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", + "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "dev": true, + "optional": true, + "requires": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true, + "optional": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true, + "optional": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "optional": true + }, + "cookiejar": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", + "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==", + "dev": true, + "optional": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "core-js-pure": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.8.2.tgz", + "integrity": "sha512-v6zfIQqL/pzTVAbZvYUozsxNfxcFb6Ks3ZfEbuneJl3FW9Jb8F6vLWB6f+qTmAu72msUdyb84V8d/yBFf7FNnw==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "optional": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-fetch": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.3.tgz", + "integrity": "sha512-PrWWNH3yL2NYIb/7WF/5vFG3DCQiXDOVf8k3ijatbrtnwNuhMWLC7YF7uqf53tbTFDzHIUD8oITw4Bxt8ST3Nw==", + "dev": true, + "requires": { + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "optional": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true, + "optional": true + }, + "deferred-leveldown": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-4.0.2.tgz", + "integrity": "sha512-5fMC8ek8alH16QiV0lTCis610D1Zt1+LA4MS4d63JgS32lrCjTFDUFz2ao09/j2I4Bqb5jL4FZYwu7Jz0XO1ww==", + "dev": true, + "requires": { + "abstract-leveldown": "~5.0.0", + "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha512-Y2caI5+ZwS5c3RiNDJ6u53VhQHv+hHKwhkI1iHvceKUHw9Df6EK2zRLfjejRgMuCuxK7PfSWIMwWecceVvThjQ==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "optional": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true, + "optional": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "dotignore": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", + "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha512-CEj8FwwNA4cVH2uFCoHUrmojhYh1vmCdOaneKJXwkeY1i9jnlslVo9dx+hQ5Hl9GnH/Bwy/IjxAyOePyPKYnzA==", + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "optional": true + }, + "electron-to-chromium": { + "version": "1.3.636", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.636.tgz", + "integrity": "sha512-Adcvng33sd3gTjNIDNXGD1G4H6qCImIy2euUJAQHtLNplEKU5WEz5KRJxupRNIIT8sD5oFZLTKBWAf12Bsz24A==", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "optional": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "encoding-down": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-5.0.4.tgz", + "integrity": "sha512-8CIZLDcSKxgzT+zX8ZVfgNbu8Md2wq/iqa1Y7zyVR18QBEAc0Nmzuvj/N5ykSKpfGzjM8qxbaFntLPwnVoUhZw==", + "dev": true, + "requires": { + "abstract-leveldown": "^5.0.0", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "optional": true + }, + "eth-block-tracker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-3.0.1.tgz", + "integrity": "sha512-WUVxWLuhMmsfenfZvFO5sbl1qFY2IqUlw/FPVmjjdElpqLsZtSG+wPe9Dz7W/sB6e80HgFKknOmKk2eNlznHug==", + "dev": true, + "requires": { + "eth-query": "^2.1.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.3", + "ethjs-util": "^0.1.3", + "json-rpc-engine": "^3.6.0", + "pify": "^2.3.0", + "tape": "^4.6.3" + }, + "dependencies": { + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "dev": true, + "optional": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "eth-json-rpc-infura": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz", + "integrity": "sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw==", + "dev": true, + "requires": { + "cross-fetch": "^2.1.1", + "eth-json-rpc-middleware": "^1.5.0", + "json-rpc-engine": "^3.4.0", + "json-rpc-error": "^2.0.0" + } + }, + "eth-json-rpc-middleware": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz", + "integrity": "sha512-tDVCTlrUvdqHKqivYMjtFZsdD7TtpNLBCfKAcOpaVs7orBMS/A8HWro6dIzNtTZIR05FAbJ3bioFOnZpuCew9Q==", + "dev": true, + "requires": { + "async": "^2.5.0", + "eth-query": "^2.1.2", + "eth-tx-summary": "^3.1.2", + "ethereumjs-block": "^1.6.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.2", + "ethereumjs-vm": "^2.1.0", + "fetch-ponyfill": "^4.0.0", + "json-rpc-engine": "^3.6.0", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "tape": "^4.6.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "dev": true + } + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "eth-lib": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "eth-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", + "integrity": "sha512-srES0ZcvwkR/wd5OQBRA1bIJMww1skfGS0s8wlwK3/oNP4+wnds60krvu5R1QbpRQjMmpG5OMIWro5s7gvDPsA==", + "dev": true, + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-sig-util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.0.tgz", + "integrity": "sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "elliptic": "^6.4.0", + "ethereumjs-abi": "0.6.5", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.0", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "ethereumjs-abi": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.5.tgz", + "integrity": "sha512-rCjJZ/AE96c/AAZc6O3kaog4FhOsAViaysBxqJNy2+LHP0ttH0zkZ7nXdVHOAyt6lFwLO0nlCwWszysG/ao1+g==", + "dev": true, + "requires": { + "bn.js": "^4.10.0", + "ethereumjs-util": "^4.3.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz", + "integrity": "sha512-WrckOZ7uBnei4+AKimpuF1B3Fv25OmoRgmYCpGsP7u8PFxXAmAgiJSYT2kRWnt6fVIlKaQlZvuwXp7PIrmn3/w==", + "dev": true, + "requires": { + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.0.0" + } + } + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "eth-tx-summary": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz", + "integrity": "sha512-NtlDnaVZah146Rm8HMRUNMgIwG/ED4jiqk0TME9zFheMl1jOp6jL1m0NKGjJwehXQ6ZKCPr16MTr+qspKpEXNg==", + "dev": true, + "requires": { + "async": "^2.1.2", + "clone": "^2.0.0", + "concat-stream": "^1.5.1", + "end-of-stream": "^1.1.0", + "eth-query": "^2.0.2", + "ethereumjs-block": "^1.4.1", + "ethereumjs-tx": "^1.1.1", + "ethereumjs-util": "^5.0.1", + "ethereumjs-vm": "^2.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "dev": true + } + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "ethashjs": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ethashjs/-/ethashjs-0.0.8.tgz", + "integrity": "sha512-/MSbf/r2/Ld8o0l15AymjOTlPqpN8Cr4ByUEA9GtR4x0yAh3TdtDzEg29zMjXCNPI7u6E5fOQdj/Cf9Tc7oVNw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "buffer-xor": "^2.0.1", + "ethereumjs-util": "^7.0.2", + "miller-rabin": "^4.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, + "buffer-xor": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", + "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-util": { + "version": "7.0.7", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.0.7.tgz", + "integrity": "sha512-vU5rtZBlZsgkTw3o6PDKyB8li2EgLavnAbsKcfsH2YhHH1Le+PP8vEiMnAnvgc1B6uMoaM5GDCrVztBw0Q5K9g==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.4" + } + } + } + }, + "ethereum-bloom-filters": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.7.tgz", + "integrity": "sha512-cDcJJSJ9GMAcURiAWO3DxIEhTL/uWqlQnvgKpuYQzYPrt/izuGU+1ntQmHt0IRq6ADoSYHFnB+aCEFIldjhkMQ==", + "dev": true, + "optional": true, + "requires": { + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true, + "optional": true + } + } + }, + "ethereum-common": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", + "integrity": "sha512-EoltVQTRNg2Uy4o84qpa2aXymXDJhxm7eos/ACOg0DG4baAbMjhbdAEsx9GeE8sC3XCxnYvrrzZDH8D8MtA2iQ==", + "dev": true + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-account": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-3.0.0.tgz", + "integrity": "sha512-WP6BdscjiiPkQfF9PVfMcwx/rDvfZTjFKY0Uwc09zSQr9JfIVH87dYIJu0gNhBhpmovV4yq295fdllS925fnBA==", + "dev": true, + "requires": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "ethereumjs-blockchain": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/ethereumjs-blockchain/-/ethereumjs-blockchain-4.0.4.tgz", + "integrity": "sha512-zCxaRMUOzzjvX78DTGiKjA+4h2/sF0OYL1QuPux0DHpyq8XiNoF5GYHtb++GUxVlMsMfZV7AVyzbtgcRdIcEPQ==", + "dev": true, + "requires": { + "async": "^2.6.1", + "ethashjs": "~0.0.7", + "ethereumjs-block": "~2.2.2", + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.1.0", + "flow-stoplight": "^1.0.0", + "level-mem": "^3.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.2", + "semaphore": "^1.1.0" + } + }, + "ethereumjs-common": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", + "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==", + "dev": true + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "ethereumjs-vm": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz", + "integrity": "sha512-X6qqZbsY33p5FTuZqCnQ4+lo957iUJMM6Mpa6bL4UW0dxM6WmDSHuI4j/zOp1E2TDKImBGCJA9QPfc08PaNubA==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "core-js-pure": "^3.0.1", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.2", + "ethereumjs-blockchain": "^4.0.3", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.2", + "ethereumjs-util": "^6.2.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1", + "util.promisify": "^1.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "ethereumjs-wallet": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz", + "integrity": "sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA==", + "dev": true, + "optional": true, + "requires": { + "aes-js": "^3.1.1", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^6.0.0", + "randombytes": "^2.0.6", + "safe-buffer": "^5.1.2", + "scryptsy": "^1.2.1", + "utf8": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "optional": true + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true, + "optional": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "optional": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true, + "optional": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", + "integrity": "sha512-Tgq37lkc9pUIgIKw5uitNUKcgcYL3R6JvXtKQbOf/ZSavXbidsksgp/pAY6p//uhw0I4yoMsvTSovvVIsk/qxA==", + "dev": true, + "requires": { + "checkpoint-store": "^1.1.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fetch-ponyfill": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", + "integrity": "sha512-knK9sGskIg2T7OnYLdZ2hZXn0CtDrAIBxYQLpmEf0BqfdWnwmM1weccUl5+4EdA44tzNSFAuxITPbXtPehUB3g==", + "dev": true, + "requires": { + "node-fetch": "~1.7.1" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true + } + } + }, + "find-yarn-workspace-root": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz", + "integrity": "sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q==", + "dev": true, + "requires": { + "fs-extra": "^4.0.3", + "micromatch": "^3.1.4" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "flow-stoplight": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/flow-stoplight/-/flow-stoplight-1.0.0.tgz", + "integrity": "sha512-rDjbZUKpN8OYhB0IE/vY/I8UWO/602IIJEU/76Tv4LvYnwHCk0BCsvz4eRr9n+FQcri7L5cyaXOo0+/Kh4HisA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha512-Ua9xNhH0b8pwE3yRbFfXJvfdWF0UHNCdeyb2sbi9Ul/M+r3PTdrz7Cv4SCfZRMjmzEM9PhraqfZFbGTIg3OMyA==", + "dev": true, + "optional": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "optional": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.2.tgz", + "integrity": "sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "optional": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "optional": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "optional": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "dev": true, + "optional": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dev": true, + "optional": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "heap": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz", + "integrity": "sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "dev": true, + "optional": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "optional": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "optional": true + } + } + }, + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "dev": true, + "optional": true + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "optional": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", + "dev": true, + "optional": true + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "optional": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", + "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", + "integrity": "sha512-XoFPJQmsAShb3jEQRfzf2rqXavq7fIqF/jOekp308JlThqrODnMpweVSGilKTCXELfLhltGP2AGgbQGVP8F1dg==", + "dev": true + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "dev": true, + "optional": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "optional": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "dev": true, + "optional": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dev": true, + "optional": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==", + "dev": true, + "optional": true + }, + "json-rpc-engine": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-3.8.0.tgz", + "integrity": "sha512-6QNcvm2gFuuK4TKU1uwfH0Qd/cOSb9c1lls0gbnIhciktIUQJwz6NQNAW4B1KiGPenv7IKu97V222Yo1bNhGuA==", + "dev": true, + "requires": { + "async": "^2.0.1", + "babel-preset-env": "^1.7.0", + "babelify": "^7.3.0", + "json-rpc-error": "^2.0.0", + "promise-to-callback": "^1.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "json-rpc-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/json-rpc-error/-/json-rpc-error-2.0.0.tgz", + "integrity": "sha512-EwUeWP+KgAZ/xqFpaP6YDAXMtCJi+o/QQpCQFIYyxr01AdADi2y413eM8hSqJcoQym9WMePAJWoaODEJufC4Ug==", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", + "integrity": "sha512-RJ9YYNCkhVDBuP4zN5BBtYAzEl03yq/jIIsyif0JY9qyJuQQZNeDK7anAPKKlyEtLSj2s8h6hNh2F8zO5q7ScA==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha512-a3xHnILGMtk+hDOqNwHzF6e2fNbiMrXZvxKQiEv2MlgQP+pjIOzqAmKYD2mDpXYE/44M7g+n9p2bKkYWDUcXCQ==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha512-i/J297TW6xyj7sDFa7AmBPkQvLIxWr2kKPWI26tXydnZrzVAocNqn5DMNT1Mzk0vit1V5UkRM7C1KdVNp7Lmcg==", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha512-trvBk1ki43VZptdBI5rIlG4YOzyeH/WefQt5rj1grasPn4iiZWKet8nkgc4GlsAylaztn0qZfUYOiTsASJFdNA==", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha512-4Dj8Rf+fQ+/Pn7C5qeEX02op1WfOss3PKTE9Nsop3Dx+6UPxlm1dr/og7o2cRa5hNN07CACr4NFzRLtj/rjWog==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dev": true, + "optional": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "dev": true, + "requires": { + "buffer": "^5.6.0" + } + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-2.0.3.tgz", + "integrity": "sha512-I6Heg70nfF+e5Y3/qfthJFexhRw/Gi3bIymCoXAlijZdAcLaPuWSJs3KXyTYf23ID6g0o2QF62Yh+grOXY3Rig==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.5", + "xtend": "^4.0.0" + } + }, + "level-mem": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-3.0.1.tgz", + "integrity": "sha512-LbtfK9+3Ug1UmvvhR2DqLqXiPW1OJ5jEh0a3m9ZgAipiwpSxGj/qaVVy54RG5vAQN1nCuXqjvprCuKSCxcJHBg==", + "dev": true, + "requires": { + "level-packager": "~4.0.0", + "memdown": "~3.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-5.0.0.tgz", + "integrity": "sha512-5mU5P1gXtsMIXg65/rsYGsi93+MlogXZ9FA8JnwKurHQg64bfXwGYVdVdijNTVNOlAsuIiOwHdvFFD5JqCJQ7A==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "memdown": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-3.0.0.tgz", + "integrity": "sha512-tbV02LfZMWLcHcq4tw++NuqMO+FZX8tNJEiD2aNRm48ZZusVg5N8NART+dmBkepJVye986oixErf7jfXboMGMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~5.0.0", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "level-packager": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-4.0.1.tgz", + "integrity": "sha512-svCRKfYLn9/4CoFfi+d8krOtrp6RoX8+xm0Na5cgXMqSyRru0AnDYdLl+YI8u1FyS6gGZ94ILLZDE5dh2but3Q==", + "dev": true, + "requires": { + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" + } + }, + "level-post": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/level-post/-/level-post-1.0.7.tgz", + "integrity": "sha512-PWYqG4Q00asOrLhX7BejSajByB4EmG2GaKHfj3h5UmmZ2duciXLPGYWIjBzLECFWUGOZWlm5B20h/n3Gs3HKew==", + "dev": true, + "requires": { + "ltgt": "^2.1.2" + } + }, + "level-sublevel": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-6.6.4.tgz", + "integrity": "sha512-pcCrTUOiO48+Kp6F1+UAzF/OtWqLcQVTVF39HLdZ3RO8XBoXt+XVPKZO1vVr1aUoxHZA9OtD2e1v7G+3S5KFDA==", + "dev": true, + "requires": { + "bytewise": "~1.1.0", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "level-iterator-stream": "^2.0.3", + "ltgt": "~2.1.1", + "pull-defer": "^0.2.2", + "pull-level": "^2.0.3", + "pull-stream": "^3.6.8", + "typewiselite": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "level-ws": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-1.0.0.tgz", + "integrity": "sha512-RXEfCmkd6WWFlArh3X8ONvQPm8jNpfA0s/36M4QzLqrLEIt1iJE9WBHLZ5vZJK6haMjJPJGJCQWfjMNnRcq/9Q==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.8", + "xtend": "^4.0.1" + } + }, + "levelup": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-3.1.1.tgz", + "integrity": "sha512-9N10xRkUU4dShSRRFTBdNaBxofz+PGaIZO962ckboJZiNmLuhVT6FZ6ZKAsICKfUBO76ySaYU6fJWX/jnj3Lcg==", + "dev": true, + "requires": { + "deferred-leveldown": "~4.0.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~3.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "level-iterator-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-3.0.1.tgz", + "integrity": "sha512-nEIQvxEED9yRThxvOrq8Aqziy4EGzrxSZK+QzEFAVuJvQ8glfyZ96GB6BoI4sBbLfjMXm2w4vu3Tkcm9obcY0g==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "xtend": "^4.0.0" + } + } + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "looper": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-2.0.0.tgz", + "integrity": "sha512-6DzMHJcjbQX/UPHc1rRCBfKlLwDkvuGZ715cIR36wSdYqWXFT35uLXq5P/2orl3tz+t+VOVPxw4yPinQlUDGDQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, + "optional": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ltgt": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.1.3.tgz", + "integrity": "sha512-5VjHC5GsENtIi5rbJd+feEpDKhfr7j0odoUR2Uh978g+2p93nd5o34cTjQWohXsPsCZeqoDnIqEf88mPCe0Pfw==", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true, + "optional": true + }, + "merkle-patricia-tree": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz", + "integrity": "sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ==", + "dev": true, + "requires": { + "async": "^2.6.1", + "ethereumjs-util": "^5.2.0", + "level-mem": "^3.0.1", + "level-ws": "^1.0.0", + "readable-stream": "^3.0.6", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "optional": true + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.45.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", + "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==", + "dev": true + }, + "mime-types": { + "version": "2.1.28", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", + "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", + "dev": true, + "requires": { + "mime-db": "1.45.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "optional": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "*" + } + }, + "mock-fs": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.13.0.tgz", + "integrity": "sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA==", + "dev": true, + "optional": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "dev": true, + "optional": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "multicodec": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", + "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", + "dev": true, + "optional": true, + "requires": { + "varint": "^5.0.0" + } + }, + "multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + }, + "dependencies": { + "multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "dev": true, + "optional": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + } + } + }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true, + "optional": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha512-mc/caHeUcdjnC/boPWJefDr4KUIWQNv+tlnFnJd38QMou86QtxQzBJfxgGRzvx8jazYRqrVlaHarfO72uNxPOg==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-IHLHYskTc2arMYsHZH82PVX8CSKT5lzb7AXeyO06QnjGDKtkv+pv3mEki6S7reB/x1QPo+YPxQRNEVgR5V/w3Q==", + "dev": true + }, + "node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==", + "dev": true, + "optional": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true, + "optional": true + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", + "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", + "dev": true + }, + "object-is": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.4.tgz", + "integrity": "sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz", + "integrity": "sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "oboe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", + "integrity": "sha512-ymBJ4xSC6GBXLT9Y7lirj+xbqBLa+jADGJldGEYG7u8sZbS9GyG+u1Xk9c5cbriKwSpCg41qUhPjvU5xOpvIyQ==", + "dev": true, + "optional": true, + "requires": { + "http-https": "^1.0.0" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "optional": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true, + "optional": true + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha512-gb0ryzr+K2qFqFv6qi3khoeqMZF/+ajxQipEF6NteZVnvz9tzdsfAVj3lYtn1gAXvH5lfLwfxEII799gt/mRIA==", + "dev": true, + "optional": true, + "requires": { + "p-finally": "^1.0.0" + }, + "dependencies": { + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "optional": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "optional": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "optional": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "patch-package": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.2.2.tgz", + "integrity": "sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg==", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^1.2.1", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true, + "optional": true + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "dev": true, + "optional": true + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-to-callback": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", + "integrity": "sha512-uhMIZmKM5ZteDMfLgJnoSq9GCwsNKrYau73Awf1jIy6/eUcuuZ3P+CD9zUv0kJsIUbU+x6uLNIhXhLHDs1pNPA==", + "dev": true, + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "optional": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pull-cat": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/pull-cat/-/pull-cat-1.1.11.tgz", + "integrity": "sha512-i3w+xZ3DCtTVz8S62hBOuNLRHqVDsHMNZmgrZsjPnsxXUgbWtXEee84lo1XswE7W2a3WHyqsNuDJTjVLAQR8xg==", + "dev": true + }, + "pull-defer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/pull-defer/-/pull-defer-0.2.3.tgz", + "integrity": "sha512-/An3KE7mVjZCqNhZsr22k1Tx8MACnUnHZZNPSJ0S62td8JtYr/AiRG42Vz7Syu31SoTLUzVIe61jtT/pNdjVYA==", + "dev": true + }, + "pull-level": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pull-level/-/pull-level-2.0.4.tgz", + "integrity": "sha512-fW6pljDeUThpq5KXwKbRG3X7Ogk3vc75d5OQU/TvXXui65ykm+Bn+fiktg+MOx2jJ85cd+sheufPL+rw9QSVZg==", + "dev": true, + "requires": { + "level-post": "^1.0.7", + "pull-cat": "^1.1.9", + "pull-live": "^1.0.1", + "pull-pushable": "^2.0.0", + "pull-stream": "^3.4.0", + "pull-window": "^2.1.4", + "stream-to-pull-stream": "^1.7.1" + } + }, + "pull-live": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/pull-live/-/pull-live-1.0.1.tgz", + "integrity": "sha512-tkNz1QT5gId8aPhV5+dmwoIiA1nmfDOzJDlOOUpU5DNusj6neNd3EePybJ5+sITr2FwyCs/FVpx74YMCfc8YeA==", + "dev": true, + "requires": { + "pull-cat": "^1.1.9", + "pull-stream": "^3.4.0" + } + }, + "pull-pushable": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pull-pushable/-/pull-pushable-2.2.0.tgz", + "integrity": "sha512-M7dp95enQ2kaHvfCt2+DJfyzgCSpWVR2h2kWYnVsW6ZpxQBx5wOu0QWOvQPVoPnBLUZYitYP2y7HyHkLQNeGXg==", + "dev": true + }, + "pull-stream": { + "version": "3.6.14", + "resolved": "https://registry.npmjs.org/pull-stream/-/pull-stream-3.6.14.tgz", + "integrity": "sha512-KIqdvpqHHaTUA2mCYcLG1ibEbu/LCKoJZsBWyv9lSYtPkJPBq8m3Hxa103xHi6D2thj5YXa0TqK3L3GUkwgnew==", + "dev": true + }, + "pull-window": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/pull-window/-/pull-window-2.1.4.tgz", + "integrity": "sha512-cbDzN76BMlcGG46OImrgpkMf/VkCnupj8JhsrpBw3aWBM9ye345aYnqitmZCgauBkc0HbbRRn9hCnsa3k2FNUg==", + "dev": true, + "requires": { + "looper": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "optional": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "optional": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "optional": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "optional": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", + "dev": true, + "optional": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "resumer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/resumer/-/resumer-0.0.0.tgz", + "integrity": "sha512-Fn9X8rX8yYF4m81rZCK/5VmrmsSbqS/i3rDLl6ZZHAXgC2nTAx3dhwG8q8odP/RmdLa2YrybDJaAMg+X1ajY3w==", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", + "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "dev": true, + "requires": { + "bn.js": "^4.11.1" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-event-emitter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", + "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", + "dev": true, + "requires": { + "events": "^3.0.0" + } + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "scryptsy": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", + "integrity": "sha512-aldIRgMozSJ/Gl6K6qmJZysRP82lz83Wb42vl4PWN8SaLFHIaOzLPc9nUUW2jQN88CuGm5q5HefJ9jZ3nWSmTw==", + "dev": true, + "optional": true, + "requires": { + "pbkdf2": "^3.0.3" + } + }, + "secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "seedrandom": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.1.tgz", + "integrity": "sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg==", + "dev": true + }, + "semaphore": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", + "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "optional": true + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true, + "optional": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "optional": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "dev": true, + "optional": true, + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha512-Li5AOqrZWCVA2n5kryzEmqai6bKSIvpz5oUJHPVj6+dsbD3X1ixtsY5tEnsaNpH3pFAHmG8eIHUrtEtohrg+UQ==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true, + "optional": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "optional": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", + "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha512-liJwHPI9x9d9w5WSIjM58MqGmmb7XzNqwdUA3kSBQ4lmDngexlKwawGzK3J1mKXi6+sysoMDlpVyZh9sv5vRfw==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "optional": true + }, + "stream-to-pull-stream": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz", + "integrity": "sha512-6sNyqJpr5dIOQdgNy/xcDWwDuzAsAwVzhzrWlAPAQ7Lkjx/rv0wgvxEyKwTq6FmNd5rjTrELt/CLmaSw7crMGg==", + "dev": true, + "requires": { + "looper": "^3.0.0", + "pull-stream": "^3.2.3" + }, + "dependencies": { + "looper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/looper/-/looper-3.0.0.tgz", + "integrity": "sha512-LJ9wplN/uSn72oJRsXTx+snxPet5c8XiZmOKCm906NVYu+ag6SB6vUcnJcWxgnl2NfbIyeobAn7Bwv6xRj2XJg==", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true, + "optional": true + }, + "string.prototype.trim": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz", + "integrity": "sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz", + "integrity": "sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz", + "integrity": "sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "swarm-js": { + "version": "0.1.40", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", + "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", + "dev": true, + "optional": true, + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "dev": true, + "optional": true + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "optional": true + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", + "dev": true, + "optional": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true, + "optional": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha512-BVA4lR5PIviy2PMseNd2jbFQ+jwSwQGdJejf5ctd1rEXt0Ypd7yanUK9+lYechVlN5VaTJGsu2U/3MDDu6KgBA==", + "dev": true, + "optional": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "tape": { + "version": "4.13.3", + "resolved": "https://registry.npmjs.org/tape/-/tape-4.13.3.tgz", + "integrity": "sha512-0/Y20PwRIUkQcTCSi4AASs+OANZZwqPKaipGCEwp10dQMipVvSZwUUCi01Y/OklIGyHKFhIcjock+DKnBfLAFw==", + "dev": true, + "requires": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.5", + "object-inspect": "~1.7.0", + "resolve": "~1.17.0", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "dev": true, + "optional": true + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true, + "optional": true + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "optional": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typewise": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "dev": true, + "requires": { + "typewise-core": "^1.2.0" + } + }, + "typewise-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==", + "dev": true + }, + "typewiselite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typewiselite/-/typewiselite-1.0.0.tgz", + "integrity": "sha512-J9alhjVHupW3Wfz6qFRGgQw0N3gr8hOkw6zm7FZ6UR1Cse/oD9/JVok7DNE9TT9IbciDHX2Ex9+ksE6cRmtymw==", + "dev": true + }, + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "dev": true, + "optional": true + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", + "dev": true, + "optional": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + } + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unorm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", + "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "optional": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dev": true, + "optional": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", + "dev": true, + "optional": true + }, + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "dev": true, + "optional": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "utf-8-validate": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.4.tgz", + "integrity": "sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q==", + "dev": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "optional": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "dev": true, + "optional": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "web3": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.11.tgz", + "integrity": "sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ==", + "dev": true, + "optional": true, + "requires": { + "web3-bzz": "1.2.11", + "web3-core": "1.2.11", + "web3-eth": "1.2.11", + "web3-eth-personal": "1.2.11", + "web3-net": "1.2.11", + "web3-shh": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-bzz": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.11.tgz", + "integrity": "sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40", + "underscore": "1.9.1" + }, + "dependencies": { + "@types/node": { + "version": "12.19.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz", + "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==", + "dev": true, + "optional": true + } + } + }, + "web3-core": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.11.tgz", + "integrity": "sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ==", + "dev": true, + "optional": true, + "requires": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-requestmanager": "1.2.11", + "web3-utils": "1.2.11" + }, + "dependencies": { + "@types/node": { + "version": "12.19.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz", + "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==", + "dev": true, + "optional": true + } + } + }, + "web3-core-helpers": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz", + "integrity": "sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A==", + "dev": true, + "optional": true, + "requires": { + "underscore": "1.9.1", + "web3-eth-iban": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-core-method": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.11.tgz", + "integrity": "sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-core-promievent": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz", + "integrity": "sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA==", + "dev": true, + "optional": true, + "requires": { + "eventemitter3": "4.0.4" + } + }, + "web3-core-requestmanager": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz", + "integrity": "sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA==", + "dev": true, + "optional": true, + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "web3-providers-http": "1.2.11", + "web3-providers-ipc": "1.2.11", + "web3-providers-ws": "1.2.11" + } + }, + "web3-core-subscriptions": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz", + "integrity": "sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg==", + "dev": true, + "optional": true, + "requires": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11" + } + }, + "web3-eth": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.11.tgz", + "integrity": "sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ==", + "dev": true, + "optional": true, + "requires": { + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-eth-accounts": "1.2.11", + "web3-eth-contract": "1.2.11", + "web3-eth-ens": "1.2.11", + "web3-eth-iban": "1.2.11", + "web3-eth-personal": "1.2.11", + "web3-net": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-eth-abi": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz", + "integrity": "sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg==", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/abi": "5.0.0-beta.153", + "underscore": "1.9.1", + "web3-utils": "1.2.11" + } + }, + "web3-eth-accounts": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz", + "integrity": "sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw==", + "dev": true, + "optional": true, + "requires": { + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "scrypt-js": "^3.0.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-utils": "1.2.11" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true, + "optional": true + } + } + }, + "web3-eth-contract": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz", + "integrity": "sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow==", + "dev": true, + "optional": true, + "requires": { + "@types/bn.js": "^4.11.5", + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-eth-ens": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz", + "integrity": "sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA==", + "dev": true, + "optional": true, + "requires": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-eth-contract": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-eth-iban": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz", + "integrity": "sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.9", + "web3-utils": "1.2.11" + } + }, + "web3-eth-personal": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz", + "integrity": "sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "^12.12.6", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-net": "1.2.11", + "web3-utils": "1.2.11" + }, + "dependencies": { + "@types/node": { + "version": "12.19.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.12.tgz", + "integrity": "sha512-UwfL2uIU9arX/+/PRcIkT08/iBadGN2z6ExOROA2Dh5mAuWTBj6iJbQX4nekiV5H8cTrEG569LeX+HRco9Cbxw==", + "dev": true, + "optional": true + } + } + }, + "web3-net": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.11.tgz", + "integrity": "sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg==", + "dev": true, + "optional": true, + "requires": { + "web3-core": "1.2.11", + "web3-core-method": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-provider-engine": { + "version": "14.2.1", + "resolved": "https://registry.npmjs.org/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz", + "integrity": "sha512-iSv31h2qXkr9vrL6UZDm4leZMc32SjWJFGOp/D92JXfcEboCqraZyuExDkpxKw8ziTufXieNM7LSXNHzszYdJw==", + "dev": true, + "requires": { + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^3.0.0", + "eth-json-rpc-infura": "^3.1.0", + "eth-sig-util": "^1.4.2", + "ethereumjs-block": "^1.2.2", + "ethereumjs-tx": "^1.2.0", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", + "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", + "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "eth-sig-util": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-1.4.2.tgz", + "integrity": "sha512-iNZ576iTOGcfllftB73cPB5AN+XUQAT/T8xzsILsghXC1o8gJUqe3RHlcDqagu+biFpYQ61KQrZZJza8eRSYqw==", + "dev": true, + "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "ethereumjs-abi": { + "version": "git+https://github.com/ethereumjs/ethereumjs-abi.git#ee3994657fa7a427238e6ba92a84d0b529bbcde0", + "from": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", + "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", + "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", + "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", + "dev": true + } + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", + "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", + "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", + "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", + "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", + "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", + "integrity": "sha512-1qua0RHNtr4nrZBgYlpV0qHHeHpcRRWTxEZJ8xsemoHAXNL5tbooh4tPEEqIqsbWCAJBmUmkwYK/sW5OrFjWWw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", + "integrity": "sha512-XUTaO/+Db51Uiyp/t7fCMGVFOTdtLS/NIACxE/GHsij15mKzxksZifKVjlXDF41JMUP/oM1Oc4YNGdKnc3dVLw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", + "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", + "integrity": "sha512-iVrGHZB8i4OQfM155xx8akvG9FIj+ht14DX5CQkCTG4EHzZ3d3sgckIf/Lm9ivZalEsFuEVnWv2B2WZvbrro2w==", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", + "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", + "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "web3-providers-http": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.11.tgz", + "integrity": "sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA==", + "dev": true, + "optional": true, + "requires": { + "web3-core-helpers": "1.2.11", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz", + "integrity": "sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ==", + "dev": true, + "optional": true, + "requires": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11" + } + }, + "web3-providers-ws": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz", + "integrity": "sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg==", + "dev": true, + "optional": true, + "requires": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "websocket": "^1.0.31" + } + }, + "web3-shh": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.11.tgz", + "integrity": "sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg==", + "dev": true, + "optional": true, + "requires": { + "web3-core": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-net": "1.2.11" + } + }, + "web3-utils": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.11.tgz", + "integrity": "sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + } + } + }, + "websocket": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.32.tgz", + "integrity": "sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q==", + "dev": true, + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "dev": true, + "optional": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true, + "optional": true + } + } + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dev": true, + "optional": true, + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dev": true, + "optional": true, + "requires": { + "xhr-request": "^1.1.0" + } + }, + "xhr2-cookies": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", + "integrity": "sha512-hjXUA6q+jl/bd8ADHcVfFsSPIf+tyLIjuO9TwJC9WI6JP2zKcS7C+p56I9kCLLsaCiNT035iYvEUUzdEFj/8+g==", + "dev": true, + "optional": true, + "requires": { + "cookiejar": "^2.1.1" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", + "integrity": "sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", + "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true + }, + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "dependencies": { + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + } + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true, + "optional": true + }, + "gzip-size": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz", + "integrity": "sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==", + "dev": true, + "requires": { + "duplexer": "^0.1.2" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hardhat": { + "version": "2.10.1", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.6.2", + "@ethereumjs/blockchain": "^5.5.2", + "@ethereumjs/common": "^2.6.4", + "@ethereumjs/tx": "^3.5.1", + "@ethereumjs/vm": "^5.9.0", + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@sentry/node": "^5.18.1", + "@solidity-parser/parser": "^0.14.2", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^7.1.4", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "lodash": "^4.17.11", + "merkle-patricia-tree": "^4.2.4", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "slash": "^3.0.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "true-case-path": "^2.2.1", + "tsort": "0.0.1", + "undici": "^5.4.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "dependencies": { + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "dev": true, + "requires": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true + }, + "@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true + }, + "@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "dev": true, + "requires": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "dev": true, + "requires": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + } + } + }, + "ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "dev": true, + "requires": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "merkle-patricia-tree": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", + "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", + "dev": true, + "requires": { + "@types/levelup": "^4.3.0", + "ethereumjs-util": "^7.1.4", + "level-mem": "^5.0.1", + "level-ws": "^2.0.0", + "readable-stream": "^3.6.0", + "semaphore-async-await": "^1.5.1" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "highcharts": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.2.0.tgz", + "integrity": "sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-duration": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.27.2.tgz", + "integrity": "sha512-A15OmA3FLFRnehvF4ZMocsxTZYvHq4ze7L+AgR1DeHw0xC9vMd4euInY83uqGU9/XXKNnVIEeKc1R8G8nKqtzg==", + "dev": true + }, + "husky": { + "version": "7.0.4", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", + "dev": true + } + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha512-xgs2NH9AE66ucSq4cNG1nhSFghr5l6tdL15Pk+jl46bmmBapgoaY/AacXyaDznAqmGL99TiLSQgO/XazFSKYeQ==", + "dev": true + }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "requires": { + "fp-ts": "^1.0.0" + } + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", + "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + } + }, + "istanbul-reports": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", + "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true + }, + "jest-watch-typeahead": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.5.0.tgz", + "integrity": "sha512-4r36w9vU8+rdg48hj0Z7TvcSqVP6Ao8dk04grlHQNgduyCB0SqrI0xWIl85ZhXrzYvxQ0N5H+rRLAejkQzEHeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-regex-util": "^25.2.1", + "jest-watcher": "^25.2.4", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "jest-regex-util": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", + "dev": true + } + } + }, + "jest-watcher": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-25.5.0.tgz", + "integrity": "sha512-XrSfJnVASEl+5+bb51V0Q7WQx65dTSk7NL4yDdVjPnRNpM0hG+ncFmDYJo9O8jaSRcAitVbuVawyXCRoxGrT5Q==", + "dev": true, + "requires": { + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "jest-util": "^25.5.0", + "string-length": "^3.1.0" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + } + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + } + } + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jju": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.4.0.tgz", + "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", + "dev": true + }, + "jora": { + "version": "1.0.0-beta.7", + "resolved": "https://registry.npmjs.org/jora/-/jora-1.0.0-beta.7.tgz", + "integrity": "sha512-7Mq37XUPQM/fEetH8Z4iHTABWgoq64UL9mIRfssX1b0Ogns3TqbOS0UIV7gwQ3D0RshfLJzGgbbW17UyFjxSLQ==", + "dev": true, + "requires": { + "@discoveryjs/natural-compare": "^1.0.0" + } + }, + "jpjs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jpjs/-/jpjs-1.2.1.tgz", + "integrity": "sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw==", + "dev": true + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz", + "integrity": "sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "object.assign": "^4.1.2" + } + }, + "keccak": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", + "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "language-tags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", + "dev": true, + "requires": { + "language-subtag-registry": "~0.3.2" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha512-YiGkH6EnGrDGqLMITnGjXtGmNtjoXw9SVUzcaos8RBi7Ps0VBylkq+vOcY9QE5poLasPCR849ucFUkl0UzUyOw==", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "dev": true, + "requires": { + "buffer": "^5.6.0" + } + }, + "level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "dev": true + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + } + }, + "level-mem": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", + "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", + "dev": true, + "requires": { + "level-packager": "^5.0.3", + "memdown": "^5.0.0" + } + }, + "level-packager": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", + "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", + "dev": true, + "requires": { + "encoding-down": "^6.3.0", + "levelup": "^4.3.2" + } + }, + "level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "dev": true, + "requires": { + "xtend": "^4.0.2" + } + }, + "level-ws": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", + "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.0", + "xtend": "^4.0.1" + } + }, + "levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lilconfig": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", + "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "dev": true + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + } + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha512-hFuH8TY+Yji7Eja3mGiuAxBqLagejScbG8GbG0j6o9vzn0YL14My+ktnqtZgFTosKymC9/44wP6s7xyuLfnClw==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "log-update": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", + "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "cli-cursor": "^2.0.0", + "wrap-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0" + } + } + } + }, + "lolex": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", + "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loupe": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", + "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "dev": true, + "requires": { + "get-func-name": "^2.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "memdown": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", + "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", + "dev": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha512-RrGCXRm/fRVqMIhqXrGEX9rRADavPiDFSoMb/k64i9XMk8uH4r/Omi5Ctierj6XzNecwDbO4WuFbDD1zmpl3Tg==", + "dev": true + } + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "merkle-patricia-tree": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.4.tgz", + "integrity": "sha512-eHbf/BG6eGNsqqfbLED9rIqbsF4+sykEaBn6OLNs71tjclbMcMOk1tEPmJKcNcNCLkvbpY/lwyOlizWsqPNo8w==", + "dev": true, + "requires": { + "@types/levelup": "^4.3.0", + "ethereumjs-util": "^7.1.4", + "level-mem": "^5.0.1", + "level-ws": "^2.0.0", + "readable-stream": "^3.6.0", + "semaphore-async-await": "^1.5.1" + } + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "requires": { + "obliterator": "^2.0.0" + } + }, + "mocha": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.0.0.tgz", + "integrity": "sha512-0Wl+elVUD43Y0BqPZBzZt8Tnkw9CMUdNYnUsTfOM1vuhJVZL+kiesFYsqwBkEEuEixaiPe5ZQdqDgX2jddhmoA==", + "dev": true, + "requires": { + "@ungap/promise-all-settled": "1.1.2", + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + } + } + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", + "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "nanospinner": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/nanospinner/-/nanospinner-0.4.0.tgz", + "integrity": "sha512-FhxiB9PcEztMw6XfQDSLJBMlmN4n7B2hl/oiK4Hy9479r1+df0i2099DgcEx+m6yBfBJVUuKpILvP8fM3rK3Sw==", + "dev": true, + "requires": { + "picocolors": "^1.0.0" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "dev": true, + "requires": { + "whatwg-url": "^5.0.0" + }, + "dependencies": { + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } + } + }, + "node-gyp-build": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", + "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-notifier": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-6.0.0.tgz", + "integrity": "sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw==", + "dev": true, + "optional": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.1.1", + "semver": "^6.3.0", + "shellwords": "^0.1.1", + "which": "^1.3.1" + } + }, + "node-releases": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", + "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "dev": true + } + } + }, + "nwsapi": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.1.tgz", + "integrity": "sha512-JYOWTeFoS0Z93587vRJgASD5Ut11fYl5NyihP3KrYBvMe1FRRs6RN7m20SA/16GM4P6hTnZjT+UmDOt38UeXNg==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "ora": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-4.1.1.tgz", + "integrity": "sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.2.0", + "is-interactive": "^1.0.0", + "log-symbols": "^3.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + } + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "patch-package": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", + "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "dev": true + }, + "pkg-conf": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", + "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "load-json-file": "^4.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "pkg-config": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-config/-/pkg-config-1.1.1.tgz", + "integrity": "sha512-ft/WI9YK6FuTuw4Ql+QUaNXtm/ASQNqDUUsZEgFZKyFpW6amyP8Gx01xrRs8KdiNbbqXfYxkOXplpq1euWbOjw==", + "dev": true, + "requires": { + "debug-log": "^1.0.0", + "find-root": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "8.4.14", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", + "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.2.tgz", + "integrity": "sha512-c6Hzc4GAv95B7suy4udszX9Zy4ETyMCgFPUDtWjdFTKH1SE9eFY/jEpHSwTH1QPuwxHpWslhckUQWbNRM4ho5g==", + "dev": true, + "requires": { + "browserslist": "^4.20.3", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz", + "integrity": "sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==", + "dev": true + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true + }, + "postcss-merge-longhand": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.6.tgz", + "integrity": "sha512-6C/UGF/3T5OE2CEbOuX7iNO63dnvqhGZeUnKkDeifebY0XqkkvrctYSZurpNE902LDf2yKwwPFgotnfSoPhQiw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.2.tgz", + "integrity": "sha512-zKMUlnw+zYCWoPN6yhPjtcEdlJaMUZ0WyVcxTAmw3lkkN/NDMRkOkiuctQEoWAOvH7twaxUUdvBWl0d4+hifRQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.3.tgz", + "integrity": "sha512-bkzpWcjykkqIujNL+EVEPOlLYi/eZ050oImVtHU7b4lFS82jPnsCb44gvC6pxaNt38Els3jWYDHTjHKf0koTgg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz", + "integrity": "sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz", + "integrity": "sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz", + "integrity": "sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz", + "integrity": "sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "postinstall-postinstall": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", + "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "progress-estimator": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/progress-estimator/-/progress-estimator-0.2.2.tgz", + "integrity": "sha512-GF76Ac02MTJD6o2nMNtmtOFjwWCnHcvXyn5HOWPQnEMO8OTLw7LAvNmrwe8LmdsB+eZhwUu9fX/c9iQnBxWaFA==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "cli-spinners": "^1.3.1", + "humanize-duration": "^3.15.3", + "log-update": "^2.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "dev": true + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA==", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + }, + "dependencies": { + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ==", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + } + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w==", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-2.0.0.tgz", + "integrity": "sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q==", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", + "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha512-Xct+41K3twrbBHdxAgMoOS+cNcoqIjfM2/VxBF4LL2hVph7YsF8VSKyQ3BDFZwEVbok9yeDl2le/qo0S77WG2w==", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg==", + "dev": true + } + } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "requires": { + "bn.js": "^5.2.0" + } + }, + "rollup": { + "version": "1.32.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-1.32.1.tgz", + "integrity": "sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/node": "*", + "acorn": "^7.1.0" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + } + } + }, + "rollup-plugin-sourcemaps": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + } + } + }, + "rollup-plugin-terser": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz", + "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.5.5", + "jest-worker": "^24.9.0", + "rollup-pluginutils": "^2.8.2", + "serialize-javascript": "^4.0.0", + "terser": "^4.6.2" + }, + "dependencies": { + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "rollup-plugin-typescript2": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.27.3.tgz", + "integrity": "sha512-gmYPIFmALj9D3Ga1ZbTZAKTXq1JKlTQBtj299DXhqYz9cL3g/AQfUvbb2UhH+Nf++cCq941W2Mv7UcrcgLzJJg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "8.1.0", + "resolve": "1.17.0", + "tslib": "2.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "dev": true + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + } + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "requires": { + "mri": "^1.1.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semaphore-async-await": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", + "integrity": "sha512-b/ptP11hETwYWpeilHXXQiV5UJNJl7ZWWooKRE5eBIYWoom6dZ0SluCIdCtKycsMtZgKWE01/qAw6jblw1YVhg==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "size-limit": { + "version": "6.0.4", + "dev": true, + "requires": { + "bytes-iec": "^3.1.1", + "chokidar": "^3.5.2", + "ci-job-number": "^1.2.2", + "globby": "^11.0.4", + "lilconfig": "^2.0.3", + "nanospinner": "^0.4.0", + "picocolors": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", + "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, + "standard": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/standard/-/standard-12.0.1.tgz", + "integrity": "sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg==", + "dev": true, + "requires": { + "eslint": "~5.4.0", + "eslint-config-standard": "12.0.0", + "eslint-config-standard-jsx": "6.0.2", + "eslint-plugin-import": "~2.14.0", + "eslint-plugin-node": "~7.0.1", + "eslint-plugin-promise": "~4.0.0", + "eslint-plugin-react": "~7.11.1", + "eslint-plugin-standard": "~4.0.0", + "standard-engine": "~9.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha512-j/Toj7f1z98Hh2cYo2BVr85EpIRWqUi7rtRSGxh/cqUjqrnJe9l9UE7IUGd2vQ2p+kSHLkSzObQPZPLUC6TQwg==", + "dev": true + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "eslint": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.4.0.tgz", + "integrity": "sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg==", + "dev": true, + "requires": { + "ajv": "^6.5.0", + "babel-code-frame": "^6.26.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^4.0.0", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^4.0.0", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.2", + "imurmurhash": "^0.1.4", + "inquirer": "^5.2.0", + "is-resolvable": "^1.1.0", + "js-yaml": "^3.11.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.5", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^2.0.0", + "require-uncached": "^1.0.3", + "semver": "^5.5.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^4.0.3", + "text-table": "^0.2.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-4.1.0.tgz", + "integrity": "sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w==", + "dev": true, + "requires": { + "acorn": "^6.0.2", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha512-uXP/zGzxxFvFfcZGgBIwotm+Tdc55ddPAzF7iHshP4YGaXMww7rSF9peD9D1sui5ebONg5UobsZv+FfgEpGv/w==", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "inquirer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-5.2.0.tgz", + "integrity": "sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^5.5.2", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.3.tgz", + "integrity": "sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg==", + "dev": true, + "requires": { + "ajv": "^6.0.1", + "ajv-keywords": "^3.0.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha512-CJ17OoULEKXpA5pef3qLj5AxTJ6mSt7g84he2WIskKwqFO4T97d5V7Tadl0DYDk7qyUOQD5WlUlOMChaYrhxeA==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, + "standard-engine": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-9.0.0.tgz", + "integrity": "sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w==", + "dev": true, + "requires": { + "deglob": "^2.1.0", + "get-stdin": "^6.0.0", + "minimist": "^1.1.0", + "pkg-conf": "^2.0.0" + } + }, + "standardx": { + "version": "3.0.0", + "dev": true, + "requires": { + "standard": "^12.0.1", + "standard-engine": "^9.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + } + } + }, + "string.prototype.trimend": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz", + "integrity": "sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz", + "integrity": "sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-loader": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", + "integrity": "sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==", + "dev": true + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", + "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "dependencies": { + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true + } + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "requires": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", + "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", + "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.7", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "terser": { + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "test-value": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", + "integrity": "sha512-+1epbAxtKeXttkGFMTX9H42oqzOTufR1ceCF+GYA5aOmvaPq9wd4PUS8329fn2RRLGNeUkgRLnVpycjx8DsO2w==", + "dev": true, + "requires": { + "array-back": "^1.0.3", + "typical": "^2.6.0" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha512-1WxbZvrmyhkNoeYcizokbmh5oiOCIfyvGtcqbK3Ls1v1fKcquzxnQSceOx6tzq7jmai2kFLWIpGND2cLhH6TPw==", + "dev": true, + "requires": { + "typical": "^2.6.0" + } + } + } + }, + "testrpc": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", + "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==", + "dev": true + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "ts-command-line-args": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.3.1.tgz", + "integrity": "sha512-FR3y7pLl/fuUNSmnPhfLArGqRrpojQgIEEOVzYx9DhTmfIN7C9RWSfpkJEF4J+Gk7aVx5pak8I7vWZsaN4N84g==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + } + }, + "ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true + }, + "ts-generator": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz", + "integrity": "sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==", + "dev": true, + "requires": { + "@types/mkdirp": "^0.5.2", + "@types/prettier": "^2.1.1", + "@types/resolve": "^0.0.8", + "chalk": "^2.4.1", + "glob": "^7.1.2", + "mkdirp": "^0.5.1", + "prettier": "^2.1.2", + "resolve": "^1.8.1", + "ts-essentials": "^1.0.0" + }, + "dependencies": { + "@types/node": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.6.tgz", + "integrity": "sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "ts-essentials": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", + "integrity": "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==", + "dev": true + } + } + }, + "ts-node": { + "version": "10.9.1", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + } + }, + "tsdx": { + "version": "0.14.1", + "dev": true, + "requires": { + "@babel/core": "^7.4.4", + "@babel/helper-module-imports": "^7.0.0", + "@babel/parser": "^7.11.5", + "@babel/plugin-proposal-class-properties": "^7.4.4", + "@babel/preset-env": "^7.11.0", + "@babel/traverse": "^7.11.5", + "@rollup/plugin-babel": "^5.1.0", + "@rollup/plugin-commonjs": "^11.0.0", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "@rollup/plugin-replace": "^2.2.1", + "@types/jest": "^25.2.1", + "@typescript-eslint/eslint-plugin": "^2.12.0", + "@typescript-eslint/parser": "^2.12.0", + "ansi-escapes": "^4.2.1", + "asyncro": "^3.0.0", + "babel-eslint": "^10.0.3", + "babel-plugin-annotate-pure-calls": "^0.4.0", + "babel-plugin-dev-expression": "^0.2.1", + "babel-plugin-macros": "^2.6.1", + "babel-plugin-polyfill-regenerator": "^0.0.4", + "babel-plugin-transform-rename-import": "^2.3.0", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "enquirer": "^2.3.4", + "eslint": "^6.1.0", + "eslint-config-prettier": "^6.0.0", + "eslint-config-react-app": "^5.2.1", + "eslint-plugin-flowtype": "^3.13.0", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-prettier": "^3.1.0", + "eslint-plugin-react": "^7.14.3", + "eslint-plugin-react-hooks": "^2.2.0", + "execa": "^4.0.3", + "fs-extra": "^9.0.0", + "jest": "^25.3.0", + "jest-watch-typeahead": "^0.5.0", + "jpjs": "^1.2.1", + "lodash.merge": "^4.6.2", + "ora": "^4.0.3", + "pascal-case": "^3.1.1", + "prettier": "^1.19.1", + "progress-estimator": "^0.2.2", + "regenerator-runtime": "^0.13.7", + "rollup": "^1.32.1", + "rollup-plugin-sourcemaps": "^0.6.2", + "rollup-plugin-terser": "^5.1.2", + "rollup-plugin-typescript2": "^0.27.3", + "sade": "^1.4.2", + "semver": "^7.1.1", + "shelljs": "^0.8.3", + "tiny-glob": "^0.2.6", + "ts-jest": "^25.3.1", + "tslib": "^1.9.3", + "typescript": "^3.7.3" + }, + "dependencies": { + "@jest/console": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-25.5.0.tgz", + "integrity": "sha512-T48kZa6MK1Y6k4b89sexwmSF4YLeZS/Udqg3Jj3jG/cHH+N/sLFCEoXEDMOKugJQ9FxPN1osxIknvKkxt6MKyw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-message-util": "^25.5.0", + "jest-util": "^25.5.0", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/core": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-25.5.4.tgz", + "integrity": "sha512-3uSo7laYxF00Dg/DMgbn4xMJKmDdWvZnf89n8Xj/5/AeQ2dOQmn6b6Hkj/MleyzZWXpwv+WSdYWl4cLsy2JsoA==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/reporters": "^25.5.1", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^25.5.0", + "jest-config": "^25.5.4", + "jest-haste-map": "^25.5.1", + "jest-message-util": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-resolve-dependencies": "^25.5.4", + "jest-runner": "^25.5.4", + "jest-runtime": "^25.5.4", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "jest-watcher": "^25.5.0", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "realpath-native": "^2.0.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/environment": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-25.5.0.tgz", + "integrity": "sha512-U2VXPEqL07E/V7pSZMSQCvV5Ea4lqOlT+0ZFijl/i316cRMHvZ4qC+jBdryd+lmRetjQo0YIQr6cVPNxxK87mA==", + "dev": true, + "requires": { + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0" + } + }, + "@jest/fake-timers": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-25.5.0.tgz", + "integrity": "sha512-9y2+uGnESw/oyOI3eww9yaxdZyHq7XvprfP/eeoCsjqKYts2yRlsHS/SgjPDV8FyMfn2nbMy8YzUk6nyvdLOpQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "lolex": "^5.0.0" + } + }, + "@jest/globals": { + "version": "25.5.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-25.5.2.tgz", + "integrity": "sha512-AgAS/Ny7Q2RCIj5kZ+0MuKM1wbF0WMLxbCVl/GOMoCNbODRdJ541IxJ98xnZdVSZXivKpJlNPIWa3QmY0l4CXA==", + "dev": true, + "requires": { + "@jest/environment": "^25.5.0", + "@jest/types": "^25.5.0", + "expect": "^25.5.0" + } + }, + "@jest/reporters": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-25.5.1.tgz", + "integrity": "sha512-3jbd8pPDTuhYJ7vqiHXbSwTJQNavczPs+f1kRprRDxETeE3u6srJ+f0NPuwvOmk+lmunZzPkYWIFZDLHQPkviw==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^25.5.1", + "jest-resolve": "^25.5.1", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "node-notifier": "^6.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^3.1.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^4.1.3" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/source-map": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-25.5.0.tgz", + "integrity": "sha512-eIGx0xN12yVpMcPaVpjXPnn3N30QGJCJQSkEDUt9x1fI1Gdvb07Ml6K5iN2hG7NmMP6FDmtPEssE3z6doOYUwQ==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + } + }, + "@jest/test-result": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-25.5.0.tgz", + "integrity": "sha512-oV+hPJgXN7IQf/fHWkcS99y0smKLU2czLBJ9WA0jHITLst58HpQMtzSYxzaBvYc6U5U6jfoMthqsUlUlbRXs0A==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/types": "^25.5.0", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-25.5.4.tgz", + "integrity": "sha512-pTJGEkSeg1EkCO2YWq6hbFvKNXk8ejqlxiOg1jBNLnWrgXOkdY6UmqZpwGFXNnRt9B8nO1uWMzLLZ4eCmhkPNA==", + "dev": true, + "requires": { + "@jest/test-result": "^25.5.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^25.5.1", + "jest-runner": "^25.5.4", + "jest-runtime": "^25.5.4" + } + }, + "@jest/transform": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-25.5.1.tgz", + "integrity": "sha512-Y8CEoVwXb4QwA6Y/9uDkn0Xfz0finGkieuV0xkdF9UtZGJeLukD5nLkaVrVsODB1ojRWlaoD0AJZpVHCSnJEvg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^25.5.0", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^3.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^25.5.1", + "jest-regex-util": "^25.2.6", + "jest-util": "^25.5.0", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@jest/types": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", + "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ==", + "dev": true + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "15.0.14", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.14.tgz", + "integrity": "sha512-yEJzHoxf6SyQGhBhIYGXQDSCkJjB6HohDShto7m8vaKg9Yp0Yn8+71J9eakh2bnPg6BfsH9PRMhiRTZnd4eXGQ==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "babel-jest": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-25.5.1.tgz", + "integrity": "sha512-9dA9+GmMjIzgPnYtkhBg73gOo/RHqPmLruP3BaGL4KEX3Dwz6pI8auSN8G8+iuEG90+GSswyKvslN+JYSaacaQ==", + "dev": true, + "requires": { + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "babel-plugin-jest-hoist": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.5.0.tgz", + "integrity": "sha512-u+/W+WAjMlvoocYGTwthAiQSxDcJAyHpQ6oWlHdFZaaN+Rlk8Q7iiwDPg2lN/FyJtAYnKjFxbn7xus4HCFkg5g==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-preset-current-node-syntax": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.4.tgz", + "integrity": "sha512-5/INNCYhUGqw7VbVjT/hb3ucjgkVHKXY7lX3ZjlN4gm565VyFmJUrJ/h+h16ECVB38R/9SF6aACydpKMLZ/c9w==", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-25.5.0.tgz", + "integrity": "sha512-8ZczygctQkBU+63DtSOKGh7tFL0CeCuz+1ieud9lJ1WPQ9O6A1a/r+LGn6Y705PA6whHQ3T1XuB/PmpfNYf8Fw==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^25.5.0", + "babel-preset-current-node-syntax": "^0.1.2" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "diff-sequences": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", + "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "array.prototype.flat": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", + "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + } + } + }, + "eslint-plugin-react": { + "version": "7.30.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.30.1.tgz", + "integrity": "sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==", + "dev": true, + "requires": { + "array-includes": "^3.1.5", + "array.prototype.flatmap": "^1.3.0", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.1", + "object.values": "^1.1.5", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.7" + }, + "dependencies": { + "array.prototype.flatmap": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", + "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0" + } + }, + "object.entries": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", + "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.fromentries": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", + "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.hasown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.1.tgz", + "integrity": "sha512-LYLe4tivNQzq4JdaWW6WO3HMZZJWzkkH8fnI6EebWl0VZth2wL2Lovm74ep2/gZzlaTdV62JZHEqHQ2yVn8Q/A==", + "dev": true, + "requires": { + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "resolve": { + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "string.prototype.matchall": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", + "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.4.1", + "side-channel": "^1.0.4" + } + } + } + }, + "execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "expect": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-25.5.0.tgz", + "integrity": "sha512-w7KAXo0+6qqZZhovCaBVPSIqQp7/UTcx4M9uKt2m6pd2VB1voyC8JizLRqeEqud3AAVP02g+hbErDu5gu64tlA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-styles": "^4.0.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-regex-util": "^25.2.6" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + } + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-25.5.4.tgz", + "integrity": "sha512-hHFJROBTqZahnO+X+PMtT6G2/ztqAZJveGqz//FnWWHurizkD05PQGzRZOhF3XP6z7SJmL+5tCfW8qV06JypwQ==", + "dev": true, + "requires": { + "@jest/core": "^25.5.4", + "import-local": "^3.0.2", + "jest-cli": "^25.5.4" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "jest-cli": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-25.5.4.tgz", + "integrity": "sha512-rG8uJkIiOUpnREh1768/N3n27Cm+xPFkSNFO91tgg+8o2rXeVLStz+vkXkGr4UtzH6t1SNbjwoiswd7p4AhHTw==", + "dev": true, + "requires": { + "@jest/core": "^25.5.4", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^25.5.4", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "prompts": "^2.0.1", + "realpath-native": "^2.0.0", + "yargs": "^15.3.1" + } + } + } + }, + "jest-changed-files": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-25.5.0.tgz", + "integrity": "sha512-EOw9QEqapsDT7mKF162m8HFzRPbmP8qJQny6ldVOdOVBz3ACgPm/1nAn5fPQ/NDaYhX/AHkrGwwkCncpAVSXcw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "execa": "^3.2.0", + "throat": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-3.4.0.tgz", + "integrity": "sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "p-finally": "^2.0.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "jest-config": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-25.5.4.tgz", + "integrity": "sha512-SZwR91SwcdK6bz7Gco8qL7YY2sx8tFJYzvg216DLihTWf+LKY/DoJXpM9nTzYakSyfblbqeU48p/p7Jzy05Atg==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^25.5.4", + "@jest/types": "^25.5.0", + "babel-jest": "^25.5.1", + "chalk": "^3.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^25.5.0", + "jest-environment-node": "^25.5.0", + "jest-get-type": "^25.2.6", + "jest-jasmine2": "^25.5.4", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "micromatch": "^4.0.2", + "pretty-format": "^25.5.0", + "realpath-native": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-diff": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", + "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "diff-sequences": "^25.2.6", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-docblock": { + "version": "25.3.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-25.3.0.tgz", + "integrity": "sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-25.5.0.tgz", + "integrity": "sha512-QBogUxna3D8vtiItvn54xXde7+vuzqRrEeaw8r1s+1TG9eZLVJE5ZkKoSUlqFwRjnlaA4hyKGiu9OlkFIuKnjA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "jest-util": "^25.5.0", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-25.5.0.tgz", + "integrity": "sha512-7Jr02ydaq4jaWMZLY+Skn8wL5nVIYpWvmeatOHL3tOcV3Zw8sjnPpx+ZdeBfc457p8jCR9J6YCc+Lga0oIy62A==", + "dev": true, + "requires": { + "@jest/environment": "^25.5.0", + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "jsdom": "^15.2.1" + } + }, + "jest-environment-node": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-25.5.0.tgz", + "integrity": "sha512-iuxK6rQR2En9EID+2k+IBs5fCFd919gVVK5BeND82fYeLWPqvRcFNPKu9+gxTwfB5XwBGBvZ0HFQa+cHtIoslA==", + "dev": true, + "requires": { + "@jest/environment": "^25.5.0", + "@jest/fake-timers": "^25.5.0", + "@jest/types": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-util": "^25.5.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-get-type": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", + "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", + "dev": true + }, + "jest-haste-map": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-25.5.1.tgz", + "integrity": "sha512-dddgh9UZjV7SCDQUrQ+5t9yy8iEgKc1AKqZR9YDww8xsVOtzPQSMVLDChc21+g29oTRexb9/B0bIlZL+sWmvAQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "@types/graceful-fs": "^4.1.2", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.1.2", + "graceful-fs": "^4.2.4", + "jest-serializer": "^25.5.0", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7", + "which": "^2.0.2" + } + }, + "jest-jasmine2": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-25.5.4.tgz", + "integrity": "sha512-9acbWEfbmS8UpdcfqnDO+uBUgKa/9hcRh983IHdM+pKmJPL77G0sWAAK0V0kr5LK3a8cSBfkFSoncXwQlRZfkQ==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^25.5.0", + "@jest/source-map": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "co": "^4.6.0", + "expect": "^25.5.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^25.5.0", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-runtime": "^25.5.4", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "pretty-format": "^25.5.0", + "throat": "^5.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-leak-detector": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-25.5.0.tgz", + "integrity": "sha512-rV7JdLsanS8OkdDpZtgBf61L5xZ4NnYLBq72r6ldxahJWWczZjXawRsoHyXzibM5ed7C2QRjpp6ypgwGdKyoVA==", + "dev": true, + "requires": { + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + } + }, + "jest-matcher-utils": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-25.5.0.tgz", + "integrity": "sha512-VWI269+9JS5cpndnpCwm7dy7JtGQT30UHfrnM3mXl22gHGt/b7NkjBqXfbhZ8V4B7ANUsjK18PlSBmG0YH7gjw==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "jest-diff": "^25.5.0", + "jest-get-type": "^25.2.6", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-message-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-25.5.0.tgz", + "integrity": "sha512-ezddz3YCT/LT0SKAmylVyWWIGYoKHOFOFXx3/nA4m794lfVUskMcwhip6vTgdVrOtYdjeQeis2ypzes9mZb4EA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "slash": "^3.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-mock": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-25.5.0.tgz", + "integrity": "sha512-eXWuTV8mKzp/ovHc5+3USJMYsTBhyQ+5A1Mak35dey/RG8GlM4YWVylZuGgVXinaW6tpvk/RSecmF37FKUlpXA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0" + } + }, + "jest-regex-util": { + "version": "25.2.6", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-25.2.6.tgz", + "integrity": "sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw==", + "dev": true + }, + "jest-resolve": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-25.5.1.tgz", + "integrity": "sha512-Hc09hYch5aWdtejsUZhA+vSzcotf7fajSlPA6EZPE1RmPBAD39XtJhvHWFStid58iit4IPDLI/Da4cwdDmAHiQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "browser-resolve": "^1.11.3", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.1", + "read-pkg-up": "^7.0.1", + "realpath-native": "^2.0.0", + "resolve": "^1.17.0", + "slash": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-25.5.4.tgz", + "integrity": "sha512-yFmbPd+DAQjJQg88HveObcGBA32nqNZ02fjYmtL16t1xw9bAttSn5UGRRhzMHIQbsep7znWvAvnD4kDqOFM0Uw==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-snapshot": "^25.5.1" + } + }, + "jest-runner": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-25.5.4.tgz", + "integrity": "sha512-V/2R7fKZo6blP8E9BL9vJ8aTU4TH2beuqGNxHbxi6t14XzTb+x90B3FRgdvuHm41GY8ch4xxvf0ATH4hdpjTqg==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/environment": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^25.5.4", + "jest-docblock": "^25.3.0", + "jest-haste-map": "^25.5.1", + "jest-jasmine2": "^25.5.4", + "jest-leak-detector": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-resolve": "^25.5.1", + "jest-runtime": "^25.5.4", + "jest-util": "^25.5.0", + "jest-worker": "^25.5.0", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-runtime": { + "version": "25.5.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-25.5.4.tgz", + "integrity": "sha512-RWTt8LeWh3GvjYtASH2eezkc8AehVoWKK20udV6n3/gC87wlTbE1kIA+opCvNWyyPeBs6ptYsc6nyHUb1GlUVQ==", + "dev": true, + "requires": { + "@jest/console": "^25.5.0", + "@jest/environment": "^25.5.0", + "@jest/globals": "^25.5.2", + "@jest/source-map": "^25.5.0", + "@jest/test-result": "^25.5.0", + "@jest/transform": "^25.5.1", + "@jest/types": "^25.5.0", + "@types/yargs": "^15.0.0", + "chalk": "^3.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^25.5.4", + "jest-haste-map": "^25.5.1", + "jest-message-util": "^25.5.0", + "jest-mock": "^25.5.0", + "jest-regex-util": "^25.2.6", + "jest-resolve": "^25.5.1", + "jest-snapshot": "^25.5.1", + "jest-util": "^25.5.0", + "jest-validate": "^25.5.0", + "realpath-native": "^2.0.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.3.1" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + } + } + }, + "jest-serializer": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-25.5.0.tgz", + "integrity": "sha512-LxD8fY1lByomEPflwur9o4e2a5twSQ7TaVNLlFUuToIdoJuBt8tzHfCsZ42Ok6LkKXWzFWf3AGmheuLAA7LcCA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4" + } + }, + "jest-snapshot": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-25.5.1.tgz", + "integrity": "sha512-C02JE1TUe64p2v1auUJ2ze5vcuv32tkv9PyhEb318e8XOKF7MOyXdJ7kdjbvrp3ChPLU2usI7Rjxs97Dj5P0uQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^25.5.0", + "@types/prettier": "^1.19.0", + "chalk": "^3.0.0", + "expect": "^25.5.0", + "graceful-fs": "^4.2.4", + "jest-diff": "^25.5.0", + "jest-get-type": "^25.2.6", + "jest-matcher-utils": "^25.5.0", + "jest-message-util": "^25.5.0", + "jest-resolve": "^25.5.1", + "make-dir": "^3.0.0", + "natural-compare": "^1.4.0", + "pretty-format": "^25.5.0", + "semver": "^6.3.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "jest-util": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-25.5.0.tgz", + "integrity": "sha512-KVlX+WWg1zUTB9ktvhsg2PXZVdkI1NBevOJSkTKYAyXyH4QSvh+Lay/e/v+bmaFfrkfx43xD8QTfgobzlEXdIA==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "chalk": "^3.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "make-dir": "^3.0.0" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-validate": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-25.5.0.tgz", + "integrity": "sha512-okUFKqhZIpo3jDdtUXUZ2LxGUZJIlfdYBvZb1aczzxrlyMlqdnnws9MOxezoLGhSaFc2XYaHNReNQfj5zPIWyQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "jest-get-type": "^25.2.6", + "leven": "^3.1.0", + "pretty-format": "^25.5.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + } + } + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "jsdom": { + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", + "array-equal": "^1.0.0", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.1", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.2.0", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.7", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^3.0.1", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^7.0.0", + "xml-name-validator": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "p-finally": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", + "integrity": "sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true + }, + "pretty-format": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", + "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", + "dev": true, + "requires": { + "@jest/types": "^25.5.0", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^16.12.0" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + } + }, + "throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "tough-cookie": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", + "dev": true, + "requires": { + "ip-regex": "^2.1.0", + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-jest": { + "version": "25.5.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-25.5.1.tgz", + "integrity": "sha512-kHEUlZMK8fn8vkxDjwbHlxXRB9dHYpyzqKIGDNxbzs+Rz+ssNDSDNusEK8Fk/sDd4xE6iKoQLfFkFVaskmTJyw==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "buffer-from": "1.x", + "fast-json-stable-stringify": "2.x", + "json5": "2.x", + "lodash.memoize": "4.x", + "make-error": "1.x", + "micromatch": "4.x", + "mkdirp": "0.x", + "semver": "6.x", + "yargs-parser": "18.x" + }, + "dependencies": { + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typescript": { + "version": "3.9.10", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", + "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "v8-to-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-4.1.4.tgz", + "integrity": "sha512-Rw6vJHj1mbdK8edjR7+zuJrpDtKIgNdAvTSAcpYfgMIw+u2dPDntD3dgN4XQFLU2/fvFQdzj+EeSGfd/jnY5fQ==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "dependencies": { + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + } + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + } + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typechain": { + "version": "6.1.0", + "dev": true, + "requires": { + "@types/prettier": "^2.1.1", + "debug": "^4.1.1", + "fs-extra": "^7.0.0", + "glob": "^7.1.6", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.1.2", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true + } + } + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.7.4", + "dev": true + }, + "typical": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", + "integrity": "sha512-ofhi8kjIje6npGozTip9Fr8iecmYfEbS06i0JnIg+rh51KakryWF4+jX8lLKZVhy6N+ID45WYSFCxPOdTWCzNg==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "undici": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.8.0.tgz", + "integrity": "sha512-1F7Vtcez5w/LwH2G2tGnFIihuWUlc58YidwLiCv+jR2Z50x0tNXpRRw7eOIJ+GvqCqIkg9SB7NWAJ/T9TLfv8Q==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + } + } + }, + "update-browserslist-db": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", + "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "dev": true + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validator": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz", + "integrity": "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "web3-utils": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.7.4.tgz", + "integrity": "sha512-acBdm6Evd0TEZRnChM/MCvGsMwYKmSh7OaUfNf5OKG0CIeGWD/6gqLOWIwmwSnre/2WrA1nKGId5uW2e5EfluA==", + "dev": true, + "requires": { + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + }, + "webpack": { + "version": "5.73.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", + "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.3", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==", + "dev": true + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "requires": { + "string-width": "^4.0.0" + } + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha512-UD7d8HFA2+PZsbKyaOCEy8gMh1oDtHgJh1LfgjQ4zVXmYjAT/kvz3PueITKuqDiIXQe7yzpPnxX3lNc+AhQMyw==", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "dependencies": { + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true + } + } + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + }, + "z-schema": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/z-schema/-/z-schema-5.0.3.tgz", + "integrity": "sha512-sGvEcBOTNum68x9jCpCVGPFJ6mWnkD0YxOcddDlJHRx3tKdB2q8pCHExMVZo/AV/6geuVJXG7hljDaWG8+5GDw==", + "dev": true, + "requires": { + "commander": "^2.20.3", + "lodash.get": "^4.4.2", + "lodash.isequal": "^4.5.0", + "validator": "^13.7.0" + } + } + } +} diff --git a/package.json b/package.json index 4d419ab..8c41343 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ } ], "devDependencies": { - "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#f184482cca57c72db22ba97649d5f84a1b7ad291", + "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", "@nomiclabs/hardhat-waffle": "^2.0.1", diff --git a/src/addresses.ts b/src/addresses.ts index 0c688a3..e5bd9ea 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -2,7 +2,7 @@ * @public * Type for index sugbraph endpoints by chain ID. */ -export type SubgraphBook = { + export type SubgraphBook = { [key: number]: string; }; @@ -24,6 +24,7 @@ export type Addresses = { alwaysTier: string; stakeFactory: string; orderBook: string; + autoApproveFactory: string; }; const addressBook = [ @@ -45,6 +46,7 @@ const addressBook = [ verifyTierFactory: '', stakeFactory: '', orderBook: '', + autoApproveFactory: '', }, }, { @@ -65,6 +67,7 @@ const addressBook = [ verifyTierFactory: '', stakeFactory: '', orderBook: '', + autoApproveFactory: '', }, }, { @@ -85,6 +88,7 @@ const addressBook = [ verifyTierFactory: '', stakeFactory: '', orderBook: '', + autoApproveFactory: '', }, }, { @@ -105,6 +109,7 @@ const addressBook = [ verifyTierFactory: '', stakeFactory: '', orderBook: '', + autoApproveFactory: '', }, }, { @@ -125,6 +130,7 @@ const addressBook = [ verifyTierFactory: '', stakeFactory: '', orderBook: '', + autoApproveFactory: '', }, }, { @@ -145,6 +151,7 @@ const addressBook = [ saleFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', stakeFactory: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', orderBook: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', + autoApproveFactory: '0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82', }, }, { @@ -165,6 +172,7 @@ const addressBook = [ verifyTierFactory: '', stakeFactory: '', orderBook: '', + autoApproveFactory: '', }, }, { @@ -185,6 +193,7 @@ const addressBook = [ verifyTierFactory: '0xAf6D4770E78D2d6ad8675666E251933649A8467e', stakeFactory: '0x96031f3ba3C57B5a5ea6f7581b61bCf0a9cC51b3', orderBook: '0xb8BADe9783a815512A67B86e5fE967e9B861E102', + autoApproveFactory: '', }, }, ]; @@ -267,4 +276,4 @@ export class AddressBook { return endpoint; }; -} +} \ No newline at end of file diff --git a/src/contracts/autoApprove.ts b/src/contracts/autoApprove.ts new file mode 100644 index 0000000..a82e0b6 --- /dev/null +++ b/src/contracts/autoApprove.ts @@ -0,0 +1,247 @@ +import { Signer, ContractTransaction } from 'ethers'; +import { FactoryContract } from '../classes/factoryContract'; +import { AutoApproveFactory__factory, AutoApprove__factory } from '../typechain'; +import { + ReadTxOverrides, + TxOverrides, +} from '../classes/rainContract'; +import { + StateConfig, + StorageOpcodesRange, + AllStandardOps, +} from '../classes/vm'; + + +/** + * @public + * Type for the opcodes availables in a AutoApprove instance. + */ +export type AutoApproveOps = typeof AllStandardOps & { + EVIDENCE_DATA_APPROVED: number; +}; + +/** + * @public + * A class for calling method on a Rain AutoApprove contract. + * + * @remarks + * This class provides an easy way to interact with the AutoApprove contract. + * + * @example + * ```typescript + * import { AutoApprove } from 'rain-sdk' + * + * // To deploy a new AutoApprove, pass an ethers.js Signer and the config for the AutoApprove. + * const newAutoApprove = await AutoApprove.deploy(signer, stateConfig) + * + * // To connect to an existing AutoApprove just pass the address and an ethers.js Signer. + * const existingAutoApprove = new AutoApprove(address, signer) + * ``` + */ +export class AutoApprove extends FactoryContract { + protected static readonly nameBookReference: string = 'autoApproveFactory'; + + /** + * Constructs a new AutoApprove from a known address. + * + * @param address - The address of the AutoApprove contract + * @param signer - An ethers.js Signer + * @returns A new AutoApprove instance + * + */ + constructor(address: string, signer: Signer) { + AutoApprove.checkAddress(address); + + super(address, signer); + const _autoApprove = AutoApprove__factory.connect(address, signer); + + this.afterAdd = _autoApprove.afterAdd; + this.afterApprove = _autoApprove.afterApprove; + this.afterBan = _autoApprove.afterBan + this.afterRemove = _autoApprove.afterRemove; + this.owner = _autoApprove.owner; + this.renounceOwnership = _autoApprove.renounceOwnership; + this.transferOwnership = _autoApprove.transferOwnership; + this.packedFunctionPointers = _autoApprove.packedFunctionPointers; + this.storageOpcodesRange = _autoApprove.storageOpcodesRange; + + } + + /** + * Deploys a new AutoApprove. + * + * @param signer - An ethers.js Signer + * @param autoApproveConfig - AutoApprove's @see StateConfig + * @param overrides - @see TxOverrides + * @returns A new AutoApprove instance + * + */ + public static deploy = async ( + signer: Signer, + autoApproveConfig: StateConfig, + overrides: TxOverrides = {} + ): Promise => { + const autoApproveFactory = AutoApproveFactory__factory.connect( + this.getBookAddress(await this.getChainId(signer)), + signer + ); + + const tx = await autoApproveFactory.createChildTyped( + autoApproveConfig, + overrides + ); + const receipt = await tx.wait(); + const address = this.getNewChildFromReceipt(receipt, autoApproveFactory); + return new AutoApprove(address, signer); + }; + + + /** + * All the opcodes avaialbles in the AutoApprove contract. + * + * @remarks + * This expose all the standard opcodes along with the specific local AutoApprove opcodes. + */ + public static Opcodes: AutoApproveOps = { + ...AllStandardOps, + EVIDENCE_DATA_APPROVED: 0 + AllStandardOps.length, + }; + + /** + * Connect to this AutoApprove instance with a new signer + * + * @param signer - The new signer which will be connected + * @returns The AutoApprove Contract instance with a new signer + */ + public readonly connect = (signer: Signer): AutoApprove => { + return new AutoApprove(this.address, signer); + }; + + /** + * Checks if address is registered as a child contract of this AutoApproveFactory on a specific network + * + * @param signer - An ethers.js Signer + * @param maybeChild - Address to check registration for. + * @returns `true` if address was deployed by this contract factory, otherwise `false` + */ + public static isChild = async ( + signer: Signer, + maybeChild: string + ): Promise => { + return await this._isChild(signer, maybeChild); + }; + + /** + * @public + */ + public readonly afterAdd: ( + arg0: string, + evidences_: EvidenceConfig[], + overrides?: TxOverrides & { from?: string | Promise } + ) => Promise; + + /** + * @public + */ + public readonly afterApprove :( + approver_: string, + evidences_: EvidenceConfig[], + overrides?: TxOverrides & { from?: string | Promise } + ) => Promise; + + /** + * @public + */ + public readonly afterBan: ( + banner_: string, + evidences_: EvidenceConfig[], + overrides?: TxOverrides & { from?: string | Promise } + ) => Promise; + + /** + * @public + */ + public readonly afterRemove: ( + remover_: string, + evidences_: EvidenceConfig[], + overrides?: TxOverrides & { from?: string | Promise } + ) => Promise; + + /** + * @public + */ + public readonly owner: (overrides?: ReadTxOverrides) => Promise; + + /** + * @public + */ + public readonly renounceOwnership: ( + overrides?: TxOverrides & { from?: string | Promise } + ) => Promise; + + /** + * @public + */ + public readonly transferOwnership: ( + newOwner: string, + overrides?: TxOverrides & { from?: string | Promise } + ) => Promise; + + /** + * Returns the pointer and length for AutoApprove's storage opcodes + * + * @param overrides - @see ReadTxOverrides + * @returns a StorageOpcodesRange + */ + public readonly storageOpcodesRange: ( + overrides?: ReadTxOverrides + ) => Promise; + + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; +} + +/** + * @public + */ +export type EvidenceConfig = { + account: string; + data: string; +}; + +/** + * @public + * Enum for operand of the AutoApprove's CONTEXT opcode + */ +export enum AutoApproveContext { + /** + * 0 or the index of the context array for AutoApprove CONTEXT opcode + * stacks the caller Account address + */ + Account, + /** + * 1 or the index of the context array in the AutoApprove CONTEXT opcode + * stacks data + */ + Data, + /** + * length of AutoApprove's valid context opcodes operands + */ + length, +} + +/** + * @public + * Enum for operand of the AutoApprove's STORAGE opcode + */ +export enum AutoApproveStorage { + /** + * length of AutoApprove's valid storage opcodes operands + */ + length, +} \ No newline at end of file diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index 9e9c508..a575b51 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -96,8 +96,8 @@ export class EmissionsERC20 extends ITierV2 { this.totalSupply = _emission.totalSupply; this.transfer = _emission.transfer; this.transferFrom = _emission.transferFrom; - this.fnPtrs = _emission.fnPtrs; this.storageOpcodesRange = _emission.storageOpcodesRange; + this.packedFunctionPointers = _emission.packedFunctionPointers; } /** @@ -358,14 +358,6 @@ export class EmissionsERC20 extends ITierV2 { overrides?: TxOverrides ) => Promise; - /** - * Pointers to opcode functions, necessary for being able to read the packedBytes - * - * @param overrides - @see ReadTxOverrides - * @returns the opcode functions pointers - */ - public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; - /** * Returns the pointer and length for emissionERC20's storage opcodes * @@ -375,6 +367,14 @@ export class EmissionsERC20 extends ITierV2 { public readonly storageOpcodesRange: ( overrides?: ReadTxOverrides ) => Promise; + + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** @@ -385,4 +385,4 @@ export interface EmissionsERC20DeployArgs { allowDelegatedClaims: boolean; erc20Config: ERC20Config; vmStateConfig: StateConfig; -} +} \ No newline at end of file diff --git a/src/contracts/generics/seedDance.ts b/src/contracts/generics/seedDance.ts new file mode 100644 index 0000000..8899da8 --- /dev/null +++ b/src/contracts/generics/seedDance.ts @@ -0,0 +1,75 @@ +import { SeedDance__factory } from '../../typechain'; +import { Signer, BigNumberish, BigNumber } from 'ethers'; +import { + RainContract, + ReadTxOverrides, +} from '../../classes/rainContract'; + + +/** + * @public + * A class for calling method on a Rain SeedDance contract. + * + * @remarks + * This class provides an easy way to interact with the SeedDance contract. + * + * @example + * ```typescript + * import { SeedDance } from 'rain-sdk' + * + * const seedDance = await SeedDance.get(signer); + * or + * const seedDance = new SeedDance(address, signer); + * + * const tx = await seedDance.canRevealUntil(requiredArgs); + * ``` + */ +export class SeedDance extends RainContract { + protected static readonly nameBookReference: string = 'seedDance'; + + /** + * Constructs a new SeedDance from a known address. + * + * @param address - The address of the SeedDance contract + * @param signer - An ethers.js Signer + * @returns A new SeedDance instance + */ + constructor(address: string, signer: Signer) { + SeedDance.checkAddress(address); + + super(address, signer); + const _seedDance = SeedDance__factory.connect(address, signer); + + this.canRevealUntil = _seedDance.canRevealUntil + } + + /** + * Connect to this SeedDance instance with a new signer + * + * @param signer - The new signer which will be connected + * @returns The SeedDance Contract instance with a new signer + */ + public readonly connect = (signer: Signer): SeedDance => { + return new SeedDance(this.address, signer); + }; + + /** + * @public + */ + public readonly canRevealUntil: ( + seed_: BigNumberish, + start_: BigNumberish, + timeBound_: TimeBoundConfig, + owner_: string, + overrides?: ReadTxOverrides + ) => Promise; + +} + +/** + * @public + */ +export type TimeBoundConfig = { + baseDuration: BigNumberish; + maxExtraTime: BigNumberish; +} \ No newline at end of file diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index 3f3e749..bcf8f95 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -66,10 +66,10 @@ export class OrderBook extends RainContract { this.addOrder = _orderBook.addOrder; this.clear = _orderBook.clear; this.deposit = _orderBook.deposit; - this.fnPtrs = _orderBook.fnPtrs; this.removeOrder = _orderBook.removeOrder; this.storageOpcodesRange = _orderBook.storageOpcodesRange; this.withdraw = _orderBook.withdraw; + this.packedFunctionPointers = _orderBook.packedFunctionPointers; } /** @@ -170,14 +170,14 @@ export class OrderBook extends RainContract { * * @param a_ - @see Order The first order * @param b_ - @see Order The second order - * @param bountyConfig_ - @see BountyConfig The corresponding vault IDs of the bounty + * @param clearConfig_ - @see ClearConfig The corresponding vault IDs of the bounty * @param overrides - @see TxOverrides * @returns */ public readonly clear: ( a_: Order, b_: Order, - bountyConfig_: BountyConfig, + clearConfig_: ClearConfig, overrides?: TxOverrides ) => Promise; @@ -191,32 +191,29 @@ export class OrderBook extends RainContract { overrides?: ReadTxOverrides ) => Promise; - /** + /** * Pointers to opcode functions, necessary for being able to read the packedBytes - * + * * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ - public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; - + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } +/** + * @public + * token the address of the desired token + * vaultId corresponding token vault id + */ +export type IOConfig = { token: string; vaultId: BigNumberish }; + /** * @public * A type for an order configuration without any specific owner - * - * 'inputToken' address - the desired token to be recieved if order clears - * 'inputVaultId' corresponding inputToken vault - * 'outputToken' address - the token to be paid if order clears - * 'outputVaultId' corresponding outputToken vault - * 'tracking' the tracking state of the order - * 'vmState' the @see StateConfig that determines the Amount and Price of the order */ export type OrderConfig = { - inputToken: string; - inputVaultId: BigNumberish; - outputToken: string; - outputVaultId: BigNumberish; + validInputs: IOConfig[]; + validOutputs: IOConfig[]; tracking: BigNumberish; vmStateConfig: StateConfig; }; @@ -225,21 +222,11 @@ export type OrderConfig = { * @public * Type for an order containing all that is required in an order. * An Order is an @see OrderConfig with an owner - * - * 'owner' of this order - * 'inputToken' address - the desired token to be recieved if order clears - * 'inputVaultId' corresponding inputToken vault - * 'outputToken' address - the token to be paid if order clears - * 'outputVaultId' corresponding outputToken vault - * 'tracking' the tracking state of the order - * 'vmState' the @see StateConfig that determines the Amount and Price of the order */ export type Order = { owner: string; - inputToken: string; - inputVaultId: BigNumberish; - outputToken: string; - outputVaultId: BigNumberish; + validInputs: IOConfig[]; + validOutputs: IOConfig[]; tracking: BigNumberish; vmState: BytesLike; }; @@ -274,11 +261,15 @@ export type WithdrawConfig = { /** * @public - * Type for bounty vaultIds used when in @see clear when clearing 2 orders that will collect the bounties into its vaults + * Type for clear vaultIds used when in @see clear when clearing 2 orders that will collect the bounties into its vaults */ -export type BountyConfig = { - aVaultId: BigNumberish; - bVaultId: BigNumberish; + export type ClearConfig = { + aInputIndex: BigNumberish; + aOutputIndex: BigNumberish; + bInputIndex: BigNumberish; + bOutputIndex: BigNumberish; + aBountyVaultId: BigNumberish; + bBountyVaultId: BigNumberish; }; /** @@ -322,4 +313,4 @@ export enum OrderbookStorage { * length of Orederbook's valid storage opcodes */ length, -} +} \ No newline at end of file diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index 75094ba..40f40b4 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -109,8 +109,9 @@ export class Sale extends FactoryContract { this.timeout = _sale.timeout; this.reserve = _sale.reserve; this.token = _sale.token; - this.fnPtrs = _sale.fnPtrs; + this.packedFunctionPointers = _sale.packedFunctionPointers; this.storageOpcodesRange = _sale.storageOpcodesRange; + this.packedFunctionPointers = _sale.packedFunctionPointers; } /** @@ -339,7 +340,7 @@ export class Sale extends FactoryContract { * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ - public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; /** * Returns the pointer and length for sale's storage opcodes @@ -347,9 +348,7 @@ export class Sale extends FactoryContract { * @param overrides - @see ReadTxOverrides * @returns a StorageOpcodesRange */ - public readonly storageOpcodesRange: ( - overrides?: ReadTxOverrides - ) => Promise; + public readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; } /** @@ -456,4 +455,4 @@ export interface Receipt { feeRecipient: string; fee: BigNumberish; units: BigNumberish; -} +} \ No newline at end of file diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 7062833..ca926ba 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -134,7 +134,7 @@ export class CombineTierGenerator { * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP * - * @returns this + * @returns CombineTierGenerator */ public combineWith( reporter: string | StateConfig, @@ -171,7 +171,7 @@ export class CombineTierGenerator { * @param endTier - end of the report updating range (inclusive) * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP * - * @returns this + * @returns CombineTierGenerator */ public updateReport( startTier: Tier, @@ -206,7 +206,7 @@ export class CombineTierGenerator { * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * - * @returns this + * @returns CombineTierGenerator */ public differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this { const _buttom = new CombineTierGenerator(reporter, {accountOrSender}) @@ -228,14 +228,12 @@ export class CombineTierGenerator { /** * Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. * - * @param duration - A number or an array of numbers represting the duration in timestamp a given + * @param duration - An array of numbers represting the duration in timestamp a given * tier must be held to get ALWAYS report or else it gets NEVER report. * - * @returns this + * @returns CombineTierGenerator */ - public isTierHeldFor( - duration: number | number[] - ): CombineTierGenerator { + public isTierHeldFor(duration: number[]): CombineTierGenerator { const _shifter = paddedUInt256( paddedUInt32('7') + @@ -248,79 +246,58 @@ export class CombineTierGenerator { paddedUInt32('0') ); + duration[0] = duration[0] ? duration[0] : 0; + duration[1] = duration[1] && duration[1] <= duration[0] ? duration[1] : duration[0]; + duration[2] = duration[2] && duration[2] <= duration[1] ? duration[2] : duration[1]; + duration[3] = duration[3] && duration[3] <= duration[2] ? duration[3] : duration[2]; + duration[4] = duration[4] && duration[4] <= duration[3] ? duration[4] : duration[3]; + duration[5] = duration[5] && duration[5] <= duration[4] ? duration[5] : duration[4]; + duration[6] = duration[6] && duration[6] <= duration[5] ? duration[6] : duration[5]; + duration[7] = duration[7] && duration[7] <= duration[6] ? duration[7] : duration[6]; + const _blocks = paddedUInt256( BigNumber.from( - '0x' + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[7] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[6] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[5] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[4] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[3] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[2] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[1] - ) + - paddedUInt32( - typeof duration == 'number' - ? duration - : duration[0] - ) + "0x" + + paddedUInt32(duration[7]) + + paddedUInt32(duration[6]) + + paddedUInt32(duration[5]) + + paddedUInt32(duration[4]) + + paddedUInt32(duration[3]) + + paddedUInt32(duration[2]) + + paddedUInt32(duration[1]) + + paddedUInt32(duration[0]) ) ); let _result: StateConfig = { - constants: [_blocks, _shifter, '100000000', '0', '0xffffffff'], + constants: [_blocks, _shifter, '100000000', '0', '0xffffffff', ethers.constants.MaxUint256], sources: [ concat([ + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.BLOCK_NUMBER), + op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(Tier.ZERO, Tier.EIGHT)), + op(VM.Opcodes.SATURATING_DIFF), op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.ZIPMAP, callSize(1, 3, 2)), op(VM.Opcodes.ADD, 8), ]), concat([ - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.GREATER_THAN, 2), op(VM.Opcodes.CONSTANT, 4), op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), op(VM.Opcodes.EXP, 2), op(VM.Opcodes.MUL, 2), ]), ], }; - _result = VM.combiner(this, _result); + _result = VM.combiner(this, _result, { position: [3] }); this.constants = _result.constants; this.sources = _result.sources; diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index b1860ab..2a9f60c 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -68,7 +68,7 @@ export class PriceCurve { * is gone into extra time. * @param extraTimeDiscount - The amount of discount the address will receive. * - * @returns this + * @returns PriceCurve * */ public applyExtraTimeDiscount( @@ -135,7 +135,7 @@ export class PriceCurve { * - (param) tierActivation - An array of number of timestamps for each tier that will be the required period * of time for that tiered address to hold the tier's in order to be eligible for that tier's discount. * - (param) tierContext - an array of 8 items represtenting stake contract thresholds - * @returns this + * @returns PriceCurve * */ public applyTierDiscount( @@ -390,14 +390,14 @@ export class BetweenTimestamps { * @param extraTime - The amount of time (in minutes) that sale can continue for, if the extra time criteria has been met. * @param extraTimeAmount - The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. * - * @returns this + * @returns BetweenTimestamps * */ public applyExtraTime( extraTime: number, extraTimeAmount: number, reserveTokenDecimals: number = 18 - ): this { + ): BetweenTimestamps { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), reserveTokenDecimals @@ -439,12 +439,12 @@ export class BetweenTimestamps { * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of * sale's deployment as part of the SaleConfig * - * @returns this + * @returns BetweenTimestamps */ public afterMinimumRaise( minimumRaise: number, reserveTokenDecimals: number = 18 - ): this { + ): BetweenTimestamps { const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); let _minimumRaise: StateConfig = { @@ -532,14 +532,14 @@ export class BetweenBlocks { * @param extraTimeBlocks - The amount of time (in blocks) that sale can continue for, if the extra time criteria has been met. * @param extraTimeAmount - The criteria for extra time, if the raised amount exceeds this amount then the raise can continue into extra time. * - * @returns this + * @returns BetweenBlocks * */ public applyExtraTime( extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDecimals: number = 18 - ): this { + ): BetweenBlocks { const ExtraTimeAmount = parseUnits( extraTimeAmount.toString(), reserveTokenDecimals @@ -581,12 +581,12 @@ export class BetweenBlocks { * @param minimumRaise - the minimumRaise parameter of the raise which is passed at the time of * sale's deployment as part of the SaleConfig * - * @returns this + * @returns BetweenBlocks */ public afterMinimumRaise( minimumRaise: number, reserveTokenDecimals: number = 18 - ): this { + ): BetweenBlocks { const MinimumRaise = parseUnits(minimumRaise.toString(), reserveTokenDecimals); let _minimumRaise: StateConfig = { @@ -653,7 +653,7 @@ export class BuyAmount { * address to hold the tier's in order to be eligible for that tier's multiplier. * - (param) tierContext - an array of 8 items represtenting stake contract thresholds * - * @returns this + * @returns BuyAmount * */ public applyWalletCap( @@ -872,4 +872,4 @@ export class SaleVmFrom { this.constants = _saleConfig.constants; this.sources = _saleConfig.sources; } -} +} \ No newline at end of file diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 89caea4..83a82c2 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -1,4 +1,4 @@ -import { Signer, BigNumberish, BigNumber } from 'ethers'; +import { Signer, BigNumberish, BigNumber, BytesLike } from 'ethers'; import { ITierV2 } from '../../classes/iTierV2'; import { RainContract, ReadTxOverrides, TxOverrides } from '../../classes/rainContract'; import { StateConfig, StorageOpcodesRange } from '../../classes/vm'; @@ -99,8 +99,9 @@ export class CombineTier extends ITierV2 { const _combineTier = CombineTier__factory.connect(address, signer); super(address, signer); - this.fnPtrs = _combineTier.fnPtrs; this.storageOpcodesRange = _combineTier.storageOpcodesRange; + this.packedFunctionPointers = _combineTier.packedFunctionPointers; + this.supportsInterface = _combineTier.supportsInterface; } /** @@ -182,22 +183,25 @@ export class CombineTier extends ITierV2 { }; /** - * Pointers to opcode functions, necessary for being able to read the packedBytes + * Returns the pointer and length for combineTier's storage opcodes * * @param overrides - @see ReadTxOverrides - * @returns the opcode functions pointers + * @returns a StorageOpcodesRange */ - public readonly fnPtrs: (overrides?: ReadTxOverrides) => Promise; + public readonly storageOpcodesRange: (overrides?: ReadTxOverrides) => Promise; /** - * Returns the pointer and length for combineTier's storage opcodes - * + * Pointers to opcode functions, necessary for being able to read the packedBytes + * * @param overrides - @see ReadTxOverrides - * @returns a StorageOpcodesRange + * @returns the opcode functions pointers */ - public readonly storageOpcodesRange: ( - overrides?: ReadTxOverrides - ) => Promise; + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + + /** + * @public + */ + public readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; /** * @public @@ -248,4 +252,4 @@ export class CombineTier extends ITierV2 { return await CombineTier.deploy(signer, deplyArg) } -} +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 60200a2..94e178f 100644 --- a/src/index.ts +++ b/src/index.ts @@ -16,6 +16,7 @@ export * from './contracts/sale'; export * from './contracts/verify'; export * from './contracts/stake'; export * from './contracts/orderBook'; +export * from './contracts/autoApprove'; export * from './contracts/script-generators/saleScriptGenerator'; export * from './contracts/script-generators/combineTierScriptGenerator'; @@ -87,6 +88,7 @@ export * from './contracts/tiers/verifyTier'; export * from './contracts/generics/erc20'; export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; +export * from './contracts/generics/seedDance'; export * from './vm/HumanFreindlyRead'; -export * from './vm/OpMeta'; +export * from './vm/OpMeta'; \ No newline at end of file diff --git a/src/jsvm/CombineTierJSVM.ts b/src/jsvm/CombineTierJSVM.ts index 70bd96f..58eb907 100644 --- a/src/jsvm/CombineTierJSVM.ts +++ b/src/jsvm/CombineTierJSVM.ts @@ -10,37 +10,38 @@ import { CombineTierStorage } from '../contracts/tiers/combineTier'; */ export class CombineTierJSVM extends RainJSVM { - /** - * CombineTierJSVM can have any length for context - */ - protected readonly ContextLength = NaN; - - /** - * CombineTierJSVM valid storage range - */ - protected readonly StorageRange = CombineTierStorage.length; - - /** - * Constructor of CombineTierJSVM to create a instance of this class with CombineTier's local opcodes. - * @see RainJSVM - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a CombineTier Contract and custom opcode functions) - * - */ - constructor(state: StateConfig, options: CallOptions) { - - super( - state, - { - opMeta: options?.opMeta, - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - storageOpFn: options?.storageOpFn, - } - ); - } + /** + * CombineTierJSVM can have any length for context + */ + protected readonly ContextLength = NaN; + + /** + * CombineTierJSVM valid storage range + */ + protected readonly StorageRange = CombineTierStorage.length; + + /** + * Constructor of CombineTierJSVM to create a instance of this class with CombineTier's local opcodes. + * @see RainJSVM + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a CombineTier Contract and custom opcode functions) + * + */ + constructor(state: StateConfig, options: CallOptions) { + + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn, + } + ); + } } + diff --git a/src/jsvm/EmissionsERC20JSVM.ts b/src/jsvm/EmissionsERC20JSVM.ts index dd90174..77d0841 100644 --- a/src/jsvm/EmissionsERC20JSVM.ts +++ b/src/jsvm/EmissionsERC20JSVM.ts @@ -9,37 +9,37 @@ import { EmissionsERC20Context, EmissionsERC20Storage } from "../contracts/emiss */ export class EmissionsERC20JSVM extends RainJSVM { - /** - * EmissionsERC20JSVM valid storage range - */ - protected readonly StorageRange = EmissionsERC20Storage.length; + /** + * EmissionsERC20JSVM valid storage range + */ + protected readonly StorageRange = EmissionsERC20Storage.length; - /** - * EmissionsERC20JSVM valid context length - */ - protected readonly ContextLength = EmissionsERC20Context.length; + /** + * EmissionsERC20JSVM valid context length + */ + protected readonly ContextLength = EmissionsERC20Context.length; - /** - * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. - * @see RainJSVM - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a EmissionsERC20JSVM Contract and custom opcode functions) - * - */ - constructor(state: StateConfig, options: CallOptions) { + /** + * Constructor of SaleJS to create a instance of this class with EmissionsERC20's local opcodes. + * @see RainJSVM + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a EmissionsERC20JSVM Contract and custom opcode functions) + * + */ + constructor(state: StateConfig, options: CallOptions) { - super( - state, - { - opMeta: options?.opMeta, - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - storageOpFn: options?.storageOpFn - } - ); - } + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn + } + ); + } -} +} \ No newline at end of file diff --git a/src/jsvm/OrderbookJSVM.ts b/src/jsvm/OrderbookJSVM.ts index 96a3c2e..95a5ffd 100644 --- a/src/jsvm/OrderbookJSVM.ts +++ b/src/jsvm/OrderbookJSVM.ts @@ -12,82 +12,83 @@ import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; */ export class OrderbookJSVM extends RainJSVM { - /** - * OrderbookJSVM valid storage range - */ - protected readonly StorageRange = OrderbookStorage.length; + /** + * OrderbookJSVM valid storage range + */ + protected readonly StorageRange = OrderbookStorage.length; - /** - * OrderbookJSVM valid context length - */ - protected readonly ContextLength = OrderbookContext.length; + /** + * OrderbookJSVM valid context length + */ + protected readonly ContextLength = OrderbookContext.length; - /** - * Constructor of OrderbookJSVM to create a instance of this class with Orderbook's local opcodes. - * @see RainJSVM - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a Orderbook Contract and custom opcode functions) - * - */ - constructor(state: StateConfig, options: CallOptions) { + /** + * Constructor of OrderbookJSVM to create a instance of this class with Orderbook's local opcodes. + * @see RainJSVM + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a Orderbook Contract and custom opcode functions) + * + */ + constructor(state: StateConfig, options: CallOptions) { - super( - state, - { - opMeta: options?.opMeta, - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - storageOpFn: options?.storageOpFn - } - ); - } + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn + } + ); + } - // @TODO - write orderbook local opcodes + // @TODO - write orderbook local opcodes - // /** - // * - // * @param chainId - // */ - // public setChainId (chainId: number) { - // this.chainId = chainId; - // } - // protected _OPCODE_: ApplyOpFn = { + // /** + // * + // * @param chainId + // */ + // public setChainId (chainId: number) { + // this.chainId = chainId; + // } + // protected _OPCODE_: ApplyOpFn = { - // [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async (state: StateJS, operand: number, data?: any) => { + // [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: async (state: StateJS, operand: number, data?: any) => { - // if (this.chainId && data.chainId !== undefined) { - // const chainId = this.chainId !== undefined ? this.chainId : data.chainId; - // const EndPoint = AddressBook.getSubgraphEndpoint(chainId); - // let subgraphData = await fetch(EndPoint, { - // method: 'POST', - // headers: { - // 'Content-Type': 'application/json', - // }, - // body: JSON.stringify({ - // query: ` - // query { - // redeemableEscrowDeposits(where: - // {iSaleAddress:"${SALE_ADDRESS}"} - // ) { - // id + // if (this.chainId && data.chainId !== undefined) { + // const chainId = this.chainId !== undefined ? this.chainId : data.chainId; + // const EndPoint = AddressBook.getSubgraphEndpoint(chainId); + // let subgraphData = await fetch(EndPoint, { + // method: 'POST', + // headers: { + // 'Content-Type': 'application/json', + // }, + // body: JSON.stringify({ + // query: ` + // query { + // redeemableEscrowDeposits(where: + // {iSaleAddress:"${SALE_ADDRESS}"} + // ) { + // id - // } - // } - // ` - // }) - // }); - // subgraphData = await subgraphData.json(); - // subgraphData = subgraphData.data.redeemableEscrowDeposits[0]; + // } + // } + // ` + // }) + // }); + // subgraphData = await subgraphData.json(); + // subgraphData = subgraphData.data.redeemableEscrowDeposits[0]; - // state.stack.push(BigNumber.from(subgraphData)) - // } - // else throw new Error("undefined chainID") - // }, + // state.stack.push(BigNumber.from(subgraphData)) + // } + // else throw new Error("undefined chainID") + // }, - // [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async (state: StateJS, operand: number, data?: any) => {}, - // }; + // [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: async (state: StateJS, operand: number, data?: any) => {}, + // }; } + diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts index b9c72b4..d1013a6 100644 --- a/src/jsvm/RainJSVM.ts +++ b/src/jsvm/RainJSVM.ts @@ -1,4 +1,4 @@ -import { FnPtrs, StateJSVM } from './types'; +import { FnPtrsJSVM, StateJSVM } from './types'; import { StateConfig } from '../classes/vm'; import { BigNumber, Contract, Signer } from 'ethers'; import { arrayify, mapToRecord, paddedUInt256 } from '../utils'; @@ -10,11 +10,11 @@ import { IOpMeta, OpMeta } from '../vm/OpMeta'; * Options for instantiating RainJSVM */ export type CallOptions = { - signer?: Signer; - contract?: string | Contract; - applyOpFn?: FnPtrs; - storageOpFn?: FnPtrs; - opMeta?: Map; + signer?: Signer; + contract?: string | Contract; + applyOpFn?: FnPtrsJSVM; + storageOpFn?: FnPtrsJSVM; + opMeta?: Map; } /** @@ -25,414 +25,413 @@ export type CallOptions = { */ export class RainJSVM { - /** - * The result state of the executed Rainjs. - */ - public readonly lastState: BigNumber[] = []; - - /** - * The property of type StateJSVM which that RainJSVM will run based on. - */ - private readonly state: StateJSVM; - - /** - * It is a property for overriding the opcodes. Need to ba passed at the time of construction - * because the RainJSVM opcode functions should not change after an instance has be created. - */ - public readonly applyOpFn?: FnPtrs; - - /** - * An ethers Signer. - */ - public signer?: Signer; - - /** - * The contract address of the instance of this class used for THIS_ADDRESS opcode - */ - public self?: string; - - /** - * Object that contains the STORAGE opcode functions (i.e. local opcodes) - */ - protected readonly StorageOps?: FnPtrs; - - /** - * Range of available storage variables accessible by eval - */ - protected readonly StorageRange: number = 0; - - /** - * Length of the valid context argument accessible by eval - */ - protected readonly ContextRange?: number; - - /** - * The constructor of RainJSVM which initiates the RainJSVM and also a StateJSVM for a RainVM script. - * - * @param state - A regular StateConfig used to new a StateJSVM object to be used in RainJSVM. - * @param options - (optional) used for initiating the optional properties (signer, provider, contract and applyOpFn) - */ - constructor(state: StateConfig, options?: CallOptions) { - - let _opmeta = OpMeta; - if(options?.opMeta) { - _opmeta = options.opMeta; - } - this.fnPtrs = mapToRecord(_opmeta, ["jsvmfn"]); - - const stack: BigNumber[] = []; - const argumentsStack: BigNumber[] = []; - const constants: BigNumber[] = []; - const sources: Uint8Array[] = []; - - for (let i = 0; i < state.constants.length; i++) { - constants.push(BigNumber.from(state.constants[i])); - } - for (let i = 0; i < state.sources.length; i++) { - sources.push(arrayify(state.sources[i], { allowMissingPrefix: true })); - } - - this.state = { - stack, - argumentsStack, - constants, - sources, - }; - this.applyOpFn = options?.applyOpFn; - this.signer = options?.signer; - - if (options?.contract instanceof Contract) { - this.self = options.contract.address; - } - if (typeof options?.contract === "string") { - this.self = options.contract; - } - - if (options?.storageOpFn) { - this.StorageOps = options.storageOpFn; - this.StorageRange = Object.keys(options.storageOpFn).length; - } - - } - static opsFromOpMeta(_opmeta: Map): FnPtrs { - throw new Error('Method not implemented.'); - } - - /** - * key/value pair of opcodes and their functions for all standard opcodes - */ - protected readonly fnPtrs: FnPtrs; - - /** - * The main workhorse of RainJSVM, basically the javascript version of 'eval' method in RainVM.sol. - * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that - * has been passed at the time of cinstruction of a RainJSVM object. - * @see eval method in RainVM.sol - * - * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there - * are custom opcodes passed at the time of construction ot to pass in some user input value to the script. - * @param entrypoint - used internally for indicating which item in state sources array to execute. the entrypoint to sources. - * - */ - private async eval(data?: any, entrypoint?: number): Promise { - - const _entrypoint = entrypoint ? entrypoint : 0; - - for (let i = 0; i < this.state.sources[_entrypoint].length; i++) { - - if (this.applyOpFn !== undefined) { - - if ( - Object.keys(this.applyOpFn).includes( - this.state.sources[_entrypoint][i].toString() - ) - ) { - await this.applyOpFn[this.state.sources[_entrypoint][i]].call( - this, - this.state, - this.state.sources[_entrypoint][i + 1], - data - ); - } - else { - await this.dispatch( - this.state, - this.state.sources[_entrypoint][i], - this.state.sources[_entrypoint][i + 1], - data - ); - } - } - else { - await this.dispatch( - this.state, - this.state.sources[_entrypoint][i], - this.state.sources[_entrypoint][i + 1], - data - ); - } - i++; - } - } - - /** - * It is a protected method used by eval to run the correct function for each opcode in the script. - * For each opcode please @see AllStandardOps - * - * @param state - StateJSVM property used in each opcode function to either read or write data into stack. - * @param opcode - the opcode to dispatch and run the function of that opcode - * @param operand - the addtional info for each opcode to run based on. - * @param data - (optional) used only for zipmap opcode in order to be able to run custom function i.e. applyOpFn - * for zipmap function source. - * - */ - private async dispatch(state: StateJSVM, opcode: number, operand: number, data?: any): Promise { - - await this.fnPtrs[opcode].call(this, state, operand, data); - - } - - /** - * Method to execute the RainJSVM. - * - * @param data - (optional) Used as additional info for some local opcodes - * or custom opcode functions i.e. applyOpFn. - * @param entrypoint - the index of sources to start eval - * - * @returns - An array represting the final state of the RainJSVM stack. - */ - public async run(data?: any, entrypoint?: number): Promise { - - this.lastState.splice(-this.lastState.length); - await this.eval(data, entrypoint); - this.lastState.push(...this.state.stack.splice(-this.state.stack.length)); - - return this.lastState; - } - - /** - * @public - */ - private _constant(operand: number, data?: any): void { - - if (operand < this.state.constants.length) { - - if (this.state.constants[operand] !== undefined) { - - this.state.stack.push(this.state.constants[operand]); - } - else throw new Error('out-of-bound constants'); - } - else if (this.state.argumentsStack[operand - this.state.constants.length] !== undefined) { - - this.state.stack.push( - this.state.argumentsStack[operand - this.state.constants.length] - ); - } - else throw new Error('out-of-bound arguments'); - } - - /** - * @public - */ - private _stack(operand: number, data?: any): void { - - this.state.stack.push(this.state.stack[operand]); - } - - /** - * @public - */ - private _context(operand: number, data?: any): void { - - if (data?.context && data.context[operand] !== undefined) { - - if (this.ContextRange) { - - if (operand < this.ContextRange) { - - this.state.stack.push( - BigNumber.from(data.context[operand]) - ) - } - else throw new Error("out-of-bounds context") - } - else { - this.state.stack.push( - BigNumber.from(data.context[operand]) - ) - } - } - else throw new Error('Undefined context') - } - - /** - * @public - */ - private async _storage(operand: number, data?: any): Promise { - - if (this.StorageRange > 0 && operand < this.StorageRange) { - - if (this.StorageOps) { - - if (this.StorageOps[operand]) { - - await this.StorageOps[operand](this.state, operand, data); - } - else throw new Error("no or out-of-bound storage opcode") - } - else throw new Error("undefined storage"); - } - else throw new Error("no or out-of-bound storage opcode"); - } - - /** - * @public - */ - private _debug(operand: number, data?: any): void { - - if (operand < 4) { - console.log(this.state.stack); - } - else throw new Error('out-of-bound debug operand'); - } - - /** - * @public - */ - private async _zipmap(operand: number, data?: any): Promise { - - const _entrypoint = operand & 7; - const numberOfVals_ = (operand & 224) >> 5; - const a_ = (operand & 24) >> 3; - const valSize_ = a_ === 3 ? 8 : a_ === 2 ? 16 : a_ === 1 ? 32 : 64; - const loopSize_ = 64 / valSize_; - const items_ = this.state.stack.splice(-(numberOfVals_ + 1)); - let _startIndex = 64 - valSize_; - let _endIndex = 64; - - if (items_.length === numberOfVals_ + 1) { - - for (let i = 0; i < loopSize_; i++) { - - this.state.argumentsStack.splice(-(numberOfVals_ + 1)); - - for (let j = 0; j < items_.length; j++) { - - this.state.argumentsStack.push( - BigNumber.from( - '0x' + - paddedUInt256(items_[j]) - .substring(2) - .slice(_startIndex, _endIndex) - ) - ); - } - - for (let i = 0; i < this.state.sources[_entrypoint].length; i++) { - - if (this.applyOpFn !== undefined) { - - if ( - Object.keys(this.applyOpFn).includes( - this.state.sources[_entrypoint][i].toString() - ) - ) { - this.applyOpFn[this.state.sources[_entrypoint][i]].call( - this, - this.state, - this.state.sources[_entrypoint][i + 1], - data - ); - } - else { - await this.dispatch( - this.state, - this.state.sources[_entrypoint][i], - this.state.sources[_entrypoint][i + 1], - data - ); - } - } - else { - await this.dispatch( - this.state, - this.state.sources[_entrypoint][i], - this.state.sources[_entrypoint][i + 1], - data - ); - } - i++; - } - _startIndex -= valSize_; - _endIndex -= valSize_; - } - } - else throw new Error('Undefined stack variables'); - - } - - /** - * @public - */ - public get constant() { - return this._constant - } - - /** - * @public - */ - public get stack() { - return this._stack - } - - /** - * @public - */ - public get context() { - return this._context - } - - /** - * @public - */ - public get storage() { - return this._storage - } - - /** - * - */ - public get debug() { - return this._debug - } - - /** - * - */ - public get zipmap() { - return this._zipmap - } - - /** - * @public - */ - public connect(signer: Signer): this { - this.signer = signer; - return this; - } - - /** - * @public - */ - public setContract(contract: string | Contract): this { - if (contract instanceof Contract) { - this.self = contract.address; - } - else this.self = contract; - - return this; - } - -} - + /** + * The result state of the executed Rainjs. + */ + public readonly lastState: BigNumber[] = []; + + /** + * The property of type StateJSVM which that RainJSVM will run based on. + */ + private readonly state: StateJSVM; + + /** + * It is a property for overriding the opcodes. Need to ba passed at the time of construction + * because the RainJSVM opcode functions should not change after an instance has be created. + */ + public readonly applyOpFn?: FnPtrsJSVM; + + /** + * An ethers Signer. + */ + public signer?: Signer; + + /** + * The contract address of the instance of this class used for THIS_ADDRESS opcode + */ + public self?: string; + + /** + * Object that contains the STORAGE opcode functions (i.e. local opcodes) + */ + protected readonly StorageOps?: FnPtrsJSVM; + + /** + * Range of available storage variables accessible by eval + */ + protected readonly StorageRange: number = 0; + + /** + * Length of the valid context argument accessible by eval + */ + protected readonly ContextRange?: number; + + /** + * The constructor of RainJSVM which initiates the RainJSVM and also a StateJSVM for a RainVM script. + * + * @param state - A regular StateConfig used to new a StateJSVM object to be used in RainJSVM. + * @param options - (optional) used for initiating the optional properties (signer, provider, contract and applyOpFn) + */ + constructor(state: StateConfig, options?: CallOptions) { + + let _opmeta = OpMeta; + if(options?.opMeta) { + _opmeta = options.opMeta; + } + this.fnPtrs = mapToRecord(_opmeta, ["jsvmfn"]); + + const stack: BigNumber[] = []; + const argStack: BigNumber[] = []; + const constants: BigNumber[] = []; + const sources: Uint8Array[] = []; + + for (let i = 0; i < state.constants.length; i++) { + constants.push(BigNumber.from(state.constants[i])); + } + for (let i = 0; i < state.sources.length; i++) { + sources.push(arrayify(state.sources[i], { allowMissingPrefix: true })); + } + + this.state = { + stack, + argStack, + constants, + sources, + }; + this.applyOpFn = options?.applyOpFn; + this.signer = options?.signer; + + if (options?.contract instanceof Contract) { + this.self = options.contract.address; + } + if (typeof options?.contract === "string") { + this.self = options.contract; + } + + if (options?.storageOpFn) { + this.StorageOps = options.storageOpFn; + this.StorageRange = Object.keys(options.storageOpFn).length; + } + + } + static opsFromOpMeta(_opmeta: Map): FnPtrsJSVM { + throw new Error('Method not implemented.'); + } + + /** + * key/value pair of opcodes and their functions for all standard opcodes + */ + protected readonly fnPtrs: FnPtrsJSVM; + + /** + * The main workhorse of RainJSVM, basically the javascript version of 'eval' method in RainVM.sol. + * It executes the RainVM script based on each Opcode or the custom opcodes i.e. applyOpFn that + * has been passed at the time of cinstruction of a RainJSVM object. + * @see eval method in RainVM.sol + * + * @param data - (optional) An object which is used to provide additional values for "applyOpFn" if there + * are custom opcodes passed at the time of construction ot to pass in some user input value to the script. + * @param entrypoint - used internally for indicating which item in state sources array to execute. the entrypoint to sources. + * + */ + private async eval(data?: any, entrypoint?: number): Promise { + + const _entrypoint = entrypoint ? entrypoint : 0; + + for (let i = 0; i < this.state.sources[_entrypoint].length; i++) { + + if (this.applyOpFn !== undefined) { + + if ( + Object.keys(this.applyOpFn).includes( + this.state.sources[_entrypoint][i].toString() + ) + ) { + await this.applyOpFn[this.state.sources[_entrypoint][i]].call( + this, + this.state, + this.state.sources[_entrypoint][i + 1], + data + ); + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + i++; + } + } + + /** + * It is a protected method used by eval to run the correct function for each opcode in the script. + * For each opcode please @see AllStandardOps + * + * @param state - StateJSVM property used in each opcode function to either read or write data into stack. + * @param opcode - the opcode to dispatch and run the function of that opcode + * @param operand - the addtional info for each opcode to run based on. + * @param data - (optional) used only for zipmap opcode in order to be able to run custom function i.e. applyOpFn + * for zipmap function source. + * + */ + private async dispatch(state: StateJSVM, opcode: number, operand: number, data?: any): Promise { + + await this.fnPtrs[opcode].call(this, state, operand, data); + + } + + /** + * Method to execute the RainJSVM. + * + * @param data - (optional) Used as additional info for some local opcodes + * or custom opcode functions i.e. applyOpFn. + * @param entrypoint - the index of sources to start eval + * + * @returns - An array represting the final state of the RainJSVM stack. + */ + public async run(data?: any, entrypoint?: number): Promise { + + this.lastState.splice(-this.lastState.length); + await this.eval(data, entrypoint); + this.lastState.push(...this.state.stack.splice(-this.state.stack.length)); + + return this.lastState; + } + + /** + * @public + */ + private _constant(operand: number, data?: any): void { + + if (operand < this.state.constants.length) { + + if (this.state.constants[operand] !== undefined) { + + this.state.stack.push(this.state.constants[operand]); + } + else throw new Error('out-of-bound constants'); + } + else if (this.state.argStack[operand - this.state.constants.length] !== undefined) { + + this.state.stack.push( + this.state.argStack[operand - this.state.constants.length] + ); + } + else throw new Error('out-of-bound arguments'); + } + + /** + * @public + */ + private _stack(operand: number, data?: any): void { + + this.state.stack.push(this.state.stack[operand]); + } + + /** + * @public + */ + private _context(operand: number, data?: any): void { + + if (data?.context && data.context[operand] !== undefined) { + + if (this.ContextRange) { + + if (operand < this.ContextRange) { + + this.state.stack.push( + BigNumber.from(data.context[operand]) + ) + } + else throw new Error("out-of-bounds context") + } + else { + this.state.stack.push( + BigNumber.from(data.context[operand]) + ) + } + } + else throw new Error('Undefined context') + } + + /** + * @public + */ + private async _storage(operand: number, data?: any): Promise { + + if (this.StorageRange > 0 && operand < this.StorageRange) { + + if (this.StorageOps) { + + if (this.StorageOps[operand]) { + + await this.StorageOps[operand](this.state, operand, data); + } + else throw new Error("no or out-of-bound storage opcode") + } + else throw new Error("undefined storage"); + } + else throw new Error("no or out-of-bound storage opcode"); + } + + /** + * @public + */ + private _debug(operand: number, data?: any): void { + + if (operand < 4) { + console.log(this.state.stack); + } + else throw new Error('out-of-bound debug operand'); + } + + /** + * @public + */ + private async _zipmap(operand: number, data?: any): Promise { + + const _entrypoint = operand & 7; + const numberOfVals_ = (operand & 224) >> 5; + const a_ = (operand & 24) >> 3; + const valSize_ = a_ === 3 ? 8 : a_ === 2 ? 16 : a_ === 1 ? 32 : 64; + const loopSize_ = 64 / valSize_; + const items_ = this.state.stack.splice(-(numberOfVals_ + 1)); + let _startIndex = 64 - valSize_; + let _endIndex = 64; + + if (items_.length === numberOfVals_ + 1) { + + for (let i = 0; i < loopSize_; i++) { + + this.state.argStack.splice(-(numberOfVals_ + 1)); + + for (let j = 0; j < items_.length; j++) { + + this.state.argStack.push( + BigNumber.from( + '0x' + + paddedUInt256(items_[j]) + .substring(2) + .slice(_startIndex, _endIndex) + ) + ); + } + + for (let i = 0; i < this.state.sources[_entrypoint].length; i++) { + + if (this.applyOpFn !== undefined) { + + if ( + Object.keys(this.applyOpFn).includes( + this.state.sources[_entrypoint][i].toString() + ) + ) { + this.applyOpFn[this.state.sources[_entrypoint][i]].call( + this, + this.state, + this.state.sources[_entrypoint][i + 1], + data + ); + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + } + else { + await this.dispatch( + this.state, + this.state.sources[_entrypoint][i], + this.state.sources[_entrypoint][i + 1], + data + ); + } + i++; + } + _startIndex -= valSize_; + _endIndex -= valSize_; + } + } + else throw new Error('Undefined stack variables'); + + } + + /** + * @public + */ + public get constant() { + return this._constant + } + + /** + * @public + */ + public get stack() { + return this._stack + } + + /** + * @public + */ + public get context() { + return this._context + } + + /** + * @public + */ + public get storage() { + return this._storage + } + + /** + * + */ + public get debug() { + return this._debug + } + + /** + * + */ + public get zipmap() { + return this._zipmap + } + + /** + * @public + */ + public connect(signer: Signer): this { + this.signer = signer; + return this; + } + + /** + * @public + */ + public setContract(contract: string | Contract): this { + if (contract instanceof Contract) { + this.self = contract.address; + } + else this.self = contract; + + return this; + } + +} \ No newline at end of file diff --git a/src/jsvm/SaleJSVM.ts b/src/jsvm/SaleJSVM.ts index 8ae0880..6187d97 100644 --- a/src/jsvm/SaleJSVM.ts +++ b/src/jsvm/SaleJSVM.ts @@ -3,7 +3,7 @@ import { StateConfig } from "../classes/vm"; import { CallOptions, RainJSVM } from "./RainJSVM"; import { ERC20 } from "../contracts/generics/erc20"; import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; -import { FnPtrs, StateJSVM } from "./types"; +import { FnPtrsJSVM, StateJSVM } from "./types"; /** @@ -13,115 +13,115 @@ import { FnPtrs, StateJSVM } from "./types"; */ export class SaleJSVM extends RainJSVM { - /** - * SaleJSVM valid storage range - */ - protected readonly StorageRange = SaleStorage.length; - - /** - * SaleJSVM valid context length - */ - protected readonly ContextRange = SaleContext.length; - - /** - * Constructor of SaleJSVM to create a instance of this class with Sale's local opcodes. - * @see RainJSVM - * - * @param state - A regular StateConfig - * @param options - (optional) additional arguments for instantiating this class - * (a Signer, a Sale Contract and custom opcode functions, custom STORAGE/CONTEXT opcode functions) - * - */ - constructor(state: StateConfig, options?: CallOptions) { - super( - state, - { - opMeta: options?.opMeta, - signer: options?.signer, - contract: options?.contract, - applyOpFn: options?.applyOpFn, - storageOpFn: options?.storageOpFn, - } - ); - - // assigning custom functions to the STORAGE/CONTEXT functions - // custom functions should be passed at the time construction - if (options?.storageOpFn) { - this.StorageOps = options.storageOpFn; - } - }; - - /** - * key/value pair of STORAGE opcodes of the sale JSVM - */ - protected readonly StorageOps: FnPtrs = { + /** + * SaleJSVM valid storage range + */ + protected readonly StorageRange = SaleStorage.length; + + /** + * SaleJSVM valid context length + */ + protected readonly ContextRange = SaleContext.length; + + /** + * Constructor of SaleJSVM to create a instance of this class with Sale's local opcodes. + * @see RainJSVM + * + * @param state - A regular StateConfig + * @param options - (optional) additional arguments for instantiating this class + * (a Signer, a Sale Contract and custom opcode functions, custom STORAGE/CONTEXT opcode functions) + * + */ + constructor(state: StateConfig, options?: CallOptions) { + super( + state, + { + opMeta: options?.opMeta, + signer: options?.signer, + contract: options?.contract, + applyOpFn: options?.applyOpFn, + storageOpFn: options?.storageOpFn, + } + ); + + // assigning custom functions to the STORAGE/CONTEXT functions + // custom functions should be passed at the time construction + if (options?.storageOpFn) { + this.StorageOps = options.storageOpFn; + } + }; + + /** + * key/value pair of STORAGE opcodes of the sale JSVM + */ + protected readonly StorageOps: FnPtrsJSVM = { - [SaleStorage.RemainingUnits] : async(state: StateJSVM, operand: number, data?: any) => { - - if (this.signer && this.self !== undefined) { - - const salecontract_ = new Sale(this.self, this.signer); - const rTKNAddress_ = await salecontract_.token(); - const rTKNContract_ = new ERC20( - rTKNAddress_, - this.signer - ); - state.stack.push( - BigNumber.from( - await rTKNContract_.balanceOf(this.self) - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - - }, - - [SaleStorage.TotalReserveIn] : async(state: StateJSVM, operand: number, data?: any) => { - - if (this.signer && this.self !== undefined) { - - const salecontract_ = new Sale(this.self, this.signer); - const reserveAddress_ = await salecontract_.reserve(); - const reserveContract_ = new ERC20( - reserveAddress_, - this.signer - ); - state.stack.push( - BigNumber.from( - await reserveContract_.balanceOf(this.self) - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleStorage.TokenAddress] : async(state: StateJSVM, operand: number, data?: any) => { - - if (this.signer && this.self !== undefined) { - - const salecontract_ = new Sale(this.self, this.signer); - state.stack.push( - BigNumber.from( - await salecontract_.token() - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - - [SaleStorage.ReserveAddress] : async(state: StateJSVM, operand: number, data?: any) => { - - if (this.signer && this.self !== undefined) { - - const salecontract_ = new Sale(this.self, this.signer); - state.stack.push( - BigNumber.from( - await salecontract_.reserve() - ) - ) - } - else throw new Error("Undefined Signer or Sale Contract") - }, - }; - -} \ No newline at end of file + [SaleStorage.RemainingUnits] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + const rTKNAddress_ = await salecontract_.token(); + const rTKNContract_ = new ERC20( + rTKNAddress_, + this.signer + ); + state.stack.push( + BigNumber.from( + await rTKNContract_.balanceOf(this.self) + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + + }, + + [SaleStorage.TotalReserveIn] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + const reserveAddress_ = await salecontract_.reserve(); + const reserveContract_ = new ERC20( + reserveAddress_, + this.signer + ); + state.stack.push( + BigNumber.from( + await reserveContract_.balanceOf(this.self) + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + }, + + [SaleStorage.TokenAddress] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + state.stack.push( + BigNumber.from( + await salecontract_.token() + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + }, + + [SaleStorage.ReserveAddress] : async(state: StateJSVM, operand: number, data?: any) => { + + if (this.signer && this.self !== undefined) { + + const salecontract_ = new Sale(this.self, this.signer); + state.stack.push( + BigNumber.from( + await salecontract_.reserve() + ) + ) + } + else throw new Error("Undefined Signer or Sale Contract") + }, + }; + +} diff --git a/src/jsvm/lib/FixedPointMath.ts b/src/jsvm/lib/FixedPointMath.ts index 092aca1..25e4882 100644 --- a/src/jsvm/lib/FixedPointMath.ts +++ b/src/jsvm/lib/FixedPointMath.ts @@ -5,52 +5,52 @@ import { eighteenZeros } from "../types"; * @public */ export const scale18 = (value: BigNumber, scale: number) : BigNumber => { - return scale <= 18 - ? value.mul((10 ** (18 - scale)).toString()) - : value.div((10 ** (scale - 18)).toString()) + return scale <= 18 + ? value.mul((10 ** (18 - scale)).toString()) + : value.div((10 ** (scale - 18)).toString()) } /** * @public */ export const scaleBy = (value: BigNumber, scale: number) : BigNumber => { - if (scale > 127) { - scale = 256 - scale; - return value.div((10 ** (scale)).toString()); - } - else { - return value.mul((10 ** (scale)).toString()); - } + if (scale > 127) { + scale = 256 - scale; + return value.div((10 ** (scale)).toString()); + } + else { + return value.mul((10 ** (scale)).toString()); + } } /** * @public */ export const scaleN = (value: BigNumber, scale: number) : BigNumber => { - return scale <= 18 - ? value.div((10 ** (18 - scale)).toString()) - : value.mul((10 ** (scale - 18)).toString()) + return scale <= 18 + ? value.div((10 ** (18 - scale)).toString()) + : value.mul((10 ** (scale - 18)).toString()) } /** * @public */ export const fixedPointDiv = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { - return (scale <= 18 - ? value1.mul((10 ** (18 - scale)).toString()) - : value1.div((10 ** (scale - 18)).toString()) - ) - .mul(eighteenZeros).div(value2) + return (scale <= 18 + ? value1.mul((10 ** (18 - scale)).toString()) + : value1.div((10 ** (scale - 18)).toString()) + ) + .mul(eighteenZeros).div(value2) } /** * @public */ export const fixedPointMul = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { - return value2.mul( - scale <= 18 - ? value1.mul((10 ** (18 - scale)).toString()) - : value1.div((10 ** (scale - 18)).toString()) - ) - .div(eighteenZeros) -} \ No newline at end of file + return value2.mul( + scale <= 18 + ? value1.mul((10 ** (18 - scale)).toString()) + : value1.div((10 ** (scale - 18)).toString()) + ) + .div(eighteenZeros) +} diff --git a/src/jsvm/lib/SaturatingMath.ts b/src/jsvm/lib/SaturatingMath.ts index ac65af6..ef5491f 100644 --- a/src/jsvm/lib/SaturatingMath.ts +++ b/src/jsvm/lib/SaturatingMath.ts @@ -4,12 +4,12 @@ import { BigNumber, ethers } from "ethers" * @public */ export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1.add(value2); - value1 = value1.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : value1; - - return value1; + value1 = value1.add(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; + + return value1; } /** @@ -17,22 +17,22 @@ export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber * */ export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1.mul(value2); - value1 = value1.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : value1; + value1 = value1.mul(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; - return value1; + return value1; } /** * @public */ export const saturatingSub = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1?.sub(value2); - value1 = value1.gt(0) - ? value1 - : ethers.constants.Zero; + value1 = value1?.sub(value2); + value1 = value1.gt(0) + ? value1 + : ethers.constants.Zero; - return value1; -} \ No newline at end of file + return value1; +} diff --git a/src/jsvm/lib/TierReport.ts b/src/jsvm/lib/TierReport.ts index 2b5ef94..0cfd394 100644 --- a/src/jsvm/lib/TierReport.ts +++ b/src/jsvm/lib/TierReport.ts @@ -7,25 +7,25 @@ import { paddedUInt256, paddedUInt32 } from "../../utils"; */ export const updateTimesForTierRange = (report: BigNumber, timestamp: BigNumber, range: number) : BigNumber => { - const endTier_ = range >> 4; - const startTier_ = range & 15; - const _timestamp = paddedUInt32(timestamp); - const _report = paddedUInt256(report).substring(2); - let _startIndex = (8 - endTier_) * 8; - let _endIndex = _startIndex + 8; - let _result = _report.slice(0, _startIndex); - const resultLow_ = _report.slice( - _startIndex + (endTier_ - startTier_) * 8 - ); + const endTier_ = range >> 4; + const startTier_ = range & 15; + const _timestamp = paddedUInt32(timestamp); + const _report = paddedUInt256(report).substring(2); + let _startIndex = (8 - endTier_) * 8; + let _endIndex = _startIndex + 8; + let _result = _report.slice(0, _startIndex); + const resultLow_ = _report.slice( + _startIndex + (endTier_ - startTier_) * 8 + ); - for (let i = 0; i < endTier_ - startTier_; i++) { - _result += - _report.slice(_startIndex, _endIndex) > _timestamp - ? _timestamp - : _report.slice(_startIndex, _endIndex); - _startIndex += 8; - _endIndex += 8; - } + for (let i = 0; i < endTier_ - startTier_; i++) { + _result += + _report.slice(_startIndex, _endIndex) > _timestamp + ? _timestamp + : _report.slice(_startIndex, _endIndex); + _startIndex += 8; + _endIndex += 8; + } - return BigNumber.from('0x' + _result + resultLow_); + return BigNumber.from('0x' + _result + resultLow_); } \ No newline at end of file diff --git a/src/jsvm/lib/TierwiseCombine.ts b/src/jsvm/lib/TierwiseCombine.ts index e0148b8..ae69750 100644 --- a/src/jsvm/lib/TierwiseCombine.ts +++ b/src/jsvm/lib/TierwiseCombine.ts @@ -6,123 +6,123 @@ import { paddedUInt256, paddedUInt32 } from "../../utils"; * @public */ export const saturatingDiff = (report1: BigNumber, report2: BigNumber) : BigNumber => { - const report1_ = paddedUInt256(report1).substring(2); - const report2_ = paddedUInt256(report2).substring(2); - let _startIndex = 0; - let _endIndex = 8; - let _result = ''; - let _tierRep1; - let _tierRep2; + const report1_ = paddedUInt256(report1).substring(2); + const report2_ = paddedUInt256(report2).substring(2); + let _startIndex = 0; + let _endIndex = 8; + let _result = ''; + let _tierRep1; + let _tierRep2; - for (let i = 0; i < 8; i++) { - _tierRep1 = BigNumber.from( - '0x' + report1_.slice(_startIndex, _endIndex) - ); - _tierRep2 = BigNumber.from( - '0x' + report2_.slice(_startIndex, _endIndex) - ); - _result += _tierRep1.gt(_tierRep2) - ? paddedUInt32(_tierRep1.sub(_tierRep2)) - : '00000000'; - _startIndex += 8; - _endIndex += 8; - } + for (let i = 0; i < 8; i++) { + _tierRep1 = BigNumber.from( + '0x' + report1_.slice(_startIndex, _endIndex) + ); + _tierRep2 = BigNumber.from( + '0x' + report2_.slice(_startIndex, _endIndex) + ); + _result += _tierRep1.gt(_tierRep2) + ? paddedUInt32(_tierRep1.sub(_tierRep2)) + : '00000000'; + _startIndex += 8; + _endIndex += 8; + } - return BigNumber.from('0x' + _result); + return BigNumber.from('0x' + _result); } /** * @public */ export const selectLte = ( - reports: BigNumber[], - timestamp: BigNumber, - logic: number, - mode: number, - length: number + reports: BigNumber[], + timestamp: BigNumber, + logic: number, + mode: number, + length: number ) : BigNumber => { - let _report; - // array of raw reports - let _reports: string[] = []; - // array of array of each tier's lte report - let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; - let _result = ''; + let _report; + // array of raw reports + let _reports: string[] = []; + // array of array of each tier's lte report + let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; + let _result = ''; - //building an array of each tier's report against blockNumber_ - //tiers greater than blockNumber_ will get "ffffffff" - const blockNumber_ = paddedUInt32(timestamp); - for (let i = 0; i < length; i++) { - let _startIndex = 0; - let _endIndex = 8; - _report = reports[reports.length - 1 - i]; - _reports[i] = paddedUInt256(_report).substring(2); - for (let j = 0; j < 8; j++) { - _reportsAtTier[j].push( - blockNumber_ < _reports[i].slice(_startIndex, _endIndex) - ? 'ffffffff' - : _reports[i].slice(_startIndex, _endIndex) - ); - _startIndex += 8; - _endIndex += 8; - } - } + //building an array of each tier's report against blockNumber_ + //tiers greater than blockNumber_ will get "ffffffff" + const blockNumber_ = paddedUInt32(timestamp); + for (let i = 0; i < length; i++) { + let _startIndex = 0; + let _endIndex = 8; + _report = reports[reports.length - 1 - i]; + _reports[i] = paddedUInt256(_report).substring(2); + for (let j = 0; j < 8; j++) { + _reportsAtTier[j].push( + blockNumber_ < _reports[i].slice(_startIndex, _endIndex) + ? 'ffffffff' + : _reports[i].slice(_startIndex, _endIndex) + ); + _startIndex += 8; + _endIndex += 8; + } + } - // logic and mode selections - if (logic) { - for (let i = 0; i < 8; i++) { - if (mode === 0) { - _reportsAtTier[i] = [ - _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), - ]; - } - else if (mode === 1) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e !== 'ffffffff' - ); - _reportsAtTier[i] = - _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] - : ['ffffffff']; - } - else if (mode === 2) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e !== 'ffffffff' - ); - _reportsAtTier[i] = - _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] - : ['ffffffff']; - } - } - } - else { - for (let i = 0; i < 8; i++) { - if (mode === 0) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; - } - else if (mode === 1) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; - } - else if (mode === 2) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; - } - } - } - //building the final report - for (let i = 0; i < 8; i++) { - _result += _reportsAtTier[i][0]; - } - return BigNumber.from('0x' + _result); -} \ No newline at end of file + // logic and mode selections + if (logic) { + for (let i = 0; i < 8; i++) { + if (mode === 0) { + _reportsAtTier[i] = [ + _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), + ]; + } + else if (mode === 1) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e !== 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] + : ['ffffffff']; + } + else if (mode === 2) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e !== 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] + : ['ffffffff']; + } + } + } + else { + for (let i = 0; i < 8; i++) { + if (mode === 0) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; + } + else if (mode === 1) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; + } + else if (mode === 2) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; + } + } + } + //building the final report + for (let i = 0; i < 8; i++) { + _result += _reportsAtTier[i][0]; + } + return BigNumber.from('0x' + _result); +} diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts index d8d2ffc..a1b205d 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts @@ -10,19 +10,19 @@ import { StateJSVM } from "../../types"; */ export async function OpERC1155BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer !== undefined) { + if (item1_ && item2_ && item3_ && this.signer !== undefined) { - const id_ = BigNumber.from(item3_); - const account_ = paddedUInt160(item2_); - const erc1155Address_ = paddedUInt160(item1_); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + const id_ = BigNumber.from(item3_); + const account_ = paddedUInt160(item2_); + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); + state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts index d3eb458..fb87df5 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts @@ -10,32 +10,32 @@ import { StateJSVM } from "../../types"; */ export async function OpERC1155BalanceOfBatch(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item3_ = state.stack.splice(-(operand + 1)); - const item2_ = state.stack.splice(-(operand + 1)); - const item1_ = state.stack.pop(); + const item3_ = state.stack.splice(-(operand + 1)); + const item2_ = state.stack.splice(-(operand + 1)); + const item1_ = state.stack.pop(); - if ( - item1_ && - item2_ && - item3_ && - this.signer !== undefined && - item2_.length === item3_.length - ) { - const tokenIds_: BigNumber[] = []; - for (let i = 0; i < item3_.length; i++) { - tokenIds_.push(BigNumber.from(item3_[i])); - } - const accounts_: string[] = []; - for (let i = 0; i < item2_.length; i++) { - accounts_.push(paddedUInt160(item2_[i])); - } - const erc1155Address_ = paddedUInt160(item1_); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - - state.stack.push( - ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) - ); + if ( + item1_ && + item2_ && + item3_ && + this.signer !== undefined && + item2_.length === item3_.length + ) { + const tokenIds_: BigNumber[] = []; + for (let i = 0; i < item3_.length; i++) { + tokenIds_.push(BigNumber.from(item3_[i])); + } + const accounts_: string[] = []; + for (let i = 0; i < item2_.length; i++) { + accounts_.push(paddedUInt160(item2_[i])); + } + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + + state.stack.push( + ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) + ); - } - else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts index 2d1ee5a..aa5bd9c 100644 --- a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts +++ b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts @@ -9,16 +9,16 @@ import { StateJSVM } from "../../types"; */ export async function OpERC20BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { + if (item1_ && item2_ && this.signer !== undefined) { - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.balanceOf(account_)); - } - else throw new Error('Undefined stack variables'); + state.stack.push(await erc20Contract_.balanceOf(account_)); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts index 621583e..4ae8011 100644 --- a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts +++ b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts @@ -9,14 +9,14 @@ import { StateJSVM } from "../../types"; */ export async function OpERC20TotalSupply(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ && this.signer !== undefined) { + if (item_ && this.signer !== undefined) { - const erc20Address_ = paddedUInt160(item_); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); + const erc20Address_ = paddedUInt160(item_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.totalSupply()); - } - else throw new Error('Undefined stack variable'); + state.stack.push(await erc20Contract_.totalSupply()); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts index 30a2bd7..19371b3 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts @@ -9,19 +9,19 @@ import { StateJSVM } from "../../../types"; */ export async function OpERC20SnapshotBalanceOfAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer !== undefined) { + if (item1_ && item2_ && item3_ && this.signer !== undefined) { - const snapshotId_ = item3_; - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + const snapshotId_ = item3_; + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); - state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); + state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts index 97cdf6e..ef5e871 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts @@ -9,17 +9,17 @@ import { StateJSVM } from "../../../types"; */ export async function OpERC20SnapshotTotalSupplyAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { + if (item1_ && item2_ && this.signer !== undefined) { - const snapshotId_ = item2_; - const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + const snapshotId_ = item2_; + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); - state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); - - } - else throw new Error('Undefined stack variables'); + state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); + + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts index 02d0e57..f969876 100644 --- a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts +++ b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts @@ -9,16 +9,16 @@ import { StateJSVM } from "../../types"; */ export async function OpERC721BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { - const account_ = paddedUInt160(item2_); - const erc721Address_ = paddedUInt160(item1_); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); + if (item1_ && item2_ && this.signer !== undefined) { + const account_ = paddedUInt160(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push(await erc721Contract_.balanceOf(account_)); + state.stack.push(await erc721Contract_.balanceOf(account_)); - } - else throw new Error('Undefined stack variables'); -} \ No newline at end of file + } + else throw new Error('Undefined stack variables'); +} diff --git a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts index e7a73df..66aab3e 100644 --- a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts +++ b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts @@ -10,19 +10,19 @@ import { StateJSVM } from "../../types"; */ export async function OpERC721OwnerOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { + if (item1_ && item2_ && this.signer !== undefined) { - const tokenId_ = BigNumber.from(item2_); - const erc721Address_ = paddedUInt160(item1_); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); + const tokenId_ = BigNumber.from(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push( - BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) - ); + state.stack.push( + BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) + ); - } - else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpBlockNumber.ts b/src/jsvm/ops/evm/OpBlockNumber.ts index 2e82087..9f90d04 100644 --- a/src/jsvm/ops/evm/OpBlockNumber.ts +++ b/src/jsvm/ops/evm/OpBlockNumber.ts @@ -8,19 +8,19 @@ import { StateJSVM } from "../../types"; */ export async function OpBlockNumber(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - if (this.signer !== undefined) { + if (this.signer !== undefined) { - const _provider = this.signer.provider; - - if (_provider !== undefined) { + const _provider = this.signer.provider; + + if (_provider !== undefined) { - state.stack.push( - BigNumber.from( - await _provider.getBlockNumber() - ) - ) - } - else throw new Error("undefined Provider") - } - else throw new Error('Undefined Signer'); + state.stack.push( + BigNumber.from( + await _provider.getBlockNumber() + ) + ) + } + else throw new Error("undefined Provider") + } + else throw new Error('Undefined Signer'); } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpCaller.ts b/src/jsvm/ops/evm/OpCaller.ts index fd88b28..d035a41 100644 --- a/src/jsvm/ops/evm/OpCaller.ts +++ b/src/jsvm/ops/evm/OpCaller.ts @@ -8,13 +8,13 @@ import { StateJSVM } from "../../types"; */ export async function OpCaller(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - if (this.signer !== undefined) { + if (this.signer !== undefined) { - state.stack.push( - BigNumber.from( - await this.signer.getAddress() - ) - ); - } - else throw new Error("undefined signer or signer address") + state.stack.push( + BigNumber.from( + await this.signer.getAddress() + ) + ); + } + else throw new Error("undefined signer or signer address") } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpThisAddress.ts b/src/jsvm/ops/evm/OpThisAddress.ts index 52f6276..35c73a6 100644 --- a/src/jsvm/ops/evm/OpThisAddress.ts +++ b/src/jsvm/ops/evm/OpThisAddress.ts @@ -8,11 +8,11 @@ import { StateJSVM } from "../../types"; */ export function OpThisAddress(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - if (this.self !== undefined) { + if (this.self !== undefined) { - state.stack.push( - BigNumber.from(this.self) - ); - } - else throw new Error('Undefined contract'); + state.stack.push( + BigNumber.from(this.self) + ); + } + else throw new Error('Undefined contract'); } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpTimestamp.ts b/src/jsvm/ops/evm/OpTimestamp.ts index 8b7a1f8..6569666 100644 --- a/src/jsvm/ops/evm/OpTimestamp.ts +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -7,19 +7,19 @@ import { StateJSVM } from "../../types"; */ export async function OpTimestamp(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - if (this.signer !== undefined) { + if (this.signer !== undefined) { - const _provider = this.signer.provider; - - if (_provider !== undefined) { + const _provider = this.signer.provider; + + if (_provider !== undefined) { - state.stack.push( - BigNumber.from( - (await _provider.getBlock(await _provider.getBlockNumber())).timestamp - ) - ) - } - else throw new Error("Undefined provider") - } - else throw new Error('Undefined Signer'); + state.stack.push( + BigNumber.from( + (await _provider.getBlock(await _provider.getBlockNumber())).timestamp + ) + ) + } + else throw new Error("Undefined provider") + } + else throw new Error('Undefined Signer'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpAdd.ts b/src/jsvm/ops/math/OpAdd.ts index c81b619..1fa3e63 100644 --- a/src/jsvm/ops/math/OpAdd.ts +++ b/src/jsvm/ops/math/OpAdd.ts @@ -7,24 +7,24 @@ import { StateJSVM } from "../../types"; */ export function OpAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - let _item; - let _accumulator = ethers.constants.Zero; + let _item; + let _accumulator = ethers.constants.Zero; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); + _item = state.stack.pop(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.add(_item); - - if (_accumulator.gt(ethers.constants.MaxUint256)) { + _accumulator = _accumulator.add(_item); + + if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpDiv.ts b/src/jsvm/ops/math/OpDiv.ts index 9b49318..eccb59d 100644 --- a/src/jsvm/ops/math/OpDiv.ts +++ b/src/jsvm/ops/math/OpDiv.ts @@ -7,24 +7,24 @@ import { StateJSVM } from "../../types"; */ export function OpDiv(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.div(_item); - - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + _accumulator = _accumulator.div(_item); + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpExp.ts b/src/jsvm/ops/math/OpExp.ts index 7519ec7..7d7d01e 100644 --- a/src/jsvm/ops/math/OpExp.ts +++ b/src/jsvm/ops/math/OpExp.ts @@ -7,28 +7,28 @@ import { StateJSVM } from "../../types"; */ export function OpExp(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.pow(_item); + _accumulator = _accumulator.pow(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts index a5b180c..fa37c23 100644 --- a/src/jsvm/ops/math/OpMax.ts +++ b/src/jsvm/ops/math/OpMax.ts @@ -7,14 +7,14 @@ import { StateJSVM } from "../../types"; */ export function OpMax(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); + const items_ = state.stack.splice(-operand); - if ((items_.length = operand)) { + if ((items_.length = operand)) { - state.stack.push( - items_.reduce((e, m) => (e.gt(m) ? e : m)) - ); + state.stack.push( + items_.reduce((e, m) => (e.gt(m) ? e : m)) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMin.ts b/src/jsvm/ops/math/OpMin.ts index 5568981..b09be24 100644 --- a/src/jsvm/ops/math/OpMin.ts +++ b/src/jsvm/ops/math/OpMin.ts @@ -7,14 +7,14 @@ import { StateJSVM } from "../../types"; */ export function OpMin(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); + const items_ = state.stack.splice(-operand); - if (items_.length === operand) { + if (items_.length === operand) { - state.stack.push( - items_.reduce((e, m) => (e.lt(m) ? e : m)) - ); + state.stack.push( + items_.reduce((e, m) => (e.lt(m) ? e : m)) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMod.ts b/src/jsvm/ops/math/OpMod.ts index fc92474..c39b29d 100644 --- a/src/jsvm/ops/math/OpMod.ts +++ b/src/jsvm/ops/math/OpMod.ts @@ -7,24 +7,24 @@ import { StateJSVM } from "../../types"; */ export function OpMod(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.mod(_item); - - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + _accumulator = _accumulator.mod(_item); + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMul.ts b/src/jsvm/ops/math/OpMul.ts index bb60650..7717091 100644 --- a/src/jsvm/ops/math/OpMul.ts +++ b/src/jsvm/ops/math/OpMul.ts @@ -8,24 +8,24 @@ import { StateJSVM } from "../../types"; */ export function OpMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - let _accumulator = ethers.constants.One; - let _item; + let _accumulator = ethers.constants.One; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); + _item = state.stack.pop(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.mul(_item); + _accumulator = _accumulator.mul(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpSub.ts b/src/jsvm/ops/math/OpSub.ts index 5582562..4248463 100644 --- a/src/jsvm/ops/math/OpSub.ts +++ b/src/jsvm/ops/math/OpSub.ts @@ -7,27 +7,27 @@ import { StateJSVM } from "../../types"; */ export function OpSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.sub(_item); - } - else throw new Error('Undefined stack variables'); - } - if (_accumulator.isNegative()) { + _accumulator = _accumulator.sub(_item); + } + else throw new Error('Undefined stack variables'); + } + if (_accumulator.isNegative()) { - throw new Error('Invalid value (negative value not allowed)'); - } - else state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + throw new Error('Invalid value (negative value not allowed)'); + } + else state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18.ts b/src/jsvm/ops/math/fixedPoint/OpScale18.ts index 2c61203..d2bc68b 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -7,15 +7,15 @@ import { StateJSVM } from "../../../types"; * @public */ export function OpScale18(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - - const item_ = state.stack.pop(); + + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push( - scale18(item_, operand) - ); - } - else throw new Error('Undefined stack variable'); + state.stack.push( + scale18(item_, operand) + ); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts index d67bdfe..dee02a9 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts @@ -8,16 +8,16 @@ import { StateJSVM } from "../../../types"; */ export function OpScale18Div(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - fixedPointDiv(item1_, item2_, operand) - ); - - } - else throw new Error('Undefined stack variables'); + state.stack.push( + fixedPointDiv(item1_, item2_, operand) + ); + + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts index db916e8..1720e92 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts @@ -8,16 +8,16 @@ import { StateJSVM } from "../../../types"; */ export function OpScale18Mul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - fixedPointMul(item1_, item2_, operand) - ); + state.stack.push( + fixedPointMul(item1_, item2_, operand) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts index 8a5d07a..3a1ee0c 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts @@ -8,13 +8,13 @@ import { StateJSVM } from "../../../types"; */ export function OpScaleBy(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push(scaleBy(item_, operand)) + state.stack.push(scaleBy(item_, operand)) - } - else throw new Error("Undefined stack variable") - + } + else throw new Error("Undefined stack variable") + } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts index 782a190..4e25023 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts @@ -8,15 +8,15 @@ import { StateJSVM } from "../../../types"; */ export function OpScaleN(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push( - scaleN(item_, operand) - ) + state.stack.push( + scaleN(item_, operand) + ) - } - else throw new Error('Undefined stack variable'); - + } + else throw new Error('Undefined stack variable'); + } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpAny.ts b/src/jsvm/ops/math/logic/OpAny.ts index 0c1dc91..b382165 100644 --- a/src/jsvm/ops/math/logic/OpAny.ts +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -8,31 +8,31 @@ import { StateJSVM } from "../../../types"; */ export function OpAny(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const items_ = state.stack.splice(-operand); - let _check; - let _item; + const items_ = state.stack.splice(-operand); + let _check; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - if (_item.gt(0)) { + if (_item.gt(0)) { - _check = ethers.constants.One; - break; - - } - else _check = ethers.constants.Zero; - } - else throw new Error('Undefined stack variables'); - } - if (_check !== undefined) { + _check = ethers.constants.One; + break; + + } + else _check = ethers.constants.Zero; + } + else throw new Error('Undefined stack variables'); + } + if (_check !== undefined) { - state.stack.push(_check); + state.stack.push(_check); - } - else throw new Error('Undefined stack variable'); - + } + else throw new Error('Undefined stack variable'); + } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEagerIf.ts b/src/jsvm/ops/math/logic/OpEagerIf.ts index 72f5dc2..4ee314d 100644 --- a/src/jsvm/ops/math/logic/OpEagerIf.ts +++ b/src/jsvm/ops/math/logic/OpEagerIf.ts @@ -7,15 +7,15 @@ import { StateJSVM } from "../../../types"; */ export function OpEagerIf(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const false_ = state.stack.pop(); - const true_ = state.stack.pop(); - const condition_ = state.stack.pop(); + const false_ = state.stack.pop(); + const true_ = state.stack.pop(); + const condition_ = state.stack.pop(); - if (false_ && true_ && condition_ !== undefined) { + if (false_ && true_ && condition_ !== undefined) { - state.stack.push(condition_.gt(0) ? true_ : false_); + state.stack.push(condition_.gt(0) ? true_ : false_); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEqualTo.ts b/src/jsvm/ops/math/logic/OpEqualTo.ts index 8244248..5b351d7 100644 --- a/src/jsvm/ops/math/logic/OpEqualTo.ts +++ b/src/jsvm/ops/math/logic/OpEqualTo.ts @@ -8,14 +8,14 @@ import { StateJSVM } from "../../../types"; */ export function OpEqualTo(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Underfined stack variables'); + state.stack.push( + item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Underfined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEvery.ts b/src/jsvm/ops/math/logic/OpEvery.ts index 1f1eb0c..9929cf0 100644 --- a/src/jsvm/ops/math/logic/OpEvery.ts +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -8,29 +8,29 @@ import { StateJSVM } from "../../../types"; */ export function OpEvery(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _check; - let _item; - - for (let i = 0; i < operand; i++) { - - _item = items_.shift(); - - if (_item !== undefined) { - - if (_item.isZero()) { - - _check = ethers.constants.Zero; - break; - } - else _check = ethers.constants.One; - } - else throw new Error('Undefined stack variables'); - } - if (_check !== undefined) { - - state.stack.push(_check); - } - else throw new Error('Undefined stack variable'); + const items_ = state.stack.splice(-operand); + let _check; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + if (_item.isZero()) { + + _check = ethers.constants.Zero; + break; + } + else _check = ethers.constants.One; + } + else throw new Error('Undefined stack variables'); + } + if (_check !== undefined) { + + state.stack.push(_check); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpGreaterThan.ts b/src/jsvm/ops/math/logic/OpGreaterThan.ts index a9a4c90..72ef689 100644 --- a/src/jsvm/ops/math/logic/OpGreaterThan.ts +++ b/src/jsvm/ops/math/logic/OpGreaterThan.ts @@ -8,15 +8,15 @@ import { StateJSVM } from "../../../types"; */ export function OpGreaterThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variables'); - + state.stack.push( + item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); + } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpIsZero.ts b/src/jsvm/ops/math/logic/OpIsZero.ts index dcf2f21..0469a89 100644 --- a/src/jsvm/ops/math/logic/OpIsZero.ts +++ b/src/jsvm/ops/math/logic/OpIsZero.ts @@ -8,14 +8,14 @@ import { StateJSVM } from "../../../types"; */ export function OpIsZero(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push( - item_.isZero() ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variable'); - + state.stack.push( + item_.isZero() ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variable'); + } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpLessThan.ts b/src/jsvm/ops/math/logic/OpLessThan.ts index 29aa83c..e984a15 100644 --- a/src/jsvm/ops/math/logic/OpLessThan.ts +++ b/src/jsvm/ops/math/logic/OpLessThan.ts @@ -8,15 +8,15 @@ import { StateJSVM } from "../../../types"; */ export function OpLessThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - - state.stack.push( - item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variables'); + if (item1_ && item2_ !== undefined) { + + state.stack.push( + item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts index ee0c71e..576f4f7 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts @@ -9,21 +9,21 @@ import { ethers } from "ethers"; */ export function OpSaturatingAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.Zero; - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.Zero; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = saturatingAdd(_accumulator, _item) + _accumulator = saturatingAdd(_accumulator, _item) - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts index 83af2d3..9e99113 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -8,25 +8,25 @@ import { StateJSVM } from "../../../types"; */ export function OpSaturatingMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = saturatingMul(_accumulator, _item); + _accumulator = saturatingMul(_accumulator, _item); - } - else throw new Error('Undefined stack variabble'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variabble'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts index 9a17555..0f292b7 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -9,21 +9,21 @@ import { ethers } from "ethers"; */ export function OpSaturatingSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.One; - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.One; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = saturatingSub(_accumulator, _item) + _accumulator = saturatingSub(_accumulator, _item) - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpITierV2Report.ts b/src/jsvm/ops/tier/OpITierV2Report.ts index 30d9047..60243b0 100644 --- a/src/jsvm/ops/tier/OpITierV2Report.ts +++ b/src/jsvm/ops/tier/OpITierV2Report.ts @@ -9,23 +9,23 @@ import { StateJSVM } from "../../types"; */ export async function OpITierV2Report(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const context_ = operand ? state.stack.splice(-operand) : []; - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const context_ = operand ? state.stack.splice(-operand) : []; + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { - const account_ = paddedUInt160(item2_); - const iTierV2Contract = new ITierV2( - paddedUInt160(item1_), - this.signer - ); + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); - state.stack.push( - await iTierV2Contract.report(account_, context_) - ); + state.stack.push( + await iTierV2Contract.report(account_, context_) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts index ffd5be8..9410a54 100644 --- a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts +++ b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts @@ -9,29 +9,29 @@ import { StateJSVM } from "../../types"; */ export async function OpITierV2ReportTimesForTier(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const context_ = operand ? state.stack.splice(-operand) : []; - const item3_ = state.stack.pop(); - - if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { - - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { - const tier_ = item3_; - const account_ = paddedUInt160(item2_); - const iTierV2Contract = new ITierV2( - paddedUInt160(item1_), - this.signer - ); - - state.stack.push( - await iTierV2Contract.reportTimeForTier(account_, tier_,context_) - ); - } - else throw new Error('Undefined stack variables'); - - } - else throw new Error("not valid tier"); + const context_ = operand ? state.stack.splice(-operand) : []; + const item3_ = state.stack.pop(); + + if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { + const tier_ = item3_; + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); + + state.stack.push( + await iTierV2Contract.reportTimeForTier(account_, tier_,context_) + ); + } + else throw new Error('Undefined stack variables'); + + } + else throw new Error("not valid tier"); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpSaturatingDiff.ts b/src/jsvm/ops/tier/OpSaturatingDiff.ts index 88e8935..b0b0b75 100644 --- a/src/jsvm/ops/tier/OpSaturatingDiff.ts +++ b/src/jsvm/ops/tier/OpSaturatingDiff.ts @@ -8,16 +8,16 @@ import { StateJSVM } from "../../types"; */ export function OpSaturatingDiff(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ !== undefined) { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { - state.stack.push( - saturatingDiff(item1_, item2_) - ); + state.stack.push( + saturatingDiff(item1_, item2_) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpSelectLte.ts b/src/jsvm/ops/tier/OpSelectLte.ts index 67e9545..152cf76 100644 --- a/src/jsvm/ops/tier/OpSelectLte.ts +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -8,19 +8,19 @@ import { StateJSVM } from "../../types"; */ export function OpSelectLte(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const length_ = operand & 31; - const mode_ = (operand & 96) >> 5; - const logic_ = (operand & 128) >> 7; - const timestamp_ = state.stack.pop(); - const reports_ = state.stack.splice(-length_) + const length_ = operand & 31; + const mode_ = (operand & 96) >> 5; + const logic_ = (operand & 128) >> 7; + const timestamp_ = state.stack.pop(); + const reports_ = state.stack.splice(-length_) - if (timestamp_ !== undefined && reports_.length === length_) { + if (timestamp_ !== undefined && reports_.length === length_) { - state.stack.push( - selectLte(reports_, timestamp_, logic_, mode_, length_) - ); - - } - else throw new Error("Undefined stack variables") + state.stack.push( + selectLte(reports_, timestamp_, logic_, mode_, length_) + ); + + } + else throw new Error("Undefined stack variables") } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts index 2889dac..1640daa 100644 --- a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts +++ b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts @@ -8,16 +8,16 @@ import { StateJSVM } from "../../types"; */ export function OpUpdateTimesForTierRange(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - updateTimesForTierRange(item1_, item2_, operand) - ); + state.stack.push( + updateTimesForTierRange(item1_, item2_, operand) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/simulation/CombineTierSimulation.ts b/src/jsvm/simulation/CombineTierSimulation.ts index 80683b1..2cae07e 100644 --- a/src/jsvm/simulation/CombineTierSimulation.ts +++ b/src/jsvm/simulation/CombineTierSimulation.ts @@ -1,6 +1,6 @@ -import { BigNumber } from "ethers"; import { paddedUInt160, paddedUInt256 } from "../../utils"; import { CombineTierJSVM } from "../CombineTierJSVM"; +import { SStore } from "../types"; import { vmSimulation } from "./vmSimulation"; @@ -13,63 +13,63 @@ import { vmSimulation } from "./vmSimulation"; */ export class CombinetierSimulation extends vmSimulation { - /** - * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; + /** + * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; - /** - * The report of each account which is compatible and can be stored in @see itiers interface as well - */ - public report: {[wallet: string]: BigNumber} = {}; + /** + * The report of each account which is compatible and can be stored in @see itiers interface as well + */ + public report: SStore = {}; - /** - * Constructor of this class - * - * @param address - this CombineTier class adress which needs to be a string number or hex string - * @param reports - (optional) the initial reports object - */ - constructor (address: string, reports?: {[wallet: string]: BigNumber}) { - super(); - this.address = address; - if (reports !== undefined) { - this.report = reports; - } - } + /** + * Constructor of this class + * + * @param address - this CombineTier class adress which needs to be a string number or hex string + * @param reports - (optional) the initial reports object + */ + constructor (address: string, reports?: SStore) { + super(); + this.address = address; + if (reports !== undefined) { + this.report = reports; + } + } - /** - * Method to get the report for an account which then will be stored in the class's report property and can be - * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of - * the account it is been called for - * - * @param account - the account to get and update the report for which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns the report of the account in a 64 char length hex string - */ - public async setReport( - account: string, - timestamp?: number, - blockNumber?: number - ): Promise { - const entrypoint = 0; - const _account = paddedUInt160(account) + /** + * Method to get the report for an account which then will be stored in the class's report property and can be + * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of + * the account it is been called for + * + * @param account - the account to get and update the report for which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns the report of the account in a 64 char length hex string + */ + public async setReport( + account: string, + timestamp?: number, + blockNumber?: number + ): Promise { + const entrypoint = 0; + const _account = paddedUInt160(account) - if (this.script !== undefined) { - let simulation = new CombineTierJSVM( - this.script, - {applyOpFn: this.OpFns} - ); - const newReport = (await simulation.run( - {context: [_account], timestamp, blockNumber}, - entrypoint - ))[0]; - this.report[_account] = newReport; + if (this.script !== undefined) { + let simulation = new CombineTierJSVM( + this.script, + {applyOpFn: this.OpFns} + ); + const newReport = (await simulation.run( + {context: [_account], timestamp, blockNumber}, + entrypoint + ))[0]; + this.report[_account] = newReport; - return paddedUInt256(newReport); - } - else throw new Error("no script to execute") - } - } \ No newline at end of file + return paddedUInt256(newReport); + } + else throw new Error("no script to execute") + } +} diff --git a/src/jsvm/simulation/EmissionsERC20Simulation.ts b/src/jsvm/simulation/EmissionsERC20Simulation.ts index 03eba43..a4453d5 100644 --- a/src/jsvm/simulation/EmissionsERC20Simulation.ts +++ b/src/jsvm/simulation/EmissionsERC20Simulation.ts @@ -1,6 +1,7 @@ import { BigNumber, ethers } from "ethers"; import { paddedUInt160, paddedUInt256, paddedUInt32 } from "../../utils"; import { EmissionsERC20JSVM } from "../EmissionsERC20JSVM"; +import { SStore } from "../types"; import { vmSimulation } from "./vmSimulation"; @@ -13,165 +14,165 @@ import { vmSimulation } from "./vmSimulation"; */ export class EmissionSmiulation extends vmSimulation { - /** - * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; + /** + * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; - /** - * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, - * and updating storage types after method calls and needs to be a string number or hex string. - */ - public sender: string; + /** + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender: string; - /** - * The current totalSupply of the emissions token which can increase everytime a successful mint happens - */ - public totalSupply: BigNumber = ethers.constants.Zero; + /** + * The current totalSupply of the emissions token which can increase everytime a successful mint happens + */ + public totalSupply: BigNumber = ethers.constants.Zero; - /** - * The decimals value of the emissions token which is 18 - */ - public readonly decimals: number = 18 + /** + * The decimals value of the emissions token which is 18 + */ + public readonly decimals: number = 18 - /** - * The report of each claimant which is compatible and can be stored in @see itiers interface as well - */ - public report: {[wallet: string]: BigNumber} = {}; + /** + * The report of each claimant which is compatible and can be stored in @see itiers interface as well + */ + public report: SStore = {}; - /** - * The balance of emission token holders which is compatible with @see erc20 interface - */ - public balanceOf: {[wallet: string]: BigNumber} = {}; + /** + * The balance of emission token holders which is compatible with @see erc20 interface + */ + public balanceOf: SStore = {}; - /** - * Constructor of this class - * - * @param address - this EmissionsERC20 class adress which needs to be a string number or hex string - * @param sender - the sender which needs to be string number or hex string - * @param reports - the reports of claimants - * @param balances - the balances of token holders - * @param initialSupply - (optional) emissions token initial supply for the sender - */ - constructor ( - address: string, - sender: string, - reports: {[wallet: string]: BigNumber} = {}, - balances: {[wallet: string]: BigNumber} = {}, - initialSupply: BigNumber = ethers.constants.Zero, - ) { - super(); - this.address = paddedUInt160(address); - this.sender = paddedUInt160(sender); - this.report = reports; - this.balanceOf = balances; - this.totalSupply = initialSupply; - if (initialSupply.gt(0)) { - if (this.erc20s[this.address] === undefined) { - this.erc20s[this.address] = { - totalSupply: this.totalSupply, - decimals: 18, - balanceOf: {[this.sender]: BigNumber.from(initialSupply)} - } - } - if ( - this.erc20s[this.address].balanceOf[this.sender] === undefined || - this.erc20s[this.address].balanceOf[this.sender].isZero() - ) { - this.erc20s[this.address].balanceOf[this.sender] = BigNumber.from(initialSupply) - } - if (this.balanceOf[this.sender] === undefined) { - this.balanceOf[this.sender] = BigNumber.from(initialSupply) - } - else throw new Error("undefined sender") - } - } + /** + * Constructor of this class + * + * @param address - this EmissionsERC20 class adress which needs to be a string number or hex string + * @param sender - the sender which needs to be string number or hex string + * @param reports - the reports of claimants + * @param balances - the balances of token holders + * @param initialSupply - (optional) emissions token initial supply for the sender + */ + constructor ( + address: string, + sender: string, + reports: SStore = {}, + balances: SStore = {}, + initialSupply: BigNumber = ethers.constants.Zero, + ) { + super(); + this.address = paddedUInt160(address); + this.sender = paddedUInt160(sender); + this.report = reports; + this.balanceOf = balances; + this.totalSupply = initialSupply; + if (initialSupply.gt(0)) { + if (this.erc20s[this.address] === undefined) { + this.erc20s[this.address] = { + totalSupply: this.totalSupply, + decimals: 18, + balanceOf: {[this.sender]: BigNumber.from(initialSupply)} + } + } + if ( + this.erc20s[this.address].balanceOf[this.sender] === undefined || + this.erc20s[this.address].balanceOf[this.sender].isZero() + ) { + this.erc20s[this.address].balanceOf[this.sender] = BigNumber.from(initialSupply) + } + if (this.balanceOf[this.sender] === undefined) { + this.balanceOf[this.sender] = BigNumber.from(initialSupply) + } + else throw new Error("undefined sender") + } + } - /** - * Method to calculate the cliamable amount for the claimant by running the script by JSVM - * - * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns A BigNumber that represents the claimable amount - */ - public async calculateClaim( - claimantAccount: string, - timestamp?: number, - blockNumber?: number - ) : Promise { - const entrypoint = 0; - const _claimantAccount = paddedUInt160(claimantAccount) + /** + * Method to calculate the cliamable amount for the claimant by running the script by JSVM + * + * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns A BigNumber that represents the claimable amount + */ + public async calculateClaim( + claimantAccount: string, + timestamp?: number, + blockNumber?: number + ) : Promise { + const entrypoint = 0; + const _claimantAccount = paddedUInt160(claimantAccount) - if (this.script !== undefined) { - if (this.report[_claimantAccount] === undefined) { - this.report[_claimantAccount] = ethers.constants.Zero; - } - let simulation = new EmissionsERC20JSVM( - this.script, - {applyOpFn: this.OpFns} - ); - let claimUnits = await simulation.run( - {context: [_claimantAccount], timestamp, blockNumber}, - entrypoint - ); - return claimUnits[0] - } - else throw new Error("no script or sender to execute calculateClaim"); - } + if (this.script !== undefined) { + if (this.report[_claimantAccount] === undefined) { + this.report[_claimantAccount] = ethers.constants.Zero; + } + let simulation = new EmissionsERC20JSVM( + this.script, + {applyOpFn: this.OpFns} + ); + let claimUnits = await simulation.run( + {context: [_claimantAccount], timestamp, blockNumber}, + entrypoint + ); + return claimUnits[0] + } + else throw new Error("no script or sender to execute calculateClaim"); + } - /** - * The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM - * - * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns the minted amount in a BigNumber format - */ - public async claim ( - claimantAccount: string, - timestamp?: number, - blockNumber?: number - ) : Promise { - const entrypoint = 0; - const _claimantAccount = paddedUInt160(claimantAccount) + /** + * The method to perform the claim (claculate and mint) for the claimant account by rruning by JSVM + * + * @param claimantAccount - the account to calculate the claimable amount which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns the minted amount in a BigNumber format + */ + public async claim ( + claimantAccount: string, + timestamp?: number, + blockNumber?: number + ) : Promise { + const entrypoint = 0; + const _claimantAccount = paddedUInt160(claimantAccount) - if (this.script !== undefined) { - if (this.report[_claimantAccount] === undefined) { - this.report[_claimantAccount] = ethers.constants.Zero; - } + if (this.script !== undefined) { + if (this.report[_claimantAccount] === undefined) { + this.report[_claimantAccount] = ethers.constants.Zero; + } - if (this.balanceOf[_claimantAccount] === undefined) { - this.balanceOf[_claimantAccount] = ethers.constants.Zero; - } + if (this.balanceOf[_claimantAccount] === undefined) { + this.balanceOf[_claimantAccount] = ethers.constants.Zero; + } - if (this.erc20s[this.address].balanceOf[_claimantAccount] === undefined) { - this.erc20s[this.address].balanceOf[_claimantAccount] = ethers.constants.Zero; - } - - let simulation = new EmissionsERC20JSVM( - this.script, - {applyOpFn: this.OpFns} - ); - let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp : timestamp!).repeat(8))) - let mintUnits = await simulation.run( - {context: [_claimantAccount], timestamp, blockNumber}, - entrypoint - ); + if (this.erc20s[this.address].balanceOf[_claimantAccount] === undefined) { + this.erc20s[this.address].balanceOf[_claimantAccount] = ethers.constants.Zero; + } + + let simulation = new EmissionsERC20JSVM( + this.script, + {applyOpFn: this.OpFns} + ); + let newReport = BigNumber.from(paddedUInt256(paddedUInt32(this.timestamp ? this.timestamp : timestamp!).repeat(8))) + let mintUnits = await simulation.run( + {context: [_claimantAccount], timestamp, blockNumber}, + entrypoint + ); - if (mintUnits[0].gt(ethers.constants.Zero)) { - this.totalSupply = this.totalSupply.add(mintUnits[0]); - this.balanceOf[_claimantAccount] = this.balanceOf[_claimantAccount].add(mintUnits[0]); - this.report[_claimantAccount] = newReport; - this.erc20s[this.address].balanceOf[_claimantAccount] = - this.erc20s[this.address].balanceOf[_claimantAccount].add(mintUnits[0]); - } + if (mintUnits[0].gt(ethers.constants.Zero)) { + this.totalSupply = this.totalSupply.add(mintUnits[0]); + this.balanceOf[_claimantAccount] = this.balanceOf[_claimantAccount].add(mintUnits[0]); + this.report[_claimantAccount] = newReport; + this.erc20s[this.address].balanceOf[_claimantAccount] = + this.erc20s[this.address].balanceOf[_claimantAccount].add(mintUnits[0]); + } - return mintUnits[0]; - } - throw new Error("no script to execute") - } - } \ No newline at end of file + return mintUnits[0]; + } + throw new Error("no script to execute") + } +} \ No newline at end of file diff --git a/src/jsvm/simulation/Matchmaker.ts b/src/jsvm/simulation/Matchmaker.ts index 02f4860..1c0a93f 100644 --- a/src/jsvm/simulation/Matchmaker.ts +++ b/src/jsvm/simulation/Matchmaker.ts @@ -1,32 +1,9 @@ -import { BigNumber } from "ethers"; -import { VM } from "../../classes/vm"; import { OrderbookJSVM } from "./../OrderbookJSVM"; import { OrderbookSimulation } from "./OrderbookSimulation"; -import { paddedUInt160, paddedUInt256, parseUnits } from "../../utils"; -import { FixedPrice, IncDecPrice } from "./../../contracts/script-generators/saleScriptGenerator"; -import { - order, - erc20s, - eighteenZeros, - bountyConfig -} from "../types"; +import { parseUnits } from "../../utils"; +import { SOrder, eighteenZeros, ReserveBook } from "../types"; -/** - * @public - * Interface for matchmaker forcasting a script - */ -export interface forcast { - [orderHash: string]: { - minP: BigNumber, - maxP: BigNumber, - minOut: BigNumber, - maxOut: BigNumber, - minIn:BigNumber, - maxIn: BigNumber - } -} - /** * @public * A class for finding matches among orders off-chain in a simulated environment @@ -35,9 +12,9 @@ export class MatchMaker extends OrderbookSimulation { /** * @public - * The forcast property of the matchmaker + * The ReserveBook property of the matchmaker */ - public orderForcast: forcast = {}; + public reservebook: ReserveBook = {}; /** * @public @@ -53,7 +30,8 @@ export class MatchMaker extends OrderbookSimulation { * * @returns void */ - public async addOrder(order: order): Promise { + public async addOrder(order: SOrder): Promise { + super.addOrder(order); await this.orderEval(order) }; @@ -65,7 +43,7 @@ export class MatchMaker extends OrderbookSimulation { // units: number, // tokenDecimals: number = 18 // ): Promise { - // let vaultBalanceFlag = this.vaults[sender][tokenAddress].vaultId[vaultId].isZero() ? true : false; + // let vaultBalanceFlag = this.vaults[sender][tokenAddress][vaultId].isZero() ? true : false; // super.deposit(sender, tokenAddress, vaultId, units, tokenDecimals); // for (let i = 0; i < Object.keys(this.orders).length; i++) { // if ( @@ -81,37 +59,35 @@ export class MatchMaker extends OrderbookSimulation { /** * @public - * Method to evaluate and forcast the order's script + * Method to evaluate and ReserveBook the order's script * * @param order - the order to be evaluated * * @returns void */ - public async orderEval(order: order, timestamp?: number, blockNumber?: number) { + public async orderEval(order: SOrder, timestamp?: number, blockNumber?: number) { this.script = order.vmConfig; const jsvm = new OrderbookJSVM(this.script, {applyOpFn: this.OpFns}); - const result1 = await jsvm.run({context: [order.orderHash], timestamp, blockNumber}); - const out1 = result1[0]; + const result1 = await jsvm.run({ + context: [order.orderHash], + timestamp, blockNumber + }); const p1 = result1[1]; - const in1 = out1.mul(p1).div(eighteenZeros); let _timestamp = timestamp ? timestamp + 3600 : 3600; let _blockNumber = blockNumber ? blockNumber + 1800 : 1800; - const result2 = await jsvm.run({context: [order.orderHash], timestamp: _timestamp, blockNumber: _blockNumber}) - - const out2 = result2[0]; + const result2 = await jsvm.run({ + context: [order.orderHash], + timestamp: _timestamp, + blockNumber: _blockNumber + }) const p2 = result2[1]; - const in2 = out2.mul(p2).div(eighteenZeros); - this.orderForcast[order.orderHash] = { + this.reservebook[order.orderHash] = { minP: p2.gt(p1) ? p1 : p2, maxP: p2.gt(p1) ? p2 : p1, - minOut: out2.gt(out1) ? out1 : out2, - maxOut: out2.gt(out1) ? out2 : out1, - minIn: in2.gt(in1) ? in1 : in2, - maxIn: in2.gt(in1) ? in2 : in1, } } @@ -119,38 +95,51 @@ export class MatchMaker extends OrderbookSimulation { * @public * The main method to perform matchmaking and find matches among orders * - * @param bountyConfig - the BountyConfig of this matchmaker class - * - * @returns + * @param bounty - the Bounty Vault IDs */ - public async makeMatch(bountyConfig: bountyConfig) : Promise<{orderA: string, orderB: string}[]> { + public async makeMatch(bounty: {aBounty: string, bBounty: string}) : Promise<{orderA: string, orderB: string}[]> { - const orderHashs = Object.keys(this.orders); + const orderHashes = Object.keys(this.orders); let result = []; - if (orderHashs.length > 1) { - for(let i = 0; i 1) { + for(let oh1 in orderHashes) { + for (let i = 0; i < this.orders[orderHashes[oh1]].validOutputs.length; i++) { + if ( + !this.vaults[this.orders[orderHashes[oh1]].owner][ + this.orders[orderHashes[oh1]].validOutputs[i].token + ][this.orders[orderHashes[oh1]].validOutputs[i].vaultId].isZero() ) { - if ( - (this.orderForcast[orderHashs[i]].minP.mul(this.orderForcast[orderHashs[j]].maxP) - .div(eighteenZeros)).lte(parseUnits((1).toString())) || - (this.orderForcast[orderHashs[i]].maxP.mul(this.orderForcast[orderHashs[j]].minP) - .div(eighteenZeros)).lte(parseUnits((1).toString())) - ) { - await this.clear( - this.orders[orderHashs[i]], - this.orders[orderHashs[j]], - bountyConfig - ) - result.push({orderA: orderHashs[i], orderB: orderHashs[j]}) + for (let oh2 in orderHashes) { + for (let j = 0; j < this.orders[orderHashes[oh2]].validInputs.length; j++) { + if (this.orders[orderHashes[oh1]].validOutputs[i].token === this.orders[orderHashes[oh2]].validInputs[j].token) { + for (let k = 0; k < this.orders[orderHashes[oh1]].validInputs.length; k++) { + for (let l = 0; l < this.orders[orderHashes[oh2]].validOutputs.length; l++) { + if (this.orders[orderHashes[oh1]].validInputs[k].token === this.orders[orderHashes[oh2]].validOutputs[l].token) { + if ( + (this.reservebook[orderHashes[oh1]].minP.mul(this.reservebook[orderHashes[oh2]].maxP) + .div(eighteenZeros)).lte(parseUnits((1).toString())) || + (this.reservebook[orderHashes[oh1]].maxP.mul(this.reservebook[orderHashes[oh2]].minP) + .div(eighteenZeros)).lte(parseUnits((1).toString())) + ) { + await this.clear( + this.orders[orderHashes[oh1]], + this.orders[orderHashes[oh2]], + { + aOutputIndex: i, + aInputIndex: k, + bOutputIndex: l, + bInputIndex: j, + aBountyVaultId: bounty.aBounty, + bBountyVaultId: bounty.bBounty, + } + ) + result.push({orderA: orderHashes[oh1], orderB: orderHashes[oh2]}) + } + } + } + } + } } } } @@ -159,229 +148,8 @@ export class MatchMaker extends OrderbookSimulation { } return result; } + } -////////// ---------------------| Demo |------------------------ *** Demo *** -----------------------| Demo |---------------------- \\\\\\\\\\ -//run the demo locally to see the results of a orderbook matchmaking simulation - -// a function for benchmarking -var timer = function(name: string) { - var start = new Date(); - return { - stop: function() { - var end = new Date(); - var time = end.getTime() - start.getTime(); - return {name, time} - } - } -}; - -//simulating some addresses -let sender1 = paddedUInt160("0x11111"); -let sender2 = paddedUInt160("0x22222"); -let sender3 = paddedUInt160("0x33333"); -let sender4 = paddedUInt160("0x44444"); -let sender6 = paddedUInt160("0x66666"); -let orderbook = paddedUInt160("0x55555"); - -const token1 = paddedUInt160("0x1") -const token2 = paddedUInt160("0x2") -const token3 = paddedUInt160("0x3") -//simulating some erc20 tokens -let tokens: erc20s = { - [token1]: { - totalSupply: parseUnits((1000).toString()), - decimals: 18, - balanceOf: { - [sender1]: parseUnits((500).toString()), - [sender2]: parseUnits((100).toString()), - [sender3]: parseUnits((200).toString()), - [sender4]: parseUnits((100).toString()), - [orderbook]: parseUnits((0).toString()), - } - }, - [token2]: { - totalSupply: parseUnits((2000).toString()), - decimals: 18, - balanceOf: { - [sender1]: parseUnits((200).toString()), - [sender2]: parseUnits((150).toString()), - [sender3]: parseUnits((350).toString()), - [sender4]: parseUnits((220).toString()), - [orderbook]: parseUnits((0).toString()), - } - }, - [token3]: { - totalSupply: parseUnits((500).toString()), - decimals: 18, - balanceOf: { - [sender1]: parseUnits((20).toString()), - [sender2]: parseUnits((100).toString()), - [sender3]: parseUnits((50).toString()), - [sender4]: parseUnits((130).toString()), - [orderbook]: parseUnits((0).toString()), - } - }, -} - -// some scripts for orders -const scriptA = VM.pair(new FixedPrice(4), new FixedPrice(2)); -const scriptB = VM.pair(new FixedPrice(10), new FixedPrice(0.4)); -const scriptC = VM.pair(new FixedPrice(2), new IncDecPrice(0.1, 8, 1, 900)); - -// simulating some orders usinf the data above -const orderHash1 = paddedUInt256("0x1abc") -const vaultId101 = paddedUInt256("0x0101") -const vaultId201 = paddedUInt256("0x0201") - -const orderHash2 = paddedUInt256("0x2abc") -const vaultId202 = paddedUInt256("0x0202") -const vaultId302 = paddedUInt256("0x0302") - -const orderHash3 = paddedUInt256("0x3abc") -const vaultId203 = paddedUInt256("0x0203") -const vaultId103 = paddedUInt256("0x0103") - -const orderHash4 = paddedUInt256("0x4abc") -const vaultId304 = paddedUInt256("0x0304") -const vaultId204 = paddedUInt256("0x0204") - -const order1 : order = { - orderHash: orderHash1, - owner: sender1, - inputToken: token1, - outputToken: token2, - inputVaultId: vaultId101, - outputVaultId: vaultId201, - vmConfig: scriptA -}; -const order2 : order = { - orderHash: orderHash2, - owner: sender2, - inputToken: token2, - outputToken: token3, - inputVaultId: vaultId202, - outputVaultId: vaultId302, - vmConfig: scriptC -}; -const order3 : order = { - orderHash: orderHash3, - owner: sender3, - inputToken: token2, - outputToken: token1, - inputVaultId: vaultId203, - outputVaultId: vaultId103, - vmConfig: scriptB -}; -const order4 : order = { - orderHash: orderHash4, - owner: sender4, - inputToken: token3, - outputToken: token2, - inputVaultId: vaultId304, - outputVaultId: vaultId204, - vmConfig: scriptB -}; - -// bounty config for performing the matchmaking -const bountyConfig1: bountyConfig = { - aVaultId: paddedUInt256("0x88"), - bVaultId: paddedUInt256("0x99") -} - -// simulating an orderbook cycle -async function bot() { - try{ - const matchmaker = new MatchMaker(orderbook, sender6); - matchmaker.timestamp = 1; - - matchmaker.addAssets(tokens); - matchmaker.setSender(sender6); - - console.log("checking sender1 balance of token 0x2:") - console.log("sender1 token0x2 balance before adding order and depositing: " + matchmaker.erc20s[token2].balanceOf[sender1].div(eighteenZeros).toNumber()); - - console.log("---------------------------------------") - console.log("adding orders") - await matchmaker.addOrder(order1); - await matchmaker.addOrder(order3); - await matchmaker.addOrder(order2); - await matchmaker.addOrder(order4); - - console.log("---------------------------------------") - console.log("checking output valut balances of sener1 and sender3") - console.log("sender1 outputValt balance before depositing: " + matchmaker.vaults[sender1][token2].vaultId[vaultId201].div("100000000000000").toNumber()/10000) - console.log("sender3 outputValt balance before depositing: " + matchmaker.vaults[sender3][token1].vaultId[vaultId103].div("100000000000000").toNumber()/10000) - console.log("sender2 outputValt balance before depositing: " + matchmaker.vaults[sender2][token3].vaultId[vaultId302].div("100000000000000").toNumber()/10000) - console.log("sender4 outputValt balance before depositing: " + matchmaker.vaults[sender4][token2].vaultId[vaultId204].div("100000000000000").toNumber()/10000) - - console.log("---------------------------------------") - console.log("depositing 30 tokens for order1 and 40 tokens for order3") - matchmaker.deposit(sender1, token2, vaultId201, 30); - matchmaker.deposit(sender3, token1, vaultId103, 40); - matchmaker.deposit(sender2, token3, vaultId302, 70); - matchmaker.deposit(sender4, token2, vaultId204, 60); - - console.log("---------------------------------------") - console.log("checking the balances of sender1 and sender3 output vaults") - - console.log("sender1 outputValt balance after depositing: " + matchmaker.vaults[sender1][token2].vaultId[vaultId201].div("100000000000000").toNumber()/10000) - console.log("sender3 outputValt balance after depositing: " + matchmaker.vaults[sender3][token1].vaultId[vaultId103].div("100000000000000").toNumber()/10000) - console.log("sender2 outputValt balance after depositing: " + matchmaker.vaults[sender2][token3].vaultId[vaultId302].div("100000000000000").toNumber()/10000) - console.log("sender4 outputValt balance after depositing: " + matchmaker.vaults[sender4][token2].vaultId[vaultId204].div("100000000000000").toNumber()/10000) - - console.log("---------------------------------------") - console.log("checking sender1 balance of token 0x2") - console.log("sender1 token0x2 balance after dpositing: " + matchmaker.erc20s[token2].balanceOf[sender1].div(eighteenZeros).toNumber()) - - console.log("---------------------------------------") - console.log("performing the match") - - var t = timer("benchmark") - await matchmaker.makeMatch(bountyConfig1); - let result = t.stop() - - console.log("---------------------------------------") - console.log("checking output balances of sender1's and sender3's output vaults") - console.log("sender1 outputValt balance after matching: " + matchmaker.vaults[sender1][token2].vaultId[vaultId201].div("100000000000000").toNumber()/10000) - console.log("sender3 outputValt balance after matching: " + matchmaker.vaults[sender3][token1].vaultId[vaultId103].div("100000000000000").toNumber()/10000) - console.log("sender2 outputValt balance after matching: " + matchmaker.vaults[sender2][token3].vaultId[vaultId302].div("100000000000000").toNumber()/10000) - console.log("sender4 outputValt balance after matching: " + matchmaker.vaults[sender4][token2].vaultId[vaultId204].div("100000000000000").toNumber()/10000) - - console.log("---------------------------------------") - console.log("checking input balances of sender1's and sender3's output vaults") - console.log("sender1 inputValt balance after matching: " + matchmaker.vaults[sender1][token1].vaultId[vaultId101].div("100000000000000").toNumber()/10000) - console.log("sender3 inputValt balance after matching: " + matchmaker.vaults[sender3][token2].vaultId[vaultId203].div("100000000000000").toNumber()/10000) - console.log("sender2 inputValt balance after matching: " + matchmaker.vaults[sender2][token2].vaultId[vaultId202].div("100000000000000").toNumber()/10000) - console.log("sender4 inputValt balance after matching: " + matchmaker.vaults[sender4][token3].vaultId[vaultId304].div("100000000000000").toNumber()/10000) - - console.log("---------------------------------------") - console.log("checking total bounty balance") - console.log("total bounties collected of token0x2: " + Object.values(matchmaker.vaults[sender6][token2].vaultId).reduce((e, m) => e.add(m)) - .div("100000000000000").toNumber()/10000) - console.log("total bounties collected of token0x1: " + Object.values(matchmaker.vaults[sender6][token1].vaultId).reduce((e, m) => e.add(m)) - .div("100000000000000").toNumber()/10000) - console.log("total bounties collected of token0x3: " + Object.values(matchmaker.vaults[sender6][token3].vaultId).reduce((e, m) => e.add(m)) - .div("100000000000000").toNumber()/10000) - // console.log("bounty aOutput of token0x2 Vault0x88 balance: " + matchmaker.vaults[sender6][token2].vaultId[paddedUInt256("0x88")].div("10000000000000000").toNumber()/100) - // console.log("bounty bOutput of token0x1 Vault0x99 balance: " + matchmaker.vaults[sender6][token1].vaultId[paddedUInt256("0x99")].div("10000000000000000").toNumber()/100) - // console.log("bounty aOutput of token0x1 Vault0x88 balance: " + matchmaker.vaults[sender6][token1].vaultId[paddedUInt256("0x88")].div("10000000000000000").toNumber()/100) - // console.log("bounty bOutput of token0x2 Vault0x99 balance: " + matchmaker.vaults[sender6][token2].vaultId[paddedUInt256("0x99")].div("10000000000000000").toNumber()/100) - - // second matchmaking round - // increasing the timestamp for second matchmaking - // matchmaker.timestamp = 1700 - - // let result2 = await matchmaker.makeMatch(); - // console.log(result2); - - console.log("---------------------------------------") - console.log(result.name + " of this matchmaking round: " + result.time + " ms") - } - catch(err){ - console.log(err) - } -} -bot() diff --git a/src/jsvm/simulation/OrderbookSimulation.ts b/src/jsvm/simulation/OrderbookSimulation.ts index 9fe931c..3f085a5 100644 --- a/src/jsvm/simulation/OrderbookSimulation.ts +++ b/src/jsvm/simulation/OrderbookSimulation.ts @@ -4,15 +4,15 @@ import { OrderbookJSVM } from "../OrderbookJSVM"; import { OrderBook } from "../../contracts/orderBook"; import { paddedUInt160, paddedUInt256, parseUnits } from "../../utils"; import { - order, - FnPtrs, - orders, - vaults, - StateJSVM, - bountyConfig, - clearedFunds, - eighteenZeros, - clearedCounterPartyFunds + SOrder, + FnPtrsJSVM, + SOrders, + SVaults, + StateJSVM, + SClearConfig, + SClearedFunds, + eighteenZeros, + SClearedCounterPartyFunds } from "../types"; @@ -21,434 +21,489 @@ import { * A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. * or to be used to perform off-chain matchmaking based on. */ - export class OrderbookSimulation extends vmSimulation { - - /** - * @public - * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * @public - * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, - * and updating storage types after method calls and needs to be a string number or hex string. - */ - public sender: string; - - /** - * @public - * The property that stores all the data of the class's vaults @see vault - */ - public vaults: vaults = {}; - - /** - * @public - * The property that stores all the data of the class's orders, @see orders and @see order - */ - public orders: orders = {}; - - /** - * @public - * The property that stores all the data of an order's total cleared amount, @see clearedFunds - */ - public clearedFunds: clearedFunds = {}; - - /** - * @public - * The property that stores all the data of an order's total cleared amount to a specific counterparty address - * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds - */ - public clearedCounterPartyFunds: clearedCounterPartyFunds = {}; - - /** - * @public - * Constructor of this class - * - * @param address - this Orderbook's class adress which needs to be a string number or hex string - * @param sender - the sender which needs to be string number or hex string - * @param vaults - (optinal) the initial vaults object (vaults storage) - * @param orders - (optional) the initial orders - */ - constructor(address: string, sender: string, vaults?: vaults, orders?: orders) { - super(); - this.address = paddedUInt160(address); - this.sender = paddedUInt160(sender); - if (vaults !== undefined) { - this.vaults = vaults; - } - if (orders !== undefined) { - this.orders = orders; - } - } - - /** - * @public - * Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. @see FnPtrs and @see OpcodeFN - */ - protected OpFns: FnPtrs = { - - ...this.OpFns, - - [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: - (state: StateJSVM, operand: number, data?: any) => { - const item_ = state.stack.pop(); - if (item_ !== undefined) { - const orderHash = paddedUInt256(item_); - if (this.clearedFunds[orderHash] !== undefined) { - state.stack.push(this.clearedFunds[orderHash]); - } - else throw new Error("no record of cleared funds for this orderHash") - } - else throw new Error("undefined stack value") - }, - [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: - (state: StateJSVM, operand: number, data?: any) => { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - const orderHash = paddedUInt256(item1_); - const counterParty = paddedUInt160(item2_); - if (this.clearedCounterPartyFunds[orderHash][counterParty] !== undefined) { - state.stack.push(this.clearedCounterPartyFunds[orderHash][counterParty]) - } - else throw new Error("no record of cleared funds for this orderHash's counterparty") - } - else throw new Error("undefined stack values") - } - }; - - /** - * @public - * Method to submit an order into the class orders - * - * @param order - the order to add - * @returns void - */ - public addOrder(order: order): void { - this.orders[order.orderHash] = order; - - if (this.vaults[order.owner] === undefined) { - this.vaults[order.owner] = { - [order.inputToken]: { - vaultId: { - [order.inputVaultId]: ethers.constants.Zero - } - }, - [order.outputToken]: { - vaultId: { - [order.outputVaultId]: ethers.constants.Zero - } - } - } - } - if (this.vaults[order.owner][order.inputToken] === undefined) { - this.vaults[order.owner][order.inputToken] = { - vaultId: { - [order.inputVaultId]: ethers.constants.Zero - } - } - } - if (this.vaults[order.owner][order.outputToken] === undefined) { - this.vaults[order.owner][order.outputToken] = { - vaultId: { - [order.outputVaultId]: ethers.constants.Zero - } - } - } - if (this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] === undefined) { - this.vaults[order.owner][order.inputToken].vaultId[order.inputVaultId] = ethers.constants.Zero; - } - if (this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] === undefined) { - this.vaults[order.owner][order.outputToken].vaultId[order.outputVaultId] = ethers.constants.Zero - } - } - - - /** - * @public - * Method to remove an order from the class's orders - * - * @param order - the order to remove - * @returns void - */ - public removeOrder(order: order | string): void { - if (typeof order === "string") { - delete(this.orders[order]) - } - else { - delete(this.orders[order.orderHash]) - } - } - - /** - * @public - * Method to dposit some units of token of tokenAddress into the vaultId of the sender - * - * @param sender - sender that deposit is done for - * @param tokenAddress - the address of the token - * @param vaultId - the vault ID to deposit - * @param units - amount of token to deposit - * @param tokenDecimals - (optional) decimals of the token, 18 will be used as default - * - * @returns void - */ - public deposit ( - sender: string, - tokenAddress: string, - vaultId: string, - units: number, - tokenDecimals: number = 18 - ): void { - const _sender = paddedUInt160(sender); - const units_ = parseUnits( - units.toString(), - tokenDecimals - ); - if (this.erc20s[tokenAddress].balanceOf[_sender]) { - if (this.erc20s[tokenAddress].balanceOf[_sender].gte(units_)) { - this.erc20s[tokenAddress].balanceOf[_sender] = - this.erc20s[tokenAddress].balanceOf[_sender].sub(units_) - } - else throw new Error("insufficient balance") - } - if (this.erc20s[tokenAddress].balanceOf[this.address]) { - this.erc20s[tokenAddress].balanceOf[this.address] = - this.erc20s[tokenAddress].balanceOf[this.address].add(units_) - } - else { - this.erc20s[tokenAddress] = { - balanceOf: { - [this.address]: units_ - }, - decimals: tokenDecimals, - totalSupply: units_ - } - } - if (this.vaults[_sender] === undefined) { - this.vaults[_sender] = { - [tokenAddress]: { - vaultId: { - [vaultId]: ethers.constants.Zero - } - } - } - } - if (this.vaults[_sender][tokenAddress] === undefined) { - this.vaults[_sender][tokenAddress] = { - vaultId: { - [vaultId]: ethers.constants.Zero - } - } - } - if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { - this.vaults[_sender][tokenAddress].vaultId[vaultId] = ethers.constants.Zero; - } - this.vaults[_sender][tokenAddress].vaultId[vaultId] = - this.vaults[_sender][tokenAddress].vaultId[vaultId].add(units_); - } - - /** - * @public - * Method to withdraw some units of token of tokenAddress from VaultId of the sender - * - * @param sender - sender that withdraw is done for - * @param tokenAddress - the address of the token - * @param vaultId - the vault ID to withdraw - * @param units - amount of token to withdraw - * - * @returns void - */ - public withdraw ( - sender: string, - tokenAddress: string, - vaultId: string, - units: number, - tokenDecimals: number = 18 - ): void { - const _sender = paddedUInt160(sender); - - if (this.vaults[_sender][tokenAddress].vaultId[vaultId] === undefined) { - throw new Error("this vault doesnt not exist") - } - else { - const units_ = parseUnits(units.toString(), tokenDecimals); - if (this.erc20s[tokenAddress].balanceOf[_sender]) { - this.erc20s[tokenAddress].balanceOf[_sender] = - this.erc20s[tokenAddress].balanceOf[_sender].add(units_) - } - if (this.erc20s[tokenAddress].balanceOf[this.address]) { - if (this.erc20s[tokenAddress].balanceOf[this.address].gte(units_)) { - this.erc20s[tokenAddress].balanceOf[this.address] = - this.erc20s[tokenAddress].balanceOf[this.address].sub(units_) - } - else this.erc20s[tokenAddress].balanceOf[this.address] = ethers.constants.Zero - } - - this.vaults[_sender][tokenAddress].vaultId[vaultId] = - this.vaults[_sender][tokenAddress].vaultId[vaultId].gte(units_) - ? this.vaults[_sender][tokenAddress].vaultId[vaultId].sub(units_) - : ethers.constants.Zero - } - } - - /** - * @public - * Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class - * - * @param a - order A to clear - * @param b - order B to clear - * @param bountyConfig - the BountyConfig type to collect bounties of this clear - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns void - */ - public async clear ( - a: order, - b: order, - bountyConfig: bountyConfig, - timestamp?: number, - blockNumber?: number - ): Promise { - if (a.vmConfig && b.vmConfig && this.sender !== undefined) { - const entrypoint = 0; - const aJS = new OrderbookJSVM(a.vmConfig, {applyOpFn: this.OpFns}); - const bJS = new OrderbookJSVM(b.vmConfig, {applyOpFn: this.OpFns}); - - const aResult_ = await aJS.run( - {context: [a.orderHash, b.owner], timestamp, blockNumber}, - entrypoint - ); - const bResult_ = await bJS.run( - {context: [b.orderHash, a.owner], timestamp, blockNumber}, - entrypoint - ); - - const aOutputMax = aResult_[aResult_.length - 2]; - const bOutputMax = bResult_[bResult_.length - 2]; - const aPrice = aResult_[aResult_.length - 1]; - const bPrice = bResult_[bResult_.length - 1]; - - const aStateChangeOutput = aOutputMax.gt((bOutputMax.mul(bPrice)).div(eighteenZeros)) - ? (bOutputMax.mul(bPrice)).div(eighteenZeros) - : aOutputMax; - const bStateChangeOutput = bOutputMax.gt((aOutputMax.mul(aPrice)).div(eighteenZeros)) - ? (aOutputMax.mul(aPrice)).div(eighteenZeros) - : bOutputMax; - - if (!aStateChangeOutput.isZero() || !bStateChangeOutput.isZero()) { - - const aStateChangeInput = (aStateChangeOutput.mul(aPrice)).div(eighteenZeros); - const bStateChangeInput = (bStateChangeOutput.mul(bPrice)).div(eighteenZeros); - - if (!aStateChangeOutput.sub(bStateChangeInput).isNegative() && !bStateChangeOutput.sub(aStateChangeInput).isNegative()) { - - if (this.vaults[this.sender] === undefined) { - this.vaults[this.sender] = { - [a.outputToken]: { - vaultId: { - [bountyConfig.aVaultId]: ethers.constants.Zero - } - }, - [b.outputToken]: { - vaultId: { - [bountyConfig.bVaultId]: ethers.constants.Zero - } - }, - } - } - - if (this.vaults[this.sender][a.outputToken] === undefined) { - this.vaults[this.sender][a.outputToken] = { - vaultId: { - [bountyConfig.aVaultId]: ethers.constants.Zero - } - } - } - - if (this.vaults[this.sender][b.outputToken] === undefined) { - this.vaults[this.sender][b.outputToken] = { - vaultId: { - [bountyConfig.bVaultId]: ethers.constants.Zero - } - } - } - - if (this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] === undefined) { - this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = ethers.constants.Zero - } - - if (this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] === undefined) { - this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = ethers.constants.Zero - } - - if(this.clearedFunds[a.orderHash] === undefined) { - this.clearedFunds[a.orderHash] = ethers.constants.Zero - } - - if(this.clearedFunds[b.orderHash] === undefined) { - this.clearedFunds[b.orderHash] = ethers.constants.Zero - } - - if(this.clearedCounterPartyFunds[a.orderHash] === undefined) { - this.clearedCounterPartyFunds[a.orderHash] = { - [b.owner]: ethers.constants.Zero - } - } - - if(this.clearedCounterPartyFunds[b.orderHash] === undefined) { - this.clearedCounterPartyFunds[b.orderHash] = { - [a.owner]: ethers.constants.Zero - } - } - - this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] = - this.vaults[this.sender][a.outputToken].vaultId[bountyConfig.aVaultId] - .add(aStateChangeOutput.sub(bStateChangeInput)); - - this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] = - this.vaults[this.sender][b.outputToken].vaultId[bountyConfig.bVaultId] - .add(bStateChangeOutput.sub(aStateChangeInput)); - - this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId] = - this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].gte(aStateChangeOutput) - ? this.vaults[a.owner][a.outputToken].vaultId[a.outputVaultId].sub(aStateChangeOutput) - : ethers.constants.Zero; - - this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId] = - this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].gte(bStateChangeOutput) - ? this.vaults[b.owner][b.outputToken].vaultId[b.outputVaultId].sub(bStateChangeOutput) - : ethers.constants.Zero; - - this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId] = - this.vaults[a.owner][a.inputToken].vaultId[a.inputVaultId].add(aStateChangeInput); - - this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId] = - this.vaults[b.owner][b.inputToken].vaultId[b.inputVaultId].add(bStateChangeInput); - - this.clearedCounterPartyFunds[a.orderHash][b.owner] = - this.clearedCounterPartyFunds[a.orderHash][b.owner].add(aStateChangeOutput); - - this.clearedCounterPartyFunds[b.orderHash][a.owner] = - this.clearedCounterPartyFunds[b.orderHash][a.owner].add(bStateChangeOutput); - - console.log(` - ******************************************************************** - - Order ${"0x" + a.orderHash.substring(2).padStart(40, "0")} - Successfully Cleared Agaisnt - Order ${"0x" + b.orderHash.substring(2).padStart(40, "0")} - - ******************************************************************** - `); - - } - else console.log("negative clear not possible") - } - } - else console.log("one or more orders have no script"); - } +export class OrderbookSimulation extends vmSimulation { + + /** + * @public + * The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * @public + * A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, + * and updating storage types after method calls and needs to be a string number or hex string. + */ + public sender: string; + + /** + * @public + * The property that stores all the data of the class's vaults @see vault + */ + public vaults: SVaults = {}; + + /** + * @public + * The property that stores all the data of the class's orders, @see orders and @see order + */ + public orders: SOrders = {}; + + /** + * @public + * The property that stores all the data of an order's total cleared amount, @see clearedFunds + */ + public clearedFunds: SClearedFunds = {}; + + /** + * @public + * The property that stores all the data of an order's total cleared amount to a specific counterparty address + * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds + */ + public clearedCounterPartyFunds: SClearedCounterPartyFunds = {}; + + /** + * @public + * Constructor of this class + * + * @param address - this Orderbook's class adress which needs to be a string number or hex string + * @param sender - the sender which needs to be string number or hex string + * @param vaults - (optinal) the initial vaults object (vaults storage) + * @param orders - (optional) the initial orders + */ + constructor(address: string, sender: string, vaults?: SVaults, orders?: SOrders) { + + super(); + + this.address = paddedUInt160(address); + this.sender = paddedUInt160(sender); + + if (vaults !== undefined) { + this.vaults = vaults; + } + if (orders !== undefined) { + this.orders = orders; + } + } + + /** + * @public + * Local Orderbook Opcodes' functions body for simulation that uses the class properties/types. @see FnPtrsJSVM and @see OpJSVM + */ + protected OpFns: FnPtrsJSVM = { + + ...this.OpFns, + + [OrderBook.Opcodes.ORDER_FUNDS_CLEARED]: + (state: StateJSVM, operand: number, data?: any) => { + const item_ = state.stack.pop(); + + if (item_ !== undefined) { + const orderHash = paddedUInt256(item_); + if (this.clearedFunds[orderHash] !== undefined) { + state.stack.push(this.clearedFunds[orderHash]); + } + else throw new Error("no record of cleared funds for this orderHash") + } + else throw new Error("undefined stack value") + }, + + [OrderBook.Opcodes.COUNTERPARTY_FUNDS_CLEARED]: + (state: StateJSVM, operand: number, data?: any) => { + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + const orderHash = paddedUInt256(item1_); + const counterParty = paddedUInt160(item2_); + if (this.clearedCounterPartyFunds[orderHash][counterParty] !== undefined) { + state.stack.push(this.clearedCounterPartyFunds[orderHash][counterParty]) + } + else throw new Error("no record of cleared funds for this orderHash's counterparty") + } + else throw new Error("undefined stack values") + } + }; + + /** + * @public + * Method to submit an order into the class orders + * + * @param order - the order to add + * @returns void + */ + public addOrder(order: SOrder): void { + this.orders[order.orderHash] = order; + + for (const ioConfig of order.validOutputs) { + if (this.vaults[order.owner] === undefined) { + for (const ioConfig of order.validInputs) { + this.vaults[order.owner] = { + ...this.vaults[order.owner], + [ioConfig.token]: { + [ioConfig.vaultId]: ethers.constants.Zero + } + } + } + } + if (this.vaults[order.owner][ioConfig.token] === undefined) { + this.vaults[order.owner][ioConfig.token] = { + ...this.vaults[order.owner][ioConfig.token], + [ioConfig.vaultId]: ethers.constants.Zero + } + } + if (this.vaults[order.owner][ioConfig.token][ioConfig.vaultId] === undefined) { + this.vaults[order.owner][ioConfig.token][ioConfig.vaultId] = ethers.constants.Zero; + } + } + for (const ioConfig of order.validOutputs) { + if (this.vaults[order.owner] === undefined) { + for (const ioConfig of order.validOutputs) { + this.vaults[order.owner] = { + ...this.vaults[order.owner] , + [ioConfig.token]: { + [ioConfig.vaultId]: ethers.constants.Zero + } + } + } + } + if (this.vaults[order.owner][ioConfig.token] === undefined) { + this.vaults[order.owner][ioConfig.token] = { + ...this.vaults[order.owner][ioConfig.token], + [ioConfig.vaultId]: ethers.constants.Zero + } + } + if (this.vaults[order.owner][ioConfig.token][ioConfig.vaultId] === undefined) { + this.vaults[order.owner][ioConfig.token][ioConfig.vaultId] = ethers.constants.Zero + } + } + + } + + /** + * @public + * Method to remove an order from the class's orders + * + * @param order - the order to remove + * @returns void + */ + public removeOrder(order: SOrder | string): void { + if (typeof order === "string") { + delete(this.orders[order]) + } + else { + delete(this.orders[order.orderHash]) + } + } + + /** + * @public + * Method to dposit some units of token of tokenAddress into the vaultId of the sender + * + * @param sender - sender that deposit is done for + * @param tokenAddress - the address of the token + * @param vaultId - the vault ID to deposit + * @param units - amount of token to deposit + * @param tokenDecimals - (optional) decimals of the token, 18 will be used as default + * + * @returns void + */ + public deposit ( + sender: string, + tokenAddress: string, + vaultId: string, + units: number, + tokenDecimals: number = 18 + ): void { + const _sender = paddedUInt160(sender); + const units_ = parseUnits( + units.toString(), + tokenDecimals + ); + if (this.erc20s[tokenAddress].balanceOf[_sender]) { + if (this.erc20s[tokenAddress].balanceOf[_sender].gte(units_)) { + this.erc20s[tokenAddress].balanceOf[_sender] = + this.erc20s[tokenAddress].balanceOf[_sender].sub(units_) + } + else throw new Error("insufficient balance") + } + if (this.erc20s[tokenAddress].balanceOf[this.address]) { + this.erc20s[tokenAddress].balanceOf[this.address] = + this.erc20s[tokenAddress].balanceOf[this.address].add(units_) + } + else { + this.erc20s[tokenAddress] = { + balanceOf: { + [this.address]: units_ + }, + decimals: tokenDecimals, + totalSupply: units_ + } + } + if (this.vaults[_sender] === undefined) { + this.vaults[_sender] = { + [tokenAddress]: { + [vaultId]: ethers.constants.Zero + } + } + } + if (this.vaults[_sender][tokenAddress] === undefined) { + this.vaults[_sender][tokenAddress] = { + [vaultId]: ethers.constants.Zero + } + } + if (this.vaults[_sender][tokenAddress][vaultId] === undefined) { + this.vaults[_sender][tokenAddress][vaultId] = ethers.constants.Zero; + } + this.vaults[_sender][tokenAddress][vaultId] = + this.vaults[_sender][tokenAddress][vaultId].add(units_); + + } + + /** + * @public + * Method to withdraw some units of token of tokenAddress from VaultId of the sender + * + * @param sender - sender that withdraw is done for + * @param tokenAddress - the address of the token + * @param vaultId - the vault ID to withdraw + * @param units - amount of token to withdraw + * + * @returns void + */ + public withdraw ( + sender: string, + tokenAddress: string, + vaultId: string, + units: number, + tokenDecimals: number = 18 + ): void { + const _sender = paddedUInt160(sender); + + if (this.vaults[_sender][tokenAddress][vaultId] === undefined) { + throw new Error("this vault doesnt not exist") + } + else { + const units_ = parseUnits(units.toString(), tokenDecimals); + if (this.erc20s[tokenAddress].balanceOf[_sender]) { + this.erc20s[tokenAddress].balanceOf[_sender] = + this.erc20s[tokenAddress].balanceOf[_sender].add(units_) + } + if (this.erc20s[tokenAddress].balanceOf[this.address]) { + if (this.erc20s[tokenAddress].balanceOf[this.address].gte(units_)) { + this.erc20s[tokenAddress].balanceOf[this.address] = + this.erc20s[tokenAddress].balanceOf[this.address].sub(units_) + } + else this.erc20s[tokenAddress].balanceOf[this.address] = ethers.constants.Zero + } + + this.vaults[_sender][tokenAddress][vaultId] = + this.vaults[_sender][tokenAddress][vaultId].gte(units_) + ? this.vaults[_sender][tokenAddress][vaultId].sub(units_) + : ethers.constants.Zero + } + } + + /** + * @public + * Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class + * + * @param a - order A to clear + * @param b - order B to clear + * @param clearConfig - the BountyConfig type to collect bounties of this clear + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns void + */ + public async clear ( + a: SOrder, + b: SOrder, + clearConfig: SClearConfig, + timestamp?: number, + blockNumber?: number + ): Promise { + if (a.vmConfig && b.vmConfig && this.sender !== undefined) { + const entrypoint = 0; + const aJS = new OrderbookJSVM(a.vmConfig, {applyOpFn: this.OpFns}); + const bJS = new OrderbookJSVM(b.vmConfig, {applyOpFn: this.OpFns}); + + const aResult_ = await aJS.run( + {context: [a.orderHash, b.owner], timestamp, blockNumber}, + entrypoint + ); + const bResult_ = await bJS.run( + {context: [b.orderHash, a.owner], timestamp, blockNumber}, + entrypoint + ); + + let aOutputMax = aResult_[aResult_.length - 2]; + let bOutputMax = bResult_[bResult_.length - 2]; + const aPrice = aResult_[aResult_.length - 1]; + const bPrice = bResult_[bResult_.length - 1]; + + aOutputMax = aOutputMax.gte( + this.vaults[a.owner][ + a.validOutputs[clearConfig.aOutputIndex].token + ][a.validOutputs[clearConfig.aOutputIndex].vaultId]) + ? this.vaults[a.owner][ + a.validOutputs[clearConfig.aOutputIndex].token + ][a.validOutputs[clearConfig.aOutputIndex].vaultId] + : aOutputMax; + + bOutputMax = bOutputMax.gte( + this.vaults[b.owner][ + b.validOutputs[clearConfig.bOutputIndex].token + ][b.validOutputs[clearConfig.bOutputIndex].vaultId]) + ? this.vaults[b.owner][ + b.validOutputs[clearConfig.bOutputIndex].token + ][b.validOutputs[clearConfig.bOutputIndex].vaultId] + : bOutputMax; + + const aStateChangeOutput = aOutputMax.gt((bOutputMax.mul(bPrice)).div(eighteenZeros)) + ? (bOutputMax.mul(bPrice)).div(eighteenZeros) + : aOutputMax; + const bStateChangeOutput = bOutputMax.gt((aOutputMax.mul(aPrice)).div(eighteenZeros)) + ? (aOutputMax.mul(aPrice)).div(eighteenZeros) + : bOutputMax; + + if (!aStateChangeOutput.isZero() || !bStateChangeOutput.isZero()) { + + const aStateChangeInput = (aStateChangeOutput.mul(aPrice)).div(eighteenZeros); + const bStateChangeInput = (bStateChangeOutput.mul(bPrice)).div(eighteenZeros); + + if (!aStateChangeOutput.sub(bStateChangeInput).isNegative() && !bStateChangeOutput.sub(aStateChangeInput).isNegative()) { + + if (this.vaults[this.sender] === undefined) { + this.vaults[this.sender] = { + [a.validOutputs[clearConfig.aOutputIndex].token]: { + [clearConfig.aBountyVaultId]: ethers.constants.Zero + }, + [b.validOutputs[clearConfig.bOutputIndex].token]: { + [clearConfig.bBountyVaultId]: ethers.constants.Zero + }, + } + } + + if (this.vaults[this.sender][a.validOutputs[clearConfig.aOutputIndex].token] === undefined) { + this.vaults[this.sender][a.validOutputs[clearConfig.aOutputIndex].token] = { + [clearConfig.aBountyVaultId]: ethers.constants.Zero + } + } + if (this.vaults[this.sender][b.validOutputs[clearConfig.bOutputIndex].token] === undefined) { + this.vaults[this.sender][b.validOutputs[clearConfig.bOutputIndex].token] = { + [clearConfig.bBountyVaultId]: ethers.constants.Zero + } + } + + if (this.vaults[this.sender][a.validOutputs[clearConfig.aOutputIndex].token][clearConfig.aBountyVaultId] === undefined) { + this.vaults[this.sender][ + a.validOutputs[clearConfig.aOutputIndex].token + ][clearConfig.aBountyVaultId] = ethers.constants.Zero + } + if (this.vaults[this.sender][b.validOutputs[clearConfig.bOutputIndex].token][clearConfig.bBountyVaultId] === undefined) { + this.vaults[this.sender][ + b.validOutputs[clearConfig.bOutputIndex].token + ][clearConfig.bBountyVaultId] = ethers.constants.Zero + } + + if(this.clearedFunds[a.orderHash] === undefined) { + this.clearedFunds[a.orderHash] = ethers.constants.Zero + } + if(this.clearedFunds[b.orderHash] === undefined) { + this.clearedFunds[b.orderHash] = ethers.constants.Zero + } + + if(this.clearedCounterPartyFunds[a.orderHash] === undefined) { + this.clearedCounterPartyFunds[a.orderHash] = { + [b.owner]: ethers.constants.Zero + } + } + if(this.clearedCounterPartyFunds[b.orderHash] === undefined) { + this.clearedCounterPartyFunds[b.orderHash] = { + [a.owner]: ethers.constants.Zero + } + } + + this.vaults[this.sender][ + a.validOutputs[clearConfig.aOutputIndex].token + ][clearConfig.aBountyVaultId] = + this.vaults[this.sender][ + a.validOutputs[clearConfig.aOutputIndex].token + ][clearConfig.aBountyVaultId] + .add(aStateChangeOutput.sub(bStateChangeInput)); + + this.vaults[this.sender][ + b.validOutputs[clearConfig.bOutputIndex].token + ][clearConfig.bBountyVaultId] = + this.vaults[this.sender][ + b.validOutputs[clearConfig.bOutputIndex].token + ][clearConfig.bBountyVaultId] + .add(bStateChangeOutput.sub(aStateChangeInput)); + + this.vaults[a.owner][ + a.validOutputs[clearConfig.aOutputIndex].token + ][a.validOutputs[clearConfig.aOutputIndex].vaultId] = + this.vaults[a.owner][ + a.validOutputs[clearConfig.aOutputIndex].token + ][a.validOutputs[clearConfig.aOutputIndex].vaultId].gte(aStateChangeOutput) + ? this.vaults[a.owner][ + a.validOutputs[clearConfig.aOutputIndex].token + ][a.validOutputs[clearConfig.aOutputIndex].vaultId].sub(aStateChangeOutput) + : ethers.constants.Zero; + + this.vaults[b.owner][ + b.validOutputs[clearConfig.bOutputIndex].token + ][b.validOutputs[clearConfig.bOutputIndex].vaultId] = + this.vaults[b.owner][ + b.validOutputs[clearConfig.bOutputIndex].token + ][b.validOutputs[clearConfig.bOutputIndex].vaultId].gte(bStateChangeOutput) + ? this.vaults[b.owner][ + b.validOutputs[clearConfig.bOutputIndex].token + ][b.validOutputs[clearConfig.bOutputIndex].vaultId].sub(bStateChangeOutput) + : ethers.constants.Zero; + + this.vaults[a.owner][ + a.validInputs[clearConfig.aInputIndex].token + ][a.validInputs[clearConfig.aInputIndex].vaultId] = + this.vaults[a.owner][ + a.validInputs[clearConfig.aInputIndex].token + ][a.validInputs[clearConfig.aInputIndex].vaultId].add(aStateChangeInput); + + this.vaults[b.owner][ + b.validInputs[clearConfig.bInputIndex].token + ][b.validInputs[clearConfig.bInputIndex].vaultId] = + this.vaults[b.owner][ + b.validInputs[clearConfig.bInputIndex].token + ][b.validInputs[clearConfig.bInputIndex].vaultId].add(bStateChangeInput); + + this.clearedFunds[a.orderHash] = + this.clearedFunds[a.orderHash].add(aStateChangeOutput); + + this.clearedFunds[b.orderHash] = + this.clearedFunds[b.orderHash].add(bStateChangeOutput); + + this.clearedCounterPartyFunds[a.orderHash][b.owner] = + this.clearedCounterPartyFunds[a.orderHash][b.owner].add(aStateChangeOutput); + + this.clearedCounterPartyFunds[b.orderHash][a.owner] = + this.clearedCounterPartyFunds[b.orderHash][a.owner].add(bStateChangeOutput); + + console.log(` + ******************************************************************** + + Order ${"0x" + a.orderHash.substring(2).padStart(40, "0")} + Successfully Cleared Agaisnt + Order ${"0x" + b.orderHash.substring(2).padStart(40, "0")} + + ******************************************************************** + `); + + } + else console.log("negative clear not possible") + } + } + else console.log("one or more orders have no script"); + } - } \ No newline at end of file +} diff --git a/src/jsvm/simulation/SaleSimulation.ts b/src/jsvm/simulation/SaleSimulation.ts index 86bc646..5936010 100644 --- a/src/jsvm/simulation/SaleSimulation.ts +++ b/src/jsvm/simulation/SaleSimulation.ts @@ -2,8 +2,8 @@ import { BigNumber, ethers } from "ethers"; import { SaleStorage } from "../../contracts/sale"; import { paddedUInt160 } from "../../utils"; import { SaleJSVM } from "../SaleJSVM"; -import { eighteenZeros, erc20, FnPtrs, StateJSVM } from "../types"; import { vmSimulation } from "./vmSimulation"; +import { eighteenZeros, SERC20, FnPtrsJSVM, StateJSVM } from "../types"; /** @@ -12,235 +12,235 @@ import { vmSimulation } from "./vmSimulation"; */ export class SaleSimulation extends vmSimulation { - /** - * The sale address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * The reedeemable token of this sale i.e rTKN which needs to a string number or hex string @see erc20 - */ - public token: erc20; - - /** - * The reserve token of this sale as an erc20 type object @see erc20 - */ - public reserve: erc20; - - /** - * The reserve token addres of this sale as an erc20 type object - */ - public tokenAddress: string; - - /** - * The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string - */ - public reserveAddress: string; - - /** - * Constructor of this class - * - * @param address - A string number or hex string - * @param tokenAddress - A string number or hex string of the rTKN address - * @param reserveAddress - A string number or hex string of the reserve token address - * @param token - the rTKN - * @param reserve - the reserve token - */ - constructor ( - address: string, - tokenAddress: string, - reserveAddress: string, - token: erc20, - reserve: erc20 - ) { - super(); - this.token = token; - this.address = paddedUInt160(address); - this.reserve = reserve; - this.tokenAddress = paddedUInt160(tokenAddress); - this.reserveAddress = paddedUInt160(reserveAddress); - - if (this.erc20s[this.tokenAddress] === undefined) { - this.erc20s[this.tokenAddress] = this.token; - } - if (this.erc20s[this.reserveAddress] === undefined) { - this.erc20s[this.reserveAddress] = this.reserve; - } - if (this.erc20s[this.tokenAddress].balanceOf[this.address] === undefined) { - this.erc20s[this.tokenAddress].balanceOf[this.address] = this.token.balanceOf[this.address] - } - if (this.erc20s[this.reserveAddress].balanceOf[this.address] === undefined) { - this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address] - } - } - - /** - * Sale storage opcodes's functions body that use the class properties/types. @see FnPtrs and @see OpcodeFN - */ - private storageOps: FnPtrs = { - [SaleStorage.RemainingUnits]: (state: StateJSVM, operand: number, data?: any) => { - state.stack.push(this.token.balanceOf[this.address]) - }, - [SaleStorage.TotalReserveIn]: (state: StateJSVM, operand: number, data?: any) => { - state.stack.push(this.reserve.balanceOf[this.address]) - }, - [SaleStorage.TokenAddress]: (state: StateJSVM, operand: number, data?: any) => { - state.stack.push(BigNumber.from(this.tokenAddress)) - }, - [SaleStorage.ReserveAddress]: (state: StateJSVM, operand: number, data?: any) => { - state.stack.push(BigNumber.from(this.reserveAddress)) - } - }; - - /** - * Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. - * requires the class's sender property to be defined - * - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns a boolean represting if the sale can live (active status - 1) or not - */ - public async canLive(timestamp?: number, blockNumber?: number) : Promise { - let canLive: boolean; - const canLive_entrypoint = 0; - if (this.script && this.sender !== undefined) { - let simulation = new SaleJSVM( - this.script, - {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} - ) - const result_ = await simulation.run( - {timestamp, blockNumber}, - canLive_entrypoint - ); - canLive = result_[0].isZero() ? false : true; - } - else throw new Error("no script or sender to execute canLive"); - return canLive; - } - - /** - * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. - * requires the class's sender property to be defined - * - * @param units - Units to get the calculation for - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns a pair of BigNumbers represting amount and price - */ - public async calculateBuy( - units: number, - timestamp?: number, - blockNumber?: number - ): Promise<[BigNumber, BigNumber]> { - let maxUnits; - let price; - const amount_price_entrypoint = 1; - - if (this.script && this.sender !== undefined) { - let simulation = new SaleJSVM( - this.script, - {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} - ) - const result_ = await simulation.run( - {context: [units], timestamp, blockNumber}, - amount_price_entrypoint - ); - maxUnits = result_[result_.length - 2]; - price = result_[result_.length - 1]; - } - else throw new Error("no script or sender to execute calculateBuy") - return [maxUnits, price]; - } - - /** - * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. - * requires the class's sender property to be defined. - * - * @remarks after running this method all the defined class's related types/storage will get updated with new - * values that are result of the JSVM running the script. - * - * @param units - Units to get the calculation for - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns void - */ - public async buy( - units: number, - timestamp?: number, - blockNumber?: number - ): Promise { - const amount_price_entrypoint = 1; - - if (this.script && this.sender !== undefined) { - let simulation = new SaleJSVM( - this.script, - {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} - ) - const result_ = await simulation.run( - {context: [units], timestamp, blockNumber}, - amount_price_entrypoint - ); - const maxUnits = result_[result_.length - 2]; - const price = result_[result_.length - 1]; - const Value_ = (maxUnits.mul(price)).div(eighteenZeros); - - if (Value_.lte(this.erc20s[this.reserveAddress].balanceOf[this.sender])) { - if (this.token.balanceOf[this.address].gte(maxUnits)) { - - this.reserve.balanceOf[this.address] = this.reserve.balanceOf[this.address].add(Value_); - this.token.balanceOf[this.address] = this.token.balanceOf[this.address].sub(maxUnits); - - this.erc20s[this.reserveAddress].balanceOf[this.address] = - this.erc20s[this.reserveAddress].balanceOf[this.address] - .add(Value_); - - this.erc20s[this.tokenAddress].balanceOf[this.address] = - this.erc20s[this.tokenAddress].balanceOf[this.address] - .sub(maxUnits); - - this.erc20s[this.reserveAddress].balanceOf[this.sender] = - this.erc20s[this.reserveAddress].balanceOf[this.sender] - .sub(Value_); - - this.erc20s[this.tokenAddress].balanceOf[this.sender] = - this.erc20s[this.tokenAddress].balanceOf[this.sender] - ? this.erc20s[this.tokenAddress].balanceOf[this.sender].add(maxUnits) - : maxUnits; - - this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; - this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; - - } - else { - this.reserve.balanceOf[this.address] = - this.reserve.balanceOf[this.address] - .add((this.token.balanceOf[this.address].mul(price)).div(eighteenZeros)); - - this.erc20s[this.tokenAddress].balanceOf[this.sender] = - this.erc20s[this.tokenAddress].balanceOf[this.sender] - ? this.erc20s[this.tokenAddress].balanceOf[this.sender] - .add(this.erc20s[this.tokenAddress].balanceOf[this.sender]) - : this.token.balanceOf[this.address]; - - this.erc20s[this.reserveAddress].balanceOf[this.sender] = - this.erc20s[this.reserveAddress].balanceOf[this.sender] - .sub((this.erc20s[this.tokenAddress].balanceOf[this.sender].mul(price)).div(eighteenZeros)); - - this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; - this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; - - this.token.balanceOf[this.address] = ethers.constants.Zero; - - this.erc20s[this.tokenAddress].balanceOf[this.address] = ethers.constants.Zero; - this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address]; - } - } - else throw new Error("insufficient balance") - } - else throw new Error("no script or sender to perform the buy") - } - } \ No newline at end of file + /** + * The sale address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * The reedeemable token of this sale i.e rTKN which needs to a string number or hex string @see erc20 + */ + public token: SERC20; + + /** + * The reserve token of this sale as an erc20 type object @see erc20 + */ + public reserve: SERC20; + + /** + * The reserve token addres of this sale as an erc20 type object + */ + public tokenAddress: string; + + /** + * The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string + */ + public reserveAddress: string; + + /** + * Constructor of this class + * + * @param address - A string number or hex string + * @param tokenAddress - A string number or hex string of the rTKN address + * @param reserveAddress - A string number or hex string of the reserve token address + * @param token - the rTKN + * @param reserve - the reserve token + */ + constructor ( + address: string, + tokenAddress: string, + reserveAddress: string, + token: SERC20, + reserve: SERC20 + ) { + super(); + this.token = token; + this.address = paddedUInt160(address); + this.reserve = reserve; + this.tokenAddress = paddedUInt160(tokenAddress); + this.reserveAddress = paddedUInt160(reserveAddress); + + if (this.erc20s[this.tokenAddress] === undefined) { + this.erc20s[this.tokenAddress] = this.token; + } + if (this.erc20s[this.reserveAddress] === undefined) { + this.erc20s[this.reserveAddress] = this.reserve; + } + if (this.erc20s[this.tokenAddress].balanceOf[this.address] === undefined) { + this.erc20s[this.tokenAddress].balanceOf[this.address] = this.token.balanceOf[this.address] + } + if (this.erc20s[this.reserveAddress].balanceOf[this.address] === undefined) { + this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address] + } + } + + /** + * Sale storage opcodes's functions body that use the class properties/types. @see FnPtrsJSVM and @see OpJSVM + */ + private storageOps: FnPtrsJSVM = { + [SaleStorage.RemainingUnits]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(this.token.balanceOf[this.address]) + }, + [SaleStorage.TotalReserveIn]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(this.reserve.balanceOf[this.address]) + }, + [SaleStorage.TokenAddress]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(BigNumber.from(this.tokenAddress)) + }, + [SaleStorage.ReserveAddress]: (state: StateJSVM, operand: number, data?: any) => { + state.stack.push(BigNumber.from(this.reserveAddress)) + } + }; + + /** + * Method to simulate the sale's canLive results by using JSVM to run canLive script of a sale script. + * requires the class's sender property to be defined + * + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns a boolean represting if the sale can live (active status - 1) or not + */ + public async canLive(timestamp?: number, blockNumber?: number) : Promise { + let canLive: boolean; + const canLive_entrypoint = 0; + if (this.script && this.sender !== undefined) { + let simulation = new SaleJSVM( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {timestamp, blockNumber}, + canLive_entrypoint + ); + canLive = result_[0].isZero() ? false : true; + } + else throw new Error("no script or sender to execute canLive"); + return canLive; + } + + /** + * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. + * requires the class's sender property to be defined + * + * @param units - Units to get the calculation for + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns a pair of BigNumbers represting amount and price + */ + public async calculateBuy( + units: number, + timestamp?: number, + blockNumber?: number + ): Promise<[BigNumber, BigNumber]> { + let maxUnits; + let price; + const amount_price_entrypoint = 1; + + if (this.script && this.sender !== undefined) { + let simulation = new SaleJSVM( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {context: [units], timestamp, blockNumber}, + amount_price_entrypoint + ); + maxUnits = result_[result_.length - 2]; + price = result_[result_.length - 1]; + } + else throw new Error("no script or sender to execute calculateBuy") + return [maxUnits, price]; + } + + /** + * Method to simulate the sale's calculateBuy results by using JSVM to run calculateBuy script of a sale script. + * requires the class's sender property to be defined. + * + * @remarks after running this method all the defined class's related types/storage will get updated with new + * values that are result of the JSVM running the script. + * + * @param units - Units to get the calculation for + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns void + */ + public async buy( + units: number, + timestamp?: number, + blockNumber?: number + ): Promise { + const amount_price_entrypoint = 1; + + if (this.script && this.sender !== undefined) { + let simulation = new SaleJSVM( + this.script, + {applyOpFn: this.OpFns, storageOpFn: this.storageOps,} + ) + const result_ = await simulation.run( + {context: [units], timestamp, blockNumber}, + amount_price_entrypoint + ); + const maxUnits = result_[result_.length - 2]; + const price = result_[result_.length - 1]; + const Value_ = (maxUnits.mul(price)).div(eighteenZeros); + + if (Value_.lte(this.erc20s[this.reserveAddress].balanceOf[this.sender])) { + if (this.token.balanceOf[this.address].gte(maxUnits)) { + + this.reserve.balanceOf[this.address] = this.reserve.balanceOf[this.address].add(Value_); + this.token.balanceOf[this.address] = this.token.balanceOf[this.address].sub(maxUnits); + + this.erc20s[this.reserveAddress].balanceOf[this.address] = + this.erc20s[this.reserveAddress].balanceOf[this.address] + .add(Value_); + + this.erc20s[this.tokenAddress].balanceOf[this.address] = + this.erc20s[this.tokenAddress].balanceOf[this.address] + .sub(maxUnits); + + this.erc20s[this.reserveAddress].balanceOf[this.sender] = + this.erc20s[this.reserveAddress].balanceOf[this.sender] + .sub(Value_); + + this.erc20s[this.tokenAddress].balanceOf[this.sender] = + this.erc20s[this.tokenAddress].balanceOf[this.sender] + ? this.erc20s[this.tokenAddress].balanceOf[this.sender].add(maxUnits) + : maxUnits; + + this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; + this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; + + } + else { + this.reserve.balanceOf[this.address] = + this.reserve.balanceOf[this.address] + .add((this.token.balanceOf[this.address].mul(price)).div(eighteenZeros)); + + this.erc20s[this.tokenAddress].balanceOf[this.sender] = + this.erc20s[this.tokenAddress].balanceOf[this.sender] + ? this.erc20s[this.tokenAddress].balanceOf[this.sender] + .add(this.erc20s[this.tokenAddress].balanceOf[this.sender]) + : this.token.balanceOf[this.address]; + + this.erc20s[this.reserveAddress].balanceOf[this.sender] = + this.erc20s[this.reserveAddress].balanceOf[this.sender] + .sub((this.erc20s[this.tokenAddress].balanceOf[this.sender].mul(price)).div(eighteenZeros)); + + this.token.balanceOf[this.sender] = this.erc20s[this.tokenAddress].balanceOf[this.sender]; + this.reserve.balanceOf[this.sender] = this.erc20s[this.reserveAddress].balanceOf[this.sender]; + + this.token.balanceOf[this.address] = ethers.constants.Zero; + + this.erc20s[this.tokenAddress].balanceOf[this.address] = ethers.constants.Zero; + this.erc20s[this.reserveAddress].balanceOf[this.address] = this.reserve.balanceOf[this.address]; + } + } + else throw new Error("insufficient balance") + } + else throw new Error("no script or sender to perform the buy") + } +} diff --git a/src/jsvm/simulation/vmSimulation.ts b/src/jsvm/simulation/vmSimulation.ts index 4d51e9c..54bfe19 100644 --- a/src/jsvm/simulation/vmSimulation.ts +++ b/src/jsvm/simulation/vmSimulation.ts @@ -2,16 +2,13 @@ import { RainJSVM } from "../RainJSVM"; import { BigNumber, ethers } from "ethers"; import { Tier } from "../../classes/iTierV2"; import { StateConfig, VM } from "../../classes/vm"; +import { paddedUInt160, paddedUInt256 } from "../../utils"; import { - paddedUInt160, - paddedUInt256, -} from "../../utils"; -import { - FnPtrs, - erc20s, - itiers, - erc721s, - erc1155s, + FnPtrsJSVM, + SERC20s, + SITiers, + SERC721s, + SERC1155s, StateJSVM, } from "../types"; @@ -32,25 +29,25 @@ export class vmSimulation { * A property of type erc20s that act like a storage for simulation and stores the erc20 token data. * this is needed for IERC20 related opcodes @see erc20s and @see erc20 */ - public erc20s: erc20s = {}; + public erc20s: SERC20s = {}; /** * A property of type erc721s that act like a storage for simulation and stores the erc721 token data. * this is needed for IERC721 related opcodes @see erc721s and @see erc721 */ - public erc721s: erc721s = {}; + public erc721s: SERC721s = {}; /** * A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. * this is needed for IERC1155 related opcodes @see erc1155s and @see erc1155 */ - public erc1155s: erc1155s = {}; + public erc1155s: SERC1155s = {}; /** * A property of type itiers that act like a storage for simulation of Rain tier contracts. * this is needed for ITIERV2_REPORT and ITIERV2_REPORT_TIME_FOR_TIER opcodes. @see itiers */ - public iTiers: itiers = {}; + public iTiers: SITiers = {}; /** * The contract address of this simulation that the simulation is done for. this is needed for THIS_ADDRESS opcode @@ -76,9 +73,9 @@ export class vmSimulation { public blockNumber?: number; /** - * Opcodes functions body for simulation that use the class properties/types. @see FnPtrs and @see OpcodeFN + * Opcodes functions body for simulation that use the class properties/types. @see FnPtrsJSVM and @see OpJSVM */ - protected OpFns: FnPtrs = { + protected OpFns: FnPtrsJSVM = { [VM.Opcodes.BLOCK_NUMBER]: (state: StateJSVM, operand: number, data?: any) => { if (data && data.blockNumber !== undefined) { @@ -372,7 +369,7 @@ export class vmSimulation { * @param erc721s - An object of type erc721s * @param erc1155s - An object of type erc1155s */ - public addAssets(erc20s?: erc20s, erc721s?: erc721s, erc1155s?: erc1155s) { + public addAssets(erc20s?: SERC20s, erc721s?: SERC721s, erc1155s?: SERC1155s) { if (erc20s) { for (let i = 0; i < Object.keys(erc20s).length; i++) { if (Object.keys(this.erc20s).includes(Object.keys(erc20s)[i])) { @@ -404,7 +401,7 @@ export class vmSimulation { * * @param iTiers - An Object of itiers type */ - public addITiers (iTiers: itiers) { + public addITiers (iTiers: SITiers) { for (let i = 0; i < Object.keys(iTiers).length; i++) { if (Object.keys(this.iTiers).includes(Object.keys(iTiers)[i])) { delete this.iTiers[Object.keys(iTiers)[i]] @@ -435,4 +432,4 @@ export class vmSimulation { } else throw new Error("no script to execute") } -} \ No newline at end of file +} diff --git a/src/jsvm/types.ts b/src/jsvm/types.ts index 03c2739..c8153a5 100644 --- a/src/jsvm/types.ts +++ b/src/jsvm/types.ts @@ -6,9 +6,8 @@ import { StateConfig } from '../classes/vm'; * @public * An interface/type of JSVM opcodes' function's body */ -export interface OpFn { - - (state: StateJSVM, operand: number, data?: any): void +export interface OpJSVM { + (state: StateJSVM, operand: number, data?: any): void } @@ -16,7 +15,7 @@ export interface OpFn { * @public * An interface for creating a key/value pair of opcodes functions to override. */ -export interface FnPtrs extends Record {} +export interface FnPtrsJSVM extends Record {} /** * @public - An interface, StateJS is basically javascript version of 'State' struct @@ -27,26 +26,25 @@ export interface FnPtrs extends Record {} * */ export interface StateJSVM { - - /** - * The property to store the RainVM script constants. - */ - readonly constants: BigNumber[]; - - /** - * The property to store the RainVM script sources. - */ - readonly sources: Uint8Array[]; - - /** - * The RainJSVM's stack. - */ - readonly stack: BigNumber[]; - - /** - * Used only for zipmap opcode - */ - readonly argumentsStack: BigNumber[]; + /** + * The property to store the RainVM script constants. + */ + readonly constants: BigNumber[]; + + /** + * The property to store the RainVM script sources. + */ + readonly sources: Uint8Array[]; + + /** + * The RainJSVM's stack. + */ + readonly stack: BigNumber[]; + + /** + * Used only for zipmap opcode arguments + */ + readonly argStack: BigNumber[]; } @@ -58,167 +56,121 @@ export const eighteenZeros = "1000000000000000000"; /** * @public - * type for simulating and storing ITier contract data + * A simple key/value pair object used as storage in simulation classes to store the required data */ -export interface itiers { +export interface SStore extends Record {} - [address: string]: { - report: { - [wallet: string]: BigNumber - } - } +/** + * @public + * type for simulating and storing ITier contract data + */ +export interface SITiers extends Record {} -} +/** + * @public + * type for SimERC20 with snapshots + */ +export interface SSnapshot extends Record {} /** * @public * type for simulating and storing ERC20token contract data */ -export interface erc20 { - - totalSupply: BigNumber, - decimals: number, - balanceOf: { - [wallet: string]: BigNumber - }, - snapshots?: { - [id: string]: { - totalSupplyAt: BigNumber, - balanceOfAt: { - [wallet: string]: BigNumber - } - } - } - +export interface SERC20 { + totalSupply: BigNumber, + decimals: number, + balanceOf: SStore, + snapshots?: SSnapshot } /** * @public * type for simulating and storing ERC721 contract data */ -export interface erc721 { - - [id: string]: { - ownerOf: string - } - -} +export interface SERC721 extends Record {} /** * @public * type for simulating and storing ERC1155 contract data */ -export interface erc1155 { - - [id: string]: { - balanceOf: { - [wallet: string]: BigNumber - } - } - -} +export interface SERC1155 extends Record {} /** * @public * type for simulating and storing multiple ERC20 tokens */ -export interface erc20s { - - [address: string]: erc20 - -} +export interface SERC20s extends Record {} /** * @public * type for simulating and storing multiple ERC721 tokens */ -export interface erc721s { - - [address: string]: erc721 - -} +export interface SERC721s extends Record {} /** * @public * type for simulating and storing multiple ERC1155 tokens */ -export interface erc1155s { - - [address: string]: erc1155 - -} +export interface SERC1155s extends Record {} /** * @public * type for simulating and storing orderbook Vaults data */ -export interface vaults { - - [owner: string]: { - [tokenAddress: string]: { - vaultId: { - [vaultId: string]: BigNumber - } - } - } +export interface SVaults extends Record> {} -} +/** + * @public + * token the address of the desired token + * vaultId corresponding token vault id + */ +export type SIOConfig = { token: string; vaultId: string }; /** * @public * type for simulating and storing orderbook Order data */ -export interface order { - - orderHash: string, - owner: string, - inputToken: string, - outputToken: string, - inputVaultId: string, - outputVaultId: string, - vmConfig: StateConfig - +export interface SOrder { + orderHash: string, + owner: string, + validInputs: SIOConfig[]; + validOutputs: SIOConfig[]; + vmConfig: StateConfig } -/** +/** * @public * type for simulating and storing multiple orderbook Orders */ -export interface orders { - - [orderHash: string]: order - -} +export interface SOrders extends Record {} /** * @public * type for bounty config */ -export interface bountyConfig { - - aVaultId: string, - bVaultId: string, - +export interface SClearConfig { + aInputIndex: number, + aOutputIndex: number, + bInputIndex: number, + bOutputIndex: number, + aBountyVaultId: string, + bBountyVaultId: string, } /** * @public * type for simulating and storing matched order cleared funds */ -export interface clearedFunds { - - [orderHash: string]: BigNumber - -} +export interface SClearedFunds extends SStore {} /** * @public * type for simulating and storing matched order counterparty cleared funds */ -export interface clearedCounterPartyFunds { - - [orderHash: string]: { - [counterPartyAddress: string]: BigNumber - } +export interface SClearedCounterPartyFunds extends Record {} -} \ No newline at end of file +/** + * @public + * Interface for matchmaker forcasting a script + */ + export interface ReserveBook extends Record {} \ No newline at end of file diff --git a/src/typechain/AllStandardOpsStateBuilder.ts b/src/typechain/AllStandardOpsStateBuilder.ts index d0e53a3..73e136e 100644 --- a/src/typechain/AllStandardOpsStateBuilder.ts +++ b/src/typechain/AllStandardOpsStateBuilder.ts @@ -34,7 +34,6 @@ export type BoundsStruct = { stackLength: BigNumberish; argumentsLength: BigNumberish; storageLength: BigNumberish; - opcodesLength: BigNumberish; }; export type BoundsStructOutput = [ @@ -43,7 +42,6 @@ export type BoundsStructOutput = [ BigNumber, BigNumber, BigNumber, - BigNumber, BigNumber ] & { entrypoint: BigNumber; @@ -52,16 +50,14 @@ export type BoundsStructOutput = [ stackLength: BigNumber; argumentsLength: BigNumber; storageLength: BigNumber; - opcodesLength: BigNumber; }; export interface AllStandardOpsStateBuilderInterface extends utils.Interface { functions: { - "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; - "ensureIntegrity((bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; - "ptrSource(bytes,bytes)": FunctionFragment; - "stackPopsFnPtrs()": FunctionFragment; - "stackPushesFnPtrs()": FunctionFragment; + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity(uint256[],uint256[],(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "stackPops()": FunctionFragment; + "stackPushes()": FunctionFragment; }; encodeFunctionData( @@ -70,18 +66,11 @@ export interface AllStandardOpsStateBuilderInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "ensureIntegrity", - values: [StateConfigStruct, BoundsStruct] - ): string; - encodeFunctionData( - functionFragment: "ptrSource", - values: [BytesLike, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "stackPopsFnPtrs", - values?: undefined + values: [BigNumberish[], BigNumberish[], StateConfigStruct, BoundsStruct] ): string; + encodeFunctionData(functionFragment: "stackPops", values?: undefined): string; encodeFunctionData( - functionFragment: "stackPushesFnPtrs", + functionFragment: "stackPushes", values?: undefined ): string; @@ -90,13 +79,9 @@ export interface AllStandardOpsStateBuilderInterface extends utils.Interface { functionFragment: "ensureIntegrity", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "ptrSource", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "stackPops", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "stackPopsFnPtrs", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stackPushesFnPtrs", + functionFragment: "stackPushes", data: BytesLike ): Result; @@ -138,20 +123,16 @@ export interface AllStandardOpsStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise<[void]>; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise<[string]>; + stackPops(overrides?: CallOverrides): Promise<[BigNumber[]]>; - stackPushesFnPtrs(overrides?: CallOverrides): Promise<[string]>; + stackPushes(overrides?: CallOverrides): Promise<[BigNumber[]]>; }; buildState( @@ -162,20 +143,16 @@ export interface AllStandardOpsStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; callStatic: { buildState( @@ -186,20 +163,16 @@ export interface AllStandardOpsStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; filters: {}; @@ -213,20 +186,16 @@ export interface AllStandardOpsStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; populateTransaction: { @@ -238,19 +207,15 @@ export interface AllStandardOpsStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; } diff --git a/src/typechain/AllStandardOpsTest.ts b/src/typechain/AllStandardOpsTest.ts index a072586..44c9db6 100644 --- a/src/typechain/AllStandardOpsTest.ts +++ b/src/typechain/AllStandardOpsTest.ts @@ -61,8 +61,8 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface AllStandardOpsTestInterface extends utils.Interface { functions: { - "fnPtrs()": FunctionFragment; "initialize((bytes[],uint256[]))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "run()": FunctionFragment; "runContext(uint256[])": FunctionFragment; "stack()": FunctionFragment; @@ -71,11 +71,14 @@ export interface AllStandardOpsTestInterface extends utils.Interface { "storageOpcodesRange()": FunctionFragment; }; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", values: [StateConfigStruct] ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData(functionFragment: "run", values?: undefined): string; encodeFunctionData( functionFragment: "runContext", @@ -89,8 +92,11 @@ export interface AllStandardOpsTestInterface extends utils.Interface { values?: undefined ): string; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "run", data: BytesLike): Result; decodeFunctionResult(functionFragment: "runContext", data: BytesLike): Result; decodeFunctionResult(functionFragment: "stack", data: BytesLike): Result; @@ -131,19 +137,21 @@ export interface AllStandardOpsTest extends BaseContract { removeListener: OnEvent; functions: { - fnPtrs(overrides?: CallOverrides): Promise<[string]>; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + run( overrides?: Overrides & { from?: string | Promise } ): Promise; runContext( - values_: BigNumberish[], + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -158,19 +166,19 @@ export interface AllStandardOpsTest extends BaseContract { ): Promise<[StorageOpcodesRangeStructOutput]>; }; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + run( overrides?: Overrides & { from?: string | Promise } ): Promise; runContext( - values_: BigNumberish[], + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -185,17 +193,17 @@ export interface AllStandardOpsTest extends BaseContract { ): Promise; callStatic: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: CallOverrides ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + run(overrides?: CallOverrides): Promise; runContext( - values_: BigNumberish[], + context_: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -213,19 +221,19 @@ export interface AllStandardOpsTest extends BaseContract { filters: {}; estimateGas: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + run( overrides?: Overrides & { from?: string | Promise } ): Promise; runContext( - values_: BigNumberish[], + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -239,19 +247,21 @@ export interface AllStandardOpsTest extends BaseContract { }; populateTransaction: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + run( overrides?: Overrides & { from?: string | Promise } ): Promise; runContext( - values_: BigNumberish[], + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/AutoApprove.ts b/src/typechain/AutoApprove.ts new file mode 100644 index 0000000..250101c --- /dev/null +++ b/src/typechain/AutoApprove.ts @@ -0,0 +1,441 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type EvidenceStruct = { account: string; data: BytesLike }; + +export type EvidenceStructOutput = [string, string] & { + account: string; + data: string; +}; + +export type StorageOpcodesRangeStruct = { + pointer: BigNumberish; + length: BigNumberish; +}; + +export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { + pointer: BigNumber; + length: BigNumber; +}; + +export interface AutoApproveInterface extends utils.Interface { + functions: { + "afterAdd(address,(address,bytes)[])": FunctionFragment; + "afterApprove(address,(address,bytes)[])": FunctionFragment; + "afterBan(address,(address,bytes)[])": FunctionFragment; + "afterRemove(address,(address,bytes)[])": FunctionFragment; + "initialize((bytes[],uint256[]))": FunctionFragment; + "owner()": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "storageOpcodesRange()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "afterAdd", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "afterApprove", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "afterBan", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "afterRemove", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "initialize", + values: [StateConfigStruct] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "storageOpcodesRange", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult(functionFragment: "afterAdd", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "afterApprove", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "afterBan", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "afterRemove", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "storageOpcodesRange", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "Initialize(address,tuple)": EventFragment; + "Initialized(uint8)": EventFragment; + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export type InitializeEvent = TypedEvent< + [string, StateConfigStructOutput], + { sender: string; config: StateConfigStructOutput } +>; + +export type InitializeEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface AutoApprove extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AutoApproveInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + afterAdd( + arg0: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise<[StorageOpcodesRangeStructOutput]>; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + afterAdd( + arg0: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + afterAdd( + arg0: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Initialize(address,tuple)"( + sender?: null, + config?: null + ): InitializeEventFilter; + Initialize(sender?: null, config?: null): InitializeEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + afterAdd( + arg0: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + packedFunctionPointers(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + afterAdd( + arg0: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + initialize( + stateConfig_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + storageOpcodesRange( + overrides?: CallOverrides + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/AutoApproveFactory.ts b/src/typechain/AutoApproveFactory.ts new file mode 100644 index 0000000..f1f2890 --- /dev/null +++ b/src/typechain/AutoApproveFactory.ts @@ -0,0 +1,190 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export interface AutoApproveFactoryInterface extends utils.Interface { + functions: { + "createChild(bytes)": FunctionFragment; + "createChildTyped((bytes[],uint256[]))": FunctionFragment; + "isChild(address)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "createChild", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "createChildTyped", + values: [StateConfigStruct] + ): string; + encodeFunctionData(functionFragment: "isChild", values: [string]): string; + + decodeFunctionResult( + functionFragment: "createChild", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createChildTyped", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; + + events: { + "Implementation(address,address)": EventFragment; + "NewChild(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; + getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; +} + +export type ImplementationEvent = TypedEvent< + [string, string], + { sender: string; implementation: string } +>; + +export type ImplementationEventFilter = TypedEventFilter; + +export type NewChildEvent = TypedEvent< + [string, string], + { sender: string; child: string } +>; + +export type NewChildEventFilter = TypedEventFilter; + +export interface AutoApproveFactory extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AutoApproveFactoryInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + config_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; + }; + + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + config_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise; + + callStatic: { + createChild(data_: BytesLike, overrides?: CallOverrides): Promise; + + createChildTyped( + config_: StateConfigStruct, + overrides?: CallOverrides + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise; + }; + + filters: { + "Implementation(address,address)"( + sender?: null, + implementation?: null + ): ImplementationEventFilter; + Implementation( + sender?: null, + implementation?: null + ): ImplementationEventFilter; + + "NewChild(address,address)"( + sender?: null, + child?: null + ): NewChildEventFilter; + NewChild(sender?: null, child?: null): NewChildEventFilter; + }; + + estimateGas: { + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + config_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + config_: StateConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild( + maybeChild_: string, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/AutoApproveStateBuilder.ts b/src/typechain/AutoApproveStateBuilder.ts new file mode 100644 index 0000000..3ab16d3 --- /dev/null +++ b/src/typechain/AutoApproveStateBuilder.ts @@ -0,0 +1,225 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type BoundsStruct = { + entrypoint: BigNumberish; + minFinalStackIndex: BigNumberish; + stackIndex: BigNumberish; + stackLength: BigNumberish; + argumentsLength: BigNumberish; + storageLength: BigNumberish; +}; + +export type BoundsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + entrypoint: BigNumber; + minFinalStackIndex: BigNumber; + stackIndex: BigNumber; + stackLength: BigNumber; + argumentsLength: BigNumber; + storageLength: BigNumber; +}; + +export interface AutoApproveStateBuilderInterface extends utils.Interface { + functions: { + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity(uint256[],uint256[],(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "stackPops()": FunctionFragment; + "stackPushes()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "buildState", + values: [string, StateConfigStruct, BoundsStruct[]] + ): string; + encodeFunctionData( + functionFragment: "ensureIntegrity", + values: [BigNumberish[], BigNumberish[], StateConfigStruct, BoundsStruct] + ): string; + encodeFunctionData(functionFragment: "stackPops", values?: undefined): string; + encodeFunctionData( + functionFragment: "stackPushes", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "buildState", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ensureIntegrity", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "stackPops", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stackPushes", + data: BytesLike + ): Result; + + events: {}; +} + +export interface AutoApproveStateBuilder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AutoApproveStateBuilderInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + stackPops( + overrides?: CallOverrides + ): Promise<[BigNumber[]] & { pops_: BigNumber[] }>; + + stackPushes( + overrides?: CallOverrides + ): Promise<[BigNumber[]] & { pushes_: BigNumber[] }>; + }; + + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + + callStatic: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: CallOverrides + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/CombineTier.ts b/src/typechain/CombineTier.ts index 8751b7e..75e3492 100644 --- a/src/typechain/CombineTier.ts +++ b/src/typechain/CombineTier.ts @@ -49,19 +49,22 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface CombineTierInterface extends utils.Interface { functions: { - "fnPtrs()": FunctionFragment; "initialize((uint256,(bytes[],uint256[])))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "report(address,uint256[])": FunctionFragment; "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "storageOpcodesRange()": FunctionFragment; "supportsInterface(bytes4)": FunctionFragment; }; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", values: [CombineTierConfigStruct] ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "report", values: [string, BigNumberish[]] @@ -79,8 +82,11 @@ export interface CombineTierInterface extends utils.Interface { values: [BytesLike] ): string; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult( functionFragment: "reportTimeForTier", @@ -142,13 +148,15 @@ export interface CombineTier extends BaseContract { removeListener: OnEvent; functions: { - fnPtrs(overrides?: CallOverrides): Promise<[string]>; - initialize( config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + report( account_: string, context_: BigNumberish[], @@ -172,13 +180,13 @@ export interface CombineTier extends BaseContract { ): Promise<[boolean]>; }; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + report( account_: string, context_: BigNumberish[], @@ -202,13 +210,13 @@ export interface CombineTier extends BaseContract { ): Promise; callStatic: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: CombineTierConfigStruct, overrides?: CallOverrides ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + report( account_: string, context_: BigNumberish[], @@ -244,13 +252,13 @@ export interface CombineTier extends BaseContract { }; estimateGas: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + report( account_: string, context_: BigNumberish[], @@ -273,13 +281,15 @@ export interface CombineTier extends BaseContract { }; populateTransaction: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: CombineTierConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + report( account_: string, context_: BigNumberish[], diff --git a/src/typechain/EmissionsERC20.ts b/src/typechain/EmissionsERC20.ts index 4753ddd..5e2e6d5 100644 --- a/src/typechain/EmissionsERC20.ts +++ b/src/typechain/EmissionsERC20.ts @@ -77,10 +77,10 @@ export interface EmissionsERC20Interface extends utils.Interface { "claim(address,bytes)": FunctionFragment; "decimals()": FunctionFragment; "decreaseAllowance(address,uint256)": FunctionFragment; - "fnPtrs()": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; "initialize((bool,(string,string,address,uint256),(bytes[],uint256[])))": FunctionFragment; "name()": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "report(address,uint256[])": FunctionFragment; "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; "storageOpcodesRange()": FunctionFragment; @@ -117,7 +117,6 @@ export interface EmissionsERC20Interface extends utils.Interface { functionFragment: "decreaseAllowance", values: [string, BigNumberish] ): string; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "increaseAllowance", values: [string, BigNumberish] @@ -127,6 +126,10 @@ export interface EmissionsERC20Interface extends utils.Interface { values: [EmissionsERC20ConfigStruct] ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "report", values: [string, BigNumberish[]] @@ -174,13 +177,16 @@ export interface EmissionsERC20Interface extends utils.Interface { functionFragment: "decreaseAllowance", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult( functionFragment: "increaseAllowance", data: BytesLike ): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "report", data: BytesLike): Result; decodeFunctionResult( functionFragment: "reportTimeForTier", @@ -314,8 +320,6 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise<[string]>; - increaseAllowance( spender: string, addedValue: BigNumberish, @@ -329,6 +333,10 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise<[string]>; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + report( account_: string, arg1: BigNumberish[], @@ -404,8 +412,6 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - increaseAllowance( spender: string, addedValue: BigNumberish, @@ -419,6 +425,8 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + report( account_: string, arg1: BigNumberish[], @@ -494,8 +502,6 @@ export interface EmissionsERC20 extends BaseContract { overrides?: CallOverrides ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - increaseAllowance( spender: string, addedValue: BigNumberish, @@ -509,6 +515,8 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + report( account_: string, arg1: BigNumberish[], @@ -625,8 +633,6 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - increaseAllowance( spender: string, addedValue: BigNumberish, @@ -640,6 +646,8 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + report( account_: string, arg1: BigNumberish[], @@ -719,8 +727,6 @@ export interface EmissionsERC20 extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - increaseAllowance( spender: string, addedValue: BigNumberish, @@ -734,6 +740,10 @@ export interface EmissionsERC20 extends BaseContract { name(overrides?: CallOverrides): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + report( account_: string, arg1: BigNumberish[], diff --git a/src/typechain/FactoryChildTest.ts b/src/typechain/FactoryChildTest.ts new file mode 100644 index 0000000..a7a7f76 --- /dev/null +++ b/src/typechain/FactoryChildTest.ts @@ -0,0 +1,127 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface FactoryChildTestInterface extends utils.Interface { + functions: { + "initialize(uint256)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "initialize", + values: [BigNumberish] + ): string; + + decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + + events: { + "Construct(address)": EventFragment; + "Initialize(address,uint256)": EventFragment; + "Initialized(uint8)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Construct"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialize"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; +} + +export type ConstructEvent = TypedEvent<[string], { sender: string }>; + +export type ConstructEventFilter = TypedEventFilter; + +export type InitializeEvent = TypedEvent< + [string, BigNumber], + { sender: string; value: BigNumber } +>; + +export type InitializeEventFilter = TypedEventFilter; + +export type InitializedEvent = TypedEvent<[number], { version: number }>; + +export type InitializedEventFilter = TypedEventFilter; + +export interface FactoryChildTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FactoryChildTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + initialize( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + initialize( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + initialize(value_: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + "Construct(address)"(sender?: null): ConstructEventFilter; + Construct(sender?: null): ConstructEventFilter; + + "Initialize(address,uint256)"( + sender?: null, + value?: null + ): InitializeEventFilter; + Initialize(sender?: null, value?: null): InitializeEventFilter; + + "Initialized(uint8)"(version?: null): InitializedEventFilter; + Initialized(version?: null): InitializedEventFilter; + }; + + estimateGas: { + initialize( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + initialize( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/FactoryCurator.ts b/src/typechain/FactoryCurator.ts new file mode 100644 index 0000000..81e740b --- /dev/null +++ b/src/typechain/FactoryCurator.ts @@ -0,0 +1,203 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type CurationFeeConfigStruct = { token: string; amount: BigNumberish }; + +export type CurationFeeConfigStructOutput = [string, BigNumber] & { + token: string; + amount: BigNumber; +}; + +export type CurationTierConfigStruct = { + tierContract: string; + minimumTier: BigNumberish; + context: BigNumberish[]; +}; + +export type CurationTierConfigStructOutput = [ + string, + BigNumber, + BigNumber[] +] & { tierContract: string; minimumTier: BigNumber; context: BigNumber[] }; + +export type CurationConfigStruct = { + factory: string; + curator: string; + feeConfig: CurationFeeConfigStruct; + tierConfig: CurationTierConfigStruct; +}; + +export type CurationConfigStructOutput = [ + string, + string, + CurationFeeConfigStructOutput, + CurationTierConfigStructOutput +] & { + factory: string; + curator: string; + feeConfig: CurationFeeConfigStructOutput; + tierConfig: CurationTierConfigStructOutput; +}; + +export interface FactoryCuratorInterface extends utils.Interface { + functions: { + "createChild(uint256,(address,address,(address,uint256),(address,uint256,uint256[])),bytes)": FunctionFragment; + "registerConfig((address,address,(address,uint256),(address,uint256,uint256[])))": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "createChild", + values: [BigNumberish, CurationConfigStruct, BytesLike] + ): string; + encodeFunctionData( + functionFragment: "registerConfig", + values: [CurationConfigStruct] + ): string; + + decodeFunctionResult( + functionFragment: "createChild", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "registerConfig", + data: BytesLike + ): Result; + + events: { + "RegisterCuration(address,uint256,tuple)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "RegisterCuration"): EventFragment; +} + +export type RegisterCurationEvent = TypedEvent< + [string, BigNumber, CurationConfigStructOutput], + { sender: string; id: BigNumber; config: CurationConfigStructOutput } +>; + +export type RegisterCurationEventFilter = + TypedEventFilter; + +export interface FactoryCurator extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FactoryCuratorInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createChild( + id_: BigNumberish, + config_: CurationConfigStruct, + createChild_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + registerConfig( + config_: CurationConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + createChild( + id_: BigNumberish, + config_: CurationConfigStruct, + createChild_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + registerConfig( + config_: CurationConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + createChild( + id_: BigNumberish, + config_: CurationConfigStruct, + createChild_: BytesLike, + overrides?: CallOverrides + ): Promise; + + registerConfig( + config_: CurationConfigStruct, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "RegisterCuration(address,uint256,tuple)"( + sender?: null, + id?: null, + config?: null + ): RegisterCurationEventFilter; + RegisterCuration( + sender?: null, + id?: null, + config?: null + ): RegisterCurationEventFilter; + }; + + estimateGas: { + createChild( + id_: BigNumberish, + config_: CurationConfigStruct, + createChild_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + registerConfig( + config_: CurationConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + createChild( + id_: BigNumberish, + config_: CurationConfigStruct, + createChild_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + registerConfig( + config_: CurationConfigStruct, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/FactoryTest.ts b/src/typechain/FactoryTest.ts new file mode 100644 index 0000000..a44c301 --- /dev/null +++ b/src/typechain/FactoryTest.ts @@ -0,0 +1,180 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface FactoryTestInterface extends utils.Interface { + functions: { + "createChild(bytes)": FunctionFragment; + "createChildTyped(uint256)": FunctionFragment; + "isChild(address)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "createChild", + values: [BytesLike] + ): string; + encodeFunctionData( + functionFragment: "createChildTyped", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "isChild", values: [string]): string; + + decodeFunctionResult( + functionFragment: "createChild", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "createChildTyped", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "isChild", data: BytesLike): Result; + + events: { + "Implementation(address,address)": EventFragment; + "NewChild(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Implementation"): EventFragment; + getEvent(nameOrSignatureOrTopic: "NewChild"): EventFragment; +} + +export type ImplementationEvent = TypedEvent< + [string, string], + { sender: string; implementation: string } +>; + +export type ImplementationEventFilter = TypedEventFilter; + +export type NewChildEvent = TypedEvent< + [string, string], + { sender: string; child: string } +>; + +export type NewChildEventFilter = TypedEventFilter; + +export interface FactoryTest extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: FactoryTestInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise<[boolean]>; + }; + + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise; + + callStatic: { + createChild(data_: BytesLike, overrides?: CallOverrides): Promise; + + createChildTyped( + value_: BigNumberish, + overrides?: CallOverrides + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise; + }; + + filters: { + "Implementation(address,address)"( + sender?: null, + implementation?: null + ): ImplementationEventFilter; + Implementation( + sender?: null, + implementation?: null + ): ImplementationEventFilter; + + "NewChild(address,address)"( + sender?: null, + child?: null + ): NewChildEventFilter; + NewChild(sender?: null, child?: null): NewChildEventFilter; + }; + + estimateGas: { + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild(maybeChild_: string, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + createChild( + data_: BytesLike, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + createChildTyped( + value_: BigNumberish, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + isChild( + maybeChild_: string, + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/src/typechain/LibCommitmentTest.ts b/src/typechain/LibCommitmentTest.ts index 69dd339..78bdf85 100644 --- a/src/typechain/LibCommitmentTest.ts +++ b/src/typechain/LibCommitmentTest.ts @@ -19,7 +19,7 @@ export interface LibCommitmentTestInterface extends utils.Interface { functions: { "eq(uint256,uint256)": FunctionFragment; "fromSecret(uint256)": FunctionFragment; - "zero()": FunctionFragment; + "nil()": FunctionFragment; }; encodeFunctionData( @@ -30,11 +30,11 @@ export interface LibCommitmentTestInterface extends utils.Interface { functionFragment: "fromSecret", values: [BigNumberish] ): string; - encodeFunctionData(functionFragment: "zero", values?: undefined): string; + encodeFunctionData(functionFragment: "nil", values?: undefined): string; decodeFunctionResult(functionFragment: "eq", data: BytesLike): Result; decodeFunctionResult(functionFragment: "fromSecret", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "zero", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "nil", data: BytesLike): Result; events: {}; } @@ -77,9 +77,7 @@ export interface LibCommitmentTest extends BaseContract { overrides?: CallOverrides ): Promise<[BigNumber] & { commitment_: BigNumber }>; - zero( - overrides?: CallOverrides - ): Promise<[BigNumber] & { zero_: BigNumber }>; + nil(overrides?: CallOverrides): Promise<[BigNumber] & { nil_: BigNumber }>; }; eq( @@ -93,7 +91,7 @@ export interface LibCommitmentTest extends BaseContract { overrides?: CallOverrides ): Promise; - zero(overrides?: CallOverrides): Promise; + nil(overrides?: CallOverrides): Promise; callStatic: { eq( @@ -107,7 +105,7 @@ export interface LibCommitmentTest extends BaseContract { overrides?: CallOverrides ): Promise; - zero(overrides?: CallOverrides): Promise; + nil(overrides?: CallOverrides): Promise; }; filters: {}; @@ -124,7 +122,7 @@ export interface LibCommitmentTest extends BaseContract { overrides?: CallOverrides ): Promise; - zero(overrides?: CallOverrides): Promise; + nil(overrides?: CallOverrides): Promise; }; populateTransaction: { @@ -139,6 +137,6 @@ export interface LibCommitmentTest extends BaseContract { overrides?: CallOverrides ): Promise; - zero(overrides?: CallOverrides): Promise; + nil(overrides?: CallOverrides): Promise; }; } diff --git a/src/typechain/OrderBook.ts b/src/typechain/OrderBook.ts index b1af4ed..a0b844f 100644 --- a/src/typechain/OrderBook.ts +++ b/src/typechain/OrderBook.ts @@ -36,42 +36,58 @@ export type ClearStateChangeStructOutput = [ bInput: BigNumber; }; +export type IOStruct = { token: string; vaultId: BigNumberish }; + +export type IOStructOutput = [string, BigNumber] & { + token: string; + vaultId: BigNumber; +}; + export type OrderStruct = { owner: string; - inputToken: string; - inputVaultId: BigNumberish; - outputToken: string; - outputVaultId: BigNumberish; + validInputs: IOStruct[]; + validOutputs: IOStruct[]; tracking: BigNumberish; vmState: BytesLike; }; export type OrderStructOutput = [ string, - string, - BigNumber, - string, - BigNumber, + IOStructOutput[], + IOStructOutput[], BigNumber, string ] & { owner: string; - inputToken: string; - inputVaultId: BigNumber; - outputToken: string; - outputVaultId: BigNumber; + validInputs: IOStructOutput[]; + validOutputs: IOStructOutput[]; tracking: BigNumber; vmState: string; }; -export type BountyConfigStruct = { - aVaultId: BigNumberish; - bVaultId: BigNumberish; +export type ClearConfigStruct = { + aInputIndex: BigNumberish; + aOutputIndex: BigNumberish; + bInputIndex: BigNumberish; + bOutputIndex: BigNumberish; + aBountyVaultId: BigNumberish; + bBountyVaultId: BigNumberish; }; -export type BountyConfigStructOutput = [BigNumber, BigNumber] & { - aVaultId: BigNumber; - bVaultId: BigNumber; +export type ClearConfigStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + aInputIndex: BigNumber; + aOutputIndex: BigNumber; + bInputIndex: BigNumber; + bOutputIndex: BigNumber; + aBountyVaultId: BigNumber; + bBountyVaultId: BigNumber; }; export type DepositConfigStruct = { @@ -109,24 +125,18 @@ export type StateConfigStructOutput = [string[], BigNumber[]] & { }; export type OrderConfigStruct = { - inputToken: string; - inputVaultId: BigNumberish; - outputToken: string; - outputVaultId: BigNumberish; + validInputs: IOStruct[]; + validOutputs: IOStruct[]; vmStateConfig: StateConfigStruct; }; export type OrderConfigStructOutput = [ - string, - BigNumber, - string, - BigNumber, + IOStructOutput[], + IOStructOutput[], StateConfigStructOutput ] & { - inputToken: string; - inputVaultId: BigNumber; - outputToken: string; - outputVaultId: BigNumber; + validInputs: IOStructOutput[]; + validOutputs: IOStructOutput[]; vmStateConfig: StateConfigStructOutput; }; @@ -142,11 +152,11 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface OrderBookInterface extends utils.Interface { functions: { - "addOrder((address,uint256,address,uint256,(bytes[],uint256[])))": FunctionFragment; - "clear((address,address,uint256,address,uint256,uint256,bytes),(address,address,uint256,address,uint256,uint256,bytes),(uint256,uint256))": FunctionFragment; + "addOrder(((address,uint256)[],(address,uint256)[],(bytes[],uint256[])))": FunctionFragment; + "clear((address,(address,uint256)[],(address,uint256)[],uint256,bytes),(address,(address,uint256)[],(address,uint256)[],uint256,bytes),(uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; "deposit((address,uint256,uint256))": FunctionFragment; - "fnPtrs()": FunctionFragment; - "removeOrder((address,address,uint256,address,uint256,uint256,bytes))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; + "removeOrder((address,(address,uint256)[],(address,uint256)[],uint256,bytes))": FunctionFragment; "storageOpcodesRange()": FunctionFragment; "withdraw((address,uint256,uint256))": FunctionFragment; }; @@ -157,13 +167,16 @@ export interface OrderBookInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "clear", - values: [OrderStruct, OrderStruct, BountyConfigStruct] + values: [OrderStruct, OrderStruct, ClearConfigStruct] ): string; encodeFunctionData( functionFragment: "deposit", values: [DepositConfigStruct] ): string; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "removeOrder", values: [OrderStruct] @@ -180,7 +193,10 @@ export interface OrderBookInterface extends utils.Interface { decodeFunctionResult(functionFragment: "addOrder", data: BytesLike): Result; decodeFunctionResult(functionFragment: "clear", data: BytesLike): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "removeOrder", data: BytesLike @@ -216,12 +232,12 @@ export type AfterClearEvent = TypedEvent< export type AfterClearEventFilter = TypedEventFilter; export type ClearEvent = TypedEvent< - [string, OrderStructOutput, OrderStructOutput, BountyConfigStructOutput], + [string, OrderStructOutput, OrderStructOutput, ClearConfigStructOutput], { sender: string; a_: OrderStructOutput; b_: OrderStructOutput; - bountyConfig: BountyConfigStructOutput; + clearConfig: ClearConfigStructOutput; } >; @@ -290,7 +306,7 @@ export interface OrderBook extends BaseContract { clear( a_: OrderStruct, b_: OrderStruct, - bountyConfig_: BountyConfigStruct, + clearConfig_: ClearConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -299,7 +315,9 @@ export interface OrderBook extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise<[string]>; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; removeOrder( order_: OrderStruct, @@ -324,7 +342,7 @@ export interface OrderBook extends BaseContract { clear( a_: OrderStruct, b_: OrderStruct, - bountyConfig_: BountyConfigStruct, + clearConfig_: ClearConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -333,7 +351,7 @@ export interface OrderBook extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; removeOrder( order_: OrderStruct, @@ -358,7 +376,7 @@ export interface OrderBook extends BaseContract { clear( a_: OrderStruct, b_: OrderStruct, - bountyConfig_: BountyConfigStruct, + clearConfig_: ClearConfigStruct, overrides?: CallOverrides ): Promise; @@ -367,7 +385,7 @@ export interface OrderBook extends BaseContract { overrides?: CallOverrides ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; removeOrder(order_: OrderStruct, overrides?: CallOverrides): Promise; @@ -389,13 +407,13 @@ export interface OrderBook extends BaseContract { sender?: null, a_?: null, b_?: null, - bountyConfig?: null + clearConfig?: null ): ClearEventFilter; Clear( sender?: null, a_?: null, b_?: null, - bountyConfig?: null + clearConfig?: null ): ClearEventFilter; "Deposit(address,tuple)"(sender?: null, config?: null): DepositEventFilter; @@ -430,7 +448,7 @@ export interface OrderBook extends BaseContract { clear( a_: OrderStruct, b_: OrderStruct, - bountyConfig_: BountyConfigStruct, + clearConfig_: ClearConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -439,7 +457,7 @@ export interface OrderBook extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; removeOrder( order_: OrderStruct, @@ -463,7 +481,7 @@ export interface OrderBook extends BaseContract { clear( a_: OrderStruct, b_: OrderStruct, - bountyConfig_: BountyConfigStruct, + clearConfig_: ClearConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -472,7 +490,9 @@ export interface OrderBook extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; removeOrder( order_: OrderStruct, diff --git a/src/typechain/OrderBookStateBuilder.ts b/src/typechain/OrderBookStateBuilder.ts index fd67549..4191aee 100644 --- a/src/typechain/OrderBookStateBuilder.ts +++ b/src/typechain/OrderBookStateBuilder.ts @@ -34,7 +34,6 @@ export type BoundsStruct = { stackLength: BigNumberish; argumentsLength: BigNumberish; storageLength: BigNumberish; - opcodesLength: BigNumberish; }; export type BoundsStructOutput = [ @@ -43,7 +42,6 @@ export type BoundsStructOutput = [ BigNumber, BigNumber, BigNumber, - BigNumber, BigNumber ] & { entrypoint: BigNumber; @@ -52,16 +50,14 @@ export type BoundsStructOutput = [ stackLength: BigNumber; argumentsLength: BigNumber; storageLength: BigNumber; - opcodesLength: BigNumber; }; export interface OrderBookStateBuilderInterface extends utils.Interface { functions: { - "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; - "ensureIntegrity((bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; - "ptrSource(bytes,bytes)": FunctionFragment; - "stackPopsFnPtrs()": FunctionFragment; - "stackPushesFnPtrs()": FunctionFragment; + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity(uint256[],uint256[],(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "stackPops()": FunctionFragment; + "stackPushes()": FunctionFragment; }; encodeFunctionData( @@ -70,18 +66,11 @@ export interface OrderBookStateBuilderInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "ensureIntegrity", - values: [StateConfigStruct, BoundsStruct] - ): string; - encodeFunctionData( - functionFragment: "ptrSource", - values: [BytesLike, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "stackPopsFnPtrs", - values?: undefined + values: [BigNumberish[], BigNumberish[], StateConfigStruct, BoundsStruct] ): string; + encodeFunctionData(functionFragment: "stackPops", values?: undefined): string; encodeFunctionData( - functionFragment: "stackPushesFnPtrs", + functionFragment: "stackPushes", values?: undefined ): string; @@ -90,13 +79,9 @@ export interface OrderBookStateBuilderInterface extends utils.Interface { functionFragment: "ensureIntegrity", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "ptrSource", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "stackPops", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "stackPopsFnPtrs", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stackPushesFnPtrs", + functionFragment: "stackPushes", data: BytesLike ): Result; @@ -138,20 +123,20 @@ export interface OrderBookStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise<[void]>; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, + stackPops( overrides?: CallOverrides - ): Promise<[string]>; + ): Promise<[BigNumber[]] & { pops_: BigNumber[] }>; - stackPopsFnPtrs(overrides?: CallOverrides): Promise<[string]>; - - stackPushesFnPtrs(overrides?: CallOverrides): Promise<[string]>; + stackPushes( + overrides?: CallOverrides + ): Promise<[BigNumber[]] & { pushes_: BigNumber[] }>; }; buildState( @@ -162,20 +147,16 @@ export interface OrderBookStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; callStatic: { buildState( @@ -186,20 +167,16 @@ export interface OrderBookStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; filters: {}; @@ -213,20 +190,16 @@ export interface OrderBookStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; populateTransaction: { @@ -238,19 +211,15 @@ export interface OrderBookStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; } diff --git a/src/typechain/Ownable.ts b/src/typechain/Ownable.ts new file mode 100644 index 0000000..fa9fd6b --- /dev/null +++ b/src/typechain/Ownable.ts @@ -0,0 +1,158 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface OwnableInterface extends utils.Interface { + functions: { + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface Ownable extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: OwnableInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/RainVM.ts b/src/typechain/RainVM.ts index 8cfc496..16db226 100644 --- a/src/typechain/RainVM.ts +++ b/src/typechain/RainVM.ts @@ -27,17 +27,23 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface RainVMInterface extends utils.Interface { functions: { - "fnPtrs()": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "storageOpcodesRange()": FunctionFragment; }; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "storageOpcodesRange", values?: undefined ): string; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "storageOpcodesRange", data: BytesLike @@ -73,21 +79,23 @@ export interface RainVM extends BaseContract { removeListener: OnEvent; functions: { - fnPtrs(overrides?: CallOverrides): Promise<[string]>; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; storageOpcodesRange( overrides?: CallOverrides ): Promise<[StorageOpcodesRangeStructOutput]>; }; - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; callStatic: { - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; storageOpcodesRange( overrides?: CallOverrides @@ -97,13 +105,15 @@ export interface RainVM extends BaseContract { filters: {}; estimateGas: { - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; storageOpcodesRange(overrides?: CallOverrides): Promise; }; populateTransaction: { - fnPtrs(overrides?: CallOverrides): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; storageOpcodesRange( overrides?: CallOverrides diff --git a/src/typechain/ReadWriteTier.ts b/src/typechain/ReadWriteTier.ts index f5d5a53..41dfd45 100644 --- a/src/typechain/ReadWriteTier.ts +++ b/src/typechain/ReadWriteTier.ts @@ -21,7 +21,7 @@ export interface ReadWriteTierInterface extends utils.Interface { functions: { "report(address,uint256[])": FunctionFragment; "reportTimeForTier(address,uint256,uint256[])": FunctionFragment; - "setTier(address,uint256,bytes)": FunctionFragment; + "setTier(address,uint256,uint256[])": FunctionFragment; "supportsInterface(bytes4)": FunctionFragment; "tierAtTimeFromReport(uint256,uint256)": FunctionFragment; "truncateTiersAbove(uint256,uint256)": FunctionFragment; @@ -40,7 +40,7 @@ export interface ReadWriteTierInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "setTier", - values: [string, BigNumberish, BytesLike] + values: [string, BigNumberish, BigNumberish[]] ): string; encodeFunctionData( functionFragment: "supportsInterface", @@ -99,20 +99,20 @@ export interface ReadWriteTierInterface extends utils.Interface { ): Result; events: { - "TierChange(address,address,uint256,uint256,bytes)": EventFragment; + "TierChange(address,address,uint256,uint256,uint256[])": EventFragment; }; getEvent(nameOrSignatureOrTopic: "TierChange"): EventFragment; } export type TierChangeEvent = TypedEvent< - [string, string, BigNumber, BigNumber, string], + [string, string, BigNumber, BigNumber, BigNumber[]], { sender: string; account: string; startTier: BigNumber; endTier: BigNumber; - data: string; + context: BigNumber[]; } >; @@ -154,7 +154,7 @@ export interface ReadWriteTier extends BaseContract { "reportTimeForTier(address,uint256,uint256[])"( account_: string, tier_: BigNumberish, - arg2: BigNumberish[], + context_: BigNumberish[], overrides?: CallOverrides ): Promise<[BigNumber]>; @@ -167,7 +167,7 @@ export interface ReadWriteTier extends BaseContract { setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -221,7 +221,7 @@ export interface ReadWriteTier extends BaseContract { "reportTimeForTier(address,uint256,uint256[])"( account_: string, tier_: BigNumberish, - arg2: BigNumberish[], + context_: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -234,7 +234,7 @@ export interface ReadWriteTier extends BaseContract { setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -288,7 +288,7 @@ export interface ReadWriteTier extends BaseContract { "reportTimeForTier(address,uint256,uint256[])"( account_: string, tier_: BigNumberish, - arg2: BigNumberish[], + context_: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -301,7 +301,7 @@ export interface ReadWriteTier extends BaseContract { setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -347,19 +347,19 @@ export interface ReadWriteTier extends BaseContract { }; filters: { - "TierChange(address,address,uint256,uint256,bytes)"( + "TierChange(address,address,uint256,uint256,uint256[])"( sender?: null, account?: null, startTier?: null, endTier?: null, - data?: null + context?: null ): TierChangeEventFilter; TierChange( sender?: null, account?: null, startTier?: null, endTier?: null, - data?: null + context?: null ): TierChangeEventFilter; }; @@ -373,7 +373,7 @@ export interface ReadWriteTier extends BaseContract { "reportTimeForTier(address,uint256,uint256[])"( account_: string, tier_: BigNumberish, - arg2: BigNumberish[], + context_: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -386,7 +386,7 @@ export interface ReadWriteTier extends BaseContract { setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -441,7 +441,7 @@ export interface ReadWriteTier extends BaseContract { "reportTimeForTier(address,uint256,uint256[])"( account_: string, tier_: BigNumberish, - arg2: BigNumberish[], + context_: BigNumberish[], overrides?: CallOverrides ): Promise; @@ -454,7 +454,7 @@ export interface ReadWriteTier extends BaseContract { setTier( account_: string, endTier_: BigNumberish, - data_: BytesLike, + context_: BigNumberish[], overrides?: Overrides & { from?: string | Promise } ): Promise; diff --git a/src/typechain/ReportOMeter.ts b/src/typechain/ReportOMeter.ts new file mode 100644 index 0000000..3b9a896 --- /dev/null +++ b/src/typechain/ReportOMeter.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export interface ReportOMeterInterface extends utils.Interface { + functions: { + "gaugeReport(address,address,uint256[])": FunctionFragment; + "gaugeReportTimeForTier(address,address,uint256,uint256[])": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "gaugeReport", + values: [string, string, BigNumberish[]] + ): string; + encodeFunctionData( + functionFragment: "gaugeReportTimeForTier", + values: [string, string, BigNumberish, BigNumberish[]] + ): string; + + decodeFunctionResult( + functionFragment: "gaugeReport", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gaugeReportTimeForTier", + data: BytesLike + ): Result; + + events: { + "Report(uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Report"): EventFragment; +} + +export type ReportEvent = TypedEvent<[BigNumber], { report: BigNumber }>; + +export type ReportEventFilter = TypedEventFilter; + +export interface ReportOMeter extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ReportOMeterInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Report(uint256)"(report?: null): ReportEventFilter; + Report(report?: null): ReportEventFilter; + }; + + estimateGas: { + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + gaugeReport( + tierContract_: string, + account_: string, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + gaugeReportTimeForTier( + tierContract_: string, + account_: string, + tier_: BigNumberish, + context_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/Sale.ts b/src/typechain/Sale.ts index 6e80f6e..5cdccf8 100644 --- a/src/typechain/Sale.ts +++ b/src/typechain/Sale.ts @@ -168,8 +168,8 @@ export interface SaleInterface extends utils.Interface { "canLive()": FunctionFragment; "claimFees(address)": FunctionFragment; "end()": FunctionFragment; - "fnPtrs()": FunctionFragment; "initialize(((bytes[],uint256[]),address,address,uint256,uint256,uint256,uint256),((string,string,address,uint256),address,uint256,address))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "refund((uint256,address,uint256,uint256,uint256))": FunctionFragment; "reserve()": FunctionFragment; "saleStatus()": FunctionFragment; @@ -190,11 +190,14 @@ export interface SaleInterface extends utils.Interface { encodeFunctionData(functionFragment: "canLive", values?: undefined): string; encodeFunctionData(functionFragment: "claimFees", values: [string]): string; encodeFunctionData(functionFragment: "end", values?: undefined): string; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", values: [SaleConfigStruct, SaleRedeemableERC20ConfigStruct] ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "refund", values: [ReceiptStruct] @@ -220,8 +223,11 @@ export interface SaleInterface extends utils.Interface { decodeFunctionResult(functionFragment: "canLive", data: BytesLike): Result; decodeFunctionResult(functionFragment: "claimFees", data: BytesLike): Result; decodeFunctionResult(functionFragment: "end", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult(functionFragment: "refund", data: BytesLike): Result; decodeFunctionResult(functionFragment: "reserve", data: BytesLike): Result; decodeFunctionResult(functionFragment: "saleStatus", data: BytesLike): Result; @@ -373,14 +379,16 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise<[string]>; - initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -426,14 +434,14 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -471,14 +479,14 @@ export interface Sale extends BaseContract { end(overrides?: CallOverrides): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, overrides?: CallOverrides ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + refund(receipt_: ReceiptStruct, overrides?: CallOverrides): Promise; reserve(overrides?: CallOverrides): Promise; @@ -577,14 +585,14 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } @@ -629,14 +637,16 @@ export interface Sale extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( config_: SaleConfigStruct, saleRedeemableERC20Config_: SaleRedeemableERC20ConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + refund( receipt_: ReceiptStruct, overrides?: Overrides & { from?: string | Promise } diff --git a/src/typechain/StackHeightTest.ts b/src/typechain/StackHeightTest.ts index 2c8a4b1..75fbe4e 100644 --- a/src/typechain/StackHeightTest.ts +++ b/src/typechain/StackHeightTest.ts @@ -39,23 +39,29 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { export interface StackHeightTestInterface extends utils.Interface { functions: { - "fnPtrs()": FunctionFragment; "initialize((bytes[],uint256[]))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "storageOpcodesRange()": FunctionFragment; }; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( functionFragment: "initialize", values: [StateConfigStruct] ): string; + encodeFunctionData( + functionFragment: "packedFunctionPointers", + values?: undefined + ): string; encodeFunctionData( functionFragment: "storageOpcodesRange", values?: undefined ): string; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "storageOpcodesRange", data: BytesLike @@ -91,37 +97,39 @@ export interface StackHeightTest extends BaseContract { removeListener: OnEvent; functions: { - fnPtrs(overrides?: CallOverrides): Promise<[string]>; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; + storageOpcodesRange( overrides?: CallOverrides ): Promise<[StorageOpcodesRangeStructOutput]>; }; - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + storageOpcodesRange( overrides?: CallOverrides ): Promise; callStatic: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: CallOverrides ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + storageOpcodesRange( overrides?: CallOverrides ): Promise; @@ -130,24 +138,26 @@ export interface StackHeightTest extends BaseContract { filters: {}; estimateGas: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; + storageOpcodesRange(overrides?: CallOverrides): Promise; }; populateTransaction: { - fnPtrs(overrides?: CallOverrides): Promise; - initialize( stateConfig_: StateConfigStruct, overrides?: Overrides & { from?: string | Promise } ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise; + storageOpcodesRange( overrides?: CallOverrides ): Promise; diff --git a/src/typechain/Stake.ts b/src/typechain/Stake.ts index aafb860..9f945e2 100644 --- a/src/typechain/Stake.ts +++ b/src/typechain/Stake.ts @@ -39,6 +39,7 @@ export interface StakeInterface extends utils.Interface { "decimals()": FunctionFragment; "decreaseAllowance(address,uint256)": FunctionFragment; "deposit(uint256)": FunctionFragment; + "deposits(address,uint256)": FunctionFragment; "increaseAllowance(address,uint256)": FunctionFragment; "initialize((address,uint256,string,string))": FunctionFragment; "name()": FunctionFragment; @@ -70,6 +71,10 @@ export interface StakeInterface extends utils.Interface { functionFragment: "deposit", values: [BigNumberish] ): string; + encodeFunctionData( + functionFragment: "deposits", + values: [string, BigNumberish] + ): string; encodeFunctionData( functionFragment: "increaseAllowance", values: [string, BigNumberish] @@ -118,6 +123,7 @@ export interface StakeInterface extends utils.Interface { data: BytesLike ): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposits", data: BytesLike): Result; decodeFunctionResult( functionFragment: "increaseAllowance", data: BytesLike @@ -237,6 +243,12 @@ export interface Stake extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise<[number, BigNumber] & { timestamp: number; amount: BigNumber }>; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -318,6 +330,12 @@ export interface Stake extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise<[number, BigNumber] & { timestamp: number; amount: BigNumber }>; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -396,6 +414,12 @@ export interface Stake extends BaseContract { deposit(amount_: BigNumberish, overrides?: CallOverrides): Promise; + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise<[number, BigNumber] & { timestamp: number; amount: BigNumber }>; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -508,6 +532,12 @@ export interface Stake extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, @@ -593,6 +623,12 @@ export interface Stake extends BaseContract { overrides?: Overrides & { from?: string | Promise } ): Promise; + deposits( + arg0: string, + arg1: BigNumberish, + overrides?: CallOverrides + ): Promise; + increaseAllowance( spender: string, addedValue: BigNumberish, diff --git a/src/typechain/StandardStateBuilder.ts b/src/typechain/StandardStateBuilder.ts new file mode 100644 index 0000000..251c822 --- /dev/null +++ b/src/typechain/StandardStateBuilder.ts @@ -0,0 +1,225 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type StateConfigStruct = { + sources: BytesLike[]; + constants: BigNumberish[]; +}; + +export type StateConfigStructOutput = [string[], BigNumber[]] & { + sources: string[]; + constants: BigNumber[]; +}; + +export type BoundsStruct = { + entrypoint: BigNumberish; + minFinalStackIndex: BigNumberish; + stackIndex: BigNumberish; + stackLength: BigNumberish; + argumentsLength: BigNumberish; + storageLength: BigNumberish; +}; + +export type BoundsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber +] & { + entrypoint: BigNumber; + minFinalStackIndex: BigNumber; + stackIndex: BigNumber; + stackLength: BigNumber; + argumentsLength: BigNumber; + storageLength: BigNumber; +}; + +export interface StandardStateBuilderInterface extends utils.Interface { + functions: { + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity(uint256[],uint256[],(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "stackPops()": FunctionFragment; + "stackPushes()": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "buildState", + values: [string, StateConfigStruct, BoundsStruct[]] + ): string; + encodeFunctionData( + functionFragment: "ensureIntegrity", + values: [BigNumberish[], BigNumberish[], StateConfigStruct, BoundsStruct] + ): string; + encodeFunctionData(functionFragment: "stackPops", values?: undefined): string; + encodeFunctionData( + functionFragment: "stackPushes", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "buildState", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "ensureIntegrity", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "stackPops", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "stackPushes", + data: BytesLike + ): Result; + + events: {}; +} + +export interface StandardStateBuilder extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StandardStateBuilderInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise<[void]>; + + stackPops( + overrides?: CallOverrides + ): Promise<[BigNumber[]] & { pops_: BigNumber[] }>; + + stackPushes( + overrides?: CallOverrides + ): Promise<[BigNumber[]] & { pushes_: BigNumber[] }>; + }; + + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + + callStatic: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: CallOverrides + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + buildState( + vm_: string, + config_: StateConfigStruct, + boundss_: BoundsStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], + stateConfig_: StateConfigStruct, + bounds_: BoundsStruct, + overrides?: CallOverrides + ): Promise; + + stackPops(overrides?: CallOverrides): Promise; + + stackPushes(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/typechain/FnPtrsTest.ts b/src/typechain/StandardVM.ts similarity index 58% rename from src/typechain/FnPtrsTest.ts rename to src/typechain/StandardVM.ts index 3a01258..a93590e 100644 --- a/src/typechain/FnPtrsTest.ts +++ b/src/typechain/StandardVM.ts @@ -7,8 +7,6 @@ import { BigNumberish, BytesLike, CallOverrides, - ContractTransaction, - Overrides, PopulatedTransaction, Signer, utils, @@ -17,16 +15,6 @@ import { FunctionFragment, Result } from "@ethersproject/abi"; import { Listener, Provider } from "@ethersproject/providers"; import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; -export type StateConfigStruct = { - sources: BytesLike[]; - constants: BigNumberish[]; -}; - -export type StateConfigStructOutput = [string[], BigNumber[]] & { - sources: string[]; - constants: BigNumber[]; -}; - export type StorageOpcodesRangeStruct = { pointer: BigNumberish; length: BigNumberish; @@ -37,25 +25,25 @@ export type StorageOpcodesRangeStructOutput = [BigNumber, BigNumber] & { length: BigNumber; }; -export interface FnPtrsTestInterface extends utils.Interface { +export interface StandardVMInterface extends utils.Interface { functions: { - "fnPtrs()": FunctionFragment; - "initialize((bytes[],uint256[]))": FunctionFragment; + "packedFunctionPointers()": FunctionFragment; "storageOpcodesRange()": FunctionFragment; }; - encodeFunctionData(functionFragment: "fnPtrs", values?: undefined): string; encodeFunctionData( - functionFragment: "initialize", - values: [StateConfigStruct] + functionFragment: "packedFunctionPointers", + values?: undefined ): string; encodeFunctionData( functionFragment: "storageOpcodesRange", values?: undefined ): string; - decodeFunctionResult(functionFragment: "fnPtrs", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "packedFunctionPointers", + data: BytesLike + ): Result; decodeFunctionResult( functionFragment: "storageOpcodesRange", data: BytesLike @@ -64,12 +52,12 @@ export interface FnPtrsTestInterface extends utils.Interface { events: {}; } -export interface FnPtrsTest extends BaseContract { +export interface StandardVM extends BaseContract { connect(signerOrProvider: Signer | Provider | string): this; attach(addressOrName: string): this; deployed(): Promise; - interface: FnPtrsTestInterface; + interface: StandardVMInterface; queryFilter( event: TypedEventFilter, @@ -91,36 +79,23 @@ export interface FnPtrsTest extends BaseContract { removeListener: OnEvent; functions: { - fnPtrs(overrides?: CallOverrides): Promise<[string]>; - - initialize( - stateConfig_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + packedFunctionPointers( + overrides?: CallOverrides + ): Promise<[string] & { ptrs_: string }>; storageOpcodesRange( overrides?: CallOverrides ): Promise<[StorageOpcodesRangeStructOutput]>; }; - fnPtrs(overrides?: CallOverrides): Promise; - - initialize( - stateConfig_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; storageOpcodesRange( overrides?: CallOverrides ): Promise; callStatic: { - fnPtrs(overrides?: CallOverrides): Promise; - - initialize( - stateConfig_: StateConfigStruct, - overrides?: CallOverrides - ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; storageOpcodesRange( overrides?: CallOverrides @@ -130,22 +105,14 @@ export interface FnPtrsTest extends BaseContract { filters: {}; estimateGas: { - fnPtrs(overrides?: CallOverrides): Promise; - - initialize( - stateConfig_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } - ): Promise; + packedFunctionPointers(overrides?: CallOverrides): Promise; storageOpcodesRange(overrides?: CallOverrides): Promise; }; populateTransaction: { - fnPtrs(overrides?: CallOverrides): Promise; - - initialize( - stateConfig_: StateConfigStruct, - overrides?: Overrides & { from?: string | Promise } + packedFunctionPointers( + overrides?: CallOverrides ): Promise; storageOpcodesRange( diff --git a/src/typechain/VMStateBuilder.ts b/src/typechain/VMStateBuilder.ts index 55ab7d2..b6a9b5d 100644 --- a/src/typechain/VMStateBuilder.ts +++ b/src/typechain/VMStateBuilder.ts @@ -34,7 +34,6 @@ export type BoundsStruct = { stackLength: BigNumberish; argumentsLength: BigNumberish; storageLength: BigNumberish; - opcodesLength: BigNumberish; }; export type BoundsStructOutput = [ @@ -43,7 +42,6 @@ export type BoundsStructOutput = [ BigNumber, BigNumber, BigNumber, - BigNumber, BigNumber ] & { entrypoint: BigNumber; @@ -52,16 +50,14 @@ export type BoundsStructOutput = [ stackLength: BigNumber; argumentsLength: BigNumber; storageLength: BigNumber; - opcodesLength: BigNumber; }; export interface VMStateBuilderInterface extends utils.Interface { functions: { - "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; - "ensureIntegrity((bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; - "ptrSource(bytes,bytes)": FunctionFragment; - "stackPopsFnPtrs()": FunctionFragment; - "stackPushesFnPtrs()": FunctionFragment; + "buildState(address,(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256)[])": FunctionFragment; + "ensureIntegrity(uint256[],uint256[],(bytes[],uint256[]),(uint256,uint256,uint256,uint256,uint256,uint256))": FunctionFragment; + "stackPops()": FunctionFragment; + "stackPushes()": FunctionFragment; }; encodeFunctionData( @@ -70,18 +66,11 @@ export interface VMStateBuilderInterface extends utils.Interface { ): string; encodeFunctionData( functionFragment: "ensureIntegrity", - values: [StateConfigStruct, BoundsStruct] - ): string; - encodeFunctionData( - functionFragment: "ptrSource", - values: [BytesLike, BytesLike] - ): string; - encodeFunctionData( - functionFragment: "stackPopsFnPtrs", - values?: undefined + values: [BigNumberish[], BigNumberish[], StateConfigStruct, BoundsStruct] ): string; + encodeFunctionData(functionFragment: "stackPops", values?: undefined): string; encodeFunctionData( - functionFragment: "stackPushesFnPtrs", + functionFragment: "stackPushes", values?: undefined ): string; @@ -90,13 +79,9 @@ export interface VMStateBuilderInterface extends utils.Interface { functionFragment: "ensureIntegrity", data: BytesLike ): Result; - decodeFunctionResult(functionFragment: "ptrSource", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "stackPops", data: BytesLike): Result; decodeFunctionResult( - functionFragment: "stackPopsFnPtrs", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "stackPushesFnPtrs", + functionFragment: "stackPushes", data: BytesLike ): Result; @@ -138,20 +123,16 @@ export interface VMStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise<[void]>; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise<[string]>; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise<[string]>; + stackPops(overrides?: CallOverrides): Promise<[BigNumber[]]>; - stackPushesFnPtrs(overrides?: CallOverrides): Promise<[string]>; + stackPushes(overrides?: CallOverrides): Promise<[BigNumber[]]>; }; buildState( @@ -162,20 +143,16 @@ export interface VMStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; callStatic: { buildState( @@ -186,20 +163,16 @@ export interface VMStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; filters: {}; @@ -213,20 +186,16 @@ export interface VMStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; populateTransaction: { @@ -238,19 +207,15 @@ export interface VMStateBuilder extends BaseContract { ): Promise; ensureIntegrity( + stackPops_: BigNumberish[], + stackPushes_: BigNumberish[], stateConfig_: StateConfigStruct, bounds_: BoundsStruct, overrides?: CallOverrides ): Promise; - ptrSource( - packedFnPtrs_: BytesLike, - source_: BytesLike, - overrides?: CallOverrides - ): Promise; - - stackPopsFnPtrs(overrides?: CallOverrides): Promise; + stackPops(overrides?: CallOverrides): Promise; - stackPushesFnPtrs(overrides?: CallOverrides): Promise; + stackPushes(overrides?: CallOverrides): Promise; }; } diff --git a/src/typechain/VerifyCallback.ts b/src/typechain/VerifyCallback.ts new file mode 100644 index 0000000..24f44c4 --- /dev/null +++ b/src/typechain/VerifyCallback.ts @@ -0,0 +1,315 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + BaseContract, + BigNumber, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; +import { Listener, Provider } from "@ethersproject/providers"; +import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; + +export type EvidenceStruct = { account: string; data: BytesLike }; + +export type EvidenceStructOutput = [string, string] & { + account: string; + data: string; +}; + +export interface VerifyCallbackInterface extends utils.Interface { + functions: { + "afterAdd(address,(address,bytes)[])": FunctionFragment; + "afterApprove(address,(address,bytes)[])": FunctionFragment; + "afterBan(address,(address,bytes)[])": FunctionFragment; + "afterRemove(address,(address,bytes)[])": FunctionFragment; + "owner()": FunctionFragment; + "renounceOwnership()": FunctionFragment; + "transferOwnership(address)": FunctionFragment; + }; + + encodeFunctionData( + functionFragment: "afterAdd", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "afterApprove", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "afterBan", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData( + functionFragment: "afterRemove", + values: [string, EvidenceStruct[]] + ): string; + encodeFunctionData(functionFragment: "owner", values?: undefined): string; + encodeFunctionData( + functionFragment: "renounceOwnership", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transferOwnership", + values: [string] + ): string; + + decodeFunctionResult(functionFragment: "afterAdd", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "afterApprove", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "afterBan", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "afterRemove", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "renounceOwnership", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "transferOwnership", + data: BytesLike + ): Result; + + events: { + "OwnershipTransferred(address,address)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; +} + +export type OwnershipTransferredEvent = TypedEvent< + [string, string], + { previousOwner: string; newOwner: string } +>; + +export type OwnershipTransferredEventFilter = + TypedEventFilter; + +export interface VerifyCallback extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: VerifyCallbackInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + afterAdd( + adder_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise<[string]>; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + afterAdd( + adder_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + callStatic: { + afterAdd( + adder_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: CallOverrides + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership(overrides?: CallOverrides): Promise; + + transferOwnership( + newOwner: string, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "OwnershipTransferred(address,address)"( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + OwnershipTransferred( + previousOwner?: string | null, + newOwner?: string | null + ): OwnershipTransferredEventFilter; + }; + + estimateGas: { + afterAdd( + adder_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; + + populateTransaction: { + afterAdd( + adder_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterApprove( + approver_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterBan( + banner_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + afterRemove( + remover_: string, + evidences_: EvidenceStruct[], + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + owner(overrides?: CallOverrides): Promise; + + renounceOwnership( + overrides?: Overrides & { from?: string | Promise } + ): Promise; + + transferOwnership( + newOwner: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise; + }; +} diff --git a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts index 174e180..7df523b 100644 --- a/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts +++ b/src/typechain/factories/AllStandardOpsStateBuilder__factory.ts @@ -91,11 +91,6 @@ const _abi = [ name: "storageLength", type: "uint256", }, - { - internalType: "uint256", - name: "opcodesLength", - type: "uint256", - }, ], internalType: "struct Bounds[]", name: "boundss_", @@ -106,7 +101,7 @@ const _abi = [ outputs: [ { internalType: "bytes", - name: "", + name: "state_", type: "bytes", }, ], @@ -115,6 +110,16 @@ const _abi = [ }, { inputs: [ + { + internalType: "uint256[]", + name: "stackPops_", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "stackPushes_", + type: "uint256[]", + }, { components: [ { @@ -164,11 +169,6 @@ const _abi = [ name: "storageLength", type: "uint256", }, - { - internalType: "uint256", - name: "opcodesLength", - type: "uint256", - }, ], internalType: "struct Bounds", name: "bounds_", @@ -180,38 +180,14 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "bytes", - name: "packedFnPtrs_", - type: "bytes", - }, - { - internalType: "bytes", - name: "source_", - type: "bytes", - }, - ], - name: "ptrSource", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [], - name: "stackPopsFnPtrs", + name: "stackPops", outputs: [ { - internalType: "bytes", + internalType: "uint256[]", name: "", - type: "bytes", + type: "uint256[]", }, ], stateMutability: "pure", @@ -219,12 +195,12 @@ const _abi = [ }, { inputs: [], - name: "stackPushesFnPtrs", + name: "stackPushes", outputs: [ { - internalType: "bytes", + internalType: "uint256[]", name: "", - type: "bytes", + type: "uint256[]", }, ], stateMutability: "pure", @@ -233,7 +209,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b6200007960201b62000c201760201c565b6001600160a01b03166080526200004b62000020620000ee565b6001600160a01b031660a0526200065b565b6060620000746200010560201b62000cab1760201c565b905090565b600080620000b383604051602001620000939190620005f9565b604051602081830303815290604052620002f460201b62000e391760201c565b90508051602082016000f091506001600160a01b038216620000e85760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060620000746200032260201b62000e651760201c565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004be831b62000fe617811660e08301819052620004c4841b62000fec1782166101008401819052620004ca851b62000ff217831661012085018190526101408501839052610160850183905261018085018390526101a08501819052620004d0861b62000ff81784166101c08601526200051d861b6200106d1784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e0850182905262000523861b6200107317841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084015262000566841b620010e21782166105408401526200056c841b620010e817821661056084015261058083018190526200057290931b620010ee17166105a08201526105c08082019290925290815290565b60608151826040516020016200030c92919062000615565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b03620004c4831b62000fec17811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a083018190526200052390931b6200107317166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005135760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005625760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064016200050a565b5090565b60020190565b60030190565b6000601f821680620005b55760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b60448201526064016200050a565b92915050565b6000815160005b81811015620005de5760208185018101518683015201620005c2565b81811115620005ee576000828601525b509290920192915050565b6000815260006200060e6001830184620005bb565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b6005820152600062000653600e830184620005bb565b949350505050565b60805160a051611ee962000681600039600061086c0152600061083f0152611ee96000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e9146102185780639b0bc3491461022d578063a46c2a311461024057600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a3660046119ed565b6103d0565b60405161008c9190611b0b565b60405180910390f35b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c080830191909152815261007f565b61022b610226366004611b5c565b6107cb565b005b61007f61023b366004611bac565b610acf565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c080830191909152815261007f565b606060006103dd85611161565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561042b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044f9190611c10565b60200151905060008060005b86518110156105f3578387828151811061047757610477611c5f565b602002602001015160a0018181525050600285518161049857610498611c8e565b048782815181106104ab576104ab611c5f565b602002602001015160c00181815250506104de888883815181106104d1576104d1611c5f565b60200260200101516107cb565b61050e8782815181106104f3576104f3611c5f565b6020026020010151608001518461129f90919063ffffffff16565b925061054087828151811061052557610525611c5f565b6020026020010151606001518361129f90919063ffffffff16565b915086818151811061055457610554611c5f565b60200260200101516020015187828151811061057257610572611c5f565b60200260200101516040015110156105eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161045b565b506000828860200151510167ffffffffffffffff811115610616576106166116bc565b60405190808252806020026020018201604052801561063f578160200160208202803683370190505b50905060005b886020015151811015610695578860200151818151811061066857610668611c5f565b602002602001015182828151811061068257610682611c5f565b6020908102919091010152600101610645565b5087515160009067ffffffffffffffff8111156106b4576106b46116bc565b6040519080825280602002602001820160405280156106e757816020015b60608152602001906001900390816106d25790505b50905060005b8951518110156107435761071e878b60000151838151811061071157610711611c5f565b6020026020010151610acf565b82828151811061073057610730611c5f565b60209081029190910101526001016106ed565b506107bb6040518060a00160405280600081526020018567ffffffffffffffff811115610772576107726116bc565b60405190808252806020026020018201604052801561079b578160200160208202803683370190505b5081526020018381526020018481526020018b60200151518152506112b6565b96505050505050505b9392505050565b80518251518110610838576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016105e2565b60006108637f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060006108907f00000000000000000000000000000000000000000000000000000000000000006113f3565b905060008080600080602088026020018a5101519050805193505b83851015610a54576002850194508481015180601e1a935080601f1a925050600683101561096f57826108ff5789602001515189608001510182106108ef57600080fd5b6040890180516001019052610956565b600183141561091857886040015182106108ef57600080fd5b6002831415610931576040890180516001019052610956565b6003831415610956578860a00151821061094a57600080fd5b60408901805160010190525b600483141561096a5761096a8a8a84611421565b610a37565b8860c0015183106109dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016105e2565b6020838102888101820151908801909101516109fb8463ffffffff8416565b60408c018051919091039081905260608c0151610a179161129f565b60608c0152610a298463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610a4a9161129f565b60608a01526108ab565b606089015160ff1015610ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016105e2565b50505050505050505050565b80516060906002810615610b3f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016105e2565b60006002600383020467ffffffffffffffff811115610b6057610b606116bc565b6040519080825280601f01601f191660200182016040528015610b8a576020820181803683370190505b509050600660018381018160005b82821015610c125781890151601f1a6002830615610bf45785811015610bc657600182019181908801602101535b858110610bf457600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610c055780826020018801535b5060019182019101610b98565b509398975050505050505050565b600080610c4b83604051602001610c379190611cbd565b604051602081830303815290604052610e39565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610ca5576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fe660e08201819052610fec6101008301819052610ff261012084018190526101408401839052610160840183905261018084018390526101a08401819052610ff86101c085015261106d6101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e0840182905261107361030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e0830181905261050083018190526105208301526110e26105408301526110e861056083015261058082018190526110ee6105a08301526105c082810191909152815290565b6060815182604051602001610e4f929190611ce3565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c0810191909152610fec60e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110736101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b6000808211611063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5060020260010190565b50600090565b60008082116110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016105e2565b5090565b60020190565b60030190565b6000601f82168061115b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016105e2565b92915050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526020819052604081205460609261119591166113f3565b905080516000141561115b5761124261123d8473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa1580156111f2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112389190810190611d7a565b6114c0565b610c20565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556107c483611161565b6000818310156112af57816107c4565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113029190611df1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261133e9291602001611e27565b604051602081830303815290604052905060005b8560400151518110156113ea57818660400151828151811061137657611376611c5f565b60200260200101515160001b8760400151838151811061139857611398611c5f565b60200260200101516040516020016113b293929190611e4d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611352565b50949350505050565b606061115b8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6115ca565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c918290030191829052606084015160019091019161146b919061129f565b6060840152608083015161147f908261129f565b60808401528251600783168085526001600385811c161b919060005b838110156114b5576114ad88886107cb565b60010161149b565b505090935250505050565b606060208251816114d3576114d3611c8e565b061561153b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016105e2565b6000601083518161154e5761154e611c8e565b0467ffffffffffffffff811115611567576115676116bc565b6040519080825280601f01601f191660200182016040528015611591576020820181803683370190505b509050600060025b84518210156115c1578083018051602084880181015190911790915290910190600201611599565b50909392505050565b6060833b806115e95750506040805160208101909152600081526107c4565b808411156116075750506040805160208101909152600081526107c4565b83831015611652576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016105e2565b83830384820360008282106116675782611669565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6116ba611e84565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561170e5761170e6116bc565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561175b5761175b6116bc565b604052919050565b600067ffffffffffffffff82111561177d5761177d6116bc565b5060051b60200190565b600067ffffffffffffffff8211156117a1576117a16116bc565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117de57600080fd5b81356117f16117ec82611787565b611714565b81815284602083860101111561180657600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261183457600080fd5b813560206118446117ec83611763565b82815260059290921b8401810191818101908684111561186357600080fd5b8286015b8481101561187e5780358352918301918301611867565b509695505050505050565b60006040828403121561189b57600080fd5b6118a36116eb565b9050813567ffffffffffffffff808211156118bd57600080fd5b818401915084601f8301126118d157600080fd5b813560206118e16117ec83611763565b82815260059290921b8401810191818101908884111561190057600080fd5b8286015b848110156119385780358681111561191c5760008081fd5b61192a8b86838b01016117cd565b845250918301918301611904565b508652508581013593508284111561194f57600080fd5b61195b87858801611823565b818601525050505092915050565b600060e0828403121561197b57600080fd5b60405160e0810181811067ffffffffffffffff8211171561199e5761199e6116bc565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a0257600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a2657600080fd5b925060208481013567ffffffffffffffff80821115611a4457600080fd5b611a5088838901611889565b94506040870135915080821115611a6657600080fd5b508501601f81018713611a7857600080fd5b8035611a866117ec82611763565b81815260e0918202830184019184820191908a841115611aa557600080fd5b938501935b83851015611acb57611abc8b86611969565b83529384019391850191611aaa565b5080955050505050509250925092565b60005b83811015611af6578181015183820152602001611ade565b83811115611b05576000848401525b50505050565b6020815260008251806020840152611b2a816040850160208701611adb565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611b7057600080fd5b823567ffffffffffffffff811115611b8757600080fd5b611b9385828601611889565b925050611ba38460208501611969565b90509250929050565b60008060408385031215611bbf57600080fd5b823567ffffffffffffffff80821115611bd757600080fd5b611be3868387016117cd565b93506020850135915080821115611bf957600080fd5b50611c06858286016117cd565b9150509250929050565b600060408284031215611c2257600080fd5b6040516040810181811067ffffffffffffffff82111715611c4557611c456116bc565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251611cd6816001850160208701611adb565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d6c81600e850160208701611adb565b91909101600e019392505050565b600060208284031215611d8c57600080fd5b815167ffffffffffffffff811115611da357600080fd5b8201601f81018413611db457600080fd5b8051611dc26117ec82611787565b818152856020838501011115611dd757600080fd5b611de8826020830160208601611adb565b95945050505050565b815160009082906020808601845b83811015611e1b57815185529382019390820190600101611dff565b50929695505050505050565b82815260008251611e3f816020850160208701611adb565b919091016020019392505050565b60008451611e5f818460208901611adb565b82018481528351611e77816020808501908801611adb565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220b8f12da9ae377f0c4dfcf743434678b550fb69accec3cbffc9752d8046ed331b64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611d97806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d1461006f578063aa9628a114610077578063ce19c93514610097575b600080fd5b6100596100ac565b604051610066919061158b565b60405180910390f35b6100596100cc565b61008a6100853660046118e3565b6100e7565b6040516100669190611a01565b6100aa6100a5366004611a52565b6103c2565b005b6040805160008152602081019091526060906100c7906107ca565b905090565b6040805160008152602081019091526060906100c79061099b565b606060006100f485610b6d565b905060006101058260200151610ed2565b905060008060006101146100cc565b905060006101206100ac565b905060005b88518110156101ea57866000015161ffff1689828151811061014957610149611aed565b602002602001015160a001818152505061017e83838c8c858151811061017157610171611aed565b60200260200101516103c2565b6101ae89828151811061019357610193611aed565b60200260200101516080015186610f0690919063ffffffff16565b94506101e08982815181106101c5576101c5611aed565b60200260200101516060015185610f0690919063ffffffff16565b9350600101610125565b506000848a60200151510167ffffffffffffffff81111561020d5761020d6115cf565b604051908082528060200260200182016040528015610236578160200160208202803683370190505b50905060005b8a602001515181101561028c578a60200151818151811061025f5761025f611aed565b602002602001015182828151811061027957610279611aed565b602090810291909101015260010161023c565b5089515160009067ffffffffffffffff8111156102ab576102ab6115cf565b6040519080825280602002602001820160405280156102de57816020015b60608152602001906001900390816102c95790505b50905060005b8b515181101561033a57610315888d60000151838151811061030857610308611aed565b6020026020010151610f1f565b82828151811061032757610327611aed565b60209081029190910101526001016102e4565b506103b26040518060a00160405280600081526020018767ffffffffffffffff811115610369576103696115cf565b604051908082528060200260200182016040528015610392578160200160208202803683370190505b5081526020018381526020018481526020018d60200151518152506110af565b9c9b505050505050505050505050565b80518251518110610434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b838510156106dd576002850194508481015180601e1a935080601f1a925050600683101561061e57826104fe5787602001515187608001510182106104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e540000000000000000000000000000000000000000604482015260640161042b565b60408701805160010190526106c0565b600183141561057457866040015182106104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b0000000000000000000000000000000000000000000000604482015260640161042b565b600283141561058d5760408701805160010190526106c0565b6003831415610603578660a0015182106104ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f52414745000000000000000000000000000000000000000000604482015260640161042b565b6004831415610619576106198a8a8a8a866111ec565b6106c0565b60008a848151811061063257610632611aed565b60200260200101519050600581111561065757806106538463ffffffff8316565b9150505b60408801805182900390819052606089015161067291610f06565b606089015289516000908b908690811061068e5761068e611aed565b6020026020010151905060058111156106b357806106af8563ffffffff8316565b9150505b6040890180519091019052505b604087015160608801516106d391610f06565b606088015261044d565b606087015160ff101561074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b0000000000000000000000000000000000000000000000604482015260640161042b565b8660200151876040015110156107be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e444558000000000000000000000000000000604482015260640161042b565b50505050505050505050565b60606000825190506000604051806105e001604052808360286006010181526020016001815260200160018152602001600181526020016001815260200160008152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200161085061128f90565b81526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152509050604051602083020160405280925060005b828110156109935784818151811061096057610960611aed565b602002602001015184602860060183018151811061098057610980611aed565b6020908102919091010152600101610946565b505050919050565b8051606090600061128f90506000604051806105e0016040528084602860060101815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160028152602001600181526020016003815260200160028152602001600281526020016002815260200160038152602001610a256112fe90565b81526020016000815260200160008152602001600081526020016000815260200160018152602001600281526020016002815260200160018152602001600181526020018381526020016003815260200160028152602001838152602001600281526020016001815260200160028152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001610ae361137390565b815260200161137981526002602082015260400161137f815260200160028152509050604051602084020160405280935060005b83811015610b6457858181518110610b3157610b31611aed565b6020026020010151856028600601830181518110610b5157610b51611aed565b6020908102919091010152600101610b17565b50505050919050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610ecd5760008273ffffffffffffffffffffffffffffffffffffffff163b11610c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d0000000000000000000000000000000000000000000000604482015260640161042b565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c93573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cd99190810190611b1c565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4b9190611b93565b905061ffff801681602001511115610dbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f44455300000000000000000000000000604482015260640161042b565b6002825181610dd057610dd0611be2565b0615610e38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e5445525300000000000000000000000000000000604482015260640161042b565b6040518060400160405280826020015161ffff168152602001610e5a846113ec565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610f008260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611477565b92915050565b600081831015610f165781610f18565b825b9392505050565b805182516060919060011615610f91576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f505452530000000000000000000000000000000000604482015260640161042b565b6002810615610ffc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e475448000000000000000000000000000000604482015260640161042b565b60006002600383020467ffffffffffffffff81111561101d5761101d6115cf565b6040519080825280601f01601f191660200182016040528015611047576020820181803683370190505b50905060056002808701908681019085880101600385015b818310156110a157825180601e1a868111156110805760020285015161ffff165b81601f1a8160081b178351178352505060028301925060038101905061105f565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016110fb9190611c11565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526111379291602001611c47565b604051602081830303815290604052905060005b8560400151518110156111e357818660400151828151811061116f5761116f611aed565b60200260200101515160001b8760400151838151811061119157611191611aed565b60200260200101516040516020016111ab93929190611c6d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161114b565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916112369190610f06565b6060840152608083015161124a9082610f06565b60808401528251600783168085526001600385811c161b919060005b838110156112825761127a8a8a8a8a6103c2565b600101611266565b5050909352505050505050565b60008082116112fa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f305f4f504552414e445f4e5a4f4e000000000000000000000000000000000000604482015260640161042b565b5090565b6000808211611369576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f305f4f504552414e445f45524331313535000000000000000000000000000000604482015260640161042b565b5060020260010190565b60020190565b60030190565b6000601f821680610f00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e44000000000000000000000000000000000000000000604482015260640161042b565b600080611417836040516020016114039190611ca4565b60405160208183030381529060405261155f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611471576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80611496575050604080516020810190915260008152610f18565b808411156114b4575050604080516020810190915260008152610f18565b838310156114ff576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161042b565b83830384820360008282106115145782611516565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6060815182604051602001611575929190611cca565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b818110156115c3578351835292840192918401916001016115a7565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611621576116216115cf565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561166e5761166e6115cf565b604052919050565b600067ffffffffffffffff821115611690576116906115cf565b5060051b60200190565b600067ffffffffffffffff8211156116b4576116b46115cf565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116f157600080fd5b8135602061170661170183611676565b611627565b82815260059290921b8401810191818101908684111561172557600080fd5b8286015b848110156117405780358352918301918301611729565b509695505050505050565b6000604080838503121561175e57600080fd5b6117666115fe565b9150823567ffffffffffffffff8082111561178057600080fd5b818501915085601f83011261179457600080fd5b813560206117a461170183611676565b82815260059290921b840181019181810190898411156117c357600080fd5b8286015b84811015611837578035868111156117df5760008081fd5b8701603f81018c136117f15760008081fd5b848101356118016117018261169a565b8181528d8b8385010111156118165760008081fd5b818b84018883013760009181018701919091528452509183019183016117c7565b508752508681013594508285111561184e57600080fd5b61185a888689016116e0565b81870152505050505092915050565b600060c0828403121561187b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561189e5761189e6115cf565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000606084860312156118f857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461191c57600080fd5b925060208481013567ffffffffffffffff8082111561193a57600080fd5b6119468883890161174b565b9450604087013591508082111561195c57600080fd5b508501601f8101871361196e57600080fd5b803561197c61170182611676565b81815260c0918202830184019184820191908a84111561199b57600080fd5b938501935b838510156119c1576119b28b86611869565b835293840193918501916119a0565b5080955050505050509250925092565b60005b838110156119ec5781810151838201526020016119d4565b838111156119fb576000848401525b50505050565b6020815260008251806020840152611a208160408501602087016119d1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806101208587031215611a6957600080fd5b843567ffffffffffffffff80821115611a8157600080fd5b611a8d888389016116e0565b95506020870135915080821115611aa357600080fd5b611aaf888389016116e0565b94506040870135915080821115611ac557600080fd5b50611ad28782880161174b565b925050611ae28660608701611869565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611b2e57600080fd5b815167ffffffffffffffff811115611b4557600080fd5b8201601f81018413611b5657600080fd5b8051611b646117018261169a565b818152856020838501011115611b7957600080fd5b611b8a8260208301602086016119d1565b95945050505050565b600060408284031215611ba557600080fd5b6040516040810181811067ffffffffffffffff82111715611bc857611bc86115cf565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b83811015611c3b57815185529382019390820190600101611c1f565b50929695505050505050565b82815260008251611c5f8160208501602087016119d1565b919091016020019392505050565b60008451611c7f8184602089016119d1565b82018481528351611c978160208085019088016119d1565b0160200195945050505050565b6000815260008251611cbd8160018501602087016119d1565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d5381600e8501602087016119d1565b91909101600e01939250505056fea2646970667358221220a9ada7b31db93d7cfd280905ab5e6ab85e4b96cb1312199c8fa7b9b3dfff4c4964736f6c634300080a0033"; type AllStandardOpsStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/AllStandardOpsTest__factory.ts b/src/typechain/factories/AllStandardOpsTest__factory.ts index 191fcee..6fa87bd 100644 --- a/src/typechain/factories/AllStandardOpsTest__factory.ts +++ b/src/typechain/factories/AllStandardOpsTest__factory.ts @@ -46,19 +46,6 @@ const _abi = [ name: "WriteError", type: "error", }, - { - inputs: [], - name: "fnPtrs", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [ { @@ -84,6 +71,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "run", @@ -95,7 +95,7 @@ const _abi = [ inputs: [ { internalType: "uint256[]", - name: "values_", + name: "context_", type: "uint256[]", }, ], @@ -198,7 +198,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b5060405162003b3138038062003b3183398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a051613a7b620000b66000396000610672015260006106ae0152613a7b6000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063f2cd6c081461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612e4e565b6102ee565b005b6100aa610539565b6040516100b79190612f1f565b60405180910390f35b6100a06100ce366004612f32565b610594565b6100db6107f4565b6040519081526020016100b7565b6100a0610829565b6100f96109d1565b6040516100b79190612fe7565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526115bf60e082018190526116b361010083015261173f610120830152611860610140830152610160820152611909610180820152611a116101a0820152611ae56101c0820152611ce26101e0820152611ced610200820152611cf8610220820152611d03610240820152611d0e610260820152611d42610280820152611da86102a0820152611e0e6102c0820152611e426102e0820152611e76610300820152611eab610320820152611f06610340820152611f5c610360820152611f85610380820152611fdc6103a08201526120096103c08201526120606103e08201526120cb61040082015261212861042082015261216661044082015261219f6104608201526121d36104808201526122056104a08201526122376104c08201526122696104e082015261229d6105008201526122ef6105208201526123286105408201526123da6105608201526125076105808201526125636105a082015261261d6105c080830191909152815290516100b791906130bd565b6000815160206102fe91906130ff565b67ffffffffffffffff81111561031657610316612dac565b6040519080825280601f01601f191660200182016040528015610340576020820181803683370190505b50905060005b82518110156103985760008382815181106103635761036361313c565b60200260200101519050600082602061037c91906130ff565b84016020019190915250806103908161316b565b915050610346565b5060005a60008054919250906103c39073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a905060006103da84610be6565b905060005a905060005a90506103f288846000610d52565b5060005a90506104426040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b61102e565b60408051808201909152600b81527f6465636f6465206761733a00000000000000000000000000000000000000000060208201526104849061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526104c69061043d83856131a4565b8351600590815560208086015180518793926104e792600692910190612c29565b5060408201518051610503916002840191602090910190612c74565b506060820151805161051f916003840191602090910190612c29565b506080820151816004015590505050505050505050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561058a57602002820191906000526020600020905b815481526020019060010190808311610576575b5050505050905090565b60005a90506105d96040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b61063a6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816105fa57905050905081816000815181106106635761066361313c565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000087856040518463ffffffff1660e01b81526004016106ed9392919061332f565b6000604051808303816000875af115801561070c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107529190810190613492565b905060005a905061079e6040518060400160405280600d81526020017f6e65772073746174652067617300000000000000000000000000000000000000815250828761043d91906131a4565b6107a7826110c3565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050505050565b600554600090600690610809906001906131a4565b815481106108195761081961313c565b9060005260206000200154905090565b60005a60008054919250906108539073ffffffffffffffffffffffffffffffffffffffff16610bb2565b905060005a905060005a9050600061086a84610be6565b905060005a905060005a905061089160405180602001604052806000815250846000610d52565b5060005a90506108dc6040518060400160405280600981526020017f6c6f6164206761733a0000000000000000000000000000000000000000000000815250878a61043d91906131a4565b60408051808201909152600b81527f6465636f6465206761733a000000000000000000000000000000000000000000602082015261091e9061043d85886131a4565b60408051808201909152600881527f72756e206761733a00000000000000000000000000000000000000000000000060208201526109609061043d83856131a4565b83516005908155602080860151805187939261098192600692910190612c29565b506040820151805161099d916002840191602090910190612c74565b50606082015180516109b9916003840191602090910190612c29565b50608082015181600401559050505050505050505050565b610a036040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a00160405290816000820154815260200160018201805480602002602001604051908101604052809291908181526020018280548015610a6957602002820191906000526020600020905b815481526020019060010190808311610a55575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b82821015610b43578382906000526020600020018054610ab69061353b565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae29061353b565b8015610b2f5780601f10610b0457610100808354040283529160200191610b2f565b820191906000526020600020905b815481529060010190602001808311610b1257829003601f168201915b505050505081526020019060010190610a97565b50505050815260200160038201805480602002602001604051908101604052809291908181526020018280548015610b9a57602002820191906000526020600020905b815481526020019060010190808311610b86575b50505050508152602001600482015481525050905090565b6060610be08260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61114e565b92915050565b610c186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610c4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610c7e57610c7e612dac565b604051908082528060200260200182016040528015610ca7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610cde57610cde612dac565b604051908082528060200260200182016040528015610d07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610d41578160208202602001840152815160200182019150600181019050610d1a565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611014576003890198508886015180601f1a975061ffff8160081c169850506006881015610f8c5787610dd557866020028401518252602082019150610f9f565b6001881415610df257602087028301518252602082019150610f9f565b6002881415610e84578c518760200210610e6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d01518252602082019150610f9f565b6003881415610ecd576000610ebb604080518082018252600080825260209182015281518083019092526001825260039082015290565b51880154835250602090910190610f9f565b6004881415610ee957610ee28d8d848a611236565b9150610f9f565b606087610f17578c604051602001610f019190612fe7565b6040516020818303038152906040529050610f76565b6001881415610f3057610f298d6113a3565b9050610f76565b6002881415610f4c576020808e0151604051610f019201613589565b6003881415610f76578c516040805160208101929092520160405160208183030381529060405290505b805115610f8657610f86816114e0565b50610f9f565b87610f9b888463ffffffff8416565b9250505b60208c0151518c51111561100f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610e64565b610d90565b6020838303048c52509750505050505050505b9392505050565b6110bf82826040516024016110449291906135ee565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052611572565b5050565b6000806110ee836040516020016110da9190613610565b604051602081830303815290604052611593565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611148576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061116d575050604080516020810190915260008152611027565b8084111561118b575050604080516020810190915260008152611027565b838310156111d6576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610e64565b83830384820360008282106111eb57826111ed565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c1682808261127557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006112c0565b826001141561129957506fffffffffffffffffffffffffffffffff905060806112c0565b82600214156112b5575067ffffffffffffffff905060406112c0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156112e3576112e3612dac565b60405190808252806020026020018201604052801561130c578160200160208202803683370190505b50905060208082019083028a03815b8b82101561133357815181526020918201910161131b565b505060608b015160808c015160209081029091010160005b6101008110156113915760208502830182845b8281101561137a578051841c8a1682526020918201910161135e565b5050506113888e8e8b610d52565b9b50850161134b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016113ef9190613589565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261142b9291602001613636565b604051602081830303815290604052905060005b8560400151518110156114d75781866040015182815181106114635761146361313c565b60200260200101515160001b876040015183815181106114855761148561313c565b602002602001015160405160200161149f9392919061365c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161143f565b50949350505050565b61156f816040516024016114f491906130bd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052611572565b50565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016115a9929190613693565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611682573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116a6919061372a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561170f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611733919061372a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561182e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611852919061372a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611665565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156119ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ee9190613743565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401611811565b60008060008467ffffffffffffffff811115611b0357611b03612dac565b604051908082528060200260200182016040528015611b2c578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b4a57611b4a612dac565b604051908082528060200260200182016040528015611b73578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611bc8578251815260209283019201611bb0565b5050602088028101602084015b81831015611bed578251815260209283019201611bd5565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c479087908790600401613779565b600060405180830381865afa158015611c64573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611caa91908101906137dc565b9050846020820160208a0281015b80821015611cd3578151835260209283019290910190611cb8565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612699565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611da2858a612699565b9061271a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a682611e08858a612699565b90612739565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082611733828761274e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117338287612799565b6000602083028203805b83811015611ea05780518015611e97578252611ea0565b50602001611e80565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611ea0578051611f7d5760008252611ea0565b602001611f66565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561209e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906120b683826127f7565b9250612070565b505081526020019392505050565b6020828102820380516000928201835b858210801561210957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120bd575080516020909101906121218382612833565b92506120db565b6020828102820380516000928201835b85821080156121475750826000105b156120bd5750805160209091019061215f8382612862565b9250612138565b600060208302820380516000602083015b858110156120bd578051830191508282101561219257600080fd5b9091508190602001612177565b600060208302820380516000602083015b858110156120bd5780519150816121c657600080fd5b91819004916020016121b0565b6020828102820380516000928201835b858210156120bd575080516020909101906121fe8184613982565b92506121e3565b6020828102820380516000928201835b858210156120bd575080518281111561222c578092505b602082019150612215565b6020828102820380516000928201835b858210156120bd575080518281101561225e578092505b602082019150612247565b600060208302820380516000602083015b858110156120bd57805191508161229057600080fd5b918190069160200161227a565b60006020830282038051600080602084015b868110156122e05783156122d85780519250828402915082848304146122d457600080fd5b8193505b6020016122af565b50505081526020019392505050565b600060208302820380516000602083015b858110156120bd578051830391508282111561231b57600080fd5b9091508190602001612300565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490611811908690869060040161398e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906124b3908790879087906004016139bd565b602060405180830381865afa1580156124d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f4919061372a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116a68383612878565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561259157612591612dac565b6040519080825280602002602001820160405280156125ba578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125f6578151816020018601526020820191506020810190506125d4565b50505190506000612609838389896128d7565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561268a85858585612a27565b90955250949695505050505050565b60008082601214156126ae5783915050610be0565b82601211156126da575060128290036126c881600a613982565b6126d290856130ff565b915050610be0565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161270981600a613982565b6126d290856139fb565b5092915050565b60008161272f670de0b6b3a7640000856130ff565b61102791906139fb565b6000670de0b6b3a764000061272f83856130ff565b600081810b61275e575081610be0565b60008260000b13156127865761277582600a613a36565b61277f90846130ff565b9050610be0565b60ff60008390031661270981600a613982565b60008060128314156127ae5783915050610be0565b82601211156127c85750601282900361270981600a613982565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126c881600a613982565b6000828201838110612809578061282b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261284257506000610be0565b82820282848281612855576128556135bf565b041415612809578061282b565b6000818311612872576000611027565b50900390565b60008060015b600881116128cf5760006128928683612acd565b905060006128a08684612acd565b905060006128ae8383612862565b90506128be856001860383612b7a565b9450506001909201915061287e9050565b509392505050565b835160009081908190819060015b60088111612a195760009250828761291e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612922565b5060005b60005b838110156129d7576129508c82815181106129425761294261313c565b602002602001015184612acd565b95508a86116129a2578861296f576129688683612c03565b9150612999565b6001891415612982576129688683612c19565b600289148015612990575084155b15612999578591505b600194506129cf565b896129cf577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129d7565b600101612925565b5083612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612a0e866001840383612b7a565b9550506001016128e5565b509298975050505050505050565b6000826008811115612a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b6000855b85811015612ac15763ffffffff6020820290811b199890981685891b17979150600101612a99565b50959695505050505050565b6000816008811115612b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b82612b495760009150612713565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612be8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610e64565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612c125781611027565b5090919050565b600081831015612c125781611027565b828054828255906000526020600020908101928215612c64579160200282015b82811115612c64578251825591602001919060010190612c49565b50612c70929150612ccd565b5090565b828054828255906000526020600020908101928215612cc1579160200282015b82811115612cc15782518051612cb1918491602090910190612ce2565b5091602001919060010190612c94565b50612c70929150612d55565b5b80821115612c705760008155600101612cce565b828054612cee9061353b565b90600052602060002090601f016020900481019282612d105760008555612c64565b82601f10612d2957805160ff1916838001178555612c64565b82800160010185558215612c645791820182811115612c64578251825591602001919060010190612c49565b80821115612c70576000612d698282612d72565b50600101612d55565b508054612d7e9061353b565b6000825580601f10612d8e575050565b601f01602090049060005260206000209081019061156f9190612ccd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2257612e22612dac565b604052919050565b600067ffffffffffffffff821115612e4457612e44612dac565b5060051b60200190565b60006020808385031215612e6157600080fd5b823567ffffffffffffffff811115612e7857600080fd5b8301601f81018513612e8957600080fd5b8035612e9c612e9782612e2a565b612ddb565b81815260059190911b82018301908381019087831115612ebb57600080fd5b928401925b82841015612ed957833582529284019290840190612ec0565b979650505050505050565b600081518084526020808501945080840160005b83811015612f1457815187529582019590820190600101612ef8565b509495945050505050565b6020815260006110276020830184612ee4565b600060208284031215612f4457600080fd5b813567ffffffffffffffff811115612f5b57600080fd5b82016040818503121561102757600080fd5b60005b83811015612f88578181015183820152602001612f70565b83811115612f97576000848401525b50505050565b60008151808452612fb5816020860160208601612f6d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600060208083528351818401528084015160a0604085015261300c60c0850182612ee4565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156130855784878303018452613073828751612f9d565b95880195938801939150600101613059565b5060608a01519650838982030160808a01526130a18188612ee4565b9650505050505050608084015160a08401528091505092915050565b6020815260006110276020830184612f9d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613137576131376130d0565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561319d5761319d6130d0565b5060010190565b6000828210156131b6576131b66130d0565b500390565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126131f057600080fd5b830160208101925035905067ffffffffffffffff81111561321057600080fd5b8060051b360383131561322257600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156132a457600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015612f1457815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016132d5565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161336086876131bb565b604060608701528281845260c08701905060c08260051b88010193508260005b8381101561342a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126133e157600080fd5b8501803567ffffffffffffffff8111156133fa57600080fd5b80360387131561340957600080fd5b61341688828b8501613229565b975050509186019190860190600101613380565b505050505061343b828701876131bb565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152613472828483613272565b92505050828103604084015261348881856132c1565b9695505050505050565b6000602082840312156134a457600080fd5b815167ffffffffffffffff808211156134bc57600080fd5b818401915084601f8301126134d057600080fd5b8151818111156134e2576134e2612dac565b61351360207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612ddb565b915080825285602082850101111561352a57600080fd5b6114d7816020840160208601612f6d565b600181811c9082168061354f57607f821691505b60208210811415611148577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b838110156135b357815185529382019390820190600101613597565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6040815260006136016040830185612f9d565b90508260208301529392505050565b6000815260008251613629816001850160208701612f6d565b9190910160010192915050565b8281526000825161364e816020850160208701612f6d565b919091016020019392505050565b6000845161366e818460208901612f6d565b82018481528351613686816020808501908801612f6d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161371c81600e850160208701612f6d565b91909101600e019392505050565b60006020828403121561373c57600080fd5b5051919050565b60006020828403121561375557600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461102757600080fd5b604080825283519082018190526000906020906060840190828701845b828110156137c857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613796565b505050838103828501526134888186612ee4565b600060208083850312156137ef57600080fd5b825167ffffffffffffffff81111561380657600080fd5b8301601f8101851361381757600080fd5b8051613825612e9782612e2a565b81815260059190911b8201830190838101908783111561384457600080fd5b928401925b82841015612ed957835182529284019290840190613849565b600181815b808511156138bb57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138a1576138a16130d0565b808516156138ae57918102915b93841c9390800290613867565b509250929050565b6000826138d257506001610be0565b816138df57506000610be0565b81600181146138f557600281146138ff5761391b565b6001915050610be0565b60ff841115613910576139106130d0565b50506001821b610be0565b5060208310610133831016604e8410600b841016171561393e575081810a610be0565b6139488383613862565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561397a5761397a6130d0565b029392505050565b600061102783836138c3565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061282b6040830184612ee4565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006139f26060830184612ee4565b95945050505050565b600082613a31577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061102760ff8416836138c356fea26469706673582212200dd64e3eef29ea1e193c4529db771dda326d4b990a65e1af575be2984f1379f364736f6c634300080a0033"; + "0x60c060405260006001556001600255600260035560036004553480156200002557600080fd5b50604051620038083803806200380883398101604081905262000048916200005e565b306080526001600160a01b031660a05262000090565b6000602082840312156200007157600080fd5b81516001600160a01b03811681146200008957600080fd5b9392505050565b60805160a051613752620000b6600039600061094d0152600061097a01526137526000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063c04062261161005b578063c0406226146100e9578063c19d93fb146100f1578063e0419ae314610106578063ea7cb3701461014257600080fd5b8063016e477d1461008d578063138ef151146100a25780634e75d77e146100c0578063b9e62b74146100d3575b600080fd5b6100a061009b366004612c7f565b610157565b005b6100aa6101db565b6040516100b79190612cef565b60405180910390f35b6100a06100ce366004612d02565b610236565b6100db610315565b6040519081526020016100b7565b6100a061034a565b6100f96103de565b6040516100b79190612e0c565b604080518082018252600080825260209182015281518083018352600180825260039183019182528351908152905191810191909152016100b7565b61014a6105bf565b6040516100b79190612ea3565b60006101616105d7565b905061016f82826000610634565b50805160059081556020808301518051849392610191926006929101906129c6565b50604082015180516101ad916002840191602090910190612a11565b50606082015180516101c99160038401916020909101906129c6565b50608082015181600401559050505050565b6060600560010180548060200260200160405190810160405280929190818152602001828054801561022c57602002820191906000526020600020905b815481526020019060010190808311610218575b5050505050905090565b61026f6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6102c96040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161029057905050905081816000815181106102f2576102f2612eb6565b60200260200101819052506103108361030a90612f2b565b8261090d565b505050565b60055460009060069061032a90600190613075565b8154811061033a5761033a612eb6565b9060005260206000200154905090565b60006103546105d7565b6040805160008082526020820190925291925061037391908390610634565b50805160059081556020808301518051849392610395926006929101906129c6565b50604082015180516103b1916002840191602090910190612a11565b50606082015180516103cd9160038401916020909101906129c6565b506080820151816004015590505050565b6104106040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60056040518060a0016040529081600082015481526020016001820180548060200260200160405190810160405280929190818152602001828054801561047657602002820191906000526020600020905b815481526020019060010190808311610462575b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b828210156105505783829060005260206000200180546104c39061308c565b80601f01602080910402602001604051908101604052809291908181526020018280546104ef9061308c565b801561053c5780601f106105115761010080835404028352916020019161053c565b820191906000526020600020905b81548152906001019060200180831161051f57829003601f168201915b5050505050815260200190600101906104a4565b505050508152602001600382018054806020026020016040519081016040528092919081815260200182805480156105a757602002820191906000526020600020905b815481526020019060010190808311610593575b50505050508152602001600482015481525050905090565b60606105d26105cd82610a60565b610c81565b905090565b6106096040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6000546105d29061062f9073ffffffffffffffffffffffffffffffffffffffff16610cc0565b610cf4565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156108f3576003890198508886015180601f1a975061ffff8160081c16985050600688101561086b57876106b75786602002840151825260208201915061087e565b60018814156106d45760208702830151825260208201915061087e565b6002881415610763578c51871061074c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064015b60405180910390fd5b866020026020018d0151825260208201915061087e565b60038814156107ac57600061079a604080518082018252600080825260209182015281518083019092526001825260039082015290565b5188015483525060209091019061087e565b60048814156107c8576107c18d8d848a610e60565b915061087e565b6060876107f6578c6040516020016107e09190612e0c565b6040516020818303038152906040529050610855565b600188141561080f576108088d610fcd565b9050610855565b600288141561082b576020808e01516040516107e092016130da565b6003881415610855578c516040805160208101929092520160405160208183030381529060405290505b805115610865576108658161110a565b5061087e565b8761087a888463ffffffff8416565b9250505b60208c0151518c5111156108ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f570000000000000000000000000000000000006044820152606401610743565b610672565b6020838303048c52509750505050505050505b9392505050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a1906109a6907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161313f565b6000604051808303816000875af11580156109c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a0b9190810190613227565b9050610a168161119c565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261122760e0840181905261131b6101008501526113a76101208501526114c86101408501526101608401526115716101808401526116796101a084015261174d6101c084015261194a6101e084015261195561020084015261196061022084015261196b6102408401526119766102608401526119aa610280840152611a106102a0840152611a766102c0840152611aaa6102e0840152611ade610300840152611b13610320840152611b6e610340840152611bc4610360840152611bed610380840152611c446103a0840152611c716103c0840152611cc86103e0840152611d33610400840152611d90610420840152611dce610440840152611e07610460840152611e3b610480840152611e6d6104a0840152611e9f6104c0840152611ed16104e0840152611f05610500840152611f57610520840152611f9061054084015261204261056084015261216f6105808401526121cb6105a08401526122856105c0840152835190850201909252919082815b83811015610c7857858181518110610c3757610c37612eb6565b6020026020010151856028600601830181518110610c5757610c57612eb6565b67ffffffffffffffff90921660209283029190910190910152600101610c1d565b50505050919050565b60606020820182516020028101600284015b81831015610cb05782518151178152602090920191600201610c93565b5050825160020283525090919050565b6060610cee8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612301565b92915050565b610d266040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610d586040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610d8c57610d8c612b49565b604051908082528060200260200182016040528015610db5578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610dec57610dec612b49565b604051908082528060200260200182016040528015610e15578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610e4f578160208202602001840152815160200182019150600181019050610e28565b505060408501525091949350505050565b600060078216600383811c16828082610e9f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100610eea565b8260011415610ec357506fffffffffffffffffffffffffffffffff90506080610eea565b8260021415610edf575067ffffffffffffffff90506040610eea565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115610f0d57610f0d612b49565b604051908082528060200260200182016040528015610f36578160200160208202803683370190505b50905060208082019083028a03815b8b821015610f5d578151815260209182019101610f45565b505060608b015160808c015160209081029091010160005b610100811015610fbb5760208502830182845b82811015610fa4578051841c8a16825260209182019101610f88565b505050610fb28e8e8b610634565b9b508501610f75565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161101991906130da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611055929160200161329e565b604051602081830303815290604052905060005b85604001515181101561110157818660400151828151811061108d5761108d612eb6565b60200260200101515160001b876040015183815181106110af576110af612eb6565b60200260200101516040516020016110c9939291906132c4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611069565b50949350505050565b6111998160405160240161111e9190612ea3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526123e9565b50565b6000806111c7836040516020016111b391906132fb565b60405160208183030381529060405261240a565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611221576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156112ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061130e9190613321565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061139b9190613321565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015611496573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114ba9190613321565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016112cd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611632573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611656919061333a565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401611479565b60008060008467ffffffffffffffff81111561176b5761176b612b49565b604051908082528060200260200182016040528015611794578160200160208202803683370190505b50905060008567ffffffffffffffff8111156117b2576117b2612b49565b6040519080825280602002602001820160405280156117db578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611830578251815260209283019201611818565b5050602088028101602084015b8183101561185557825181526020928301920161183d565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906118af9087908790600401613370565b600060405180830381865afa1580156118cc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261191291908101906133dd565b9050846020820160208a0281015b8082101561193b578151835260209283019290910190611920565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261139b8287612436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361130e82611a0a858a612436565b906124b7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361130e82611a70858a612436565b906124d6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261139b82876124eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261139b8287612536565b6000602083028203805b83811015611b085780518015611aff578252611b08565b50602001611ae8565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611b08578051611be55760008252611b08565b602001611bce565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015611d0657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15611d2557508051602090910190611d1e8382612594565b9250611cd8565b505081526020019392505050565b6020828102820380516000928201835b8582108015611d7157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15611d2557508051602090910190611d8983826125d0565b9250611d43565b6020828102820380516000928201835b8582108015611daf5750826000105b15611d2557508051602090910190611dc783826125ff565b9250611da0565b600060208302820380516000602083015b85811015611d255780518301915082821015611dfa57600080fd5b9091508190602001611ddf565b600060208302820380516000602083015b85811015611d25578051915081611e2e57600080fd5b9181900491602001611e18565b6020828102820380516000928201835b85821015611d2557508051602090910190611e66818461358e565b9250611e4b565b6020828102820380516000928201835b85821015611d255750805182811115611e94578092505b602082019150611e7d565b6020828102820380516000928201835b85821015611d255750805182811015611ec6578092505b602082019150611eaf565b600060208302820380516000602083015b85811015611d25578051915081611ef857600080fd5b9181900691602001611ee2565b60006020830282038051600080602084015b86811015611f48578315611f40578051925082840291508284830414611f3c57600080fd5b8193505b602001611f17565b50505081526020019392505050565b600060208302820380516000602083015b85811015611d255780518303915082821115611f8357600080fd5b9091508190602001611f68565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490611479908690869060040161359a565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061211b908790879087906004016135c9565b602060405180830381865afa158015612138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061215c9190613321565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361130e8383612615565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156121f9576121f9612b49565b604051908082528060200260200182016040528015612222578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561225e5781518160200186015260208201915060208101905061223c565b5050519050600061227183838989612674565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856122f2858585856127c4565b90955250949695505050505050565b6060833b80612320575050604080516020810190915260008152610906565b8084111561233e575050604080516020810190915260008152610906565b83831015612389576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610743565b838303848203600082821061239e57826123a0565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016124209291906135fe565b6040516020818303038152906040529050919050565b600080826012141561244b5783915050610cee565b82601211156124775750601282900361246581600a61358e565b61246f9085613695565b915050610cee565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016124a681600a61358e565b61246f90856136d2565b5092915050565b6000816124cc670de0b6b3a764000085613695565b61090691906136d2565b6000670de0b6b3a76400006124cc8385613695565b600081810b6124fb575081610cee565b60008260000b13156125235761251282600a61370d565b61251c9084613695565b9050610cee565b60ff6000839003166124a681600a61358e565b600080601283141561254b5783915050610cee565b8260121115612565575060128290036124a681600a61358e565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161246581600a61358e565b60008282018381106125a657806125c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b6000826125df57506000610cee565b828202828482816125f2576125f2613110565b0414156125a657806125c8565b600081831161260f576000610906565b50900390565b60008060015b6008811161266c57600061262f868361286a565b9050600061263d868461286a565b9050600061264b83836125ff565b905061265b856001860383612917565b9450506001909201915061261b9050565b509392505050565b835160009081908190819060015b600881116127b6576000925082876126bb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6126bf565b5060005b60005b83811015612774576126ed8c82815181106126df576126df612eb6565b60200260200101518461286a565b95508a861161273f578861270c5761270586836129a0565b9150612736565b600189141561271f5761270586836129b6565b60028914801561272d575084155b15612736578591505b6001945061276c565b8961276c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612774565b6001016126c2565b508361279d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6127ab866001840383612917565b955050600101612682565b509298975050505050505050565b6000826008811115612832576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610743565b6000855b8581101561285e5763ffffffff6020820290811b199890981685891b17979150600101612836565b50959695505050505050565b60008160088111156128d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610743565b826128e657600091506124b0565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612985576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610743565b505063ffffffff602090920291821b199290921691901b1790565b60008183106129af5781610906565b5090919050565b6000818310156129af5781610906565b828054828255906000526020600020908101928215612a01579160200282015b82811115612a015782518255916020019190600101906129e6565b50612a0d929150612a6a565b5090565b828054828255906000526020600020908101928215612a5e579160200282015b82811115612a5e5782518051612a4e918491602090910190612a7f565b5091602001919060010190612a31565b50612a0d929150612af2565b5b80821115612a0d5760008155600101612a6b565b828054612a8b9061308c565b90600052602060002090601f016020900481019282612aad5760008555612a01565b82601f10612ac657805160ff1916838001178555612a01565b82800160010185558215612a015791820182811115612a015782518255916020019190600101906129e6565b80821115612a0d576000612b068282612b0f565b50600101612af2565b508054612b1b9061308c565b6000825580601f10612b2b575050565b601f0160209004906000526020600020908101906111999190612a6a565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612b9b57612b9b612b49565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612be857612be8612b49565b604052919050565b600067ffffffffffffffff821115612c0a57612c0a612b49565b5060051b60200190565b600082601f830112612c2557600080fd5b81356020612c3a612c3583612bf0565b612ba1565b82815260059290921b84018101918181019086841115612c5957600080fd5b8286015b84811015612c745780358352918301918301612c5d565b509695505050505050565b600060208284031215612c9157600080fd5b813567ffffffffffffffff811115612ca857600080fd5b6125c884828501612c14565b600081518084526020808501945080840160005b83811015612ce457815187529582019590820190600101612cc8565b509495945050505050565b6020815260006109066020830184612cb4565b600060208284031215612d1457600080fd5b813567ffffffffffffffff811115612d2b57600080fd5b82016040818503121561090657600080fd5b60005b83811015612d58578181015183820152602001612d40565b83811115612d67576000848401525b50505050565b60008151808452612d85816020860160208601612d3d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600081518084526020808501808196508360051b8101915082860160005b85811015612dff578284038952612ded848351612d6d565b98850198935090840190600101612dd5565b5091979650505050505050565b60208152815160208201526000602083015160a06040840152612e3260c0840182612cb4565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe080858403016060860152612e6e8383612db7565b9250606086015191508085840301608086015250612e8c8282612cb4565b915050608084015160a08401528091505092915050565b6020815260006109066020830184612d6d565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600067ffffffffffffffff821115612eff57612eff612b49565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040808336031215612f3e57600080fd5b612f46612b78565b833567ffffffffffffffff80821115612f5e57600080fd5b9085019036601f830112612f7157600080fd5b81356020612f81612c3583612bf0565b82815260059290921b84018101918181019036841115612fa057600080fd5b8286015b8481101561301457803586811115612fbc5760008081fd5b870136603f820112612fce5760008081fd5b84810135612fde612c3582612ee5565b818152368c838501011115612ff35760008081fd5b818c8401888301376000918101870191909152845250918301918301612fa4565b508652508781013595508286111561302b57600080fd5b61303736878a01612c14565b90850152509195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561308757613087613046565b500390565b600181811c908216806130a057607f821691505b60208210811415611221577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b815160009082906020808601845b83811015613104578151855293820193908201906001016130e8565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261317a83880183612db7565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526131b58483612cb4565b898103848b01528a51808252878c019550908701925060005b818110156132155785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016131ce565b50919c9b505050505050505050505050565b60006020828403121561323957600080fd5b815167ffffffffffffffff81111561325057600080fd5b8201601f8101841361326157600080fd5b805161326f612c3582612ee5565b81815285602083850101111561328457600080fd5b613295826020830160208601612d3d565b95945050505050565b828152600082516132b6816020850160208701612d3d565b919091016020019392505050565b600084516132d6818460208901612d3d565b820184815283516132ee816020808501908801612d3d565b0160200195945050505050565b6000815260008251613314816001850160208701612d3d565b9190910160010192915050565b60006020828403121561333357600080fd5b5051919050565b60006020828403121561334c57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461090657600080fd5b604080825283519082018190526000906020906060840190828701845b828110156133bf57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161338d565b505050838103828501526133d38186612cb4565b9695505050505050565b600060208083850312156133f057600080fd5b825167ffffffffffffffff81111561340757600080fd5b8301601f8101851361341857600080fd5b8051613426612c3582612bf0565b81815260059190911b8201830190838101908783111561344557600080fd5b928401925b828410156134635783518252928401929084019061344a565b979650505050505050565b600181815b808511156134c757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156134ad576134ad613046565b808516156134ba57918102915b93841c9390800290613473565b509250929050565b6000826134de57506001610cee565b816134eb57506000610cee565b8160018114613501576002811461350b57613527565b6001915050610cee565b60ff84111561351c5761351c613046565b50506001821b610cee565b5060208310610133831016604e8410600b841016171561354a575081810a610cee565b613554838361346e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561358657613586613046565b029392505050565b600061090683836134cf565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006125c86040830184612cb4565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006132956060830184612cb4565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161368781600e850160208701612d3d565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156136cd576136cd613046565b500290565b600082613708577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061090660ff8416836134cf56fea264697066735822122047ec9cb99d33e9fd22ffccfe52562647bf8b7eb300bb0f7c1693cb5d1de14dca64736f6c634300080a0033"; type AllStandardOpsTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/AutoApproveFactory__factory.ts b/src/typechain/factories/AutoApproveFactory__factory.ts new file mode 100644 index 0000000..9b37e02 --- /dev/null +++ b/src/typechain/factories/AutoApproveFactory__factory.ts @@ -0,0 +1,184 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + AutoApproveFactory, + AutoApproveFactoryInterface, +} from "../AutoApproveFactory"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Implementation", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "child", + type: "address", + }, + ], + name: "NewChild", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes", + name: "data_", + type: "bytes", + }, + ], + name: "createChild", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "config_", + type: "tuple", + }, + ], + name: "createChildTyped", + outputs: [ + { + internalType: "contract AutoApprove", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "maybeChild_", + type: "address", + }, + ], + name: "isChild", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x60a060405234801561001057600080fd5b50604051614d77380380614d7783398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b6140ee80610c8983390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610b6a61011f60003960006102db0152610b6a6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a4914610046578063f462237c14610083578063fc91a89714610096575b600080fd5b610059610054366004610632565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100596100913660046106f9565b61028b565b6100cf6100a43660046107f9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610163836102bb565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102b5826040516020016102a191906108a1565b6040516020818303038152906040526100df565b92915050565b600080828060200190518101906102d291906109f6565b905060006102ff7f000000000000000000000000000000000000000000000000000000000000000061040d565b6040517f4e75d77e00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690634e75d77e906103549085906004016108a1565b600060405180830381600087803b15801561036e57600080fd5b505af1158015610382573d6000803e3d6000fd5b50506040517ff2fde38b00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff8416925063f2fde38b9150602401600060405180830381600087803b1580156103ed57600080fd5b505af1158015610401573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610541576105416104ef565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561058e5761058e6104ef565b604052919050565b600067ffffffffffffffff8211156105b0576105b06104ef565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105ed57600080fd5b81356106006105fb82610596565b610547565b81815284602083860101111561061557600080fd5b816020850160208301376000918101602001919091529392505050565b60006020828403121561064457600080fd5b813567ffffffffffffffff81111561065b57600080fd5b610667848285016105dc565b949350505050565b600067ffffffffffffffff821115610689576106896104ef565b5060051b60200190565b600082601f8301126106a457600080fd5b813560206106b46105fb8361066f565b82815260059290921b840181019181810190868411156106d357600080fd5b8286015b848110156106ee57803583529183019183016106d7565b509695505050505050565b6000602080838503121561070c57600080fd5b823567ffffffffffffffff8082111561072457600080fd5b908401906040828703121561073857600080fd5b61074061051e565b82358281111561074f57600080fd5b8301601f8101881361076057600080fd5b803561076e6105fb8261066f565b81815260059190911b8201860190868101908a83111561078d57600080fd5b8784015b838110156107c5578035878111156107a95760008081fd5b6107b78d8b838901016105dc565b845250918801918801610791565b50845250505082840135828111156107dc57600080fd5b6107e888828601610693565b948201949094529695505050505050565b60006020828403121561080b57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461082f57600080fd5b9392505050565b60005b83811015610851578181015183820152602001610839565b83811115610860576000848401525b50505050565b600081518084526020808501945080840160005b838110156108965781518752958201959082019060010161087a565b509495945050505050565b6000602080835260608301845160408386015281815180845260808701915060808160051b8801019350848301925060005b81811015610955577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8088860301835283518051808752610918818989018a8501610836565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018601945092850192918501916001016108d3565b50505050908401518382037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0016040850152906109928183610866565b95945050505050565b600082601f8301126109ac57600080fd5b815160206109bc6105fb8361066f565b82815260059290921b840181019181810190868411156109db57600080fd5b8286015b848110156106ee57805183529183019183016109df565b60006020808385031215610a0957600080fd5b825167ffffffffffffffff80821115610a2157600080fd5b81850191506040808388031215610a3757600080fd5b610a3f61051e565b835183811115610a4e57600080fd5b8401601f81018913610a5f57600080fd5b8051610a6d6105fb8261066f565b81815260059190911b8201870190878101908b831115610a8c57600080fd5b8884015b83811015610afd57805188811115610aa85760008081fd5b8501603f81018e13610aba5760008081fd5b8a810151610aca6105fb82610596565b8181528f8a838501011115610adf5760008081fd5b610aee828e83018c8601610836565b85525050918901918901610a90565b50845250505083850151915082821115610b1657600080fd5b610b228883860161099b565b8582015280955050505050509291505056fea2646970667358221220773ba88884269b3e391c88847f9ad1da826768fca463ffb7add5a9fdd6e6454964736f6c634300080a003360c06040523480156200001157600080fd5b50604051620040ee380380620040ee833981016040819052620000349162000180565b80620000403362000061565b306080526001600160a01b031660a0526200005a620000b1565b50620001b2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600154600160a81b900460ff1615620001205760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff600160a01b909104811610156200017e576001805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200019357600080fd5b81516001600160a01b0381168114620001ab57600080fd5b9392505050565b60805160a051613f16620001d860003960006109410152600061096e0152613f166000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638f6b114611610076578063ea7cb3701161005b578063ea7cb3701461016b578063ebae2d8c146100c3578063f2fde38b1461018057600080fd5b80638f6b1146146100c3578063e0419ae31461013357600080fd5b8063715018a6116100a7578063715018a6146100eb57806389bd6b26146100f35780638da5cb5b1461010657600080fd5b8063376dcbe2146100c35780634e75d77e146100d8575b600080fd5b6100d66100d1366004612ec4565b610193565b005b6100d66100e6366004612f4c565b6101a0565b6100d66104b5565b6100d6610101366004612ec4565b6104c9565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60408051808201825260008082526020918201819052825180840184528181528201818152835191825251918101919091520161012a565b6101736107aa565b60405161012a9190613001565b6100d661018e366004613014565b6107c9565b61019b610880565b505050565b6001547501000000000000000000000000000000000000000000900460ff16158080156101e957506001805474010000000000000000000000000000000000000000900460ff16105b8061021a5750303b15801561021a57506001805474010000000000000000000000000000000000000000900460ff16145b6102ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561033157600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b61036a6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6103c46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161038b57905050905081816000815181106103ed576103ed613060565b602002602001018190525061040b846104059061322d565b82610901565b61041433610a54565b7ffde37b21137b4b7756dfca206d851b867099ac8bf1e198ac669083e74f674d253385604051610445929190613410565b60405180910390a1505080156104b157600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6104bd610880565b6104c76000610a54565b565b60008167ffffffffffffffff8111156104e4576104e4613031565b60405190808252806020026020018201604052801561050d578160200160208202803683370190505b506040805160028082526060820183529293506000928392602083019080368337019050509050600061053e610ac9565b905060005b858110156107215786868281811061055d5761055d613060565b905060200281019061056f919061355d565b61057d90602081019061359b565b9050602014156107195786868281811061059957610599613060565b90506020028101906105ab919061355d565b6105b9906020810190613014565b73ffffffffffffffffffffffffffffffffffffffff16836000815181106105e2576105e2613060565b60200260200101818152505086868281811061060057610600613060565b9050602002810190610612919061355d565b61062090602081019061359b565b61062991613600565b60001c8360018151811061063f5761063f613060565b60200260200101818152505061065783836000610b26565b506000826020015160018460000151038151811061067757610677613060565b6020026020010151111561071457426002600089898581811061069c5761069c613060565b90506020028101906106ae919061355d565b6106bc90602081019061359b565b6106c591613600565b815260208101919091526040016000205561070d858888848181106106ec576106ec613060565b90506020028101906106fe919061355d565b6107079061363c565b86610df9565b6001909301925b600082525b600101610543565b5082156107a1576107328484610e23565b6040517f7c7d7f7a0000000000000000000000000000000000000000000000000000000081523390637c7d7f7a9061076e908790600401613695565b600060405180830381600087803b15801561078857600080fd5b505af115801561079c573d6000803e3d6000fd5b505050505b50505050505050565b60606107c46107bf6107ba610e92565b610efc565b61111d565b905090565b6107d1610880565b73ffffffffffffffffffffffffffffffffffffffff8116610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102a2565b61087d81610a54565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a2565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a19061099a907f000000000000000000000000000000000000000000000000000000000000000090879087906004016137cd565b6000604051808303816000875af11580156109b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109ff91908101906138b5565b9050610a0a8161115c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610afb6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6001546107c490610b219073ffffffffffffffffffffffffffffffffffffffff166111e7565b61121b565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ddf576003890198508886015180601f1a975061ffff8160081c169850506006881015610d575787610ba957866020028401518252602082019150610d6a565b6001881415610bc657602087028301518252602082019150610d6a565b6002881415610c50578c518710610c39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016102a2565b866020026020018d01518252602082019150610d6a565b6003881415610c98576000610c866040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610d6a565b6004881415610cb457610cad8d8d848a611387565b9150610d6a565b606087610ce2578c604051602001610ccc919061392c565b6040516020818303038152906040529050610d41565b6001881415610cfb57610cf48d6114f4565b9050610d41565b6002881415610d17576020808e0151604051610ccc92016139c3565b6003881415610d41578c516040805160208101929092520160405160208183030381529060405290505b805115610d5157610d5181611631565b50610d6a565b87610d66888463ffffffff8416565b9250505b60208c0151518c511115610dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102a2565b610b64565b6020838303048c52509750505050505050505b9392505050565b600082905080848381518110610e1157610e11613060565b60200260200101818152505050505050565b8151811115610e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a450000000000000000000000000000000000000000000060448201526064016102a2565b9052565b604080516001808252818301909252606091816020015b612e9a815260200190600190039081610ea95790505090506116c081600081518110610ed757610ed7613060565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505090565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526116fb60e084018190526117ef61010085015261187b61012085015261199c610140850152610160840152611a45610180840152611b4d6101a0840152611c216101c0840152611e1e6101e0840152611e29610200840152611e34610220840152611e3f610240840152611e4a610260840152611e7e610280840152611ee46102a0840152611f4a6102c0840152611f7e6102e0840152611fb2610300840152611fe76103208401526120426103408401526120986103608401526120c16103808401526121186103a08401526121456103c084015261219c6103e08401526122076104008401526122646104208401526122a26104408401526122db61046084015261230f6104808401526123416104a08401526123736104c08401526123a56104e08401526123d961050084015261242b61052084015261246461054084015261251661056084015261264361058084015261269f6105a08401526127596105c0840152835190850201909252919082815b83811015611114578581815181106110d3576110d3613060565b60200260200101518560286006018301815181106110f3576110f3613060565b67ffffffffffffffff909216602092830291909101909101526001016110b9565b50505050919050565b60606020820182516020028101600284015b8183101561114c578251815117815260209092019160020161112f565b5050825160020283525090919050565b600080611187836040516020016111739190613a28565b6040516020818303038152906040526127d5565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166111e1576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606112158260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612801565b92915050565b61124d6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61127f6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156112b3576112b3613031565b6040519080825280602002602001820160405280156112dc578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561131357611313613031565b60405190808252806020026020018201604052801561133c578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561137657816020820260200184015281516020018201915060018101905061134f565b505060408501525091949350505050565b600060078216600383811c168280826113c657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611411565b82600114156113ea57506fffffffffffffffffffffffffffffffff90506080611411565b8260021415611406575067ffffffffffffffff90506040611411565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff81111561143457611434613031565b60405190808252806020026020018201604052801561145d578160200160208202803683370190505b50905060208082019083028a03815b8b82101561148457815181526020918201910161146c565b505060608b015160808c015160209081029091010160005b6101008110156114e25760208502830182845b828110156114cb578051841c8a168252602091820191016114af565b5050506114d98e8e8b610b26565b9b50850161149c565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161154091906139c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261157c9291602001613a4e565b604051602081830303815290604052905060005b8560400151518110156116285781866040015182815181106115b4576115b4613060565b60200260200101515160001b876040015183815181106115d6576115d6613060565b60200260200101516040516020016115f093929190613a74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611590565b50949350505050565b61087d816040516024016116459190613001565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526128e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e29190613aab565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186f9190613aab565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e9190613aab565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016117a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2a9190613ac4565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161194d565b60008060008467ffffffffffffffff811115611c3f57611c3f613031565b604051908082528060200260200182016040528015611c68578160200160208202803683370190505b50905060008567ffffffffffffffff811115611c8657611c86613031565b604051908082528060200260200182016040528015611caf578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611d04578251815260209283019201611cec565b5050602088028101602084015b81831015611d29578251815260209283019201611d11565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611d839087908790600401613ae1565b600060405180830381865afa158015611da0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611de69190810190613b4e565b9050846020820160208a0281015b80821015611e0f578151835260209283019290910190611df4565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261186f828761290a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836117e282611ede858a61290a565b9061298b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836117e282611f44858a61290a565b906129aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261186f82876129bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261186f8287612a0a565b6000602083028203805b83811015611fdc5780518015611fd3578252611fdc565b50602001611fbc565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611fdc5780516120b95760008252611fdc565b6020016120a2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156121da57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121f9575080516020909101906121f28382612a68565b92506121ac565b505081526020019392505050565b6020828102820380516000928201835b858210801561224557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121f95750805160209091019061225d8382612aa4565b9250612217565b6020828102820380516000928201835b85821080156122835750826000105b156121f95750805160209091019061229b8382612ad3565b9250612274565b600060208302820380516000602083015b858110156121f957805183019150828210156122ce57600080fd5b90915081906020016122b3565b600060208302820380516000602083015b858110156121f957805191508161230257600080fd5b91819004916020016122ec565b6020828102820380516000928201835b858210156121f95750805160209091019061233a8184613d23565b925061231f565b6020828102820380516000928201835b858210156121f95750805182811115612368578092505b602082019150612351565b6020828102820380516000928201835b858210156121f9575080518281101561239a578092505b602082019150612383565b600060208302820380516000602083015b858110156121f95780519150816123cc57600080fd5b91819006916020016123b6565b60006020830282038051600080602084015b8681101561241c57831561241457805192508284029150828483041461241057600080fd5b8193505b6020016123eb565b50505081526020019392505050565b600060208302820380516000602083015b858110156121f9578051830391508282111561245757600080fd5b909150819060200161243c565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061194d9086908690600401613d2f565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906125ef90879087908790600401613d5e565b602060405180830381865afa15801561260c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126309190613aab565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836117e28383612ae9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156126cd576126cd613031565b6040519080825280602002602001820160405280156126f6578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561273257815181602001860152602082019150602081019050612710565b5050519050600061274583838989612b48565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856127c685858585612c98565b90955250949695505050505050565b60608151826040516020016127eb929190613d93565b6040516020818303038152906040529050919050565b6060833b80612820575050604080516020810190915260008152610df2565b8084111561283e575050604080516020810190915260008152610df2565b83831015612889576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102a2565b838303848203600082821061289e57826128a0565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561291f5783915050611215565b826012111561294b5750601282900361293981600a613d23565b6129439085613e2a565b915050611215565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161297a81600a613d23565b6129439085613e67565b5092915050565b6000816129a0670de0b6b3a764000085613e2a565b610df29190613e67565b6000670de0b6b3a76400006129a08385613e2a565b600081810b6129cf575081611215565b60008260000b13156129f7576129e682600a613ea2565b6129f09084613e2a565b9050611215565b60ff60008390031661297a81600a613d23565b6000806012831415612a1f5783915050611215565b8260121115612a395750601282900361297a81600a613d23565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161293981600a613d23565b6000828201838110612a7a5780612a9c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082612ab357506000611215565b82820282848281612ac657612ac66139f9565b041415612a7a5780612a9c565b6000818311612ae3576000610df2565b50900390565b60008060015b60088111612b40576000612b038683612d3e565b90506000612b118684612d3e565b90506000612b1f8383612ad3565b9050612b2f856001860383612deb565b94505060019092019150612aef9050565b509392505050565b835160009081908190819060015b60088111612c8a57600092508287612b8f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b93565b5060005b60005b83811015612c4857612bc18c8281518110612bb357612bb3613060565b602002602001015184612d3e565b95508a8611612c135788612be057612bd98683612e74565b9150612c0a565b6001891415612bf357612bd98683612e8a565b600289148015612c01575084155b15612c0a578591505b60019450612c40565b89612c40577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612c48565b600101612b96565b5083612c7157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612c7f866001840383612deb565b955050600101612b56565b509298975050505050505050565b6000826008811115612d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102a2565b6000855b85811015612d325763ffffffff6020820290811b199890981685891b17979150600101612d0a565b50959695505050505050565b6000816008811115612dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102a2565b82612dba5760009150612984565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612e59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102a2565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612e835781610df2565b5090919050565b600081831015612e835781610df2565b6104c7613eb1565b73ffffffffffffffffffffffffffffffffffffffff8116811461087d57600080fd5b600080600060408486031215612ed957600080fd5b8335612ee481612ea2565b9250602084013567ffffffffffffffff80821115612f0157600080fd5b818601915086601f830112612f1557600080fd5b813581811115612f2457600080fd5b8760208260051b8501011115612f3957600080fd5b6020830194508093505050509250925092565b600060208284031215612f5e57600080fd5b813567ffffffffffffffff811115612f7557600080fd5b820160408185031215610df257600080fd5b60005b83811015612fa2578181015183820152602001612f8a565b83811115612fb1576000848401525b50505050565b60008151808452612fcf816020860160208601612f87565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610df26020830184612fb7565b60006020828403121561302657600080fd5b8135610df281612ea2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6040805190810167ffffffffffffffff811182821017156130b2576130b2613031565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156130ff576130ff613031565b604052919050565b600067ffffffffffffffff82111561312157613121613031565b5060051b60200190565b600067ffffffffffffffff82111561314557613145613031565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261318257600080fd5b81356131956131908261312b565b6130b8565b8181528460208386010111156131aa57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126131d857600080fd5b813560206131e861319083613107565b82815260059290921b8401810191818101908684111561320757600080fd5b8286015b84811015613222578035835291830191830161320b565b509695505050505050565b60006040823603121561323f57600080fd5b61324761308f565b823567ffffffffffffffff8082111561325f57600080fd5b9084019036601f83011261327257600080fd5b8135602061328261319083613107565b82815260059290921b840181019181810190368411156132a157600080fd5b8286015b848110156132d9578035868111156132bd5760008081fd5b6132cb3686838b0101613171565b8452509183019183016132a5565b50865250868101359350828411156132f057600080fd5b6132fc368589016131c7565b908501525091949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261333f57600080fd5b830160208101925035905067ffffffffffffffff81111561335f57600080fd5b8060051b360383131561337157600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156133f357600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060408184015260808301613441858661330a565b6040808701528281845260a08701905060a08260051b88010193508260005b8381101561350a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126134c157600080fd5b8501803567ffffffffffffffff8111156134da57600080fd5b8036038713156134e957600080fd5b6134f688828b8501613378565b975050509186019190860190600101613460565b505050505061351b8286018661330a565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08583030160608601526135528284836133c1565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261359157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135d057600080fd5b83018035915067ffffffffffffffff8211156135eb57600080fd5b60200191503681900382131561337157600080fd5b80356020831015611215577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006040823603121561364e57600080fd5b61365661308f565b823561366181612ea2565b8152602083013567ffffffffffffffff81111561367d57600080fd5b61368936828601613171565b60208301525092915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561372f578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905261371c87850182612fb7565b95880195935050908601906001016136bc565b509098975050505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015613785578284038952613773848351612fb7565b9885019893509084019060010161375b565b5091979650505050505050565b600081518084526020808501945080840160005b838110156137c2578151875295820195908201906001016137a6565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a08651604080858801526138088388018361373d565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526138438483613792565b898103848b01528a51808252878c019550908701925060005b818110156138a35785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c09093019260010161385c565b50919c9b505050505050505050505050565b6000602082840312156138c757600080fd5b815167ffffffffffffffff8111156138de57600080fd5b8201601f810184136138ef57600080fd5b80516138fd6131908261312b565b81815285602083850101111561391257600080fd5b613923826020830160208601612f87565b95945050505050565b60208152815160208201526000602083015160a0604084015261395260c0840182613792565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301606086015261398e838361373d565b92506060860151915080858403016080860152506139ac8282613792565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156139ed578151855293820193908201906001016139d1565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613a41816001850160208701612f87565b9190910160010192915050565b82815260008251613a66816020850160208701612f87565b919091016020019392505050565b60008451613a86818460208901612f87565b82018481528351613a9e816020808501908801612f87565b0160200195945050505050565b600060208284031215613abd57600080fd5b5051919050565b600060208284031215613ad657600080fd5b8151610df281612ea2565b604080825283519082018190526000906020906060840190828701845b82811015613b3057815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613afe565b50505083810382850152613b448186613792565b9695505050505050565b60006020808385031215613b6157600080fd5b825167ffffffffffffffff811115613b7857600080fd5b8301601f81018513613b8957600080fd5b8051613b9761319082613107565b81815260059190911b82018301908381019087831115613bb657600080fd5b928401925b8284101561355257835182529284019290840190613bbb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613c5c57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613c4257613c42613bd4565b80851615613c4f57918102915b93841c9390800290613c08565b509250929050565b600082613c7357506001611215565b81613c8057506000611215565b8160018114613c965760028114613ca057613cbc565b6001915050611215565b60ff841115613cb157613cb1613bd4565b50506001821b611215565b5060208310610133831016604e8410600b8410161715613cdf575081810a611215565b613ce98383613c03565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613d1b57613d1b613bd4565b029392505050565b6000610df28383613c64565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a9c6040830184613792565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006139236060830184613792565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613e1c81600e850160208701612f87565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e6257613e62613bd4565b500290565b600082613e9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610df260ff841683613c64565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea264697066735822122063414491fbb7f97792d0946c4865fe572858ea31de1af738ab42862604befd1c64736f6c634300080a0033"; + +type AutoApproveFactoryConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AutoApproveFactoryConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AutoApproveFactory__factory extends ContractFactory { + constructor(...args: AutoApproveFactoryConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): AutoApproveFactory { + return super.attach(address) as AutoApproveFactory; + } + connect(signer: Signer): AutoApproveFactory__factory { + return super.connect(signer) as AutoApproveFactory__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AutoApproveFactoryInterface { + return new utils.Interface(_abi) as AutoApproveFactoryInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AutoApproveFactory { + return new Contract(address, _abi, signerOrProvider) as AutoApproveFactory; + } +} diff --git a/src/typechain/factories/AutoApproveStateBuilder__factory.ts b/src/typechain/factories/AutoApproveStateBuilder__factory.ts new file mode 100644 index 0000000..2ac7274 --- /dev/null +++ b/src/typechain/factories/AutoApproveStateBuilder__factory.ts @@ -0,0 +1,262 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + AutoApproveStateBuilder, + AutoApproveStateBuilderInterface, +} from "../AutoApproveStateBuilder"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "vm_", + type: "address", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "config_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + ], + internalType: "struct Bounds[]", + name: "boundss_", + type: "tuple[]", + }, + ], + name: "buildState", + outputs: [ + { + internalType: "bytes", + name: "state_", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "stackPops_", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "stackPushes_", + type: "uint256[]", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + ], + internalType: "struct Bounds", + name: "bounds_", + type: "tuple", + }, + ], + name: "ensureIntegrity", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stackPops", + outputs: [ + { + internalType: "uint256[]", + name: "pops_", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushes", + outputs: [ + { + internalType: "uint256[]", + name: "pushes_", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50611dd0806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d1461006f578063aa9628a114610077578063ce19c93514610097575b600080fd5b6100596100ac565b60405161006691906115c4565b60405180910390f35b6100596100c3565b61008a61008536600461191c565b6100d5565b6040516100669190611a3a565b6100aa6100a5366004611a8b565b6103b0565b005b60606100be6100b96107b8565b610803565b905090565b60606100be6100d06107b8565b6109d4565b606060006100e285610ba6565b905060006100f38260200151610f0b565b905060008060006101026100c3565b9050600061010e6100ac565b905060005b88518110156101d857866000015161ffff1689828151811061013757610137611b26565b602002602001015160a001818152505061016c83838c8c858151811061015f5761015f611b26565b60200260200101516103b0565b61019c89828151811061018157610181611b26565b60200260200101516080015186610f3f90919063ffffffff16565b94506101ce8982815181106101b3576101b3611b26565b60200260200101516060015185610f3f90919063ffffffff16565b9350600101610113565b506000848a60200151510167ffffffffffffffff8111156101fb576101fb611608565b604051908082528060200260200182016040528015610224578160200160208202803683370190505b50905060005b8a602001515181101561027a578a60200151818151811061024d5761024d611b26565b602002602001015182828151811061026757610267611b26565b602090810291909101015260010161022a565b5089515160009067ffffffffffffffff81111561029957610299611608565b6040519080825280602002602001820160405280156102cc57816020015b60608152602001906001900390816102b75790505b50905060005b8b515181101561032857610303888d6000015183815181106102f6576102f6611b26565b6020026020010151610f58565b82828151811061031557610315611b26565b60209081029190910101526001016102d2565b506103a06040518060a00160405280600081526020018767ffffffffffffffff81111561035757610357611608565b604051908082528060200260200182016040528015610380578160200160208202803683370190505b5081526020018381526020018481526020018d60200151518152506110e8565b9c9b505050505050505050505050565b80518251518110610422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b838510156106cb576002850194508481015180601e1a935080601f1a925050600683101561060c57826104ec5787602001515187608001510182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e5400000000000000000000000000000000000000006044820152606401610419565b60408701805160010190526106ae565b600183141561056257866040015182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b00000000000000000000000000000000000000000000006044820152606401610419565b600283141561057b5760408701805160010190526106ae565b60038314156105f1578660a0015182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f524147450000000000000000000000000000000000000000006044820152606401610419565b6004831415610607576106078a8a8a8a86611225565b6106ae565b60008a848151811061062057610620611b26565b60200260200101519050600581111561064557806106418463ffffffff8316565b9150505b60408801805182900390819052606089015161066091610f3f565b606089015289516000908b908690811061067c5761067c611b26565b6020026020010151905060058111156106a1578061069d8563ffffffff8316565b9150505b6040890180519091019052505b604087015160608801516106c191610f3f565b606088015261043b565b606087015160ff101561073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b00000000000000000000000000000000000000000000006044820152606401610419565b8660200151876040015110156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e4445580000000000000000000000000000006044820152606401610419565b50505050505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090506001816000815181106107f3576107f3611b26565b6020908102919091010152919050565b60606000825190506000604051806105e00160405280836028600601018152602001600181526020016001815260200160018152602001600181526020016000815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016108896112c890565b81526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152509050604051602083020160405280925060005b828110156109cc5784818151811061099957610999611b26565b60200260200101518460286006018301815181106109b9576109b9611b26565b602090810291909101015260010161097f565b505050919050565b805160609060006112c890506000604051806105e0016040528084602860060101815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160028152602001600181526020016003815260200160028152602001600281526020016002815260200160038152602001610a5e61133790565b81526020016000815260200160008152602001600081526020016000815260200160018152602001600281526020016002815260200160018152602001600181526020018381526020016003815260200160028152602001838152602001600281526020016001815260200160028152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001610b1c6113ac90565b81526020016113b28152600260208201526040016113b8815260200160028152509050604051602084020160405280935060005b83811015610b9d57858181518110610b6a57610b6a611b26565b6020026020010151856028600601830181518110610b8a57610b8a611b26565b6020908102919091010152600101610b50565b50505050919050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610f065760008273ffffffffffffffffffffffffffffffffffffffff163b11610c7f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d00000000000000000000000000000000000000000000006044820152606401610419565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d129190810190611b55565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d849190611bcc565b905061ffff801681602001511115610df8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f444553000000000000000000000000006044820152606401610419565b6002825181610e0957610e09611c1b565b0615610e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e54455253000000000000000000000000000000006044820152606401610419565b6040518060400160405280826020015161ffff168152602001610e9384611425565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610f398260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6114b0565b92915050565b600081831015610f4f5781610f51565b825b9392505050565b805182516060919060011615610fca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f5054525300000000000000000000000000000000006044820152606401610419565b6002810615611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e4754480000000000000000000000000000006044820152606401610419565b60006002600383020467ffffffffffffffff81111561105657611056611608565b6040519080825280601f01601f191660200182016040528015611080576020820181803683370190505b50905060056002808701908681019085880101600385015b818310156110da57825180601e1a868111156110b95760020285015161ffff165b81601f1a8160081b1783511783525050600283019250600381019050611098565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016111349190611c4a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526111709291602001611c80565b604051602081830303815290604052905060005b85604001515181101561121c5781866040015182815181106111a8576111a8611b26565b60200260200101515160001b876040015183815181106111ca576111ca611b26565b60200260200101516040516020016111e493929190611ca6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611184565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c918290030191829052606084015160019091019161126f9190610f3f565b606084015260808301516112839082610f3f565b60808401528251600783168085526001600385811c161b919060005b838110156112bb576112b38a8a8a8a6103b0565b60010161129f565b5050909352505050505050565b6000808211611333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f305f4f504552414e445f4e5a4f4e0000000000000000000000000000000000006044820152606401610419565b5090565b60008082116113a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f305f4f504552414e445f455243313135350000000000000000000000000000006044820152606401610419565b5060020260010190565b60020190565b60030190565b6000601f821680610f39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e440000000000000000000000000000000000000000006044820152606401610419565b6000806114508360405160200161143c9190611cdd565b604051602081830303815290604052611598565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166114aa576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b806114cf575050604080516020810190915260008152610f51565b808411156114ed575050604080516020810190915260008152610f51565b83831015611538576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610419565b838303848203600082821061154d578261154f565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b60608151826040516020016115ae929190611d03565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b818110156115fc578351835292840192918401916001016115e0565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561165a5761165a611608565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156116a7576116a7611608565b604052919050565b600067ffffffffffffffff8211156116c9576116c9611608565b5060051b60200190565b600067ffffffffffffffff8211156116ed576116ed611608565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261172a57600080fd5b8135602061173f61173a836116af565b611660565b82815260059290921b8401810191818101908684111561175e57600080fd5b8286015b848110156117795780358352918301918301611762565b509695505050505050565b6000604080838503121561179757600080fd5b61179f611637565b9150823567ffffffffffffffff808211156117b957600080fd5b818501915085601f8301126117cd57600080fd5b813560206117dd61173a836116af565b82815260059290921b840181019181810190898411156117fc57600080fd5b8286015b84811015611870578035868111156118185760008081fd5b8701603f81018c1361182a5760008081fd5b8481013561183a61173a826116d3565b8181528d8b83850101111561184f5760008081fd5b818b8401888301376000918101870191909152845250918301918301611800565b508752508681013594508285111561188757600080fd5b61189388868901611719565b81870152505050505092915050565b600060c082840312156118b457600080fd5b60405160c0810181811067ffffffffffffffff821117156118d7576118d7611608565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060006060848603121561193157600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461195557600080fd5b925060208481013567ffffffffffffffff8082111561197357600080fd5b61197f88838901611784565b9450604087013591508082111561199557600080fd5b508501601f810187136119a757600080fd5b80356119b561173a826116af565b81815260c0918202830184019184820191908a8411156119d457600080fd5b938501935b838510156119fa576119eb8b866118a2565b835293840193918501916119d9565b5080955050505050509250925092565b60005b83811015611a25578181015183820152602001611a0d565b83811115611a34576000848401525b50505050565b6020815260008251806020840152611a59816040850160208701611a0a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806101208587031215611aa257600080fd5b843567ffffffffffffffff80821115611aba57600080fd5b611ac688838901611719565b95506020870135915080821115611adc57600080fd5b611ae888838901611719565b94506040870135915080821115611afe57600080fd5b50611b0b87828801611784565b925050611b1b86606087016118a2565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611b6757600080fd5b815167ffffffffffffffff811115611b7e57600080fd5b8201601f81018413611b8f57600080fd5b8051611b9d61173a826116d3565b818152856020838501011115611bb257600080fd5b611bc3826020830160208601611a0a565b95945050505050565b600060408284031215611bde57600080fd5b6040516040810181811067ffffffffffffffff82111715611c0157611c01611608565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b83811015611c7457815185529382019390820190600101611c58565b50929695505050505050565b82815260008251611c98816020850160208701611a0a565b919091016020019392505050565b60008451611cb8818460208901611a0a565b82018481528351611cd0816020808501908801611a0a565b0160200195945050505050565b6000815260008251611cf6816001850160208701611a0a565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d8c81600e850160208701611a0a565b91909101600e01939250505056fea2646970667358221220e9f523bdba3c8b51ae33ad4c5dcfd9c22bf320d386e324010146e587f59fa8d164736f6c634300080a0033"; + +type AutoApproveStateBuilderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AutoApproveStateBuilderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AutoApproveStateBuilder__factory extends ContractFactory { + constructor(...args: AutoApproveStateBuilderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): AutoApproveStateBuilder { + return super.attach(address) as AutoApproveStateBuilder; + } + connect(signer: Signer): AutoApproveStateBuilder__factory { + return super.connect(signer) as AutoApproveStateBuilder__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AutoApproveStateBuilderInterface { + return new utils.Interface(_abi) as AutoApproveStateBuilderInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AutoApproveStateBuilder { + return new Contract( + address, + _abi, + signerOrProvider + ) as AutoApproveStateBuilder; + } +} diff --git a/src/typechain/factories/AutoApprove__factory.ts b/src/typechain/factories/AutoApprove__factory.ts new file mode 100644 index 0000000..069f3ba --- /dev/null +++ b/src/typechain/factories/AutoApprove__factory.ts @@ -0,0 +1,379 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { AutoApprove, AutoApproveInterface } from "../AutoApprove"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + indexed: false, + internalType: "struct StateConfig", + name: "config", + type: "tuple", + }, + ], + name: "Initialize", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterAdd", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "approver_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterApprove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "banner_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterBan", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "remover_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterRemove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x60c06040523480156200001157600080fd5b50604051620040ee380380620040ee833981016040819052620000349162000180565b80620000403362000061565b306080526001600160a01b031660a0526200005a620000b1565b50620001b2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600154600160a81b900460ff1615620001205760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff600160a01b909104811610156200017e576001805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200019357600080fd5b81516001600160a01b0381168114620001ab57600080fd5b9392505050565b60805160a051613f16620001d860003960006109410152600061096e0152613f166000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80638f6b114611610076578063ea7cb3701161005b578063ea7cb3701461016b578063ebae2d8c146100c3578063f2fde38b1461018057600080fd5b80638f6b1146146100c3578063e0419ae31461013357600080fd5b8063715018a6116100a7578063715018a6146100eb57806389bd6b26146100f35780638da5cb5b1461010657600080fd5b8063376dcbe2146100c35780634e75d77e146100d8575b600080fd5b6100d66100d1366004612ec4565b610193565b005b6100d66100e6366004612f4c565b6101a0565b6100d66104b5565b6100d6610101366004612ec4565b6104c9565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60408051808201825260008082526020918201819052825180840184528181528201818152835191825251918101919091520161012a565b6101736107aa565b60405161012a9190613001565b6100d661018e366004613014565b6107c9565b61019b610880565b505050565b6001547501000000000000000000000000000000000000000000900460ff16158080156101e957506001805474010000000000000000000000000000000000000000900460ff16105b8061021a5750303b15801561021a57506001805474010000000000000000000000000000000000000000900460ff16145b6102ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561033157600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b61036a6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6103c46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161038b57905050905081816000815181106103ed576103ed613060565b602002602001018190525061040b846104059061322d565b82610901565b61041433610a54565b7ffde37b21137b4b7756dfca206d851b867099ac8bf1e198ac669083e74f674d253385604051610445929190613410565b60405180910390a1505080156104b157600180547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6104bd610880565b6104c76000610a54565b565b60008167ffffffffffffffff8111156104e4576104e4613031565b60405190808252806020026020018201604052801561050d578160200160208202803683370190505b506040805160028082526060820183529293506000928392602083019080368337019050509050600061053e610ac9565b905060005b858110156107215786868281811061055d5761055d613060565b905060200281019061056f919061355d565b61057d90602081019061359b565b9050602014156107195786868281811061059957610599613060565b90506020028101906105ab919061355d565b6105b9906020810190613014565b73ffffffffffffffffffffffffffffffffffffffff16836000815181106105e2576105e2613060565b60200260200101818152505086868281811061060057610600613060565b9050602002810190610612919061355d565b61062090602081019061359b565b61062991613600565b60001c8360018151811061063f5761063f613060565b60200260200101818152505061065783836000610b26565b506000826020015160018460000151038151811061067757610677613060565b6020026020010151111561071457426002600089898581811061069c5761069c613060565b90506020028101906106ae919061355d565b6106bc90602081019061359b565b6106c591613600565b815260208101919091526040016000205561070d858888848181106106ec576106ec613060565b90506020028101906106fe919061355d565b6107079061363c565b86610df9565b6001909301925b600082525b600101610543565b5082156107a1576107328484610e23565b6040517f7c7d7f7a0000000000000000000000000000000000000000000000000000000081523390637c7d7f7a9061076e908790600401613695565b600060405180830381600087803b15801561078857600080fd5b505af115801561079c573d6000803e3d6000fd5b505050505b50505050505050565b60606107c46107bf6107ba610e92565b610efc565b61111d565b905090565b6107d1610880565b73ffffffffffffffffffffffffffffffffffffffff8116610874576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016102a2565b61087d81610a54565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102a2565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a19061099a907f000000000000000000000000000000000000000000000000000000000000000090879087906004016137cd565b6000604051808303816000875af11580156109b9573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109ff91908101906138b5565b9050610a0a8161115c565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610afb6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6001546107c490610b219073ffffffffffffffffffffffffffffffffffffffff166111e7565b61121b565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ddf576003890198508886015180601f1a975061ffff8160081c169850506006881015610d575787610ba957866020028401518252602082019150610d6a565b6001881415610bc657602087028301518252602082019150610d6a565b6002881415610c50578c518710610c39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016102a2565b866020026020018d01518252602082019150610d6a565b6003881415610c98576000610c866040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610d6a565b6004881415610cb457610cad8d8d848a611387565b9150610d6a565b606087610ce2578c604051602001610ccc919061392c565b6040516020818303038152906040529050610d41565b6001881415610cfb57610cf48d6114f4565b9050610d41565b6002881415610d17576020808e0151604051610ccc92016139c3565b6003881415610d41578c516040805160208101929092520160405160208183030381529060405290505b805115610d5157610d5181611631565b50610d6a565b87610d66888463ffffffff8416565b9250505b60208c0151518c511115610dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102a2565b610b64565b6020838303048c52509750505050505050505b9392505050565b600082905080848381518110610e1157610e11613060565b60200260200101818152505050505050565b8151811115610e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a450000000000000000000000000000000000000000000060448201526064016102a2565b9052565b604080516001808252818301909252606091816020015b612e9a815260200190600190039081610ea95790505090506116c081600081518110610ed757610ed7613060565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505090565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526116fb60e084018190526117ef61010085015261187b61012085015261199c610140850152610160840152611a45610180840152611b4d6101a0840152611c216101c0840152611e1e6101e0840152611e29610200840152611e34610220840152611e3f610240840152611e4a610260840152611e7e610280840152611ee46102a0840152611f4a6102c0840152611f7e6102e0840152611fb2610300840152611fe76103208401526120426103408401526120986103608401526120c16103808401526121186103a08401526121456103c084015261219c6103e08401526122076104008401526122646104208401526122a26104408401526122db61046084015261230f6104808401526123416104a08401526123736104c08401526123a56104e08401526123d961050084015261242b61052084015261246461054084015261251661056084015261264361058084015261269f6105a08401526127596105c0840152835190850201909252919082815b83811015611114578581815181106110d3576110d3613060565b60200260200101518560286006018301815181106110f3576110f3613060565b67ffffffffffffffff909216602092830291909101909101526001016110b9565b50505050919050565b60606020820182516020028101600284015b8183101561114c578251815117815260209092019160020161112f565b5050825160020283525090919050565b600080611187836040516020016111739190613a28565b6040516020818303038152906040526127d5565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166111e1576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606112158260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612801565b92915050565b61124d6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61127f6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156112b3576112b3613031565b6040519080825280602002602001820160405280156112dc578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561131357611313613031565b60405190808252806020026020018201604052801561133c578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561137657816020820260200184015281516020018201915060018101905061134f565b505060408501525091949350505050565b600060078216600383811c168280826113c657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611411565b82600114156113ea57506fffffffffffffffffffffffffffffffff90506080611411565b8260021415611406575067ffffffffffffffff90506040611411565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff81111561143457611434613031565b60405190808252806020026020018201604052801561145d578160200160208202803683370190505b50905060208082019083028a03815b8b82101561148457815181526020918201910161146c565b505060608b015160808c015160209081029091010160005b6101008110156114e25760208502830182845b828110156114cb578051841c8a168252602091820191016114af565b5050506114d98e8e8b610b26565b9b50850161149c565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161154091906139c3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261157c9291602001613a4e565b604051602081830303815290604052905060005b8560400151518110156116285781866040015182815181106115b4576115b4613060565b60200260200101515160001b876040015183815181106115d6576115d6613060565b60200260200101516040516020016115f093929190613a74565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611590565b50949350505050565b61087d816040516024016116459190613001565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526128e9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156117be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e29190613aab565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561184b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061186f9190613aab565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561196a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061198e9190613aab565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016117a1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611b06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2a9190613ac4565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161194d565b60008060008467ffffffffffffffff811115611c3f57611c3f613031565b604051908082528060200260200182016040528015611c68578160200160208202803683370190505b50905060008567ffffffffffffffff811115611c8657611c86613031565b604051908082528060200260200182016040528015611caf578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611d04578251815260209283019201611cec565b5050602088028101602084015b81831015611d29578251815260209283019201611d11565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611d839087908790600401613ae1565b600060405180830381865afa158015611da0573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611de69190810190613b4e565b9050846020820160208a0281015b80821015611e0f578151835260209283019290910190611df4565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261186f828761290a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836117e282611ede858a61290a565b9061298b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836117e282611f44858a61290a565b906129aa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261186f82876129bf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261186f8287612a0a565b6000602083028203805b83811015611fdc5780518015611fd3578252611fdc565b50602001611fbc565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611fdc5780516120b95760008252611fdc565b6020016120a2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156121da57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121f9575080516020909101906121f28382612a68565b92506121ac565b505081526020019392505050565b6020828102820380516000928201835b858210801561224557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121f95750805160209091019061225d8382612aa4565b9250612217565b6020828102820380516000928201835b85821080156122835750826000105b156121f95750805160209091019061229b8382612ad3565b9250612274565b600060208302820380516000602083015b858110156121f957805183019150828210156122ce57600080fd5b90915081906020016122b3565b600060208302820380516000602083015b858110156121f957805191508161230257600080fd5b91819004916020016122ec565b6020828102820380516000928201835b858210156121f95750805160209091019061233a8184613d23565b925061231f565b6020828102820380516000928201835b858210156121f95750805182811115612368578092505b602082019150612351565b6020828102820380516000928201835b858210156121f9575080518281101561239a578092505b602082019150612383565b600060208302820380516000602083015b858110156121f95780519150816123cc57600080fd5b91819006916020016123b6565b60006020830282038051600080602084015b8681101561241c57831561241457805192508284029150828483041461241057600080fd5b8193505b6020016123eb565b50505081526020019392505050565b600060208302820380516000602083015b858110156121f9578051830391508282111561245757600080fd5b909150819060200161243c565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061194d9086908690600401613d2f565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906125ef90879087908790600401613d5e565b602060405180830381865afa15801561260c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126309190613aab565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836117e28383612ae9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156126cd576126cd613031565b6040519080825280602002602001820160405280156126f6578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561273257815181602001860152602082019150602081019050612710565b5050519050600061274583838989612b48565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856127c685858585612c98565b90955250949695505050505050565b60608151826040516020016127eb929190613d93565b6040516020818303038152906040529050919050565b6060833b80612820575050604080516020810190915260008152610df2565b8084111561283e575050604080516020810190915260008152610df2565b83831015612889576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102a2565b838303848203600082821061289e57826128a0565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561291f5783915050611215565b826012111561294b5750601282900361293981600a613d23565b6129439085613e2a565b915050611215565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161297a81600a613d23565b6129439085613e67565b5092915050565b6000816129a0670de0b6b3a764000085613e2a565b610df29190613e67565b6000670de0b6b3a76400006129a08385613e2a565b600081810b6129cf575081611215565b60008260000b13156129f7576129e682600a613ea2565b6129f09084613e2a565b9050611215565b60ff60008390031661297a81600a613d23565b6000806012831415612a1f5783915050611215565b8260121115612a395750601282900361297a81600a613d23565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161293981600a613d23565b6000828201838110612a7a5780612a9c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082612ab357506000611215565b82820282848281612ac657612ac66139f9565b041415612a7a5780612a9c565b6000818311612ae3576000610df2565b50900390565b60008060015b60088111612b40576000612b038683612d3e565b90506000612b118684612d3e565b90506000612b1f8383612ad3565b9050612b2f856001860383612deb565b94505060019092019150612aef9050565b509392505050565b835160009081908190819060015b60088111612c8a57600092508287612b8f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b93565b5060005b60005b83811015612c4857612bc18c8281518110612bb357612bb3613060565b602002602001015184612d3e565b95508a8611612c135788612be057612bd98683612e74565b9150612c0a565b6001891415612bf357612bd98683612e8a565b600289148015612c01575084155b15612c0a578591505b60019450612c40565b89612c40577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612c48565b600101612b96565b5083612c7157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612c7f866001840383612deb565b955050600101612b56565b509298975050505050505050565b6000826008811115612d06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102a2565b6000855b85811015612d325763ffffffff6020820290811b199890981685891b17979150600101612d0a565b50959695505050505050565b6000816008811115612dac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102a2565b82612dba5760009150612984565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612e59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102a2565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612e835781610df2565b5090919050565b600081831015612e835781610df2565b6104c7613eb1565b73ffffffffffffffffffffffffffffffffffffffff8116811461087d57600080fd5b600080600060408486031215612ed957600080fd5b8335612ee481612ea2565b9250602084013567ffffffffffffffff80821115612f0157600080fd5b818601915086601f830112612f1557600080fd5b813581811115612f2457600080fd5b8760208260051b8501011115612f3957600080fd5b6020830194508093505050509250925092565b600060208284031215612f5e57600080fd5b813567ffffffffffffffff811115612f7557600080fd5b820160408185031215610df257600080fd5b60005b83811015612fa2578181015183820152602001612f8a565b83811115612fb1576000848401525b50505050565b60008151808452612fcf816020860160208601612f87565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610df26020830184612fb7565b60006020828403121561302657600080fd5b8135610df281612ea2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6040805190810167ffffffffffffffff811182821017156130b2576130b2613031565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156130ff576130ff613031565b604052919050565b600067ffffffffffffffff82111561312157613121613031565b5060051b60200190565b600067ffffffffffffffff82111561314557613145613031565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261318257600080fd5b81356131956131908261312b565b6130b8565b8181528460208386010111156131aa57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f8301126131d857600080fd5b813560206131e861319083613107565b82815260059290921b8401810191818101908684111561320757600080fd5b8286015b84811015613222578035835291830191830161320b565b509695505050505050565b60006040823603121561323f57600080fd5b61324761308f565b823567ffffffffffffffff8082111561325f57600080fd5b9084019036601f83011261327257600080fd5b8135602061328261319083613107565b82815260059290921b840181019181810190368411156132a157600080fd5b8286015b848110156132d9578035868111156132bd5760008081fd5b6132cb3686838b0101613171565b8452509183019183016132a5565b50865250868101359350828411156132f057600080fd5b6132fc368589016131c7565b908501525091949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261333f57600080fd5b830160208101925035905067ffffffffffffffff81111561335f57600080fd5b8060051b360383131561337157600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156133f357600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060408184015260808301613441858661330a565b6040808701528281845260a08701905060a08260051b88010193508260005b8381101561350a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126134c157600080fd5b8501803567ffffffffffffffff8111156134da57600080fd5b8036038713156134e957600080fd5b6134f688828b8501613378565b975050509186019190860190600101613460565b505050505061351b8286018661330a565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08583030160608601526135528284836133c1565b979650505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261359157600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126135d057600080fd5b83018035915067ffffffffffffffff8211156135eb57600080fd5b60200191503681900382131561337157600080fd5b80356020831015611215577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b60006040823603121561364e57600080fd5b61365661308f565b823561366181612ea2565b8152602083013567ffffffffffffffff81111561367d57600080fd5b61368936828601613171565b60208301525092915050565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561372f578883037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc00185528151805173ffffffffffffffffffffffffffffffffffffffff16845287015187840187905261371c87850182612fb7565b95880195935050908601906001016136bc565b509098975050505050505050565b600081518084526020808501808196508360051b8101915082860160005b85811015613785578284038952613773848351612fb7565b9885019893509084019060010161375b565b5091979650505050505050565b600081518084526020808501945080840160005b838110156137c2578151875295820195908201906001016137a6565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a08651604080858801526138088388018361373d565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526138438483613792565b898103848b01528a51808252878c019550908701925060005b818110156138a35785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c09093019260010161385c565b50919c9b505050505050505050505050565b6000602082840312156138c757600080fd5b815167ffffffffffffffff8111156138de57600080fd5b8201601f810184136138ef57600080fd5b80516138fd6131908261312b565b81815285602083850101111561391257600080fd5b613923826020830160208601612f87565b95945050505050565b60208152815160208201526000602083015160a0604084015261395260c0840182613792565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301606086015261398e838361373d565b92506060860151915080858403016080860152506139ac8282613792565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156139ed578151855293820193908201906001016139d1565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613a41816001850160208701612f87565b9190910160010192915050565b82815260008251613a66816020850160208701612f87565b919091016020019392505050565b60008451613a86818460208901612f87565b82018481528351613a9e816020808501908801612f87565b0160200195945050505050565b600060208284031215613abd57600080fd5b5051919050565b600060208284031215613ad657600080fd5b8151610df281612ea2565b604080825283519082018190526000906020906060840190828701845b82811015613b3057815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613afe565b50505083810382850152613b448186613792565b9695505050505050565b60006020808385031215613b6157600080fd5b825167ffffffffffffffff811115613b7857600080fd5b8301601f81018513613b8957600080fd5b8051613b9761319082613107565b81815260059190911b82018301908381019087831115613bb657600080fd5b928401925b8284101561355257835182529284019290840190613bbb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115613c5c57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613c4257613c42613bd4565b80851615613c4f57918102915b93841c9390800290613c08565b509250929050565b600082613c7357506001611215565b81613c8057506000611215565b8160018114613c965760028114613ca057613cbc565b6001915050611215565b60ff841115613cb157613cb1613bd4565b50506001821b611215565b5060208310610133831016604e8410600b8410161715613cdf575081810a611215565b613ce98383613c03565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613d1b57613d1b613bd4565b029392505050565b6000610df28383613c64565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a9c6040830184613792565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006139236060830184613792565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613e1c81600e850160208701612f87565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613e6257613e62613bd4565b500290565b600082613e9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610df260ff841683613c64565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea264697066735822122063414491fbb7f97792d0946c4865fe572858ea31de1af738ab42862604befd1c64736f6c634300080a0033"; + +type AutoApproveConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AutoApproveConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AutoApprove__factory extends ContractFactory { + constructor(...args: AutoApproveConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): AutoApprove { + return super.attach(address) as AutoApprove; + } + connect(signer: Signer): AutoApprove__factory { + return super.connect(signer) as AutoApprove__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AutoApproveInterface { + return new utils.Interface(_abi) as AutoApproveInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AutoApprove { + return new Contract(address, _abi, signerOrProvider) as AutoApprove; + } +} diff --git a/src/typechain/factories/CombineTierFactory__factory.ts b/src/typechain/factories/CombineTierFactory__factory.ts index f849e39..96d7eb9 100644 --- a/src/typechain/factories/CombineTierFactory__factory.ts +++ b/src/typechain/factories/CombineTierFactory__factory.ts @@ -155,7 +155,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516149d03803806149d083398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b613b8980610e4783390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610d226101256000396000818160a501526103790152610d226000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062e44217146100505780632ea72a491461008d5780635c60da1b146100a0578063fc91a897146100c7575b600080fd5b61006361005e36600461050f565b610110565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006361009b366004610551565b6101b3565b6100637f000000000000000000000000000000000000000000000000000000000000000081565b6101006100d53660046105e8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610084565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a498360405160200161013f919061070b565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016a91906108eb565b6020604051808303816000875af1158015610189573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ad91906108fe565b92915050565b600060026000541415610227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102388484610361565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021e565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037083850185610a51565b9050600061039d7f000000000000000000000000000000000000000000000000000000000000000061042d565b6040517fa225543b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a225543b906103f2908590600401610bfa565b600060405180830381600087803b15801561040c57600080fd5b505af1158015610420573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021e565b919050565b60006020828403121561052157600080fd5b813567ffffffffffffffff81111561053857600080fd5b82016040818503121561054a57600080fd5b9392505050565b6000806020838503121561056457600080fd5b823567ffffffffffffffff8082111561057c57600080fd5b818501915085601f83011261059057600080fd5b81358181111561059f57600080fd5b8660208285010111156105b157600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e557600080fd5b50565b6000602082840312156105fa57600080fd5b813561054a816105c3565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063a57600080fd5b830160208101925035905067ffffffffffffffff81111561065a57600080fd5b8060051b360383131561066c57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156106ee57600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006020808352833581840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261074c57600080fd5b604084810152840160a084016107628280610605565b604060608801528281845260c08801905060c08260051b89010193508260005b8381101561082c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126107e357600080fd5b8501803567ffffffffffffffff8111156107fc57600080fd5b80360387131561080b57600080fd5b61081888828c8501610673565b975050509187019190870190600101610782565b505050505061083d83830183610605565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08582030160808601526108768184846106bc565b9695505050505050565b6000815180845260005b818110156108a65760208185018101518683018201520161088a565b818111156108b8576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054a6020830184610880565b60006020828403121561091057600080fd5b815161054a816105c3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561096d5761096d61091b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109ba576109ba61091b565b604052919050565b600067ffffffffffffffff8211156109dc576109dc61091b565b5060051b60200190565b600082601f8301126109f757600080fd5b81356020610a0c610a07836109c2565b610973565b82815260059290921b84018101918181019086841115610a2b57600080fd5b8286015b84811015610a465780358352918301918301610a2f565b509695505050505050565b60006020808385031215610a6457600080fd5b823567ffffffffffffffff80821115610a7c57600080fd5b9084019060408287031215610a9057600080fd5b610a9861094a565b823581528383013582811115610aad57600080fd5b929092019160408388031215610ac257600080fd5b610aca61094a565b833583811115610ad957600080fd5b8401601f81018913610aea57600080fd5b8035610af8610a07826109c2565b81815260059190911b8201870190878101908b831115610b1757600080fd5b8884015b83811015610bc157803588811115610b335760008081fd5b8501603f81018e13610b455760008081fd5b8a81013589811115610b5957610b5961091b565b610b898c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601610973565b8181528f6040838501011115610b9f5760008081fd5b81604084018e83013760009181018d0191909152845250918901918901610b1b565b5084525050508385013583811115610bd857600080fd5b610be4898287016109e6565b8287015250938101939093525090949350505050565b600060208083528351818401528084015160408085015260a0840181516040606087015281815180845260c08801915060c08160051b8901019350858301925060005b81811015610c89577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff40898603018352610c77858551610880565b94509286019291860191600101610c3d565b50505050908201518482037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0016080860152805180835290830191600091908401905b80831015610a465783518252928401926001929092019190840190610ccc56fea2646970667358221220a6122ecde5cc2d5581435f7e3d3124c323d507b80b9baaeac685351ec963faf664736f6c634300080a003360c06040523480156200001157600080fd5b5060405162003b8938038062003b8983398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613ae7620000a260003960006106b3015260006106ef0152613ae76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612c05565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612d0b565b610365565b604051908152602001610096565b6100d36100ce366004612db6565b610459565b005b6100b26100e3366004612df1565b61097b565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261157a60e0820181905261166e6101008301526116fa61012083015261181b6101408301526101608201526118c46101808201526119cc6101a0820152611aa06101c0820152611c9d6101e0820152611ca8610200820152611cb3610220820152611cbe610240820152611cc9610260820152611cfd610280820152611d636102a0820152611dc96102c0820152611dfd6102e0820152611e31610300820152611e66610320820152611ec1610340820152611f17610360820152611f40610380820152611f976103a0820152611fc46103c082015261201b6103e08201526120866104008201526120e361042082015261212161044082015261215a61046082015261218e6104808201526121c06104a08201526121f26104c08201526122246104e08201526122586105008201526122aa6105208201526122e36105408201526123956105608201526124c261058082015261251e6105a08201526125d86105c080830191909152815290516100969190612ef7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b610aa1565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612f40565b604051602081830303815290604052905061042381836000610c0d565b506020820151825161043790600190612f95565b8151811061044757610447612fac565b60200260200101519250505092915050565b600054610100900460ff16158080156104795750600054600160ff909116105b806104935750303b158015610493575060005460ff166001145b610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561058257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c26040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b61065c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161061c579050509050828160008151811061068557610685612fac565b602002602001018190525081816001815181106106a4576106a4612fac565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000088806020019061071e9190612fdb565b856040518463ffffffff1660e01b815260040161073d9392919061321e565b6000604051808303816000875af115801561075c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107a291908101906132cf565b90506107ad81610ee3565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156108d65761085e6108136020890189612fdb565b610821906020810190613378565b8381811061083157610831612fac565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610f6e565b6108c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f54494552563200000000000000000000000000000000000000604482015260640161051b565b806108ce816133e0565b9150506107fa565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c51483387604051610908929190613419565b60405180910390a150505050801561097757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806109ac610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016109e1929190613496565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a1e9392916020016134db565b6040516020818303038152906040529050610a3b81836001610c0d565b5060208201518251610a4f90600190612f95565b81518110610a5f57610a5f612fac565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f8a565b610ad36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610b056040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610b3957610b39612c69565b604051908082528060200260200182016040528015610b62578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610b9957610b99612c69565b604051908082528060200260200182016040528015610bc2578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610bfc578160208202602001840152815160200182019150600181019050610bd5565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ec9576003890198508886015180601f1a975061ffff8160081c169850506006881015610e415787610c9057866020028401518252602082019150610e54565b6001881415610cad57602087028301518252602082019150610e54565b6002881415610d3a578c518760200210610d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161051b565b866020026020018d01518252602082019150610e54565b6003881415610d82576000610d706040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610e54565b6004881415610d9e57610d978d8d848a611072565b9150610e54565b606087610dcc578c604051602001610db69190613543565b6040516020818303038152906040529050610e2b565b6001881415610de557610dde8d6111df565b9050610e2b565b6002881415610e01576020808e0151604051610db69201612f0a565b6003881415610e2b578c516040805160208101929092520160405160208183030381529060405290505b805115610e3b57610e3b8161131c565b50610e54565b87610e50888463ffffffff8416565b9250505b60208c0151518c511115610ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161051b565b610c4b565b6020838303048c52509750505050505050505b9392505050565b600080610f0e83604051602001610efa9190613648565b6040516020818303038152906040526113ae565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610f68576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610f79836113da565b8015610edc5750610edc838361143e565b6060833b80610fa9575050604080516020810190915260008152610edc565b80841115610fc7575050604080516020810190915260008152610edc565b83831015611012576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161051b565b83830384820360008282106110275782611029565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826110b157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006110fc565b82600114156110d557506fffffffffffffffffffffffffffffffff905060806110fc565b82600214156110f1575067ffffffffffffffff905060406110fc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff81111561111f5761111f612c69565b604051908082528060200260200182016040528015611148578160200160208202803683370190505b50905060208082019083028a03815b8b82101561116f578151815260209182019101611157565b505060608b015160808c015160209081029091010160005b6101008110156111cd5760208502830182845b828110156111b6578051841c8a1682526020918201910161119a565b5050506111c48e8e8b610c0d565b9b508501611187565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161122b9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112679291602001612f40565b604051602081830303815290604052905060005b85604001515181101561131357818660400151828151811061129f5761129f612fac565b60200260200101515160001b876040015183815181106112c1576112c1612fac565b60200260200101516040516020016112db9392919061366e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161127b565b50949350505050565b6113ab816040516024016113309190612ef7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612654565b50565b60608151826040516020016113c49291906136a5565b6040516020818303038152906040529050919050565b6000611406827f01ffc9a70000000000000000000000000000000000000000000000000000000061143e565b801561035f5750611437827fffffffff0000000000000000000000000000000000000000000000000000000061143e565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906114f890869061373c565b6000604051808303818686fa925050503d8060008114611534576040519150601f19603f3d011682016040523d82523d6000602084013e611539565b606091505b5091509150602081511015611554576000935050505061035f565b818015611570575080806020019051810190611570919061374e565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116619190613770565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee9190613770565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156117e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180d9190613770565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611620565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613789565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016117cc565b60008060008467ffffffffffffffff811115611abe57611abe612c69565b604051908082528060200260200182016040528015611ae7578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b0557611b05612c69565b604051908082528060200260200182016040528015611b2e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611b83578251815260209283019201611b6b565b5050602088028101602084015b81831015611ba8578251815260209283019201611b90565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c0290879087906004016137a6565b600060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c659190810190613809565b9050846020820160208a0281015b80821015611c8e578151835260209283019290910190611c73565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611d5d858a612675565b906126f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611dc3858a612675565b90612715565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee828761272a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612775565b6000602083028203805b83811015611e5b5780518015611e52578252611e5b565b50602001611e3b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611e5b578051611f385760008252611e5b565b602001611f21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561205957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120785750805160209091019061207183826127d3565b925061202b565b505081526020019392505050565b6020828102820380516000928201835b85821080156120c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612078575080516020909101906120dc838261280f565b9250612096565b6020828102820380516000928201835b85821080156121025750826000105b156120785750805160209091019061211a838261283e565b92506120f3565b600060208302820380516000602083015b85811015612078578051830191508282101561214d57600080fd5b9091508190602001612132565b600060208302820380516000602083015b8581101561207857805191508161218157600080fd5b918190049160200161216b565b6020828102820380516000928201835b85821015612078575080516020909101906121b981846139ba565b925061219e565b6020828102820380516000928201835b8582101561207857508051828111156121e7578092505b6020820191506121d0565b6020828102820380516000928201835b858210156120785750805182811015612219578092505b602082019150612202565b600060208302820380516000602083015b8581101561207857805191508161224b57600080fd5b9181900691602001612235565b60006020830282038051600080602084015b8681101561229b57831561229357805192508284029150828483041461228f57600080fd5b8193505b60200161226a565b50505081526020019392505050565b600060208302820380516000602083015b8581101561207857805183039150828211156122d657600080fd5b90915081906020016122bb565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906117cc90869086906004016139c6565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061246e908790879087906004016139f5565b602060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af9190613770565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116618383612854565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561254c5761254c612c69565b604051908082528060200260200182016040528015612575578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125b15781518160200186015260208201915060208101905061258f565b505051905060006125c4838389896128b3565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561264585858585612a03565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561268a578391505061035f565b82601211156126b6575060128290036126a481600a6139ba565b6126ae9085613a2a565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126e581600a6139ba565b6126ae9085613a67565b5092915050565b60008161270b670de0b6b3a764000085613a2a565b610edc9190613a67565b6000670de0b6b3a764000061270b8385613a2a565b600081810b61273a57508161035f565b60008260000b13156127625761275182600a613aa2565b61275b9084613a2a565b905061035f565b60ff6000839003166126e581600a6139ba565b600080601283141561278a578391505061035f565b82601211156127a4575060128290036126e581600a6139ba565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126a481600a6139ba565b60008282018381106127e55780612807565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261281e5750600061035f565b8282028284828161283157612831613619565b0414156127e55780612807565b600081831161284e576000610edc565b50900390565b60008060015b600881116128ab57600061286e8683612aa9565b9050600061287c8684612aa9565b9050600061288a838361283e565b905061289a856001860383612b56565b9450506001909201915061285a9050565b509392505050565b835160009081908190819060015b600881116129f5576000925082876128fa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128fe565b5060005b60005b838110156129b35761292c8c828151811061291e5761291e612fac565b602002602001015184612aa9565b95508a861161297e578861294b576129448683612bdf565b9150612975565b600189141561295e576129448683612bf5565b60028914801561296c575084155b15612975578591505b600194506129ab565b896129ab577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129b3565b600101612901565b50836129dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6129ea866001840383612b56565b9550506001016128c1565b509298975050505050505050565b6000826008811115612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b6000855b85811015612a9d5763ffffffff6020820290811b199890981685891b17979150600101612a75565b50959695505050505050565b6000816008811115612b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b82612b2557600091506126ef565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612bee5781610edc565b5090919050565b600081831015612bee5781610edc565b600060208284031215612c1757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610edc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113ab57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612cdf57612cdf612c69565b604052919050565b600067ffffffffffffffff821115612d0157612d01612c69565b5060051b60200190565b60008060408385031215612d1e57600080fd5b8235612d2981612c47565b915060208381013567ffffffffffffffff811115612d4657600080fd5b8401601f81018613612d5757600080fd5b8035612d6a612d6582612ce7565b612c98565b81815260059190911b82018301908381019088831115612d8957600080fd5b928401925b82841015612da757833582529284019290840190612d8e565b80955050505050509250929050565b600060208284031215612dc857600080fd5b813567ffffffffffffffff811115612ddf57600080fd5b820160408185031215610edc57600080fd5b60008060008060608587031215612e0757600080fd5b8435612e1281612c47565b935060208501359250604085013567ffffffffffffffff80821115612e3657600080fd5b818701915087601f830112612e4a57600080fd5b813581811115612e5957600080fd5b8860208260051b8501011115612e6e57600080fd5b95989497505060200194505050565b60005b83811015612e98578181015183820152602001612e80565b83811115612ea7576000848401525b50505050565b60008151808452612ec5816020860160208601612e7d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610edc6020830184612ead565b815160009082906020808601845b83811015612f3457815185529382019390820190600101612f18565b50929695505050505050565b82815260008251612f58816020850160208701612e7d565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fa757612fa7612f66565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261300f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261304e57600080fd5b830160208101925035905067ffffffffffffffff81111561306e57600080fd5b8060051b360383131561308057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561310257600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006040830161312f8384613019565b604086528281845260608701905060608260051b88010193508260005b838110156131f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126131ad57600080fd5b85018035602067ffffffffffffffff8211156131c857600080fd5b8136038813156131d757600080fd5b6131e48983838601613087565b9850948501949390930192505060010161314c565b505050505061320b6020840184613019565b85830360208701526115708382846130d0565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261324e8285018761311f565b84810360408681019190915286518083528388019284019060005b818110156132bf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613269565b50909a9950505050505050505050565b6000602082840312156132e157600080fd5b815167ffffffffffffffff808211156132f957600080fd5b818401915084601f83011261330d57600080fd5b81518181111561331f5761331f612c69565b61335060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612c98565b915080825285602082850101111561336757600080fd5b611313816020840160208601612e7d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133ad57600080fd5b83018035915067ffffffffffffffff8211156133c857600080fd5b6020019150600581901b360382131561308057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561341257613412612f66565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261347757600080fd5b6040606084015261348d6080840185830161311f565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134c557600080fd5b8260051b80858437600092019182525092915050565b838152826020820152600082516134f9816040850160208701612e7d565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135385781518752958201959082019060010161351c565b509495945050505050565b600060208083528351818401528084015160a0604085015261356860c0850182613508565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156135e157848783030184526135cf828751612ead565b958801959388019391506001016135b5565b5060608a01519650838982030160808a01526135fd8188613508565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613661816001850160208701612e7d565b9190910160010192915050565b60008451613680818460208901612e7d565b82018481528351613698816020808501908801612e7d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161372e81600e850160208701612e7d565b91909101600e019392505050565b6000825161300f818460208701612e7d565b60006020828403121561376057600080fd5b81518015158114610edc57600080fd5b60006020828403121561378257600080fd5b5051919050565b60006020828403121561379b57600080fd5b8151610edc81612c47565b604080825283519082018190526000906020906060840190828701845b828110156137f557815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016137c3565b505050838103828501526115708186613508565b6000602080838503121561381c57600080fd5b825167ffffffffffffffff81111561383357600080fd5b8301601f8101851361384457600080fd5b8051613852612d6582612ce7565b81815260059190911b8201830190838101908783111561387157600080fd5b928401925b8284101561388f57835182529284019290840190613876565b979650505050505050565b600181815b808511156138f357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138d9576138d9612f66565b808516156138e657918102915b93841c939080029061389f565b509250929050565b60008261390a5750600161035f565b816139175750600061035f565b816001811461392d576002811461393757613953565b600191505061035f565b60ff84111561394857613948612f66565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613976575081810a61035f565b613980838361389a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156139b2576139b2612f66565b029392505050565b6000610edc83836138fb565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128076040830184613508565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061348d6060830184613508565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a6257613a62612f66565b500290565b600082613a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610edc60ff8416836138fb56fea2646970667358221220cba5176187567ea15bd96a3a42279beacef56f31c3ece59bef5e4029e012f1ef64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b50604051614c64380380614c6483398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b613fbc80610ca883390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610b836101256000396000818160a5015261030c0152610b836000f3fe608060405234801561001057600080fd5b506004361061004b5760003560e01c8062e44217146100505780632ea72a491461008d5780635c60da1b146100a0578063fc91a897146100c7575b600080fd5b61006361005e36600461066e565b610110565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006361009b3660046107a5565b610140565b6100637f000000000000000000000000000000000000000000000000000000000000000081565b6101006100d53660046107e2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610084565b600061013a82604051602001610126919061088a565b604051602081830303815290604052610140565b92915050565b6000600260005414156101b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101c4836102ec565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c44000000000000000000000000000000000060448201526064016101ab565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b6000808280602001905181019061030391906109f1565b905060006103307f00000000000000000000000000000000000000000000000000000000000000006103bf565b6040517fa225543b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063a225543b9061038590859060040161088a565b600060405180830381600087803b15801561039f57600080fd5b505af11580156103b3573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016101ab565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156104f3576104f36104a1565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610540576105406104a1565b604052919050565b600067ffffffffffffffff821115610562576105626104a1565b5060051b60200190565b600067ffffffffffffffff821115610586576105866104a1565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105c357600080fd5b81356105d66105d18261056c565b6104f9565b8181528460208386010111156105eb57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261061957600080fd5b813560206106296105d183610548565b82815260059290921b8401810191818101908684111561064857600080fd5b8286015b84811015610663578035835291830191830161064c565b509695505050505050565b6000602080838503121561068157600080fd5b823567ffffffffffffffff8082111561069957600080fd5b90840190604082870312156106ad57600080fd5b6106b56104d0565b8235815283830135828111156106ca57600080fd5b9290920191604083880312156106df57600080fd5b6106e76104d0565b8335838111156106f657600080fd5b8401601f8101891361070757600080fd5b80356107156105d182610548565b81815260059190911b8201870190878101908b83111561073457600080fd5b8884015b8381101561076c578035888111156107505760008081fd5b61075e8e8c838901016105b2565b845250918901918901610738565b508452505050838501358381111561078357600080fd5b61078f89828701610608565b8287015250938101939093525090949350505050565b6000602082840312156107b757600080fd5b813567ffffffffffffffff8111156107ce57600080fd5b6107da848285016105b2565b949350505050565b6000602082840312156107f457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461081857600080fd5b9392505050565b60005b8381101561083a578181015183820152602001610822565b83811115610849576000848401525b50505050565b600081518084526020808501945080840160005b8381101561087f57815187529582019590820190600101610863565b509495945050505050565b600060208083528351818401528084015160408085015260a0840181516040606087015281815180845260c08801915060c08160051b8901019350858301925060005b8181101561094f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089860301835283518051808752610912818a89018b850161081f565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016959095018701945092860192918601916001016108cd565b50505050918101518483037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160808601529161098c818461084f565b9695505050505050565b600082601f8301126109a757600080fd5b815160206109b76105d183610548565b82815260059290921b840181019181810190868411156109d657600080fd5b8286015b8481101561066357805183529183019183016109da565b60006020808385031215610a0457600080fd5b825167ffffffffffffffff80821115610a1c57600080fd5b9084019060408287031215610a3057600080fd5b610a386104d0565b825181528383015182811115610a4d57600080fd5b929092019160408388031215610a6257600080fd5b610a6a6104d0565b835183811115610a7957600080fd5b8401601f81018913610a8a57600080fd5b8051610a986105d182610548565b81815260059190911b8201870190878101908b831115610ab757600080fd5b8884015b83811015610b2a57805188811115610ad35760008081fd5b8501603f81018e13610ae55760008081fd5b8a810151610af56105d18261056c565b8181528f6040838501011115610b0b5760008081fd5b610b1b828e83016040860161081f565b85525050918901918901610abb565b5084525050508385015183811115610b4157600080fd5b61078f8982870161099656fea2646970667358221220ccf948a102d5adea1e241d94142cc635a9cef82a6eff384caad05cb09f7bbf7a64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162003fbc38038062003fbc833981016040819052620000349162000125565b306080526001600160a01b03811660a0526200004f62000056565b5062000157565b600054600160a81b900460ff1615620000c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b9091048116101562000123576000805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200013857600080fd5b81516001600160a01b03811681146200015057600080fd5b9392505050565b60805160a051613e3f6200017d6000396000610bf801526000610c250152613e3f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063ea7cb3701461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612e27565b610135565b60405190151581526020015b60405180910390f35b6100b26100ad366004612fc1565b6101ce565b604051908152602001610096565b6100d36100ce366004613011565b6102e7565b005b6100b26100e336600461304c565b610738565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b610128610870565b6040516100969190613152565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806101c857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000806101d9610888565b90506000835160010167ffffffffffffffff8111156101fa576101fa612e8b565b604051908082528060200260200182016040528015610223578160200160208202803683370190505b5090508473ffffffffffffffffffffffffffffffffffffffff168160008151811061025057610250613165565b60200260200101818152505060005b84518110156102aa5784818151811061027a5761027a613165565b602002602001015182826001018151811061029757610297613165565b602090810291909101015260010161025f565b506102b7818360006108e5565b5081602001516001836000015103815181106102d5576102d5613165565b60200260200101519250505092915050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610332575060005460017401000000000000000000000000000000000000000090910460ff16105b806103645750303b158015610364575060005474010000000000000000000000000000000000000000900460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561047b57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6104b46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a0820186905284825281840194909452815160028082529481019092529392909182015b6105406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610507579050509050828160008151811061056957610569613165565b6020026020010181905250818160018151811061058857610588613165565b60200260200101819052506105b58580602001906105a69190613194565b6105af90613218565b82610bb8565b60005b85358110156106945761061c6105d16020880188613194565b6105df906020810190613333565b838181106105ef576105ef613165565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610d0b565b610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016103ec565b8061068c816133d1565b9150506105b8565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833866040516106c6929190613509565b60405180910390a1505050801561073457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080610743610888565b905060006002840167ffffffffffffffff81111561076357610763612e8b565b60405190808252806020026020018201604052801561078c578160200160208202803683370190505b5090508673ffffffffffffffffffffffffffffffffffffffff16816000815181106107b9576107b9613165565b60200260200101818152505085816001815181106107d9576107d9613165565b60200260200101818152505060005b848110156108315785858281811061080257610802613165565b9050602002013582826002018151811061081e5761081e613165565b60209081029190910101526001016107e8565b5061083e818360016108e5565b50816020015160018360000151038151811061085c5761085c613165565b602002602001015192505050949350505050565b606061088361087e82610d27565b610f48565b905090565b6108ba6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610883906108e09073ffffffffffffffffffffffffffffffffffffffff16610f87565b610fb5565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610b9e576003890198508886015180601f1a975061ffff8160081c169850506006881015610b16578761096857866020028401518252602082019150610b29565b600188141561098557602087028301518252602082019150610b29565b6002881415610a0f578c5187106109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016103ec565b866020026020018d01518252602082019150610b29565b6003881415610a57576000610a456040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610b29565b6004881415610a7357610a6c8d8d848a611121565b9150610b29565b606087610aa1578c604051602001610a8b919061372a565b6040516020818303038152906040529050610b00565b6001881415610aba57610ab38d61128e565b9050610b00565b6002881415610ad6576020808e0151604051610a8b92016137c1565b6003881415610b00578c516040805160208101929092520160405160208183030381529060405290505b805115610b1057610b10816113cb565b50610b29565b87610b25888463ffffffff8416565b9250505b60208c0151518c511115610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016103ec565b610923565b6020838303048c52509750505050505050505b9392505050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190610c51907f00000000000000000000000000000000000000000000000000000000000000009087908790600401613826565b6000604051808303816000875af1158015610c70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cb6919081019061390e565b9050610cc18161145d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b6000610d16836114e8565b8015610bb15750610bb1838361154c565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261168860e0840181905261177c6101008501526118086101208501526119296101408501526101608401526119d2610180840152611ada6101a0840152611bae6101c0840152611dab6101e0840152611db6610200840152611dc1610220840152611dcc610240840152611dd7610260840152611e0b610280840152611e716102a0840152611ed76102c0840152611f0b6102e0840152611f3f610300840152611f74610320840152611fcf61034084015261202561036084015261204e6103808401526120a56103a08401526120d26103c08401526121296103e08401526121946104008401526121f161042084015261222f61044084015261226861046084015261229c6104808401526122ce6104a08401526123006104c08401526123326104e08401526123666105008401526123b86105208401526123f16105408401526124a36105608401526125d061058084015261262c6105a08401526126e66105c0840152835190850201909252919082815b83811015610f3f57858181518110610efe57610efe613165565b6020026020010151856028600601830181518110610f1e57610f1e613165565b67ffffffffffffffff90921660209283029190910190910152600101610ee4565b50505050919050565b60606020820182516020028101600284015b81831015610f775782518151178152602090920191600201610f5a565b5050825160020283525090919050565b60606101c88260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612762565b610fe76040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6110196040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561104d5761104d612e8b565b604051908082528060200260200182016040528015611076578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156110ad576110ad612e8b565b6040519080825280602002602001820160405280156110d6578160200160208202803683370190505b5090506020870151602002604001870160005b848110156111105781602082026020018401528151602001820191506001810190506110e9565b505060408501525091949350505050565b600060078216600383811c1682808261116057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006111ab565b826001141561118457506fffffffffffffffffffffffffffffffff905060806111ab565b82600214156111a0575067ffffffffffffffff905060406111ab565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111ce576111ce612e8b565b6040519080825280602002602001820160405280156111f7578160200160208202803683370190505b50905060208082019083028a03815b8b82101561121e578151815260209182019101611206565b505060608b015160808c015160209081029091010160005b61010081101561127c5760208502830182845b82811015611265578051841c8a16825260209182019101611249565b5050506112738e8e8b6108e5565b9b508501611236565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112da91906137c1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113169291602001613985565b604051602081830303815290604052905060005b8560400151518110156113c257818660400151828151811061134e5761134e613165565b60200260200101515160001b8760400151838151811061137057611370613165565b602002602001015160405160200161138a939291906139ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161132a565b50949350505050565b61145a816040516024016113df9190613152565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261284a565b50565b6000806114888360405160200161147491906139e2565b60405160208183030381529060405261286b565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166114e2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000611514827f01ffc9a70000000000000000000000000000000000000000000000000000000061154c565b80156101c85750611545827fffffffff0000000000000000000000000000000000000000000000000000000061154c565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff87169061753090611606908690613a08565b6000604051808303818686fa925050503d8060008114611642576040519150601f19603f3d011682016040523d82523d6000602084013e611647565b606091505b509150915060208151101561166257600093505050506101c8565b81801561167e57508080602001905181019061167e9190613a1a565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f9190613a3c565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fc9190613a3c565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156118f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191b9190613a3c565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d09060240161172e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190613a55565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016118da565b60008060008467ffffffffffffffff811115611bcc57611bcc612e8b565b604051908082528060200260200182016040528015611bf5578160200160208202803683370190505b50905060008567ffffffffffffffff811115611c1357611c13612e8b565b604051908082528060200260200182016040528015611c3c578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c91578251815260209283019201611c79565b5050602088028101602084015b81831015611cb6578251815260209283019201611c9e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611d109087908790600401613a72565b600060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d739190810190613ad5565b9050846020820160208a0281015b80821015611d9c578151835260209283019290910190611d81565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612897565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611e6b858a612897565b90612918565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611ed1858a612897565b90612937565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc828761294c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612997565b6000602083028203805b83811015611f695780518015611f60578252611f69565b50602001611f49565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611f695780516120465760008252611f69565b60200161202f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121865750805160209091019061217f83826129f5565b9250612139565b505081526020019392505050565b6020828102820380516000928201835b85821080156121d257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612186575080516020909101906121ea8382612a31565b92506121a4565b6020828102820380516000928201835b85821080156122105750826000105b15612186575080516020909101906122288382612a60565b9250612201565b600060208302820380516000602083015b85811015612186578051830191508282101561225b57600080fd5b9091508190602001612240565b600060208302820380516000602083015b8581101561218657805191508161228f57600080fd5b9181900491602001612279565b6020828102820380516000928201835b85821015612186575080516020909101906122c78184613c7b565b92506122ac565b6020828102820380516000928201835b8582101561218657508051828111156122f5578092505b6020820191506122de565b6020828102820380516000928201835b858210156121865750805182811015612327578092505b602082019150612310565b600060208302820380516000602083015b8581101561218657805191508161235957600080fd5b9181900691602001612343565b60006020830282038051600080602084015b868110156123a95783156123a157805192508284029150828483041461239d57600080fd5b8193505b602001612378565b50505081526020019392505050565b600060208302820380516000602083015b8581101561218657805183039150828211156123e457600080fd5b90915081906020016123c9565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906118da9086908690600401613c87565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061257c90879087908790600401613cb6565b602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd9190613a3c565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f8383612a76565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561265a5761265a612e8b565b604051908082528060200260200182016040528015612683578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156126bf5781518160200186015260208201915060208101905061269d565b505051905060006126d283838989612ad5565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561275385858585612c25565b90955250949695505050505050565b6060833b80612781575050604080516020810190915260008152610bb1565b8084111561279f575050604080516020810190915260008152610bb1565b838310156127ea576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016103ec565b83830384820360008282106127ff5782612801565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060815182604051602001612881929190613ceb565b6040516020818303038152906040529050919050565b60008082601214156128ac57839150506101c8565b82601211156128d8575060128290036128c681600a613c7b565b6128d09085613d82565b9150506101c8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161290781600a613c7b565b6128d09085613dbf565b5092915050565b60008161292d670de0b6b3a764000085613d82565b610bb19190613dbf565b6000670de0b6b3a764000061292d8385613d82565b600081810b61295c5750816101c8565b60008260000b13156129845761297382600a613dfa565b61297d9084613d82565b90506101c8565b60ff60008390031661290781600a613c7b565b60008060128314156129ac57839150506101c8565b82601211156129c65750601282900361290781600a613c7b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016128c681600a613c7b565b6000828201838110612a075780612a29565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082612a40575060006101c8565b82820282848281612a5357612a536137f7565b041415612a075780612a29565b6000818311612a70576000610bb1565b50900390565b60008060015b60088111612acd576000612a908683612ccb565b90506000612a9e8684612ccb565b90506000612aac8383612a60565b9050612abc856001860383612d78565b94505060019092019150612a7c9050565b509392505050565b835160009081908190819060015b60088111612c1757600092508287612b1c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b20565b5060005b60005b83811015612bd557612b4e8c8281518110612b4057612b40613165565b602002602001015184612ccb565b95508a8611612ba05788612b6d57612b668683612e01565b9150612b97565b6001891415612b8057612b668683612e17565b600289148015612b8e575084155b15612b97578591505b60019450612bcd565b89612bcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612bd5565b600101612b23565b5083612bfe57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612c0c866001840383612d78565b955050600101612ae3565b509298975050505050505050565b6000826008811115612c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b85811015612cbf5763ffffffff6020820290811b199890981685891b17979150600101612c97565b50959695505050505050565b6000816008811115612d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b82612d475760009150612911565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612e105781610bb1565b5090919050565b600081831015612e105781610bb1565b600060208284031215612e3957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bb157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461145a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612edd57612edd612e8b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f2a57612f2a612e8b565b604052919050565b600067ffffffffffffffff821115612f4c57612f4c612e8b565b5060051b60200190565b600082601f830112612f6757600080fd5b81356020612f7c612f7783612f32565b612ee3565b82815260059290921b84018101918181019086841115612f9b57600080fd5b8286015b84811015612fb65780358352918301918301612f9f565b509695505050505050565b60008060408385031215612fd457600080fd5b8235612fdf81612e69565b9150602083013567ffffffffffffffff811115612ffb57600080fd5b61300785828601612f56565b9150509250929050565b60006020828403121561302357600080fd5b813567ffffffffffffffff81111561303a57600080fd5b820160408185031215610bb157600080fd5b6000806000806060858703121561306257600080fd5b843561306d81612e69565b935060208501359250604085013567ffffffffffffffff8082111561309157600080fd5b818701915087601f8301126130a557600080fd5b8135818111156130b457600080fd5b8860208260051b85010111156130c957600080fd5b95989497505060200194505050565b60005b838110156130f35781810151838201526020016130db565b83811115613102576000848401525b50505050565b600081518084526131208160208601602086016130d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bb16020830184613108565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126131c857600080fd5b9190910192915050565b600067ffffffffffffffff8211156131ec576131ec612e8b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000604080833603121561322b57600080fd5b613233612eba565b833567ffffffffffffffff8082111561324b57600080fd5b9085019036601f83011261325e57600080fd5b8135602061326e612f7783612f32565b82815260059290921b8401810191818101903684111561328d57600080fd5b8286015b84811015613301578035868111156132a95760008081fd5b870136603f8201126132bb5760008081fd5b848101356132cb612f77826131d2565b818152368c8385010111156132e05760008081fd5b818c8401888301376000918101870191909152845250918301918301613291565b508652508781013595508286111561331857600080fd5b61332436878a01612f56565b90850152509195945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261336857600080fd5b83018035915067ffffffffffffffff82111561338357600080fd5b6020019150600581901b360382131561339b57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613403576134036133a2565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261343f57600080fd5b830160208101925035905067ffffffffffffffff81111561345f57600080fd5b8060051b360383131561339b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134ec57600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060408184015283356040840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261356757600080fd5b60406060850152840160c0840161357e828061340a565b604060808801528281845260e08801905060e08260051b89010193508260005b83811015613648577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126135ff57600080fd5b8501803567ffffffffffffffff81111561361857600080fd5b80360387131561362757600080fd5b61363488828c8501613471565b97505050918701919087019060010161359e565b50505050506136598383018361340a565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808582030160a08601526136928184846134ba565b979650505050505050565b600081518084526020808501945080840160005b838110156136cd578151875295820195908201906001016136b1565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b8581101561371d57838303895261370b838351613108565b988501989250908401906001016136f3565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261375060c084018261369d565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301606086015261378c83836136d8565b92506060860151915080858403016080860152506137aa828261369d565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156137eb578151855293820193908201906001016137cf565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a0865160408085880152613861838801836136d8565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261389c848361369d565b898103848b01528a51808252878c019550908701925060005b818110156138fc5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016138b5565b50919c9b505050505050505050505050565b60006020828403121561392057600080fd5b815167ffffffffffffffff81111561393757600080fd5b8201601f8101841361394857600080fd5b8051613956612f77826131d2565b81815285602083850101111561396b57600080fd5b61397c8260208301602086016130d8565b95945050505050565b8281526000825161399d8160208501602087016130d8565b919091016020019392505050565b600084516139bd8184602089016130d8565b820184815283516139d58160208085019088016130d8565b0160200195945050505050565b60008152600082516139fb8160018501602087016130d8565b9190910160010192915050565b600082516131c88184602087016130d8565b600060208284031215613a2c57600080fd5b81518015158114610bb157600080fd5b600060208284031215613a4e57600080fd5b5051919050565b600060208284031215613a6757600080fd5b8151610bb181612e69565b604080825283519082018190526000906020906060840190828701845b82811015613ac157815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613a8f565b5050508381038285015261167e818661369d565b60006020808385031215613ae857600080fd5b825167ffffffffffffffff811115613aff57600080fd5b8301601f81018513613b1057600080fd5b8051613b1e612f7782612f32565b81815260059190911b82018301908381019087831115613b3d57600080fd5b928401925b8284101561369257835182529284019290840190613b42565b600181815b80851115613bb457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613b9a57613b9a6133a2565b80851615613ba757918102915b93841c9390800290613b60565b509250929050565b600082613bcb575060016101c8565b81613bd8575060006101c8565b8160018114613bee5760028114613bf857613c14565b60019150506101c8565b60ff841115613c0957613c096133a2565b50506001821b6101c8565b5060208310610133831016604e8410600b8410161715613c37575081810a6101c8565b613c418383613b5b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613c7357613c736133a2565b029392505050565b6000610bb18383613bbc565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a29604083018461369d565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061397c606083018461369d565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613d7481600e8501602087016130d8565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dba57613dba6133a2565b500290565b600082613df5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610bb160ff841683613bbc56fea26469706673582212209ec8a4980503b946cfd95f79746dd1ca5c1d0ee83c5e41a9fedc6e260e121b3964736f6c634300080a0033"; type CombineTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/CombineTier__factory.ts b/src/typechain/factories/CombineTier__factory.ts index 3d3b3d4..94635bd 100644 --- a/src/typechain/factories/CombineTier__factory.ts +++ b/src/typechain/factories/CombineTier__factory.ts @@ -99,19 +99,6 @@ const _abi = [ name: "Initialized", type: "event", }, - { - inputs: [], - name: "fnPtrs", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [ { @@ -149,6 +136,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -249,7 +249,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162003b8938038062003b8983398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051613ae7620000a260003960006106b3015260006106ef0152613ae76000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063f2cd6c081461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612c05565b6102cc565b60405190151581526020015b60405180910390f35b6100b26100ad366004612d0b565b610365565b604051908152602001610096565b6100d36100ce366004612db6565b610459565b005b6100b26100e3366004612df1565b61097b565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261157a60e0820181905261166e6101008301526116fa61012083015261181b6101408301526101608201526118c46101808201526119cc6101a0820152611aa06101c0820152611c9d6101e0820152611ca8610200820152611cb3610220820152611cbe610240820152611cc9610260820152611cfd610280820152611d636102a0820152611dc96102c0820152611dfd6102e0820152611e31610300820152611e66610320820152611ec1610340820152611f17610360820152611f40610380820152611f976103a0820152611fc46103c082015261201b6103e08201526120866104008201526120e361042082015261212161044082015261215a61046082015261218e6104808201526121c06104a08201526121f26104c08201526122246104e08201526122586105008201526122aa6105208201526122e36105408201526123956105608201526124c261058082015261251e6105a08201526125d86105c080830191909152815290516100969190612ef7565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60008061039b610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b610aa1565b905060008473ffffffffffffffffffffffffffffffffffffffff1660001b846040516020016103ca9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526104069291602001612f40565b604051602081830303815290604052905061042381836000610c0d565b506020820151825161043790600190612f95565b8151811061044757610447612fac565b60200260200101519250505092915050565b600054610100900460ff16158080156104795750600054600160ff909116105b806104935750303b158015610493575060005460ff166001145b610524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561058257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105c26040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c0820186905284825281840194909452815160028082529481019092529392909182015b61065c6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161061c579050509050828160008151811061068557610685612fac565b602002602001018190525081816001815181106106a4576106a4612fac565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000088806020019061071e9190612fdb565b856040518463ffffffff1660e01b815260040161073d9392919061321e565b6000604051808303816000875af115801561075c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526107a291908101906132cf565b90506107ad81610ee3565b6000805473ffffffffffffffffffffffffffffffffffffffff9290921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff9092169190911781555b86358110156108d65761085e6108136020890189612fdb565b610821906020810190613378565b8381811061083157610831612fac565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610f6e565b6108c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f54494552563200000000000000000000000000000000000000604482015260640161051b565b806108ce816133e0565b9150506107fa565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c51483387604051610908929190613419565b60405180910390a150505050801561097757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6000806109ac610396600060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16610a73565b905060008673ffffffffffffffffffffffffffffffffffffffff1660001b8660001b86866040516020016109e1929190613496565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610a1e9392916020016134db565b6040516020818303038152906040529050610a3b81836001610c0d565b5060208201518251610a4f90600190612f95565b81518110610a5f57610a5f612fac565b602002602001015192505050949350505050565b606061035f8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f8a565b610ad36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b610b056040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115610b3957610b39612c69565b604051908082528060200260200182016040528015610b62578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115610b9957610b99612c69565b604051908082528060200260200182016040528015610bc2578160200160208202803683370190505b5090506020870151602002604001870160005b84811015610bfc578160208202602001840152815160200182019150600181019050610bd5565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610ec9576003890198508886015180601f1a975061ffff8160081c169850506006881015610e415787610c9057866020028401518252602082019150610e54565b6001881415610cad57602087028301518252602082019150610e54565b6002881415610d3a578c518760200210610d23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161051b565b866020026020018d01518252602082019150610e54565b6003881415610d82576000610d706040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610e54565b6004881415610d9e57610d978d8d848a611072565b9150610e54565b606087610dcc578c604051602001610db69190613543565b6040516020818303038152906040529050610e2b565b6001881415610de557610dde8d6111df565b9050610e2b565b6002881415610e01576020808e0151604051610db69201612f0a565b6003881415610e2b578c516040805160208101929092520160405160208183030381529060405290505b805115610e3b57610e3b8161131c565b50610e54565b87610e50888463ffffffff8416565b9250505b60208c0151518c511115610ec4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161051b565b610c4b565b6020838303048c52509750505050505050505b9392505050565b600080610f0e83604051602001610efa9190613648565b6040516020818303038152906040526113ae565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610f68576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000610f79836113da565b8015610edc5750610edc838361143e565b6060833b80610fa9575050604080516020810190915260008152610edc565b80841115610fc7575050604080516020810190915260008152610edc565b83831015611012576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161051b565b83830384820360008282106110275782611029565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826110b157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006110fc565b82600114156110d557506fffffffffffffffffffffffffffffffff905060806110fc565b82600214156110f1575067ffffffffffffffff905060406110fc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff81111561111f5761111f612c69565b604051908082528060200260200182016040528015611148578160200160208202803683370190505b50905060208082019083028a03815b8b82101561116f578151815260209182019101611157565b505060608b015160808c015160209081029091010160005b6101008110156111cd5760208502830182845b828110156111b6578051841c8a1682526020918201910161119a565b5050506111c48e8e8b610c0d565b9b508501611187565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161122b9190612f0a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526112679291602001612f40565b604051602081830303815290604052905060005b85604001515181101561131357818660400151828151811061129f5761129f612fac565b60200260200101515160001b876040015183815181106112c1576112c1612fac565b60200260200101516040516020016112db9392919061366e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161127b565b50949350505050565b6113ab816040516024016113309190612ef7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f5600000000000000000000000000000000000000000000000000000000179052612654565b50565b60608151826040516020016113c49291906136a5565b6040516020818303038152906040529050919050565b6000611406827f01ffc9a70000000000000000000000000000000000000000000000000000000061143e565b801561035f5750611437827fffffffff0000000000000000000000000000000000000000000000000000000061143e565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff871690617530906114f890869061373c565b6000604051808303818686fa925050503d8060008114611534576040519150601f19603f3d011682016040523d82523d6000602084013e611539565b606091505b5091509150602081511015611554576000935050505061035f565b818015611570575080806020019051810190611570919061374e565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561163d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116619190613770565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116ee9190613770565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156117e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180d9190613770565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611620565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a99190613789565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016117cc565b60008060008467ffffffffffffffff811115611abe57611abe612c69565b604051908082528060200260200182016040528015611ae7578160200160208202803683370190505b50905060008567ffffffffffffffff811115611b0557611b05612c69565b604051908082528060200260200182016040528015611b2e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611b83578251815260209283019201611b6b565b5050602088028101602084015b81831015611ba8578251815260209283019201611b90565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611c0290879087906004016137a6565b600060405180830381865afa158015611c1f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611c659190810190613809565b9050846020820160208a0281015b80821015611c8e578151835260209283019290910190611c73565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612675565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611d5d858a612675565b906126f6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361166182611dc3858a612675565b90612715565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee828761272a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826116ee8287612775565b6000602083028203805b83811015611e5b5780518015611e52578252611e5b565b50602001611e3b565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611e5b578051611f385760008252611e5b565b602001611f21565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561205957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156120785750805160209091019061207183826127d3565b925061202b565b505081526020019392505050565b6020828102820380516000928201835b85821080156120c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612078575080516020909101906120dc838261280f565b9250612096565b6020828102820380516000928201835b85821080156121025750826000105b156120785750805160209091019061211a838261283e565b92506120f3565b600060208302820380516000602083015b85811015612078578051830191508282101561214d57600080fd5b9091508190602001612132565b600060208302820380516000602083015b8581101561207857805191508161218157600080fd5b918190049160200161216b565b6020828102820380516000928201835b85821015612078575080516020909101906121b981846139ba565b925061219e565b6020828102820380516000928201835b8582101561207857508051828111156121e7578092505b6020820191506121d0565b6020828102820380516000928201835b858210156120785750805182811015612219578092505b602082019150612202565b600060208302820380516000602083015b8581101561207857805191508161224b57600080fd5b9181900691602001612235565b60006020830282038051600080602084015b8681101561229b57831561229357805192508284029150828483041461228f57600080fd5b8193505b60200161226a565b50505081526020019392505050565b600060208302820380516000602083015b8581101561207857805183039150828211156122d657600080fd5b90915081906020016122bb565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906117cc90869086906004016139c6565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061246e908790879087906004016139f5565b602060405180830381865afa15801561248b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124af9190613770565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836116618383612854565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561254c5761254c612c69565b604051908082528060200260200182016040528015612575578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156125b15781518160200186015260208201915060208101905061258f565b505051905060006125c4838389896128b3565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561264585858585612a03565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561268a578391505061035f565b82601211156126b6575060128290036126a481600a6139ba565b6126ae9085613a2a565b91505061035f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126e581600a6139ba565b6126ae9085613a67565b5092915050565b60008161270b670de0b6b3a764000085613a2a565b610edc9190613a67565b6000670de0b6b3a764000061270b8385613a2a565b600081810b61273a57508161035f565b60008260000b13156127625761275182600a613aa2565b61275b9084613a2a565b905061035f565b60ff6000839003166126e581600a6139ba565b600080601283141561278a578391505061035f565b82601211156127a4575060128290036126e581600a6139ba565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016126a481600a6139ba565b60008282018381106127e55780612807565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261281e5750600061035f565b8282028284828161283157612831613619565b0414156127e55780612807565b600081831161284e576000610edc565b50900390565b60008060015b600881116128ab57600061286e8683612aa9565b9050600061287c8684612aa9565b9050600061288a838361283e565b905061289a856001860383612b56565b9450506001909201915061285a9050565b509392505050565b835160009081908190819060015b600881116129f5576000925082876128fa57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6128fe565b5060005b60005b838110156129b35761292c8c828151811061291e5761291e612fac565b602002602001015184612aa9565b95508a861161297e578861294b576129448683612bdf565b9150612975565b600189141561295e576129448683612bf5565b60028914801561296c575084155b15612975578591505b600194506129ab565b896129ab577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506129b3565b600101612901565b50836129dc57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6129ea866001840383612b56565b9550506001016128c1565b509298975050505050505050565b6000826008811115612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b6000855b85811015612a9d5763ffffffff6020820290811b199890981685891b17979150600101612a75565b50959695505050505050565b6000816008811115612b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b82612b2557600091506126ef565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612bc4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161051b565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612bee5781610edc565b5090919050565b600081831015612bee5781610edc565b600060208284031215612c1757600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610edc57600080fd5b73ffffffffffffffffffffffffffffffffffffffff811681146113ab57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612cdf57612cdf612c69565b604052919050565b600067ffffffffffffffff821115612d0157612d01612c69565b5060051b60200190565b60008060408385031215612d1e57600080fd5b8235612d2981612c47565b915060208381013567ffffffffffffffff811115612d4657600080fd5b8401601f81018613612d5757600080fd5b8035612d6a612d6582612ce7565b612c98565b81815260059190911b82018301908381019088831115612d8957600080fd5b928401925b82841015612da757833582529284019290840190612d8e565b80955050505050509250929050565b600060208284031215612dc857600080fd5b813567ffffffffffffffff811115612ddf57600080fd5b820160408185031215610edc57600080fd5b60008060008060608587031215612e0757600080fd5b8435612e1281612c47565b935060208501359250604085013567ffffffffffffffff80821115612e3657600080fd5b818701915087601f830112612e4a57600080fd5b813581811115612e5957600080fd5b8860208260051b8501011115612e6e57600080fd5b95989497505060200194505050565b60005b83811015612e98578181015183820152602001612e80565b83811115612ea7576000848401525b50505050565b60008151808452612ec5816020860160208601612e7d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610edc6020830184612ead565b815160009082906020808601845b83811015612f3457815185529382019390820190600101612f18565b50929695505050505050565b82815260008251612f58816020850160208701612e7d565b919091016020019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612fa757612fa7612f66565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261300f57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261304e57600080fd5b830160208101925035905067ffffffffffffffff81111561306e57600080fd5b8060051b360383131561308057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561310257600080fd5b8260051b8083602087013760009401602001938452509192915050565b60006040830161312f8384613019565b604086528281845260608701905060608260051b88010193508260005b838110156131f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126131ad57600080fd5b85018035602067ffffffffffffffff8211156131c857600080fd5b8136038813156131d757600080fd5b6131e48983838601613087565b9850948501949390930192505060010161314c565b505050505061320b6020840184613019565b85830360208701526115708382846130d0565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015261324e8285018761311f565b84810360408681019190915286518083528388019284019060005b818110156132bf578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613269565b50909a9950505050505050505050565b6000602082840312156132e157600080fd5b815167ffffffffffffffff808211156132f957600080fd5b818401915084601f83011261330d57600080fd5b81518181111561331f5761331f612c69565b61335060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612c98565b915080825285602082850101111561336757600080fd5b611313816020840160208601612e7d565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126133ad57600080fd5b83018035915067ffffffffffffffff8211156133c857600080fd5b6020019150600581901b360382131561308057600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561341257613412612f66565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015281356040820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc184360301811261347757600080fd5b6040606084015261348d6080840185830161311f565b95945050505050565b60007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134c557600080fd5b8260051b80858437600092019182525092915050565b838152826020820152600082516134f9816040850160208701612e7d565b91909101604001949350505050565b600081518084526020808501945080840160005b838110156135385781518752958201959082019060010161351c565b509495945050505050565b600060208083528351818401528084015160a0604085015261356860c0850182613508565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156135e157848783030184526135cf828751612ead565b958801959388019391506001016135b5565b5060608a01519650838982030160808a01526135fd8188613508565b9650505050505050608084015160a08401528091505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000815260008251613661816001850160208701612e7d565b9190910160010192915050565b60008451613680818460208901612e7d565b82018481528351613698816020808501908801612e7d565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161372e81600e850160208701612e7d565b91909101600e019392505050565b6000825161300f818460208701612e7d565b60006020828403121561376057600080fd5b81518015158114610edc57600080fd5b60006020828403121561378257600080fd5b5051919050565b60006020828403121561379b57600080fd5b8151610edc81612c47565b604080825283519082018190526000906020906060840190828701845b828110156137f557815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016137c3565b505050838103828501526115708186613508565b6000602080838503121561381c57600080fd5b825167ffffffffffffffff81111561383357600080fd5b8301601f8101851361384457600080fd5b8051613852612d6582612ce7565b81815260059190911b8201830190838101908783111561387157600080fd5b928401925b8284101561388f57835182529284019290840190613876565b979650505050505050565b600181815b808511156138f357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156138d9576138d9612f66565b808516156138e657918102915b93841c939080029061389f565b509250929050565b60008261390a5750600161035f565b816139175750600061035f565b816001811461392d576002811461393757613953565b600191505061035f565b60ff84111561394857613948612f66565b50506001821b61035f565b5060208310610133831016604e8410600b8410161715613976575081810a61035f565b613980838361389a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156139b2576139b2612f66565b029392505050565b6000610edc83836138fb565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006128076040830184613508565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061348d6060830184613508565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613a6257613a62612f66565b500290565b600082613a9d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610edc60ff8416836138fb56fea2646970667358221220cba5176187567ea15bd96a3a42279beacef56f31c3ece59bef5e4029e012f1ef64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162003fbc38038062003fbc833981016040819052620000349162000125565b306080526001600160a01b03811660a0526200004f62000056565b5062000157565b600054600160a81b900460ff1615620000c55760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff600160a01b9091048116101562000123576000805460ff60a01b191660ff60a01b17905560405160ff81527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200013857600080fd5b81516001600160a01b03811681146200015057600080fd5b9392505050565b60805160a051613e3f6200017d6000396000610bf801526000610c250152613e3f6000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063caa0eb3b11610050578063caa0eb3b146100d5578063e0419ae3146100e8578063ea7cb3701461012057600080fd5b806301ffc9a71461007757806388d686041461009f578063a225543b146100c0575b600080fd5b61008a610085366004612e27565b610135565b60405190151581526020015b60405180910390f35b6100b26100ad366004612fc1565b6101ce565b604051908152602001610096565b6100d36100ce366004613011565b6102e7565b005b6100b26100e336600461304c565b610738565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610096565b610128610870565b6040516100969190613152565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806101c857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000806101d9610888565b90506000835160010167ffffffffffffffff8111156101fa576101fa612e8b565b604051908082528060200260200182016040528015610223578160200160208202803683370190505b5090508473ffffffffffffffffffffffffffffffffffffffff168160008151811061025057610250613165565b60200260200101818152505060005b84518110156102aa5784818151811061027a5761027a613165565b602002602001015182826001018151811061029757610297613165565b602090810291909101015260010161025f565b506102b7818360006108e5565b5081602001516001836000015103815181106102d5576102d5613165565b60200260200101519250505092915050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610332575060005460017401000000000000000000000000000000000000000090910460ff16105b806103645750303b158015610364575060005474010000000000000000000000000000000000000000900460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561047b57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6104b46040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a0820186905284825281840194909452815160028082529481019092529392909182015b6105406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610507579050509050828160008151811061056957610569613165565b6020026020010181905250818160018151811061058857610588613165565b60200260200101819052506105b58580602001906105a69190613194565b6105af90613218565b82610bb8565b60005b85358110156106945761061c6105d16020880188613194565b6105df906020810190613333565b838181106105ef576105ef613165565b905060200201357f42766d3f00000000000000000000000000000000000000000000000000000000610d0b565b610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016103ec565b8061068c816133d1565b9150506105b8565b507fcfb36af30e54f3c13af77a901f063607ad4decc594f6cda15e90c752343c514833866040516106c6929190613509565b60405180910390a1505050801561073457600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080610743610888565b905060006002840167ffffffffffffffff81111561076357610763612e8b565b60405190808252806020026020018201604052801561078c578160200160208202803683370190505b5090508673ffffffffffffffffffffffffffffffffffffffff16816000815181106107b9576107b9613165565b60200260200101818152505085816001815181106107d9576107d9613165565b60200260200101818152505060005b848110156108315785858281811061080257610802613165565b9050602002013582826002018151811061081e5761081e613165565b60209081029190910101526001016107e8565b5061083e818360016108e5565b50816020015160018360000151038151811061085c5761085c613165565b602002602001015192505050949350505050565b606061088361087e82610d27565b610f48565b905090565b6108ba6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610883906108e09073ffffffffffffffffffffffffffffffffffffffff16610f87565b610fb5565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015610b9e576003890198508886015180601f1a975061ffff8160081c169850506006881015610b16578761096857866020028401518252602082019150610b29565b600188141561098557602087028301518252602082019150610b29565b6002881415610a0f578c5187106109f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016103ec565b866020026020018d01518252602082019150610b29565b6003881415610a57576000610a456040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190610b29565b6004881415610a7357610a6c8d8d848a611121565b9150610b29565b606087610aa1578c604051602001610a8b919061372a565b6040516020818303038152906040529050610b00565b6001881415610aba57610ab38d61128e565b9050610b00565b6002881415610ad6576020808e0151604051610a8b92016137c1565b6003881415610b00578c516040805160208101929092520160405160208183030381529060405290505b805115610b1057610b10816113cb565b50610b29565b87610b25888463ffffffff8416565b9250505b60208c0151518c511115610b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016103ec565b610923565b6020838303048c52509750505050505050505b9392505050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190610c51907f00000000000000000000000000000000000000000000000000000000000000009087908790600401613826565b6000604051808303816000875af1158015610c70573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cb6919081019061390e565b9050610cc18161145d565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b6000610d16836114e8565b8015610bb15750610bb1838361154c565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261168860e0840181905261177c6101008501526118086101208501526119296101408501526101608401526119d2610180840152611ada6101a0840152611bae6101c0840152611dab6101e0840152611db6610200840152611dc1610220840152611dcc610240840152611dd7610260840152611e0b610280840152611e716102a0840152611ed76102c0840152611f0b6102e0840152611f3f610300840152611f74610320840152611fcf61034084015261202561036084015261204e6103808401526120a56103a08401526120d26103c08401526121296103e08401526121946104008401526121f161042084015261222f61044084015261226861046084015261229c6104808401526122ce6104a08401526123006104c08401526123326104e08401526123666105008401526123b86105208401526123f16105408401526124a36105608401526125d061058084015261262c6105a08401526126e66105c0840152835190850201909252919082815b83811015610f3f57858181518110610efe57610efe613165565b6020026020010151856028600601830181518110610f1e57610f1e613165565b67ffffffffffffffff90921660209283029190910190910152600101610ee4565b50505050919050565b60606020820182516020028101600284015b81831015610f775782518151178152602090920191600201610f5a565b5050825160020283525090919050565b60606101c88260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612762565b610fe76040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6110196040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561104d5761104d612e8b565b604051908082528060200260200182016040528015611076578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156110ad576110ad612e8b565b6040519080825280602002602001820160405280156110d6578160200160208202803683370190505b5090506020870151602002604001870160005b848110156111105781602082026020018401528151602001820191506001810190506110e9565b505060408501525091949350505050565b600060078216600383811c1682808261116057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006111ab565b826001141561118457506fffffffffffffffffffffffffffffffff905060806111ab565b82600214156111a0575067ffffffffffffffff905060406111ab565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156111ce576111ce612e8b565b6040519080825280602002602001820160405280156111f7578160200160208202803683370190505b50905060208082019083028a03815b8b82101561121e578151815260209182019101611206565b505060608b015160808c015160209081029091010160005b61010081101561127c5760208502830182845b82811015611265578051841c8a16825260209182019101611249565b5050506112738e8e8b6108e5565b9b508501611236565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016112da91906137c1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113169291602001613985565b604051602081830303815290604052905060005b8560400151518110156113c257818660400151828151811061134e5761134e613165565b60200260200101515160001b8760400151838151811061137057611370613165565b602002602001015160405160200161138a939291906139ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161132a565b50949350505050565b61145a816040516024016113df9190613152565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261284a565b50565b6000806114888360405160200161147491906139e2565b60405160208183030381529060405261286b565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166114e2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000611514827f01ffc9a70000000000000000000000000000000000000000000000000000000061154c565b80156101c85750611545827fffffffff0000000000000000000000000000000000000000000000000000000061154c565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff87169061753090611606908690613a08565b6000604051808303818686fa925050503d8060008114611642576040519150601f19603f3d011682016040523d82523d6000602084013e611647565b606091505b509150915060208151101561166257600093505050506101c8565b81801561167e57508080602001905181019061167e9190613a1a565b9695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa15801561174b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061176f9190613a3c565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fc9190613a3c565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156118f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061191b9190613a3c565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d09060240161172e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015611a93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab79190613a55565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016118da565b60008060008467ffffffffffffffff811115611bcc57611bcc612e8b565b604051908082528060200260200182016040528015611bf5578160200160208202803683370190505b50905060008567ffffffffffffffff811115611c1357611c13612e8b565b604051908082528060200260200182016040528015611c3c578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015611c91578251815260209283019201611c79565b5050602088028101602084015b81831015611cb6578251815260209283019201611c9e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490611d109087908790600401613a72565b600060405180830381865afa158015611d2d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d739190810190613ad5565b9050846020820160208a0281015b80821015611d9c578151835260209283019290910190611d81565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612897565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611e6b858a612897565b90612918565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f82611ed1858a612897565b90612937565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc828761294c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826117fc8287612997565b6000602083028203805b83811015611f695780518015611f60578252611f69565b50602001611f49565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015611f695780516120465760008252611f69565b60200161202f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b858210801561216757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156121865750805160209091019061217f83826129f5565b9250612139565b505081526020019392505050565b6020828102820380516000928201835b85821080156121d257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612186575080516020909101906121ea8382612a31565b92506121a4565b6020828102820380516000928201835b85821080156122105750826000105b15612186575080516020909101906122288382612a60565b9250612201565b600060208302820380516000602083015b85811015612186578051830191508282101561225b57600080fd5b9091508190602001612240565b600060208302820380516000602083015b8581101561218657805191508161228f57600080fd5b9181900491602001612279565b6020828102820380516000928201835b85821015612186575080516020909101906122c78184613c7b565b92506122ac565b6020828102820380516000928201835b8582101561218657508051828111156122f5578092505b6020820191506122de565b6020828102820380516000928201835b858210156121865750805182811015612327578092505b602082019150612310565b600060208302820380516000602083015b8581101561218657805191508161235957600080fd5b9181900691602001612343565b60006020830282038051600080602084015b868110156123a95783156123a157805192508284029150828483041461239d57600080fd5b8193505b602001612378565b50505081526020019392505050565b600060208302820380516000602083015b8581101561218657805183039150828211156123e457600080fd5b90915081906020016123c9565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906118da9086908690600401613c87565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061257c90879087908790600401613cb6565b602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd9190613a3c565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361176f8383612a76565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff81111561265a5761265a612e8b565b604051908082528060200260200182016040528015612683578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156126bf5781518160200186015260208201915060208101905061269d565b505051905060006126d283838989612ad5565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561275385858585612c25565b90955250949695505050505050565b6060833b80612781575050604080516020810190915260008152610bb1565b8084111561279f575050604080516020810190915260008152610bb1565b838310156127ea576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016103ec565b83830384820360008282106127ff5782612801565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060815182604051602001612881929190613ceb565b6040516020818303038152906040529050919050565b60008082601214156128ac57839150506101c8565b82601211156128d8575060128290036128c681600a613c7b565b6128d09085613d82565b9150506101c8565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161290781600a613c7b565b6128d09085613dbf565b5092915050565b60008161292d670de0b6b3a764000085613d82565b610bb19190613dbf565b6000670de0b6b3a764000061292d8385613d82565b600081810b61295c5750816101c8565b60008260000b13156129845761297382600a613dfa565b61297d9084613d82565b90506101c8565b60ff60008390031661290781600a613c7b565b60008060128314156129ac57839150506101c8565b82601211156129c65750601282900361290781600a613c7b565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016128c681600a613c7b565b6000828201838110612a075780612a29565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082612a40575060006101c8565b82820282848281612a5357612a536137f7565b041415612a075780612a29565b6000818311612a70576000610bb1565b50900390565b60008060015b60088111612acd576000612a908683612ccb565b90506000612a9e8684612ccb565b90506000612aac8383612a60565b9050612abc856001860383612d78565b94505060019092019150612a7c9050565b509392505050565b835160009081908190819060015b60088111612c1757600092508287612b1c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff612b20565b5060005b60005b83811015612bd557612b4e8c8281518110612b4057612b40613165565b602002602001015184612ccb565b95508a8611612ba05788612b6d57612b668683612e01565b9150612b97565b6001891415612b8057612b668683612e17565b600289148015612b8e575084155b15612b97578591505b60019450612bcd565b89612bcd577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150612bd5565b600101612b23565b5083612bfe57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b612c0c866001840383612d78565b955050600101612ae3565b509298975050505050505050565b6000826008811115612c93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b85811015612cbf5763ffffffff6020820290811b199890981685891b17979150600101612c97565b50959695505050505050565b6000816008811115612d39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b82612d475760009150612911565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115612de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b505063ffffffff602090920291821b199290921691901b1790565b6000818310612e105781610bb1565b5090919050565b600081831015612e105781610bb1565b600060208284031215612e3957600080fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114610bb157600080fd5b73ffffffffffffffffffffffffffffffffffffffff8116811461145a57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715612edd57612edd612e8b565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612f2a57612f2a612e8b565b604052919050565b600067ffffffffffffffff821115612f4c57612f4c612e8b565b5060051b60200190565b600082601f830112612f6757600080fd5b81356020612f7c612f7783612f32565b612ee3565b82815260059290921b84018101918181019086841115612f9b57600080fd5b8286015b84811015612fb65780358352918301918301612f9f565b509695505050505050565b60008060408385031215612fd457600080fd5b8235612fdf81612e69565b9150602083013567ffffffffffffffff811115612ffb57600080fd5b61300785828601612f56565b9150509250929050565b60006020828403121561302357600080fd5b813567ffffffffffffffff81111561303a57600080fd5b820160408185031215610bb157600080fd5b6000806000806060858703121561306257600080fd5b843561306d81612e69565b935060208501359250604085013567ffffffffffffffff8082111561309157600080fd5b818701915087601f8301126130a557600080fd5b8135818111156130b457600080fd5b8860208260051b85010111156130c957600080fd5b95989497505060200194505050565b60005b838110156130f35781810151838201526020016130db565b83811115613102576000848401525b50505050565b600081518084526131208160208601602086016130d8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610bb16020830184613108565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126131c857600080fd5b9190910192915050565b600067ffffffffffffffff8211156131ec576131ec612e8b565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b6000604080833603121561322b57600080fd5b613233612eba565b833567ffffffffffffffff8082111561324b57600080fd5b9085019036601f83011261325e57600080fd5b8135602061326e612f7783612f32565b82815260059290921b8401810191818101903684111561328d57600080fd5b8286015b84811015613301578035868111156132a95760008081fd5b870136603f8201126132bb5760008081fd5b848101356132cb612f77826131d2565b818152368c8385010111156132e05760008081fd5b818c8401888301376000918101870191909152845250918301918301613291565b508652508781013595508286111561331857600080fd5b61332436878a01612f56565b90850152509195945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261336857600080fd5b83018035915067ffffffffffffffff82111561338357600080fd5b6020019150600581901b360382131561339b57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613403576134036133a2565b5060010190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261343f57600080fd5b830160208101925035905067ffffffffffffffff81111561345f57600080fd5b8060051b360383131561339b57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156134ec57600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff831681526000602060408184015283356040840152808401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261356757600080fd5b60406060850152840160c0840161357e828061340a565b604060808801528281845260e08801905060e08260051b89010193508260005b83811015613648577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff208a870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126135ff57600080fd5b8501803567ffffffffffffffff81111561361857600080fd5b80360387131561362757600080fd5b61363488828c8501613471565b97505050918701919087019060010161359e565b50505050506136598383018361340a565b935091507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808582030160a08601526136928184846134ba565b979650505050505050565b600081518084526020808501945080840160005b838110156136cd578151875295820195908201906001016136b1565b509495945050505050565b6000815180845260208085019450848260051b860182860160005b8581101561371d57838303895261370b838351613108565b988501989250908401906001016136f3565b5090979650505050505050565b60208152815160208201526000602083015160a0604084015261375060c084018261369d565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08085840301606086015261378c83836136d8565b92506060860151915080858403016080860152506137aa828261369d565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156137eb578151855293820193908201906001016137cf565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a0865160408085880152613861838801836136d8565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261389c848361369d565b898103848b01528a51808252878c019550908701925060005b818110156138fc5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016138b5565b50919c9b505050505050505050505050565b60006020828403121561392057600080fd5b815167ffffffffffffffff81111561393757600080fd5b8201601f8101841361394857600080fd5b8051613956612f77826131d2565b81815285602083850101111561396b57600080fd5b61397c8260208301602086016130d8565b95945050505050565b8281526000825161399d8160208501602087016130d8565b919091016020019392505050565b600084516139bd8184602089016130d8565b820184815283516139d58160208085019088016130d8565b0160200195945050505050565b60008152600082516139fb8160018501602087016130d8565b9190910160010192915050565b600082516131c88184602087016130d8565b600060208284031215613a2c57600080fd5b81518015158114610bb157600080fd5b600060208284031215613a4e57600080fd5b5051919050565b600060208284031215613a6757600080fd5b8151610bb181612e69565b604080825283519082018190526000906020906060840190828701845b82811015613ac157815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101613a8f565b5050508381038285015261167e818661369d565b60006020808385031215613ae857600080fd5b825167ffffffffffffffff811115613aff57600080fd5b8301601f81018513613b1057600080fd5b8051613b1e612f7782612f32565b81815260059190911b82018301908381019087831115613b3d57600080fd5b928401925b8284101561369257835182529284019290840190613b42565b600181815b80851115613bb457817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613b9a57613b9a6133a2565b80851615613ba757918102915b93841c9390800290613b60565b509250929050565b600082613bcb575060016101c8565b81613bd8575060006101c8565b8160018114613bee5760028114613bf857613c14565b60019150506101c8565b60ff841115613c0957613c096133a2565b50506001821b6101c8565b5060208310610133831016604e8410600b8410161715613c37575081810a6101c8565b613c418383613b5b565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115613c7357613c736133a2565b029392505050565b6000610bb18383613bbc565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000612a29604083018461369d565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061397c606083018461369d565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251613d7481600e8501602087016130d8565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613dba57613dba6133a2565b500290565b600082613df5577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000610bb160ff841683613bbc56fea26469706673582212209ec8a4980503b946cfd95f79746dd1ca5c1d0ee83c5e41a9fedc6e260e121b3964736f6c634300080a0033"; type CombineTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Cooldown__factory.ts b/src/typechain/factories/Cooldown__factory.ts index 28cc0f4..51d5858 100644 --- a/src/typechain/factories/Cooldown__factory.ts +++ b/src/typechain/factories/Cooldown__factory.ts @@ -47,7 +47,7 @@ const _abi = [ ]; const _bytecode = - "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212209b288e798b5e28e9733ad12333f611a6c88531c1afec709df5bfa4f17586e65664736f6c634300080a0033"; + "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212206788812b8ac97f88eaa1efdefd97b88d593964c357cb869fd7223e56f3124f8964736f6c634300080a0033"; type CooldownConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20PulleeTest__factory.ts b/src/typechain/factories/ERC20PulleeTest__factory.ts index 754aad4..ac91514 100644 --- a/src/typechain/factories/ERC20PulleeTest__factory.ts +++ b/src/typechain/factories/ERC20PulleeTest__factory.ts @@ -135,7 +135,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f3e038e90c0550863266ddffb9521f7f88b37214f67dc9343c4e2ff20b8613a664736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610a69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063beabacc811610050578063beabacc8146100b2578063c20713fe146100c5578063e1f21c67146100d857600080fd5b80630ac0a1ff14610077578063913bed391461008c578063b14c21c51461009f575b600080fd5b61008a6100853660046107b5565b6100eb565b005b61008a61009a3660046107b5565b610171565b61008a6100ad3660046107b5565b6101c5565b61008a6100c03660046107ee565b610219565b61008a6100d336600461082f565b6102b8565b61008a6100e63660046107ee565b610346565b6040517fe7ae91fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff828116600483015283169063e7ae91fe906024015b600060405180830381600087803b15801561015557600080fd5b505af1158015610169573d6000803e3d6000fd5b505050505050565b6040517f8b24259b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690638b24259b9060240161013b565b6040517f3833be6200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8281166004830152831690633833be629060240161013b565b6040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af115801561028e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102b291906108bd565b50505050565b6040517ff677de9600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f677de969061030e908690869086906004016108df565b600060405180830381600087803b15801561032857600080fd5b505af115801561033c573d6000803e3d6000fd5b5050505050505050565b61036773ffffffffffffffffffffffffffffffffffffffff8416838361036c565b505050565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa1580156103e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104079190610942565b610411919061095b565b6040805173ffffffffffffffffffffffffffffffffffffffff868116602483015260448083018590528351808403909101815260649092018352602080830180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908401529293506102b29287926000916104df9190851690849061058e565b80519091501561036757808060200190518101906104fd91906108bd565b610367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b606061059d84846000856105a7565b90505b9392505050565b606082471015610639576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610585565b73ffffffffffffffffffffffffffffffffffffffff85163b6106b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610585565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106e091906109c6565b60006040518083038185875af1925050503d806000811461071d576040519150601f19603f3d011682016040523d82523d6000602084013e610722565b606091505b509150915061073282828661073d565b979650505050505050565b6060831561074c5750816105a0565b82511561075c5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058591906109e2565b73ffffffffffffffffffffffffffffffffffffffff811681146107b257600080fd5b50565b600080604083850312156107c857600080fd5b82356107d381610790565b915060208301356107e381610790565b809150509250929050565b60008060006060848603121561080357600080fd5b833561080e81610790565b9250602084013561081e81610790565b929592945050506040919091013590565b6000806000806060858703121561084557600080fd5b843561085081610790565b9350602085013567ffffffffffffffff8082111561086d57600080fd5b818701915087601f83011261088157600080fd5b81358181111561089057600080fd5b8860208260051b85010111156108a557600080fd5b95986020929092019750949560400135945092505050565b6000602082840312156108cf57600080fd5b815180151581146105a057600080fd5b6040808252810183905260008460608301825b8681101561092f57823561090581610790565b73ffffffffffffffffffffffffffffffffffffffff168252602092830192909101906001016108f2565b5060209390930193909352509392505050565b60006020828403121561095457600080fd5b5051919050565b60008219821115610995577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b60005b838110156109b557818101518382015260200161099d565b838111156102b25750506000910152565b600082516109d881846020870161099a565b9190910192915050565b6020815260008251806020840152610a0181604085016020870161099a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122048e9ceb088e21b0213f7501f9affbdb46d6a9ef40195f9d426b7644edc1ffd6564736f6c634300080a0033"; type ERC20PulleeTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ERC20Redeem__factory.ts b/src/typechain/factories/ERC20Redeem__factory.ts index 3cca113..d38c08b 100644 --- a/src/typechain/factories/ERC20Redeem__factory.ts +++ b/src/typechain/factories/ERC20Redeem__factory.ts @@ -386,7 +386,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea26469706673582212207ca3fa858ca00bebdd34d4140f8901d99525e58065520836f414048a082eeb7464736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610e5b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101e8578063a457c2d7146101f0578063a9059cbb14610203578063dd62ed3e1461021657600080fd5b806342966c681461018c57806370a082311461019f57806379cc6790146101d557600080fd5b806318160ddd116100c857806318160ddd1461014557806323b872dd14610157578063313ce5671461016a578063395093511461017957600080fd5b8063038ef03e146100ef57806306fdde0314610104578063095ea7b314610122575b600080fd5b6101026100fd366004610c2c565b61025c565b005b61010c6102ad565b6040516101199190610c4e565b60405180910390f35b610135610130366004610cc1565b61033f565b6040519015158152602001610119565b6035545b604051908152602001610119565b610135610165366004610ceb565b610357565b60405160128152602001610119565b610135610187366004610cc1565b61037b565b61010261019a366004610d27565b6103c7565b6101496101ad366004610c2c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101026101e3366004610cc1565b6103d4565b61010c6103ed565b6101356101fe366004610cc1565b6103fc565b610135610211366004610cc1565b6104d2565b610149610224366004610d40565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d56910160405180910390a150565b6060603680546102bc90610d73565b80601f01602080910402602001604051908101604052809291908181526020018280546102e890610d73565b80156103355780601f1061030a57610100808354040283529160200191610335565b820191906000526020600020905b81548152906001019060200180831161031857829003601f168201915b5050505050905090565b60003361034d8185856104e0565b5060019392505050565b600033610365858285610694565b61037085858561076b565b506001949350505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061034d90829086906103c2908790610df6565b6104e0565b6103d13382610a1e565b50565b6103df823383610694565b6103e98282610a1e565b5050565b6060603780546102bc90610d73565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156104c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61037082868684036104e0565b60003361034d81858561076b565b73ffffffffffffffffffffffffffffffffffffffff8316610582576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8216610625576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107655781811015610758576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104bc565b61076584848484036104e0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661080e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff82166108b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015610967576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906109ab908490610df6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a1191815260200190565b60405180910390a3610765565b73ffffffffffffffffffffffffffffffffffffffff8216610ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015610b77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104bc565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290610bb3908490610e0e565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610687565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c2757600080fd5b919050565b600060208284031215610c3e57600080fd5b610c4782610c03565b9392505050565b600060208083528351808285015260005b81811015610c7b57858101830151858201604001528201610c5f565b81811115610c8d576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60008060408385031215610cd457600080fd5b610cdd83610c03565b946020939093013593505050565b600080600060608486031215610d0057600080fd5b610d0984610c03565b9250610d1760208501610c03565b9150604084013590509250925092565b600060208284031215610d3957600080fd5b5035919050565b60008060408385031215610d5357600080fd5b610d5c83610c03565b9150610d6a60208401610c03565b90509250929050565b600181811c90821680610d8757607f821691505b60208210811415610dc1577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610e0957610e09610dc7565b500190565b600082821015610e2057610e20610dc7565b50039056fea26469706673582212207dfba82562e8de3685bb0c09a57de20b4f1c3279bb53a0f015d8970f01430cd764736f6c634300080a0033"; type ERC20RedeemConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20Factory__factory.ts b/src/typechain/factories/EmissionsERC20Factory__factory.ts index 09a6443..4d6dd26 100644 --- a/src/typechain/factories/EmissionsERC20Factory__factory.ts +++ b/src/typechain/factories/EmissionsERC20Factory__factory.ts @@ -182,7 +182,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b5060405162005aa538038062005aa5833981016040819052610031916100d7565b600160009081556040518290610046906100c9565b6001600160a01b039091168152602001604051809103906000f080158015610072573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610107565b614960806200114583390190565b6000602082840312156100e957600080fd5b81516001600160a01b038116811461010057600080fd5b9392505050565b60805161101c620001296000396000818160a6015261037a015261101c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610552565b6101b4565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4983604051602001610140919061085c565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016b9190610a02565b6020604051808303816000875af115801561018a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101ae9190610a15565b92915050565b600060026000541415610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556102398484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156102cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161021f565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60008061037183850185610d3a565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac8906103f3908590600401610f12565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161021f565b919050565b60006020828403121561052257600080fd5b813567ffffffffffffffff81111561053957600080fd5b82016060818503121561054b57600080fd5b9392505050565b6000806020838503121561056557600080fd5b823567ffffffffffffffff8082111561057d57600080fd5b818501915085601f83011261059157600080fd5b8135818111156105a057600080fd5b8660208285010111156105b257600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b813561054b816105c4565b8035801515811461050b57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064b57600080fd5b830160208101925035905067ffffffffffffffff81111561066b57600080fd5b80360383131561067a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126106fe57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261073c57600080fd5b830160208101925035905067ffffffffffffffff81111561075c57600080fd5b8060051b360383131561067a57600080fd5b60006040830161077e8384610707565b604086528281845260608701905060608260051b88010193508260005b838110156107f6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526107d48286610616565b6107df888284610681565b97505050602092830192919091019060010161079b565b50505050506108086020840184610707565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561084057600080fd5b60051b8082602085013760009201602001918252509392505050565b6020815261086982610606565b15156020820152600060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818436030181126108a757600080fd5b6060604084015283016108ba8180610616565b6080808601526108cf61010086018284610681565b9150506108df6020830183610616565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808684030160a0870152610914838284610681565b925050506040820135610926816105c4565b73ffffffffffffffffffffffffffffffffffffffff1660c0850152606082013560e085015261095860408601866106ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e818361076e565b95945050505050565b6000815180845260005b818110156109bd576020818501810151868301820152016109a1565b818111156109cf576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061054b6020830184610997565b600060208284031215610a2757600080fd5b815161054b816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610a8457610a84610a32565b60405290565b6040516060810167ffffffffffffffff81118282101715610a8457610a84610a32565b6040516080810167ffffffffffffffff81118282101715610a8457610a84610a32565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610b1757610b17610a32565b604052919050565b600067ffffffffffffffff831115610b3957610b39610a32565b610b6a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610ad0565b9050828152838383011115610b7e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610ba657600080fd5b61054b83833560208501610b1f565b600067ffffffffffffffff821115610bcf57610bcf610a32565b5060051b60200190565b600082601f830112610bea57600080fd5b81356020610bff610bfa83610bb5565b610ad0565b82815260059290921b84018101918181019086841115610c1e57600080fd5b8286015b84811015610c395780358352918301918301610c22565b509695505050505050565b60006040808385031215610c5757600080fd5b610c5f610a61565b9150823567ffffffffffffffff80821115610c7957600080fd5b818501915085601f830112610c8d57600080fd5b81356020610c9d610bfa83610bb5565b82815260059290921b84018101918181019089841115610cbc57600080fd5b8286015b84811015610d0857803586811115610cd85760008081fd5b8701603f81018c13610cea5760008081fd5b610cfa8c868301358b8401610b1f565b845250918301918301610cc0565b5087525086810135945082851115610d1f57600080fd5b610d2b88868901610bd9565b81870152505050505092915050565b600060208284031215610d4c57600080fd5b813567ffffffffffffffff80821115610d6457600080fd5b9083019060608286031215610d7857600080fd5b610d80610a8a565b610d8983610606565b8152602083013582811115610d9d57600080fd5b830160808188031215610daf57600080fd5b610db7610aad565b813584811115610dc657600080fd5b610dd289828501610b95565b825250602082013584811115610de757600080fd5b610df389828501610b95565b6020830152506040820135610e07816105c4565b80604083015250606082013560608201528060208401525050604083013582811115610e3257600080fd5b610e3e87828601610c44565b60408301525095945050505050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610ec6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610eb4868651610997565b95509381019392810192600101610e7a565b508681015188860389830152805180875290820195600095508201935091505b81841015610f065784518352938401936001939093019291820191610ee6565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610f43610100850182610997565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610f7e8282610997565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084820301606085015261098e8183610e4d56fea2646970667358221220720582ff344fffb1b5fe452694652af057f1cfaf7c41773d29b0cb792d362cd664736f6c634300080a003360c06040523480156200001157600080fd5b50604051620049603803806200496083398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516148be620000a260003960006109f201526000610a1901526148be6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461376c565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b6040516101909190613824565b6101846101bc366004613859565b610667565b6035545b604051908152602001610190565b6101846101e1366004613885565b61067f565b60405160128152602001610190565b610184610203366004613859565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b3660046138c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613985565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613a30565b610700565b005b6101846102c5366004613859565b610c12565b6101846102d8366004613859565b610cee565b6102b56102eb366004613a6b565b610cfc565b6101c56102fe366004613af0565b610e4f565b6101c5610311366004613b7c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f3660046138c6565b610e88565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526121a260e082018190526122966101008301526123226101208301526124436101408301526101608201526124ec6101808201526125f46101a08201526126c86101c08201526128c56101e08201526128d06102008201526128db6102208201526128e66102408201526128f161026082015261292561028082015261298b6102a08201526129f16102c0820152612a256102e0820152612a59610300820152612a8e610320820152612ae9610340820152612b3f610360820152612b68610380820152612bbf6103a0820152612bec6103c0820152612c436103e0820152612cae610400820152612d0b610420820152612d49610440820152612d82610460820152612db6610480820152612de86104a0820152612e1a6104c0820152612e4c6104e0820152612e80610500820152612ed2610520820152612f0b610540820152612fbd6105608201526130ea6105808201526131466105a08201526132006105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613bb5565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613bb5565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610f3d565b5060019392505050565b60003361068d8582856110f0565b6106988585856111c7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613c32565b610f3d565b6060603780546105e490613bb5565b600054610100900460ff16158080156107205750600054600160ff909116105b8061073a5750303b15801561073a575060005460ff166001145b6107cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561082957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108cd6108396020840184613c4a565b6108439080613c88565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610885925050506020850185613c4a565b610893906020810190613c88565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061147a92505050565b6109046108dd6020840184613c4a565b6108ee9060608101906040016138c6565b6108fb6020850185613c4a565b6060013561151b565b6109446040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6109a56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161096557905050905081816000815181106109ce576109ce613cf4565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f0000000000000000000000000000000000000000000000000000000000000000610a456040890189613d23565b856040518463ffffffff1660e01b8152600401610a6493929190613f59565b6000604051808303816000875af1158015610a83573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ac9919081019061400a565b9050610ad48161163b565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b2660208601866140c8565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ba09033908890614120565b60405180910390a15050508015610c0e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107c2565b610ce38286868403610f3d565b506001949350505050565b6000336106758185856111c7565b60655474010000000000000000000000000000000000000000900460ff16610d9d573373ffffffffffffffffffffffffffffffffffffffff841614610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016107c2565b6000610da884610e88565b9050610db4848261151b565b610de27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008426116c6565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610e41903390879087908790614267565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610e7f908561176c565b95945050505050565b6065546000908190610eb890610eb39073ffffffffffffffffffffffffffffffffffffffff16611821565b61184f565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610f07828460006119bb565b5060208301518351610f1b906001906142ab565b81518110610f2b57610f2b613cf4565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8216611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111c157818110156111b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c2565b6111c18484848403610f3d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611407908490613c32565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146d91815260200190565b60405180910390a36111c1565b600054610100900460ff16611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b610c0e8282611c94565b73ffffffffffffffffffffffffffffffffffffffff8216611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107c2565b80603560008282546115aa9190613c32565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906115e4908490613c32565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116668360405160200161165291906142c2565b604051602081830303815290604052611d52565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166116c0576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000826008811115611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b6000855b858110156117605763ffffffff6020820290811b199890981685891b17979150600101611738565b50959695505050505050565b60008160088111156117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b826117e8576000915061181a565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d7e565b6118816040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118b36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156118e7576118e76138e3565b604051908082528060200260200182016040528015611910578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611947576119476138e3565b604051908082528060200260200182016040528015611970578160200160208202803683370190505b5090506020870151602002604001870160005b848110156119aa578160208202602001840152815160200182019150600181019050611983565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c77576003890198508886015180601f1a975061ffff8160081c169850506006881015611bef5787611a3e57866020028401518252602082019150611c02565b6001881415611a5b57602087028301518252602082019150611c02565b6002881415611ae8578c518760200210611ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107c2565b866020026020018d01518252602082019150611c02565b6003881415611b30576000611b1e6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611c02565b6004881415611b4c57611b458d8d848a611e66565b9150611c02565b606087611b7a578c604051602001611b649190614323565b6040516020818303038152906040529050611bd9565b6001881415611b9357611b8c8d611fd3565b9050611bd9565b6002881415611baf576020808e0151604051611b6492016143f9565b6003881415611bd9578c516040805160208101929092520160405160208183030381529060405290505b805115611be957611be981612110565b50611c02565b87611bfe888463ffffffff8416565b9250505b60208c0151518c511115611c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107c2565b6119f9565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b8151611d3e9060369060208501906136d3565b508051611c8f9060379060208401906136d3565b6060815182604051602001611d6892919061445e565b6040516020818303038152906040529050919050565b6060833b80611d9d57505060408051602081019091526000815261069e565b80841115611dbb57505060408051602081019091526000815261069e565b83831015611e06576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107c2565b8383038482036000828210611e1b5782611e1d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611ea557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ef0565b8260011415611ec957506fffffffffffffffffffffffffffffffff90506080611ef0565b8260021415611ee5575067ffffffffffffffff90506040611ef0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611f1357611f136138e3565b604051908082528060200260200182016040528015611f3c578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f63578151815260209182019101611f4b565b505060608b015160808c015160209081029091010160005b610100811015611fc15760208502830182845b82811015611faa578051841c8a16825260209182019101611f8e565b505050611fb88e8e8b6119bb565b9b508501611f7b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161201f91906143f9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261205b92916020016144f5565b604051602081830303815290604052905060005b85604001515181101561210757818660400151828151811061209357612093613cf4565b60200260200101515160001b876040015183815181106120b5576120b5613cf4565b60200260200101516040516020016120cf9392919061451b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161206f565b50949350505050565b61219f816040516024016121249190613824565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261327c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122899190614552565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123169190614552565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124359190614552565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612248565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d1919061456b565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123f4565b60008060008467ffffffffffffffff8111156126e6576126e66138e3565b60405190808252806020026020018201604052801561270f578160200160208202803683370190505b50905060008567ffffffffffffffff81111561272d5761272d6138e3565b604051908082528060200260200182016040528015612756578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156127ab578251815260209283019201612793565b5050602088028101602084015b818310156127d05782518152602092830192016127b8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061282a9087908790600401614588565b600060405180830381865afa158015612847573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261288d91908101906145eb565b9050846020820160208a0281015b808210156128b657815183526020928301929091019061289b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761329d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361228982612985858a61329d565b90613317565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612289826129eb858a61329d565b90613336565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761334b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123168287613396565b6000602083028203805b83811015612a835780518015612a7a578252612a83565b50602001612a63565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a83578051612b605760008252612a83565b602001612b49565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c8157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612c9983826133f4565b9250612c53565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612d048382613430565b9250612cbe565b6020828102820380516000928201835b8582108015612d2a5750826000105b15612ca057508051602090910190612d42838261345f565b9250612d1b565b600060208302820380516000602083015b85811015612ca05780518301915082821015612d7557600080fd5b9091508190602001612d5a565b600060208302820380516000602083015b85811015612ca0578051915081612da957600080fd5b9181900491602001612d93565b6020828102820380516000928201835b85821015612ca057508051602090910190612de18184614791565b9250612dc6565b6020828102820380516000928201835b85821015612ca05750805182811115612e0f578092505b602082019150612df8565b6020828102820380516000928201835b85821015612ca05750805182811015612e41578092505b602082019150612e2a565b600060208302820380516000602083015b85811015612ca0578051915081612e7357600080fd5b9181900691602001612e5d565b60006020830282038051600080602084015b86811015612ec3578315612ebb578051925082840291508284830414612eb757600080fd5b8193505b602001612e92565b50505081526020019392505050565b600060208302820380516000602083015b85811015612ca05780518303915082821115612efe57600080fd5b9091508190602001612ee3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123f4908690869060040161479d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613096908790879087906004016147cc565b602060405180830381865afa1580156130b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d79190614552565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122898383613475565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613174576131746138e3565b60405190808252806020026020018201604052801561319d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131d9578151816020018601526020820191506020810190506131b7565b505051905060006131ec838389896134d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561326d858585856116c6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156132b257839150506105cf565b82601211156132de575060128290036132cc81600a614791565b6132d69085614801565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161330d81600a614791565b6132d6908561483e565b60008161332c670de0b6b3a764000085614801565b61069e919061483e565b6000670de0b6b3a764000061332c8385614801565b600081810b61335b5750816105cf565b60008260000b13156133835761337282600a614879565b61337c9084614801565b90506105cf565b60ff60008390031661330d81600a614791565b60008060128314156133ab57839150506105cf565b82601211156133c55750601282900361330d81600a614791565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016132cc81600a614791565b60008282018381106134065780613428565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261343f575060006105cf565b828202828482816134525761345261442f565b0414156134065780613428565b600081831161346f57600061069e565b50900390565b60008060015b600881116134cc57600061348f868361176c565b9050600061349d868461176c565b905060006134ab838361345f565b90506134bb856001860383613624565b9450506001909201915061347b9050565b509392505050565b835160009081908190819060015b600881116136165760009250828761351b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61351f565b5060005b60005b838110156135d45761354d8c828151811061353f5761353f613cf4565b60200260200101518461176c565b95508a861161359f578861356c5761356586836136ad565b9150613596565b600189141561357f5761356586836136c3565b60028914801561358d575084155b15613596578591505b600194506135cc565b896135cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506135d4565b600101613522565b50836135fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61360b866001840383613624565b9550506001016134e2565b509298975050505050505050565b6000826008811115613692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b505063ffffffff602090920291821b199290921691901b1790565b60008183106136bc578161069e565b5090919050565b6000818310156136bc578161069e565b8280546136df90613bb5565b90600052602060002090601f0160209004810192826137015760008555613747565b82601f1061371a57805160ff1916838001178555613747565b82800160010185558215613747579182015b8281111561374757825182559160200191906001019061372c565b50613753929150613757565b5090565b5b808211156137535760008155600101613758565b60006020828403121561377e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b838110156137c95781810151838201526020016137b1565b838111156111c15750506000910152565b600081518084526137f28160208601602086016137ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e60208301846137da565b73ffffffffffffffffffffffffffffffffffffffff8116811461219f57600080fd5b6000806040838503121561386c57600080fd5b823561387781613837565b946020939093013593505050565b60008060006060848603121561389a57600080fd5b83356138a581613837565b925060208401356138b581613837565b929592945050506040919091013590565b6000602082840312156138d857600080fd5b813561069e81613837565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613959576139596138e3565b604052919050565b600067ffffffffffffffff82111561397b5761397b6138e3565b5060051b60200190565b6000806040838503121561399857600080fd5b82356139a381613837565b915060208381013567ffffffffffffffff8111156139c057600080fd5b8401601f810186136139d157600080fd5b80356139e46139df82613961565b613912565b81815260059190911b82018301908381019088831115613a0357600080fd5b928401925b82841015613a2157833582529284019290840190613a08565b80955050505050509250929050565b600060208284031215613a4257600080fd5b813567ffffffffffffffff811115613a5957600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613a8057600080fd5b8335613a8b81613837565b9250602084013567ffffffffffffffff80821115613aa857600080fd5b818601915086601f830112613abc57600080fd5b813581811115613acb57600080fd5b876020828501011115613add57600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613b0657600080fd5b8435613b1181613837565b935060208501359250604085013567ffffffffffffffff80821115613b3557600080fd5b818701915087601f830112613b4957600080fd5b813581811115613b5857600080fd5b8860208260051b8501011115613b6d57600080fd5b95989497505060200194505050565b60008060408385031215613b8f57600080fd5b8235613b9a81613837565b91506020830135613baa81613837565b809150509250929050565b600181811c90821680613bc957607f821691505b602082108114156116c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613c4557613c45613c03565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613c7e57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cbd57600080fd5b83018035915067ffffffffffffffff821115613cd857600080fd5b602001915036819003821315613ced57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c7e57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d8c57600080fd5b830160208101925035905067ffffffffffffffff811115613dac57600080fd5b8060051b3603831315613ced57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3c57600080fd5b830160208101925035905067ffffffffffffffff811115613e5c57600080fd5b803603831315613ced57600080fd5b600060408301613e7b8384613d57565b604086528281845260608701905060608260051b88010193508260005b83811015613ef3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613ed18286613e07565b613edc888284613dbe565b975050506020928301929190910190600101613e98565b5050505050613f056020840184613d57565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613f3d57600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152613f8982850187613e6b565b84810360408681019190915286518083528388019284019060005b81811015613ffa578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613fa4565b50909a9950505050505050505050565b60006020828403121561401c57600080fd5b815167ffffffffffffffff8082111561403457600080fd5b818401915084601f83011261404857600080fd5b81518181111561405a5761405a6138e3565b61408b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613912565b91508082528560208285010111156140a257600080fd5b6121078160208401602086016137ae565b803580151581146140c357600080fd5b919050565b6000602082840312156140da57600080fd5b61069e826140b3565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261411757600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261414c846140b3565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261418857600080fd5b606084810152840161419a8180613e07565b608060a08701526141b061012087018284613dbe565b9150506141c06020830183613e07565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c08801526141f5838284613dbe565b92505050604082013561420781613837565b831660e0860152606082013561010086015261422660408701876140e3565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261425c8184613e6b565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526142a1606083018486613dbe565b9695505050505050565b6000828210156142bd576142bd613c03565b500390565b60008152600082516142db8160018501602087016137ae565b9190910160010192915050565b600081518084526020808501945080840160005b83811015614318578151875295820195908201906001016142fc565b509495945050505050565b600060208083528351818401528084015160a0604085015261434860c08501826142e8565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156143c157848783030184526143af8287516137da565b95880195938801939150600101614395565b5060608a01519650838982030160808a01526143dd81886142e8565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561442357815185529382019390820190600101614407565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516144e781600e8501602087016137ae565b91909101600e019392505050565b8281526000825161450d8160208501602087016137ae565b919091016020019392505050565b6000845161452d8184602089016137ae565b820184815283516145458160208085019088016137ae565b0160200195945050505050565b60006020828403121561456457600080fd5b5051919050565b60006020828403121561457d57600080fd5b815161069e81613837565b604080825283519082018190526000906020906060840190828701845b828110156145d757815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016145a5565b505050838103828501526142a181866142e8565b600060208083850312156145fe57600080fd5b825167ffffffffffffffff81111561461557600080fd5b8301601f8101851361462657600080fd5b80516146346139df82613961565b81815260059190911b8201830190838101908783111561465357600080fd5b928401925b8284101561425c57835182529284019290840190614658565b600181815b808511156146ca57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146b0576146b0613c03565b808516156146bd57918102915b93841c9390800290614676565b509250929050565b6000826146e1575060016105cf565b816146ee575060006105cf565b8160018114614704576002811461470e5761472a565b60019150506105cf565b60ff84111561471f5761471f613c03565b50506001821b6105cf565b5060208310610133831016604e8410600b841016171561474d575081810a6105cf565b6147578383614671565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561478957614789613c03565b029392505050565b600061069e83836146d2565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061342860408301846142e8565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610e7f60608301846142e8565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483957614839613c03565b500290565b600082614874577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff8416836146d256fea26469706673582212207f0b2bf5cb9b12afbbcca4aba6e6c64ca893cbeaad2a198d58555ed1eb02dffd64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b50604051615c33380380615c3383398101604081905261002f916100d4565b600160009081556040518290610044906100c7565b6001600160a01b039091168152602001604051809103906000f080158015610070573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250610104565b614cd780610f5c83390190565b6000602082840312156100e657600080fd5b81516001600160a01b03811681146100fd57600080fd5b9392505050565b608051610e376101256000396000818160a6015261030d0152610e376000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632c6afc68146100515780632ea72a491461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f3660046107c8565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c3660046108dd565b610141565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d636600461091a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600061013b826040516020016101279190610a7d565b604051602081830303815290604052610141565b92915050565b6000600260005414156101b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101c5836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610258576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c44000000000000000000000000000000000060448201526064016101ac565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b600080828060200190518101906103049190610cfb565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517f9a8d2ac800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690639a8d2ac890610386908590600401610a7d565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c65640000000000000000000060448201526064016101ac565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b6040516060810167ffffffffffffffff811182821017156104f4576104f46104a2565b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610587576105876104a2565b604052919050565b801515811461059d57600080fd5b50565b600067ffffffffffffffff8211156105ba576105ba6104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126105f757600080fd5b813561060a610605826105a0565b610540565b81815284602083860101111561061f57600080fd5b816020850160208301376000918101602001919091529392505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059d57600080fd5b600067ffffffffffffffff821115610678576106786104a2565b5060051b60200190565b600082601f83011261069357600080fd5b813560206106a36106058361065e565b82815260059290921b840181019181810190868411156106c257600080fd5b8286015b848110156106dd57803583529183019183016106c6565b509695505050505050565b6000604082840312156106fa57600080fd5b6107026104d1565b9050813567ffffffffffffffff8082111561071c57600080fd5b818401915084601f83011261073057600080fd5b813560206107406106058361065e565b82815260059290921b8401810191818101908884111561075f57600080fd5b8286015b848110156107975780358681111561077b5760008081fd5b6107898b86838b01016105e6565b845250918301918301610763565b50865250858101359350828411156107ae57600080fd5b6107ba87858801610682565b818601525050505092915050565b6000602082840312156107da57600080fd5b813567ffffffffffffffff808211156107f257600080fd5b908301906060828603121561080657600080fd5b61080e6104fa565b82356108198161058f565b815260208301358281111561082d57600080fd5b83016080818803121561083f57600080fd5b61084761051d565b81358481111561085657600080fd5b610862898285016105e6565b82525060208201358481111561087757600080fd5b610883898285016105e6565b60208301525060408201356108978161063c565b806040830152506060820135606082015280602084015250506040830135828111156108c257600080fd5b6108ce878286016106e8565b60408301525095945050505050565b6000602082840312156108ef57600080fd5b813567ffffffffffffffff81111561090657600080fd5b610912848285016105e6565b949350505050565b60006020828403121561092c57600080fd5b81356109378161063c565b9392505050565b60005b83811015610959578181015183820152602001610941565b83811115610968576000848401525b50505050565b6000815180845261098681602086016020860161093e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60006040830182516040855281815180845260608701915060608160051b88010193506020808401935060005b82811015610a31577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018452610a1f86865161096e565b955093810193928101926001016109e5565b508681015188860389830152805180875290820195600095508201935091505b81841015610a715784518352938401936001939093019291820191610a51565b50909695505050505050565b6020815281511515602082015260006020830151606060408401528051608080850152610aae61010085018261096e565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808583030160a0860152610ae9828261096e565b91505073ffffffffffffffffffffffffffffffffffffffff60408301511660c0850152606082015160e0850152604085015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848203016060850152610b5181836109b8565b95945050505050565b6000610b68610605846105a0565b9050828152838383011115610b7c57600080fd5b61093783602083018461093e565b600082601f830112610b9b57600080fd5b61093783835160208501610b5a565b600082601f830112610bbb57600080fd5b81516020610bcb6106058361065e565b82815260059290921b84018101918181019086841115610bea57600080fd5b8286015b848110156106dd5780518352918301918301610bee565b60006040808385031215610c1857600080fd5b610c206104d1565b9150825167ffffffffffffffff80821115610c3a57600080fd5b818501915085601f830112610c4e57600080fd5b81516020610c5e6106058361065e565b82815260059290921b84018101918181019089841115610c7d57600080fd5b8286015b84811015610cc957805186811115610c995760008081fd5b8701603f81018c13610cab5760008081fd5b610cbb8c868301518b8401610b5a565b845250918301918301610c81565b5087525086810151945082851115610ce057600080fd5b610cec88868901610baa565b81870152505050505092915050565b600060208284031215610d0d57600080fd5b815167ffffffffffffffff80821115610d2557600080fd5b9083019060608286031215610d3957600080fd5b610d416104fa565b8251610d4c8161058f565b8152602083015182811115610d6057600080fd5b830160808188031215610d7257600080fd5b610d7a61051d565b815184811115610d8957600080fd5b610d9589828501610b8a565b825250602082015184811115610daa57600080fd5b610db689828501610b8a565b6020830152506040820151610dca8161063c565b80604083015250606082015160608201528060208401525050604083015182811115610df557600080fd5b6108ce87828601610c0556fea26469706673582212208d774919d4db7fa0e5f85b6b9187757de21887aea659b1496b823750492b900a64736f6c634300080a003360c06040523480156200001157600080fd5b5060405162004cd738038062004cd7833981016040819052620000349162000118565b306080526001600160a01b03811660a0526200004f62000056565b506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051614b6762000170600039600061136d0152600061139a0152614b676000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610331578063ea34554014610369578063ea7cb3701461037c57600080fd5b8063caa0eb3b146102d8578063dd62ed3e146102eb57600080fd5b8063a457c2d7116100b2578063a457c2d71461029f578063a9059cbb146102b2578063bb1757cf146102c557600080fd5b806395d89b41146102825780639a8d2ac81461028a57600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461021557806388d686041461024b57600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461386c565b610384565b60405190151581526020015b60405180910390f35b6101a161041d565b6040516101909190613924565b6101846101bc366004613959565b6104af565b6035545b604051908152602001610190565b6101846101e1366004613985565b6104c7565b60405160128152602001610190565b610184610203366004613959565b6104ed565b6065546101849060ff1681565b6101c56102233660046139c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610259366004613b19565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a1610539565b61029d610298366004613b69565b610548565b005b6101846102ad366004613959565b610911565b6101846102c0366004613959565b6109ed565b61029d6102d3366004613ba4565b6109fb565b6101c56102e6366004613c29565b610b36565b6101c56102f9366004613cb5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c56103773660046139c6565b610b6f565b6101a1610c17565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061041757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461042c90613cee565b80601f016020809104026020016040519081016040528092919081815260200182805461045890613cee565b80156104a55780601f1061047a576101008083540402835291602001916104a5565b820191906000526020600020905b81548152906001019060200180831161048857829003601f168201915b5050505050905090565b6000336104bd818585610c2f565b5060019392505050565b6000336104d5858285610de2565b6104e0858585610eb9565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104bd9082908690610534908790613d6b565b610c2f565b60606037805461042c90613cee565b600054610100900460ff16158080156105685750600054600160ff909116105b806105825750303b158015610582575060005460ff166001145b610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561067157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107156106816020840184613d83565b61068b9080613dc1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106cd925050506020850185613d83565b6106db906020810190613dc1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116c92505050565b61074c6107256020840184613d83565b6107369060608101906040016139c6565b6107436020850185613d83565b6060013561120d565b6107856040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6107df6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107a6579050509050818160008151811061080857610808613e2d565b60209081029190910101526108326108236040860186613e5c565b61082c90613ed6565b8261132d565b61083f6020850185614006565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e166906108a09033908790614260565b60405180910390a15050801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161060a565b6109e28286868403610c2f565b506001949350505050565b6000336104bd818585610eb9565b60655460ff16610a84573373ffffffffffffffffffffffffffffffffffffffff841614610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d0000000000000000000000000000000000604482015260640161060a565b6000610a8f84610b6f565b9050610a9b848261120d565b610ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261147b565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610b289033908790879087906143a7565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610b669085611521565b95945050505050565b600080610b7a6115d6565b60408051600180825281830190925291925060009190602080830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1681600081518110610bca57610bca613e2d565b602002602001018181525050610be281836000611639565b5060208201518251610bf6906001906143eb565b81518110610c0657610c06613e2d565b602002602001015192505050919050565b6060610c2a610c258261190a565b611b2b565b905090565b73ffffffffffffffffffffffffffffffffffffffff8316610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eb35781811015610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060a565b610eb38484848403610c2f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610fff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906110f9908490613d6b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115f91815260200190565b60405180910390a3610eb3565b600054610100900460ff16611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b61090d8282611b6f565b73ffffffffffffffffffffffffffffffffffffffff821661128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060a565b806035600082825461129c9190613d6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906112d6908490613d6b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a1906113c6907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161448f565b6000604051808303816000875af11580156113e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261142b9190810190614577565b905061143681611c2d565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008260088111156114e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b6000855b858110156115155763ffffffff6020820290811b199890981685891b179791506001016114ed565b50959695505050505050565b600081600881111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b8261159d57600091506115cf565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b6116086040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610c2a906116349062010000900473ffffffffffffffffffffffffffffffffffffffff16611cb8565b611ce6565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156118f2576003890198508886015180601f1a975061ffff8160081c16985050600688101561186a57876116bc5786602002840151825260208201915061187d565b60018814156116d95760208702830151825260208201915061187d565b6002881415611763578c51871061174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161060a565b866020026020018d0151825260208201915061187d565b60038814156117ab5760006117996040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061187d565b60048814156117c7576117c08d8d848a611e52565b915061187d565b6060876117f5578c6040516020016117df91906145e5565b6040516020818303038152906040529050611854565b600188141561180e576118078d611fbf565b9050611854565b600288141561182a576020808e01516040516117df920161467c565b6003881415611854578c516040805160208101929092520160405160208183030381529060405290505b80511561186457611864816120fc565b5061187d565b87611879888463ffffffff8416565b9250505b60208c0151518c5111156118ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161060a565b611677565b602083830304909b529b9a5050505050505050505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261218e60e0840181905261228261010085015261230e61012085015261242f6101408501526101608401526124d86101808401526125e06101a08401526126b46101c08401526128b16101e08401526128bc6102008401526128c76102208401526128d26102408401526128dd6102608401526129116102808401526129776102a08401526129dd6102c0840152612a116102e0840152612a45610300840152612a7a610320840152612ad5610340840152612b2b610360840152612b54610380840152612bab6103a0840152612bd86103c0840152612c2f6103e0840152612c9a610400840152612cf7610420840152612d35610440840152612d6e610460840152612da2610480840152612dd46104a0840152612e066104c0840152612e386104e0840152612e6c610500840152612ebe610520840152612ef7610540840152612fa96105608401526130d66105808401526131326105a08401526131ec6105c0840152835190850201909252919082815b83811015611b2257858181518110611ae157611ae1613e2d565b6020026020010151856028600601830181518110611b0157611b01613e2d565b67ffffffffffffffff90921660209283029190910190910152600101611ac7565b50505050919050565b60606020820182516020028101600284015b81831015611b5a5782518151178152602090920191600201611b3d565b5050825160020283525090919050565b505050565b600054610100900460ff16611c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b8151611c199060369060208501906137d3565b508051611b6a9060379060208401906137d3565b600080611c5883604051602001611c4491906146e1565b604051602081830303815290604052613268565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611cb2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606104178260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613294565b611d186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b611d4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611d7e57611d7e6139e3565b604051908082528060200260200182016040528015611da7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611dde57611dde6139e3565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611e41578160208202602001840152815160200182019150600181019050611e1a565b505060408501525091949350505050565b600060078216600383811c16828082611e9157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611edc565b8260011415611eb557506fffffffffffffffffffffffffffffffff90506080611edc565b8260021415611ed1575067ffffffffffffffff90506040611edc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611eff57611eff6139e3565b604051908082528060200260200182016040528015611f28578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f4f578151815260209182019101611f37565b505060608b015160808c015160209081029091010160005b610100811015611fad5760208502830182845b82811015611f96578051841c8a16825260209182019101611f7a565b505050611fa48e8e8b611639565b9b508501611f67565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161200b919061467c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526120479291602001614707565b604051602081830303815290604052905060005b8560400151518110156120f357818660400151828151811061207f5761207f613e2d565b60200260200101515160001b876040015183815181106120a1576120a1613e2d565b60200260200101516040516020016120bb9392919061472d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161205b565b50949350505050565b61218b816040516024016121109190613924565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261337c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122759190614764565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190614764565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190614764565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd919061477d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123e0565b60008060008467ffffffffffffffff8111156126d2576126d26139e3565b6040519080825280602002602001820160405280156126fb578160200160208202803683370190505b50905060008567ffffffffffffffff811115612719576127196139e3565b604051908082528060200260200182016040528015612742578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561279757825181526020928301920161277f565b5050602088028101602084015b818310156127bc5782518152602092830192016127a4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612816908790879060040161479a565b600060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261287991908101906147fd565b9050846020820160208a0281015b808210156128a2578151835260209283019290910190612887565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761339d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361227582612971858a61339d565b90613417565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612275826129d7858a61339d565b90613436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761344b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123028287613496565b6000602083028203805b83811015612a6f5780518015612a66578252612a6f565b50602001612a4f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a6f578051612b4c5760008252612a6f565b602001612b35565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612c8583826134f4565b9250612c3f565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cd857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612cf08382613530565b9250612caa565b6020828102820380516000928201835b8582108015612d165750826000105b15612c8c57508051602090910190612d2e838261355f565b9250612d07565b600060208302820380516000602083015b85811015612c8c5780518301915082821015612d6157600080fd5b9091508190602001612d46565b600060208302820380516000602083015b85811015612c8c578051915081612d9557600080fd5b9181900491602001612d7f565b6020828102820380516000928201835b85821015612c8c57508051602090910190612dcd81846149a3565b9250612db2565b6020828102820380516000928201835b85821015612c8c5750805182811115612dfb578092505b602082019150612de4565b6020828102820380516000928201835b85821015612c8c5750805182811015612e2d578092505b602082019150612e16565b600060208302820380516000602083015b85811015612c8c578051915081612e5f57600080fd5b9181900691602001612e49565b60006020830282038051600080602084015b86811015612eaf578315612ea7578051925082840291508284830414612ea357600080fd5b8193505b602001612e7e565b50505081526020019392505050565b600060208302820380516000602083015b85811015612c8c5780518303915082821115612eea57600080fd5b9091508190602001612ecf565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123e090869086906004016149af565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613082908790879087906004016149de565b602060405180830381865afa15801561309f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c39190614764565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122758383613575565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613160576131606139e3565b604051908082528060200260200182016040528015613189578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131c5578151816020018601526020820191506020810190506131a3565b505051905060006131d8838389896135d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856132598585858561147b565b90955250949695505050505050565b606081518260405160200161327e929190614a13565b6040516020818303038152906040529050919050565b6060833b806132b35750506040805160208101909152600081526104e6565b808411156132d15750506040805160208101909152600081526104e6565b8383101561331c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161060a565b83830384820360008282106133315782613333565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156133b25783915050610417565b82601211156133de575060128290036133cc81600a6149a3565b6133d69085614aaa565b915050610417565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161340d81600a6149a3565b6133d69085614ae7565b60008161342c670de0b6b3a764000085614aaa565b6104e69190614ae7565b6000670de0b6b3a764000061342c8385614aaa565b600081810b61345b575081610417565b60008260000b13156134835761347282600a614b22565b61347c9084614aaa565b9050610417565b60ff60008390031661340d81600a6149a3565b60008060128314156134ab5783915050610417565b82601211156134c55750601282900361340d81600a6149a3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133cc81600a6149a3565b60008282018381106135065780613528565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261353f57506000610417565b82820282848281613552576135526146b2565b0414156135065780613528565b600081831161356f5760006104e6565b50900390565b60008060015b600881116135cc57600061358f8683611521565b9050600061359d8684611521565b905060006135ab838361355f565b90506135bb856001860383613724565b9450506001909201915061357b9050565b509392505050565b835160009081908190819060015b600881116137165760009250828761361b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61361f565b5060005b60005b838110156136d45761364d8c828151811061363f5761363f613e2d565b602002602001015184611521565b95508a861161369f578861366c5761366586836137ad565b9150613696565b600189141561367f5761366586836137c3565b60028914801561368d575084155b15613696578591505b600194506136cc565b896136cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506136d4565b600101613622565b50836136fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61370b866001840383613724565b9550506001016135e2565b509298975050505050505050565b6000826008811115613792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b505063ffffffff602090920291821b199290921691901b1790565b60008183106137bc57816104e6565b5090919050565b6000818310156137bc57816104e6565b8280546137df90613cee565b90600052602060002090601f0160209004810192826138015760008555613847565b82601f1061381a57805160ff1916838001178555613847565b82800160010185558215613847579182015b8281111561384757825182559160200191906001019061382c565b50613853929150613857565b5090565b5b808211156138535760008155600101613858565b60006020828403121561387e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104e657600080fd5b60005b838110156138c95781810151838201526020016138b1565b83811115610eb35750506000910152565b600081518084526138f28160208601602086016138ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104e660208301846138da565b73ffffffffffffffffffffffffffffffffffffffff8116811461218b57600080fd5b6000806040838503121561396c57600080fd5b823561397781613937565b946020939093013593505050565b60008060006060848603121561399a57600080fd5b83356139a581613937565b925060208401356139b581613937565b929592945050506040919091013590565b6000602082840312156139d857600080fd5b81356104e681613937565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613a3557613a356139e3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a8257613a826139e3565b604052919050565b600067ffffffffffffffff821115613aa457613aa46139e3565b5060051b60200190565b600082601f830112613abf57600080fd5b81356020613ad4613acf83613a8a565b613a3b565b82815260059290921b84018101918181019086841115613af357600080fd5b8286015b84811015613b0e5780358352918301918301613af7565b509695505050505050565b60008060408385031215613b2c57600080fd5b8235613b3781613937565b9150602083013567ffffffffffffffff811115613b5357600080fd5b613b5f85828601613aae565b9150509250929050565b600060208284031215613b7b57600080fd5b813567ffffffffffffffff811115613b9257600080fd5b8201606081850312156104e657600080fd5b600080600060408486031215613bb957600080fd5b8335613bc481613937565b9250602084013567ffffffffffffffff80821115613be157600080fd5b818601915086601f830112613bf557600080fd5b813581811115613c0457600080fd5b876020828501011115613c1657600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613c3f57600080fd5b8435613c4a81613937565b935060208501359250604085013567ffffffffffffffff80821115613c6e57600080fd5b818701915087601f830112613c8257600080fd5b813581811115613c9157600080fd5b8860208260051b8501011115613ca657600080fd5b95989497505060200194505050565b60008060408385031215613cc857600080fd5b8235613cd381613937565b91506020830135613ce381613937565b809150509250929050565b600181811c90821680613d0257607f821691505b60208210811415611cb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613d7e57613d7e613d3c565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613db757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613df657600080fd5b83018035915067ffffffffffffffff821115613e1157600080fd5b602001915036819003821315613e2657600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613db757600080fd5b600067ffffffffffffffff821115613eaa57613eaa6139e3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040808336031215613ee957600080fd5b613ef1613a12565b833567ffffffffffffffff80821115613f0957600080fd5b9085019036601f830112613f1c57600080fd5b81356020613f2c613acf83613a8a565b82815260059290921b84018101918181019036841115613f4b57600080fd5b8286015b84811015613fbf57803586811115613f675760008081fd5b870136603f820112613f795760008081fd5b84810135613f89613acf82613e90565b818152368c838501011115613f9e5760008081fd5b818c8401888301376000918101870191909152845250918301918301613f4f565b5086525087810135955082861115613fd657600080fd5b613fe236878a01613aae565b90850152509195945050505050565b8035801515811461400157600080fd5b919050565b60006020828403121561401857600080fd5b6104e682613ff1565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261405657600080fd5b830160208101925035905067ffffffffffffffff81111561407657600080fd5b803603831315613e2657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261410257600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261414057600080fd5b830160208101925035905067ffffffffffffffff81111561416057600080fd5b8060051b3603831315613e2657600080fd5b600060408301614182838461410b565b604086528281845260608701905060608260051b88010193508260005b838110156141fa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526141d88286614021565b6141e3888284614085565b97505050602092830192919091019060010161419f565b505050505061420c602084018461410b565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561424457600080fd5b60051b8082602085013760009201602001918252509392505050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261428c84613ff1565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126142c857600080fd5b60608481015284016142da8180614021565b608060a08701526142f061012087018284614085565b9150506143006020830183614021565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614335838284614085565b92505050604082013561434781613937565b831660e0860152606082013561010086015261436660408701876140ce565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261439c8184614172565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526143e1606083018486614085565b9695505050505050565b6000828210156143fd576143fd613d3c565b500390565b6000815180845260208085019450848260051b860182860160005b858110156144475783830389526144358383516138da565b9885019892509084019060010161441d565b5090979650505050505050565b600081518084526020808501945080840160005b8381101561448457815187529582019590820190600101614468565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a08651604080858801526144ca83880183614402565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526145058483614454565b898103848b01528a51808252878c019550908701925060005b818110156145655785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c09093019260010161451e565b50919c9b505050505050505050505050565b60006020828403121561458957600080fd5b815167ffffffffffffffff8111156145a057600080fd5b8201601f810184136145b157600080fd5b80516145bf613acf82613e90565b8181528560208385010111156145d457600080fd5b610b668260208301602086016138ae565b60208152815160208201526000602083015160a0604084015261460b60c0840182614454565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526146478383614402565b92506060860151915080858403016080860152506146658282614454565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156146a65781518552938201939082019060010161468a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008152600082516146fa8160018501602087016138ae565b9190910160010192915050565b8281526000825161471f8160208501602087016138ae565b919091016020019392505050565b6000845161473f8184602089016138ae565b820184815283516147578160208085019088016138ae565b0160200195945050505050565b60006020828403121561477657600080fd5b5051919050565b60006020828403121561478f57600080fd5b81516104e681613937565b604080825283519082018190526000906020906060840190828701845b828110156147e957815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016147b7565b505050838103828501526143e18186614454565b6000602080838503121561481057600080fd5b825167ffffffffffffffff81111561482757600080fd5b8301601f8101851361483857600080fd5b8051614846613acf82613a8a565b81815260059190911b8201830190838101908783111561486557600080fd5b928401925b8284101561439c5783518252928401929084019061486a565b600181815b808511156148dc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c2576148c2613d3c565b808516156148cf57918102915b93841c9390800290614888565b509250929050565b6000826148f357506001610417565b8161490057506000610417565b816001811461491657600281146149205761493c565b6001915050610417565b60ff84111561493157614931613d3c565b50506001821b610417565b5060208310610133831016604e8410600b841016171561495f575081810a610417565b6149698383614883565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561499b5761499b613d3c565b029392505050565b60006104e683836148e4565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135286040830184614454565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610b666060830184614454565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251614a9c81600e8501602087016138ae565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ae257614ae2613d3c565b500290565b600082614b1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006104e660ff8416836148e456fea2646970667358221220ffd932993ed7e6c37165482a804f7fbf2a22c6683657224f4e2020666d237e8164736f6c634300080a0033"; type EmissionsERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/EmissionsERC20__factory.ts b/src/typechain/factories/EmissionsERC20__factory.ts index ddeb0fd..337ce2d 100644 --- a/src/typechain/factories/EmissionsERC20__factory.ts +++ b/src/typechain/factories/EmissionsERC20__factory.ts @@ -358,19 +358,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "fnPtrs", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [ { @@ -472,6 +459,19 @@ const _abi = [ stateMutability: "view", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -651,7 +651,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620049603803806200496083398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516148be620000a260003960006109f201526000610a1901526148be6000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610349578063ea34554014610381578063f2cd6c081461039457600080fd5b8063caa0eb3b146102f0578063dd62ed3e1461030357600080fd5b8063a457c2d7116100b2578063a457c2d7146102b7578063a9059cbb146102ca578063bb1757cf146102dd57600080fd5b806395d89b411461029a5780639a8d2ac8146102a257600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461022d57806388d686041461026357600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461376c565b61053c565b60405190151581526020015b60405180910390f35b6101a16105d5565b6040516101909190613824565b6101846101bc366004613859565b610667565b6035545b604051908152602001610190565b6101846101e1366004613885565b61067f565b60405160128152602001610190565b610184610203366004613859565b6106a5565b6065546101849074010000000000000000000000000000000000000000900460ff1681565b6101c561023b3660046138c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610271366004613985565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a16106f1565b6102b56102b0366004613a30565b610700565b005b6101846102c5366004613859565b610c12565b6101846102d8366004613859565b610cee565b6102b56102eb366004613a6b565b610cfc565b6101c56102fe366004613af0565b610e4f565b6101c5610311366004613b7c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c561038f3660046138c6565b610e88565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c08101919091526121a260e082018190526122966101008301526123226101208301526124436101408301526101608201526124ec6101808201526125f46101a08201526126c86101c08201526128c56101e08201526128d06102008201526128db6102208201526128e66102408201526128f161026082015261292561028082015261298b6102a08201526129f16102c0820152612a256102e0820152612a59610300820152612a8e610320820152612ae9610340820152612b3f610360820152612b68610380820152612bbf6103a0820152612bec6103c0820152612c436103e0820152612cae610400820152612d0b610420820152612d49610440820152612d82610460820152612db6610480820152612de86104a0820152612e1a6104c0820152612e4c6104e0820152612e80610500820152612ed2610520820152612f0b610540820152612fbd6105608201526130ea6105808201526131466105a08201526132006105c08083019190915281526101a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806105cf57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546105e490613bb5565b80601f016020809104026020016040519081016040528092919081815260200182805461061090613bb5565b801561065d5780601f106106325761010080835404028352916020019161065d565b820191906000526020600020905b81548152906001019060200180831161064057829003601f168201915b5050505050905090565b600033610675818585610f3d565b5060019392505050565b60003361068d8582856110f0565b6106988585856111c7565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061067590829086906106ec908790613c32565b610f3d565b6060603780546105e490613bb5565b600054610100900460ff16158080156107205750600054600160ff909116105b8061073a5750303b15801561073a575060005460ff166001145b6107cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561082957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6108cd6108396020840184613c4a565b6108439080613c88565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610885925050506020850185613c4a565b610893906020810190613c88565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061147a92505050565b6109046108dd6020840184613c4a565b6108ee9060608101906040016138c6565b6108fb6020850185613c4a565b6060013561151b565b6109446040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6109a56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161096557905050905081816000815181106109ce576109ce613cf4565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f0000000000000000000000000000000000000000000000000000000000000000610a456040890189613d23565b856040518463ffffffff1660e01b8152600401610a6493929190613f59565b6000604051808303816000875af1158015610a83573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610ac9919081019061400a565b9050610ad48161163b565b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610b2660208601866140c8565b6065805491151574010000000000000000000000000000000000000000027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff9092169190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e16690610ba09033908890614120565b60405180910390a15050508015610c0e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610cd6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016107c2565b610ce38286868403610f3d565b506001949350505050565b6000336106758185856111c7565b60655474010000000000000000000000000000000000000000900460ff16610d9d573373ffffffffffffffffffffffffffffffffffffffff841614610d9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d000000000000000000000000000000000060448201526064016107c2565b6000610da884610e88565b9050610db4848261151b565b610de27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008426116c6565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610e41903390879087908790614267565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610e7f908561176c565b95945050505050565b6065546000908190610eb890610eb39073ffffffffffffffffffffffffffffffffffffffff16611821565b61184f565b6040805160208082528183019092529192506000919060208201818036833750505073ffffffffffffffffffffffffffffffffffffffff851660208201819052909150610f07828460006119bb565b5060208301518351610f1b906001906142ab565b81518110610f2b57610f2b613cf4565b60200260200101519350505050919050565b73ffffffffffffffffffffffffffffffffffffffff8316610fdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8216611082576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146111c157818110156111b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107c2565b6111c18484848403610f3d565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156113c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016107c2565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260336020526040808220858503905591851681529081208054849290611407908490613c32565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161146d91815260200190565b60405180910390a36111c1565b600054610100900460ff16611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b610c0e8282611c94565b73ffffffffffffffffffffffffffffffffffffffff8216611598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107c2565b80603560008282546115aa9190613c32565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906115e4908490613c32565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6000806116668360405160200161165291906142c2565b604051602081830303815290604052611d52565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166116c0576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6000826008811115611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b6000855b858110156117605763ffffffff6020820290811b199890981685891b17979150600101611738565b50959695505050505050565b60008160088111156117da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b826117e8576000915061181a565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b60606105cf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611d7e565b6118816040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6118b36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156118e7576118e76138e3565b604051908082528060200260200182016040528015611910578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611947576119476138e3565b604051908082528060200260200182016040528015611970578160200160208202803683370190505b5090506020870151602002604001870160005b848110156119aa578160208202602001840152815160200182019150600181019050611983565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611c77576003890198508886015180601f1a975061ffff8160081c169850506006881015611bef5787611a3e57866020028401518252602082019150611c02565b6001881415611a5b57602087028301518252602082019150611c02565b6002881415611ae8578c518760200210611ad1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016107c2565b866020026020018d01518252602082019150611c02565b6003881415611b30576000611b1e6040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611c02565b6004881415611b4c57611b458d8d848a611e66565b9150611c02565b606087611b7a578c604051602001611b649190614323565b6040516020818303038152906040529050611bd9565b6001881415611b9357611b8c8d611fd3565b9050611bd9565b6002881415611baf576020808e0151604051611b6492016143f9565b6003881415611bd9578c516040805160208101929092520160405160208183030381529060405290505b805115611be957611be981612110565b50611c02565b87611bfe888463ffffffff8416565b9250505b60208c0151518c511115611c72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016107c2565b6119f9565b602083830304909b529b9a5050505050505050505050565b505050565b600054610100900460ff16611d2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107c2565b8151611d3e9060369060208501906136d3565b508051611c8f9060379060208401906136d3565b6060815182604051602001611d6892919061445e565b6040516020818303038152906040529050919050565b6060833b80611d9d57505060408051602081019091526000815261069e565b80841115611dbb57505060408051602081019091526000815261069e565b83831015611e06576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016107c2565b8383038482036000828210611e1b5782611e1d565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082611ea557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611ef0565b8260011415611ec957506fffffffffffffffffffffffffffffffff90506080611ef0565b8260021415611ee5575067ffffffffffffffff90506040611ef0565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611f1357611f136138e3565b604051908082528060200260200182016040528015611f3c578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f63578151815260209182019101611f4b565b505060608b015160808c015160209081029091010160005b610100811015611fc15760208502830182845b82811015611faa578051841c8a16825260209182019101611f8e565b505050611fb88e8e8b6119bb565b9b508501611f7b565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161201f91906143f9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529082905261205b92916020016144f5565b604051602081830303815290604052905060005b85604001515181101561210757818660400151828151811061209357612093613cf4565b60200260200101515160001b876040015183815181106120b5576120b5613cf4565b60200260200101516040516020016120cf9392919061451b565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161206f565b50949350505050565b61219f816040516024016121249190613824565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261327c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612265573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122899190614552565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123169190614552565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124359190614552565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612248565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156125ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d1919061456b565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123f4565b60008060008467ffffffffffffffff8111156126e6576126e66138e3565b60405190808252806020026020018201604052801561270f578160200160208202803683370190505b50905060008567ffffffffffffffff81111561272d5761272d6138e3565b604051908082528060200260200182016040528015612756578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156127ab578251815260209283019201612793565b5050602088028101602084015b818310156127d05782518152602092830192016127b8565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f49061282a9087908790600401614588565b600060405180830381865afa158015612847573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261288d91908101906145eb565b9050846020820160208a0281015b808210156128b657815183526020928301929091019061289b565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761329d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361228982612985858a61329d565b90613317565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612289826129eb858a61329d565b90613336565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612316828761334b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123168287613396565b6000602083028203805b83811015612a835780518015612a7a578252612a83565b50602001612a63565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a83578051612b605760008252612a83565b602001612b49565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c8157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612c9983826133f4565b9250612c53565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612ca057508051602090910190612d048382613430565b9250612cbe565b6020828102820380516000928201835b8582108015612d2a5750826000105b15612ca057508051602090910190612d42838261345f565b9250612d1b565b600060208302820380516000602083015b85811015612ca05780518301915082821015612d7557600080fd5b9091508190602001612d5a565b600060208302820380516000602083015b85811015612ca0578051915081612da957600080fd5b9181900491602001612d93565b6020828102820380516000928201835b85821015612ca057508051602090910190612de18184614791565b9250612dc6565b6020828102820380516000928201835b85821015612ca05750805182811115612e0f578092505b602082019150612df8565b6020828102820380516000928201835b85821015612ca05750805182811015612e41578092505b602082019150612e2a565b600060208302820380516000602083015b85811015612ca0578051915081612e7357600080fd5b9181900691602001612e5d565b60006020830282038051600080602084015b86811015612ec3578315612ebb578051925082840291508284830414612eb757600080fd5b8193505b602001612e92565b50505081526020019392505050565b600060208302820380516000602083015b85811015612ca05780518303915082821115612efe57600080fd5b9091508190602001612ee3565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123f4908690869060040161479d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613096908790879087906004016147cc565b602060405180830381865afa1580156130b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130d79190614552565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122898383613475565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613174576131746138e3565b60405190808252806020026020018201604052801561319d578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131d9578151816020018601526020820191506020810190506131b7565b505051905060006131ec838389896134d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561326d858585856116c6565b90955250949695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156132b257839150506105cf565b82601211156132de575060128290036132cc81600a614791565b6132d69085614801565b9150506105cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161330d81600a614791565b6132d6908561483e565b60008161332c670de0b6b3a764000085614801565b61069e919061483e565b6000670de0b6b3a764000061332c8385614801565b600081810b61335b5750816105cf565b60008260000b13156133835761337282600a614879565b61337c9084614801565b90506105cf565b60ff60008390031661330d81600a614791565b60008060128314156133ab57839150506105cf565b82601211156133c55750601282900361330d81600a614791565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016132cc81600a614791565b60008282018381106134065780613428565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261343f575060006105cf565b828202828482816134525761345261442f565b0414156134065780613428565b600081831161346f57600061069e565b50900390565b60008060015b600881116134cc57600061348f868361176c565b9050600061349d868461176c565b905060006134ab838361345f565b90506134bb856001860383613624565b9450506001909201915061347b9050565b509392505050565b835160009081908190819060015b600881116136165760009250828761351b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61351f565b5060005b60005b838110156135d45761354d8c828151811061353f5761353f613cf4565b60200260200101518461176c565b95508a861161359f578861356c5761356586836136ad565b9150613596565b600189141561357f5761356586836136c3565b60028914801561358d575084155b15613596578591505b600194506135cc565b896135cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506135d4565b600101613522565b50836135fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61360b866001840383613624565b9550506001016134e2565b509298975050505050505050565b6000826008811115613692576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016107c2565b505063ffffffff602090920291821b199290921691901b1790565b60008183106136bc578161069e565b5090919050565b6000818310156136bc578161069e565b8280546136df90613bb5565b90600052602060002090601f0160209004810192826137015760008555613747565b82601f1061371a57805160ff1916838001178555613747565b82800160010185558215613747579182015b8281111561374757825182559160200191906001019061372c565b50613753929150613757565b5090565b5b808211156137535760008155600101613758565b60006020828403121561377e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461069e57600080fd5b60005b838110156137c95781810151838201526020016137b1565b838111156111c15750506000910152565b600081518084526137f28160208601602086016137ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061069e60208301846137da565b73ffffffffffffffffffffffffffffffffffffffff8116811461219f57600080fd5b6000806040838503121561386c57600080fd5b823561387781613837565b946020939093013593505050565b60008060006060848603121561389a57600080fd5b83356138a581613837565b925060208401356138b581613837565b929592945050506040919091013590565b6000602082840312156138d857600080fd5b813561069e81613837565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613959576139596138e3565b604052919050565b600067ffffffffffffffff82111561397b5761397b6138e3565b5060051b60200190565b6000806040838503121561399857600080fd5b82356139a381613837565b915060208381013567ffffffffffffffff8111156139c057600080fd5b8401601f810186136139d157600080fd5b80356139e46139df82613961565b613912565b81815260059190911b82018301908381019088831115613a0357600080fd5b928401925b82841015613a2157833582529284019290840190613a08565b80955050505050509250929050565b600060208284031215613a4257600080fd5b813567ffffffffffffffff811115613a5957600080fd5b82016060818503121561069e57600080fd5b600080600060408486031215613a8057600080fd5b8335613a8b81613837565b9250602084013567ffffffffffffffff80821115613aa857600080fd5b818601915086601f830112613abc57600080fd5b813581811115613acb57600080fd5b876020828501011115613add57600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613b0657600080fd5b8435613b1181613837565b935060208501359250604085013567ffffffffffffffff80821115613b3557600080fd5b818701915087601f830112613b4957600080fd5b813581811115613b5857600080fd5b8860208260051b8501011115613b6d57600080fd5b95989497505060200194505050565b60008060408385031215613b8f57600080fd5b8235613b9a81613837565b91506020830135613baa81613837565b809150509250929050565b600181811c90821680613bc957607f821691505b602082108114156116c0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613c4557613c45613c03565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613c7e57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cbd57600080fd5b83018035915067ffffffffffffffff821115613cd857600080fd5b602001915036819003821315613ced57600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613c7e57600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613d8c57600080fd5b830160208101925035905067ffffffffffffffff811115613dac57600080fd5b8060051b3603831315613ced57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613e3c57600080fd5b830160208101925035905067ffffffffffffffff811115613e5c57600080fd5b803603831315613ced57600080fd5b600060408301613e7b8384613d57565b604086528281845260608701905060608260051b88010193508260005b83811015613ef3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0898703018352613ed18286613e07565b613edc888284613dbe565b975050506020928301929190910190600101613e98565b5050505050613f056020840184613d57565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811115613f3d57600080fd5b60051b8082602085013760009201602001918252509392505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152613f8982850187613e6b565b84810360408681019190915286518083528388019284019060005b81811015613ffa578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101613fa4565b50909a9950505050505050505050565b60006020828403121561401c57600080fd5b815167ffffffffffffffff8082111561403457600080fd5b818401915084601f83011261404857600080fd5b81518181111561405a5761405a6138e3565b61408b60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613912565b91508082528560208285010111156140a257600080fd5b6121078160208401602086016137ae565b803580151581146140c357600080fd5b919050565b6000602082840312156140da57600080fd5b61069e826140b3565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261411757600080fd5b90910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261414c846140b3565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261418857600080fd5b606084810152840161419a8180613e07565b608060a08701526141b061012087018284613dbe565b9150506141c06020830183613e07565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c08801526141f5838284613dbe565b92505050604082013561420781613837565b831660e0860152606082013561010086015261422660408701876140e3565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261425c8184613e6b565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526142a1606083018486613dbe565b9695505050505050565b6000828210156142bd576142bd613c03565b500390565b60008152600082516142db8160018501602087016137ae565b9190910160010192915050565b600081518084526020808501945080840160005b83811015614318578151875295820195908201906001016142fc565b509495945050505050565b600060208083528351818401528084015160a0604085015261434860c08501826142e8565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156143c157848783030184526143af8287516137da565b95880195938801939150600101614395565b5060608a01519650838982030160808a01526143dd81886142e8565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561442357815185529382019390820190600101614407565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516144e781600e8501602087016137ae565b91909101600e019392505050565b8281526000825161450d8160208501602087016137ae565b919091016020019392505050565b6000845161452d8184602089016137ae565b820184815283516145458160208085019088016137ae565b0160200195945050505050565b60006020828403121561456457600080fd5b5051919050565b60006020828403121561457d57600080fd5b815161069e81613837565b604080825283519082018190526000906020906060840190828701845b828110156145d757815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016145a5565b505050838103828501526142a181866142e8565b600060208083850312156145fe57600080fd5b825167ffffffffffffffff81111561461557600080fd5b8301601f8101851361462657600080fd5b80516146346139df82613961565b81815260059190911b8201830190838101908783111561465357600080fd5b928401925b8284101561425c57835182529284019290840190614658565b600181815b808511156146ca57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156146b0576146b0613c03565b808516156146bd57918102915b93841c9390800290614676565b509250929050565b6000826146e1575060016105cf565b816146ee575060006105cf565b8160018114614704576002811461470e5761472a565b60019150506105cf565b60ff84111561471f5761471f613c03565b50506001821b6105cf565b5060208310610133831016604e8410600b841016171561474d575081810a6105cf565b6147578383614671565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561478957614789613c03565b029392505050565b600061069e83836146d2565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061342860408301846142e8565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610e7f60608301846142e8565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561483957614839613c03565b500290565b600082614874577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061069e60ff8416836146d256fea26469706673582212207f0b2bf5cb9b12afbbcca4aba6e6c64ca893cbeaad2a198d58555ed1eb02dffd64736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b5060405162004cd738038062004cd7833981016040819052620000349162000118565b306080526001600160a01b03811660a0526200004f62000056565b506200014a565b600054610100900460ff1615620000c35760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000116576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6000602082840312156200012b57600080fd5b81516001600160a01b03811681146200014357600080fd5b9392505050565b60805160a051614b6762000170600039600061136d0152600061139a0152614b676000f3fe608060405234801561001057600080fd5b506004361061016c5760003560e01c806395d89b41116100cd578063caa0eb3b11610081578063e0419ae311610066578063e0419ae314610331578063ea34554014610369578063ea7cb3701461037c57600080fd5b8063caa0eb3b146102d8578063dd62ed3e146102eb57600080fd5b8063a457c2d7116100b2578063a457c2d71461029f578063a9059cbb146102b2578063bb1757cf146102c557600080fd5b806395d89b41146102825780639a8d2ac81461028a57600080fd5b8063313ce5671161012457806367676b111161010957806367676b111461020857806370a082311461021557806388d686041461024b57600080fd5b8063313ce567146101e657806339509351146101f557600080fd5b8063095ea7b311610155578063095ea7b3146101ae57806318160ddd146101c157806323b872dd146101d357600080fd5b806301ffc9a71461017157806306fdde0314610199575b600080fd5b61018461017f36600461386c565b610384565b60405190151581526020015b60405180910390f35b6101a161041d565b6040516101909190613924565b6101846101bc366004613959565b6104af565b6035545b604051908152602001610190565b6101846101e1366004613985565b6104c7565b60405160128152602001610190565b610184610203366004613959565b6104ed565b6065546101849060ff1681565b6101c56102233660046139c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b6101c5610259366004613b19565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526066602052604090205490565b6101a1610539565b61029d610298366004613b69565b610548565b005b6101846102ad366004613959565b610911565b6101846102c0366004613959565b6109ed565b61029d6102d3366004613ba4565b6109fb565b6101c56102e6366004613c29565b610b36565b6101c56102f9366004613cb5565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b604080518082018252600080825260209182018190528251808401845281815282018181528351918252519181019190915201610190565b6101c56103773660046139c6565b610b6f565b6101a1610c17565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061041757507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461042c90613cee565b80601f016020809104026020016040519081016040528092919081815260200182805461045890613cee565b80156104a55780601f1061047a576101008083540402835291602001916104a5565b820191906000526020600020905b81548152906001019060200180831161048857829003601f168201915b5050505050905090565b6000336104bd818585610c2f565b5060019392505050565b6000336104d5858285610de2565b6104e0858585610eb9565b60019150505b9392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104bd9082908690610534908790613d6b565b610c2f565b60606037805461042c90613cee565b600054610100900460ff16158080156105685750600054600160ff909116105b806105825750303b158015610582575060005460ff166001145b610613576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561067157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6107156106816020840184613d83565b61068b9080613dc1565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106cd925050506020850185613d83565b6106db906020810190613dc1565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116c92505050565b61074c6107256020840184613d83565b6107369060608101906040016139c6565b6107436020850185613d83565b6060013561120d565b6107856040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6107df6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107a6579050509050818160008151811061080857610808613e2d565b60209081029190910101526108326108236040860186613e5c565b61082c90613ed6565b8261132d565b61083f6020850185614006565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790556040517f39167a2b716c846f73cd233f111d8d7376ca92d22fe661e2be793179a430e166906108a09033908790614260565b60405180910390a15050801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f000000000000000000000000000000000000000000000000000000606482015260840161060a565b6109e28286868403610c2f565b506001949350505050565b6000336104bd818585610eb9565b60655460ff16610a84573373ffffffffffffffffffffffffffffffffffffffff841614610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f44454c4547415445445f434c41494d0000000000000000000000000000000000604482015260640161060a565b6000610a8f84610b6f565b9050610a9b848261120d565b610ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600060084261147b565b73ffffffffffffffffffffffffffffffffffffffff85166000908152606660205260409081902091909155517fbf9d4a3962ab35e7ce8f88984952a416a31b61587fa229030e059141a2646f4390610b289033908790879087906143a7565b60405180910390a150505050565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260666020526040812054610b669085611521565b95945050505050565b600080610b7a6115d6565b60408051600180825281830190925291925060009190602080830190803683370190505090508373ffffffffffffffffffffffffffffffffffffffff1681600081518110610bca57610bca613e2d565b602002602001018181525050610be281836000611639565b5060208201518251610bf6906001906143eb565b81518110610c0657610c06613e2d565b602002602001015192505050919050565b6060610c2a610c258261190a565b611b2b565b905090565b73ffffffffffffffffffffffffffffffffffffffff8316610cd1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610d74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610eb35781811015610ea6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161060a565b610eb38484848403610c2f565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610f5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8216610fff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260336020526040902054818110156110b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161060a565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603360205260408082208585039055918516815290812080548492906110f9908490613d6b565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161115f91815260200190565b60405180910390a3610eb3565b600054610100900460ff16611203576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b61090d8282611b6f565b73ffffffffffffffffffffffffffffffffffffffff821661128a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161060a565b806035600082825461129c9190613d6b565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260336020526040812080548392906112d6908490613d6b565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a1906113c6907f0000000000000000000000000000000000000000000000000000000000000000908790879060040161448f565b6000604051808303816000875af11580156113e5573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261142b9190810190614577565b905061143681611c2d565b600060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60008260088111156114e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b6000855b858110156115155763ffffffff6020820290811b199890981685891b179791506001016114ed565b50959695505050505050565b600081600881111561158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b8261159d57600091506115cf565b63ffffffff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85010285901c1691505b5092915050565b6116086040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600054610c2a906116349062010000900473ffffffffffffffffffffffffffffffffffffffff16611cb8565b611ce6565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156118f2576003890198508886015180601f1a975061ffff8160081c16985050600688101561186a57876116bc5786602002840151825260208201915061187d565b60018814156116d95760208702830151825260208201915061187d565b6002881415611763578c51871061174c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161060a565b866020026020018d0151825260208201915061187d565b60038814156117ab5760006117996040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061187d565b60048814156117c7576117c08d8d848a611e52565b915061187d565b6060876117f5578c6040516020016117df91906145e5565b6040516020818303038152906040529050611854565b600188141561180e576118078d611fbf565b9050611854565b600288141561182a576020808e01516040516117df920161467c565b6003881415611854578c516040805160208101929092520160405160208183030381529060405290505b80511561186457611864816120fc565b5061187d565b87611879888463ffffffff8416565b9250505b60208c0151518c5111156118ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161060a565b611677565b602083830304909b529b9a5050505050505050505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261218e60e0840181905261228261010085015261230e61012085015261242f6101408501526101608401526124d86101808401526125e06101a08401526126b46101c08401526128b16101e08401526128bc6102008401526128c76102208401526128d26102408401526128dd6102608401526129116102808401526129776102a08401526129dd6102c0840152612a116102e0840152612a45610300840152612a7a610320840152612ad5610340840152612b2b610360840152612b54610380840152612bab6103a0840152612bd86103c0840152612c2f6103e0840152612c9a610400840152612cf7610420840152612d35610440840152612d6e610460840152612da2610480840152612dd46104a0840152612e066104c0840152612e386104e0840152612e6c610500840152612ebe610520840152612ef7610540840152612fa96105608401526130d66105808401526131326105a08401526131ec6105c0840152835190850201909252919082815b83811015611b2257858181518110611ae157611ae1613e2d565b6020026020010151856028600601830181518110611b0157611b01613e2d565b67ffffffffffffffff90921660209283029190910190910152600101611ac7565b50505050919050565b60606020820182516020028101600284015b81831015611b5a5782518151178152602090920191600201611b3d565b5050825160020283525090919050565b505050565b600054610100900460ff16611c06576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161060a565b8151611c199060369060208501906137d3565b508051611b6a9060379060208401906137d3565b600080611c5883604051602001611c4491906146e1565b604051602081830303815290604052613268565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611cb2576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60606104178260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613294565b611d186040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b611d4a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115611d7e57611d7e6139e3565b604051908082528060200260200182016040528015611da7578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611dde57611dde6139e3565b604051908082528060200260200182016040528015611e07578160200160208202803683370190505b5090506020870151602002604001870160005b84811015611e41578160208202602001840152815160200182019150600181019050611e1a565b505060408501525091949350505050565b600060078216600383811c16828082611e9157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611edc565b8260011415611eb557506fffffffffffffffffffffffffffffffff90506080611edc565b8260021415611ed1575067ffffffffffffffff90506040611edc565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611eff57611eff6139e3565b604051908082528060200260200182016040528015611f28578160200160208202803683370190505b50905060208082019083028a03815b8b821015611f4f578151815260209182019101611f37565b505060608b015160808c015160209081029091010160005b610100811015611fad5760208502830182845b82811015611f96578051841c8a16825260209182019101611f7a565b505050611fa48e8e8b611639565b9b508501611f67565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161200b919061467c565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526120479291602001614707565b604051602081830303815290604052905060005b8560400151518110156120f357818660400151828151811061207f5761207f613e2d565b60200260200101515160001b876040015183815181106120a1576120a1613e2d565b60200260200101516040516020016120bb9392919061472d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161205b565b50949350505050565b61218b816040516024016121109190613924565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261337c565b50565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612251573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122759190614764565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123029190614764565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa1580156123fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124219190614764565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612234565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612599573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bd919061477d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e906044016123e0565b60008060008467ffffffffffffffff8111156126d2576126d26139e3565b6040519080825280602002602001820160405280156126fb578160200160208202803683370190505b50905060008567ffffffffffffffff811115612719576127196139e3565b604051908082528060200260200182016040528015612742578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561279757825181526020928301920161277f565b5050602088028101602084015b818310156127bc5782518152602092830192016127a4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612816908790879060040161479a565b600060405180830381865afa158015612833573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261287991908101906147fd565b9050846020820160208a0281015b808210156128a2578151835260209283019290910190612887565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761339d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361227582612971858a61339d565b90613417565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612275826129d7858a61339d565b90613436565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612302828761344b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826123028287613496565b6000602083028203805b83811015612a6f5780518015612a66578252612a6f565b50602001612a4f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612a6f578051612b4c5760008252612a6f565b602001612b35565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612c6d57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612c8583826134f4565b9250612c3f565b505081526020019392505050565b6020828102820380516000928201835b8582108015612cd857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612c8c57508051602090910190612cf08382613530565b9250612caa565b6020828102820380516000928201835b8582108015612d165750826000105b15612c8c57508051602090910190612d2e838261355f565b9250612d07565b600060208302820380516000602083015b85811015612c8c5780518301915082821015612d6157600080fd5b9091508190602001612d46565b600060208302820380516000602083015b85811015612c8c578051915081612d9557600080fd5b9181900491602001612d7f565b6020828102820380516000928201835b85821015612c8c57508051602090910190612dcd81846149a3565b9250612db2565b6020828102820380516000928201835b85821015612c8c5750805182811115612dfb578092505b602082019150612de4565b6020828102820380516000928201835b85821015612c8c5750805182811015612e2d578092505b602082019150612e16565b600060208302820380516000602083015b85811015612c8c578051915081612e5f57600080fd5b9181900691602001612e49565b60006020830282038051600080602084015b86811015612eaf578315612ea7578051925082840291508284830414612ea357600080fd5b8193505b602001612e7e565b50505081526020019392505050565b600060208302820380516000602083015b85811015612c8c5780518303915082821115612eea57600080fd5b9091508190602001612ecf565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d68604906123e090869086906004016149af565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90613082908790879087906004016149de565b602060405180830381865afa15801561309f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130c39190614764565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836122758383613575565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115613160576131606139e3565b604051908082528060200260200182016040528015613189578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b828210156131c5578151816020018601526020820191506020810190506131a3565b505051905060006131d8838389896135d4565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856132598585858561147b565b90955250949695505050505050565b606081518260405160200161327e929190614a13565b6040516020818303038152906040529050919050565b6060833b806132b35750506040805160208101909152600081526104e6565b808411156132d15750506040805160208101909152600081526104e6565b8383101561331c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161060a565b83830384820360008282106133315782613333565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156133b25783915050610417565b82601211156133de575060128290036133cc81600a6149a3565b6133d69085614aaa565b915050610417565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161340d81600a6149a3565b6133d69085614ae7565b60008161342c670de0b6b3a764000085614aaa565b6104e69190614ae7565b6000670de0b6b3a764000061342c8385614aaa565b600081810b61345b575081610417565b60008260000b13156134835761347282600a614b22565b61347c9084614aaa565b9050610417565b60ff60008390031661340d81600a6149a3565b60008060128314156134ab5783915050610417565b82601211156134c55750601282900361340d81600a6149a3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee82016133cc81600a6149a3565b60008282018381106135065780613528565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261353f57506000610417565b82820282848281613552576135526146b2565b0414156135065780613528565b600081831161356f5760006104e6565b50900390565b60008060015b600881116135cc57600061358f8683611521565b9050600061359d8684611521565b905060006135ab838361355f565b90506135bb856001860383613724565b9450506001909201915061357b9050565b509392505050565b835160009081908190819060015b600881116137165760009250828761361b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61361f565b5060005b60005b838110156136d45761364d8c828151811061363f5761363f613e2d565b602002602001015184611521565b95508a861161369f578861366c5761366586836137ad565b9150613696565b600189141561367f5761366586836137c3565b60028914801561368d575084155b15613696578591505b600194506136cc565b896136cc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506136d4565b600101613622565b50836136fd57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61370b866001840383613724565b9550506001016135e2565b509298975050505050505050565b6000826008811115613792576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161060a565b505063ffffffff602090920291821b199290921691901b1790565b60008183106137bc57816104e6565b5090919050565b6000818310156137bc57816104e6565b8280546137df90613cee565b90600052602060002090601f0160209004810192826138015760008555613847565b82601f1061381a57805160ff1916838001178555613847565b82800160010185558215613847579182015b8281111561384757825182559160200191906001019061382c565b50613853929150613857565b5090565b5b808211156138535760008155600101613858565b60006020828403121561387e57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146104e657600080fd5b60005b838110156138c95781810151838201526020016138b1565b83811115610eb35750506000910152565b600081518084526138f28160208601602086016138ae565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006104e660208301846138da565b73ffffffffffffffffffffffffffffffffffffffff8116811461218b57600080fd5b6000806040838503121561396c57600080fd5b823561397781613937565b946020939093013593505050565b60008060006060848603121561399a57600080fd5b83356139a581613937565b925060208401356139b581613937565b929592945050506040919091013590565b6000602082840312156139d857600080fd5b81356104e681613937565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613a3557613a356139e3565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613a8257613a826139e3565b604052919050565b600067ffffffffffffffff821115613aa457613aa46139e3565b5060051b60200190565b600082601f830112613abf57600080fd5b81356020613ad4613acf83613a8a565b613a3b565b82815260059290921b84018101918181019086841115613af357600080fd5b8286015b84811015613b0e5780358352918301918301613af7565b509695505050505050565b60008060408385031215613b2c57600080fd5b8235613b3781613937565b9150602083013567ffffffffffffffff811115613b5357600080fd5b613b5f85828601613aae565b9150509250929050565b600060208284031215613b7b57600080fd5b813567ffffffffffffffff811115613b9257600080fd5b8201606081850312156104e657600080fd5b600080600060408486031215613bb957600080fd5b8335613bc481613937565b9250602084013567ffffffffffffffff80821115613be157600080fd5b818601915086601f830112613bf557600080fd5b813581811115613c0457600080fd5b876020828501011115613c1657600080fd5b6020830194508093505050509250925092565b60008060008060608587031215613c3f57600080fd5b8435613c4a81613937565b935060208501359250604085013567ffffffffffffffff80821115613c6e57600080fd5b818701915087601f830112613c8257600080fd5b813581811115613c9157600080fd5b8860208260051b8501011115613ca657600080fd5b95989497505060200194505050565b60008060408385031215613cc857600080fd5b8235613cd381613937565b91506020830135613ce381613937565b809150509250929050565b600181811c90821680613d0257607f821691505b60208210811415611cb2577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115613d7e57613d7e613d3c565b500190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112613db757600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613df657600080fd5b83018035915067ffffffffffffffff821115613e1157600080fd5b602001915036819003821315613e2657600080fd5b9250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613db757600080fd5b600067ffffffffffffffff821115613eaa57613eaa6139e3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006040808336031215613ee957600080fd5b613ef1613a12565b833567ffffffffffffffff80821115613f0957600080fd5b9085019036601f830112613f1c57600080fd5b81356020613f2c613acf83613a8a565b82815260059290921b84018101918181019036841115613f4b57600080fd5b8286015b84811015613fbf57803586811115613f675760008081fd5b870136603f820112613f795760008081fd5b84810135613f89613acf82613e90565b818152368c838501011115613f9e5760008081fd5b818c8401888301376000918101870191909152845250918301918301613f4f565b5086525087810135955082861115613fd657600080fd5b613fe236878a01613aae565b90850152509195945050505050565b8035801515811461400157600080fd5b919050565b60006020828403121561401857600080fd5b6104e682613ff1565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261405657600080fd5b830160208101925035905067ffffffffffffffff81111561407657600080fd5b803603831315613e2657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261410257600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261414057600080fd5b830160208101925035905067ffffffffffffffff81111561416057600080fd5b8060051b3603831315613e2657600080fd5b600060408301614182838461410b565b604086528281845260608701905060608260051b88010193508260005b838110156141fa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08987030183526141d88286614021565b6141e3888284614085565b97505050602092830192919091019060010161419f565b505050505061420c602084018461410b565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561424457600080fd5b60051b8082602085013760009201602001918252509392505050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015261428c84613ff1565b1515604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818536030181126142c857600080fd5b60608481015284016142da8180614021565b608060a08701526142f061012087018284614085565b9150506143006020830183614021565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff608784030160c0880152614335838284614085565b92505050604082013561434781613937565b831660e0860152606082013561010086015261436660408701876140ce565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc085820301608086015261439c8184614172565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250606060408301526143e1606083018486614085565b9695505050505050565b6000828210156143fd576143fd613d3c565b500390565b6000815180845260208085019450848260051b860182860160005b858110156144475783830389526144358383516138da565b9885019892509084019060010161441d565b5090979650505050505050565b600081518084526020808501945080840160005b8381101561448457815187529582019590820190600101614468565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a08651604080858801526144ca83880183614402565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a01526145058483614454565b898103848b01528a51808252878c019550908701925060005b818110156145655785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c09093019260010161451e565b50919c9b505050505050505050505050565b60006020828403121561458957600080fd5b815167ffffffffffffffff8111156145a057600080fd5b8201601f810184136145b157600080fd5b80516145bf613acf82613e90565b8181528560208385010111156145d457600080fd5b610b668260208301602086016138ae565b60208152815160208201526000602083015160a0604084015261460b60c0840182614454565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526146478383614402565b92506060860151915080858403016080860152506146658282614454565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156146a65781518552938201939082019060010161468a565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008152600082516146fa8160018501602087016138ae565b9190910160010192915050565b8281526000825161471f8160208501602087016138ae565b919091016020019392505050565b6000845161473f8184602089016138ae565b820184815283516147578160208085019088016138ae565b0160200195945050505050565b60006020828403121561477657600080fd5b5051919050565b60006020828403121561478f57600080fd5b81516104e681613937565b604080825283519082018190526000906020906060840190828701845b828110156147e957815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016147b7565b505050838103828501526143e18186614454565b6000602080838503121561481057600080fd5b825167ffffffffffffffff81111561482757600080fd5b8301601f8101851361483857600080fd5b8051614846613acf82613a8a565b81815260059190911b8201830190838101908783111561486557600080fd5b928401925b8284101561439c5783518252928401929084019061486a565b600181815b808511156148dc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c2576148c2613d3c565b808516156148cf57918102915b93841c9390800290614888565b509250929050565b6000826148f357506001610417565b8161490057506000610417565b816001811461491657600281146149205761493c565b6001915050610417565b60ff84111561493157614931613d3c565b50506001821b610417565b5060208310610133831016604e8410600b841016171561495f575081810a610417565b6149698383614883565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561499b5761499b613d3c565b029392505050565b60006104e683836148e4565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135286040830184614454565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000610b666060830184614454565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251614a9c81600e8501602087016138ae565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ae257614ae2613d3c565b500290565b600082614b1d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006104e660ff8416836148e456fea2646970667358221220ffd932993ed7e6c37165482a804f7fbf2a22c6683657224f4e2020666d237e8164736f6c634300080a0033"; type EmissionsERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/FactoryChildTest__factory.ts b/src/typechain/factories/FactoryChildTest__factory.ts new file mode 100644 index 0000000..1d8c583 --- /dev/null +++ b/src/typechain/factories/FactoryChildTest__factory.ts @@ -0,0 +1,124 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + FactoryChildTest, + FactoryChildTestInterface, +} from "../FactoryChildTest"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + ], + name: "Construct", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Initialize", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint8", + name: "version", + type: "uint8", + }, + ], + name: "Initialized", + type: "event", + }, + { + inputs: [ + { + internalType: "uint256", + name: "value_", + type: "uint256", + }, + ], + name: "initialize", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b506040513381527f9b1dd48b9d6c55ffc4373833c93cb181b33bfc68d1d5cd3e736e0eca3f0e1afc9060200160405180910390a161025c806100536000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063fe4b84df14610030575b600080fd5b61004361003e36600461020d565b610045565b005b600054610100900460ff16158080156100655750600054600160ff909116105b8061007f5750303b15801561007f575060005460ff166001145b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561016d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60408051338152602081018490527ffb9d66c34fa43208534a846ef789547e25046760500fdf53af4204cbe4e16c89910160405180910390a1801561020957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006020828403121561021f57600080fd5b503591905056fea264697066735822122046826cbeaf78d4e41a0ca91c4e88fd349bdb786162c74ba58cce31544d4f824064736f6c634300080a0033"; + +type FactoryChildTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FactoryChildTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class FactoryChildTest__factory extends ContractFactory { + constructor(...args: FactoryChildTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): FactoryChildTest { + return super.attach(address) as FactoryChildTest; + } + connect(signer: Signer): FactoryChildTest__factory { + return super.connect(signer) as FactoryChildTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FactoryChildTestInterface { + return new utils.Interface(_abi) as FactoryChildTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): FactoryChildTest { + return new Contract(address, _abi, signerOrProvider) as FactoryChildTest; + } +} diff --git a/src/typechain/factories/FactoryCurator__factory.ts b/src/typechain/factories/FactoryCurator__factory.ts new file mode 100644 index 0000000..ba84c78 --- /dev/null +++ b/src/typechain/factories/FactoryCurator__factory.ts @@ -0,0 +1,287 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + FactoryCurator, + FactoryCuratorInterface, +} from "../FactoryCurator"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "factory", + type: "address", + }, + { + internalType: "address", + name: "curator", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + internalType: "struct CurationFeeConfig", + name: "feeConfig", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "tierContract", + type: "address", + }, + { + internalType: "uint256", + name: "minimumTier", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "context", + type: "uint256[]", + }, + ], + internalType: "struct CurationTierConfig", + name: "tierConfig", + type: "tuple", + }, + ], + indexed: false, + internalType: "struct CurationConfig", + name: "config", + type: "tuple", + }, + ], + name: "RegisterCuration", + type: "event", + }, + { + inputs: [ + { + internalType: "uint256", + name: "id_", + type: "uint256", + }, + { + components: [ + { + internalType: "address", + name: "factory", + type: "address", + }, + { + internalType: "address", + name: "curator", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + internalType: "struct CurationFeeConfig", + name: "feeConfig", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "tierContract", + type: "address", + }, + { + internalType: "uint256", + name: "minimumTier", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "context", + type: "uint256[]", + }, + ], + internalType: "struct CurationTierConfig", + name: "tierConfig", + type: "tuple", + }, + ], + internalType: "struct CurationConfig", + name: "config_", + type: "tuple", + }, + { + internalType: "bytes", + name: "createChild_", + type: "bytes", + }, + ], + name: "createChild", + outputs: [ + { + internalType: "address", + name: "child_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "factory", + type: "address", + }, + { + internalType: "address", + name: "curator", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + internalType: "struct CurationFeeConfig", + name: "feeConfig", + type: "tuple", + }, + { + components: [ + { + internalType: "address", + name: "tierContract", + type: "address", + }, + { + internalType: "uint256", + name: "minimumTier", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "context", + type: "uint256[]", + }, + ], + internalType: "struct CurationTierConfig", + name: "tierConfig", + type: "tuple", + }, + ], + internalType: "struct CurationConfig", + name: "config_", + type: "tuple", + }, + ], + name: "registerConfig", + outputs: [ + { + internalType: "uint256", + name: "id_", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50610d02806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806315109c6c1461003b578063aec2e5c214610078575b600080fd5b61004e6100493660046107c4565b610099565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61008b61008636600461085f565b610360565b60405190815260200161006f565b6000836040516020016100ac9190610a50565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181528151602092830120600088815260019093529120541461015b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e4f545f494e5f5245474953545259000000000000000000000000000000000060448201526064015b60405180910390fd5b426101696080860186610a63565b610177906020810190610aa1565b73ffffffffffffffffffffffffffffffffffffffff1663caa0eb3b336101a06080890189610a63565b602001356101b160808a018a610a63565b6101bf906040810190610abe565b6040518563ffffffff1660e01b81526004016101de9493929190610b2d565b602060405180830381865afa1580156101fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021f9190610b63565b1115610287576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4d494e494d554d5f5449455200000000000000000000000000000000000000006044820152606401610152565b6102cd3361029b6040870160208801610aa1565b606087018035906102af9060408a01610aa1565b73ffffffffffffffffffffffffffffffffffffffff169291906103fe565b6102da6020850185610aa1565b73ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040518363ffffffff1660e01b8152600401610314929190610b7c565b6020604051808303816000875af1158015610333573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103579190610bc9565b95945050505050565b600080546001019081905560405161037c908390602001610a50565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828252805160209182012060008581526001909252919020557fb6ebb13e9e90787058e30a41317554cb7d3c6e7ab9d2c14b07692398b208a797906103f190339084908690610be6565b60405180910390a1919050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610493908590610499565b50505050565b60006104fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105aa9092919063ffffffff16565b8051909150156105a557808060200190518101906105199190610c1b565b6105a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610152565b505050565b60606105b984846000856105c3565b90505b9392505050565b606082471015610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610152565b73ffffffffffffffffffffffffffffffffffffffff85163b6106d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610152565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516106fc9190610c69565b60006040518083038185875af1925050503d8060008114610739576040519150601f19603f3d011682016040523d82523d6000602084013e61073e565b606091505b509150915061074e828286610759565b979650505050505050565b606083156107685750816105bc565b8251156107785782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101529190610c7b565b600060a082840312156107be57600080fd5b50919050565b600080600080606085870312156107da57600080fd5b84359350602085013567ffffffffffffffff808211156107f957600080fd5b610805888389016107ac565b9450604087013591508082111561081b57600080fd5b818701915087601f83011261082f57600080fd5b81358181111561083e57600080fd5b88602082850101111561085057600080fd5b95989497505060200194505050565b60006020828403121561087157600080fd5b813567ffffffffffffffff81111561088857600080fd5b610894848285016107ac565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff811681146108be57600080fd5b50565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156108f357600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000813561091d8161089c565b73ffffffffffffffffffffffffffffffffffffffff90811684526020830135906109468261089c565b908116602085015260408301359061095d8261089c565b808216604086015260608401356060860152608084013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18436030182126109a657600080fd5b60a060808601529083019081356109bc8161089c565b1660a0850152602081013560c08501526040810135368290037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1018112610a0257600080fd5b8101803567ffffffffffffffff811115610a1b57600080fd5b8060051b3603831315610a2d57600080fd5b606060e0870152610a46610100870182602085016108c1565b9695505050505050565b6020815260006105bc6020830184610910565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610a9757600080fd5b9190910192915050565b600060208284031215610ab357600080fd5b81356105bc8161089c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610af357600080fd5b83018035915067ffffffffffffffff821115610b0e57600080fd5b6020019150600581901b3603821315610b2657600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff85168152836020820152606060408201526000610a466060830184866108c1565b600060208284031215610b7557600080fd5b5051919050565b60208152816020820152818360408301376000818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208284031215610bdb57600080fd5b81516105bc8161089c565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006103576060830184610910565b600060208284031215610c2d57600080fd5b815180151581146105bc57600080fd5b60005b83811015610c58578181015183820152602001610c40565b838111156104935750506000910152565b60008251610a97818460208701610c3d565b6020815260008251806020840152610c9a816040850160208701610c3d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212207dec0f620df0674d7621c86a7581a7f198876a3b0bd615eedf7c1eb2e14ba48064736f6c634300080a0033"; + +type FactoryCuratorConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FactoryCuratorConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class FactoryCurator__factory extends ContractFactory { + constructor(...args: FactoryCuratorConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): FactoryCurator { + return super.attach(address) as FactoryCurator; + } + connect(signer: Signer): FactoryCurator__factory { + return super.connect(signer) as FactoryCurator__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FactoryCuratorInterface { + return new utils.Interface(_abi) as FactoryCuratorInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): FactoryCurator { + return new Contract(address, _abi, signerOrProvider) as FactoryCurator; + } +} diff --git a/src/typechain/factories/FactoryTest__factory.ts b/src/typechain/factories/FactoryTest__factory.ts new file mode 100644 index 0000000..4a70664 --- /dev/null +++ b/src/typechain/factories/FactoryTest__factory.ts @@ -0,0 +1,158 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { FactoryTest, FactoryTestInterface } from "../FactoryTest"; + +const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "implementation", + type: "address", + }, + ], + name: "Implementation", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "sender", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "child", + type: "address", + }, + ], + name: "NewChild", + type: "event", + }, + { + inputs: [ + { + internalType: "bytes", + name: "data_", + type: "bytes", + }, + ], + name: "createChild", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "value_", + type: "uint256", + }, + ], + name: "createChildTyped", + outputs: [ + { + internalType: "contract FactoryChildTest", + name: "", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "maybeChild_", + type: "address", + }, + ], + name: "isChild", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, +]; + +const _bytecode = + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6102af806106cf83390190565b6080516106116100be60003960006102dd01526106116000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a49146100465780637327791214610083578063fc91a89714610096575b600080fd5b61005961005436600461049d565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005961009136600461056c565b61028b565b6100cf6100a4366004610585565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610163836102bd565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102b7826040516020016102a391815260200190565b6040516020818303038152906040526100df565b92915050565b600080828060200190518101906102d491906105c2565b905060006103017f000000000000000000000000000000000000000000000000000000000000000061038c565b6040517ffe4b84df0000000000000000000000000000000000000000000000000000000081526004810184905290915073ffffffffffffffffffffffffffffffffffffffff82169063fe4b84df90602401600060405180830381600087803b15801561036c57600080fd5b505af1158015610380573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610469576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156104af57600080fd5b813567ffffffffffffffff808211156104c757600080fd5b818401915084601f8301126104db57600080fd5b8135818111156104ed576104ed61046e565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105335761053361046e565b8160405282815287602084870101111561054c57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561057e57600080fd5b5035919050565b60006020828403121561059757600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146105bb57600080fd5b9392505050565b6000602082840312156105d457600080fd5b505191905056fea264697066735822122085ece7178a4af7d9f730e3788246b9254361230fc3da4f992c529ebf1219787264736f6c634300080a0033608060405234801561001057600080fd5b506040513381527f9b1dd48b9d6c55ffc4373833c93cb181b33bfc68d1d5cd3e736e0eca3f0e1afc9060200160405180910390a161025c806100536000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063fe4b84df14610030575b600080fd5b61004361003e36600461020d565b610045565b005b600054610100900460ff16158080156100655750600054600160ff909116105b8061007f5750303b15801561007f575060005460ff166001145b61010f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840160405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561016d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60408051338152602081018490527ffb9d66c34fa43208534a846ef789547e25046760500fdf53af4204cbe4e16c89910160405180910390a1801561020957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60006020828403121561021f57600080fd5b503591905056fea264697066735822122046826cbeaf78d4e41a0ca91c4e88fd349bdb786162c74ba58cce31544d4f824064736f6c634300080a0033"; + +type FactoryTestConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: FactoryTestConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class FactoryTest__factory extends ContractFactory { + constructor(...args: FactoryTestConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): FactoryTest { + return super.attach(address) as FactoryTest; + } + connect(signer: Signer): FactoryTest__factory { + return super.connect(signer) as FactoryTest__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): FactoryTestInterface { + return new utils.Interface(_abi) as FactoryTestInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): FactoryTest { + return new Contract(address, _abi, signerOrProvider) as FactoryTest; + } +} diff --git a/src/typechain/factories/FnPtrsTest__factory.ts b/src/typechain/factories/FnPtrsTest__factory.ts deleted file mode 100644 index 9a87e54..0000000 --- a/src/typechain/factories/FnPtrsTest__factory.ts +++ /dev/null @@ -1,142 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { FnPtrsTest, FnPtrsTestInterface } from "../FnPtrsTest"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "vmStateBuilder_", - type: "address", - }, - ], - stateMutability: "nonpayable", - type: "constructor", - }, - { - inputs: [], - name: "WriteError", - type: "error", - }, - { - inputs: [], - name: "fnPtrs", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, - { - inputs: [ - { - components: [ - { - internalType: "bytes[]", - name: "sources", - type: "bytes[]", - }, - { - internalType: "uint256[]", - name: "constants", - type: "uint256[]", - }, - ], - internalType: "struct StateConfig", - name: "stateConfig_", - type: "tuple", - }, - ], - name: "initialize", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [], - name: "storageOpcodesRange", - outputs: [ - { - components: [ - { - internalType: "uint256", - name: "pointer", - type: "uint256", - }, - { - internalType: "uint256", - name: "length", - type: "uint256", - }, - ], - internalType: "struct StorageOpcodesRange", - name: "", - type: "tuple", - }, - ], - stateMutability: "pure", - type: "function", - }, -]; - -const _bytecode = - "0x60c060405234801561001057600080fd5b506040516109c73803806109c783398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a05161092e6100996000396000610180015260006101bc015261092e6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b61005961005436600461036d565b6100a7565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b606060405161008f91906103df565b6100e76040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526001602083018190526040805182815280820190915290816020015b6101486040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161010857905050905081816000815181106101715761017161045f565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b81526004016101fb9392919061060d565b6000604051808303816000875af115801561021a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102609190810190610770565b905061026b816102b6565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b6000806102e1836040516020016102cd919061083b565b604051602081830303815290604052610341565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661033b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060815182604051602001610357929190610861565b6040516020818303038152906040529050919050565b60006020828403121561037f57600080fd5b813567ffffffffffffffff81111561039657600080fd5b8201604081850312156103a857600080fd5b9392505050565b60005b838110156103ca5781810151838201526020016103b2565b838111156103d9576000848401525b50505050565b60208152600082518060208401526103fe8160408501602087016103af565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126104c357600080fd5b830160208101925035905067ffffffffffffffff8111156104e357600080fd5b8060051b36038313156104f557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561057757600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b8381101561060257815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e090960195908201906001016105a8565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830161063e868761048e565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015610708577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18636030181126106bf57600080fd5b8501803567ffffffffffffffff8111156106d857600080fd5b8036038713156106e757600080fd5b6106f488828b85016104fc565b97505050918601919086019060010161065e565b50505050506107198287018761048e565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152610750828483610545565b9250505082810360408401526107668185610594565b9695505050505050565b60006020828403121561078257600080fd5b815167ffffffffffffffff8082111561079a57600080fd5b818401915084601f8301126107ae57600080fd5b8151818111156107c0576107c0610430565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561080657610806610430565b8160405282815287602084870101111561081f57600080fd5b6108308360208301602088016103af565b979650505050505050565b60008152600082516108548160018501602087016103af565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108ea81600e8501602087016103af565b91909101600e01939250505056fea2646970667358221220fc3c3eb125b8ecf7ece2e10dcb979b290c58e23086257f40d4983cdf24e230ed64736f6c634300080a0033"; - -type FnPtrsTestConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: FnPtrsTestConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class FnPtrsTest__factory extends ContractFactory { - constructor(...args: FnPtrsTestConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - vmStateBuilder_: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy( - vmStateBuilder_, - overrides || {} - ) as Promise; - } - getDeployTransaction( - vmStateBuilder_: string, - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(vmStateBuilder_, overrides || {}); - } - attach(address: string): FnPtrsTest { - return super.attach(address) as FnPtrsTest; - } - connect(signer: Signer): FnPtrsTest__factory { - return super.connect(signer) as FnPtrsTest__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): FnPtrsTestInterface { - return new utils.Interface(_abi) as FnPtrsTestInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): FnPtrsTest { - return new Contract(address, _abi, signerOrProvider) as FnPtrsTest; - } -} diff --git a/src/typechain/factories/LibCommitmentTest__factory.ts b/src/typechain/factories/LibCommitmentTest__factory.ts index 34f022f..1c17285 100644 --- a/src/typechain/factories/LibCommitmentTest__factory.ts +++ b/src/typechain/factories/LibCommitmentTest__factory.ts @@ -54,11 +54,11 @@ const _abi = [ }, { inputs: [], - name: "zero", + name: "nil", outputs: [ { internalType: "Commitment", - name: "zero_", + name: "nil_", type: "uint256", }, ], @@ -68,7 +68,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610168806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063320cbc3f1461004657806332148d731461006c578063bc1b392d1461008e575b600080fd5b6100596100543660046100f7565b610095565b6040519081526020015b60405180910390f35b61007e61007a366004610110565b1490565b6040519015158152602001610063565b6000610059565b60006100a0826100a6565b92915050565b6000816040516020016100bb91815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60006020828403121561010957600080fd5b5035919050565b6000806040838503121561012357600080fd5b5050803592602090910135915056fea2646970667358221220ff52ac4a8382167015769be3c3b910fb64be85227e41b56a715cc1cba5a4a33d64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50610164806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632c22f45514610046578063320cbc3f1461005c57806332148d731461006f575b600080fd5b60005b6040519081526020015b60405180910390f35b61004961006a3660046100f3565b610091565b61008161007d36600461010c565b1490565b6040519015158152602001610053565b600061009c826100a2565b92915050565b6000816040516020016100b791815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60006020828403121561010557600080fd5b5035919050565b6000806040838503121561011f57600080fd5b5050803592602090910135915056fea26469706673582212207ca21d5283ef0effa3b22f718205b48d374084150a9c706322680ec20116ce3d64736f6c634300080a0033"; type LibCommitmentTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/LibSeedTest__factory.ts b/src/typechain/factories/LibSeedTest__factory.ts index f66d554..f035307 100644 --- a/src/typechain/factories/LibSeedTest__factory.ts +++ b/src/typechain/factories/LibSeedTest__factory.ts @@ -33,7 +33,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060cd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632d586d6014602d575b600080fd5b606460383660046076565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b60405190815260200160405180910390f35b60008060408385031215608857600080fd5b5050803592602090910135915056fea26469706673582212203810bacd4cb9926abbf150c419abb9138f07de1f745e670d97ec91b004d5c03264736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5060cd8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80632d586d6014602d575b600080fd5b606460383660046076565b604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b60405190815260200160405180910390f35b60008060408385031215608857600080fd5b5050803592602090910135915056fea26469706673582212206e991384b9201b7453f2d9afa7e85bfd1f7868821cf13de494e715ff7c80a9c664736f6c634300080a0033"; type LibSeedTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OrderBookStateBuilder__factory.ts b/src/typechain/factories/OrderBookStateBuilder__factory.ts index cbe05c5..1d69915 100644 --- a/src/typechain/factories/OrderBookStateBuilder__factory.ts +++ b/src/typechain/factories/OrderBookStateBuilder__factory.ts @@ -91,11 +91,6 @@ const _abi = [ name: "storageLength", type: "uint256", }, - { - internalType: "uint256", - name: "opcodesLength", - type: "uint256", - }, ], internalType: "struct Bounds[]", name: "boundss_", @@ -106,7 +101,7 @@ const _abi = [ outputs: [ { internalType: "bytes", - name: "", + name: "state_", type: "bytes", }, ], @@ -115,6 +110,16 @@ const _abi = [ }, { inputs: [ + { + internalType: "uint256[]", + name: "stackPops_", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "stackPushes_", + type: "uint256[]", + }, { components: [ { @@ -164,11 +169,6 @@ const _abi = [ name: "storageLength", type: "uint256", }, - { - internalType: "uint256", - name: "opcodesLength", - type: "uint256", - }, ], internalType: "struct Bounds", name: "bounds_", @@ -180,38 +180,14 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "bytes", - name: "packedFnPtrs_", - type: "bytes", - }, - { - internalType: "bytes", - name: "source_", - type: "bytes", - }, - ], - name: "ptrSource", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [], - name: "stackPopsFnPtrs", + name: "stackPops", outputs: [ { - internalType: "bytes", - name: "", - type: "bytes", + internalType: "uint256[]", + name: "pops_", + type: "uint256[]", }, ], stateMutability: "pure", @@ -219,12 +195,12 @@ const _abi = [ }, { inputs: [], - name: "stackPushesFnPtrs", + name: "stackPushes", outputs: [ { - internalType: "bytes", - name: "", - type: "bytes", + internalType: "uint256[]", + name: "pushes_", + type: "uint256[]", }, ], stateMutability: "pure", @@ -233,7 +209,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5062000031620000206200005d565b620000db60201b62000c7a1760201c565b6001600160a01b03166080526200004b6200002062000150565b6001600160a01b031660a0526200070d565b6060620000746200019e60201b62000d051760201c565b620000b4604080516060810182526001600160401b036200055d602090811b620010461782168184015262000557901b6200104017168183015290815290565b604051602001620000c792919062000692565b604051602081830303815290604052905090565b6000806200011583604051602001620000f59190620006b3565b6040516020818303038152906040526200038d60201b62000e931760201c565b90508051602082016000f091506001600160a01b0382166200014a5760405163046a55db60e11b815260040160405180910390fd5b50919050565b606062000167620003bb60201b62000ebf1760201c565b604080516060810182526001600160401b036200055d602090811b62001046179190911690820181905281830152908152620000b4565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b0362000557831b6200104017811660e083018190526200055d841b62001046178216610100840181905262000563851b6200104c17831661012085018190526101408501839052610160850183905261018085018390526101a0850181905262000569861b620010521784166101c0860152620005b6861b620010c71784166101e0860181905261020086018190526102208601819052610240860152610260850182905261028085018390526102a085018390526102c085018290526102e08501829052620005bc861b620010cd17841661030086018190526103208601919091526103408501839052610360850181905261038085018390526103a08501919091526103c084018290526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e084018190526105008401819052610520840152620005ff841b6200113c17821661054084015262000605841b6200114217821661056084015261058083018190526200060b90931b6200114817166105a08201526105c08082019290925290815290565b6060815182604051602001620003a5929190620006cf565b6040516020818303038152906040529050919050565b604080516105e08101825260006020808301829052928201819052606082018190526080820181905260a0820181905260c08201526001600160401b036200055d831b6200104617811660e08301819052610100830181905261012083018190526101408301819052610160830181905261018083018190526101a08301819052620005bc90931b620010cd17166101c08201526101e08101829052610200810182905261022081018290526102408101829052610260810182905261028081018290526102a081018290526102c081018290526102e08101829052610300810182905261032081018290526103408101829052610360810182905261038081018290526103a081018290526103c081018290526103e08101829052610400810182905261042081018290526104408101829052610460810182905261048081018290526104a081018290526104c081018290526104e08101829052610500810182905261052081018290526105408101829052610560810182905261058081018290526105a081018290526105c08082019290925290815290565b50600290565b50600190565b50600390565b6000808211620005ac5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b60448201526064015b60405180910390fd5b5060020260010190565b50600090565b6000808211620005fb5760405162461bcd60e51b81526020600482015260096024820152680c17d3d4115490539160ba1b6044820152606401620005a3565b5090565b60020190565b60030190565b6000601f8216806200064e5760405162461bcd60e51b815260206004820152600b60248201526a10905117d3d4115490539160aa1b6044820152606401620005a3565b92915050565b6000815160005b818110156200067757602081850181015186830152016200065b565b8181111562000687576000828601525b509290920192915050565b6000620006ab620006a4838662000654565b8462000654565b949350505050565b600081526000620006c8600183018462000654565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201526000620006ab600e83018462000654565b60805160a051611f72620007336000396000610723015260006106f60152611f726000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009d5780639b0bc349146100b2578063a46c2a31146100c557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611a47565b6100cd565b60405161008c9190611b65565b60405180910390f35b61007f6104c8565b6100b06100ab366004611bb6565b610682565b005b61007f6100c0366004611c06565b610986565b61007f610ad7565b606060006100da856111bb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014c9190611c6a565b60200151905060008060005b86518110156102f0578387828151811061017457610174611cb9565b602002602001015160a0018181525050600285518161019557610195611ce8565b048782815181106101a8576101a8611cb9565b602002602001015160c00181815250506101db888883815181106101ce576101ce611cb9565b6020026020010151610682565b61020b8782815181106101f0576101f0611cb9565b602002602001015160800151846112f990919063ffffffff16565b925061023d87828151811061022257610222611cb9565b602002602001015160600151836112f990919063ffffffff16565b915086818151811061025157610251611cb9565b60200260200101516020015187828151811061026f5761026f611cb9565b60200260200101516040015110156102e8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b600101610158565b506000828860200151510167ffffffffffffffff81111561031357610313611716565b60405190808252806020026020018201604052801561033c578160200160208202803683370190505b50905060005b886020015151811015610392578860200151818151811061036557610365611cb9565b602002602001015182828151811061037f5761037f611cb9565b6020908102919091010152600101610342565b5087515160009067ffffffffffffffff8111156103b1576103b1611716565b6040519080825280602002602001820160405280156103e457816020015b60608152602001906001900390816103cf5790505b50905060005b8951518110156104405761041b878b60000151838151811061040e5761040e611cb9565b6020026020010151610986565b82828151811061042d5761042d611cb9565b60209081029190910101526001016103ea565b506104b86040518060a00160405280600081526020018567ffffffffffffffff81111561046f5761046f611716565b604051908082528060200260200182016040528015610498578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250611310565b96505050505050505b9392505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104660e08401819052610100840181905261012084018190526101408401819052610160840181905261018084018190526101a084018190526110cd6101c08501526101e08401819052610200840181905261022084018190526102408401819052610260840181905261028084018190526102a084018190526102c084018190526102e08401819052610300840181905261032084018190526103408401819052610360840181905261038084018190526103a084018190526103c084018190526103e08401819052610400840181905261042084018190526104408401819052610460840181905261048084018190526104a084018190526104c084018190526104e08401819052610500840181905261052084018190526105408401819052610560840181905261058084018190526105a084018190526105c080850182905284528451808401865291820181905281850152928352915b60405160200161066e929190611d17565b604051602081830303815290604052905090565b805182515181106106ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102df565b600061071a7f000000000000000000000000000000000000000000000000000000000000000061144d565b905060006107477f000000000000000000000000000000000000000000000000000000000000000061144d565b905060008080600080602088026020018a5101519050805193505b8385101561090b576002850194508481015180601e1a935080601f1a925050600683101561082657826107b65789602001515189608001510182106107a657600080fd5b604089018051600101905261080d565b60018314156107cf57886040015182106107a657600080fd5b60028314156107e857604089018051600101905261080d565b600383141561080d578860a00151821061080157600080fd5b60408901805160010190525b6004831415610821576108218a8a8461147b565b6108ee565b8860c001518310610893576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102df565b6020838102888101820151908801909101516108b28463ffffffff8416565b60408c018051919091039081905260608c01516108ce916112f9565b60608c01526108e08463ffffffff8316565b60408c018051909101905250505b604089015160608a0151610901916112f9565b60608a0152610762565b606089015160ff101561097a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102df565b50505050505050505050565b805160609060028106156109f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102df565b60006002600383020467ffffffffffffffff811115610a1757610a17611716565b6040519080825280601f01601f191660200182016040528015610a41576020820181803683370190505b509050600660018381018160005b82821015610ac95781890151601f1a6002830615610aab5785811015610a7d57600182019181908801602101535b858110610aab57600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b60028306610abc5780826020018801535b5060019182019101610a4f565b509398975050505050505050565b604080516105e0810182526000602080830182905282840182905260608084018390526080840183905260a0840183905260c084019290925261104060e08401819052611046610100850181905261104c61012086018190526101408601839052610160860183905261018086018390526101a086018190526110526101c08701526110c76101e0870181905261020087018190526102208701819052610240870152610260860182905261028086018390526102a086018390526102c086018290526102e086018290526110cd61030087018190526103208701919091526103408601839052610360860181905261038086018390526103a086018290526103c086018390526103e08601819052610400860181905261042086018190526104408601819052610460860181905261048086018190526104a086018190526104c086018190526104e08601819052610500860181905261052086015261113c61054086015261114261056086015261058085018290526111486105a08601526105c080860183905285528551808501875292830152818501529283529161065d565b600080610ca583604051602001610c919190611d46565b604051602081830303815290604052610e93565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610cff576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104060e08201819052611046610100830181905261104c61012084018190526101408401839052610160840183905261018084018390526101a084018190526110526101c08501526110c76101e0850181905261020085018190526102208501819052610240850152610260840182905261028084018390526102a084018390526102c084018290526102e084018290526110cd61030085018190526103208501919091526103408401839052610360840181905261038084018390526103a08401919091526103c083018290526103e08301819052610400830181905261042083018190526104408301819052610460830181905261048083018190526104a083018190526104c083018190526104e08301819052610500830181905261052083015261113c61054083015261114261056083015261058082018190526111486105a08301526105c082810191909152815290565b6060815182604051602001610ea9929190611d6c565b6040516020818303038152906040529050919050565b604080516105e081018252600060208201819052918101829052606081018290526080810182905260a0810182905260c081019190915261104660e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526110cd6101c08301526101e08201819052610200820181905261022082018190526102408201819052610260820181905261028082018190526102a082018190526102c082018190526102e08201819052610300820181905261032082018190526103408201819052610360820181905261038082018190526103a082018190526103c082018190526103e08201819052610400820181905261042082018190526104408201819052610460820181905261048082018190526104a082018190526104c082018190526104e08201819052610500820181905261052082018190526105408201819052610560820181905261058082018190526105a082018190526105c082810191909152815290565b50600290565b50600190565b50600390565b60008082116110bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5060020260010190565b50600090565b6000808211611138576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4f504552414e44000000000000000000000000000000000000000000000060448201526064016102df565b5090565b60020190565b60030190565b6000601f8216806111b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e4400000000000000000000000000000000000000000060448201526064016102df565b92915050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926111ef911661144d565b90508051600014156111b55761129c6112978473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa15801561124c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526112929190810190611e03565b61151a565b610c7a565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104c1836111bb565b60008183101561130957816104c1565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b8360405160200161135c9190611e7a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526113989291602001611eb0565b604051602081830303815290604052905060005b8560400151518110156114445781866040015182815181106113d0576113d0611cb9565b60200260200101515160001b876040015183815181106113f2576113f2611cb9565b602002602001015160405160200161140c93929190611ed6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016113ac565b50949350505050565b60606111b58260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611624565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916114c591906112f9565b606084015260808301516114d990826112f9565b60808401528251600783168085526001600385811c161b919060005b8381101561150f576115078888610682565b6001016114f5565b505090935250505050565b6060602082518161152d5761152d611ce8565b0615611595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102df565b600060108351816115a8576115a8611ce8565b0467ffffffffffffffff8111156115c1576115c1611716565b6040519080825280601f01601f1916602001820160405280156115eb576020820181803683370190505b509050600060025b845182101561161b5780830180516020848801810151909117909152909101906002016115f3565b50909392505050565b6060833b806116435750506040805160208101909152600081526104c1565b808411156116615750506040805160208101909152600081526104c1565b838310156116ac576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102df565b83830384820360008282106116c157826116c3565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b611714611f0d565b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561176857611768611716565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156117b5576117b5611716565b604052919050565b600067ffffffffffffffff8211156117d7576117d7611716565b5060051b60200190565b600067ffffffffffffffff8211156117fb576117fb611716565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261183857600080fd5b813561184b611846826117e1565b61176e565b81815284602083860101111561186057600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261188e57600080fd5b8135602061189e611846836117bd565b82815260059290921b840181019181810190868411156118bd57600080fd5b8286015b848110156118d857803583529183019183016118c1565b509695505050505050565b6000604082840312156118f557600080fd5b6118fd611745565b9050813567ffffffffffffffff8082111561191757600080fd5b818401915084601f83011261192b57600080fd5b8135602061193b611846836117bd565b82815260059290921b8401810191818101908884111561195a57600080fd5b8286015b84811015611992578035868111156119765760008081fd5b6119848b86838b0101611827565b84525091830191830161195e565b50865250858101359350828411156119a957600080fd5b6119b58785880161187d565b818601525050505092915050565b600060e082840312156119d557600080fd5b60405160e0810181811067ffffffffffffffff821117156119f8576119f8611716565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b600080600060608486031215611a5c57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff81168114611a8057600080fd5b925060208481013567ffffffffffffffff80821115611a9e57600080fd5b611aaa888389016118e3565b94506040870135915080821115611ac057600080fd5b508501601f81018713611ad257600080fd5b8035611ae0611846826117bd565b81815260e0918202830184019184820191908a841115611aff57600080fd5b938501935b83851015611b2557611b168b866119c3565b83529384019391850191611b04565b5080955050505050509250925092565b60005b83811015611b50578181015183820152602001611b38565b83811115611b5f576000848401525b50505050565b6020815260008251806020840152611b84816040850160208701611b35565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806101008385031215611bca57600080fd5b823567ffffffffffffffff811115611be157600080fd5b611bed858286016118e3565b925050611bfd84602085016119c3565b90509250929050565b60008060408385031215611c1957600080fd5b823567ffffffffffffffff80821115611c3157600080fd5b611c3d86838701611827565b93506020850135915080821115611c5357600080fd5b50611c6085828601611827565b9150509250929050565b600060408284031215611c7c57600080fd5b6040516040810181811067ffffffffffffffff82111715611c9f57611c9f611716565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008351611d29818460208801611b35565b835190830190611d3d818360208801611b35565b01949350505050565b6000815260008251611d5f816001850160208701611b35565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611df581600e850160208701611b35565b91909101600e019392505050565b600060208284031215611e1557600080fd5b815167ffffffffffffffff811115611e2c57600080fd5b8201601f81018413611e3d57600080fd5b8051611e4b611846826117e1565b818152856020838501011115611e6057600080fd5b611e71826020830160208601611b35565b95945050505050565b815160009082906020808601845b83811015611ea457815185529382019390820190600101611e88565b50929695505050505050565b82815260008251611ec8816020850160208701611b35565b919091016020019392505050565b60008451611ee8818460208901611b35565b82018481528351611f00816020808501908801611b35565b0160200195945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea26469706673582212205e56aaeb0ed946908554dc54d719549e72d64eeea3b9d227f43ad983ba9ba4ee64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611e4b806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d1461006f578063aa9628a114610077578063ce19c93514610097575b600080fd5b6100596100ac565b604051610066919061163f565b60405180910390f35b6100596100c3565b61008a610085366004611997565b6100d5565b6040516100669190611ab5565b6100aa6100a5366004611b06565b6103b0565b005b60606100be6100b96107b8565b610823565b905090565b60606100be6100d06109f4565b610a4f565b606060006100e285610c21565b905060006100f38260200151610f86565b905060008060006101026100c3565b9050600061010e6100ac565b905060005b88518110156101d857866000015161ffff1689828151811061013757610137611ba1565b602002602001015160a001818152505061016c83838c8c858151811061015f5761015f611ba1565b60200260200101516103b0565b61019c89828151811061018157610181611ba1565b60200260200101516080015186610fba90919063ffffffff16565b94506101ce8982815181106101b3576101b3611ba1565b60200260200101516060015185610fba90919063ffffffff16565b9350600101610113565b506000848a60200151510167ffffffffffffffff8111156101fb576101fb611683565b604051908082528060200260200182016040528015610224578160200160208202803683370190505b50905060005b8a602001515181101561027a578a60200151818151811061024d5761024d611ba1565b602002602001015182828151811061026757610267611ba1565b602090810291909101015260010161022a565b5089515160009067ffffffffffffffff81111561029957610299611683565b6040519080825280602002602001820160405280156102cc57816020015b60608152602001906001900390816102b75790505b50905060005b8b515181101561032857610303888d6000015183815181106102f6576102f6611ba1565b6020026020010151610fd3565b82828151811061031557610315611ba1565b60209081029190910101526001016102d2565b506103a06040518060a00160405280600081526020018767ffffffffffffffff81111561035757610357611683565b604051908082528060200260200182016040528015610380578160200160208202803683370190505b5081526020018381526020018481526020018d6020015151815250611163565b9c9b505050505050505050505050565b80518251518110610422576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b838510156106cb576002850194508481015180601e1a935080601f1a925050600683101561060c57826104ec5787602001515187608001510182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e5400000000000000000000000000000000000000006044820152606401610419565b60408701805160010190526106ae565b600183141561056257866040015182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b00000000000000000000000000000000000000000000006044820152606401610419565b600283141561057b5760408701805160010190526106ae565b60038314156105f1578660a0015182106104dc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f524147450000000000000000000000000000000000000000006044820152606401610419565b6004831415610607576106078a8a8a8a866112a0565b6106ae565b60008a848151811061062057610620611ba1565b60200260200101519050600581111561064557806106418463ffffffff8316565b9150505b60408801805182900390819052606089015161066091610fba565b606089015289516000908b908690811061067c5761067c611ba1565b6020026020010151905060058111156106a1578061069d8563ffffffff8316565b9150505b6040890180519091019052505b604087015160608801516106c191610fba565b606088015261043b565b606087015160ff101561073a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b00000000000000000000000000000000000000000000006044820152606401610419565b8660200151876040015110156107ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e4445580000000000000000000000000000006044820152606401610419565b50505050505050505050565b604080516002808252606080830184529260009291906020830190803683370190505090506001816000815181106107f2576107f2611ba1565b60200260200101818152505060018160018151811061081357610813611ba1565b6020908102919091010152919050565b60606000825190506000604051806105e00160405280836028600601018152602001600181526020016001815260200160018152602001600181526020016000815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016108a961134390565b81526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152509050604051602083020160405280925060005b828110156109ec578481815181106109b9576109b9611ba1565b60200260200101518460286006018301815181106109d9576109d9611ba1565b602090810291909101015260010161099f565b505050919050565b60408051600280825260608083018452926000929190602083019080368337019050509050600181600081518110610a2e57610a2e611ba1565b60200260200101818152505060028160018151811061081357610813611ba1565b8051606090600061134390506000604051806105e0016040528084602860060101815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160028152602001600181526020016003815260200160028152602001600281526020016002815260200160038152602001610ad96113b290565b81526020016000815260200160008152602001600081526020016000815260200160018152602001600281526020016002815260200160018152602001600181526020018381526020016003815260200160028152602001838152602001600281526020016001815260200160028152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001610b9761142790565b815260200161142d815260026020820152604001611433815260200160028152509050604051602084020160405280935060005b83811015610c1857858181518110610be557610be5611ba1565b6020026020010151856028600601830181518110610c0557610c05611ba1565b6020908102919091010152600101610bcb565b50505050919050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610f815760008273ffffffffffffffffffffffffffffffffffffffff163b11610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d00000000000000000000000000000000000000000000006044820152606401610419565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610d47573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610d8d9190810190611bd0565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190611c47565b905061ffff801681602001511115610e73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f444553000000000000000000000000006044820152606401610419565b6002825181610e8457610e84611c96565b0615610eec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e54455253000000000000000000000000000000006044820152606401610419565b6040518060400160405280826020015161ffff168152602001610f0e846114a0565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610fb48260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61152b565b92915050565b600081831015610fca5781610fcc565b825b9392505050565b805182516060919060011615611045576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f5054525300000000000000000000000000000000006044820152606401610419565b60028106156110b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e4754480000000000000000000000000000006044820152606401610419565b60006002600383020467ffffffffffffffff8111156110d1576110d1611683565b6040519080825280601f01601f1916602001820160405280156110fb576020820181803683370190505b50905060056002808701908681019085880101600385015b8183101561115557825180601e1a868111156111345760020285015161ffff165b81601f1a8160081b1783511783525050600283019250600381019050611113565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016111af9190611cc5565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526111eb9291602001611cfb565b604051602081830303815290604052905060005b85604001515181101561129757818660400151828151811061122357611223611ba1565b60200260200101515160001b8760400151838151811061124557611245611ba1565b602002602001015160405160200161125f93929190611d21565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905291506001016111ff565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916112ea9190610fba565b606084015260808301516112fe9082610fba565b60808401528251600783168085526001600385811c161b919060005b838110156113365761132e8a8a8a8a6103b0565b60010161131a565b5050909352505050505050565b60008082116113ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f305f4f504552414e445f4e5a4f4e0000000000000000000000000000000000006044820152606401610419565b5090565b600080821161141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f305f4f504552414e445f455243313135350000000000000000000000000000006044820152606401610419565b5060020260010190565b60020190565b60030190565b6000601f821680610fb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e440000000000000000000000000000000000000000006044820152606401610419565b6000806114cb836040516020016114b79190611d58565b604051602081830303815290604052611613565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611525576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b8061154a575050604080516020810190915260008152610fcc565b80841115611568575050604080516020810190915260008152610fcc565b838310156115b3576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610419565b83830384820360008282106115c857826115ca565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6060815182604051602001611629929190611d7e565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b818110156116775783518352928401929184019160010161165b565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156116d5576116d5611683565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561172257611722611683565b604052919050565b600067ffffffffffffffff82111561174457611744611683565b5060051b60200190565b600067ffffffffffffffff82111561176857611768611683565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126117a557600080fd5b813560206117ba6117b58361172a565b6116db565b82815260059290921b840181019181810190868411156117d957600080fd5b8286015b848110156117f457803583529183019183016117dd565b509695505050505050565b6000604080838503121561181257600080fd5b61181a6116b2565b9150823567ffffffffffffffff8082111561183457600080fd5b818501915085601f83011261184857600080fd5b813560206118586117b58361172a565b82815260059290921b8401810191818101908984111561187757600080fd5b8286015b848110156118eb578035868111156118935760008081fd5b8701603f81018c136118a55760008081fd5b848101356118b56117b58261174e565b8181528d8b8385010111156118ca5760008081fd5b818b840188830137600091810187019190915284525091830191830161187b565b508752508681013594508285111561190257600080fd5b61190e88868901611794565b81870152505050505092915050565b600060c0828403121561192f57600080fd5b60405160c0810181811067ffffffffffffffff8211171561195257611952611683565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000606084860312156119ac57600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146119d057600080fd5b925060208481013567ffffffffffffffff808211156119ee57600080fd5b6119fa888389016117ff565b94506040870135915080821115611a1057600080fd5b508501601f81018713611a2257600080fd5b8035611a306117b58261172a565b81815260c0918202830184019184820191908a841115611a4f57600080fd5b938501935b83851015611a7557611a668b8661191d565b83529384019391850191611a54565b5080955050505050509250925092565b60005b83811015611aa0578181015183820152602001611a88565b83811115611aaf576000848401525b50505050565b6020815260008251806020840152611ad4816040850160208701611a85565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806101208587031215611b1d57600080fd5b843567ffffffffffffffff80821115611b3557600080fd5b611b4188838901611794565b95506020870135915080821115611b5757600080fd5b611b6388838901611794565b94506040870135915080821115611b7957600080fd5b50611b86878288016117ff565b925050611b96866060870161191d565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611be257600080fd5b815167ffffffffffffffff811115611bf957600080fd5b8201601f81018413611c0a57600080fd5b8051611c186117b58261174e565b818152856020838501011115611c2d57600080fd5b611c3e826020830160208601611a85565b95945050505050565b600060408284031215611c5957600080fd5b6040516040810181811067ffffffffffffffff82111715611c7c57611c7c611683565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b83811015611cef57815185529382019390820190600101611cd3565b50929695505050505050565b82815260008251611d13816020850160208701611a85565b919091016020019392505050565b60008451611d33818460208901611a85565b82018481528351611d4b816020808501908801611a85565b0160200195945050505050565b6000815260008251611d71816001850160208701611a85565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611e0781600e850160208701611a85565b91909101600e01939250505056fea264697066735822122049fbfc6ef96706b4fe3a9618b02581a34b2f4f93c41eb253734cb1fc970580e064736f6c634300080a0033"; type OrderBookStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/OrderBook__factory.ts b/src/typechain/factories/OrderBook__factory.ts index afad3ab..2b034df 100644 --- a/src/typechain/factories/OrderBook__factory.ts +++ b/src/typechain/factories/OrderBook__factory.ts @@ -69,24 +69,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -112,24 +126,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -150,19 +178,39 @@ const _abi = [ { components: [ { - internalType: "VaultId", - name: "aVaultId", + internalType: "uint256", + name: "aInputIndex", type: "uint256", }, { - internalType: "VaultId", - name: "bVaultId", + internalType: "uint256", + name: "aOutputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "bInputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "bOutputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "aBountyVaultId", + type: "uint256", + }, + { + internalType: "uint256", + name: "bBountyVaultId", type: "uint256", }, ], indexed: false, - internalType: "struct BountyConfig", - name: "bountyConfig", + internalType: "struct ClearConfig", + name: "clearConfig", type: "tuple", }, ], @@ -186,7 +234,7 @@ const _abi = [ type: "address", }, { - internalType: "VaultId", + internalType: "uint256", name: "vaultId", type: "uint256", }, @@ -222,24 +270,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -278,24 +340,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -334,7 +410,7 @@ const _abi = [ type: "address", }, { - internalType: "VaultId", + internalType: "uint256", name: "vaultId", type: "uint256", }, @@ -364,24 +440,38 @@ const _abi = [ { components: [ { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { components: [ @@ -421,24 +511,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -463,24 +567,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -500,18 +618,38 @@ const _abi = [ { components: [ { - internalType: "VaultId", - name: "aVaultId", + internalType: "uint256", + name: "aInputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "aOutputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "bInputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "bOutputIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "aBountyVaultId", type: "uint256", }, { - internalType: "VaultId", - name: "bVaultId", + internalType: "uint256", + name: "bBountyVaultId", type: "uint256", }, ], - internalType: "struct BountyConfig", - name: "bountyConfig_", + internalType: "struct ClearConfig", + name: "clearConfig_", type: "tuple", }, ], @@ -530,7 +668,7 @@ const _abi = [ type: "address", }, { - internalType: "VaultId", + internalType: "uint256", name: "vaultId", type: "uint256", }, @@ -552,11 +690,11 @@ const _abi = [ }, { inputs: [], - name: "fnPtrs", + name: "packedFunctionPointers", outputs: [ { internalType: "bytes", - name: "", + name: "ptrs_", type: "bytes", }, ], @@ -573,24 +711,38 @@ const _abi = [ type: "address", }, { - internalType: "address", - name: "inputToken", - type: "address", - }, - { - internalType: "VaultId", - name: "inputVaultId", - type: "uint256", - }, - { - internalType: "address", - name: "outputToken", - type: "address", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validInputs", + type: "tuple[]", }, { - internalType: "VaultId", - name: "outputVaultId", - type: "uint256", + components: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "vaultId", + type: "uint256", + }, + ], + internalType: "struct IO[]", + name: "validOutputs", + type: "tuple[]", }, { internalType: "uint256", @@ -648,7 +800,7 @@ const _abi = [ type: "address", }, { - internalType: "VaultId", + internalType: "uint256", name: "vaultId", type: "uint256", }, @@ -671,7 +823,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162004a3c38038062004a3c83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161499a620000a260003960006103b3015260006103d4015261499a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806384e07cdc1161005b57806384e07cdc146100bd578063e0419ae3146100d0578063e6b626361461010d578063f2cd6c081461012057600080fd5b80634a342e68146100825780634f2661871461009757806355958f19146100aa575b600080fd5b610095610090366004613853565b610135565b005b6100956100a53660046138a6565b610258565b6100956100b83660046138c2565b6103ac565b6100956100cb366004613b51565b610475565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61009561011b3660046138a6565b610e60565b610128610f5a565b6040516101049190613c65565b6101426020820182613c78565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983613c95565b61113f565b600081815260208190526040902054909150600114156102545760008181526020819052604080822091909155517fdefb26ae563b251be3ab9494dd34f2147bbbc13d20d407bc783d275d4b958e5e9061024b9033908590613d55565b60405180910390a15b5050565b336000908152600160209081526040822090829061027890850185613c78565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102bf908401358361118e565b90506102cb8183613e46565b336000908152600160209081526040822091906102ea90870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a33848360405161037093929190613e95565b60405180910390a16103a7338261038a6020870187613c78565b73ffffffffffffffffffffffffffffffffffffffff1691906111a8565b505050565b60006104017f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006103fc85613f57565b61127c565b9050600061040e8261113f565b6000818152602081905260409020549091506103a7576000818152602081905260409081902060019055517fd0a47b54268dda2cd6b19382b7bb0140468dffa248430275421ff569d8462cb8906104689033908590614108565b60405180910390a1505050565b60006104808461113f565b9050600061048d8461113f565b9050836020015173ffffffffffffffffffffffffffffffffffffffff16856060015173ffffffffffffffffffffffffffffffffffffffff161461052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b846020015173ffffffffffffffffffffffffffffffffffffffff16846060015173ffffffffffffffffffffffffffffffffffffffff16146105c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b600082815260208190526040902054600114610641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6000818152602081905260409020546001146106b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6106e46040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807fc8fdaeeb4c67170b308e2c1186ec1ab72321b4e96499f8d9aa9bdef787959d25338b8b8b60405161071f9493929190614137565b60405180910390a16107596040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6107668b60c00151611518565b90506107aa6107a260405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b8260006116d8565b5080602001516001826000015103815181106107c8576107c8614195565b6020026020010151945080602001516002826000015103815181106107ef576107ef614195565b602002602001015192506108068a60c00151611518565b90506108426107a260405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff16815250611684565b50806020015160018260000151038151811061086057610860614195565b60200260200101519350806020015160028260000151038151811061088757610887614195565b602002602001015191505061093e600160008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c6060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c608001518152602001908152602001600020548361118e90919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608f0151909416835292815282822060808e015183529052205490925061099290829061118e565b90506109a86109a182856119ac565b839061118e565b85526109be6109b783866119ac565b829061118e565b602086015284511515806109d6575060008560200151115b610a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b8451610a4890856119ac565b60408601526020850151610a5c90846119ac565b606086015250508251159150610b549050578051865173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152604080832060608c0151909416835292815282822060808b0151835290529081208054909190610ac7908490613e46565b909155505060a086015160011615610aff57805160008481526002602052604081208054909190610af99084906141c4565b90915550505b60a086015160021615610b545780516000848152600360209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610b4e9084906141c4565b90915550505b602081015115610c5057602080820151865173ffffffffffffffffffffffffffffffffffffffff908116600090815260018452604080822060608b0151909316825291845281812060808a015182529093528220805491929091610bb9908490613e46565b909155505060a085015160011615610bf8578060200151600260008481526020019081526020016000206000828254610bf291906141c4565b90915550505b60a085015160021615610c505760208082015160008481526003835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610c4a9084906141c4565b90915550505b604081015115610cbb57604080820151875173ffffffffffffffffffffffffffffffffffffffff908116600090815260016020908152848220818c015190931682529182528381208a8501518252909152918220805491929091610cb59084906141c4565b90915550505b606081015115610d25576060810151855173ffffffffffffffffffffffffffffffffffffffff9081166000908152600160209081526040808320828b01519094168352928152828220838a0151835290529081208054909190610d1f9084906141c4565b90915550505b60608101518151600091610d3891613e46565b9050600082604001518360200151610d509190613e46565b90508115610dab5733600090815260016020908152604080832060608c015173ffffffffffffffffffffffffffffffffffffffff16845282528083208935845290915281208054849290610da59084906141c4565b90915550505b8015610e065733600090815260016020908152604080832060608b015173ffffffffffffffffffffffffffffffffffffffff168452825280832089830135845290915281208054839290610e009084906141c4565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b33600090815260016020908152604080832090840135929091610e8590850185613c78565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610ee391906141c4565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef123190610f1a90339084906141dc565b60405180910390a1610f5733306040840135610f396020860186613c78565b73ffffffffffffffffffffffffffffffffffffffff169291906119cb565b50565b604080516105e08101825260006020820181905291810182905260608181018390526080820183905260a0820183905260c0820192909252611f2160e082018190526120156101008301526120a16101208301526121c261014083015261016082015261226b6101808201526123736101a08201526124476101c08201526126446101e082015261264f61020082015261265a6102208201526126656102408201526126706102608201526126a461028082015261270a6102a08201526127706102c08201526127a46102e08201526127d861030082015261280d6103208201526128686103408201526128be6103608201526128e761038082015261293e6103a082015261296b6103c08201526129c26103e0820152612a2d610400820152612a8a610420820152612ac8610440820152612b01610460820152612b35610480820152612b676104a0820152612b996104c0820152612bcb6104e0820152612bff610500820152612c51610520820152612c8a610540820152612d3c610560820152612e69610580820152612ec56105a0820152612f7f6105c080830191909152815260408051606081018252612ffb60208201526130368183015290815260405160200161112b929190614206565b604051602081830303815290604052905090565b6000816040516020016111529190614235565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b600081831061119d578161119f565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103a79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611a2f565b6112fe6040518060e00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b61133e6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b61139f6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526020019060019003908161135f57905050905081816000815181106113c8576113c8614195565b60200260200101819052506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff168152602001856000015173ffffffffffffffffffffffffffffffffffffffff16815260200185602001518152602001856040015173ffffffffffffffffffffffffffffffffffffffff1681526020018560600151815260200161145f866080015160000151611b3b565b81526020018773ffffffffffffffffffffffffffffffffffffffff166317376ae0888860800151866040518463ffffffff1660e01b81526004016114a5939291906142f9565b6000604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261150a91908101906143ec565b9052925050505b9392505050565b61154a6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61157c6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156115b0576115b06138fd565b6040519080825280602002602001820160405280156115d9578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115611610576116106138fd565b604051908082528060200260200182016040528015611639578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561167357816020820260200184015281516020018201915060018101905061164c565b505060408501525091949350505050565b606061168e613835565b8251815260208084015173ffffffffffffffffffffffffffffffffffffffff16818301526040516116c191839101614463565b604051602081830303815290604052915050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015611994576003890198508886015180601f1a975061ffff8160081c16985050600688101561190c578761175b5786602002840151825260208201915061191f565b60018814156117785760208702830151825260208201915061191f565b6002881415611805578c5187602002106117ee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d0151825260208201915061191f565b600388141561184d57600061183b6040805180820182526000808252602091820181905282518084019093528083529082015290565b5188015483525060209091019061191f565b6004881415611869576118628d8d848a611be8565b915061191f565b606087611897578c6040516020016118819190614497565b60405160208183030381529060405290506118f6565b60018814156118b0576118a98d611d55565b90506118f6565b60028814156118cc576020808e0151604051611881920161452e565b60038814156118f6578c516040805160208101929092520160405160208183030381529060405290505b8051156119065761190681611e92565b5061191f565b8761191b888463ffffffff8416565b9250505b60208c0151518c51111561198f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b611716565b602083830304909b529b9a5050505050505050505050565b6000670de0b6b3a76400006119c18385614593565b61119f91906145d0565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052611a299085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016111fa565b50505050565b6000611a91826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166130ba9092919063ffffffff16565b8051909150156103a75780806020019051810190611aaf919061460b565b6103a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b6000602e602f600160026003855b8751811015611bdd576000888281518110611b6657611b66614195565b60200260200101519050600060018201825181015b80821015611bcd578151601f1a925089831015611b9757611bc2565b89831415611ba457998717995b88831415611bb157998617995b858b1415611bc2578b519450611bcd565b600282019150611b7b565b505060019092019150611b499050565b505050505050919050565b600060078216600383811c16828082611c2757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100611c72565b8260011415611c4b57506fffffffffffffffffffffffffffffffff90506080611c72565b8260021415611c67575067ffffffffffffffff90506040611c72565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115611c9557611c956138fd565b604051908082528060200260200182016040528015611cbe578160200160208202803683370190505b50905060208082019083028a03815b8b821015611ce5578151815260209182019101611ccd565b505060608b015160808c015160209081029091010160005b610100811015611d435760208502830182845b82811015611d2c578051841c8a16825260209182019101611d10565b505050611d3a8e8e8b6116d8565b9b508501611cfd565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001611da1919061452e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611ddd929160200161462d565b604051602081830303815290604052905060005b856040015151811015611e89578186604001518281518110611e1557611e15614195565b60200260200101515160001b87604001518381518110611e3757611e37614195565b6020026020010151604051602001611e5193929190614653565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101611df1565b50949350505050565b610f5781604051602401611ea69190613c65565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526130d1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015611fe4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612008919061468a565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612071573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612095919061468a565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612190573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b4919061468a565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401611fc7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa15801561232c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235091906146a3565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612173565b60008060008467ffffffffffffffff811115612465576124656138fd565b60405190808252806020026020018201604052801561248e578160200160208202803683370190505b50905060008567ffffffffffffffff8111156124ac576124ac6138fd565b6040519080825280602002602001820160405280156124d5578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b8183101561252a578251815260209283019201612512565b5050602088028101602084015b8183101561254f578251815260209283019201612537565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906125a990879087906004016146c0565b600060405180830381865afa1580156125c6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261260c9190810190614723565b9050846020820160208a0281015b8082101561263557815183526020928301929091019061261a565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876130f2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200882612704858a6130f2565b90613173565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836120088261276a858a6130f2565b906119ac565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826120958287613188565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261209582876131d3565b6000602083028203805b8381101561280257805180156127f9578252612802565b506020016127e2565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156128025780516128df5760008252612802565b6020016128c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612a0057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a188382613231565b92506129d2565b505081526020019392505050565b6020828102820380516000928201835b8582108015612a6b57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612a1f57508051602090910190612a83838261326c565b9250612a3d565b6020828102820380516000928201835b8582108015612aa95750826000105b15612a1f57508051602090910190612ac1838261329b565b9250612a9a565b600060208302820380516000602083015b85811015612a1f5780518301915082821015612af457600080fd5b9091508190602001612ad9565b600060208302820380516000602083015b85811015612a1f578051915081612b2857600080fd5b9181900491602001612b12565b6020828102820380516000928201835b85821015612a1f57508051602090910190612b6081846148c9565b9250612b45565b6020828102820380516000928201835b85821015612a1f5750805182811115612b8e578092505b602082019150612b77565b6020828102820380516000928201835b85821015612a1f5750805182811015612bc0578092505b602082019150612ba9565b600060208302820380516000602083015b85811015612a1f578051915081612bf257600080fd5b9181900691602001612bdc565b60006020830282038051600080602084015b86811015612c42578315612c3a578051925082840291508284830414612c3657600080fd5b8193505b602001612c11565b50505081526020019392505050565b600060208302820380516000602083015b85811015612a1f5780518303915082821115612c7d57600080fd5b9091508190602001612c62565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061217390869086906004016148d5565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b90612e1590879087908790600401614904565b602060405180830381865afa158015612e32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e56919061468a565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361200883836132b1565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff811115612ef357612ef36138fd565b604051908082528060200260200182016040528015612f1c578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015612f5857815181602001860152602082019150602081019050612f36565b50505190506000612f6b83838989613310565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c9091169085612fec85858585613460565b90955250949695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600260205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260036020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b60606130c98484600085613506565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b600080826012141561310757839150506111a2565b82601211156131335750601282900361312181600a6148c9565b61312b9085614593565b9150506111a2565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161316281600a6148c9565b61312b90856145d0565b5092915050565b6000816119c1670de0b6b3a764000085614593565b600081810b6131985750816111a2565b60008260000b13156131c0576131af82600a614939565b6131b99084614593565b90506111a2565b60ff60008390031661316281600a6148c9565b60008060128314156131e857839150506111a2565b82601211156132025750601282900361316281600a6148c9565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161312181600a6148c9565b600082820183811061324357806130c9565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b60008261327b575060006111a2565b8282028284828161328e5761328e614564565b04141561324357806130c9565b60008183116132ab57600061119f565b50900390565b60008060015b600881116133085760006132cb868361369c565b905060006132d9868461369c565b905060006132e7838361329b565b90506132f7856001860383613749565b945050600190920191506132b79050565b509392505050565b835160009081908190819060015b600881116134525760009250828761335757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61335b565b5060005b60005b83811015613410576133898c828151811061337b5761337b614195565b60200260200101518461369c565b95508a86116133db57886133a8576133a1868361118e565b91506133d2565b60018914156133bb576133a186836137d2565b6002891480156133c9575084155b156133d2578591505b60019450613408565b89613408577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150613410565b60010161335e565b508361343957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613447866001840383613749565b95505060010161331e565b509298975050505050505050565b60008260088111156134ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156134fa5763ffffffff6020820290811b199890981685891b179791506001016134d2565b50959695505050505050565b606082471015613598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b613616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161363f9190614948565b60006040518083038185875af1925050503d806000811461367c576040519150601f19603f3d011682016040523d82523d6000602084013e613681565b606091505b50915091506136918282866137e2565b979650505050505050565b600081600881111561370a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b82613718576000915061316c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156137b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561119d578161119f565b606083156137f1575081611511565b8251156138015782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d29190613c65565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561386557600080fd5b813567ffffffffffffffff81111561387c57600080fd5b820160e0818503121561151157600080fd5b6000606082840312156138a057600080fd5b50919050565b6000606082840312156138b857600080fd5b61119f838361388e565b6000602082840312156138d457600080fd5b813567ffffffffffffffff8111156138eb57600080fd5b820160a0818503121561151157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160e0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b60405290565b60405160a0810167ffffffffffffffff8111828210171561394f5761394f6138fd565b6040805190810167ffffffffffffffff8111828210171561394f5761394f6138fd565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156139e2576139e26138fd565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f5757600080fd5b8035613a17816139ea565b919050565b600067ffffffffffffffff821115613a3657613a366138fd565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613a7357600080fd5b8135613a86613a8182613a1c565b61399b565b818152846020838601011115613a9b57600080fd5b816020850160208301376000918101602001919091529392505050565b600060e08284031215613aca57600080fd5b613ad261392c565b9050613add82613a0c565b8152613aeb60208301613a0c565b602082015260408201356040820152613b0660608301613a0c565b60608201526080820135608082015260a082013560a082015260c082013567ffffffffffffffff811115613b3957600080fd5b613b4584828501613a62565b60c08301525092915050565b60008060008385036080811215613b6757600080fd5b843567ffffffffffffffff80821115613b7f57600080fd5b613b8b88838901613ab8565b95506020870135915080821115613ba157600080fd5b50613bae87828801613ab8565b93505060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215613be157600080fd5b506040840190509250925092565b60005b83811015613c0a578181015183820152602001613bf2565b83811115611a295750506000910152565b60008151808452613c33816020860160208601613bef565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061119f6020830184613c1b565b600060208284031215613c8a57600080fd5b8135611511816139ea565b60006111a23683613ab8565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613cd657600080fd5b830160208101925035905067ffffffffffffffff811115613cf657600080fd5b803603831315613d0557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528335613d83816139ea565b811660408401526020840135613d98816139ea565b8181166060850152505060408301356080830152613db860608401613a0c565b73ffffffffffffffffffffffffffffffffffffffff811660a084015250608083013560c083015260a083013560e0830152613df660c0840184613ca1565b60e0610100850152613e0d61012085018284613d0c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015613e5857613e58613e17565b500390565b8035613e68816139ea565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a08101613ebf6020830185613e5d565b826080830152949350505050565b600067ffffffffffffffff821115613ee757613ee76138fd565b5060051b60200190565b600082601f830112613f0257600080fd5b81356020613f12613a8183613ecd565b82815260059290921b84018101918181019086841115613f3157600080fd5b8286015b84811015613f4c5780358352918301918301613f35565b509695505050505050565b600060a08236031215613f6957600080fd5b613f71613955565b8235613f7c816139ea565b8152602083810135818301526040840135613f96816139ea565b604083015260608481013590830152608084013567ffffffffffffffff80821115613fc057600080fd5b818601915060408236031215613fd557600080fd5b613fdd613978565b823582811115613fec57600080fd5b830136601f820112613ffd57600080fd5b803561400b613a8182613ecd565b81815260059190911b8201860190868101903683111561402a57600080fd5b8784015b83811015614062578035878111156140465760008081fd5b614054368b83890101613a62565b84525091880191880161402e565b508452505050828401358281111561407957600080fd5b61408536828601613ef1565b9482019490945260808501525091949350505050565b600073ffffffffffffffffffffffffffffffffffffffff80835116845280602084015116602085015260408301516040850152806060840151166060850152506080820151608084015260a082015160a084015260c082015160e060c08501526130c960e0850182613c1b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c9604083018461409b565b73ffffffffffffffffffffffffffffffffffffffff8516815260a06020820152600061416660a083018661409b565b8281036040840152614178818661409b565b915050823560608301526020830135608083015295945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082198211156141d7576141d7613e17565b500190565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016115116020830184613e5d565b60008351614218818460208801613bef565b83519083019061422c818360208801613bef565b01949350505050565b60208152600061119f602083018461409b565b600082825180855260208086019550808260051b84010181860160005b848110156142b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086840301895261429f838351613c1b565b98840198925090830190600101614265565b5090979650505050505050565b600081518084526020808501945080840160005b838110156142ee578151875295820195908201906001016142d2565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261433483880183614248565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261436f84836142be565b898103848b01528a51808252878c019550908701925060005b818110156143da5785518051855288810151898601528581015186860152898101518a8601528381015184860152878101518886015260c090810151908501529487019460e090930192600101614388565b50919c9b505050505050505050505050565b6000602082840312156143fe57600080fd5b815167ffffffffffffffff81111561441557600080fd5b8201601f8101841361442657600080fd5b8051614434613a8182613a1c565b81815285602083850101111561444957600080fd5b61445a826020830160208601613bef565b95945050505050565b60008183825b6002811015614488578151835260209283019290910190600101614469565b50505060408201905092915050565b60208152815160208201526000602083015160a060408401526144bd60c08401826142be565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526144f98383614248565b925060608601519150808584030160808601525061451782826142be565b915050608084015160a08401528091505092915050565b815160009082906020808601845b838110156145585781518552938201939082019060010161453c565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145cb576145cb613e17565b500290565b600082614606577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561461d57600080fd5b8151801515811461151157600080fd5b82815260008251614645816020850160208701613bef565b919091016020019392505050565b60008451614665818460208901613bef565b8201848152835161467d816020808501908801613bef565b0160200195945050505050565b60006020828403121561469c57600080fd5b5051919050565b6000602082840312156146b557600080fd5b8151611511816139ea565b604080825283519082018190526000906020906060840190828701845b8281101561470f57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016146dd565b50505083810382850152613e0d81866142be565b6000602080838503121561473657600080fd5b825167ffffffffffffffff81111561474d57600080fd5b8301601f8101851361475e57600080fd5b805161476c613a8182613ecd565b81815260059190911b8201830190838101908783111561478b57600080fd5b928401925b8284101561369157835182529284019290840190614790565b600181815b8085111561480257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156147e8576147e8613e17565b808516156147f557918102915b93841c93908002906147ae565b509250929050565b600082614819575060016111a2565b81614826575060006111a2565b816001811461483c576002811461484657614862565b60019150506111a2565b60ff84111561485757614857613e17565b50506001821b6111a2565b5060208310610133831016604e8410600b8410161715614885575081810a6111a2565b61488f83836147a9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156148c1576148c1613e17565b029392505050565b600061119f838361480a565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006130c960408301846142be565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061445a60608301846142be565b600061119f60ff84168361480a565b6000825161495a818460208701613bef565b919091019291505056fea2646970667358221220475790b2b2e0dc4826f6ea4f97361b5eddbe1fcd78bd9e5016a59079855d4d9664736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b50604051620050bc380380620050bc83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a05161501a620000a260003960006112c2015260006112e3015261501a6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063e6b626361161005b578063e6b62636146100e7578063e87b2352146100fa578063ea7cb3701461010d578063fc4b772d1461012257600080fd5b806325311e28146100825780634f26618714610097578063e0419ae3146100aa575b600080fd5b610095610090366004613d28565b610135565b005b6100956100a5366004613d7b565b61025f565b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100956100f5366004613d7b565b6103b3565b6100956101083660046140b8565b6104ad565b61011561129c565b6040516100de91906141cd565b6100956101303660046141e0565b6112bb565b6101426020820182614215565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146101db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4f574e455200000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006101ee6101e983614232565b611383565b60008181526001602052604090205490915061020a9060011490565b1561025b5760008181526001602052604080822091909155517f6c3699467706be5925b94206321bd22ef13067d7dcf1b580ffb22abd3959b3dd906102529033908590614355565b60405180910390a15b5050565b336000908152600260209081526040822090829061027f90850185614215565b73ffffffffffffffffffffffffffffffffffffffff168152602080820192909252604090810160009081208584013582529092528082205492506102c690840135836113d2565b90506102d281836144a6565b336000908152600260209081526040822091906102f190870187614215565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600085602001358152602001908152602001600020819055507f2538ccc7ad2a119a36f2e65c1e2fc908beef800cd59b5d6680db24de18e7847a338483604051610377939291906144f5565b60405180910390a16103ae33826103916020870187614215565b73ffffffffffffffffffffffffffffffffffffffff1691906113ec565b505050565b336000908152600260209081526040808320908401359290916103d890850185614215565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836020013581526020019081526020016000206000828254610436919061452d565b90915550506040517fadc7bd964a04a8a02261d33d2d09c6a7d9f539bc5eab77008e85fc6661ef12319061046d9033908490614545565b60405180910390a16104aa3330604084013561048c6020860186614215565b73ffffffffffffffffffffffffffffffffffffffff169291906114c0565b50565b60006104b884611383565b905060006104c584611383565b905083602001518360400135815181106104e1576104e161456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16856040015184602001358151811061051d5761051d61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff16146105a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b6020850151805184359081106105be576105be61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1684604001518460600135815181106105fa576105fa61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1614610683576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f544f4b454e5f4d49534d4154434800000000000000000000000000000000000060448201526064016101d2565b60008281526001602052604090205461069c9060011490565b610702576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f415f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b60008181526001602052604090205461071b9060011490565b610781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f425f4e4f545f4c4956450000000000000000000000000000000000000000000060448201526064016101d2565b6107ac6040518060800160405280600081526020016000815260200160008152602001600081525090565b6000806000807facbb15f57ab3ca81ed831c6405c26e41f3248dd68091bf194a9910873ebe679b338b8b8b6040516107e7949392919061466a565b60405180910390a16108216040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61082e8b60800151611524565b905061087261086a60405180604001604052808b81526020018d6000015173ffffffffffffffffffffffffffffffffffffffff16815250611690565b826000611713565b5080602001516001826000015103815181106108905761089061456f565b6020026020010151945080602001516002826000015103815181106108b7576108b761456f565b602002602001015192506108ce8a60800151611524565b905061090a61086a60405180604001604052808a81526020018e6000015173ffffffffffffffffffffffffffffffffffffffff16815250611690565b5080602001516001826000015103815181106109285761092861456f565b60200260200101519350806020015160028260000151038151811061094f5761094f61456f565b6020026020010151915050610a48600260008c6000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c604001518b60200135815181106109bc576109bc61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008c604001518b6020013581518110610a1e57610a1e61456f565b602002602001015160200151815260200190815260200160002054836113d290919063ffffffff16565b895173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040808220908c01518051939550610b1f9391929160608d0135908110610a9357610a9361456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008b604001518b6060013581518110610af557610af561456f565b602002602001015160200151815260200190815260200160002054826113d290919063ffffffff16565b9050610b35610b2e82856119e6565b83906113d2565b8552610b4b610b4483866119e6565b82906113d2565b60208601528451151580610b63575060008560200151115b610bc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f434c4541520000000000000000000000000000000000000000000000000060448201526064016101d2565b8451610bd590856119e6565b60408601526020850151610be990846119e6565b606086015250508251159150610d5c9050578051865173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040808320908a01518051919392909190890135908110610c4457610c4461456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860400151876020013581518110610ca657610ca661456f565b60200260200101516020015181526020019081526020016000206000828254610ccf91906144a6565b9091555050606086015160011615610d0757805160008481526003602052604081208054909190610d0190849061452d565b90915550505b606086015160021615610d5c5780516000848152600460209081526040808320895173ffffffffffffffffffffffffffffffffffffffff16845290915281208054909190610d5690849061452d565b90915550505b602081015115610eec57806020015160026000876000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760400151876060013581518110610dca57610dca61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760400151876060013581518110610e2c57610e2c61456f565b60200260200101516020015181526020019081526020016000206000828254610e5591906144a6565b9091555050606085015160011615610e94578060200151600360008481526020019081526020016000206000828254610e8e919061452d565b90915550505b606085015160021615610eec5760208082015160008481526004835260408082208a5173ffffffffffffffffffffffffffffffffffffffff168352909352918220805491929091610ee690849061452d565b90915550505b604081015115610fce57604080820151875173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529281209289015180519293928835908110610f3d57610f3d61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860200151876000013581518110610f9f57610f9f61456f565b60200260200101516020015181526020019081526020016000206000828254610fc8919061452d565b90915550505b6060810151156110cd57806060015160026000876000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876020015187604001358151811061103c5761103c61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876020015187604001358151811061109e5761109e61456f565b602002602001015160200151815260200190815260200160002060008282546110c7919061452d565b90915550505b606081015181516000916110e0916144a6565b90506000826040015183602001516110f891906144a6565b9050811561119e57336000908152600260209081526040808320908b01518051869492938b013590811061112e5761112e61456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000886080013581526020019081526020016000206000828254611198919061452d565b90915550505b801561124257336000908152600260205260408082209089015180518493919060608b01359081106111d2576111d261456f565b60200260200101516000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008860a001358152602001908152602001600020600082825461123c919061452d565b90915550505b505060408051825181526020808401519082015282820151818301526060808401519082015290517f3e673c18070310617c4b157f17e875bbc59a81b0f5107d346dfed8775de6f0f79181900360800190a1505050505050565b60606112b66112b16112ac611a05565b611aa6565b611cc7565b905090565b60006113107f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000061130b8561474f565b611d06565b9050600061131d82611383565b6000818152600160205260409020549091506103ae5760008181526001602081905260409182902055517f39fe749efac6246708215e0335d6b2f4787e4d05f4fb80dd080d8f04103effa59061137690339085906148a0565b60405180910390a1505050565b60008160405160200161139691906148cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b60008183106113e157816113e3565b825b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526103ae9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f18565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261151e9085907f23b872dd000000000000000000000000000000000000000000000000000000009060840161143e565b50505050565b6115566040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6115886040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff8111156115bc576115bc613d97565b6040519080825280602002602001820160405280156115e5578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff81111561161c5761161c613d97565b604051908082528060200260200182016040528015611645578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561167f578160208202602001840152815160200182019150600181019050611658565b505060408501525091949350505050565b60408051600280825260608083018452926020830190803683370190505090508160000151816000815181106116c8576116c861456f565b602002602001018181525050816020015173ffffffffffffffffffffffffffffffffffffffff16816001815181106117025761170261456f565b602002602001018181525050919050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b848910156119cc576003890198508886015180601f1a975061ffff8160081c169850506006881015611944578761179657866020028401518252602082019150611957565b60018814156117b357602087028301518252602082019150611957565b600288141561183d578c518710611826576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016101d2565b866020026020018d01518252602082019150611957565b60038814156118855760006118736040805180820182526000808252602091820181905282518084019093528083529082015290565b51880154835250602090910190611957565b60048814156118a15761189a8d8d848a612024565b9150611957565b6060876118cf578c6040516020016118b99190614988565b604051602081830303815290604052905061192e565b60018814156118e8576118e18d612191565b905061192e565b6002881415611904576020808e01516040516118b99201614a1f565b600388141561192e578c516040805160208101929092520160405160208183030381529060405290505b80511561193e5761193e816122ce565b50611957565b87611953888463ffffffff8416565b9250505b60208c0151518c5111156119c7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016101d2565b611751565b6020838303048c52509750505050505050505b9392505050565b6000670de0b6b3a76400006119fb8385614a84565b6113e39190614ac1565b6040805160028082526060828101909352816020015b613d1e815260200190600190039081611a1b57905050905061235d81600081518110611a4957611a4961456f565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505061239881600181518110611a8157611a8161456f565b602002602001019067ffffffffffffffff16908167ffffffffffffffff168152505090565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261241c60e0840181905261251061010085015261259c6101208501526126bd61014085015261016084015261276661018084015261286e6101a08401526129426101c0840152612b3f6101e0840152612b4a610200840152612b55610220840152612b60610240840152612b6b610260840152612b9f610280840152612c056102a0840152612c6b6102c0840152612c9f6102e0840152612cd3610300840152612d08610320840152612d63610340840152612db9610360840152612de2610380840152612e396103a0840152612e666103c0840152612ebd6103e0840152612f28610400840152612f85610420840152612fc3610440840152612ffc6104608401526130306104808401526130626104a08401526130946104c08401526130c66104e08401526130fa61050084015261314c6105208401526131856105408401526132376105608401526133646105808401526133c06105a084015261347a6105c0840152835190850201909252919082815b83811015611cbe57858181518110611c7d57611c7d61456f565b6020026020010151856028600601830181518110611c9d57611c9d61456f565b67ffffffffffffffff90921660209283029190910190910152600101611c63565b50505050919050565b60606020820182516020028101600284015b81831015611cf65782518151178152602090920191600201611cd9565b5050825160020283525090919050565b611d4e6040518060a00160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001606081526020016060815260200160008152602001606081525090565b611d876040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b611de16040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081611da85790505090508181600081518110611e0a57611e0a61456f565b60200260200101819052506040518060a001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018560000151815260200185602001518152602001611e618660400151600001516134f6565b81526020018773ffffffffffffffffffffffffffffffffffffffff1663aa9628a1888860400151866040518463ffffffff1660e01b8152600401611ea793929190614afc565b6000604051808303816000875af1158015611ec6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611f0c9190810190614be4565b90529695505050505050565b6000611f7a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166135a39092919063ffffffff16565b8051909150156103ae5780806020019051810190611f989190614c52565b6103ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016101d2565b600060078216600383811c1682808261206357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506101006120ae565b826001141561208757506fffffffffffffffffffffffffffffffff905060806120ae565b82600214156120a3575067ffffffffffffffff905060406120ae565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff8111156120d1576120d1613d97565b6040519080825280602002602001820160405280156120fa578160200160208202803683370190505b50905060208082019083028a03815b8b821015612121578151815260209182019101612109565b505060608b015160808c015160209081029091010160005b61010081101561217f5760208502830182845b82811015612168578051841c8a1682526020918201910161214c565b5050506121768e8e8b611713565b9b508501612139565b50999c9b505050505050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016121dd9190614a1f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526122199291602001614c74565b604051602081830303815290604052905060005b8560400151518110156122c55781866040015182815181106122515761225161456f565b60200260200101515160001b876040015183815181106122735761227361456f565b602002602001015160405160200161228d93929190614c9a565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161222d565b50949350505050565b6104aa816040516024016122e291906141cd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f56000000000000000000000000000000000000000000000000000000001790526135ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000908152600360205260409020549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051600093845260046020908152604080862073ffffffffffffffffffffffffffffffffffffffff9093168652919052909220549052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156124df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125039190614cd1565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561256c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125909190614cd1565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561268b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126af9190614cd1565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016124c2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284b9190614cea565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161266e565b60008060008467ffffffffffffffff81111561296057612960613d97565b604051908082528060200260200182016040528015612989578160200160208202803683370190505b50905060008567ffffffffffffffff8111156129a7576129a7613d97565b6040519080825280602002602001820160405280156129d0578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612a25578251815260209283019201612a0d565b5050602088028101602084015b81831015612a4a578251815260209283019201612a32565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612aa49087908790600401614d07565b600060405180830381865afa158015612ac1573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612b079190810190614d74565b9050846020820160208a0281015b80821015612b30578151835260209283019290910190612b15565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261259082876135db565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361250382612bff858a6135db565b9061365c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180519092600092918361250382612c65858a6135db565b906119e6565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101805160009190826125908287613671565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261259082876136bc565b6000602083028203805b83811015612cfd5780518015612cf4578252612cfd565b50602001612cdd565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015612cfd578051612dda5760008252612cfd565b602001612dc3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015612efb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612f1a57508051602090910190612f13838261371a565b9250612ecd565b505081526020019392505050565b6020828102820380516000928201835b8582108015612f6657507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15612f1a57508051602090910190612f7e8382613755565b9250612f38565b6020828102820380516000928201835b8582108015612fa45750826000105b15612f1a57508051602090910190612fbc8382613784565b9250612f95565b600060208302820380516000602083015b85811015612f1a5780518301915082821015612fef57600080fd5b9091508190602001612fd4565b600060208302820380516000602083015b85811015612f1a57805191508161302357600080fd5b918190049160200161300d565b6020828102820380516000928201835b85821015612f1a5750805160209091019061305b8184614f1a565b9250613040565b6020828102820380516000928201835b85821015612f1a5750805182811115613089578092505b602082019150613072565b6020828102820380516000928201835b85821015612f1a57508051828110156130bb578092505b6020820191506130a4565b600060208302820380516000602083015b85811015612f1a5780519150816130ed57600080fd5b91819006916020016130d7565b60006020830282038051600080602084015b8681101561313d57831561313557805192508284029150828483041461313157600080fd5b8193505b60200161310c565b50505081526020019392505050565b600060208302820380516000602083015b85811015612f1a578051830391508282111561317857600080fd5b909150819060200161315d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061266e9086908690600401614f26565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b9061331090879087908790600401614f55565b602060405180830381865afa15801561332d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133519190614cd1565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201805190926000929183612503838361379a565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156133ee576133ee613d97565b604051908082528060200260200182016040528015613417578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561345357815181602001860152602082019150602081019050613431565b50505190506000613466838389896137f9565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856134e785858585613949565b90955250949695505050505050565b6000602e602f600160026003855b87518110156135985760008882815181106135215761352161456f565b60200260200101519050600060018201825181015b80821015613588578151601f1a9250898310156135525761357d565b8983141561355f57998717995b8883141561356c57998617995b858b141561357d578b519450613588565b600282019150613536565b5050600190920191506135049050565b505050505050919050565b60606135b284846000856139ef565b949350505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60008082601214156135f057839150506113e6565b826012111561361c5750601282900361360a81600a614f1a565b6136149085614a84565b9150506113e6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161364b81600a614f1a565b6136149085614ac1565b5092915050565b6000816119fb670de0b6b3a764000085614a84565b600081810b6136815750816113e6565b60008260000b13156136a95761369882600a614f8a565b6136a29084614a84565b90506113e6565b60ff60008390031661364b81600a614f1a565b60008060128314156136d157839150506113e6565b82601211156136eb5750601282900361364b81600a614f1a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161360a81600a614f1a565b600082820183811061372c57806135b2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613764575060006113e6565b8282028284828161377757613777614a55565b04141561372c57806135b2565b60008183116137945760006113e3565b50900390565b60008060015b600881116137f15760006137b48683613b85565b905060006137c28684613b85565b905060006137d08383613784565b90506137e0856001860383613c32565b945050600190920191506137a09050565b509392505050565b835160009081908190819060015b6008811161393b5760009250828761384057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613844565b5060005b60005b838110156138f9576138728c82815181106138645761386461456f565b602002602001015184613b85565b95508a86116138c457886138915761388a86836113d2565b91506138bb565b60018914156138a45761388a8683613cbb565b6002891480156138b2575084155b156138bb578591505b600194506138f1565b896138f1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91506138f9565b600101613847565b508361392257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b613930866001840383613c32565b955050600101613807565b509298975050505050505050565b60008260088111156139b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b6000855b858110156139e35763ffffffff6020820290811b199890981685891b179791506001016139bb565b50959695505050505050565b606082471015613a81576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016101d2565b73ffffffffffffffffffffffffffffffffffffffff85163b613aff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016101d2565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613b289190614f99565b60006040518083038185875af1925050503d8060008114613b65576040519150601f19603f3d011682016040523d82523d6000602084013e613b6a565b606091505b5091509150613b7a828286613ccb565b979650505050505050565b6000816008811115613bf3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b82613c015760009150613655565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115613ca0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101d2565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156113e157816113e3565b60608315613cda5750816119df565b825115613cea5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101d291906141cd565b613d26614fb5565b565b600060208284031215613d3a57600080fd5b813567ffffffffffffffff811115613d5157600080fd5b820160a081850312156119df57600080fd5b600060608284031215613d7557600080fd5b50919050565b600060608284031215613d8d57600080fd5b6113e38383613d63565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613de957613de9613d97565b60405290565b60405160a0810167ffffffffffffffff81118282101715613de957613de9613d97565b6040516060810167ffffffffffffffff81118282101715613de957613de9613d97565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613e7c57613e7c613d97565b604052919050565b73ffffffffffffffffffffffffffffffffffffffff811681146104aa57600080fd5b8035613eb181613e84565b919050565b600067ffffffffffffffff821115613ed057613ed0613d97565b5060051b60200190565b600082601f830112613eeb57600080fd5b81356020613f00613efb83613eb6565b613e35565b82815260069290921b84018101918181019086841115613f1f57600080fd5b8286015b84811015613f675760408189031215613f3c5760008081fd5b613f44613dc6565b8135613f4f81613e84565b81528185013585820152835291830191604001613f23565b509695505050505050565b600067ffffffffffffffff821115613f8c57613f8c613d97565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613fc957600080fd5b8135613fd7613efb82613f72565b818152846020838601011115613fec57600080fd5b816020850160208301376000918101602001919091529392505050565b600060a0828403121561401b57600080fd5b614023613def565b905061402e82613ea6565b8152602082013567ffffffffffffffff8082111561404b57600080fd5b61405785838601613eda565b6020840152604084013591508082111561407057600080fd5b61407c85838601613eda565b604084015260608401356060840152608084013591508082111561409f57600080fd5b506140ac84828501613fb8565b60808301525092915050565b60008060008385036101008112156140cf57600080fd5b843567ffffffffffffffff808211156140e757600080fd5b6140f388838901614009565b9550602087013591508082111561410957600080fd5b5061411687828801614009565b93505060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561414957600080fd5b506040840190509250925092565b60005b8381101561417257818101518382015260200161415a565b8381111561151e5750506000910152565b6000815180845261419b816020860160208601614157565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006113e36020830184614183565b6000602082840312156141f257600080fd5b813567ffffffffffffffff81111561420957600080fd5b6135b284828501613d63565b60006020828403121561422757600080fd5b81356119df81613e84565b60006113e63683614009565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261427357600080fd5b830160208101925035905067ffffffffffffffff81111561429357600080fd5b8060061b36038313156142a557600080fd5b9250929050565b8183526000602080850194508260005b858110156143015781356142cf81613e84565b73ffffffffffffffffffffffffffffffffffffffff1687528183013583880152604096870196909101906001016142bc565b509495945050505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152833561438381613e84565b166040830152614396602084018461423e565b60a060608501526143ab60e0850182846142ac565b9150506143bb604085018561423e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0808685030160808701526143f18483856142ac565b9350606087013560a0870152608087013592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe187360301831261443457600080fd5b918601918235915067ffffffffffffffff82111561445157600080fd5b81360387131561446057600080fd5b8584030160c0860152613b7a83826020850161430c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156144b8576144b8614477565b500390565b80356144c881613e84565b73ffffffffffffffffffffffffffffffffffffffff16825260208181013590830152604090810135910152565b73ffffffffffffffffffffffffffffffffffffffff8416815260a0810161451f60208301856144bd565b826080830152949350505050565b6000821982111561454057614540614477565b500190565b73ffffffffffffffffffffffffffffffffffffffff83168152608081016119df60208301846144bd565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081518084526020808501945080840160005b83811015614301578151805173ffffffffffffffffffffffffffffffffffffffff16885283015183880152604090960195908201906001016145b2565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160a0602085015261462460a085018261459e565b90506040830151848203604086015261463d828261459e565b91505060608301516060850152608083015184820360808601526146618282614183565b95945050505050565b600061012073ffffffffffffffffffffffffffffffffffffffff8716835280602084015261469a818401876145ef565b905082810360408401526146ae81866145ef565b9150508235606083015260208301356080830152604083013560a0830152606083013560c0830152608083013560e083015260a083013561010083015295945050505050565b600082601f83011261470557600080fd5b81356020614715613efb83613eb6565b82815260059290921b8401810191818101908684111561473457600080fd5b8286015b84811015613f675780358352918301918301614738565b60006060823603121561476157600080fd5b614769613e12565b823567ffffffffffffffff8082111561478157600080fd5b61478d36838701613eda565b83526020915081850135818111156147a457600080fd5b6147b036828801613eda565b83850152506040850135818111156147c757600080fd5b850160403682900312156147da57600080fd5b6147e2613dc6565b8135838111156147f157600080fd5b820136601f82011261480257600080fd5b8035614810613efb82613eb6565b81815260059190911b8201860190868101903683111561482f57600080fd5b8784015b838110156148675780358881111561484b5760008081fd5b614859368b83890101613fb8565b845250918801918801614833565b508452505050818401358381111561487e57600080fd5b61488a368285016146f4565b9482019490945260408501525091949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135b260408301846145ef565b6020815260006113e360208301846145ef565b600081518084526020808501945080840160005b83811015614301578151875295820195908201906001016148f6565b600082825180855260208086019550808260051b84010181860160005b8481101561497b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0868403018952614969838351614183565b9884019892509083019060010161492f565b5090979650505050505050565b60208152815160208201526000602083015160a060408401526149ae60c08401826148e2565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526149ea8383614912565b9250606086015191508085840301608086015250614a0882826148e2565b915050608084015160a08401528091505092915050565b815160009082906020808601845b83811015614a4957815185529382019390820190600101614a2d565b50929695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614abc57614abc614477565b500290565b600082614af7577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a0865160408085880152614b3783880183614912565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a0152614b7284836148e2565b898103848b01528a51808252878c019550908701925060005b81811015614bd25785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c090930192600101614b8b565b50919c9b505050505050505050505050565b600060208284031215614bf657600080fd5b815167ffffffffffffffff811115614c0d57600080fd5b8201601f81018413614c1e57600080fd5b8051614c2c613efb82613f72565b818152856020838501011115614c4157600080fd5b614661826020830160208601614157565b600060208284031215614c6457600080fd5b815180151581146119df57600080fd5b82815260008251614c8c816020850160208701614157565b919091016020019392505050565b60008451614cac818460208901614157565b82018481528351614cc4816020808501908801614157565b0160200195945050505050565b600060208284031215614ce357600080fd5b5051919050565b600060208284031215614cfc57600080fd5b81516119df81613e84565b604080825283519082018190526000906020906060840190828701845b82811015614d5657815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101614d24565b50505083810382850152614d6a81866148e2565b9695505050505050565b60006020808385031215614d8757600080fd5b825167ffffffffffffffff811115614d9e57600080fd5b8301601f81018513614daf57600080fd5b8051614dbd613efb82613eb6565b81815260059190911b82018301908381019087831115614ddc57600080fd5b928401925b82841015613b7a57835182529284019290840190614de1565b600181815b80851115614e5357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614e3957614e39614477565b80851615614e4657918102915b93841c9390800290614dff565b509250929050565b600082614e6a575060016113e6565b81614e77575060006113e6565b8160018114614e8d5760028114614e9757614eb3565b60019150506113e6565b60ff841115614ea857614ea8614477565b50506001821b6113e6565b5060208310610133831016604e8410600b8410161715614ed6575081810a6113e6565b614ee08383614dfa565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115614f1257614f12614477565b029392505050565b60006113e38383614e5b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006135b260408301846148e2565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061466160608301846148e2565b60006113e360ff841683614e5b565b60008251614fab818460208701614157565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052605160045260246000fdfea2646970667358221220c1d9279524d39e815ff5a69888b6e40e849ab5157442ba3ceaabeb3d6fa4ec2364736f6c634300080a0033"; type OrderBookConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Ownable__factory.ts b/src/typechain/factories/Ownable__factory.ts new file mode 100644 index 0000000..df0453a --- /dev/null +++ b/src/typechain/factories/Ownable__factory.ts @@ -0,0 +1,75 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import { Provider } from "@ethersproject/providers"; +import type { Ownable, OwnableInterface } from "../Ownable"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +export class Ownable__factory { + static readonly abi = _abi; + static createInterface(): OwnableInterface { + return new utils.Interface(_abi) as OwnableInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): Ownable { + return new Contract(address, _abi, signerOrProvider) as Ownable; + } +} diff --git a/src/typechain/factories/RainVM__factory.ts b/src/typechain/factories/RainVM__factory.ts index 254f691..2d22479 100644 --- a/src/typechain/factories/RainVM__factory.ts +++ b/src/typechain/factories/RainVM__factory.ts @@ -9,11 +9,11 @@ import type { RainVM, RainVMInterface } from "../RainVM"; const _abi = [ { inputs: [], - name: "fnPtrs", + name: "packedFunctionPointers", outputs: [ { internalType: "bytes", - name: "", + name: "ptrs_", type: "bytes", }, ], diff --git a/src/typechain/factories/RandomTest__factory.ts b/src/typechain/factories/RandomTest__factory.ts index 33209da..1db61b2 100644 --- a/src/typechain/factories/RandomTest__factory.ts +++ b/src/typechain/factories/RandomTest__factory.ts @@ -144,7 +144,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610d1e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806361d4ba9b1161005057806361d4ba9b146100b25780638f1ea97f146100c5578063bffa7fe8146100d857600080fd5b80631715b9ee1461006c57806329fa6d0214610092575b600080fd5b61007f61007a366004610a22565b61011d565b6040519081526020015b60405180910390f35b6100a56100a0366004610a4e565b610132565b6040516100899190610ae6565b61007f6100c0366004610a4e565b61025e565b61007f6100d3366004610af9565b610305565b6000546100f89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610089565b600061012a848484610429565b949350505050565b606060005a905061014384846105e6565b915060005a90506101aa6040518060400160405280601a81526020017f73687566666c652067617320757365643a2025732025732025730000000000008152508583856101909190610b41565b8761019b8688610b41565b6101a59190610b58565b6106e0565b6101b8565b60405180910390fd5b5a91506101c48361077b565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790555a90506102566040518060400160405280601481526020017f73746f726167652067617320757365643a20257300000000000000000000000081525082846102519190610b41565b610806565b505092915050565b60026001556000805a905061027d848460009182526020526040902090565b915060005a90506102c36040518060400160405280600d81526020017f72616e646f6d2069643a2025730000000000000000000000000000000000000081525084610806565b60408051808201909152600e81527f72616e646f6d206761733a2025730000000000000000000000000000000000006020820152610256906102518385610b41565b600180556000805a60005490915073ffffffffffffffffffffffffffffffffffffffff16610333818561089b565b925060005a90506103796040518060400160405280600e81526020017f73687566666c652069643a20257300000000000000000000000000000000000081525085610806565b60408051808201909152601581527f73687566666c6520696e646578206761733a202573000000000000000000000060208201526103bb906102518386610b41565b60006103c8866001610b93565b90505a93506103d7838261089b565b505a91506104206040518060400160405280601781526020017f73687566666c6520696e6465782067617320323a20257300000000000000000081525083866102519190610b41565b50505050919050565b6000828210610494576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4d41585f4e00000000000000000000000000000000000000000000000000000060448201526064016101af565b60ff8311156104ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4d41585f4d41580000000000000000000000000000000000000000000000000060448201526064016101af565b60008367ffffffffffffffff81111561051a5761051a610bab565b6040519080825280601f01601f191660200182016040528015610544576020820181803683370190505b509050610561565b8082015160ff168061055b5750815b92915050565b846000526020810160018201600186035b858111156105bf57610584818361054c565b60206000908120908190526001830190068401537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610572565b5060206000908120908190526105db906001870190068261054c565b979650505050505050565b60608160020267ffffffffffffffff81111561060457610604610bab565b6040519080825280601f01601f19166020018201604052801561062e576020820181803683370190505b50905082600052600281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff600185035b80156106d65760028102840180518381168061067b5750825b602060002080600052600185018106905060028102880180518781168061069f5750825b948916909417909452509085161790527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610662565b5050505092915050565b610775848484846040516024016106fa9493929190610bda565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f08ee5666000000000000000000000000000000000000000000000000000000001790526108c5565b50505050565b6000806107a6836040516020016107929190610c09565b6040516020818303038152906040526108e6565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610800576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b610897828260405160240161081c929190610c2f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d0000000000000000000000000000000000000000000000000000000001790526108c5565b5050565b60008082600202905060006108b4858384600201610912565b6002015161ffff1695945050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60608151826040516020016108fc929190610c51565b6040516020818303038152906040529050919050565b606061012a84610923856001610b93565b61092e856001610b93565b61093a565b9392505050565b6060833b80610959575050604080516020810190915260008152610933565b80841115610977575050604080516020810190915260008152610933565b838310156109c2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016101af565b83830384820360008282106109d757826109d9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600080600060608486031215610a3757600080fd5b505081359360208301359350604090920135919050565b60008060408385031215610a6157600080fd5b50508035926020909101359150565b60005b83811015610a8b578181015183820152602001610a73565b838111156107755750506000910152565b60008151808452610ab4816020860160208601610a70565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109336020830184610a9c565b600060208284031215610b0b57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015610b5357610b53610b12565b500390565b600082610b8e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610ba657610ba6610b12565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b608081526000610bed6080830187610a9c565b6020830195909552506040810192909252606090910152919050565b6000815260008251610c22816001850160208701610a70565b9190910160010192915050565b604081526000610c426040830185610a9c565b90508260208301529392505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251610cda81600e850160208701610a70565b91909101600e01939250505056fea2646970667358221220d9d210a39ffb04403e87db3d26c02898ac4dcfdee4d08cafa650d02bf29bd71c64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506108e4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806361d4ba9b1161005057806361d4ba9b146100b25780638f1ea97f146100c5578063bffa7fe8146100d857600080fd5b80631715b9ee1461006c57806329fa6d0214610092575b600080fd5b61007f61007a36600461069b565b61011d565b6040519081526020015b60405180910390f35b6100a56100a03660046106c7565b610132565b6040516100899190610719565b61007f6100c03660046106c7565b610194565b61007f6100d336600461076a565b6101af565b6000546100f89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610089565b600061012a8484846101fa565b949350505050565b606061013e83836103bc565b9050610149816104b6565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905592915050565b600260015560008281526020829052604081205b9392505050565b600180556000805473ffffffffffffffffffffffffffffffffffffffff166101d78184610541565b915060006101e6846001610783565b90506101f28282610541565b505050919050565b600082821061026a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f4d41585f4e00000000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60ff8311156102d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4d41585f4d4158000000000000000000000000000000000000000000000000006044820152606401610261565b60008367ffffffffffffffff8111156102f0576102f06107c2565b6040519080825280601f01601f19166020018201604052801561031a576020820181803683370190505b509050610337565b8082015160ff16806103315750815b92915050565b846000526020810160018201600186035b858111156103955761035a8183610322565b60206000908120908190526001830190068401537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610348565b5060206000908120908190526103b19060018701900682610322565b979650505050505050565b60608160020267ffffffffffffffff8111156103da576103da6107c2565b6040519080825280601f01601f191660200182016040528015610404576020820181803683370190505b50905082600052600281017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000061ffff600185035b80156104ac576002810284018051838116806104515750825b60206000208060005260018501810690506002810288018051878116806104755750825b948916909417909452509085161790527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610438565b5050505092915050565b6000806104e1836040516020016104cd91906107f1565b60405160208183030381529060405261056b565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff821661053b576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b600080826002029050600061055a858384600201610597565b6002015161ffff1695945050505050565b6060815182604051602001610581929190610817565b6040516020818303038152906040529050919050565b606061012a846105a8856001610783565b6105b3856001610783565b6060833b806105d25750506040805160208101909152600081526101a8565b808411156105f05750506040805160208101909152600081526101a8565b8383101561063b576040517f2c4a89fa000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260448101849052606401610261565b83830384820360008282106106505782610652565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6000806000606084860312156106b057600080fd5b505081359360208301359350604090920135919050565b600080604083850312156106da57600080fd5b50508035926020909101359150565b60005b838110156107045781810151838201526020016106ec565b83811115610713576000848401525b50505050565b60208152600082518060208401526107388160408501602087016106e9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60006020828403121561077c57600080fd5b5035919050565b600082198211156107bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081526000825161080a8160018501602087016106e9565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516108a081600e8501602087016106e9565b91909101600e01939250505056fea2646970667358221220893685f6df8d6e94b160beea64ac68419db7a3c23c4a13cee395378d2b3e414364736f6c634300080a0033"; type RandomTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReadWriteTier__factory.ts b/src/typechain/factories/ReadWriteTier__factory.ts index ccf243b..31a979c 100644 --- a/src/typechain/factories/ReadWriteTier__factory.ts +++ b/src/typechain/factories/ReadWriteTier__factory.ts @@ -35,9 +35,9 @@ const _abi = [ }, { indexed: false, - internalType: "bytes", - name: "data", - type: "bytes", + internalType: "uint256[]", + name: "context", + type: "uint256[]", }, ], name: "TierChange", @@ -81,7 +81,7 @@ const _abi = [ }, { internalType: "uint256[]", - name: "", + name: "context_", type: "uint256[]", }, ], @@ -133,9 +133,9 @@ const _abi = [ type: "uint256", }, { - internalType: "bytes", - name: "data_", - type: "bytes", + internalType: "uint256[]", + name: "context_", + type: "uint256[]", }, ], name: "setTier", @@ -310,7 +310,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610af3806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806388d6860411610076578063c29df2461161005b578063c29df2461461016d578063caa0eb3b14610180578063f0ef511b1461019357600080fd5b806388d68604146101455780638a200fff1461015857600080fd5b80633907cb42116100a75780633907cb421461010c578063696dd6c01461011f578063787752041461013257600080fd5b806301ffc9a7146100c357806318cc4ccb146100eb575b600080fd5b6100d66100d136600461072c565b6101a6565b60405190151581526020015b60405180910390f35b6100fe6100f936600461076e565b61023f565b6040519081526020016100e2565b6100fe61011a36600461079a565b610254565b6100fe61012d3660046107cc565b61026b565b6100fe6101403660046107cc565b61027e565b6100fe610153366004610846565b61028a565b61016b610166366004610935565b610304565b005b6100fe61017b36600461079a565b610411565b6100fe61018e3660046109bc565b61041f565b6100fe6101a13660046107cc565b61044f565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061023957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061024c84848461045b565b949350505050565b6000610262858585856104e4565b95945050505050565b60006102778383610508565b9392505050565b60006102778383610535565b73ffffffffffffffffffffffffffffffffffffffff82166000908152602081905260408120546102da577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610277565b505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60008311610373576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60606000610381868361028a565b9050600061038f8242610508565b905061039d828288426104e4565b73ffffffffffffffffffffffffffffffffffffffff88166000908152602081905260409081902091909155517f38a6eea2baad9b582cfacaee65ba01dcf8fa591a082e5188dbf89cd8560228c8906104009033908a9085908b908b908b90610a37565b60405180910390a150505050505050565b6000610262858585856105d9565b73ffffffffffffffffffffffffffffffffffffffff8416600090815260208190526040812054610262908561067f565b6000610277838361067f565b60008260088111156104c9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b505063ffffffff602090920291821b199290921691901b1790565b60008383106104fe576104f9858585856105d9565b610262565b6102628584610535565b60005b600881101561023957818160200284901c63ffffffff16111561052d57610239565b60010161050b565b60008160088111156105a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b6000855b858110156106735763ffffffff6020820290811b199890981685891b1797915060010161064b565b50959695505050505050565b60008160088111156106ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161036a565b826106fb57600091506105d2565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60006020828403121561073e57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461027757600080fd5b60008060006060848603121561078357600080fd5b505081359360208301359350604090920135919050565b600080600080608085870312156107b057600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156107df57600080fd5b50508035926020909101359150565b803573ffffffffffffffffffffffffffffffffffffffff8116811461081257600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561085957600080fd5b610862836107ee565b915060208084013567ffffffffffffffff8082111561088057600080fd5b818601915086601f83011261089457600080fd5b8135818111156108a6576108a6610817565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156108e9576108e9610817565b60405291825284820192508381018501918983111561090757600080fd5b938501935b828510156109255784358452938501939285019261090c565b8096505050505050509250929050565b6000806000806060858703121561094b57600080fd5b610954856107ee565b935060208501359250604085013567ffffffffffffffff8082111561097857600080fd5b818701915087601f83011261098c57600080fd5b81358181111561099b57600080fd5b8860208285010111156109ad57600080fd5b95989497505060200194505050565b600080600080606085870312156109d257600080fd5b6109db856107ee565b935060208501359250604085013567ffffffffffffffff808211156109ff57600080fd5b818701915087601f830112610a1357600080fd5b813581811115610a2257600080fd5b8860208260051b85010111156109ad57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a0830152828460c0840137600060c0848401015260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f850116830101905097965050505050505056fea264697066735822122086ffef90cc521a17b7984de5c0bde02eea46f98f73346963309d9478547c8e7e64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506109b2806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80637877520411610076578063c29df2461161005b578063c29df2461461016d578063caa0eb3b14610180578063f0ef511b1461019357600080fd5b8063787752041461014757806388d686041461015a57600080fd5b80632633d728116100a75780632633d7281461010c5780633907cb4214610121578063696dd6c01461013457600080fd5b806301ffc9a7146100c357806318cc4ccb146100eb575b600080fd5b6100d66100d136600461070d565b6101a6565b60405190151581526020015b60405180910390f35b6100fe6100f936600461074f565b61023f565b6040519081526020016100e2565b61011f61011a3660046107f0565b610254565b005b6100fe61012f36600461084a565b61035f565b6100fe61014236600461087c565b610376565b6100fe61015536600461087c565b610389565b6100fe61016836600461089e565b610395565b6100fe61017b36600461084a565b610410565b6100fe61018e3660046107f0565b61041e565b6100fe6101a136600461087c565b610434565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061023957507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600061024c848484610440565b949350505050565b600083116102c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5345545f5a45524f5f544945520000000000000000000000000000000000000060448201526064015b60405180910390fd5b60006102d0858484610395565b905060006102de82426104c9565b90506102ec828287426104f6565b73ffffffffffffffffffffffffffffffffffffffff87166000908152602081905260409081902091909155517f52b8983f2abd24802238c48c935834c5b55bf103d696008c516012af2e50e4279061034f903390899085908a908a908a906108f1565b60405180910390a1505050505050565b600061036d858585856104f6565b95945050505050565b600061038283836104c9565b9392505050565b60006103828383610516565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120546103e5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61024c565b50505073ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b600061036d858585856105ba565b600061036d61042e868585610395565b85610660565b60006103828383610660565b60008260088111156104ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b505063ffffffff602090920291821b199290921691901b1790565b60005b600881101561023957818160200284901c63ffffffff1611156104ee57610239565b6001016104cc565b60008383106105105761050b858585856105ba565b61036d565b61036d85845b6000816008811115610584576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610628576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b6000855b858110156106545763ffffffff6020820290811b199890981685891b1797915060010161062c565b50959695505050505050565b60008160088111156106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102ba565b826106dc57600091506105b3565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60006020828403121561071f57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461038257600080fd5b60008060006060848603121561076457600080fd5b505081359360208301359350604090920135919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461079f57600080fd5b919050565b60008083601f8401126107b657600080fd5b50813567ffffffffffffffff8111156107ce57600080fd5b6020830191508360208260051b85010111156107e957600080fd5b9250929050565b6000806000806060858703121561080657600080fd5b61080f8561077b565b935060208501359250604085013567ffffffffffffffff81111561083257600080fd5b61083e878288016107a4565b95989497509550505050565b6000806000806080858703121561086057600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561088f57600080fd5b50508035926020909101359150565b6000806000604084860312156108b357600080fd5b6108bc8461077b565b9250602084013567ffffffffffffffff8111156108d857600080fd5b6108e4868287016107a4565b9497909650939450505050565b600073ffffffffffffffffffffffffffffffffffffffff808916835280881660208401525085604083015284606083015260a060808301528260a08301527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83111561095c57600080fd5b8260051b808560c08501376000920160c00191825250969550505050505056fea2646970667358221220f9d0e6978ca41e36586cb37fd0cd6c6704d83f6283f812ee63b207649dd3ecea64736f6c634300080a0033"; type ReadWriteTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts index f57e5de..ff546c4 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrowWrapper__factory.ts @@ -473,7 +473,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220f3d908385da66c0767bc9905553d151fb0c632b5e87c5d231e8fd31cc360942f64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611966806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c80637e56cda8116100765780639bfeb1191161005b5780639bfeb11914610175578063d9caed12146101c5578063fa5839ab146101d857600080fd5b80637e56cda81461014f5780638340f5491461016257600080fd5b8063248a8572146100a85780634facc0b4146100bd5780635fc85b7d146100e257806370a9eeee146100f5575b600080fd5b6100bb6100b63660046115a3565b610231565b005b6100d06100cb3660046115e9565b6104c0565b60405190815260200160405180910390f35b6100bb6100f036600461162a565b610503565b6100d0610103366004611675565b73ffffffffffffffffffffffffffffffffffffffff9384166000908152600560209081526040808320958716835294815284822093909516815291845282822090825290925290205490565b6100bb61015d3660046115e9565b6105cd565b6100bb6101703660046115e9565b6107a2565b6100d061018336600461162a565b73ffffffffffffffffffffffffffffffffffffffff92831660009081526004602090815260408083209486168352938152838220929094168152925290205490565b6100bb6101d33660046115e9565b6107d5565b6100d06101e63660046116c6565b73ffffffffffffffffffffffffffffffffffffffff93841660009081526003602090815260408083209587168352948152848220938252928352838120919094168452905290205490565b600161023c85610ad1565b600281111561024d5761024d611719565b146102b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60008111610323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526005602090815260408083209387168352928152828220338352815282822085835290529081208054839290610377908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526006602090815260408083209387168352928152828220858352905290812080548392906103c8908490611777565b909155505073ffffffffffffffffffffffffffffffffffffffff8085166000908152600760209081526040808320938716835292815282822085835290529081208054839290610419908490611777565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b69050338561044b81610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a16104ba73ffffffffffffffffffffffffffffffffffffffff84163383610df0565b50505050565b73ffffffffffffffffffffffffffffffffffffffff80841660009081526006602090815260408083209386168352928152828220848352905220545b9392505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f33838661057381610c75565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a16104ba84848484610ec4565b60008111610637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b600061064284610ad1565b600281111561065357610653611719565b146106ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061070690849061178e565b909155506000905061071784610c75565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a16104ba73ffffffffffffffffffffffffffffffffffffffff8416333085611214565b6107ae83833384610ec4565b6107d073ffffffffffffffffffffffffffffffffffffffff8316333084611214565b505050565b60026107e084610ad1565b60028111156107f1576107f1611719565b14610858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152600660209081526040808320948716808452948252808320868452825280832054938352600382528083209483529381528382208583528152838220338352905291822080549082905590916108ca86610c75565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa15801561093c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061096091906117a6565b61096a8587611777565b61097491906117bf565b61097e91906117fc565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b1683529281528282208983529052908120805492935083929091906109cf908490611777565b909155505080610a3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f57495448445241570000000000000000000000000000000000000060448201526064016102b0565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a1610ac873ffffffffffffffffffffffffffffffffffffffff87163383610df0565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610b0d57610b0d611719565b1115610b195792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8a9190611837565b90506002816003811115610ba057610ba0611719565b1415610bfb5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610c0f57610c0f611719565b1415610c6b5750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610dea5760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d159190611858565b905073ffffffffffffffffffffffffffffffffffffffff8116610d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526107d09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611272565b6000610ecf85610ad1565b6002811115610ee057610ee0611719565b11610f47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e470000000000000000000000000000000000000000000000000060448201526064016102b0565b60008111610fb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f534954000000000000000000000000000000000000000060448201526064016102b0565b6000610fbc85610c75565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561100b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102f91906117a6565b90506000811161109b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c5900000000000000000000000000000000000000000060448201526064016102b0565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600560209081526040808320898516845282528083209388168352928152828220848352905290812080548592906110f190849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260066020908152604080832093891683529281528282208483529052908120805485929061114290849061178e565b909155505073ffffffffffffffffffffffffffffffffffffffff808716600090815260076020908152604080832093891683529281528282208483529052908120805485929061119390849061178e565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526104ba9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610e42565b60006112d4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661137e9092919063ffffffff16565b8051909150156107d057808060200190518101906112f29190611875565b6107d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102b0565b606061138d8484600085611395565b949350505050565b606082471015611427576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102b0565b73ffffffffffffffffffffffffffffffffffffffff85163b6114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102b0565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ce91906118c3565b60006040518083038185875af1925050503d806000811461150b576040519150601f19603f3d011682016040523d82523d6000602084013e611510565b606091505b509150915061152082828661152b565b979650505050505050565b6060831561153a5750816104fc565b82511561154a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102b091906118df565b73ffffffffffffffffffffffffffffffffffffffff811681146115a057600080fd5b50565b600080600080608085870312156115b957600080fd5b84356115c48161157e565b935060208501356115d48161157e565b93969395505050506040820135916060013590565b6000806000606084860312156115fe57600080fd5b83356116098161157e565b925060208401356116198161157e565b929592945050506040919091013590565b60008060006060848603121561163f57600080fd5b833561164a8161157e565b9250602084013561165a8161157e565b9150604084013561166a8161157e565b809150509250925092565b6000806000806080858703121561168b57600080fd5b84356116968161157e565b935060208501356116a68161157e565b925060408501356116b68161157e565b9396929550929360600135925050565b600080600080608085870312156116dc57600080fd5b84356116e78161157e565b935060208501356116f78161157e565b925060408501359150606085013561170e8161157e565b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561178957611789611748565b500390565b600082198211156117a1576117a1611748565b500190565b6000602082840312156117b857600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156117f7576117f7611748565b500290565b600082611832577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561184957600080fd5b8151600481106104fc57600080fd5b60006020828403121561186a57600080fd5b81516104fc8161157e565b60006020828403121561188757600080fd5b815180151581146104fc57600080fd5b60005b838110156118b257818101518382015260200161189a565b838111156104ba5750506000910152565b600082516118d5818460208701611897565b9190910192915050565b60208152600082518060208401526118fe816040850160208701611897565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea264697066735822122065d29449f5b19a418b3e039054621045490dcffafb80f72622c5d647c0ba00ae64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowWrapperConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts index 4847c93..87fc265 100644 --- a/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts +++ b/src/typechain/factories/RedeemableERC20ClaimEscrow__factory.ts @@ -347,7 +347,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea26469706673582212207a126969f9a6db3d13aa747c73c9672243864d436efeeaf940d13a90301b0d5b64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061171d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80637e56cda8116100505780637e56cda8146100945780638340f549146100a7578063d9caed12146100ba57600080fd5b8063248a85721461006c5780635fc85b7d14610081575b600080fd5b61007f61007a3660046113fe565b6100cd565b005b61007f61008f366004611444565b61035c565b61007f6100a236600461148f565b610426565b61007f6100b536600461148f565b6105fb565b61007f6100c836600461148f565b61062e565b60016100d88561092a565b60028111156100e9576100e96114d0565b14610155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4641494c00000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600081116101bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e54000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600560209081526040808320938716835292815282822033835281528282208583529052908120805483929061021390849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff808516600090815260066020908152604080832093871683529281528282208583529052908120805483929061026490849061152e565b909155505073ffffffffffffffffffffffffffffffffffffffff80851660009081526007602090815260408083209387168352928152828220858352905290812080548392906102b590849061152e565b909155507f6b7ec092a62c7445c02d988d0c1c01a2da7d8778d62a625accdf18de5efca3b6905033856102e781610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff948516815292841660208401529083169082015290851660608201526080810184905260a0810183905260c00160405180910390a161035673ffffffffffffffffffffffffffffffffffffffff84163383610c49565b50505050565b73ffffffffffffffffffffffffffffffffffffffff838116600090815260046020908152604080832086851684528252808320938516835292905290812080549190557ff1c3618947be77b086aba11baa9d1e07d2df15de2c0e620f295ffd4ddd550e1f3383866103cc81610ace565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529184168383015283166060830152918616608082015260a0810184905290519081900360c00190a161035684848484610d1d565b60008111610490576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b600061049b8461092a565b60028111156104ac576104ac6114d0565b14610513576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808416600090815260046020908152604080832093861683529281528282203383529052908120805483929061055f908490611545565b909155506000905061057084610ace565b6040805133815273ffffffffffffffffffffffffffffffffffffffff878116602083015283811682840152861660608201526080810185905290519192507feabec77378d088e5df884cdb5fb2b55858355c2f6284148d4a30177eb54b52e6919081900360a00190a161035673ffffffffffffffffffffffffffffffffffffffff841633308561106d565b61060783833384610d1d565b61062973ffffffffffffffffffffffffffffffffffffffff831633308461106d565b505050565b60026106398461092a565b600281111561064a5761064a6114d0565b146106b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f53554343455353000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526006602090815260408083209487168084529482528083208684528252808320549383526003825280832094835293815283822085835281528382203383529052918220805490829055909161072386610ace565b6040517f70a08231000000000000000000000000000000000000000000000000000000008152336004820152909150600090859073ffffffffffffffffffffffffffffffffffffffff8416906370a0823190602401602060405180830381865afa158015610795573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b9919061155d565b6107c3858761152e565b6107cd9190611576565b6107d791906115b3565b73ffffffffffffffffffffffffffffffffffffffff8089166000908152600760209081526040808320938b16835292815282822089835290529081208054929350839290919061082890849061152e565b909155505080610894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5a45524f5f574954484452415700000000000000000000000000000000000000604482015260640161014c565b6040805133815273ffffffffffffffffffffffffffffffffffffffff898116602083015284811682840152881660608201526080810187905260a0810183905290517f16976c9767f5174e5289de7594402a1e174ebd2a9622aa3ebafd14e5af4e2ab99181900360c00190a161092173ffffffffffffffffffffffffffffffffffffffff87163383610c49565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604081205460ff1681816002811115610966576109666114d0565b11156109725792915050565b60008373ffffffffffffffffffffffffffffffffffffffff1663f9020e336040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e391906115ee565b905060028160038111156109f9576109f96114d0565b1415610a545750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020819052604090912080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168217905590565b6003816003811115610a6857610a686114d0565b1415610ac45750505073ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600190811790915590565b5060009392505050565b73ffffffffffffffffffffffffffffffffffffffff80821660009081526001602052604081205490911680610c435760008373ffffffffffffffffffffffffffffffffffffffff1663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6e919061160f565b905073ffffffffffffffffffffffffffffffffffffffff8116610bed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e00000000000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260016020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691831691909117905590505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526106299084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526110cb565b6000610d288561092a565b6002811115610d3957610d396114d0565b11610da0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f50454e44494e4700000000000000000000000000000000000000000000000000604482015260640161014c565b60008111610e0a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4445504f5349540000000000000000000000000000000000000000604482015260640161014c565b6000610e1585610ace565b905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e64573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e88919061155d565b905060008111610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f535550504c59000000000000000000000000000000000000000000604482015260640161014c565b73ffffffffffffffffffffffffffffffffffffffff808716600090815260056020908152604080832089851684528252808320938816835292815282822084835290529081208054859290610f4a908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600660209081526040808320938916835292815282822084835290529081208054859290610f9b908490611545565b909155505073ffffffffffffffffffffffffffffffffffffffff8087166000908152600760209081526040808320938916835292815282822084835290529081208054859290610fec908490611545565b90915550506040805133815273ffffffffffffffffffffffffffffffffffffffff86811660208301528881168284015284811660608301528716608082015260a0810183905260c0810185905290517f53591a88ac47bfe3130a7de575c6a6a8c22f7604cbba61b8390fbff773ed40499181900360e00190a1505050505050565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526103569085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401610c9b565b600061112d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166111d79092919063ffffffff16565b805190915015610629578080602001905181019061114b919061162c565b610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161014c565b60606111e684846000856111f0565b90505b9392505050565b606082471015611282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161014c565b73ffffffffffffffffffffffffffffffffffffffff85163b611300576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014c565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611329919061167a565b60006040518083038185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b509150915061137b828286611386565b979650505050505050565b606083156113955750816111e9565b8251156113a55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014c9190611696565b73ffffffffffffffffffffffffffffffffffffffff811681146113fb57600080fd5b50565b6000806000806080858703121561141457600080fd5b843561141f816113d9565b9350602085013561142f816113d9565b93969395505050506040820135916060013590565b60008060006060848603121561145957600080fd5b8335611464816113d9565b92506020840135611474816113d9565b91506040840135611484816113d9565b809150509250925092565b6000806000606084860312156114a457600080fd5b83356114af816113d9565b925060208401356114bf816113d9565b929592945050506040919091013590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015611540576115406114ff565b500390565b60008219821115611558576115586114ff565b500190565b60006020828403121561156f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156115ae576115ae6114ff565b500290565b6000826115e9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561160057600080fd5b8151600481106111e957600080fd5b60006020828403121561162157600080fd5b81516111e9816113d9565b60006020828403121561163e57600080fd5b815180151581146111e957600080fd5b60005b83811015611669578181015183820152602001611651565b838111156103565750506000910152565b6000825161168c81846020870161164e565b9190910192915050565b60208152600082518060208401526116b581604085016020870161164e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220e7d8f72cc3e17d819737c9cceac9c46c913b593d0818f62d2ef6b1f62bd5708f64736f6c634300080a0033"; type RedeemableERC20ClaimEscrowConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Factory__factory.ts b/src/typechain/factories/RedeemableERC20Factory__factory.ts index 2d7e8ea..c33fbbb 100644 --- a/src/typechain/factories/RedeemableERC20Factory__factory.ts +++ b/src/typechain/factories/RedeemableERC20Factory__factory.ts @@ -174,7 +174,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6134e680610cf983390190565b608051610c356100c4600039600081816093015261037a0152610c356000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610582565b6102bf565b6101016100d63660046105f4565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106c5565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610892565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906108a5565b92915050565b600080610371838501856109e8565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df01906103f3908590600401610b06565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b820160a081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b803561050b816105c4565b60006020828403121561060657600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064657600080fd5b830160208101925035905067ffffffffffffffff81111561066657600080fd5b80360383131561067557600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106d6816105c4565b73ffffffffffffffffffffffffffffffffffffffff8082166020850152602085013591507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301821261072a57600080fd5b60a060408501529084019061073f8280610611565b608060c08701526107556101408701828461067c565b9150506107656020840184610611565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408784030160e088015261079a83828461067c565b9250505060408301356107ac816105c4565b821661010086015260608301356101208601526107cb604087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660608701529250606086013560808601526107ff608087016105e9565b73ffffffffffffffffffffffffffffffffffffffff811660a087015292505b95945050505050565b6000815180845260005b8181101561084d57602081850181015186830182015201610831565b8181111561085f576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610827565b6000602082840312156108b757600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715610914576109146108c2565b60405290565b6040516080810167ffffffffffffffff81118282101715610914576109146108c2565b600082601f83011261094e57600080fd5b813567ffffffffffffffff80821115610969576109696108c2565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156109af576109af6108c2565b816040528381528660208588010111156109c857600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000602082840312156109fa57600080fd5b813567ffffffffffffffff80821115610a1257600080fd5b9083019060a08286031215610a2657600080fd5b610a2e6108f1565b8235610a39816105c4565b8152602083013582811115610a4d57600080fd5b830160808188031215610a5f57600080fd5b610a6761091a565b813584811115610a7657600080fd5b610a828982850161093d565b825250602082013584811115610a9757600080fd5b610aa38982850161093d565b60208301525060408201359350610ab9846105c4565b836040820152606082013560608201528060208401525050610add604084016105e9565b604082015260608301356060820152610af8608084016105e9565b608082015295945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610b4d610140860182610827565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152610b888282610827565b91505082604083015116610100860152606082015161012086015260408601519250610bcc606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061081e60a086018473ffffffffffffffffffffffffffffffffffffffff16905256fea26469706673582212205303b4789f4e12ab95c6f1e841d751e9a4e0aee0823b3381b2728bfcf226e0d464736f6c634300080a0033608060405234801561001057600080fd5b506134c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea2646970667358221220816e8e149f7affa7a47f612aa08ba4ab07120a3a5ce1060ead933ab32f2e685c64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6135ba80610ba983390190565b608051610ae56100c4600039600081816093015261030d0152610ae56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063c2bc3f31146100b5578063fc91a897146100c8575b600080fd5b61006461005f3660046105f0565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610698565b6102bd565b6101016100d63660046107b6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102e7826040516020016102d3919061084d565b604051602081830303815290604052610111565b92915050565b60008082806020019051810190610304919061099f565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517f8246df0100000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff821690638246df019061038690859060040161084d565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610564576105646104a2565b604052919050565b600067ffffffffffffffff821115610586576105866104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105c56105c08461056c565b61051d565b90508281528383830111156105d957600080fd5b828260208301376000602084830101529392505050565b60006020828403121561060257600080fd5b813567ffffffffffffffff81111561061957600080fd5b8201601f8101841361062a57600080fd5b610639848235602084016105b2565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461066357600080fd5b50565b803561049d81610641565b600082601f83011261068257600080fd5b610691838335602085016105b2565b9392505050565b6000602082840312156106aa57600080fd5b813567ffffffffffffffff808211156106c257600080fd5b9083019060a082860312156106d657600080fd5b6106de6104d1565b82356106e981610641565b81526020830135828111156106fd57600080fd5b83016080818803121561070f57600080fd5b6107176104fa565b81358481111561072657600080fd5b61073289828501610671565b82525060208201358481111561074757600080fd5b61075389828501610671565b6020830152506040820135935061076984610641565b83604082015260608201356060820152806020840152505061078d60408401610666565b6040820152606083013560608201526107a860808401610666565b608082015295945050505050565b6000602082840312156107c857600080fd5b813561069181610641565b60005b838110156107ee5781810151838201526020016107d6565b838111156107fd576000848401525b50505050565b6000815180845261081b8160208601602086016107d3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152610894610140860182610803565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e08701526108cf8282610803565b91505082604083015116610100860152606082015161012086015260408601519250610913606086018473ffffffffffffffffffffffffffffffffffffffff169052565b606086015160808601526080860151925061094660a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b805161049d81610641565b600082601f83011261096b57600080fd5b81516109796105c08261056c565b81815284602083860101111561098e57600080fd5b6106398260208301602087016107d3565b6000602082840312156109b157600080fd5b815167ffffffffffffffff808211156109c957600080fd5b9083019060a082860312156109dd57600080fd5b6109e56104d1565b82516109f081610641565b8152602083015182811115610a0457600080fd5b830160808188031215610a1657600080fd5b610a1e6104fa565b815184811115610a2d57600080fd5b610a398982850161095a565b825250602082015184811115610a4e57600080fd5b610a5a8982850161095a565b60208301525060408201519350610a7084610641565b836040820152606082015160608201528060208401525050610a946040840161094f565b6040820152606083015160608201526107a86080840161094f56fea2646970667358221220135ab90ce785e379f052722d03b06c2538202df2901fcdcfd394e1fa430270e664736f6c634300080a003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6134c680620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea26469706673582212206b517c174e419bcd9f5a231fc3eb47575a121188038bb57619af044725c2830964736f6c634300080a0033"; type RedeemableERC20FactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts index a1758f1..e22713b 100644 --- a/src/typechain/factories/RedeemableERC20Reentrant__factory.ts +++ b/src/typechain/factories/RedeemableERC20Reentrant__factory.ts @@ -389,7 +389,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea26469706673582212209edffdc9f6e84415862f896c874a020035ee43c6db7ec796c19e15f059a6381264736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000305565b5080516200007890600490602084019062000305565b505050620000a33360066009620000909190620003c1565b6200009d90600a620004db565b620000a9565b62000596565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620003c1565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620003c1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200029960201b620005c91760201c565b6001600160a01b03831615801590620001de57506006546001600160a01b038481169116145b1562000294576040805160018082528183019092526000916020808301908036833701905050905030816000815181106200021d576200021d620004f0565b6001600160a01b039283166020918202929092010152600654604051637b3bef4b60e11b815291169063f677de96906200025e908490869060040162000506565b600060405180830381600087803b1580156200027957600080fd5b505af11580156200028e573d6000803e3d6000fd5b50505050505b505050565b620002b18383836200029460201b620006591760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002945760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620003139062000559565b90600052602060002090601f01602090048101928262000337576000855562000382565b82601f106200035257805160ff191683800117855562000382565b8280016001018555821562000382579182015b828111156200038257825182559160200191906001019062000365565b506200039092915062000394565b5090565b5b8082111562000390576000815560010162000395565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003d757620003d7620003ab565b500190565b600181815b808511156200041d578160001904821115620004015762000401620003ab565b808516156200040f57918102915b93841c9390800290620003e1565b509250929050565b6000826200043657506001620004d5565b816200044557506000620004d5565b81600181146200045e5760028114620004695762000489565b6001915050620004d5565b60ff8411156200047d576200047d620003ab565b50506001821b620004d5565b5060208310610133831016604e8410600b8410161715620004ae575081810a620004d5565b620004ba8383620003dc565b8060001904821115620004d157620004d1620003ab565b0290505b92915050565b6000620004e9838362000425565b9392505050565b634e487b7160e01b600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b828110156200054a5781516001600160a01b03168452928401929084019060010162000523565b50505092019290925292915050565b600181811c908216806200056e57607f821691505b602082108114156200059057634e487b7160e01b600052602260045260246000fd5b50919050565b6112da80620005a66000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348ea30da116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461030e578063a9059cbb14610321578063dd62ed3e1461033457600080fd5b8063902d55a5146102fe57806395d89b411461030657600080fd5b806348ea30da146102035780635bb9058b1461025857806370a08231146102b557806379cc6790146102eb57600080fd5b80632e0f26251161010957806339509351116100ee57806339509351146101b857806342966c68146101cb57806348422faa146101e057600080fd5b80632e0f2625146101a1578063313ce567146101a957600080fd5b806306fdde031461013b578063095ea7b31461015957806318160ddd1461017c57806323b872dd1461018e575b600080fd5b61014361037a565b6040516101509190610ec1565b60405180910390f35b61016c610167366004610f56565b61040c565b6040519015158152602001610150565b6002545b604051908152602001610150565b61016c61019c366004610f82565b610426565b610180600681565b60405160068152602001610150565b61016c6101c6366004610f56565b61044a565b6101de6101d9366004610fc3565b610496565b005b61016c6101ee366004610fdc565b60056020526000908152604090205460ff1681565b6101de610211366004610fdc565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6101de610266366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b6101806102c3366004610fdc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101de6102f9366004610f56565b6104a3565b6101806104bc565b6101436104d6565b61016c61031c366004610f56565b6104e5565b61016c61032f366004610f56565b6105bb565b610180610342366004611000565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461038990611039565b80601f01602080910402602001604051908101604052809291908181526020018280546103b590611039565b80156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b5050505050905090565b60003361041a81858561065e565b60019150505b92915050565b600033610434858285610811565b61043f8585856108e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061041a90829086906104919087906110bc565b61065e565b6104a03382610ba6565b50565b6104ae823383610811565b6104b88282610ba6565b5050565b6104c8600660096110bc565b6104d390600a6111f4565b81565b60606004805461038990611039565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61043f828686840361065e565b60003361041a8185856108e8565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105a5565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610700576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff82166107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146108e257818110156108d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105a5565b6108e2848484840361065e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661098b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff8216610a2e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610a39838383610d9f565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610aef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b339084906110bc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b9991815260200190565b60405180910390a36108e2565b73ffffffffffffffffffffffffffffffffffffffff8216610c49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b610c5582600083610d9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105a5565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d47908490611200565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610daa8383836105c9565b73ffffffffffffffffffffffffffffffffffffffff831615801590610de9575060065473ffffffffffffffffffffffffffffffffffffffff8481169116145b1561065957604080516001808252818301909252600091602080830190803683370190505090503081600081518110610e2457610e24611217565b73ffffffffffffffffffffffffffffffffffffffff92831660209182029290920101526006546040517ff677de9600000000000000000000000000000000000000000000000000000000815291169063f677de9690610e899084908690600401611246565b600060405180830381600087803b158015610ea357600080fd5b505af1158015610eb7573d6000803e3d6000fd5b5050505050505050565b600060208083528351808285015260005b81811015610eee57858101830151858201604001528201610ed2565b81811115610f00576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104a057600080fd5b60008060408385031215610f6957600080fd5b8235610f7481610f34565b946020939093013593505050565b600080600060608486031215610f9757600080fd5b8335610fa281610f34565b92506020840135610fb281610f34565b929592945050506040919091013590565b600060208284031215610fd557600080fd5b5035919050565b600060208284031215610fee57600080fd5b8135610ff981610f34565b9392505050565b6000806040838503121561101357600080fd5b823561101e81610f34565b9150602083013561102e81610f34565b809150509250929050565b600181811c9082168061104d57607f821691505b60208210811415611087577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156110cf576110cf61108d565b500190565b600181815b8085111561112d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111135761111361108d565b8085161561112057918102915b93841c93908002906110d9565b509250929050565b60008261114457506001610420565b8161115157506000610420565b816001811461116757600281146111715761118d565b6001915050610420565b60ff8411156111825761118261108d565b50506001821b610420565b5060208310610133831016604e8410600b84101617156111b0575081810a610420565b6111ba83836110d4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111ec576111ec61108d565b029392505050565b6000610ff98383611135565b6000828210156112125761121261108d565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b604080825283519082018190526000906020906060840190828701845b8281101561129557815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611263565b5050509201929092529291505056fea2646970667358221220a118c2604dd777a5b228bab4e969b0fe7e700cf70be47e3b455db52178d1323564736f6c634300080a0033"; type RedeemableERC20ReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/RedeemableERC20__factory.ts b/src/typechain/factories/RedeemableERC20__factory.ts index ea97422..d18f409 100644 --- a/src/typechain/factories/RedeemableERC20__factory.ts +++ b/src/typechain/factories/RedeemableERC20__factory.ts @@ -9,6 +9,11 @@ import type { } from "../RedeemableERC20"; const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, { anonymous: false, inputs: [ @@ -783,7 +788,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506134c6806100206000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea2646970667358221220816e8e149f7affa7a47f612aa08ba4ab07120a3a5ce1060ead933ab32f2e685c64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6134c680620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101b95760003560e01c80635d521c10116100f9578063a457c2d711610097578063e384346311610071578063e38434631461043a578063e7ae91fe14610475578063f1ebd5dd14610488578063f677de961461049157600080fd5b8063a457c2d7146103ce578063a9059cbb146103e1578063dd62ed3e146103f457600080fd5b80638246df01116100d35780638246df01146103785780638b24259b1461038b57806393c965571461039e57806395d89b41146103c657600080fd5b80635d521c101461031c57806370a082311461032f57806379cc67901461036557600080fd5b80631cf355e8116101665780633833be62116101405780633833be62146102a8578063392243e1146102bb57806339509351146102f657806342966c681461030957600080fd5b80631cf355e81461027357806323b872dd14610286578063313ce5671461029957600080fd5b8063095ea7b311610197578063095ea7b31461020357806316f4d0221461022657806318160ddd1461026b57600080fd5b8063038ef03e146101be578063055ad42e146101d357806306fdde03146101ee575b600080fd5b6101d16101cc366004612c98565b6104a4565b005b6101db6104f6565b6040519081526020015b60405180910390f35b6101f6610561565b6040516101e59190612cdf565b610216610211366004612d30565b6105f3565b60405190151581526020016101e5565b609a546102469073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101e5565b6036546101db565b6101db610281366004612d9d565b61060d565b610216610294366004612e27565b61064c565b604051601281526020016101e5565b6101d16102b6366004612c98565b610672565b6102166102c9366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600116151590565b610216610304366004612d30565b61075c565b6101d1610317366004612e63565b6107a8565b6101db61032a366004612d9d565b6107b5565b6101db61033d366004612c98565b73ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b6101d1610373366004612d30565b6107fc565b6101d1610386366004612e7c565b610815565b6101d1610399366004612c98565b610dbe565b6103b16103ac366004612e63565b610f46565b60405163ffffffff90911681526020016101e5565b6101f6610f76565b6102166103dc366004612d30565b610f85565b6102166103ef366004612d30565b611061565b6101db610402366004612eb7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260356020908152604080832093909416825291909152205490565b610216610448366004612c98565b73ffffffffffffffffffffffffffffffffffffffff16600090815260996020526040902054600216151590565b6101d1610483366004612c98565b61106f565b6101db609b5481565b6101d161049f366004612eea565b611154565b6040805133815273ffffffffffffffffffffffffffffffffffffffff831660208201527f2ab01e95cf254bfe2f3e7e2a70a40262c15f0c753a586568529e3b109c567d5691015b60405180910390a150565b6040805161010081019182905260009161055c91906001906008908286855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105155790505050505050426107b5565b905090565b60606037805461057090612f65565b80601f016020809104026020016040519081016040528092919081815260200182805461059c90612f65565b80156105e95780601f106105be576101008083540402835291602001916105e9565b820191906000526020600020905b8154815290600101906020018083116105cc57829003601f168201915b5050505050905090565b600033610601818585611204565b60019150505b92915050565b600080821161061d57600061063f565b82610629600184612fe8565b6008811061063957610639612fff565b60200201515b63ffffffff169392505050565b60003361065a8582856113b8565b610665858585611489565b60019150505b9392505050565b60985473ffffffffffffffffffffffffffffffffffffffff1633146106f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460011790558151338152908101929092527f4d987a7fff11f6c57bdc4d0bd5a7c4cc2dfe97c90212583bca465b19df29b64791016104eb565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919061060190829086906107a390879061302e565b611204565b6107b23382611747565b50565b60005b6008811015610607578281600881106107d3576107d3612fff565b602002015163ffffffff168210156107ea57610607565b806107f481613046565b9150506107b8565b6108078233836113b8565b6108118282611747565b5050565b600054610100900460ff16158080156108355750600054600160ff909116105b8061084f5750303b15801561084f575060005460ff166001145b6108db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ef565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561093957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b61094161193d565b6109516060830160408401612c98565b609a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556109cf6109a96060840160408501612c98565b7f42766d3f000000000000000000000000000000000000000000000000000000006119e7565b610a35576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4552433136355f5449455256320000000000000000000000000000000000000060448201526064016106ef565b610ad9610a45602084018461307f565b610a4f90806130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a9192505050602085018561307f565b610a9f9060208101906130bd565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a0392505050565b670de0b6b3a7640000610aef602084018461307f565b606001351015610b5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d494e494d554d5f494e495449414c5f535550504c590000000000000000000060448201526064016106ef565b6060820135609b55610b7360a0830160808401612c98565b609c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560008080526099602081815260037f235d629dc802037ded8c61cb27fb29e40fa01b299719d8f991ffe20bdcc59f4f5560019290610bf89086018661307f565b610c09906060810190604001612c98565b73ffffffffffffffffffffffffffffffffffffffff9081168252602082019290925260400160002091909155609c541615610c6a57609c5473ffffffffffffffffffffffffffffffffffffffff166000908152609960205260409020600190555b610c77602083018361307f565b610c88906060810190604001612c98565b609880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d04610cdd602084018461307f565b610cee906060810190604001612c98565b610cfb602085018561307f565b60600135611aa4565b610d146101cc6020840184612c98565b7fc728c434ad674ff33ed457eadebfea8cb20f3e5f73ee77290a389a0348d965793383604051610d459291906131d6565b60405180910390a1610d58600142611bd0565b801561081157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600180610dc96104f6565b14610e30576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b60985473ffffffffffffffffffffffffffffffffffffffff163314610eb1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b610ebc600242611bd0565b609c5473ffffffffffffffffffffffffffffffffffffffff166000610f038473ffffffffffffffffffffffffffffffffffffffff1660009081526034602052604090205490565b90508015610f405773ffffffffffffffffffffffffffffffffffffffff8216610f3557610f308482611747565b610f40565b610f40848383611489565b50505050565b60018160088110610f5657600080fd5b60089182820401919006600402915054906101000a900463ffffffff1681565b60606038805461057090612f65565b33600081815260356020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015611049576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016106ef565b6110568286868403611204565b506001949350505050565b600033610601818585611489565b60985473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4f4e4c595f41444d494e0000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260996020908152604091829020805460021790558151338152908101929092527f2960695afa2609b7591ca0b79d5586f853e610ce0515852f7a5ced78fd32ade991016104eb565b60028061115f6104f6565b146111c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4241445f5048415345000000000000000000000000000000000000000000000060448201526064016106ef565b610f40848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250869250611e79915050565b73ffffffffffffffffffffffffffffffffffffffff83166112a6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8216611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526035602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603560209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610f40578181101561147c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016106ef565b610f408484848403611204565b73ffffffffffffffffffffffffffffffffffffffff831661152c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff82166115cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6115da83838361221e565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604090205481811015611690576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152603460205260408082208585039055918516815290812080548492906116d490849061302e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161173a91815260200190565b60405180910390a3610f40565b73ffffffffffffffffffffffffffffffffffffffff82166117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b6117f68260008361221e565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260346020526040902054818110156118ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526034602052604081208383039055603680548492906118e8908490612fe8565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016113ab565b505050565b6001805463ffffffff161061195457611954613338565b604080516101008101825263ffffffff80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101919091526119a56001826008612b4a565b5060408051338152600060208201819052918101919091527fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3906060016104eb565b60006119f283612526565b801561066b575061066b838361258a565b600054610100900460ff16611a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b61081182826126c6565b73ffffffffffffffffffffffffffffffffffffffff8216611b21576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016106ef565b611b2d6000838361221e565b8060366000828254611b3f919061302e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526034602052604081208054839290611b7990849061302e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b80421115611c3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4558545f54494d455f5041535400000000000000000000000000000000000060448201526064016106ef565b63ffffffff8110611ca7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e4558545f54494d455f554e494e495449414c495a454400000000000000000060448201526064016106ef565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820180611cd36104f6565b14611d3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4558545f50484153450000000000000000000000000000000000000000000060448201526064016106ef565b60018160088110611d4d57611d4d612fff565b60088104919091015460079091166004026101000a900463ffffffff90811614611dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e4558545f54494d455f5345540000000000000000000000000000000000000060448201526064016106ef565b8160018260088110611de757611de7612fff565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff1602179055507fba85f6676f17ca992195e3cb204ae48c68666b109edc14a794e5d894387d25d3338484604051611e6c9392919073ffffffffffffffffffffffffffffffffffffffff9390931683526020830191909152604082015260600190565b60405180910390a1505050565b815160008167ffffffffffffffff811115611e9657611e96612d5a565b604051908082528060200260200182016040528015611ebf578160200160208202803683370190505b50905060008211611f2c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f454d5054595f415353455453000000000000000000000000000000000000000060448201526064016106ef565b60003073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f9d9190613367565b90506000805b84811015612190578286888381518110611fbf57611fbf612fff565b60209081029190910101516040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff909116906370a0823190602401602060405180830381865afa158015612035573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120599190613367565b6120639190613380565b61206d91906133bd565b9150600082116120d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f5a45524f5f414d4f554e5400000000000000000000000000000000000000000060448201526064016106ef565b7f3f693fff038bb8a046aa76d9516190ac7444f7d69cf952c4cbdc086fdef2d6fc3388838151811061210d5761210d612fff565b60200260200101518885604051612158949392919073ffffffffffffffffffffffffffffffffffffffff94851681529290931660208301526040820152606081019190915260800190565b60405180910390a18184828151811061217357612173612fff565b60209081029190910101528061218881613046565b915050611fa3565b5061219b3386611747565b60005b8481101561221557612203338583815181106121bc576121bc612fff565b60200260200101518984815181106121d6576121d6612fff565b602002602001015173ffffffffffffffffffffffffffffffffffffffff166127849092919063ffffffff16565b8061220d81613046565b91505061219e565b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff821630141561229e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f544f4b454e5f53454e445f53454c46000000000000000000000000000000000060448201526064016106ef565b600081118015612308575073ffffffffffffffffffffffffffffffffffffffff8316600090815260996020526040902054600216151580612306575073ffffffffffffffffffffffffffffffffffffffff821660009081526099602052604090205460011615155b155b156119385760016123176104f6565b1461237e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016106ef565b73ffffffffffffffffffffffffffffffffffffffff831660009081526099602052604090205460011661240d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f3253504f4b45000000000000000000000000000000000000000000000000000060448201526064016106ef565b609b54609a54604080516000815260208101918290527f88d68604000000000000000000000000000000000000000000000000000000009091526124be9173ffffffffffffffffffffffffffffffffffffffff16906388d6860490612477908790602481016133f8565b602060405180830381865afa158015612494573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124b89190613367565b42612811565b1015611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d494e5f5449455200000000000000000000000000000000000000000000000060448201526064016106ef565b6000612552827f01ffc9a70000000000000000000000000000000000000000000000000000000061258a565b80156106075750612583827fffffffff0000000000000000000000000000000000000000000000000000000061258a565b1592915050565b604080517fffffffff00000000000000000000000000000000000000000000000000000000831660248083019190915282518083039091018152604490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a7000000000000000000000000000000000000000000000000000000001790529051600091908290819073ffffffffffffffffffffffffffffffffffffffff8716906175309061264490869061345c565b6000604051808303818686fa925050503d8060008114612680576040519150601f19603f3d011682016040523d82523d6000602084013e612685565b606091505b50915091506020815110156126a05760009350505050610607565b8180156126bc5750808060200190518101906126bc919061346e565b9695505050505050565b600054610100900460ff1661275d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016106ef565b8151612770906037906020850190612be6565b508051611938906038906020840190612be6565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261193890849061283e565b60005b600881101561060757818160200284901c63ffffffff16111561283657610607565b600101612814565b60006128a0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661294a9092919063ffffffff16565b80519091501561193857808060200190518101906128be919061346e565b611938576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106ef565b60606129598484600085612961565b949350505050565b6060824710156129f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016106ef565b73ffffffffffffffffffffffffffffffffffffffff85163b612a71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106ef565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051612a9a919061345c565b60006040518083038185875af1925050503d8060008114612ad7576040519150601f19603f3d011682016040523d82523d6000602084013e612adc565b606091505b5091509150612aec828286612af7565b979650505050505050565b60608315612b0657508161066b565b825115612b165782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ef9190612cdf565b600183019183908215612bd65791602002820160005b83821115612ba457835183826101000a81548163ffffffff021916908363ffffffff1602179055509260200192600401602081600301049283019260010302612b60565b8015612bd45782816101000a81549063ffffffff0219169055600401602081600301049283019260010302612ba4565b505b50612be2929150612c5a565b5090565b828054612bf290612f65565b90600052602060002090601f016020900481019282612c145760008555612bd6565b82601f10612c2d57805160ff1916838001178555612bd6565b82800160010185558215612bd6579182015b82811115612bd6578251825591602001919060010190612c3f565b5b80821115612be25760008155600101612c5b565b803573ffffffffffffffffffffffffffffffffffffffff81168114612c9357600080fd5b919050565b600060208284031215612caa57600080fd5b61066b82612c6f565b60005b83811015612cce578181015183820152602001612cb6565b83811115610f405750506000910152565b6020815260008251806020840152612cfe816040850160208701612cb3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060408385031215612d4357600080fd5b612d4c83612c6f565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b803563ffffffff81168114612c9357600080fd5b6000806101208385031215612db157600080fd5b83601f840112612dc057600080fd5b60405161010080820182811067ffffffffffffffff82111715612de557612de5612d5a565b60405284018186821115612df857600080fd5b855b82811015612e1957612e0b81612d89565b825260209182019101612dfa565b509196903595509350505050565b600080600060608486031215612e3c57600080fd5b612e4584612c6f565b9250612e5360208501612c6f565b9150604084013590509250925092565b600060208284031215612e7557600080fd5b5035919050565b600060208284031215612e8e57600080fd5b813567ffffffffffffffff811115612ea557600080fd5b820160a0818503121561066b57600080fd5b60008060408385031215612eca57600080fd5b612ed383612c6f565b9150612ee160208401612c6f565b90509250929050565b600080600060408486031215612eff57600080fd5b833567ffffffffffffffff80821115612f1757600080fd5b818601915086601f830112612f2b57600080fd5b813581811115612f3a57600080fd5b8760208260051b8501011115612f4f57600080fd5b6020928301989097509590910135949350505050565b600181811c90821680612f7957607f821691505b60208210811415612fb3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082821015612ffa57612ffa612fb9565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000821982111561304157613041612fb9565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561307857613078612fb9565b5060010190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818336030181126130b357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126130f257600080fd5b83018035915067ffffffffffffffff82111561310d57600080fd5b60200191503681900382131561312257600080fd5b9250929050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261315e57600080fd5b830160208101925035905067ffffffffffffffff81111561317e57600080fd5b80360383131561312257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061320385612c6f565b16604084015260208401357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185360301811261323e57600080fd5b60a0606085015284016132518180613129565b608060e08701526132676101608701828461318d565b9150506132776020830183613129565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20878403016101008801526132ad83828461318d565b92505050826132be60408401612c6f565b1661012086015260608201356101408601526132dc60408701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660808701529250606086013560a086015261331060808701612c6f565b73ffffffffffffffffffffffffffffffffffffffff811660c087015292509695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121561337957600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156133b8576133b8612fb9565b500290565b6000826133f3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006040820173ffffffffffffffffffffffffffffffffffffffff851683526020604081850152818551808452606086019150828701935060005b8181101561344f57845183529383019391830191600101613433565b5090979650505050505050565b600082516130b3818460208701612cb3565b60006020828403121561348057600080fd5b8151801515811461066b57600080fdfea26469706673582212206b517c174e419bcd9f5a231fc3eb47575a121188038bb57619af044725c2830964736f6c634300080a0033"; type RedeemableERC20ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReportOMeter__factory.ts b/src/typechain/factories/ReportOMeter__factory.ts new file mode 100644 index 0000000..4bc5ebc --- /dev/null +++ b/src/typechain/factories/ReportOMeter__factory.ts @@ -0,0 +1,122 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { ReportOMeter, ReportOMeterInterface } from "../ReportOMeter"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "report", + type: "uint256", + }, + ], + name: "Report", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "tierContract_", + type: "address", + }, + { + internalType: "address", + name: "account_", + type: "address", + }, + { + internalType: "uint256[]", + name: "context_", + type: "uint256[]", + }, + ], + name: "gaugeReport", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "tierContract_", + type: "address", + }, + { + internalType: "address", + name: "account_", + type: "address", + }, + { + internalType: "uint256", + name: "tier_", + type: "uint256", + }, + { + internalType: "uint256[]", + name: "context_", + type: "uint256[]", + }, + ], + name: "gaugeReportTimeForTier", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061065a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063443b86951461003b578063cc91cb6014610050575b600080fd5b61004e6100493660046103ba565b610063565b005b61004e61005e366004610429565b61017d565b600160009081555a905060008673ffffffffffffffffffffffffffffffffffffffff1663caa0eb3b878787876040518563ffffffff1660e01b81526004016100ae94939291906104d9565b602060405180830381865afa1580156100cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ef9190610519565b905060005a90506101406040518060400160405280601481526020017f7265706f72742074696d6520636f73743a202573000000000000000000000000815250828561013b9190610532565b61028f565b6040518281527fbb2c768e67d87cc5b47bd5461de6408dfc3229cdc6d42ee85b24ffe526aed4269060200160405180910390a15050505050505050565b600160009081555a905060008573ffffffffffffffffffffffffffffffffffffffff166388d686048686866040518463ffffffff1660e01b81526004016101c693929190610570565b602060405180830381865afa1580156101e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102079190610519565b905060005a90506102536040518060400160405280600f81526020017f7265706f727420636f73743a2025730000000000000000000000000000000000815250828561013b9190610532565b6040518281527fbb2c768e67d87cc5b47bd5461de6408dfc3229cdc6d42ee85b24ffe526aed4269060200160405180910390a150505050505050565b61032082826040516024016102a59291906105a9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f9710a9d000000000000000000000000000000000000000000000000000000000179052610324565b5050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461036957600080fd5b919050565b60008083601f84011261038057600080fd5b50813567ffffffffffffffff81111561039857600080fd5b6020830191508360208260051b85010111156103b357600080fd5b9250929050565b6000806000806000608086880312156103d257600080fd5b6103db86610345565b94506103e960208701610345565b935060408601359250606086013567ffffffffffffffff81111561040c57600080fd5b6104188882890161036e565b969995985093965092949392505050565b6000806000806060858703121561043f57600080fd5b61044885610345565b935061045660208601610345565b9250604085013567ffffffffffffffff81111561047257600080fd5b61047e8782880161036e565b95989497509550505050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156104bc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b73ffffffffffffffffffffffffffffffffffffffff8516815283602082015260606040820152600061050f60608301848661048a565b9695505050505050565b60006020828403121561052b57600080fd5b5051919050565b60008282101561056b577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b500390565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082015260006105a060408301848661048a565b95945050505050565b604081526000835180604084015260005b818110156105d757602081870181015160608684010152016105ba565b818111156105e9576000606083860101525b50602083019390935250601f919091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160160600191905056fea2646970667358221220f81f85df9c1d20f79e893dafcbbb9ccc0a8a43f969c1f83f16bb94a2c067e83f64736f6c634300080a0033"; + +type ReportOMeterConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ReportOMeterConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ReportOMeter__factory extends ContractFactory { + constructor(...args: ReportOMeterConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): ReportOMeter { + return super.attach(address) as ReportOMeter; + } + connect(signer: Signer): ReportOMeter__factory { + return super.connect(signer) as ReportOMeter__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ReportOMeterInterface { + return new utils.Interface(_abi) as ReportOMeterInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ReportOMeter { + return new Contract(address, _abi, signerOrProvider) as ReportOMeter; + } +} diff --git a/src/typechain/factories/ReserveToken18__factory.ts b/src/typechain/factories/ReserveToken18__factory.ts index f4b8d79..4073792 100644 --- a/src/typechain/factories/ReserveToken18__factory.ts +++ b/src/typechain/factories/ReserveToken18__factory.ts @@ -376,7 +376,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360126009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165601281565b60405160128152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860126009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea26469706673582212208d35958bcdbd63ba92e845a3f5334175e477cc36bba1738d9a61fb33bf7632ee64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360126009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165601281565b60405160128152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860126009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea26469706673582212203656c03e32dc69221137deb40d7d9bf5095856a3588b30dcc0d385c3f38689f864736f6c634300080a0033"; type ReserveToken18ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC1155__factory.ts b/src/typechain/factories/ReserveTokenERC1155__factory.ts index f423637..416f2bc 100644 --- a/src/typechain/factories/ReserveTokenERC1155__factory.ts +++ b/src/typechain/factories/ReserveTokenERC1155__factory.ts @@ -421,7 +421,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b90339062000049600660096200049a565b6200005690600a620005b4565b6040805160208101909152600081526200008a565b620007db565b805162000086906002906020840190620003de565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b336000620000fe85620001ac565b905060006200010d85620001ac565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290620001419084906200049a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4620001a38360008989898962000202565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e957620001e9620005c9565b602090810291909101015292915050565b505050505050565b62000221846001600160a01b0316620003cf60201b620009761760201c565b15620001fa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025d90899089908890889088906004016200062f565b6020604051808303816000875af19250505080156200029b575060408051601f3d908101601f19168201909252620002989181019062000676565b60015b6200035c57620002aa620006a2565b806308c379a01415620002eb5750620002c2620006fa565b80620002cf5750620002ed565b8060405162461bcd60e51b8152600401620000e7919062000789565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620001a35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b6001600160a01b03163b151590565b828054620003ec906200079e565b90600052602060002090601f0160209004810192826200041057600085556200045b565b82601f106200042b57805160ff19168380011785556200045b565b828001600101855582156200045b579182015b828111156200045b5782518255916020019190600101906200043e565b50620004699291506200046d565b5090565b5b808211156200046957600081556001016200046e565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b057620004b062000484565b500190565b600181815b80851115620004f6578160001904821115620004da57620004da62000484565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff84111562000556576200055662000484565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa62000484565b0290505b92915050565b6000620005c28383620004fe565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060757602081850181015186830182015201620005e9565b818111156200061a576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200066b90830184620005df565b979650505050505050565b6000602082840312156200068957600080fd5b81516001600160e01b031981168114620005c257600080fd5b600060033d1115620006bc5760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006f357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007095790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200073957505050505090565b8285019150815181811115620007525750505050505090565b843d87010160208285010111156200076d5750505050505090565b6200077e60208286010187620006bf565b509095945050505050565b602081526000620005c26020830184620005df565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6125d180620007eb6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611bad565b610242565b6040519081526020015b60405180910390f35b610127610122366004611c08565b610322565b604051901515815260200161010b565b61014a610145366004611c2c565b610405565b60405161010b9190611cb0565b610101600681565b61017261016d366004611e64565b610499565b005b610187610182366004611f0e565b610562565b60405161010b9190612014565b6101726101a2366004612027565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce36600461209b565b6107e5565b6101276101e13660046120d7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a36600461210a565b6107f4565b61017261023d36600461216f565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b606060028054610414906121a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610440906121a2565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611cc3565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121f6565b6020026020010151858381518110610678576106786121f6565b6020026020010151610242565b828281518110610697576106976121f6565b60209081029190910101526106ab81612254565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f83612254565b91905055506107c933600354600660096107a9919061228d565b6107b490600a6123c5565b60405180602001604052806000815250610ff4565b565b6107d76006600961228d565b6107e290600a6123c5565b81565b6107f0338383611165565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112b9565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a8383836114f7565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121f6565b602002602001015190506000858381518110610b0557610b056121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c90849061228d565b9250508190555050505080610c3090612254565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123d1565b60405180910390a4610cc4818787878787611701565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121f6565b602002602001015190506000848381518110610e4f57610e4f6121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f5781612254565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123d1565b60405180910390a460408051602081019091526000905250505050565b73ffffffffffffffffffffffffffffffffffffffff8416611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006110a38561198c565b905060006110b08561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152812080548792906110ef90849061228d565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461115c836000898989896119d7565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff841661135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006113688561198c565b905060006113758561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a1682528120805488929061147f90849061228d565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114ec848a8a8a8a8a6119d7565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006115a68461198c565b905060006115b38461198c565b604080516020808201835260009182905288825281815282822073ffffffffffffffffffffffffffffffffffffffff8b168352905220549091508481101561167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261115c565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061177890899089908890889088906004016123ff565b6020604051808303816000875af19250505080156117d1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ce9181019061246a565b60015b6118bb576117dd612487565b806308c379a0141561183157506117f26124a3565b806117fd5750611833565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611cb0565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119c6576119c66121f6565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a4e908990899088908890889060040161254b565b6020604051808303816000875af1925050508015611aa7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa49181019061246a565b60015b611ab3576117dd612487565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b84565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c0557600080fd5b50565b600060208284031215611c1a57600080fd5b8135611c2581611bd7565b9392505050565b600060208284031215611c3e57600080fd5b5035919050565b6000815180845260005b81811015611c6b57602081850181015186830182015201611c4f565b81811115611c7d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c256020830184611c45565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d3657611d36611cc3565b6040525050565b600067ffffffffffffffff821115611d5757611d57611cc3565b5060051b60200190565b600082601f830112611d7257600080fd5b81356020611d7f82611d3d565b604051611d8c8282611cf2565b83815260059390931b8501820192828101915086841115611dac57600080fd5b8286015b84811015611dc75780358352918301918301611db0565b509695505050505050565b600082601f830112611de357600080fd5b813567ffffffffffffffff811115611dfd57611dfd611cc3565b604051611e3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cf2565b818152846020838601011115611e4757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e7c57600080fd5b611e8586611b84565b9450611e9360208701611b84565b9350604086013567ffffffffffffffff80821115611eb057600080fd5b611ebc89838a01611d61565b94506060880135915080821115611ed257600080fd5b611ede89838a01611d61565b93506080880135915080821115611ef457600080fd5b50611f0188828901611dd2565b9150509295509295909350565b60008060408385031215611f2157600080fd5b823567ffffffffffffffff80821115611f3957600080fd5b818501915085601f830112611f4d57600080fd5b81356020611f5a82611d3d565b604051611f678282611cf2565b83815260059390931b8501820192828101915089841115611f8757600080fd5b948201945b83861015611fac57611f9d86611b84565b82529482019490820190611f8c565b96505086013592505080821115611fc257600080fd5b50611fcf85828601611d61565b9150509250929050565b600081518084526020808501945080840160005b8381101561200957815187529582019590820190600101611fed565b509495945050505050565b602081526000611c256020830184611fd9565b60008060006060848603121561203c57600080fd5b61204584611b84565b9250602084013567ffffffffffffffff8082111561206257600080fd5b61206e87838801611d61565b9350604086013591508082111561208457600080fd5b5061209186828701611d61565b9150509250925092565b600080604083850312156120ae57600080fd5b6120b783611b84565b9150602083013580151581146120cc57600080fd5b809150509250929050565b600080604083850312156120ea57600080fd5b6120f383611b84565b915061210160208401611b84565b90509250929050565b600080600080600060a0868803121561212257600080fd5b61212b86611b84565b945061213960208701611b84565b93506040860135925060608601359150608086013567ffffffffffffffff81111561216357600080fd5b611f0188828901611dd2565b60008060006060848603121561218457600080fd5b61218d84611b84565b95602085013595506040909401359392505050565b600181811c908216806121b657607f821691505b602082108114156121f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561228657612286612225565b5060010190565b600082198211156122a0576122a0612225565b500190565b600181815b808511156122fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122e4576122e4612225565b808516156122f157918102915b93841c93908002906122aa565b509250929050565b6000826123155750600161031c565b816123225750600061031c565b816001811461233857600281146123425761235e565b600191505061031c565b60ff84111561235357612353612225565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612381575081810a61031c565b61238b83836122a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123bd576123bd612225565b029392505050565b6000611c258383612306565b6040815260006123e46040830185611fd9565b82810360208401526123f68185611fd9565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261243860a0830186611fd9565b828103606084015261244a8186611fd9565b9050828103608084015261245e8185611c45565b98975050505050505050565b60006020828403121561247c57600080fd5b8151611c2581611bd7565b600060033d11156124a05760046000803e5060005160e01c5b90565b600060443d10156124b15790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124ff57505050505090565b82850191508151818111156125175750505050505090565b843d87010160208285010111156125315750505050505090565b61254060208286010187611cf2565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261259060a0830184611c45565b97965050505050505056fea2646970667358221220e45a04af795bdc8b41925621c711ad3086522680d304e2017b963a3253fc818c64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506040805160208101909152600081526200002c8162000071565b50600060038190556200006b90339062000049600660096200049a565b6200005690600a620005b4565b6040805160208101909152600081526200008a565b620007db565b805162000086906002906020840190620003de565b5050565b6001600160a01b038416620000f05760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084015b60405180910390fd5b336000620000fe85620001ac565b905060006200010d85620001ac565b90506000868152602081815260408083206001600160a01b038b16845290915281208054879290620001419084906200049a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4620001a38360008989898962000202565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110620001e957620001e9620005c9565b602090810291909101015292915050565b505050505050565b62000221846001600160a01b0316620003cf60201b620009761760201c565b15620001fa5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906200025d90899089908890889088906004016200062f565b6020604051808303816000875af19250505080156200029b575060408051601f3d908101601f19168201909252620002989181019062000676565b60015b6200035c57620002aa620006a2565b806308c379a01415620002eb5750620002c2620006fa565b80620002cf5750620002ed565b8060405162461bcd60e51b8152600401620000e7919062000789565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401620000e7565b6001600160e01b0319811663f23a6e6160e01b14620001a35760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401620000e7565b6001600160a01b03163b151590565b828054620003ec906200079e565b90600052602060002090601f0160209004810192826200041057600085556200045b565b82601f106200042b57805160ff19168380011785556200045b565b828001600101855582156200045b579182015b828111156200045b5782518255916020019190600101906200043e565b50620004699291506200046d565b5090565b5b808211156200046957600081556001016200046e565b634e487b7160e01b600052601160045260246000fd5b60008219821115620004b057620004b062000484565b500190565b600181815b80851115620004f6578160001904821115620004da57620004da62000484565b80851615620004e857918102915b93841c9390800290620004ba565b509250929050565b6000826200050f57506001620005ae565b816200051e57506000620005ae565b8160018114620005375760028114620005425762000562565b6001915050620005ae565b60ff84111562000556576200055662000484565b50506001821b620005ae565b5060208310610133831016604e8410600b841016171562000587575081810a620005ae565b620005938383620004b5565b8060001904821115620005aa57620005aa62000484565b0290505b92915050565b6000620005c28383620004fe565b9392505050565b634e487b7160e01b600052603260045260246000fd5b6000815180845260005b818110156200060757602081850181015186830182015201620005e9565b818111156200061a576000602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906200066b90830184620005df565b979650505050505050565b6000602082840312156200068957600080fd5b81516001600160e01b031981168114620005c257600080fd5b600060033d1115620006bc5760046000803e5060005160e01c5b90565b601f8201601f191681016001600160401b0381118282101715620006f357634e487b7160e01b600052604160045260246000fd5b6040525050565b600060443d1015620007095790565b6040516003193d81016004833e81513d6001600160401b0380831160248401831017156200073957505050505090565b8285019150815181811115620007525750505050505090565b843d87010160208285010111156200076d5750505050505090565b6200077e60208286010187620006bf565b509095945050505050565b602081526000620005c26020830184620005df565b600181811c90821680620007b357607f821691505b60208210811415620007d557634e487b7160e01b600052602260045260246000fd5b50919050565b6125d180620007eb6000396000f3fe608060405234801561001057600080fd5b50600436106100e95760003560e01c806374f104791161008c578063a22cb46511610066578063a22cb465146101c0578063e985e9c5146101d3578063f242432a1461021c578063f5298aca1461022f57600080fd5b806374f10479146101a7578063902d55a5146101af5780639f181b5e146101b757600080fd5b80632e0f2625116100c85780632e0f2625146101575780632eb2c2d61461015f5780634e1273f4146101745780636b20c4541461019457600080fd5b8062fdd58e146100ee57806301ffc9a7146101145780630e89341c14610137575b600080fd5b6101016100fc366004611bad565b610242565b6040519081526020015b60405180910390f35b610127610122366004611c08565b610322565b604051901515815260200161010b565b61014a610145366004611c2c565b610405565b60405161010b9190611cb0565b610101600681565b61017261016d366004611e64565b610499565b005b610187610182366004611f0e565b610562565b60405161010b9190612014565b6101726101a2366004612027565b6106ba565b61017261077f565b6101016107cb565b61010160035481565b6101726101ce36600461209b565b6107e5565b6101276101e13660046120d7565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205460ff1690565b61017261022a36600461210a565b6107f4565b61017261023d36600461216f565b6108b6565b600073ffffffffffffffffffffffffffffffffffffffff83166102ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526020818152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020545b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167fd9b67a260000000000000000000000000000000000000000000000000000000014806103b557507fffffffff0000000000000000000000000000000000000000000000000000000082167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061031c57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000083161461031c565b606060028054610414906121a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610440906121a2565b801561048d5780601f106104625761010080835404028352916020019161048d565b820191906000526020600020905b81548152906001019060200180831161047057829003601f168201915b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff85163314806104c257506104c285336101e1565b61054e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b8585858585610992565b5050505050565b606081518351146105f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d61746368000000000000000000000000000000000000000000000060648201526084016102e3565b6000835167ffffffffffffffff81111561061157610611611cc3565b60405190808252806020026020018201604052801561063a578160200160208202803683370190505b50905060005b84518110156106b25761068585828151811061065e5761065e6121f6565b6020026020010151858381518110610678576106786121f6565b6020026020010151610242565b828281518110610697576106976121f6565b60209081029190910101526106ab81612254565b9050610640565b509392505050565b73ffffffffffffffffffffffffffffffffffffffff83163314806106e357506106e383336101e1565b61076f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a838383610ccc565b505050565b6003805490600061078f83612254565b91905055506107c933600354600660096107a9919061228d565b6107b490600a6123c5565b60405180602001604052806000815250610ff4565b565b6107d76006600961228d565b6107e290600a6123c5565b81565b6107f0338383611165565b5050565b73ffffffffffffffffffffffffffffffffffffffff851633148061081d575061081d85336101e1565b6108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61055b85858585856112b9565b73ffffffffffffffffffffffffffffffffffffffff83163314806108df57506108df83336101e1565b61096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206e6f7220617070726f766564000000000000000000000000000000000060648201526084016102e3565b61077a8383836114f7565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b8151835114610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff8416610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360005b8451811015610c37576000858281518110610ae757610ae76121f6565b602002602001015190506000858381518110610b0557610b056121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8e168352909352919091205490915081811015610bd2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8e8116855292528083208585039055908b16825281208054849290610c1c90849061228d565b9250508190555050505080610c3090612254565b9050610aca565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610cae9291906123d1565b60405180910390a4610cc4818787878787611701565b505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b8051825114610e00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d6174636800000000000000000000000000000000000000000000000060648201526084016102e3565b604080516020810190915260009081905233905b8351811015610f5f576000848281518110610e3157610e316121f6565b602002602001015190506000848381518110610e4f57610e4f6121f6565b6020908102919091018101516000848152808352604080822073ffffffffffffffffffffffffffffffffffffffff8c168352909352919091205490915081811015610f1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60009283526020838152604080852073ffffffffffffffffffffffffffffffffffffffff8b1686529091529092209103905580610f5781612254565b915050610e14565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051610fd79291906123d1565b60405180910390a460408051602081019091526000905250505050565b73ffffffffffffffffffffffffffffffffffffffff8416611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006110a38561198c565b905060006110b08561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b168452909152812080548792906110ef90849061228d565b9091555050604080518781526020810187905273ffffffffffffffffffffffffffffffffffffffff808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461115c836000898989896119d7565b50505050505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084016102e3565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff841661135c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006113688561198c565b905060006113758561198c565b905060008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c16845290915290205485811015611435576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201527f72207472616e736665720000000000000000000000000000000000000000000060648201526084016102e3565b60008781526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d8116855292528083208985039055908a1682528120805488929061147f90849061228d565b9091555050604080518881526020810188905273ffffffffffffffffffffffffffffffffffffffff808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46114ec848a8a8a8a8a6119d7565b505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831661159a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016102e3565b3360006115a68461198c565b905060006115b38461198c565b604080516020808201835260009182905288825281815282822073ffffffffffffffffffffffffffffffffffffffff8b168352905220549091508481101561167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e63650000000000000000000000000000000000000000000000000000000060648201526084016102e3565b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261115c565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517fbc197c8100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063bc197c819061177890899089908890889088906004016123ff565b6020604051808303816000875af19250505080156117d1575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ce9181019061246a565b60015b6118bb576117dd612487565b806308c379a0141561183157506117f26124a3565b806117fd5750611833565b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102e39190611cb0565b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e74657200000000000000000000000060648201526084016102e3565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fbc197c81000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106119c6576119c66121f6565b602090810291909101015292915050565b73ffffffffffffffffffffffffffffffffffffffff84163b15610cc4576040517ff23a6e6100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063f23a6e6190611a4e908990899088908890889060040161254b565b6020604051808303816000875af1925050508015611aa7575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252611aa49181019061246a565b60015b611ab3576117dd612487565b7fffffffff0000000000000000000000000000000000000000000000000000000081167ff23a6e61000000000000000000000000000000000000000000000000000000001461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a6563746560448201527f6420746f6b656e7300000000000000000000000000000000000000000000000060648201526084016102e3565b803573ffffffffffffffffffffffffffffffffffffffff81168114611ba857600080fd5b919050565b60008060408385031215611bc057600080fd5b611bc983611b84565b946020939093013593505050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c0557600080fd5b50565b600060208284031215611c1a57600080fd5b8135611c2581611bd7565b9392505050565b600060208284031215611c3e57600080fd5b5035919050565b6000815180845260005b81811015611c6b57602081850181015186830182015201611c4f565b81811115611c7d576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611c256020830184611c45565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff82111715611d3657611d36611cc3565b6040525050565b600067ffffffffffffffff821115611d5757611d57611cc3565b5060051b60200190565b600082601f830112611d7257600080fd5b81356020611d7f82611d3d565b604051611d8c8282611cf2565b83815260059390931b8501820192828101915086841115611dac57600080fd5b8286015b84811015611dc75780358352918301918301611db0565b509695505050505050565b600082601f830112611de357600080fd5b813567ffffffffffffffff811115611dfd57611dfd611cc3565b604051611e3260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160182611cf2565b818152846020838601011115611e4757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215611e7c57600080fd5b611e8586611b84565b9450611e9360208701611b84565b9350604086013567ffffffffffffffff80821115611eb057600080fd5b611ebc89838a01611d61565b94506060880135915080821115611ed257600080fd5b611ede89838a01611d61565b93506080880135915080821115611ef457600080fd5b50611f0188828901611dd2565b9150509295509295909350565b60008060408385031215611f2157600080fd5b823567ffffffffffffffff80821115611f3957600080fd5b818501915085601f830112611f4d57600080fd5b81356020611f5a82611d3d565b604051611f678282611cf2565b83815260059390931b8501820192828101915089841115611f8757600080fd5b948201945b83861015611fac57611f9d86611b84565b82529482019490820190611f8c565b96505086013592505080821115611fc257600080fd5b50611fcf85828601611d61565b9150509250929050565b600081518084526020808501945080840160005b8381101561200957815187529582019590820190600101611fed565b509495945050505050565b602081526000611c256020830184611fd9565b60008060006060848603121561203c57600080fd5b61204584611b84565b9250602084013567ffffffffffffffff8082111561206257600080fd5b61206e87838801611d61565b9350604086013591508082111561208457600080fd5b5061209186828701611d61565b9150509250925092565b600080604083850312156120ae57600080fd5b6120b783611b84565b9150602083013580151581146120cc57600080fd5b809150509250929050565b600080604083850312156120ea57600080fd5b6120f383611b84565b915061210160208401611b84565b90509250929050565b600080600080600060a0868803121561212257600080fd5b61212b86611b84565b945061213960208701611b84565b93506040860135925060608601359150608086013567ffffffffffffffff81111561216357600080fd5b611f0188828901611dd2565b60008060006060848603121561218457600080fd5b61218d84611b84565b95602085013595506040909401359392505050565b600181811c908216806121b657607f821691505b602082108114156121f0577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561228657612286612225565b5060010190565b600082198211156122a0576122a0612225565b500190565b600181815b808511156122fe57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156122e4576122e4612225565b808516156122f157918102915b93841c93908002906122aa565b509250929050565b6000826123155750600161031c565b816123225750600061031c565b816001811461233857600281146123425761235e565b600191505061031c565b60ff84111561235357612353612225565b50506001821b61031c565b5060208310610133831016604e8410600b8410161715612381575081810a61031c565b61238b83836122a5565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123bd576123bd612225565b029392505050565b6000611c258383612306565b6040815260006123e46040830185611fd9565b82810360208401526123f68185611fd9565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a0604083015261243860a0830186611fd9565b828103606084015261244a8186611fd9565b9050828103608084015261245e8185611c45565b98975050505050505050565b60006020828403121561247c57600080fd5b8151611c2581611bd7565b600060033d11156124a05760046000803e5060005160e01c5b90565b600060443d10156124b15790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff81602484011181841117156124ff57505050505090565b82850191508151818111156125175750505050505090565b843d87010160208285010111156125315750505050505090565b61254060208286010187611cf2565b509095945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015283606083015260a0608083015261259060a0830184611c45565b97965050505050505056fea264697066735822122016db6d4cb7213a3f2f49f20fb4a5e63c755871b7fd2f84a9fc2a8871771fb81d64736f6c634300080a0033"; type ReserveTokenERC1155ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveTokenERC721__factory.ts b/src/typechain/factories/ReserveTokenERC721__factory.ts index b5304c2..f53f287 100644 --- a/src/typechain/factories/ReserveTokenERC721__factory.ts +++ b/src/typechain/factories/ReserveTokenERC721__factory.ts @@ -380,7 +380,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611b2880620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b6101186101133660046115eb565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b604051610124919061167e565b610155610150366004611691565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d6101883660046116d3565b610442565b005b61018d61019d3660046116fd565b6105d4565b61018d6101b03660046116fd565b610676565b61018d6101c3366004611691565b610691565b6101556101d6366004611691565b610732565b6101ee6101e9366004611739565b6107be565b604051908152602001610124565b61018d61088c565b6101356108af565b6101ee60065481565b61018d610223366004611754565b6108be565b61018d6102363660046117bf565b6108cd565b610135610249366004611691565b610975565b61011861025c3660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546103b7906118ec565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b6000610419826109e9565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061044d82610732565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806105395750610539813361025c565b6105c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610507565b6105cf8383610a74565b505050565b6105df335b82610b14565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b6105cf838383610bd4565b6105cf838383604051806020016040528060008152506108cd565b61069a336105d9565b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61072f81610e3b565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600073ffffffffffffffffffffffffffffffffffffffff8216610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610507565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061089c8361196f565b91905055506108ad33600654610f08565b565b60606001805461038b906118ec565b6108c93383836110ca565b5050565b6108d73383610b14565b610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61096f848484846111f8565b50505050565b6060610980826109e9565b600061099760408051602081019091526000815290565b905060008151116109b757604051806020016040528060008152506109e2565b806109c18461129b565b6040516020016109d29291906119a8565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610ace82610732565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b2083610732565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b8e575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610bcc57508373ffffffffffffffffffffffffffffffffffffffff16610bb48461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610bf482610732565b73ffffffffffffffffffffffffffffffffffffffff1614610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b610d44600082610a74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610d7a9084906119d7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610db59084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610e4682610732565b9050610e53600083610a74565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290610e899084906119d7565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff8216610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610507565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110479084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611203848484610bd4565b61120f848484846113cd565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b6060816112db57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561130557806112ef8161196f565b91506112fe9050600a83611a35565b91506112df565b60008167ffffffffffffffff81111561132057611320611790565b6040519080825280601f01601f19166020018201604052801561134a576020820181803683370190505b5090505b8415610bcc5761135f6001836119d7565b915061136c600a86611a49565b6113779060306119ee565b60f81b81838151811061138c5761138c611a5d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506113c6600a86611a35565b945061134e565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b2576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611444903390899088908890600401611a8c565b6020604051808303816000875af192505050801561149d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149a91810190611ad5565b60015b611567573d8080156114cb576040519150601f19603f3d011682016040523d82523d6000602084013e6114d0565b606091505b50805161155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610bcc565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461072f57600080fd5b6000602082840312156115fd57600080fd5b81356109e2816115bd565b60005b8381101561162357818101518382015260200161160b565b8381111561096f5750506000910152565b6000815180845261164c816020860160208601611608565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109e26020830184611634565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b6109e2826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119a1576119a1611940565b5060010190565b600083516119ba818460208801611608565b8351908301906119ce818360208801611608565b01949350505050565b6000828210156119e9576119e9611940565b500390565b60008219821115611a0157611a01611940565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611a4457611a44611a06565b500490565b600082611a5857611a58611a06565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611acb6080830184611634565b9695505050505050565b600060208284031215611ae757600080fd5b81516109e2816115bd56fea2646970667358221220a5bf92cfa455d02ad8ca7e20d08232e22fc1a9751952298060b1dfc5b3860ff064736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600881526715195cdd0813919560c21b6020808301918252835180850190945260048452631513919560e21b9084015281519192916200005e91600091620001dd565b50805162000074906001906020840190620001dd565b5050600060068190556200008b9150339062000091565b620002e7565b6001600160a01b038216620000ed5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b6000818152600260205260409020546001600160a01b031615620001545760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401620000e4565b6001600160a01b03821660009081526003602052604081208054600192906200017f90849062000283565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054620001eb90620002aa565b90600052602060002090601f0160209004810192826200020f57600085556200025a565b82601f106200022a57805160ff19168380011785556200025a565b828001600101855582156200025a579182015b828111156200025a5782518255916020019190600101906200023d565b50620002689291506200026c565b5090565b5b808211156200026857600081556001016200026d565b60008219821115620002a557634e487b7160e01b600052601160045260246000fd5b500190565b600181811c90821680620002bf57607f821691505b60208210811415620002e157634e487b7160e01b600052602260045260246000fd5b50919050565b611b2880620002f76000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c806370a0823111610097578063a22cb46511610066578063a22cb46514610215578063b88d4fde14610228578063c87b56dd1461023b578063e985e9c51461024e57600080fd5b806370a08231146101db57806374f10479146101fc57806395d89b41146102045780639f181b5e1461020c57600080fd5b806323b872dd116100d357806323b872dd1461018f57806342842e0e146101a257806342966c68146101b55780636352211e146101c857600080fd5b806301ffc9a71461010557806306fdde031461012d578063081812fc14610142578063095ea7b31461017a575b600080fd5b6101186101133660046115eb565b610297565b60405190151581526020015b60405180910390f35b61013561037c565b604051610124919061167e565b610155610150366004611691565b61040e565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b61018d6101883660046116d3565b610442565b005b61018d61019d3660046116fd565b6105d4565b61018d6101b03660046116fd565b610676565b61018d6101c3366004611691565b610691565b6101556101d6366004611691565b610732565b6101ee6101e9366004611739565b6107be565b604051908152602001610124565b61018d61088c565b6101356108af565b6101ee60065481565b61018d610223366004611754565b6108be565b61018d6102363660046117bf565b6108cd565b610135610249366004611691565b610975565b61011861025c3660046118b9565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260056020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd00000000000000000000000000000000000000000000000000000000148061032a57507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061037657507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606000805461038b906118ec565b80601f01602080910402602001604051908101604052809291908181526020018280546103b7906118ec565b80156104045780601f106103d957610100808354040283529160200191610404565b820191906000526020600020905b8154815290600101906020018083116103e757829003601f168201915b5050505050905090565b6000610419826109e9565b5060009081526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b600061044d82610732565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff821614806105395750610539813361025c565b6105c5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206e6f7220617070726f76656420666f7220616c6c00006064820152608401610507565b6105cf8383610a74565b505050565b6105df335b82610b14565b61066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b6105cf838383610bd4565b6105cf838383604051806020016040528060008152506108cd565b61069a336105d9565b610726576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61072f81610e3b565b50565b60008181526002602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610376576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600073ffffffffffffffffffffffffffffffffffffffff8216610863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f74206120766160448201527f6c6964206f776e657200000000000000000000000000000000000000000000006064820152608401610507565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6006805490600061089c8361196f565b91905055506108ad33600654610f08565b565b60606001805461038b906118ec565b6108c93383836110ca565b5050565b6108d73383610b14565b610963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201527f72206e6f7220617070726f7665640000000000000000000000000000000000006064820152608401610507565b61096f848484846111f8565b50505050565b6060610980826109e9565b600061099760408051602081019091526000815290565b905060008151116109b757604051806020016040528060008152506109e2565b806109c18461129b565b6040516020016109d29291906119a8565b6040516020818303038152906040525b9392505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1661072f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4552433732313a20696e76616c696420746f6b656e20494400000000000000006044820152606401610507565b600081815260046020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610ace82610732565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610b2083610732565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610b8e575073ffffffffffffffffffffffffffffffffffffffff80821660009081526005602090815260408083209388168352929052205460ff165b80610bcc57508373ffffffffffffffffffffffffffffffffffffffff16610bb48461040e565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610bf482610732565b73ffffffffffffffffffffffffffffffffffffffff1614610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610507565b73ffffffffffffffffffffffffffffffffffffffff8216610d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610507565b610d44600082610a74565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120805460019290610d7a9084906119d7565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152600360205260408120805460019290610db59084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6000610e4682610732565b9050610e53600083610a74565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600360205260408120805460019290610e899084906119d7565b909155505060008281526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555183919073ffffffffffffffffffffffffffffffffffffffff8416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b73ffffffffffffffffffffffffffffffffffffffff8216610f85576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610507565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611011576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff821660009081526003602052604081208054600192906110479084906119ee565b909155505060008181526002602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611160576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610507565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526005602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611203848484610bd4565b61120f848484846113cd565b61096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b6060816112db57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561130557806112ef8161196f565b91506112fe9050600a83611a35565b91506112df565b60008167ffffffffffffffff81111561132057611320611790565b6040519080825280601f01601f19166020018201604052801561134a576020820181803683370190505b5090505b8415610bcc5761135f6001836119d7565b915061136c600a86611a49565b6113779060306119ee565b60f81b81838151811061138c5761138c611a5d565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506113c6600a86611a35565b945061134e565b600073ffffffffffffffffffffffffffffffffffffffff84163b156115b2576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611444903390899088908890600401611a8c565b6020604051808303816000875af192505050801561149d575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261149a91810190611ad5565b60015b611567573d8080156114cb576040519150601f19603f3d011682016040523d82523d6000602084013e6114d0565b606091505b50805161155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610507565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610bcc565b506001949350505050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461072f57600080fd5b6000602082840312156115fd57600080fd5b81356109e2816115bd565b60005b8381101561162357818101518382015260200161160b565b8381111561096f5750506000910152565b6000815180845261164c816020860160208601611608565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109e26020830184611634565b6000602082840312156116a357600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146116ce57600080fd5b919050565b600080604083850312156116e657600080fd5b6116ef836116aa565b946020939093013593505050565b60008060006060848603121561171257600080fd5b61171b846116aa565b9250611729602085016116aa565b9150604084013590509250925092565b60006020828403121561174b57600080fd5b6109e2826116aa565b6000806040838503121561176757600080fd5b611770836116aa565b91506020830135801515811461178557600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156117d557600080fd5b6117de856116aa565b93506117ec602086016116aa565b925060408501359150606085013567ffffffffffffffff8082111561181057600080fd5b818701915087601f83011261182457600080fd5b81358181111561183657611836611790565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561187c5761187c611790565b816040528281528a602084870101111561189557600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156118cc57600080fd5b6118d5836116aa565b91506118e3602084016116aa565b90509250929050565b600181811c9082168061190057607f821691505b6020821081141561193a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156119a1576119a1611940565b5060010190565b600083516119ba818460208801611608565b8351908301906119ce818360208801611608565b01949350505050565b6000828210156119e9576119e9611940565b500390565b60008219821115611a0157611a01611940565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611a4457611a44611a06565b500490565b600082611a5857611a58611a06565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525083604083015260806060830152611acb6080830184611634565b9695505050505050565b600060208284031215611ae757600080fd5b81516109e2816115bd56fea2646970667358221220689a7e0759debf8cccfd8fb43341171d5e48769f027676884ea1ca7c3f41d9c764736f6c634300080a0033"; type ReserveTokenERC721ConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/ReserveToken__factory.ts b/src/typechain/factories/ReserveToken__factory.ts index b1d44d9..b1c4f33 100644 --- a/src/typechain/factories/ReserveToken__factory.ts +++ b/src/typechain/factories/ReserveToken__factory.ts @@ -373,7 +373,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea2646970667358221220f04638ff52d92a694e41062191b1ab6e745b6bebfa49858b33d9e84fa9bd2f7464736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b908401528151919291620000629160039162000211565b5080516200007890600490602084019062000211565b505050620000a33360066009620000909190620002cd565b6200009d90600a620003e7565b620000a9565b62000439565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b8060026000828254620001279190620002cd565b90915550506001600160a01b0382166000908152602081905260408120805483929062000156908490620002cd565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200020c60201b620005591760201c565b6001600160a01b03821660009081526005602052604090205460ff16156200020c5760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b505050565b8280546200021f90620003fc565b90600052602060002090601f0160209004810192826200024357600085556200028e565b82601f106200025e57805160ff19168380011785556200028e565b828001600101855582156200028e579182015b828111156200028e57825182559160200191906001019062000271565b506200029c929150620002a0565b5090565b5b808211156200029c5760008155600101620002a1565b634e487b7160e01b600052601160045260246000fd5b60008219821115620002e357620002e3620002b7565b500190565b600181815b80851115620003295781600019048211156200030d576200030d620002b7565b808516156200031b57918102915b93841c9390800290620002ed565b509250929050565b6000826200034257506001620003e1565b816200035157506000620003e1565b81600181146200036a5760028114620003755762000395565b6001915050620003e1565b60ff841115620003895762000389620002b7565b50506001821b620003e1565b5060208310610133831016604e8410600b8410161715620003ba575081810a620003e1565b620003c68383620002e8565b8060001904821115620003dd57620003dd620002b7565b0290505b92915050565b6000620003f5838362000331565b9392505050565b600181811c908216806200041157607f821691505b602082108114156200043357634e487b7160e01b600052602260045260246000fd5b50919050565b6110b380620004496000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d71461029e578063a9059cbb146102b1578063dd62ed3e146102c457600080fd5b8063902d55a51461028e57806395d89b411461029657600080fd5b806348422faa146101c55780635bb9058b146101e857806370a082311461024557806379cc67901461027b57600080fd5b80632e0f2625116100ee5780632e0f262514610186578063313ce5671461018e578063395093511461019d57806342966c68146101b057600080fd5b806306fdde0314610120578063095ea7b31461013e57806318160ddd1461016157806323b872dd14610173575b600080fd5b61012861030a565b6040516101359190610d2f565b60405180910390f35b61015161014c366004610dcb565b61039c565b6040519015158152602001610135565b6002545b604051908152602001610135565b610151610181366004610df5565b6103b6565b610165600681565b60405160068152602001610135565b6101516101ab366004610dcb565b6103da565b6101c36101be366004610e31565b610426565b005b6101516101d3366004610e4a565b60056020526000908152604090205460ff1681565b6101c36101f6366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610165610253366004610e4a565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c3610289366004610dcb565b610433565b61016561044c565b610128610466565b6101516102ac366004610dcb565b610475565b6101516102bf366004610dcb565b61054b565b6101656102d2366004610e6c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461031990610e9f565b80601f016020809104026020016040519081016040528092919081815260200182805461034590610e9f565b80156103925780601f1061036757610100808354040283529160200191610392565b820191906000526020600020905b81548152906001019060200180831161037557829003601f168201915b5050505050905090565b6000336103aa81858561055e565b60019150505b92915050565b6000336103c4858285610711565b6103cf8585856107e8565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103aa9082908690610421908790610f22565b61055e565b6104303382610aa6565b50565b61043e823383610711565b6104488282610aa6565b5050565b61045860066009610f22565b61046390600a61105a565b81565b60606004805461031990610e9f565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091908381101561053e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6103cf828686840361055e565b6000336103aa8185856107e8565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610600576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff82166106a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107e257818110156107d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610535565b6107e2848484840361055e565b50505050565b73ffffffffffffffffffffffffffffffffffffffff831661088b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff821661092e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610535565b610939838383610c9f565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260208190526040902054818110156109ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610a33908490610f22565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a9991815260200190565b60405180910390a36107e2565b73ffffffffffffffffffffffffffffffffffffffff8216610b49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610535565b610b5582600083610c9f565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610c0b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610535565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610c47908490611066565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff1615610559576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e00000000000000000000000000000000000000000000000000006044820152606401610535565b600060208083528351808285015260005b81811015610d5c57858101830151858201604001528201610d40565b81811115610d6e576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610dc657600080fd5b919050565b60008060408385031215610dde57600080fd5b610de783610da2565b946020939093013593505050565b600080600060608486031215610e0a57600080fd5b610e1384610da2565b9250610e2160208501610da2565b9150604084013590509250925092565b600060208284031215610e4357600080fd5b5035919050565b600060208284031215610e5c57600080fd5b610e6582610da2565b9392505050565b60008060408385031215610e7f57600080fd5b610e8883610da2565b9150610e9660208401610da2565b90509250929050565b600181811c90821680610eb357607f821691505b60208210811415610eed577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115610f3557610f35610ef3565b500190565b600181815b80851115610f9357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115610f7957610f79610ef3565b80851615610f8657918102915b93841c9390800290610f3f565b509250929050565b600082610faa575060016103b0565b81610fb7575060006103b0565b8160018114610fcd5760028114610fd757610ff3565b60019150506103b0565b60ff841115610fe857610fe8610ef3565b50506001821b6103b0565b5060208310610133831016604e8410600b8410161715611016575081810a6103b0565b6110208383610f3a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561105257611052610ef3565b029392505050565b6000610e658383610f9b565b60008282101561107857611078610ef3565b50039056fea264697066735822122022daa7804bd34e37470ffa52d47e678f2909ce5936c082fcdd1243f396ec56e064736f6c634300080a0033"; type ReserveTokenConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleFactory__factory.ts b/src/typechain/factories/SaleFactory__factory.ts index 9615c94..b0396b5 100644 --- a/src/typechain/factories/SaleFactory__factory.ts +++ b/src/typechain/factories/SaleFactory__factory.ts @@ -239,7 +239,7 @@ const _abi = [ ]; const _bytecode = - "0x60a06040523480156200001157600080fd5b5060405162006d3838038062006d38833981016040819052620000349162000168565b6001600090815560405182906200004b9062000141565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b5090506001600160a01b038116620000ed5760405162461bcd60e51b815260206004820152601060248201526f182fa4a6a82622a6a2a72a20aa24a7a760811b604482015260640160405180910390fd5b604080513381526001600160a01b03831660208201527f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001f0565b615900806200143883390190565b6001600160a01b03811681146200016557600080fd5b50565b6000608082840312156200017b57600080fd5b604051608081016001600160401b0381118282101715620001ac57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001cf816200014f565b60408201526060830151620001e4816200014f565b60608201529392505050565b60805161122c6200020c600039600061034e015261122c6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046104e7565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b610059610091366004610559565b61028d565b6100cf6100a43660046105fc565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101648484610333565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a4984846040516020016102be92919061095e565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016102e99190610aae565b6020604051808303816000875af1158015610308573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032c9190610ac1565b9392505050565b6000808061034384860186610ed0565b9150915060006103727f0000000000000000000000000000000000000000000000000000000000000000610405565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d906103c99086908690600401611077565b600060405180830381600087803b1580156103e357600080fd5b505af11580156103f7573d6000803e3d6000fd5b509298975050505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b600080602083850312156104fa57600080fd5b823567ffffffffffffffff8082111561051257600080fd5b818501915085601f83011261052657600080fd5b81358181111561053557600080fd5b86602082850101111561054757600080fd5b60209290920196919550909350505050565b6000806040838503121561056c57600080fd5b823567ffffffffffffffff8082111561058457600080fd5b9084019060e0828703121561059857600080fd5b909250602084013590808211156105ae57600080fd5b508301608081860312156105c157600080fd5b809150509250929050565b73ffffffffffffffffffffffffffffffffffffffff811681146105ee57600080fd5b50565b80356104e2816105cc565b60006020828403121561060e57600080fd5b813561032c816105cc565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261064e57600080fd5b830160208101925035905067ffffffffffffffff81111561066e57600080fd5b8060051b360383131561068057600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261070557600080fd5b830160208101925035905067ffffffffffffffff81111561072557600080fd5b80360383131561068057600080fd5b6000604083016107448384610619565b604086528281845260608701905060608260051b88010193508260005b838110156107bc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835261079a82866106d0565b6107a5888284610687565b975050506020928301929190910190600101610761565b50505050506107ce6020840184610619565b85830360208701528083527f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81111561080657600080fd5b60051b8082602085013760009201602001918252509392505050565b600081357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261085657600080fd5b60808452820161086681806106d0565b60808087015261087b61010087018284610687565b91505061088b60208301836106d0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808784030160a08801526108c0838284610687565b9250505060408201356108d2816105cc565b73ffffffffffffffffffffffffffffffffffffffff1660c0860152606082013560e0860152610903602085016105f1565b73ffffffffffffffffffffffffffffffffffffffff81166020870152915060408401356040860152610937606085016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116606087015291505b949350505050565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc185360301811261099657600080fd5b60e060408401526109ad6101208401868301610734565b90506109bb602086016105f1565b73ffffffffffffffffffffffffffffffffffffffff1660608401526109e2604086016105f1565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610a3a8185610822565b95945050505050565b6000815180845260005b81811015610a6957602081850181015186830182015201610a4d565b81811115610a7b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061032c6020830184610a43565b600060208284031215610ad357600080fd5b815161032c816105cc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405290565b6040516080810167ffffffffffffffff81118282101715610b3057610b30610ade565b60405160e0810167ffffffffffffffff81118282101715610b3057610b30610ade565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610bc357610bc3610ade565b604052919050565b600067ffffffffffffffff821115610be557610be5610ade565b5060051b60200190565b600067ffffffffffffffff831115610c0957610c09610ade565b610c3a60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f86011601610b7c565b9050828152838383011115610c4e57600080fd5b828260208301376000602084830101529392505050565b600082601f830112610c7657600080fd5b81356020610c8b610c8683610bcb565b610b7c565b82815260059290921b84018101918181019086841115610caa57600080fd5b8286015b84811015610cc55780358352918301918301610cae565b509695505050505050565b60006040808385031215610ce357600080fd5b610ceb610b0d565b9150823567ffffffffffffffff80821115610d0557600080fd5b818501915085601f830112610d1957600080fd5b81356020610d29610c8683610bcb565b82815260059290921b84018101918181019089841115610d4857600080fd5b8286015b84811015610d9457803586811115610d645760008081fd5b8701603f81018c13610d765760008081fd5b610d868c868301358b8401610bef565b845250918301918301610d4c565b5087525086810135945082851115610dab57600080fd5b610db788868901610c65565b81870152505050505092915050565b600082601f830112610dd757600080fd5b61032c83833560208501610bef565b600060808284031215610df857600080fd5b610e00610b36565b9050813567ffffffffffffffff80821115610e1a57600080fd5b9083019060808286031215610e2e57600080fd5b610e36610b36565b823582811115610e4557600080fd5b610e5187828601610dc6565b825250602083013582811115610e6657600080fd5b610e7287828601610dc6565b60208301525060408301359150610e88826105cc565b81604082015260608301356060820152808452505050610eaa602083016105f1565b602082015260408201356040820152610ec5606083016105f1565b606082015292915050565b60008060408385031215610ee357600080fd5b823567ffffffffffffffff80821115610efb57600080fd5b9084019060e08287031215610f0f57600080fd5b610f17610b59565b823582811115610f2657600080fd5b610f3288828601610cd0565b825250610f41602084016105f1565b6020820152610f52604084016105f1565b6040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c0820152809450506020850135915080821115610f9757600080fd5b50610fa485828601610de6565b9150509250929050565b60008151608084528051608080860152610fcc610100860182610a43565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a08701526110078282610a43565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610956606086018373ffffffffffffffffffffffffffffffffffffffff169052565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b82811015611105577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe808987030184526110f3868651610a43565b955093810193928101926001016110b9565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156111695785518452948501946001949094019392830192611149565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111eb8187610fae565b97965050505050505056fea26469706673582212207ffbc045c1d2983aba7165cb30a2c58f79b65a6675623ca3c332301092a3180c64736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005900380380620059008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161575d620001a36000396000610abb01526000610601015260006108580152600061087f015261575d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461445e565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046144a9565b6103e3565b005b61012f61013f366004614609565b6104ce565b61012f610152366004614743565b610cba565b61015f610f06565b6040519015158152602001610113565b61012f610f1d565b61012f611111565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614755565b61120c565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61196a565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526127ea60e082018190526128de61010083015261296a610120830152612a8b610140830152610160820152612b34610180820152612c3c6101a0820152612d106101c0820152612f0d6101e0820152612f18610200820152612f23610220820152612f2e610240820152612f39610260820152612f6d610280820152612fd36102a08201526130396102c082015261306d6102e08201526130a16103008201526130d66103208201526131316103408201526131876103608201526131b06103808201526132076103a08201526132346103c082015261328b6103e08201526132f66104008201526133536104208201526133916104408201526133ca6104608201526133fe6104808201526134306104a08201526134626104c08201526134946104e08201526134c861050082015261351a61052082015261355361054082015261360561056082015261373261058082015261378e6105a08201526138486105c080830191909152815290516101139190614844565b600d5460ff1660405161011391906148c1565b600754610183565b6000806103da6103d4611a66565b84611ac3565b91509150915091565b6002600d5460ff1660038111156103fc576103fc614857565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611b64565b5050565b600054610100900460ff16158080156104ee5750600054600160ff909116105b806105085750303b158015610508575060005460ff166001145b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105ff8360800135611c38565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b61069b6060840135426148fe565b600e5560a0830135610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506107546040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107ec6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107ac579050509050828160008151811061081557610815614916565b6020026020010181905250818160018151811061083457610834614916565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108a88a80614945565b856040518463ffffffff1660e01b81526004016108c793929190614b8b565b6000604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261092c9190810190614c3c565b905061093781611d63565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561098c60408801602089016144a9565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a1160608801604089016144a9565b73ffffffffffffffffffffffffffffffffffffffff9081166008558651604001511615610a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610b0991908e01908e016144a9565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610b869190614cb3565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610bb19190614844565b6020604051808303816000875af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190614dac565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610c459033908b908590614dc9565b60405180910390a150505050508015610cb557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610cd357610cd3614857565b1415610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610d5457610d54614857565b14610d6157610d61611dee565b336000908152600f602090815260408083209051909291610d8491859101614f22565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610db990614f30565b9091555060009050610dd360808301356060840135611f8d565b90508060066000828254610de79190614f65565b92505081905550816060013560056000828254610e0491906148fe565b909155505060408201803590601190600090610e2390602087016144a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190614f65565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610ea39033908590614f7c565b60405180910390a1600754610ed49073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fb5565b6104ca33610ee66040850135846148fe565b60085473ffffffffffffffffffffffffffffffffffffffff169190611b64565b6000610f18610f13611a66565b612013565b905090565b42600e5410610f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610fa157610fa1614857565b1480610fc357506001600d5460ff166003811115610fc157610fc1614857565b145b611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156110f757600080fd5b505af115801561110b573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561112a5761112a614857565b14611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b61119c610f13611a66565b611202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b61120a612079565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561124b5760035473ffffffffffffffffffffffffffffffffffffffff16611279565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261131b91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156113ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b6002600455604083015161145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006114d8611a66565b90506114e381612013565b15611514576000600d5460ff16600381111561150157611501614857565b141561150f5761150f612079565b61153b565b6001600d5460ff16600381111561152d5761152d614857565b141561153b5761153b6120d9565b6001600d5460ff16600381111561155457611554614857565b146115bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006115d6600554866060015161222b90919063ffffffff16565b90506000806115e58484611ac3565b909250905060006115f6838561222b565b90508760400151811015611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156116d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006116e08383611f8d565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061173983614fa6565b9091555050336000908152600f60209081526040808320905190929161176191859101614fdf565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061179690614fa6565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916117d89084906148fe565b9250508190555082600560008282546117f19190614f65565b92505081905550816006600082825461180a91906148fe565b9250508190555061184733308c602001518561182691906148fe565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fb5565b60075461186b9073ffffffffffffffffffffffffffffffffffffffff163385611b64565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b8360405161189e9392919061502e565b60405180910390a16118af87612013565b1561192957600c546005541015611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611931565b6119316120d9565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff16600381111561198357611983614857565b146119ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b6119f5610f13611a66565b15611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61120a6120d9565b611a986040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610f1890611abe9073ffffffffffffffffffffffffffffffffffffffff16612241565b61226f565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611afa818660016123db565b506000808660200151600288600001510381518110611b1b57611b1b614916565b60200260200101518760200151600189600001510381518110611b4057611b40614916565b602002602001015191509150611b568760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cb59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126b2565b60008111611ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611d2257611d226150d1565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611d8e83604051602001611d7a9190615100565b6040516020818303038152906040526127be565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611de8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e2d5760035473ffffffffffffffffffffffffffffffffffffffff16611e5b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611efd91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fa28385615126565b611fac9190615192565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261110b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bb6565b60006001600554101561202857506000919050565b612043604051806020016040528060008152508360006123db565b50600080836020015160018560000151038151811061206457612064614916565b6020026020010151119050611faf8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b5460065410156000816120ef5760036120f2565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600381111561213657612136614857565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd338260405161216c9291906151cd565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121df57600080fd5b505af11580156121f3573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611b64565b600081831061223a5781611fac565b5090919050565b6060611faf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6138c4565b6122a16040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122d36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115612307576123076144c6565b604051908082528060200260200182016040528015612330578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115612367576123676144c6565b604051908082528060200260200182016040528015612390578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123ca5781602082026020018401528151602001820191506001810190506123a3565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612698576003890198508886015180601f1a975061ffff8160081c169850506006881015612610578761245e57866020028401518252602082019150612623565b600188141561247b57602087028301518252602082019150612623565b6002881415612508578c5187602002106124f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d01518252602082019150612623565b600388141561255157600061253f604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612623565b600488141561256d576125668d8d848a6139ac565b9150612623565b60608761259b578c6040516020016125859190615232565b60405160208183030381529060405290506125fa565b60018814156125b4576125ad8d613b1c565b90506125fa565b60028814156125d0576020808e01516040516125859201615308565b60038814156125fa578c516040805160208101929092520160405160208183030381529060405290505b80511561260a5761260a81613c59565b50612623565b8761261f888463ffffffff8416565b9250505b60208c0151518c511115612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b612419565b6020838303048c52509750505050505050505b9392505050565b6000612714826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ceb9092919063ffffffff16565b805190915015610cb55780806020019051810190612732919061533e565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b60608151826040516020016127d4929190615360565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156128ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d191906153f7565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e91906153f7565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7d91906153f7565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614dac565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612a3c565b60008060008467ffffffffffffffff811115612d2e57612d2e6144c6565b604051908082528060200260200182016040528015612d57578160200160208202803683370190505b50905060008567ffffffffffffffff811115612d7557612d756144c6565b604051908082528060200260200182016040528015612d9e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612df3578251815260209283019201612ddb565b5050602088028101602084015b81831015612e18578251815260209283019201612e00565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612e729087908790600401615410565b600060405180830381865afa158015612e8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ed59190810190615473565b9050846020820160208a0281015b80821015612efe578151835260209283019290910190612ee3565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613cfa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182612fcd858a613cfa565b90613d7b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182613033858a613cfa565b90611f8d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613d90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613ddb565b6000602083028203805b838110156130cb57805180156130c25782526130cb565b506020016130ab565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156130cb5780516131a857600082526130cb565b602001613191565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156132c957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e8575080516020909101906132e18382613e39565b925061329b565b505081526020019392505050565b6020828102820380516000928201835b858210801561333457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e85750805160209091019061334c8382613e74565b9250613306565b6020828102820380516000928201835b85821080156133725750826000105b156132e85750805160209091019061338a8382613ea3565b9250613363565b600060208302820380516000602083015b858110156132e857805183019150828210156133bd57600080fd5b90915081906020016133a2565b600060208302820380516000602083015b858110156132e85780519150816133f157600080fd5b91819004916020016133db565b6020828102820380516000928201835b858210156132e8575080516020909101906134298184615639565b925061340e565b6020828102820380516000928201835b858210156132e85750805182811115613457578092505b602082019150613440565b6020828102820380516000928201835b858210156132e85750805182811015613489578092505b602082019150613472565b600060208302820380516000602083015b858110156132e85780519150816134bb57600080fd5b91819006916020016134a5565b60006020830282038051600080602084015b8681101561350b5783156135035780519250828402915082848304146134ff57600080fd5b8193505b6020016134da565b50505081526020019392505050565b600060208302820380516000602083015b858110156132e8578051830391508282111561354657600080fd5b909150819060200161352b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612a3c9086908690600401615645565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906136de90879087908790600401615674565b602060405180830381865afa1580156136fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371f91906153f7565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d18383613eb9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156137bc576137bc6144c6565b6040519080825280602002602001820160405280156137e5578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613821578151816020018601526020820191506020810190506137ff565b5050519050600061383483838989613f18565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856138b585858585614068565b90955250949695505050505050565b6060833b806138e35750506040805160208101909152600081526126ab565b808411156139015750506040805160208101909152600081526126ab565b8383101561394c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b83830384820360008282106139615782613963565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826139eb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613a36565b8260011415613a0f57506fffffffffffffffffffffffffffffffff90506080613a36565b8260021415613a2b575067ffffffffffffffff90506040613a36565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613a5957613a596144c6565b604051908082528060200260200182016040528015613a82578160200160208202803683370190505b50905060208082019083028a03815b8b821015613aa9578151815260209182019101613a91565b505060608b015160808c015160209081029091010160005b610100811015613b075760208502830182845b82811015613af0578051841c8a16825260209182019101613ad4565b505050613afe8e8e8b6123db565b9b508501613ac1565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613b689190615308565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613ba492916020016156a9565b604051602081830303815290604052905060005b856040015151811015613c50578186604001518281518110613bdc57613bdc614916565b60200260200101515160001b87604001518381518110613bfe57613bfe614916565b6020026020010151604051602001613c18939291906156cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613bb8565b50949350505050565b613ce881604051602401613c6d9190614844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261410e565b50565b6060613b14848460008561412f565b6000808260121415613d0f5783915050611faf565b8260121115613d3b57506012829003613d2981600a615639565b613d339085615126565b915050611faf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d6a81600a615639565b613d339085615192565b5092915050565b600081611fa2670de0b6b3a764000085615126565b600081810b613da0575081611faf565b60008260000b1315613dc857613db782600a615706565b613dc19084615126565b9050611faf565b60ff600083900316613d6a81600a615639565b6000806012831415613df05783915050611faf565b8260121115613e0a57506012829003613d6a81600a615639565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d2981600a615639565b6000828201838110613e4b5780613b14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613e8357506000611faf565b82820282848281613e9657613e96615163565b041415613e4b5780613b14565b6000818311613eb3576000611fac565b50900390565b60008060015b60088111613f10576000613ed386836142c5565b90506000613ee186846142c5565b90506000613eef8383613ea3565b9050613eff856001860383614372565b94505060019092019150613ebf9050565b509392505050565b835160009081908190819060015b6008811161405a57600092508287613f5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613f63565b5060005b60005b8381101561401857613f918c8281518110613f8357613f83614916565b6020026020010151846142c5565b95508a8611613fe35788613fb057613fa9868361222b565b9150613fda565b6001891415613fc357613fa986836143fb565b600289148015613fd1575084155b15613fda578591505b60019450614010565b89614010577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614018565b600101613f66565b508361404157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61404f866001840383614372565b955050600101613f26565b509298975050505050505050565b60008260088111156140d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141025763ffffffff6020820290811b199890981685891b179791506001016140da565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156141c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b61423f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516142689190615715565b60006040518083038185875af1925050503d80600081146142a5576040519150601f19603f3d011682016040523d82523d6000602084013e6142aa565b606091505b50915091506142ba82828661440b565b979650505050505050565b6000816008811115614333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143415760009150613d74565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561223a5781611fac565b6060831561441a5750816126ab565b82511561442a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9190614844565b60006020828403121561447057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613ce857600080fd5b80356144a481614477565b919050565b6000602082840312156144bb57600080fd5b81356126ab81614477565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614518576145186144c6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614565576145656144c6565b604052919050565b600067ffffffffffffffff821115614587576145876144c6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126145c457600080fd5b81356145d76145d28261456d565b61451e565b8181528460208386010111156145ec57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561461c57600080fd5b823567ffffffffffffffff8082111561463457600080fd5b9084019060e0828703121561464857600080fd5b9092506020840135908082111561465e57600080fd5b908401906080828703121561467257600080fd5b61467a6144f5565b82358281111561468957600080fd5b83016080818903121561469b57600080fd5b6146a36144f5565b8135848111156146b257600080fd5b6146be8a8285016145b3565b8252506020820135848111156146d357600080fd5b6146df8a8285016145b3565b602083015250604082013593506146f584614477565b83604082015260608201356060820152808352505061471660208401614499565b60208201526040830135604082015261473160608401614499565b60608201528093505050509250929050565b600060a08284031215611de857600080fd5b600060a0828403121561476757600080fd5b60405160a0810181811067ffffffffffffffff8211171561478a5761478a6144c6565b604052823561479881614477565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b838110156147e95781810151838201526020016147d1565b8381111561110b5750506000910152565b600081518084526148128160208601602086016147ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fac60208301846147fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106148bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611faf8284614886565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614911576149116148cf565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261497957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126149b857600080fd5b830160208101925035905067ffffffffffffffff8111156149d857600080fd5b8060051b3603831315611b5d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614a6557600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614a928384614983565b604086528281845260608701905060608260051b88010193508260005b83811015614b5c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614b1057600080fd5b85018035602067ffffffffffffffff821115614b2b57600080fd5b813603881315614b3a57600080fd5b614b4789838386016149ea565b98509485019493909301925050600101614aaf565b5050505050614b6e6020840184614983565b8583036020870152614b81838284614a33565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614bbb82850187614a82565b84810360408681019190915286518083528388019284019060005b81811015614c2c578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614bd6565b50909a9950505050505050505050565b600060208284031215614c4e57600080fd5b815167ffffffffffffffff811115614c6557600080fd5b8201601f81018413614c7657600080fd5b8051614c846145d28261456d565b818152856020838501011115614c9957600080fd5b614caa8260208301602086016147ce565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614cfa6101408601826147fa565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614d3582826147fa565b91505082604083015116610100860152606082015161012086015260408601519250614d79606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614caa60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614dbe57600080fd5b81516126ab81614477565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614e1d57600080fd5b60e06060840152614e346101408401868301614a82565b9050614e4260208601614499565b73ffffffffffffffffffffffffffffffffffffffff166080840152614e6960408601614499565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613b14604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614ee881614477565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611faf8284614ed6565b600081614f3f57614f3f6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614f7757614f776148cf565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126ab6020830184614ed6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614fd857614fd86148cf565b5060010190565b60a08101611faf82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613b1460c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151198160018501602087016147ce565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561515e5761515e6148cf565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826151c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126ab6020830184614886565b600081518084526020808501945080840160005b838110156152275781518752958201959082019060010161520b565b509495945050505050565b600060208083528351818401528084015160a0604085015261525760c08501826151f7565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156152d057848783030184526152be8287516147fa565b958801959388019391506001016152a4565b5060608a01519650838982030160808a01526152ec81886151f7565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561533257815185529382019390820190600101615316565b50929695505050505050565b60006020828403121561535057600080fd5b815180151581146126ab57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516153e981600e8501602087016147ce565b91909101600e019392505050565b60006020828403121561540957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561545f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161542d565b50505083810382850152614b8181866151f7565b6000602080838503121561548657600080fd5b825167ffffffffffffffff8082111561549e57600080fd5b818501915085601f8301126154b257600080fd5b8151818111156154c4576154c46144c6565b8060051b91506154d584830161451e565b81815291830184019184810190888411156154ef57600080fd5b938501935b8385101561550d578451825293850193908501906154f4565b98975050505050505050565b600181815b8085111561557257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615558576155586148cf565b8085161561556557918102915b93841c939080029061551e565b509250929050565b60008261558957506001611faf565b8161559657506000611faf565b81600181146155ac57600281146155b6576155d2565b6001915050611faf565b60ff8411156155c7576155c76148cf565b50506001821b611faf565b5060208310610133831016604e8410600b84101617156155f5575081810a611faf565b6155ff8383615519565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615631576156316148cf565b029392505050565b6000611fac838361557a565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613b1460408301846151f7565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614caa60608301846151f7565b828152600082516156c18160208501602087016147ce565b919091016020019392505050565b600084516156e18184602089016147ce565b820184815283516156f98160208085019088016147ce565b0160200195945050505050565b6000611fac60ff84168361557a565b600082516149798184602087016147ce56fea2646970667358221220f9203032a8d2e0e66b9e3b314b3e0c47b248b16ae69eb4a32b418064234277d464736f6c634300080a0033"; + "0x60a06040523480156200001157600080fd5b5060405162006fe338038062006fe383398101604081905262000034916200011b565b6001600090815560405182906200004b90620000f4565b81518152602080830151908201526040808301516001600160a01b03908116828401526060938401511692820192909252905190819003608001906000f0801580156200009c573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b031660805250620001a3565b615cb2806200133183390190565b6001600160a01b03811681146200011857600080fd5b50565b6000608082840312156200012e57600080fd5b604051608081016001600160401b03811182821017156200015f57634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620001828162000102565b60408201526060830151620001978162000102565b60608201529392505050565b608051611172620001bf60003960006102e201526111726000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80632ea72a491461004657806333504dad14610083578063fc91a89714610096575b600080fd5b6100596100543660046105eb565b6100df565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61005961009136600461068c565b61028b565b6100cf6100a43660046107c6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b604051901515815260200161007a565b600060026000541415610153576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610163836102be565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff16156101f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161014a565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102b783836040516020016102a3929190610b35565b6040516020818303038152906040526100df565b9392505050565b6000806000838060200190518101906102d79190610edf565b9150915060006103067f0000000000000000000000000000000000000000000000000000000000000000610398565b6040517f278a6a6d00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063278a6a6d9061035d9086908690600401610fbd565b600060405180830381600087803b15801561037757600080fd5b505af115801561038b573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610475576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161014a565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156104cc576104cc61047a565b60405290565b6040805190810167ffffffffffffffff811182821017156104cc576104cc61047a565b60405160e0810167ffffffffffffffff811182821017156104cc576104cc61047a565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561055f5761055f61047a565b604052919050565b600067ffffffffffffffff8211156105815761058161047a565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105c06105bb84610567565b610518565b90508281528383830111156105d457600080fd5b828260208301376000602084830101529392505050565b6000602082840312156105fd57600080fd5b813567ffffffffffffffff81111561061457600080fd5b8201601f8101841361062557600080fd5b610634848235602084016105ad565b949350505050565b600082601f83011261064d57600080fd5b6102b7838335602085016105ad565b73ffffffffffffffffffffffffffffffffffffffff8116811461067e57600080fd5b50565b80356104758161065c565b6000806040838503121561069f57600080fd5b823567ffffffffffffffff808211156106b757600080fd5b9084019060e082870312156106cb57600080fd5b909250602084013590808211156106e157600080fd5b90840190608082870312156106f557600080fd5b6106fd6104a9565b82358281111561070c57600080fd5b83016080818903121561071e57600080fd5b6107266104a9565b81358481111561073557600080fd5b6107418a82850161063c565b82525060208201358481111561075657600080fd5b6107628a82850161063c565b602083015250604082013593506107788461065c565b83604082015260608201356060820152808352505061079960208401610681565b6020820152604083013560408201526107b460608401610681565b60608201528093505050509250929050565b6000602082840312156107d857600080fd5b81356102b78161065c565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261081857600080fd5b830160208101925035905067ffffffffffffffff81111561083857600080fd5b8060051b360383131561084a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156108cc57600080fd5b8260051b8083602087013760009401602001938452509192915050565b6000604083016108f983846107e3565b604086528281845260608701905060608260051b88010193508260005b838110156109c3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe186360301811261097757600080fd5b85018035602067ffffffffffffffff82111561099257600080fd5b8136038813156109a157600080fd5b6109ae8983838601610851565b98509485019493909301925050600101610916565b50505050506109d560208401846107e3565b85830360208701526109e883828461089a565b9695505050505050565b60005b83811015610a0d5781810151838201526020016109f5565b83811115610a1c576000848401525b50505050565b60008151808452610a3a8160208601602086016109f2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60008151608084528051608080860152610a8a610100860182610a22565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808683030160a0870152610ac58282610a22565b915050604082015173ffffffffffffffffffffffffffffffffffffffff80821660c0880152606084015160e088015280602087015116602088015250506040840151604086015260608401519150610634606086018373ffffffffffffffffffffffffffffffffffffffff169052565b60408152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112610b6d57600080fd5b60e06040840152610b8461012084018683016108e9565b9050610b9260208601610681565b73ffffffffffffffffffffffffffffffffffffffff166060840152610bb960408601610681565b73ffffffffffffffffffffffffffffffffffffffff8116608085015250606085013560a0840152608085013560c084015260a085013560e084015260c08501356101008401528281036020840152610c118185610a6c565b95945050505050565b600067ffffffffffffffff821115610c3457610c3461047a565b5060051b60200190565b6000610c4c6105bb84610567565b9050828152838383011115610c6057600080fd5b6102b78360208301846109f2565b600082601f830112610c7f57600080fd5b81516020610c8f6105bb83610c1a565b82815260059290921b84018101918181019086841115610cae57600080fd5b8286015b84811015610cc95780518352918301918301610cb2565b509695505050505050565b60006040808385031215610ce757600080fd5b610cef6104d2565b9150825167ffffffffffffffff80821115610d0957600080fd5b818501915085601f830112610d1d57600080fd5b81516020610d2d6105bb83610c1a565b82815260059290921b84018101918181019089841115610d4c57600080fd5b8286015b84811015610d9857805186811115610d685760008081fd5b8701603f81018c13610d7a5760008081fd5b610d8a8c868301518b8401610c3e565b845250918301918301610d50565b5087525086810151945082851115610daf57600080fd5b610dbb88868901610c6e565b81870152505050505092915050565b80516104758161065c565b600082601f830112610de657600080fd5b6102b783835160208501610c3e565b600060808284031215610e0757600080fd5b610e0f6104a9565b9050815167ffffffffffffffff80821115610e2957600080fd5b9083019060808286031215610e3d57600080fd5b610e456104a9565b825182811115610e5457600080fd5b610e6087828601610dd5565b825250602083015182811115610e7557600080fd5b610e8187828601610dd5565b60208301525060408301519150610e978261065c565b81604082015260608301516060820152808452505050610eb960208301610dca565b602082015260408201516040820152610ed460608301610dca565b606082015292915050565b60008060408385031215610ef257600080fd5b825167ffffffffffffffff80821115610f0a57600080fd5b9084019060e08287031215610f1e57600080fd5b610f266104f5565b825182811115610f3557600080fd5b610f4188828601610cd4565b825250610f5060208401610dca565b6020820152610f6160408401610dca565b6040820152606083015160608201526080830151608082015260a083015160a082015260c083015160c0820152809450506020850151915080821115610fa657600080fd5b50610fb385828601610df5565b9150509250929050565b604081526000835160e0604084015261016083018151604061012086015281815180845261018093508387019150838160051b88010193506020808401935060005b8281101561104b577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe80898703018452611039868651610a22565b95509381019392810192600101610fff565b50948501518785037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee001610140890152805180865290860195600095810194509092505b828510156110af578551845294850194600194909401939283019261108f565b8981015173ffffffffffffffffffffffffffffffffffffffff811660608a0152955060408a015173ffffffffffffffffffffffffffffffffffffffff811660808a0152955060608a015160a089015260808a015160c089015260a08a015160e089015260c08a0151610100890152878403818901525050506111318187610a6c565b97965050505050505056fea26469706673582212206356e1f8158cec5c207ce76a0f8e3c6868598a5d074f2d2ff79815fee546b07b64736f6c634300080a00336101006040523480156200001257600080fd5b5060405162005cb238038062005cb28339810160408190526200003591620001ae565b6060810151306080526001600160a01b031660a052600160055562000059620000d3565b805160c052604080820180516001600160a01b0390811660e05282513381528451602080830191909152850151818501529151811660608084019190915284015116608082015290517fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e9181900360a00190a15062000236565b600054610100900460ff1615620001405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000193576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620001ab57600080fd5b50565b600060808284031215620001c157600080fd5b604051608081016001600160401b0381118282101715620001f257634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620002158162000195565b604082015260608301516200022a8162000195565b60608201529392505050565b60805160a05160c05160e051615a426200027060003960006107ee0152600061046a01526000611b0301526000611b300152615a426000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063ea7cb37011610066578063ea7cb370146101f7578063efbe1c1c1461020c578063f9020e3314610214578063fc0c546a1461022757600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461456e565b61022f565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046145b9565b61024c565b005b61012f61013f366004614744565b610337565b61012f61015236600461487e565b6109ec565b61015f610c38565b6040519015158152602001610113565b61012f610c4f565b61012f610e43565b6009545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614890565b610f3e565b60408051808201825260008082526020918201528151808301835260068082526004918301918252835190815290519181019190915201610113565b6101ff61169c565b604051610113919061497f565b61012f6116af565b600d5460ff1660405161011391906149fc565b600854610183565b60008061024361023d6117ab565b84611808565b91509150915091565b6002600d5460ff16600381111561026557610265614992565b146102d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156103335773ffffffffffffffffffffffffffffffffffffffff808316600090815260116020526040812055600954610333911683836118c4565b5050565b600054610100900460ff16158080156103575750600054600160ff909116105b806103715750303b158015610371575060005460ff166001145b6103fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104688360800135611998565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156104f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f555400000000000000000000000000000000000000000060448201526064016102c8565b610504606084013542614a39565b600e5560a0830135610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f3000000000000000000000000000000000000000000060448201526064016102c8565b8260a00135600b819055506105b66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a082018690529381526002818401819052825181815294850190925293929182015b6106406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610607579050509050828160008151811061066957610669614a51565b6020026020010181905250818160018151811061068857610688614a51565b60209081029190910101526106af6106a08780614a80565b6106a990614b48565b82611ac3565b6106bf60408701602088016145b9565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0860135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561074460608701604088016145b9565b73ffffffffffffffffffffffffffffffffffffffff90811660095585516040015116156107cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f534554000000000000000000000000000000000060448201526064016102c8565b8451306040918201528551606090810151600655815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a499291829161083c91908d01908d016145b9565b73ffffffffffffffffffffffffffffffffffffffff16815260200189600001518152602001896020015173ffffffffffffffffffffffffffffffffffffffff16815260200189604001518152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152506040516020016108b99190614c3b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016108e4919061497f565b6020604051808303816000875af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190614d3d565b73ffffffffffffffffffffffffffffffffffffffff81166008556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff2906109789033908a908590614f62565b60405180910390a15050505080156109e757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610a0557610a05614992565b1415610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f5355434345535300000000000000000000000000000000000060448201526064016102c8565b6003600d5460ff166003811115610a8657610a86614992565b14610a9357610a93611c16565b336000908152600f602090815260408083209051909291610ab6918591016150bb565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610aeb906150c9565b9091555060009050610b0560808301356060840135611db5565b90508060076000828254610b1991906150fe565b92505081905550816060013560066000828254610b369190614a39565b909155505060408201803590601190600090610b5590602087016145b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9e91906150fe565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610bd59033908590615115565b60405180910390a1600854610c069073ffffffffffffffffffffffffffffffffffffffff1633306060860135611ddd565b61033333610c18604085013584614a39565b60095473ffffffffffffffffffffffffffffffffffffffff1691906118c4565b6000610c4a610c456117ab565b611e3b565b905090565b42600e5410610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f55540000000000000000000000000000000000000060448201526064016102c8565b6000600d5460ff166003811115610cd357610cd3614992565b1480610cf557506001600d5460ff166003811115610cf357610cf3614992565b145b610d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016102c8565b6000600655600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610e2957600080fd5b505af1158015610e3d573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115610e5c57610e5c614992565b14610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102c8565b610ece610c456117ab565b610f34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c49564500000000000000000000000000000000000000000000000060448201526064016102c8565b610f3c611ea1565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615610f7d5760035473ffffffffffffffffffffffffffffffffffffffff16610fab565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b60006001544261104d9190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a16002600554141561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c8565b6002600555604083015161118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d000000000000000000000000000000000000000000000060448201526064016102c8565b826060015183604001511115611200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f4445534952454400000000000000000000000060448201526064016102c8565b600061120a6117ab565b905061121581611e3b565b15611246576000600d5460ff16600381111561123357611233614992565b141561124157611241611ea1565b61126d565b6001600d5460ff16600381111561125f5761125f614992565b141561126d5761126d611f01565b6001600d5460ff16600381111561128657611286614992565b146112ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b6000611308600654866060015161205390919063ffffffff16565b90506000806113178484611808565b909250905060006113288385612053565b90508760400151811015611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b000000000000000000000000000060448201526064016102c8565b8760800151821115611406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f50524943450000000000000000000000000000000000000060448201526064016102c8565b60006114128383611db5565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061146b8361513f565b9091555050336000908152600f60209081526040808320905190929161149391859101615178565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906114c89061513f565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff16600090815260119092526040822080549192909161150a908490614a39565b92505081905550826006600082825461152391906150fe565b92505081905550816007600082825461153c9190614a39565b9250508190555061157933308c60200151856115589190614a39565b60095473ffffffffffffffffffffffffffffffffffffffff16929190611ddd565b60085461159d9073ffffffffffffffffffffffffffffffffffffffff1633856118c4565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516115d0939291906151c7565b60405180910390a16115e187611e3b565b1561165b57600c546006541015611656576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611663565b611663611f01565b505060016005555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6060610c4a6116aa82612069565b61228a565b6001600d5460ff1660038111156116c8576116c8614992565b1461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b61173a610c456117ab565b156117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b610f3c611f01565b6117dd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600454610c4a906118039073ffffffffffffffffffffffffffffffffffffffff166122c9565b6122f7565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061184257611842614a51565b60200260200101818152505061185a81866001612463565b50600080866020015160028860000151038151811061187b5761187b614a51565b602002602001015187602001516001896000015103815181106118a0576118a0614a51565b6020026020010151915091506118b68760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109e79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612737565b60008111611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f300000000000000000000000000000000000000000000060448201526064016102c8565b60015463ffffffff1015611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d4158000000000000000000000000000000000000000060448201526064016102c8565b60015415611a8257611a8261526a565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190611b5c907f00000000000000000000000000000000000000000000000000000000000000009087908790600401615329565b6000604051808303816000875af1158015611b7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611bc19190810190615411565b9050611bcc81612843565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611c555760035473ffffffffffffffffffffffffffffffffffffffff16611c83565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611d15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b600060015442611d259190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611dca838561547f565b611dd491906154eb565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610e3d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611916565b600060016006541015611e5057506000919050565b60408051600080825260208201909252611e6b918490612463565b506000808360200151600185600001510381518110611e8c57611e8c614a51565b6020026020010151119050611dd78360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b546007541015600081611f17576003611f1a565b60025b6000600655600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115611f5e57611f5e614992565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051611f94929190615526565b60405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50505050811561033357600a546007546009546103339273ffffffffffffffffffffffffffffffffffffffff918216929116906118c4565b60008183106120625781611dd4565b5090919050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526128ce60e084018190526129c2610100850152612a4e610120850152612b6f610140850152610160840152612c18610180840152612d206101a0840152612df46101c0840152612ff16101e0840152612ffc61020084015261300761022084015261301261024084015261301d6102608401526130516102808401526130b76102a084015261311d6102c08401526131516102e08401526131856103008401526131ba61032084015261321561034084015261326b6103608401526132946103808401526132eb6103a08401526133186103c084015261336f6103e08401526133da6104008401526134376104208401526134756104408401526134ae6104608401526134e26104808401526135146104a08401526135466104c08401526135786104e08401526135ac6105008401526135fe6105208401526136376105408401526136e96105608401526138166105808401526138726105a084015261392c6105c0840152835190850201909252919082815b838110156122815785818151811061224057612240614a51565b602002602001015185602860060183018151811061226057612260614a51565b67ffffffffffffffff90921660209283029190910190910152600101612226565b50505050919050565b60606020820182516020028101600284015b818310156122b9578251815117815260209092019160020161229c565b5050825160020283525090919050565b6060611dd78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6139a8565b6123296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61235b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561238f5761238f6145d6565b6040519080825280602002602001820160405280156123b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123ef576123ef6145d6565b604051908082528060200260200182016040528015612418578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561245257816020820260200184015281516020018201915060018101905061242b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b8489101561271d576003890198508886015180601f1a975061ffff8160081c16985050600688101561269557876124e6578660200284015182526020820191506126a8565b6001881415612503576020870283015182526020820191506126a8565b600288141561258d578c518710612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016102c8565b866020026020018d015182526020820191506126a8565b60038814156125d65760006125c4604080518082018252600080825260209182015281518083019092526006825260049082015290565b518801548352506020909101906126a8565b60048814156125f2576125eb8d8d848a613a90565b91506126a8565b606087612620578c60405160200161260a9190615550565b604051602081830303815290604052905061267f565b6001881415612639576126328d613c00565b905061267f565b6002881415612655576020808e015160405161260a92016155e7565b600388141561267f578c516040805160208101929092520160405160208183030381529060405290505b80511561268f5761268f81613d3d565b506126a8565b876126a4888463ffffffff8416565b9250505b60208c0151518c511115612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102c8565b6124a1565b6020838303048c52509750505050505050505b9392505050565b6000612799826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613dcf9092919063ffffffff16565b8051909150156109e757808060200190518101906127b7919061561d565b6109e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102c8565b60008061286e8360405160200161285a919061563f565b604051602081830303815290604052613dde565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166128c8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b59190615665565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a429190615665565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b619190615665565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612974565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190614d3d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612b20565b60008060008467ffffffffffffffff811115612e1257612e126145d6565b604051908082528060200260200182016040528015612e3b578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e5957612e596145d6565b604051908082528060200260200182016040528015612e82578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612ed7578251815260209283019201612ebf565b5050602088028101602084015b81831015612efc578251815260209283019201612ee4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f56908790879060040161567e565b600060405180830381865afa158015612f73573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612fb991908101906156e1565b9050846020820160208a0281015b80821015612fe2578151835260209283019290910190612fc7565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613e0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b5826130b1858a613e0a565b90613e8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b582613117858a613e0a565b90611db5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613ea0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613eeb565b6000602083028203805b838110156131af57805180156131a65782526131af565b5060200161318f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131af57805161328c57600082526131af565b602001613275565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156133ad57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906133c58382613f49565b925061337f565b505081526020019392505050565b6020828102820380516000928201835b858210801561341857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906134308382613f84565b92506133ea565b6020828102820380516000928201835b85821080156134565750826000105b156133cc5750805160209091019061346e8382613fb3565b9250613447565b600060208302820380516000602083015b858110156133cc57805183019150828210156134a157600080fd5b9091508190602001613486565b600060208302820380516000602083015b858110156133cc5780519150816134d557600080fd5b91819004916020016134bf565b6020828102820380516000928201835b858210156133cc5750805160209091019061350d8184615887565b92506134f2565b6020828102820380516000928201835b858210156133cc575080518281111561353b578092505b602082019150613524565b6020828102820380516000928201835b858210156133cc575080518281101561356d578092505b602082019150613556565b600060208302820380516000602083015b858110156133cc57805191508161359f57600080fd5b9181900691602001613589565b60006020830282038051600080602084015b868110156135ef5783156135e75780519250828402915082848304146135e357600080fd5b8193505b6020016135be565b50505081526020019392505050565b600060208302820380516000602083015b858110156133cc578051830391508282111561362a57600080fd5b909150819060200161360f565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612b209086908690600401615893565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906137c2908790879087906004016158c2565b602060405180830381865afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138039190615665565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b58383613fc9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156138a0576138a06145d6565b6040519080825280602002602001820160405280156138c9578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613905578151816020018601526020820191506020810190506138e3565b5050519050600061391883838989614028565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561399985858585614178565b90955250949695505050505050565b6060833b806139c7575050604080516020810190915260008152612730565b808411156139e5575050604080516020810190915260008152612730565b83831015613a30576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102c8565b8383038482036000828210613a455782613a47565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613acf57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613b1a565b8260011415613af357506fffffffffffffffffffffffffffffffff90506080613b1a565b8260021415613b0f575067ffffffffffffffff90506040613b1a565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b3d57613b3d6145d6565b604051908082528060200260200182016040528015613b66578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b8d578151815260209182019101613b75565b505060608b015160808c015160209081029091010160005b610100811015613beb5760208502830182845b82811015613bd4578051841c8a16825260209182019101613bb8565b505050613be28e8e8b612463565b9b508501613ba5565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c4c91906155e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c8892916020016158f7565b604051602081830303815290604052905060005b856040015151811015613d34578186604001518281518110613cc057613cc0614a51565b60200260200101515160001b87604001518381518110613ce257613ce2614a51565b6020026020010151604051602001613cfc9392919061591d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c9c565b50949350505050565b613dcc81604051602401613d51919061497f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261421e565b50565b6060613bf8848460008561423f565b6060815182604051602001613df4929190615954565b6040516020818303038152906040529050919050565b6000808260121415613e1f5783915050611dd7565b8260121115613e4b57506012829003613e3981600a615887565b613e43908561547f565b915050611dd7565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e7a81600a615887565b613e4390856154eb565b5092915050565b600081611dca670de0b6b3a76400008561547f565b600081810b613eb0575081611dd7565b60008260000b1315613ed857613ec782600a6159eb565b613ed1908461547f565b9050611dd7565b60ff600083900316613e7a81600a615887565b6000806012831415613f005783915050611dd7565b8260121115613f1a57506012829003613e7a81600a615887565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e3981600a615887565b6000828201838110613f5b5780613bf8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f9357506000611dd7565b82820282848281613fa657613fa66154bc565b041415613f5b5780613bf8565b6000818311613fc3576000611dd4565b50900390565b60008060015b60088111614020576000613fe386836143d5565b90506000613ff186846143d5565b90506000613fff8383613fb3565b905061400f856001860383614482565b94505060019092019150613fcf9050565b509392505050565b835160009081908190819060015b6008811161416a5760009250828761406f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614073565b5060005b60005b83811015614128576140a18c828151811061409357614093614a51565b6020026020010151846143d5565b95508a86116140f357886140c0576140b98683612053565b91506140ea565b60018914156140d3576140b9868361450b565b6002891480156140e1575084155b156140ea578591505b60019450614120565b89614120577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614128565b600101614076565b508361415157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61415f866001840383614482565b955050600101614036565b509298975050505050505050565b60008260088111156141e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b6000855b858110156142125763ffffffff6020820290811b199890981685891b179791506001016141ea565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156142d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102c8565b73ffffffffffffffffffffffffffffffffffffffff85163b61434f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c8565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161437891906159fa565b60006040518083038185875af1925050503d80600081146143b5576040519150601f19603f3d011682016040523d82523d6000602084013e6143ba565b606091505b50915091506143ca82828661451b565b979650505050505050565b6000816008811115614443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b826144515760009150613e84565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156144f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156120625781611dd4565b6060831561452a575081612730565b82511561453a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c8919061497f565b60006020828403121561458057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613dcc57600080fd5b80356145b481614587565b919050565b6000602082840312156145cb57600080fd5b813561273081614587565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614628576146286145d6565b60405290565b6040805190810167ffffffffffffffff81118282101715614628576146286145d6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614698576146986145d6565b604052919050565b600067ffffffffffffffff8211156146ba576146ba6145d6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006146f96146f4846146a0565b614651565b905082815283838301111561470d57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261473557600080fd5b611dd4838335602085016146e6565b6000806040838503121561475757600080fd5b823567ffffffffffffffff8082111561476f57600080fd5b9084019060e0828703121561478357600080fd5b9092506020840135908082111561479957600080fd5b90840190608082870312156147ad57600080fd5b6147b5614605565b8235828111156147c457600080fd5b8301608081890312156147d657600080fd5b6147de614605565b8135848111156147ed57600080fd5b6147f98a828501614724565b82525060208201358481111561480e57600080fd5b61481a8a828501614724565b6020830152506040820135935061483084614587565b836040820152606082013560608201528083525050614851602084016145a9565b60208201526040830135604082015261486c606084016145a9565b60608201528093505050509250929050565b600060a082840312156128c857600080fd5b600060a082840312156148a257600080fd5b60405160a0810181811067ffffffffffffffff821117156148c5576148c56145d6565b60405282356148d381614587565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561492457818101518382015260200161490c565b83811115610e3d5750506000910152565b6000815180845261494d816020860160208601614909565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dd46020830184614935565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106149f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611dd782846149c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614a4c57614a4c614a0a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614ab457600080fd5b9190910192915050565b600067ffffffffffffffff821115614ad857614ad86145d6565b5060051b60200190565b600082601f830112614af357600080fd5b81356020614b036146f483614abe565b82815260059290921b84018101918181019086841115614b2257600080fd5b8286015b84811015614b3d5780358352918301918301614b26565b509695505050505050565b60006040808336031215614b5b57600080fd5b614b6361462e565b833567ffffffffffffffff80821115614b7b57600080fd5b9085019036601f830112614b8e57600080fd5b81356020614b9e6146f483614abe565b82815260059290921b84018101918181019036841115614bbd57600080fd5b8286015b84811015614c0957803586811115614bd95760008081fd5b870136603f820112614beb5760008081fd5b614bfb36868301358c84016146e6565b845250918301918301614bc1565b5086525087810135955082861115614c2057600080fd5b614c2c36878a01614ae2565b90850152509195945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614c82610140860182614935565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614cbd8282614935565b91505082604083015116610100860152606082015161012086015260408601519250614d01606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d3460a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b600060208284031215614d4f57600080fd5b815161273081614587565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614d8f57600080fd5b830160208101925035905067ffffffffffffffff811115614daf57600080fd5b8060051b36038313156118bd57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614e3c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614e698384614d5a565b604086528281845260608701905060608260051b88010193508260005b83811015614f33577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614ee757600080fd5b85018035602067ffffffffffffffff821115614f0257600080fd5b813603881315614f1157600080fd5b614f1e8983838601614dc1565b98509485019493909301925050600101614e86565b5050505050614f456020840184614d5a565b8583036020870152614f58838284614e0a565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614fb657600080fd5b60e06060840152614fcd6101408401868301614e59565b9050614fdb602086016145a9565b73ffffffffffffffffffffffffffffffffffffffff166080840152615002604086016145a9565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bf8604083018473ffffffffffffffffffffffffffffffffffffffff169052565b80358252602081013561508181614587565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611dd7828461506f565b6000816150d8576150d8614a0a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561511057615110614a0a565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c08101612730602083018461506f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561517157615171614a0a565b5060010190565b60a08101611dd782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bf860c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156152e15782840389526152cf848351614935565b988501989350908401906001016152b7565b5091979650505050505050565b600081518084526020808501945080840160005b8381101561531e57815187529582019590820190600101615302565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261536483880183615299565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261539f84836152ee565b898103848b01528a51808252878c019550908701925060005b818110156153ff5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016153b8565b50919c9b505050505050505050505050565b60006020828403121561542357600080fd5b815167ffffffffffffffff81111561543a57600080fd5b8201601f8101841361544b57600080fd5b80516154596146f4826146a0565b81815285602083850101111561546e57600080fd5b614d34826020830160208601614909565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154b7576154b7614a0a565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615521577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161273060208301846149c1565b60208152815160208201526000602083015160a0604084015261557660c08401826152ee565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526155b28383615299565b92506060860151915080858403016080860152506155d082826152ee565b915050608084015160a08401528091505092915050565b815160009082906020808601845b83811015615611578151855293820193908201906001016155f5565b50929695505050505050565b60006020828403121561562f57600080fd5b8151801515811461273057600080fd5b6000815260008251615658816001850160208701614909565b9190910160010192915050565b60006020828403121561567757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156156cd57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161569b565b50505083810382850152614f5881866152ee565b600060208083850312156156f457600080fd5b825167ffffffffffffffff81111561570b57600080fd5b8301601f8101851361571c57600080fd5b805161572a6146f482614abe565b81815260059190911b8201830190838101908783111561574957600080fd5b928401925b828410156143ca5783518252928401929084019061574e565b600181815b808511156157c057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157a6576157a6614a0a565b808516156157b357918102915b93841c939080029061576c565b509250929050565b6000826157d757506001611dd7565b816157e457506000611dd7565b81600181146157fa576002811461580457615820565b6001915050611dd7565b60ff84111561581557615815614a0a565b50506001821b611dd7565b5060208310610133831016604e8410600b8410161715615843575081810a611dd7565b61584d8383615767565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561587f5761587f614a0a565b029392505050565b6000611dd483836157c8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bf860408301846152ee565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d3460608301846152ee565b8281526000825161590f816020850160208701614909565b919091016020019392505050565b6000845161592f818460208901614909565b82018481528351615947816020808501908801614909565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516159dd81600e850160208701614909565b91909101600e019392505050565b6000611dd460ff8416836157c8565b60008251614ab481846020870161490956fea2646970667358221220e1a399eac34c77ce3a6c714a119ac90edfb230eaf5c38f2072eea700d3a7a9df64736f6c634300080a0033"; type SaleFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SaleReentrant__factory.ts b/src/typechain/factories/SaleReentrant__factory.ts index 55995b5..f531d5d 100644 --- a/src/typechain/factories/SaleReentrant__factory.ts +++ b/src/typechain/factories/SaleReentrant__factory.ts @@ -418,7 +418,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220e0dd9d57fbbc3948965178d9230a25b052de00d9ae7873a64d55485458ea29a764736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b50604080518082018252600b81526a55534420436c617373696360a81b602080830191825283518085019094526005845264555344434360d81b9084015281519192916200006291600391620002da565b50805162000078906004906020840190620002da565b505050620000a3336006600962000090919062000396565b6200009d90600a620004b0565b620000a9565b62000502565b6001600160a01b038216620001055760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064015b60405180910390fd5b6200011360008383620001a0565b806002600082825462000127919062000396565b90915550506001600160a01b038216600090815260208190526040812080548392906200015690849062000396565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b620001b88383836200026e60201b620005da1760201c565b6001600160a01b03821615801590620001de57506006546001600160a01b038381169116145b15620002695760065460405163d48827e960e01b81526007546001600160a01b03908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b1580156200024f57600080fd5b505af115801562000264573d6000803e3d6000fd5b505050505b505050565b620002868383836200026960201b6200066a1760201c565b6001600160a01b03821660009081526005602052604090205460ff1615620002695760405162461bcd60e51b8152602060048201526006602482015265232927ad22a760d11b6044820152606401620000fc565b828054620002e890620004c5565b90600052602060002090601f0160209004810192826200030c576000855562000357565b82601f106200032757805160ff191683800117855562000357565b8280016001018555821562000357579182015b82811115620003575782518255916020019190600101906200033a565b506200036592915062000369565b5090565b5b808211156200036557600081556001016200036a565b634e487b7160e01b600052601160045260246000fd5b60008219821115620003ac57620003ac62000380565b500190565b600181815b80851115620003f2578160001904821115620003d657620003d662000380565b80851615620003e457918102915b93841c9390800290620003b6565b509250929050565b6000826200040b57506001620004aa565b816200041a57506000620004aa565b81600181146200043357600281146200043e576200045e565b6001915050620004aa565b60ff84111562000452576200045262000380565b50506001821b620004aa565b5060208310610133831016604e8410600b841016171562000483575081810a620004aa565b6200048f8383620003b1565b8060001904821115620004a657620004a662000380565b0290505b92915050565b6000620004be8383620003fa565b9392505050565b600181811c90821680620004da57607f821691505b60208210811415620004fc57634e487b7160e01b600052602260045260246000fd5b50919050565b61130780620005126000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806348422faa116100b2578063902d55a511610081578063a457c2d711610066578063a457c2d7146102cc578063a9059cbb146102df578063dd62ed3e146102f257600080fd5b8063902d55a5146102bc57806395d89b41146102c457600080fd5b806348422faa146101f35780635bb9058b1461021657806370a082311461027357806379cc6790146102a957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101be57806339509351146101cd57806342966c68146101e057600080fd5b806323b872dd146101a35780632e0f2625146101b657600080fd5b806306fdde031461013b578063095ea7b3146101595780630c3e78c71461017c57806318160ddd14610191575b600080fd5b610143610338565b6040516101509190610ea6565b60405180910390f35b61016c610167366004610f3b565b6103ca565b6040519015158152602001610150565b61018f61018a366004610f67565b6103e4565b005b6002545b604051908152602001610150565b61016c6101b1366004610fc6565b610437565b610195600681565b60405160068152602001610150565b61016c6101db366004610f3b565b61045b565b61018f6101ee366004611007565b6104a7565b61016c610201366004611020565b60056020526000908152604090205460ff1681565b61018f610224366004611020565b73ffffffffffffffffffffffffffffffffffffffff16600090815260056020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055565b610195610281366004611020565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61018f6102b7366004610f3b565b6104b4565b6101956104cd565b6101436104e7565b61016c6102da366004610f3b565b6104f6565b61016c6102ed366004610f3b565b6105cc565b610195610300366004611044565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546103479061107d565b80601f01602080910402602001604051908101604052809291908181526020018280546103739061107d565b80156103c05780601f10610395576101008083540402835291602001916103c0565b820191906000526020600020905b8154815290600101906020018083116103a357829003601f168201915b5050505050905090565b6000336103d881858561066f565b60019150505b92915050565b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580600761043182826110d1565b50505050565b600033610445858285610822565b6104508585856108f3565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103d890829086906104a2908790611176565b61066f565b6104b13382610bb1565b50565b6104bf823383610822565b6104c98282610bb1565b5050565b6104d960066009611176565b6104e490600a6112ae565b81565b6060600480546103479061107d565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156105bf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610450828686840361066f565b6000336103d88185856108f3565b73ffffffffffffffffffffffffffffffffffffffff821660009081526005602052604090205460ff161561066a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f46524f5a454e000000000000000000000000000000000000000000000000000060448201526064016105b6565b505050565b73ffffffffffffffffffffffffffffffffffffffff8316610711576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff82166107b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461043157818110156108e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b6565b610431848484840361066f565b73ffffffffffffffffffffffffffffffffffffffff8316610996576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff8216610a39576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610a44838383610daa565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610afa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b3e908490611176565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ba491815260200190565b60405180910390a3610431565b73ffffffffffffffffffffffffffffffffffffffff8216610c54576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b610c6082600083610daa565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610d16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105b6565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610d529084906112ba565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b610db58383836105da565b73ffffffffffffffffffffffffffffffffffffffff821615801590610df4575060065473ffffffffffffffffffffffffffffffffffffffff8381169116145b1561066a576006546040517fd48827e900000000000000000000000000000000000000000000000000000000815260075473ffffffffffffffffffffffffffffffffffffffff908116600483015260085460248301526009546044830152600a546064830152600b5460848301529091169063d48827e99060a401600060405180830381600087803b158015610e8957600080fd5b505af1158015610e9d573d6000803e3d6000fd5b50505050505050565b600060208083528351808285015260005b81811015610ed357858101830151858201604001528201610eb7565b81811115610ee5576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146104b157600080fd5b60008060408385031215610f4e57600080fd5b8235610f5981610f19565b946020939093013593505050565b60008082840360c0811215610f7b57600080fd5b8335610f8681610f19565b925060a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082011215610fb857600080fd5b506020830190509250929050565b600080600060608486031215610fdb57600080fd5b8335610fe681610f19565b92506020840135610ff681610f19565b929592945050506040919091013590565b60006020828403121561101957600080fd5b5035919050565b60006020828403121561103257600080fd5b813561103d81610f19565b9392505050565b6000806040838503121561105757600080fd5b823561106281610f19565b9150602083013561107281610f19565b809150509250929050565b600181811c9082168061109157607f821691505b602082108114156110cb577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b81356110dc81610f19565b73ffffffffffffffffffffffffffffffffffffffff81167fffffffffffffffffffffffff000000000000000000000000000000000000000083541617825550602082013560018201556040820135600282015560608201356003820155608082013560048201555050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561118957611189611147565b500190565b600181815b808511156111e757817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156111cd576111cd611147565b808516156111da57918102915b93841c9390800290611193565b509250929050565b6000826111fe575060016103de565b8161120b575060006103de565b8160018114611221576002811461122b57611247565b60019150506103de565b60ff84111561123c5761123c611147565b50506001821b6103de565b5060208310610133831016604e8410600b841016171561126a575081810a6103de565b611274838361118e565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156112a6576112a6611147565b029392505050565b600061103d83836111ef565b6000828210156112cc576112cc611147565b50039056fea2646970667358221220cd34d0d12b02a8965068db74c2a2ed032e1bed6fb82086f2f27cfa33865cfb6d64736f6c634300080a0033"; type SaleReentrantConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Sale__factory.ts b/src/typechain/factories/Sale__factory.ts index 14c6263..3aad13f 100644 --- a/src/typechain/factories/Sale__factory.ts +++ b/src/typechain/factories/Sale__factory.ts @@ -498,19 +498,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [], - name: "fnPtrs", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [ { @@ -622,6 +609,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [ { @@ -743,7 +743,7 @@ const _abi = [ ]; const _bytecode = - "0x6101006040523480156200001257600080fd5b5060405162005900380380620059008339810160408190526200003591620000e1565b6001600455306080908152606082810180516001600160a01b0390811660a0908152855160c05260408087018051841660e052815133815288516020808301919091528901519281019290925251831694810194909452915116928201929092527fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e910160405180910390a15062000169565b6001600160a01b0381168114620000de57600080fd5b50565b600060808284031215620000f457600080fd5b604051608081016001600160401b03811182821017156200012557634e487b7160e01b600052604160045260246000fd5b8060405250825181526020830151602082015260408301516200014881620000c8565b604082015260608301516200015d81620000c8565b60608201529392505050565b60805160a05160c05160e05161575d620001a36000396000610abb01526000610601015260006108580152600061087f015261575d6000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063efbe1c1c11610066578063efbe1c1c146101f7578063f2cd6c08146101ff578063f9020e33146103ab578063fc0c546a146103be57600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461445e565b6103c6565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046144a9565b6103e3565b005b61012f61013f366004614609565b6104ce565b61012f610152366004614743565b610cba565b61015f610f06565b6040519015158152602001610113565b61012f610f1d565b61012f611111565b6008545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614755565b61120c565b60408051808201825260008082526020918201528151808301835260058082526004918301918252835190815290519181019190915201610113565b61012f61196a565b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c08201526127ea60e082018190526128de61010083015261296a610120830152612a8b610140830152610160820152612b34610180820152612c3c6101a0820152612d106101c0820152612f0d6101e0820152612f18610200820152612f23610220820152612f2e610240820152612f39610260820152612f6d610280820152612fd36102a08201526130396102c082015261306d6102e08201526130a16103008201526130d66103208201526131316103408201526131876103608201526131b06103808201526132076103a08201526132346103c082015261328b6103e08201526132f66104008201526133536104208201526133916104408201526133ca6104608201526133fe6104808201526134306104a08201526134626104c08201526134946104e08201526134c861050082015261351a61052082015261355361054082015261360561056082015261373261058082015261378e6105a08201526138486105c080830191909152815290516101139190614844565b600d5460ff1660405161011391906148c1565b600754610183565b6000806103da6103d4611a66565b84611ac3565b91509150915091565b6002600d5460ff1660038111156103fc576103fc614857565b14610468576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156104ca5773ffffffffffffffffffffffffffffffffffffffff8083166000908152601160205260408120556008546104ca91168383611b64565b5050565b600054610100900460ff16158080156104ee5750600054600160ff909116105b806105085750303b158015610508575060005460ff166001145b610594576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161045f565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156105f257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6105ff8360800135611c38565b7f00000000000000000000000000000000000000000000000000000000000000008360600135111561068d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f5554000000000000000000000000000000000000000000604482015260640161045f565b61069b6060840135426148fe565b600e5560a0830135610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f30000000000000000000000000000000000000000000604482015260640161045f565b8260a00135600b819055506107546040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160e08101825280820185905260608082018690526080820186905260a0820186905260c082018690529381526002818401819052825181815294850190925293929182015b6107ec6040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816107ac579050509050828160008151811061081557610815614916565b6020026020010181905250818160018151811061083457610834614916565b6020908102919091010152600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166317376ae07f00000000000000000000000000000000000000000000000000000000000000006108a88a80614945565b856040518463ffffffff1660e01b81526004016108c793929190614b8b565b6000604051808303816000875af11580156108e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261092c9190810190614c3c565b905061093781611d63565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905561098c60408801602089016144a9565b600980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0870135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055610a1160608801604089016144a9565b73ffffffffffffffffffffffffffffffffffffffff9081166008558651604001511615610a9a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f5345540000000000000000000000000000000000604482015260640161045f565b8551306040918201528651606090810151600555815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a4992918291610b0991908e01908e016144a9565b73ffffffffffffffffffffffffffffffffffffffff1681526020018a6000015181526020018a6020015173ffffffffffffffffffffffffffffffffffffffff1681526020018a6040015181526020018a6060015173ffffffffffffffffffffffffffffffffffffffff16815250604051602001610b869190614cb3565b6040516020818303038152906040526040518263ffffffff1660e01b8152600401610bb19190614844565b6020604051808303816000875af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf49190614dac565b73ffffffffffffffffffffffffffffffffffffffff81166007556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff290610c459033908b908590614dc9565b60405180910390a150505050508015610cb557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610cd357610cd3614857565b1415610d3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f53554343455353000000000000000000000000000000000000604482015260640161045f565b6003600d5460ff166003811115610d5457610d54614857565b14610d6157610d61611dee565b336000908152600f602090815260408083209051909291610d8491859101614f22565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610db990614f30565b9091555060009050610dd360808301356060840135611f8d565b90508060066000828254610de79190614f65565b92505081905550816060013560056000828254610e0491906148fe565b909155505060408201803590601190600090610e2390602087016144a9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e6c9190614f65565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610ea39033908590614f7c565b60405180910390a1600754610ed49073ffffffffffffffffffffffffffffffffffffffff1633306060860135611fb5565b6104ca33610ee66040850135846148fe565b60085473ffffffffffffffffffffffffffffffffffffffff169190611b64565b6000610f18610f13611a66565b612013565b905090565b42600e5410610f88576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f555400000000000000000000000000000000000000604482015260640161045f565b6000600d5460ff166003811115610fa157610fa1614857565b1480610fc357506001600d5460ff166003811115610fc157610fc1614857565b145b611029576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e44454400000000000000000000000000000000000000604482015260640161045f565b6000600555600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156110f757600080fd5b505af115801561110b573d6000803e3d6000fd5b50505050565b6000600d5460ff16600381111561112a5761112a614857565b14611191576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e47000000000000000000000000000000000000000000604482015260640161045f565b61119c610f13611a66565b611202576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c495645000000000000000000000000000000000000000000000000604482015260640161045f565b61120a612079565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff161561124b5760035473ffffffffffffffffffffffffffffffffffffffff16611279565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561130b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b60006001544261131b91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a1600260045414156113ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161045f565b6002600455604083015161145c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d0000000000000000000000000000000000000000000000604482015260640161045f565b8260600151836040015111156114ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f44455349524544000000000000000000000000604482015260640161045f565b60006114d8611a66565b90506114e381612013565b15611514576000600d5460ff16600381111561150157611501614857565b141561150f5761150f612079565b61153b565b6001600d5460ff16600381111561152d5761152d614857565b141561153b5761153b6120d9565b6001600d5460ff16600381111561155457611554614857565b146115bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b60006115d6600554866060015161222b90919063ffffffff16565b90506000806115e58484611ac3565b909250905060006115f6838561222b565b90508760400151811015611666576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b0000000000000000000000000000604482015260640161045f565b87608001518211156116d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f505249434500000000000000000000000000000000000000604482015260640161045f565b60006116e08383611f8d565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061173983614fa6565b9091555050336000908152600f60209081526040808320905190929161176191859101614fdf565b604051602081830303815290604052805190602001208152602001908152602001600020600081548092919061179690614fa6565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff1660009081526011909252604082208054919290916117d89084906148fe565b9250508190555082600560008282546117f19190614f65565b92505081905550816006600082825461180a91906148fe565b9250508190555061184733308c602001518561182691906148fe565b60085473ffffffffffffffffffffffffffffffffffffffff16929190611fb5565b60075461186b9073ffffffffffffffffffffffffffffffffffffffff163385611b64565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b8360405161189e9392919061502e565b60405180910390a16118af87612013565b1561192957600c546005541015611924576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611931565b6119316120d9565b505060016004555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6001600d5460ff16600381111561198357611983614857565b146119ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f41435449564500000000000000000000000000000000000000000000604482015260640161045f565b6119f5610f13611a66565b15611a5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b61120a6120d9565b611a986040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600a54610f1890611abe9073ffffffffffffffffffffffffffffffffffffffff16612241565b61226f565b60408051602080825281830190925260009182918291602082018180368337019050509050836020820152611afa818660016123db565b506000808660200151600288600001510381518110611b1b57611b1b614916565b60200260200101518760200151600189600001510381518110611b4057611b40614916565b602002602001015191509150611b568760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052610cb59084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526126b2565b60008111611ca2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f3000000000000000000000000000000000000000000000604482015260640161045f565b60015463ffffffff1015611d12576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d41580000000000000000000000000000000000000000604482015260640161045f565b60015415611d2257611d226150d1565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b600080611d8e83604051602001611d7a9190615100565b6040516020818303038152906040526127be565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611de8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611e2d5760035473ffffffffffffffffffffffffffffffffffffffff16611e5b565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e000000000000000000000000000000000000000000000000604482015260640161045f565b600060015442611efd91906148fe565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611fa28385615126565b611fac9190615192565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261110b9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bb6565b60006001600554101561202857506000919050565b612043604051806020016040528060008152508360006123db565b50600080836020015160018560000151038151811061206457612064614916565b6020026020010151119050611faf8360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b5460065410156000816120ef5760036120f2565b60025b6000600555600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600381111561213657612136614857565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd338260405161216c9291906151cd565b60405180910390a16007546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b1580156121df57600080fd5b505af11580156121f3573d6000803e3d6000fd5b5050505081156104ca576009546006546008546104ca9273ffffffffffffffffffffffffffffffffffffffff91821692911690611b64565b600081831061223a5781611fac565b5090919050565b6060611faf8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6138c4565b6122a16040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b6122d36040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff811115612307576123076144c6565b604051908082528060200260200182016040528015612330578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff811115612367576123676144c6565b604051908082528060200260200182016040528015612390578160200160208202803683370190505b5090506020870151602002604001870160005b848110156123ca5781602082026020018401528151602001820191506001810190506123a3565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b84891015612698576003890198508886015180601f1a975061ffff8160081c169850506006881015612610578761245e57866020028401518252602082019150612623565b600188141561247b57602087028301518252602082019150612623565b6002881415612508578c5187602002106124f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e475448000000000000000000000000000000000000604482015260640161045f565b866020026020018d01518252602082019150612623565b600388141561255157600061253f604080518082018252600080825260209182015281518083019092526005825260049082015290565b51880154835250602090910190612623565b600488141561256d576125668d8d848a6139ac565b9150612623565b60608761259b578c6040516020016125859190615232565b60405160208183030381529060405290506125fa565b60018814156125b4576125ad8d613b1c565b90506125fa565b60028814156125d0576020808e01516040516125859201615308565b60038814156125fa578c516040805160208101929092520160405160208183030381529060405290505b80511561260a5761260a81613c59565b50612623565b8761261f888463ffffffff8416565b9250505b60208c0151518c511115612693576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f57000000000000000000000000000000000000604482015260640161045f565b612419565b6020838303048c52509750505050505050505b9392505050565b6000612714826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613ceb9092919063ffffffff16565b805190915015610cb55780806020019051810190612732919061533e565b610cb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161045f565b60608151826040516020016127d4929190615360565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156128ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d191906153f7565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561293a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061295e91906153f7565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612a59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a7d91906153f7565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c199190614dac565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612a3c565b60008060008467ffffffffffffffff811115612d2e57612d2e6144c6565b604051908082528060200260200182016040528015612d57578160200160208202803683370190505b50905060008567ffffffffffffffff811115612d7557612d756144c6565b604051908082528060200260200182016040528015612d9e578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612df3578251815260209283019201612ddb565b5050602088028101602084015b81831015612e18578251815260209283019201612e00565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612e729087908790600401615410565b600060405180830381865afa158015612e8f573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612ed59190810190615473565b9050846020820160208a0281015b80821015612efe578151835260209283019290910190612ee3565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613cfa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182612fcd858a613cfa565b90613d7b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d182613033858a613cfa565b90611f8d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613d90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261295e8287613ddb565b6000602083028203805b838110156130cb57805180156130c25782526130cb565b506020016130ab565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156130cb5780516131a857600082526130cb565b602001613191565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156132c957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e8575080516020909101906132e18382613e39565b925061329b565b505081526020019392505050565b6020828102820380516000928201835b858210801561333457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156132e85750805160209091019061334c8382613e74565b9250613306565b6020828102820380516000928201835b85821080156133725750826000105b156132e85750805160209091019061338a8382613ea3565b9250613363565b600060208302820380516000602083015b858110156132e857805183019150828210156133bd57600080fd5b90915081906020016133a2565b600060208302820380516000602083015b858110156132e85780519150816133f157600080fd5b91819004916020016133db565b6020828102820380516000928201835b858210156132e8575080516020909101906134298184615639565b925061340e565b6020828102820380516000928201835b858210156132e85750805182811115613457578092505b602082019150613440565b6020828102820380516000928201835b858210156132e85750805182811015613489578092505b602082019150613472565b600060208302820380516000602083015b858110156132e85780519150816134bb57600080fd5b91819006916020016134a5565b60006020830282038051600080602084015b8681101561350b5783156135035780519250828402915082848304146134ff57600080fd5b8193505b6020016134da565b50505081526020019392505050565b600060208302820380516000602083015b858110156132e8578051830391508282111561354657600080fd5b909150819060200161352b565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612a3c9086908690600401615645565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906136de90879087908790600401615674565b602060405180830381865afa1580156136fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061371f91906153f7565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836128d18383613eb9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156137bc576137bc6144c6565b6040519080825280602002602001820160405280156137e5578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613821578151816020018601526020820191506020810190506137ff565b5050519050600061383483838989613f18565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856138b585858585614068565b90955250949695505050505050565b6060833b806138e35750506040805160208101909152600081526126ab565b808411156139015750506040805160208101909152600081526126ab565b8383101561394c576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161045f565b83830384820360008282106139615782613963565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c168280826139eb57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613a36565b8260011415613a0f57506fffffffffffffffffffffffffffffffff90506080613a36565b8260021415613a2b575067ffffffffffffffff90506040613a36565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613a5957613a596144c6565b604051908082528060200260200182016040528015613a82578160200160208202803683370190505b50905060208082019083028a03815b8b821015613aa9578151815260209182019101613a91565b505060608b015160808c015160209081029091010160005b610100811015613b075760208502830182845b82811015613af0578051841c8a16825260209182019101613ad4565b505050613afe8e8e8b6123db565b9b508501613ac1565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613b689190615308565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613ba492916020016156a9565b604051602081830303815290604052905060005b856040015151811015613c50578186604001518281518110613bdc57613bdc614916565b60200260200101515160001b87604001518381518110613bfe57613bfe614916565b6020026020010151604051602001613c18939291906156cf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613bb8565b50949350505050565b613ce881604051602401613c6d9190614844565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261410e565b50565b6060613b14848460008561412f565b6000808260121415613d0f5783915050611faf565b8260121115613d3b57506012829003613d2981600a615639565b613d339085615126565b915050611faf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d6a81600a615639565b613d339085615192565b5092915050565b600081611fa2670de0b6b3a764000085615126565b600081810b613da0575081611faf565b60008260000b1315613dc857613db782600a615706565b613dc19084615126565b9050611faf565b60ff600083900316613d6a81600a615639565b6000806012831415613df05783915050611faf565b8260121115613e0a57506012829003613d6a81600a615639565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613d2981600a615639565b6000828201838110613e4b5780613b14565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613e8357506000611faf565b82820282848281613e9657613e96615163565b041415613e4b5780613b14565b6000818311613eb3576000611fac565b50900390565b60008060015b60088111613f10576000613ed386836142c5565b90506000613ee186846142c5565b90506000613eef8383613ea3565b9050613eff856001860383614372565b94505060019092019150613ebf9050565b509392505050565b835160009081908190819060015b6008811161405a57600092508287613f5f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff613f63565b5060005b60005b8381101561401857613f918c8281518110613f8357613f83614916565b6020026020010151846142c5565b95508a8611613fe35788613fb057613fa9868361222b565b9150613fda565b6001891415613fc357613fa986836143fb565b600289148015613fd1575084155b15613fda578591505b60019450614010565b89614010577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614018565b600101613f66565b508361404157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61404f866001840383614372565b955050600101613f26565b509298975050505050505050565b60008260088111156140d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b6000855b858110156141025763ffffffff6020820290811b199890981685891b179791506001016140da565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156141c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161045f565b73ffffffffffffffffffffffffffffffffffffffff85163b61423f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161045f565b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516142689190615715565b60006040518083038185875af1925050503d80600081146142a5576040519150601f19603f3d011682016040523d82523d6000602084013e6142aa565b606091505b50915091506142ba82828661440b565b979650505050505050565b6000816008811115614333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b826143415760009150613d74565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156143e0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f54494552000000000000000000000000000000000000000000000000604482015260640161045f565b505063ffffffff602090920291821b199290921691901b1790565b60008183101561223a5781611fac565b6060831561441a5750816126ab565b82511561442a5782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161045f9190614844565b60006020828403121561447057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613ce857600080fd5b80356144a481614477565b919050565b6000602082840312156144bb57600080fd5b81356126ab81614477565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614518576145186144c6565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614565576145656144c6565b604052919050565b600067ffffffffffffffff821115614587576145876144c6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126145c457600080fd5b81356145d76145d28261456d565b61451e565b8181528460208386010111156145ec57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561461c57600080fd5b823567ffffffffffffffff8082111561463457600080fd5b9084019060e0828703121561464857600080fd5b9092506020840135908082111561465e57600080fd5b908401906080828703121561467257600080fd5b61467a6144f5565b82358281111561468957600080fd5b83016080818903121561469b57600080fd5b6146a36144f5565b8135848111156146b257600080fd5b6146be8a8285016145b3565b8252506020820135848111156146d357600080fd5b6146df8a8285016145b3565b602083015250604082013593506146f584614477565b83604082015260608201356060820152808352505061471660208401614499565b60208201526040830135604082015261473160608401614499565b60608201528093505050509250929050565b600060a08284031215611de857600080fd5b600060a0828403121561476757600080fd5b60405160a0810181811067ffffffffffffffff8211171561478a5761478a6144c6565b604052823561479881614477565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b838110156147e95781810151838201526020016147d1565b8381111561110b5750506000910152565b600081518084526148128160208601602086016147ce565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611fac60208301846147fa565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106148bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611faf8284614886565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614911576149116148cf565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261497957600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126149b857600080fd5b830160208101925035905067ffffffffffffffff8111156149d857600080fd5b8060051b3603831315611b5d57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614a6557600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614a928384614983565b604086528281845260608701905060608260051b88010193508260005b83811015614b5c577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614b1057600080fd5b85018035602067ffffffffffffffff821115614b2b57600080fd5b813603881315614b3a57600080fd5b614b4789838386016149ea565b98509485019493909301925050600101614aaf565b5050505050614b6e6020840184614983565b8583036020870152614b81838284614a33565b9695505050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff8616835260208181850152614bbb82850187614a82565b84810360408681019190915286518083528388019284019060005b81811015614c2c578451805184528681015187850152848101518585015287810151888501526080808201519085015260a0808201519085015260c090810151908401529385019360e090920191600101614bd6565b50909a9950505050505050505050565b600060208284031215614c4e57600080fd5b815167ffffffffffffffff811115614c6557600080fd5b8201601f81018413614c7657600080fd5b8051614c846145d28261456d565b818152856020838501011115614c9957600080fd5b614caa8260208301602086016147ce565b95945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614cfa6101408601826147fa565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614d3582826147fa565b91505082604083015116610100860152606082015161012086015260408601519250614d79606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614caa60a086018473ffffffffffffffffffffffffffffffffffffffff169052565b600060208284031215614dbe57600080fd5b81516126ab81614477565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614e1d57600080fd5b60e06060840152614e346101408401868301614a82565b9050614e4260208601614499565b73ffffffffffffffffffffffffffffffffffffffff166080840152614e6960408601614499565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613b14604083018473ffffffffffffffffffffffffffffffffffffffff169052565b803582526020810135614ee881614477565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611faf8284614ed6565b600081614f3f57614f3f6148cf565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082821015614f7757614f776148cf565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c081016126ab6020830184614ed6565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614fd857614fd86148cf565b5060010190565b60a08101611faf82848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613b1460c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60008152600082516151198160018501602087016147ce565b9190910160010192915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561515e5761515e6148cf565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826151c8577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff83168152604081016126ab6020830184614886565b600081518084526020808501945080840160005b838110156152275781518752958201959082019060010161520b565b509495945050505050565b600060208083528351818401528084015160a0604085015261525760c08501826151f7565b905060408501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808684030160608701528282518085528585019150858160051b860101868501945060005b828110156152d057848783030184526152be8287516147fa565b958801959388019391506001016152a4565b5060608a01519650838982030160808a01526152ec81886151f7565b9650505050505050608084015160a08401528091505092915050565b815160009082906020808601845b8381101561533257815185529382019390820190600101615316565b50929695505050505050565b60006020828403121561535057600080fd5b815180151581146126ab57600080fd5b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516153e981600e8501602087016147ce565b91909101600e019392505050565b60006020828403121561540957600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b8281101561545f57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161542d565b50505083810382850152614b8181866151f7565b6000602080838503121561548657600080fd5b825167ffffffffffffffff8082111561549e57600080fd5b818501915085601f8301126154b257600080fd5b8151818111156154c4576154c46144c6565b8060051b91506154d584830161451e565b81815291830184019184810190888411156154ef57600080fd5b938501935b8385101561550d578451825293850193908501906154f4565b98975050505050505050565b600181815b8085111561557257817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615558576155586148cf565b8085161561556557918102915b93841c939080029061551e565b509250929050565b60008261558957506001611faf565b8161559657506000611faf565b81600181146155ac57600281146155b6576155d2565b6001915050611faf565b60ff8411156155c7576155c76148cf565b50506001821b611faf565b5060208310610133831016604e8410600b84101617156155f5575081810a611faf565b6155ff8383615519565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115615631576156316148cf565b029392505050565b6000611fac838361557a565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613b1460408301846151f7565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614caa60608301846151f7565b828152600082516156c18160208501602087016147ce565b919091016020019392505050565b600084516156e18184602089016147ce565b820184815283516156f98160208085019088016147ce565b0160200195945050505050565b6000611fac60ff84168361557a565b600082516149798184602087016147ce56fea2646970667358221220f9203032a8d2e0e66b9e3b314b3e0c47b248b16ae69eb4a32b418064234277d464736f6c634300080a0033"; + "0x6101006040523480156200001257600080fd5b5060405162005cb238038062005cb28339810160408190526200003591620001ae565b6060810151306080526001600160a01b031660a052600160055562000059620000d3565b805160c052604080820180516001600160a01b0390811660e05282513381528451602080830191909152850151818501529151811660608084019190915284015116608082015290517fff17a663a2bf6c40dc1bc40139e25068b0f997d33219ddf9910b87c489ef1b0e9181900360a00190a15062000236565b600054610100900460ff1615620001405760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff908116101562000193576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620001ab57600080fd5b50565b600060808284031215620001c157600080fd5b604051608081016001600160401b0381118282101715620001f257634e487b7160e01b600052604160045260246000fd5b806040525082518152602083015160208201526040830151620002158162000195565b604082015260608301516200022a8162000195565b60608201529392505050565b60805160a05160c05160e051615a426200027060003960006107ee0152600061046a01526000611b0301526000611b300152615a426000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063cd3293de1161008c578063ea7cb37011610066578063ea7cb370146101f7578063efbe1c1c1461020c578063f9020e3314610214578063fc0c546a1461022757600080fd5b8063cd3293de1461017f578063d48827e9146101a8578063e0419ae3146101bb57600080fd5b8063504d14f8116100c8578063504d14f81461014457806368d1e1921461015757806370dea79a1461016f578063be9a65551461017757600080fd5b80630d548a17146100ef57806315a0ea6a1461011c578063278a6a6d14610131575b600080fd5b6101026100fd36600461456e565b61022f565b604080519283526020830191909152015b60405180910390f35b61012f61012a3660046145b9565b61024c565b005b61012f61013f366004614744565b610337565b61012f61015236600461487e565b6109ec565b61015f610c38565b6040519015158152602001610113565b61012f610c4f565b61012f610e43565b6009545b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610113565b61012f6101b6366004614890565b610f3e565b60408051808201825260008082526020918201528151808301835260068082526004918301918252835190815290519181019190915201610113565b6101ff61169c565b604051610113919061497f565b61012f6116af565b600d5460ff1660405161011391906149fc565b600854610183565b60008061024361023d6117ab565b84611808565b91509150915091565b6002600d5460ff16600381111561026557610265614992565b146102d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f5355434345535300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff811660009081526011602052604090205480156103335773ffffffffffffffffffffffffffffffffffffffff808316600090815260116020526040812055600954610333911683836118c4565b5050565b600054610100900460ff16158080156103575750600054600160ff909116105b806103715750303b158015610371575060005460ff166001145b6103fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102c8565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6104688360800135611998565b7f0000000000000000000000000000000000000000000000000000000000000000836060013511156104f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d41585f54494d454f555400000000000000000000000000000000000000000060448201526064016102c8565b610504606084013542614a39565b600e5560a0830135610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f52414953455f3000000000000000000000000000000000000000000060448201526064016102c8565b8260a00135600b819055506105b66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6000808252600160208084018290526040805160c08101825280820185905260608082018690526080820186905260a082018690529381526002818401819052825181815294850190925293929182015b6106406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610607579050509050828160008151811061066957610669614a51565b6020026020010181905250818160018151811061068857610688614a51565b60209081029190910101526106af6106a08780614a80565b6106a990614b48565b82611ac3565b6106bf60408701602088016145b9565b600a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560c0860135600c55600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905561074460608701604088016145b9565b73ffffffffffffffffffffffffffffffffffffffff90811660095585516040015116156107cd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4449535452494255544f525f534554000000000000000000000000000000000060448201526064016102c8565b8451306040918201528551606090810151600655815160a0810183526000927f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1692632ea72a499291829161083c91908d01908d016145b9565b73ffffffffffffffffffffffffffffffffffffffff16815260200189600001518152602001896020015173ffffffffffffffffffffffffffffffffffffffff16815260200189604001518152602001896060015173ffffffffffffffffffffffffffffffffffffffff168152506040516020016108b99190614c3b565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016108e4919061497f565b6020604051808303816000875af1158015610903573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109279190614d3d565b73ffffffffffffffffffffffffffffffffffffffff81166008556040519091507f1c4d4c08e04715f5f20860bc86635f62aebb8449c408e7d53d464fee566f3ff2906109789033908a908590614f62565b60405180910390a15050505080156109e757600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6002600d5460ff166003811115610a0557610a05614992565b1415610a6d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f524546554e445f5355434345535300000000000000000000000000000000000060448201526064016102c8565b6003600d5460ff166003811115610a8657610a86614992565b14610a9357610a93611c16565b336000908152600f602090815260408083209051909291610ab6918591016150bb565b6040516020818303038152906040528051906020012081526020019081526020016000206000815480929190610aeb906150c9565b9091555060009050610b0560808301356060840135611db5565b90508060076000828254610b1991906150fe565b92505081905550816060013560066000828254610b369190614a39565b909155505060408201803590601190600090610b5590602087016145b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b9e91906150fe565b90915550506040517f92f85a40e83c8d882fe8d6e484c07c775950072962f3b22dd739834849a5a32490610bd59033908590615115565b60405180910390a1600854610c069073ffffffffffffffffffffffffffffffffffffffff1633306060860135611ddd565b61033333610c18604085013584614a39565b60095473ffffffffffffffffffffffffffffffffffffffff1691906118c4565b6000610c4a610c456117ab565b611e3b565b905090565b42600e5410610cba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4541524c595f54494d454f55540000000000000000000000000000000000000060448201526064016102c8565b6000600d5460ff166003811115610cd357610cd3614992565b1480610cf557506001600d5460ff166003811115610cf357610cf3614992565b145b610d5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f414c52454144595f454e4445440000000000000000000000000000000000000060448201526064016102c8565b6000600655600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660031790556040513381527f71b8d288b6b795cd40378095d6a9c6466eb4a081c0238dfd691b0b1f5868f1809060200160405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b158015610e2957600080fd5b505af1158015610e3d573d6000803e3d6000fd5b50505050565b6000600d5460ff166003811115610e5c57610e5c614992565b14610ec3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e4f545f50454e44494e4700000000000000000000000000000000000000000060448201526064016102c8565b610ece610c456117ab565b610f34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e4f545f4c49564500000000000000000000000000000000000000000000000060448201526064016102c8565b610f3c611ea1565b565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615610f7d5760035473ffffffffffffffffffffffffffffffffffffffff16610fab565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff811660009081526002602052604090205490915042101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b60006001544261104d9190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a16002600554141561111e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016102c8565b6002600555604083015161118e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4d494e494d554d000000000000000000000000000000000000000000000060448201526064016102c8565b826060015183604001511115611200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4d494e494d554d5f4f5645525f4445534952454400000000000000000000000060448201526064016102c8565b600061120a6117ab565b905061121581611e3b565b15611246576000600d5460ff16600381111561123357611233614992565b141561124157611241611ea1565b61126d565b6001600d5460ff16600381111561125f5761125f614992565b141561126d5761126d611f01565b6001600d5460ff16600381111561128657611286614992565b146112ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b6000611308600654866060015161205390919063ffffffff16565b90506000806113178484611808565b909250905060006113288385612053565b90508760400151811015611398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f494e53554646494349454e545f53544f434b000000000000000000000000000060448201526064016102c8565b8760800151821115611406576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4d4158494d554d5f50524943450000000000000000000000000000000000000060448201526064016102c8565b60006114128383611db5565b6040805160a081018252601080548083528d5173ffffffffffffffffffffffffffffffffffffffff166020808501919091528e015193830193909352606082018690526080820187905292935091600061146b8361513f565b9091555050336000908152600f60209081526040808320905190929161149391859101615178565b60405160208183030381529060405280519060200120815260200190815260200160002060008154809291906114c89061513f565b90915550506020808b01518b5173ffffffffffffffffffffffffffffffffffffffff16600090815260119092526040822080549192909161150a908490614a39565b92505081905550826006600082825461152391906150fe565b92505081905550816007600082825461153c9190614a39565b9250508190555061157933308c60200151856115589190614a39565b60095473ffffffffffffffffffffffffffffffffffffffff16929190611ddd565b60085461159d9073ffffffffffffffffffffffffffffffffffffffff1633856118c4565b7fde28bbdf409354cf811d2e1f52147a0a2a1b89be5848c4b5a41587f63b7cfa6a338b836040516115d0939291906151c7565b60405180910390a16115e187611e3b565b1561165b57600c546006541015611656576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4455535400000000000000000000000000000000000000000000000000000000604082015260600190565b611663565b611663611f01565b505060016005555050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055505050505050565b6060610c4a6116aa82612069565b61228a565b6001600d5460ff1660038111156116c8576116c8614992565b1461172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4143544956450000000000000000000000000000000000000000000060448201526064016102c8565b61173a610c456117ab565b156117a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c89060208082526004908201527f4c49564500000000000000000000000000000000000000000000000000000000604082015260600190565b610f3c611f01565b6117dd6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b600454610c4a906118039073ffffffffffffffffffffffffffffffffffffffff166122c9565b6122f7565b6040805160018082528183019092526000918291829160208083019080368337019050509050838160008151811061184257611842614a51565b60200260200101818152505061185a81866001612463565b50600080866020015160028860000151038151811061187b5761187b614a51565b602002602001015187602001516001896000015103815181106118a0576118a0614a51565b6020026020010151915091506118b68760009052565b9093509150505b9250929050565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526109e79084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152612737565b60008111611a02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f434f4f4c444f574e5f300000000000000000000000000000000000000000000060448201526064016102c8565b60015463ffffffff1015611a72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f434f4f4c444f574e5f4d4158000000000000000000000000000000000000000060448201526064016102c8565b60015415611a8257611a8261526a565b600181905560408051338152602081018390527f6153539ba1c54ed4ef5b6f1fda4b7183eeaa1b5707c152abed56f61e09452521910160405180910390a150565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a190611b5c907f00000000000000000000000000000000000000000000000000000000000000009087908790600401615329565b6000604051808303816000875af1158015611b7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611bc19190810190615411565b9050611bcc81612843565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b60035460009073ffffffffffffffffffffffffffffffffffffffff1615611c555760035473ffffffffffffffffffffffffffffffffffffffff16611c83565b600380547fffffffffffffffffffffffff000000000000000000000000000000000000000016339081179091555b73ffffffffffffffffffffffffffffffffffffffff8116600090815260026020526040902054909150421015611d15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f434f4f4c444f574e00000000000000000000000000000000000000000000000060448201526064016102c8565b600060015442611d259190614a39565b73ffffffffffffffffffffffffffffffffffffffff8316600081815260026020908152604091829020849055815192835282018390529192507fdd9ec76fd04aab7ee6b385c04a7bdf966620500e72b134bfc3f19654fae20f25910160405180910390a15050600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b6000670de0b6b3a7640000611dca838561547f565b611dd491906154eb565b90505b92915050565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052610e3d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611916565b600060016006541015611e5057506000919050565b60408051600080825260208201909252611e6b918490612463565b506000808360200151600185600001510381518110611e8c57611e8c614a51565b6020026020010151119050611dd78360009052565b600d80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040513381527f84d0447ca38875fa61115673259a210915bc1dd53a3c112d6f0790f15956a9659060200160405180910390a1565b600b546007541015600081611f17576003611f1a565b60025b6000600655600d805491925082917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836003811115611f5e57611f5e614992565b02179055507f9aef4e6c636914c533cde859f632ab5e2b68cfd8f06b6a2e18f89783f00072cd3382604051611f94929190615526565b60405180910390a16008546040517f8b24259b00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff90911690638b24259b90602401600060405180830381600087803b15801561200757600080fd5b505af115801561201b573d6000803e3d6000fd5b50505050811561033357600a546007546009546103339273ffffffffffffffffffffffffffffffffffffffff918216929116906118c4565b60008183106120625781611dd4565b5090919050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526128ce60e084018190526129c2610100850152612a4e610120850152612b6f610140850152610160840152612c18610180840152612d206101a0840152612df46101c0840152612ff16101e0840152612ffc61020084015261300761022084015261301261024084015261301d6102608401526130516102808401526130b76102a084015261311d6102c08401526131516102e08401526131856103008401526131ba61032084015261321561034084015261326b6103608401526132946103808401526132eb6103a08401526133186103c084015261336f6103e08401526133da6104008401526134376104208401526134756104408401526134ae6104608401526134e26104808401526135146104a08401526135466104c08401526135786104e08401526135ac6105008401526135fe6105208401526136376105408401526136e96105608401526138166105808401526138726105a084015261392c6105c0840152835190850201909252919082815b838110156122815785818151811061224057612240614a51565b602002602001015185602860060183018151811061226057612260614a51565b67ffffffffffffffff90921660209283029190910190910152600101612226565b50505050919050565b60606020820182516020028101600284015b818310156122b9578251815117815260209092019160020161229c565b5050825160020283525090919050565b6060611dd78260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6139a8565b6123296040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b61235b6040518060a0016040528060008152602001606081526020016060815260200160608152602001600081525090565b60208301805160ff8082168352606084019290925290600882901c1667ffffffffffffffff81111561238f5761238f6145d6565b6040519080825280602002602001820160405280156123b8578160200160208202803683370190505b50602083015260ff601082901c81166080840152601882901c16606060008267ffffffffffffffff8111156123ef576123ef6145d6565b604051908082528060200260200182016040528015612418578160200160208202803683370190505b5090506020870151602002604001870160005b8481101561245257816020820260200184015281516020018201915060018101905061242b565b505060408501525091949350505050565b60208281015183516040850151848402018301518051606087015160a088015160009687968796879695948301938284019391820290920101906002015b8489101561271d576003890198508886015180601f1a975061ffff8160081c16985050600688101561269557876124e6578660200284015182526020820191506126a8565b6001881415612503576020870283015182526020820191506126a8565b600288141561258d578c518710612576576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f434f4e544558545f4c454e47544800000000000000000000000000000000000060448201526064016102c8565b866020026020018d015182526020820191506126a8565b60038814156125d65760006125c4604080518082018252600080825260209182015281518083019092526006825260049082015290565b518801548352506020909101906126a8565b60048814156125f2576125eb8d8d848a613a90565b91506126a8565b606087612620578c60405160200161260a9190615550565b604051602081830303815290604052905061267f565b6001881415612639576126328d613c00565b905061267f565b6002881415612655576020808e015160405161260a92016155e7565b600388141561267f578c516040805160208101929092520160405160208183030381529060405290505b80511561268f5761268f81613d3d565b506126a8565b876126a4888463ffffffff8416565b9250505b60208c0151518c511115612718576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f535441434b5f4f564552464c4f5700000000000000000000000000000000000060448201526064016102c8565b6124a1565b6020838303048c52509750505050505050505b9392505050565b6000612799826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613dcf9092919063ffffffff16565b8051909150156109e757808060200190518101906127b7919061561d565b6109e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016102c8565b60008061286e8360405160200161285a919061563f565b604051602081830303815290604052613dde565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166128c8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa158015612991573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b59190615665565b9093525092949350505050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a429190615665565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015612b3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b619190615665565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401612974565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015612cd9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cfd9190614d3d565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401612b20565b60008060008467ffffffffffffffff811115612e1257612e126145d6565b604051908082528060200260200182016040528015612e3b578160200160208202803683370190505b50905060008567ffffffffffffffff811115612e5957612e596145d6565b604051908082528060200260200182016040528015612e82578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015612ed7578251815260209283019201612ebf565b5050602088028101602084015b81831015612efc578251815260209283019201612ee4565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490612f56908790879060040161567e565b600060405180830381865afa158015612f73573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052612fb991908101906156e1565b9050846020820160208a0281015b80821015612fe2578151835260209283019290910190612fc7565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613e0a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b5826130b1858a613e0a565b90613e8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b582613117858a613e0a565b90611db5565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613ea0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180516000919082612a428287613eeb565b6000602083028203805b838110156131af57805180156131a65782526131af565b5060200161318f565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b838110156131af57805161328c57600082526131af565b602001613275565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156133ad57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906133c58382613f49565b925061337f565b505081526020019392505050565b6020828102820380516000928201835b858210801561341857507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156133cc575080516020909101906134308382613f84565b92506133ea565b6020828102820380516000928201835b85821080156134565750826000105b156133cc5750805160209091019061346e8382613fb3565b9250613447565b600060208302820380516000602083015b858110156133cc57805183019150828210156134a157600080fd5b9091508190602001613486565b600060208302820380516000602083015b858110156133cc5780519150816134d557600080fd5b91819004916020016134bf565b6020828102820380516000928201835b858210156133cc5750805160209091019061350d8184615887565b92506134f2565b6020828102820380516000928201835b858210156133cc575080518281111561353b578092505b602082019150613524565b6020828102820380516000928201835b858210156133cc575080518281101561356d578092505b602082019150613556565b600060208302820380516000602083015b858110156133cc57805191508161359f57600080fd5b9181900691602001613589565b60006020830282038051600080602084015b868110156135ef5783156135e75780519250828402915082848304146135e357600080fd5b8193505b6020016135be565b50505081526020019392505050565b600060208302820380516000602083015b858110156133cc578051830391508282111561362a57600080fd5b909150819060200161360f565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d6860490612b209086908690600401615893565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906137c2908790879087906004016158c2565b602060405180830381865afa1580156137df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138039190615665565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836129b58383613fc9565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156138a0576138a06145d6565b6040519080825280602002602001820160405280156138c9578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b82821015613905578151816020018601526020820191506020810190506138e3565b5050519050600061391883838989614028565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c909116908561399985858585614178565b90955250949695505050505050565b6060833b806139c7575050604080516020810190915260008152612730565b808411156139e5575050604080516020810190915260008152612730565b83831015613a30576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102c8565b8383038482036000828210613a455782613a47565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b600060078216600383811c16828082613acf57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610100613b1a565b8260011415613af357506fffffffffffffffffffffffffffffffff90506080613b1a565b8260021415613b0f575067ffffffffffffffff90506040613b1a565b5063ffffffff905060205b6001600587901c0160008167ffffffffffffffff811115613b3d57613b3d6145d6565b604051908082528060200260200182016040528015613b66578160200160208202803683370190505b50905060208082019083028a03815b8b821015613b8d578151815260209182019101613b75565b505060608b015160808c015160209081029091010160005b610100811015613beb5760208502830182845b82811015613bd4578051841c8a16825260209182019101613bb8565b505050613be28e8e8b612463565b9b508501613ba5565b508a985050505050505050505b949350505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001613c4c91906155e7565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052613c8892916020016158f7565b604051602081830303815290604052905060005b856040015151811015613d34578186604001518281518110613cc057613cc0614a51565b60200260200101515160001b87604001518381518110613ce257613ce2614a51565b6020026020010151604051602001613cfc9392919061591d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613c9c565b50949350505050565b613dcc81604051602401613d51919061497f565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0be77f560000000000000000000000000000000000000000000000000000000017905261421e565b50565b6060613bf8848460008561423f565b6060815182604051602001613df4929190615954565b6040516020818303038152906040529050919050565b6000808260121415613e1f5783915050611dd7565b8260121115613e4b57506012829003613e3981600a615887565b613e43908561547f565b915050611dd7565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e7a81600a615887565b613e4390856154eb565b5092915050565b600081611dca670de0b6b3a76400008561547f565b600081810b613eb0575081611dd7565b60008260000b1315613ed857613ec782600a6159eb565b613ed1908461547f565b9050611dd7565b60ff600083900316613e7a81600a615887565b6000806012831415613f005783915050611dd7565b8260121115613f1a57506012829003613e7a81600a615887565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee8201613e3981600a615887565b6000828201838110613f5b5780613bf8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff949350505050565b600082613f9357506000611dd7565b82820282848281613fa657613fa66154bc565b041415613f5b5780613bf8565b6000818311613fc3576000611dd4565b50900390565b60008060015b60088111614020576000613fe386836143d5565b90506000613ff186846143d5565b90506000613fff8383613fb3565b905061400f856001860383614482565b94505060019092019150613fcf9050565b509392505050565b835160009081908190819060015b6008811161416a5760009250828761406f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff614073565b5060005b60005b83811015614128576140a18c828151811061409357614093614a51565b6020026020010151846143d5565b95508a86116140f357886140c0576140b98683612053565b91506140ea565b60018914156140d3576140b9868361450b565b6002891480156140e1575084155b156140ea578591505b60019450614120565b89614120577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150614128565b600101614076565b508361415157507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61415f866001840383614482565b955050600101614036565b509298975050505050505050565b60008260088111156141e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b6000855b858110156142125763ffffffff6020820290811b199890981685891b179791506001016141ea565b50959695505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b6060824710156142d1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016102c8565b73ffffffffffffffffffffffffffffffffffffffff85163b61434f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102c8565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161437891906159fa565b60006040518083038185875af1925050503d80600081146143b5576040519150601f19603f3d011682016040523d82523d6000602084013e6143ba565b606091505b50915091506143ca82828661451b565b979650505050505050565b6000816008811115614443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b826144515760009150613e84565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008260088111156144f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016102c8565b505063ffffffff602090920291821b199290921691901b1790565b6000818310156120625781611dd4565b6060831561452a575081612730565b82511561453a5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102c8919061497f565b60006020828403121561458057600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114613dcc57600080fd5b80356145b481614587565b919050565b6000602082840312156145cb57600080fd5b813561273081614587565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715614628576146286145d6565b60405290565b6040805190810167ffffffffffffffff81118282101715614628576146286145d6565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614698576146986145d6565b604052919050565b600067ffffffffffffffff8211156146ba576146ba6145d6565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006146f96146f4846146a0565b614651565b905082815283838301111561470d57600080fd5b828260208301376000602084830101529392505050565b600082601f83011261473557600080fd5b611dd4838335602085016146e6565b6000806040838503121561475757600080fd5b823567ffffffffffffffff8082111561476f57600080fd5b9084019060e0828703121561478357600080fd5b9092506020840135908082111561479957600080fd5b90840190608082870312156147ad57600080fd5b6147b5614605565b8235828111156147c457600080fd5b8301608081890312156147d657600080fd5b6147de614605565b8135848111156147ed57600080fd5b6147f98a828501614724565b82525060208201358481111561480e57600080fd5b61481a8a828501614724565b6020830152506040820135935061483084614587565b836040820152606082013560608201528083525050614851602084016145a9565b60208201526040830135604082015261486c606084016145a9565b60608201528093505050509250929050565b600060a082840312156128c857600080fd5b600060a082840312156148a257600080fd5b60405160a0810181811067ffffffffffffffff821117156148c5576148c56145d6565b60405282356148d381614587565b80825250602083013560208201526040830135604082015260608301356060820152608083013560808201528091505092915050565b60005b8381101561492457818101518382015260200161490c565b83811115610e3d5750506000910152565b6000815180845261494d816020860160208601614909565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611dd46020830184614935565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106149f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b60208101611dd782846149c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115614a4c57614a4c614a0a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614ab457600080fd5b9190910192915050565b600067ffffffffffffffff821115614ad857614ad86145d6565b5060051b60200190565b600082601f830112614af357600080fd5b81356020614b036146f483614abe565b82815260059290921b84018101918181019086841115614b2257600080fd5b8286015b84811015614b3d5780358352918301918301614b26565b509695505050505050565b60006040808336031215614b5b57600080fd5b614b6361462e565b833567ffffffffffffffff80821115614b7b57600080fd5b9085019036601f830112614b8e57600080fd5b81356020614b9e6146f483614abe565b82815260059290921b84018101918181019036841115614bbd57600080fd5b8286015b84811015614c0957803586811115614bd95760008081fd5b870136603f820112614beb5760008081fd5b614bfb36868301358c84016146e6565b845250918301918301614bc1565b5086525087810135955082861115614c2057600080fd5b614c2c36878a01614ae2565b90850152509195945050505050565b60208152600073ffffffffffffffffffffffffffffffffffffffff808451166020840152602084015160a060408501528051608060c0860152614c82610140860182614935565b905060208201517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408683030160e0870152614cbd8282614935565b91505082604083015116610100860152606082015161012086015260408601519250614d01606086018473ffffffffffffffffffffffffffffffffffffffff169052565b6060860151608086015260808601519250614d3460a086018473ffffffffffffffffffffffffffffffffffffffff169052565b95945050505050565b600060208284031215614d4f57600080fd5b815161273081614587565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614d8f57600080fd5b830160208101925035905067ffffffffffffffff811115614daf57600080fd5b8060051b36038313156118bd57600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115614e3c57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600060408301614e698384614d5a565b604086528281845260608701905060608260051b88010193508260005b83811015614f33577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112614ee757600080fd5b85018035602067ffffffffffffffff821115614f0257600080fd5b813603881315614f1157600080fd5b614f1e8983838601614dc1565b98509485019493909301925050600101614e86565b5050505050614f456020840184614d5a565b8583036020870152614f58838284614e0a565b9695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8416815260606020820152600083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1853603018112614fb657600080fd5b60e06060840152614fcd6101408401868301614e59565b9050614fdb602086016145a9565b73ffffffffffffffffffffffffffffffffffffffff166080840152615002604086016145a9565b73ffffffffffffffffffffffffffffffffffffffff811660a085015250606085013560c0840152608085013560e084015260a085013561010084015260c085013561012084015280915050613bf8604083018473ffffffffffffffffffffffffffffffffffffffff169052565b80358252602081013561508181614587565b73ffffffffffffffffffffffffffffffffffffffff1660208301526040818101359083015260608082013590830152608090810135910152565b60a08101611dd7828461506f565b6000816150d8576150d8614a0a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b60008282101561511057615110614a0a565b500390565b73ffffffffffffffffffffffffffffffffffffffff8316815260c08101612730602083018461506f565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561517157615171614a0a565b5060010190565b60a08101611dd782848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b60006101608201905073ffffffffffffffffffffffffffffffffffffffff808616835280855116602084015250602084015160408301526040840151606083015260608401516080830152608084015160a0830152613bf860c08301848051825273ffffffffffffffffffffffffffffffffffffffff60208201511660208301526040810151604083015260608101516060830152608081015160808301525050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600081518084526020808501808196508360051b8101915082860160005b858110156152e15782840389526152cf848351614935565b988501989350908401906001016152b7565b5091979650505050505050565b600081518084526020808501945080840160005b8381101561531e57815187529582019590820190600101615302565b509495945050505050565b6000606073ffffffffffffffffffffffffffffffffffffffff861683526020818185015260a086516040808588015261536483880183615299565b91508389015160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa089850301818a015261539f84836152ee565b898103848b01528a51808252878c019550908701925060005b818110156153ff5785518051855288810151898601528581015186860152898101518a8601528381015184860152870151878501529487019460c0909301926001016153b8565b50919c9b505050505050505050505050565b60006020828403121561542357600080fd5b815167ffffffffffffffff81111561543a57600080fd5b8201601f8101841361544b57600080fd5b80516154596146f4826146a0565b81815285602083850101111561546e57600080fd5b614d34826020830160208601614909565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156154b7576154b7614a0a565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082615521577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b73ffffffffffffffffffffffffffffffffffffffff831681526040810161273060208301846149c1565b60208152815160208201526000602083015160a0604084015261557660c08401826152ee565b905060408401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0808584030160608601526155b28383615299565b92506060860151915080858403016080860152506155d082826152ee565b915050608084015160a08401528091505092915050565b815160009082906020808601845b83811015615611578151855293820193908201906001016155f5565b50929695505050505050565b60006020828403121561562f57600080fd5b8151801515811461273057600080fd5b6000815260008251615658816001850160208701614909565b9190910160010192915050565b60006020828403121561567757600080fd5b5051919050565b604080825283519082018190526000906020906060840190828701845b828110156156cd57815173ffffffffffffffffffffffffffffffffffffffff168452928401929084019060010161569b565b50505083810382850152614f5881866152ee565b600060208083850312156156f457600080fd5b825167ffffffffffffffff81111561570b57600080fd5b8301601f8101851361571c57600080fd5b805161572a6146f482614abe565b81815260059190911b8201830190838101908783111561574957600080fd5b928401925b828410156143ca5783518252928401929084019061574e565b600181815b808511156157c057817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156157a6576157a6614a0a565b808516156157b357918102915b93841c939080029061576c565b509250929050565b6000826157d757506001611dd7565b816157e457506000611dd7565b81600181146157fa576002811461580457615820565b6001915050611dd7565b60ff84111561581557615815614a0a565b50506001821b611dd7565b5060208310610133831016604e8410600b8410161715615843575081810a611dd7565b61584d8383615767565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561587f5761587f614a0a565b029392505050565b6000611dd483836157c8565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000613bf860408301846152ee565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000614d3460608301846152ee565b8281526000825161590f816020850160208701614909565b919091016020019392505050565b6000845161592f818460208901614909565b82018481528351615947816020808501908801614909565b0160200195945050505050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516159dd81600e850160208701614909565b91909101600e019392505050565b6000611dd460ff8416836157c8565b60008251614ab481846020870161490956fea2646970667358221220e1a399eac34c77ce3a6c714a119ac90edfb230eaf5c38f2072eea700d3a7a9df64736f6c634300080a0033"; type SaleConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SeedDanceTest__factory.ts b/src/typechain/factories/SeedDanceTest__factory.ts index c141e80..ccb6468 100644 --- a/src/typechain/factories/SeedDanceTest__factory.ts +++ b/src/typechain/factories/SeedDanceTest__factory.ts @@ -187,7 +187,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506106be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806395805dad1161005057806395805dad146100a657806398d4e2e9146100b9578063f4f98ad5146100c157600080fd5b8063453024871461006c5780637fbc62af14610081575b600080fd5b61007f61007a3660046105b3565b6100d4565b005b61009461008f3660046105de565b6100e2565b60405190815260200160405180910390f35b61007f6100b4366004610640565b610165565b600054610094565b61007f6100cf366004610640565b610171565b6100de828261017a565b5050565b82801561015d576000836020015163ffffffff1661013d878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8161014a5761014a610659565b855163ffffffff16919006019190910190505b949350505050565b61016e8161030c565b50565b61016e816103fd565b600054600154610192919063ffffffff1684336100e2565b421115610200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43414e545f52455645414c00000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61022061020c826104c4565b336000908152600260205260409020541490565b610286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f5345435245540000000000000000000000000000000000000000000060448201526064016101f7565b3360008181526002602090815260408083208390558254815180840191909152808201869052815180820383018152606082018084528151919094012093849055939091526080830184905260a083018290525190917fbd515cb7fe6810ea1d996c4efb3231c8b281498ca8062a4ec905d41943824bdf919081900360c00190a1505050565b60015463ffffffff161561038b5760015463ffffffff16421061038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000164263ffffffff16179055600081905560408051338152602081018390527fcfb9c5312b25ec7b809d61e638df25f749eae5d5c25399e1c93d1d319bfd582191015b60405180910390a150565b60015463ffffffff161561047c5760015463ffffffff16421061047c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b33600081815260026020908152604091829020849055815192835282018390527f5e1dd8c4451717d5ca4ffbefdada35e22e0871220b9ed9dd03a351f0938c5ed791016103f2565b6000816040516020016104d991815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b803563ffffffff8116811461052957600080fd5b919050565b60006040828403121561054057600080fd5b6040516040810181811067ffffffffffffffff8211171561058a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290508061059983610515565b81526105a760208401610515565b60208201525092915050565b600080606083850312156105c657600080fd5b6105d0848461052e565b946040939093013593505050565b60008060008060a085870312156105f457600080fd5b843593506020850135925061060c866040870161052e565b9150608085013573ffffffffffffffffffffffffffffffffffffffff8116811461063557600080fd5b939692955090935050565b60006020828403121561065257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220f6d3e4b0441fc8901451c23a922cf6fd960c6dd0ebc2782685943f99a7de273664736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506106be806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c806395805dad1161005057806395805dad146100a657806398d4e2e9146100b9578063f4f98ad5146100c157600080fd5b8063453024871461006c5780637fbc62af14610081575b600080fd5b61007f61007a3660046105b3565b6100d4565b005b61009461008f3660046105de565b6100e2565b60405190815260200160405180910390f35b61007f6100b4366004610640565b610165565b600054610094565b61007f6100cf366004610640565b610171565b6100de828261017a565b5050565b82801561015d576000836020015163ffffffff1661013d878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b8161014a5761014a610659565b855163ffffffff16919006019190910190505b949350505050565b61016e8161030c565b50565b61016e816103fd565b600054600154610192919063ffffffff1684336100e2565b421115610200576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f43414e545f52455645414c00000000000000000000000000000000000000000060448201526064015b60405180910390fd5b61022061020c826104c4565b336000908152600260205260409020541490565b610286576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f5345435245540000000000000000000000000000000000000000000060448201526064016101f7565b3360008181526002602090815260408083208390558254815180840191909152808201869052815180820383018152606082018084528151919094012093849055939091526080830184905260a083018290525190917fbd515cb7fe6810ea1d996c4efb3231c8b281498ca8062a4ec905d41943824bdf919081900360c00190a1505050565b60015463ffffffff161561038b5760015463ffffffff16421061038b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000164263ffffffff16179055600081905560408051338152602081018390527fcfb9c5312b25ec7b809d61e638df25f749eae5d5c25399e1c93d1d319bfd582191015b60405180910390a150565b60015463ffffffff161561047c5760015463ffffffff16421061047c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f535441525445440000000000000000000000000000000000000000000000000060448201526064016101f7565b33600081815260026020908152604091829020849055815192835282018390527f5e1dd8c4451717d5ca4ffbefdada35e22e0871220b9ed9dd03a351f0938c5ed791016103f2565b6000816040516020016104d991815260200190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052805160209091012092915050565b803563ffffffff8116811461052957600080fd5b919050565b60006040828403121561054057600080fd5b6040516040810181811067ffffffffffffffff8211171561058a577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405290508061059983610515565b81526105a760208401610515565b60208201525092915050565b600080606083850312156105c657600080fd5b6105d0848461052e565b946040939093013593505050565b60008060008060a085870312156105f457600080fd5b843593506020850135925061060c866040870161052e565b9150608085013573ffffffffffffffffffffffffffffffffffffffff8116811461063557600080fd5b939692955090935050565b60006020828403121561065257600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea2646970667358221220112861d677319657a73cf01a0a077c2ab116726dcac337f01235ae604d05029a64736f6c634300080a0033"; type SeedDanceTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/SeedDance__factory.ts b/src/typechain/factories/SeedDance__factory.ts index bea1179..2dc01c6 100644 --- a/src/typechain/factories/SeedDance__factory.ts +++ b/src/typechain/factories/SeedDance__factory.ts @@ -118,7 +118,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80637fbc62af14610030575b600080fd5b61004361003e3660046100f1565b610055565b60405190815260200160405180910390f35b8280156100d0576000836020015163ffffffff166100b0878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b816100bd576100bd6101e6565b855163ffffffff16919006019190910190505b949350505050565b803563ffffffff811681146100ec57600080fd5b919050565b60008060008084860360a081121561010857600080fd5b853594506020860135935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561014357600080fd5b506040516040810181811067ffffffffffffffff8211171561018e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525061019f604087016100d8565b81526101ad606087016100d8565b60208201529150608085013573ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea264697066735822122014cb0d9ea3b35210ca6d0ae98a4c8bb2d205e44306c12599a6c0c3e83a7c16be64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061024b806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80637fbc62af14610030575b600080fd5b61004361003e3660046100f1565b610055565b60405190815260200160405180910390f35b8280156100d0576000836020015163ffffffff166100b0878573ffffffffffffffffffffffffffffffffffffffff16604080516020808201949094528082019290925280518083038201815260609092019052805191012090565b816100bd576100bd6101e6565b855163ffffffff16919006019190910190505b949350505050565b803563ffffffff811681146100ec57600080fd5b919050565b60008060008084860360a081121561010857600080fd5b853594506020860135935060407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08201121561014357600080fd5b506040516040810181811067ffffffffffffffff8211171561018e577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b806040525061019f604087016100d8565b81526101ad606087016100d8565b60208201529150608085013573ffffffffffffffffffffffffffffffffffffffff811681146101db57600080fd5b939692955090935050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212207c0cef2136f0e14a21eb5646637198711dd104f504da2297314a8d718b41ef3c64736f6c634300080a0033"; type SeedDanceConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StackHeightTest__factory.ts b/src/typechain/factories/StackHeightTest__factory.ts index 5393fb5..5e56e6d 100644 --- a/src/typechain/factories/StackHeightTest__factory.ts +++ b/src/typechain/factories/StackHeightTest__factory.ts @@ -25,19 +25,6 @@ const _abi = [ name: "WriteError", type: "error", }, - { - inputs: [], - name: "fnPtrs", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [ { @@ -63,6 +50,19 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, { inputs: [], name: "storageOpcodesRange", @@ -91,7 +91,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200261b3803806200261b83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a051612579620000a2600039600061031d0152600061035901526125796000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063f2cd6c0814610098575b600080fd5b610059610054366004611b83565b610244565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b604080516105e081018252600060208201819052818301819052606082018190526080820181905260a0820181905260c082015261050a60e0820181905261060161010083015261068d6101208301526107ae61014083015261016082015261085761018082015261095f6101a0820152610a336101c0820152610c306101e0820152610c3b610200820152610c46610220820152610c51610240820152610c5c610260820152610c90610280820152610cf66102a0820152610d5c6102c0820152610d906102e0820152610dc4610300820152610df9610320820152610e54610340820152610eaa610360820152610ed3610380820152610f2a6103a0820152610f576103c0820152610fae6103e08201526110196104008201526110766104208201526110b46104408201526110ed6104608201526111216104808201526111536104a08201526111856104c08201526111b76104e08201526111eb61050082015261123d6105208201526112766105408201526113286105608201526114556105808201526114b16105a082015261156b6105c0808301919091528152905161008f9190611bee565b6102846040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6102e56040518060e00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816102a5579050509050818160008151811061030e5761030e611c6e565b602002602001018190525060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166317376ae07f000000000000000000000000000000000000000000000000000000000000000086856040518463ffffffff1660e01b815260040161039893929190611e1c565b6000604051808303816000875af11580156103b7573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526103fd9190810190611fce565b905061040881610453565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550505050565b60008061047e8360405160200161046a9190612080565b6040516020818303038152906040526104de565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166104d8576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016104f49291906120a6565b6040516020818303038152906040529050919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156105cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105f1919061213d565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561065d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610681919061213d565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa15801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a0919061213d565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016105b0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610918573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061093c9190612156565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161075f565b60008060008467ffffffffffffffff811115610a5157610a51611c3f565b604051908082528060200260200182016040528015610a7a578160200160208202803683370190505b50905060008567ffffffffffffffff811115610a9857610a98611c3f565b604051908082528060200260200182016040528015610ac1578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015610b16578251815260209283019201610afe565b5050602088028101602084015b81831015610b3b578251815260209283019201610b23565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490610b9590879087906004016121bc565b600060405180830381865afa158015610bb2573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610bf8919081019061221f565b9050846020820160208a0281015b80821015610c21578151835260209283019290910190610c06565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876115e7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610cf0858a6115e7565b90611668565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f182610d56858a6115e7565b9061168e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116a3565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261068182876116ee565b6000602083028203805b83811015610dee5780518015610de5578252610dee565b50602001610dce565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610dee578051610ecb5760008252610dee565b602001610eb4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015610fec57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b57508051602090910190611004838261174c565b9250610fbe565b505081526020019392505050565b6020828102820380516000928201835b858210801561105757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b1561100b5750805160209091019061106f8382611788565b9250611029565b6020828102820380516000928201835b85821080156110955750826000105b1561100b575080516020909101906110ad83826117b7565b9250611086565b600060208302820380516000602083015b8581101561100b57805183019150828210156110e057600080fd5b90915081906020016110c5565b600060208302820380516000602083015b8581101561100b57805191508161111457600080fd5b91819004916020016110fe565b6020828102820380516000928201835b8582101561100b5750805160209091019061114c8184612414565b9250611131565b6020828102820380516000928201835b8582101561100b575080518281111561117a578092505b602082019150611163565b6020828102820380516000928201835b8582101561100b57508051828110156111ac578092505b602082019150611195565b600060208302820380516000602083015b8581101561100b5780519150816111de57600080fd5b91819006916020016111c8565b60006020830282038051600080602084015b8681101561122e57831561122657805192508284029150828483041461122257600080fd5b8193505b6020016111fd565b50505081526020019392505050565b600060208302820380516000602083015b8581101561100b578051830391508282111561126957600080fd5b909150819060200161124e565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061075f9086908690600401612420565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906114019087908790879060040161244f565b602060405180830381865afa15801561141e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611442919061213d565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836105f183836117cd565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156114df576114df611c3f565b604051908082528060200260200182016040528015611508578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561154457815181602001860152602082019150602081019050611522565b505051905060006115578383898961182c565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856115d88585858561197c565b90955250949695505050505050565b60008082601214156115fc57839150506105fb565b82601211156116285750601282900361161681600a612414565b611620908561248d565b9150506105fb565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161165781600a612414565b61162090856124f9565b5092915050565b60008161167d670de0b6b3a76400008561248d565b61168791906124f9565b9392505050565b6000670de0b6b3a764000061167d838561248d565b600081810b6116b35750816105fb565b60008260000b13156116db576116ca82600a612534565b6116d4908461248d565b90506105fb565b60ff60008390031661165781600a612414565b600080601283141561170357839150506105fb565b826012111561171d5750601282900361165781600a612414565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161161681600a612414565b600082820183811061175e5780611780565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082611797575060006105fb565b828202828482816117aa576117aa6124ca565b04141561175e5780611780565b60008183116117c7576000611687565b50900390565b60008060015b600881116118245760006117e78683611a27565b905060006117f58684611a27565b9050600061180383836117b7565b9050611813856001860383611ad4565b945050600190920191506117d39050565b509392505050565b835160009081908190819060015b6008811161196e5760009250828761187357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611877565b5060005b60005b8381101561192c576118a58c828151811061189757611897611c6e565b602002602001015184611a27565b95508a86116118f757886118c4576118bd8683611b5d565b91506118ee565b60018914156118d7576118bd8683611b73565b6002891480156118e5575084155b156118ee578591505b60019450611924565b89611924577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff915061192c565b60010161187a565b508361195557507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b611963866001840383611ad4565b95505060010161183a565b509298975050505050505050565b60008260088111156119ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b85811015611a1b5763ffffffff6020820290811b199890981685891b179791506001016119f3565b50959695505050505050565b6000816008811115611a95576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b82611aa35760009150611661565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611b42576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016119e6565b505063ffffffff602090920291821b199290921691901b1790565b6000818310611b6c5781611687565b5090919050565b600081831015611b6c5781611687565b600060208284031215611b9557600080fd5b813567ffffffffffffffff811115611bac57600080fd5b82016040818503121561168757600080fd5b60005b83811015611bd9578181015183820152602001611bc1565b83811115611be8576000848401525b50505050565b6020815260008251806020840152611c0d816040850160208701611bbe565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611cd257600080fd5b830160208101925035905067ffffffffffffffff811115611cf257600080fd5b8060051b3603831315611d0457600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115611d8657600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015611e1157815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0808201519089015260c0908101519088015260e09096019590820190600101611db7565b509495945050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a08301611e4d8687611c9d565b604060608701528281845260c08701905060c08260051b88010193508260005b83811015611f17577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4089870301835281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1863603018112611ece57600080fd5b8501803567ffffffffffffffff811115611ee757600080fd5b803603871315611ef657600080fd5b611f0388828b8501611d0b565b975050509186019190860190600101611e6d565b5050505050611f2882870187611c9d565b92507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858303016080860152611f5f828483611d54565b925050508281036040840152611f758185611da3565b9695505050505050565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611fc657611fc6611c3f565b604052919050565b600060208284031215611fe057600080fd5b815167ffffffffffffffff80821115611ff857600080fd5b818401915084601f83011261200c57600080fd5b81518181111561201e5761201e611c3f565b61204f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611f7f565b915080825285602082850101111561206657600080fd5b612077816020840160208601611bbe565b50949350505050565b6000815260008251612099816001850160208701611bbe565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201526000825161212f81600e850160208701611bbe565b91909101600e019392505050565b60006020828403121561214f57600080fd5b5051919050565b60006020828403121561216857600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461168757600080fd5b600081518084526020808501945080840160005b83811015611e11578151875295820195908201906001016121a0565b604080825283519082018190526000906020906060840190828701845b8281101561220b57815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016121d9565b50505083810382850152611f75818661218c565b6000602080838503121561223257600080fd5b825167ffffffffffffffff8082111561224a57600080fd5b818501915085601f83011261225e57600080fd5b81518181111561227057612270611c3f565b8060051b9150612281848301611f7f565b818152918301840191848101908884111561229b57600080fd5b938501935b838510156122b9578451825293850193908501906122a0565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561234d57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115612333576123336122c5565b8085161561234057918102915b93841c93908002906122f9565b509250929050565b600082612364575060016105fb565b81612371575060006105fb565b81600181146123875760028114612391576123ad565b60019150506105fb565b60ff8411156123a2576123a26122c5565b50506001821b6105fb565b5060208310610133831016604e8410600b84101617156123d0575081810a6105fb565b6123da83836122f4565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561240c5761240c6122c5565b029392505050565b60006116878383612355565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611780604083018461218c565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000612484606083018461218c565b95945050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156124c5576124c56122c5565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261252f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061168760ff84168361235556fea2646970667358221220caf22844c89417fd6aac79b3c8fce724512ac57006883a99b7fc5daeab96f96464736f6c634300080a0033"; + "0x60c06040523480156200001157600080fd5b506040516200276f3803806200276f83398101604081905262000034916200004a565b306080526001600160a01b031660a0526200007c565b6000602082840312156200005d57600080fd5b81516001600160a01b03811681146200007557600080fd5b9392505050565b60805160a0516126cd620000a260003960006101e40152600061021101526126cd6000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c80634e75d77e14610046578063e0419ae31461005b578063ea7cb37014610098575b600080fd5b610059610054366004611c87565b6100ad565b005b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b6100a061018c565b60405161008f9190611d3c565b6100e66040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b60008082526002602083015260408051600180825281830190925290816020015b6101406040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b815260200190600190039081610107579050509050818160008151811061016957610169611d7e565b60200260200101819052506101878361018190611efa565b826101a4565b505050565b606061019f61019a826102f7565b610518565b905090565b6040517faa9628a100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063aa9628a19061023d907f000000000000000000000000000000000000000000000000000000000000000090879087906004016120b4565b6000604051808303816000875af115801561025c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526102a291908101906121ab565b90506102ad81610557565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055505050565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c083018290526105e260e084018190526106d961010085015261076561012085015261088661014085015261016084015261092f610180840152610a376101a0840152610b0b6101c0840152610d086101e0840152610d13610200840152610d1e610220840152610d29610240840152610d34610260840152610d68610280840152610dce6102a0840152610e346102c0840152610e686102e0840152610e9c610300840152610ed1610320840152610f2c610340840152610f82610360840152610fab6103808401526110026103a084015261102f6103c08401526110866103e08401526110f161040084015261114e61042084015261118c6104408401526111c56104608401526111f961048084015261122b6104a084015261125d6104c084015261128f6104e08401526112c361050084015261131561052084015261134e61054084015261140061056084015261152d6105808401526115896105a08401526116436105c0840152835190850201909252919082815b8381101561050f578581815181106104ce576104ce611d7e565b60200260200101518560286006018301815181106104ee576104ee611d7e565b67ffffffffffffffff909216602092830291909101909101526001016104b4565b50505050919050565b60606020820182516020028101600284015b81831015610547578251815117815260209092019160020161052a565b5050825160020283525090919050565b6000806105828360405160200161056e9190612222565b6040516020818303038152906040526116bf565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff82166105dc576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156106a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106c99190612248565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610735573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107599190612248565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015610854573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108789190612248565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d090602401610688565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa1580156109f0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a149190612261565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e90604401610837565b60008060008467ffffffffffffffff811115610b2957610b29611d4f565b604051908082528060200260200182016040528015610b52578160200160208202803683370190505b50905060008567ffffffffffffffff811115610b7057610b70611d4f565b604051908082528060200260200182016040528015610b99578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b81831015610bee578251815260209283019201610bd6565b5050602088028101602084015b81831015610c13578251815260209283019201610bfb565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f490610c6d9087908790600401612297565b600060405180830381865afa158015610c8a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cd091908101906122fa565b9050846020820160208a0281015b80821015610cf9578151835260209283019290910190610cde565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261075982876116eb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836106c982610dc8858a6116eb565b9061176c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836106c982610e2e858a6116eb565b90611792565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261075982876117a7565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261075982876117f2565b6000602083028203805b83811015610ec65780518015610ebd578252610ec6565b50602001610ea6565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610ec6578051610fa35760008252610ec6565b602001610f8c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b85821080156110c457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156110e3575080516020909101906110dc8382611850565b9250611096565b505081526020019392505050565b6020828102820380516000928201835b858210801561112f57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b156110e357508051602090910190611147838261188c565b9250611101565b6020828102820380516000928201835b858210801561116d5750826000105b156110e35750805160209091019061118583826118bb565b925061115e565b600060208302820380516000602083015b858110156110e357805183019150828210156111b857600080fd5b909150819060200161119d565b600060208302820380516000602083015b858110156110e35780519150816111ec57600080fd5b91819004916020016111d6565b6020828102820380516000928201835b858210156110e35750805160209091019061122481846124da565b9250611209565b6020828102820380516000928201835b858210156110e35750805182811115611252578092505b60208201915061123b565b6020828102820380516000928201835b858210156110e35750805182811015611284578092505b60208201915061126d565b600060208302820380516000602083015b858110156110e35780519150816112b657600080fd5b91819006916020016112a0565b60006020830282038051600080602084015b868110156113065783156112fe5780519250828402915082848304146112fa57600080fd5b8193505b6020016112d5565b50505081526020019392505050565b600060208302820380516000602083015b858110156110e3578051830391508282111561134157600080fd5b9091508190602001611326565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061083790869086906004016124e6565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906114d990879087908790600401612515565b602060405180830381865afa1580156114f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151a9190612248565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836106c983836118d1565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156115b7576115b7611d4f565b6040519080825280602002602001820160405280156115e0578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561161c578151816020018601526020820191506020810190506115fa565b5050519050600061162f83838989611930565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856116b085858585611a80565b90955250949695505050505050565b60608151826040516020016116d592919061254a565b6040516020818303038152906040529050919050565b600080826012141561170057839150506106d3565b826012111561172c5750601282900361171a81600a6124da565b61172490856125e1565b9150506106d3565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161175b81600a6124da565b611724908561264d565b5092915050565b600081611781670de0b6b3a7640000856125e1565b61178b919061264d565b9392505050565b6000670de0b6b3a764000061178183856125e1565b600081810b6117b75750816106d3565b60008260000b13156117df576117ce82600a612688565b6117d890846125e1565b90506106d3565b60ff60008390031661175b81600a6124da565b600080601283141561180757839150506106d3565b82601211156118215750601282900361175b81600a6124da565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161171a81600a6124da565b60008282018381106118625780611884565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b60008261189b575060006106d3565b828202828482816118ae576118ae61261e565b0414156118625780611884565b60008183116118cb57600061178b565b50900390565b60008060015b600881116119285760006118eb8683611b2b565b905060006118f98684611b2b565b9050600061190783836118bb565b9050611917856001860383611bd8565b945050600190920191506118d79050565b509392505050565b835160009081908190819060015b60088111611a725760009250828761197757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61197b565b5060005b60005b83811015611a30576119a98c828151811061199b5761199b611d7e565b602002602001015184611b2b565b95508a86116119fb57886119c8576119c18683611c61565b91506119f2565b60018914156119db576119c18683611c77565b6002891480156119e9575084155b156119f2578591505b60019450611a28565b89611a28577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150611a30565b60010161197e565b5083611a5957507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b611a67866001840383611bd8565b95505060010161193e565b509298975050505050505050565b6000826008811115611af3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b85811015611b1f5763ffffffff6020820290811b199890981685891b17979150600101611af7565b50959695505050505050565b6000816008811115611b99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401611aea565b82611ba75760009150611765565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b6000826008811115611c46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401611aea565b505063ffffffff602090920291821b199290921691901b1790565b6000818310611c70578161178b565b5090919050565b600081831015611c70578161178b565b600060208284031215611c9957600080fd5b813567ffffffffffffffff811115611cb057600080fd5b82016040818503121561178b57600080fd5b60005b83811015611cdd578181015183820152602001611cc5565b83811115611cec576000848401525b50505050565b60008151808452611d0a816020860160208601611cc2565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061178b6020830184611cf2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6040805190810167ffffffffffffffff81118282101715611dd057611dd0611d4f565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611e1d57611e1d611d4f565b604052919050565b600067ffffffffffffffff821115611e3f57611e3f611d4f565b5060051b60200190565b600067ffffffffffffffff821115611e6357611e63611d4f565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112611ea057600080fd5b81356020611eb5611eb083611e25565b611dd6565b82815260059290921b84018101918181019086841115611ed457600080fd5b8286015b84811015611eef5780358352918301918301611ed8565b509695505050505050565b60006040808336031215611f0d57600080fd5b611f15611dad565b833567ffffffffffffffff80821115611f2d57600080fd5b9085019036601f830112611f4057600080fd5b81356020611f50611eb083611e25565b82815260059290921b84018101918181019036841115611f6f57600080fd5b8286015b84811015611fe357803586811115611f8b5760008081fd5b870136603f820112611f9d5760008081fd5b84810135611fad611eb082611e49565b818152368c838501011115611fc25760008081fd5b818c8401888301376000918101870191909152845250918301918301611f73565b5086525087810135955082861115611ffa57600080fd5b61200636878a01611e8f565b90850152509195945050505050565b600081518084526020808501945080840160005b8381101561204557815187529582019590820190600101612029565b509495945050505050565b600081518084526020808501945080840160005b8381101561204557815180518852838101518489015260408082015190890152606080820151908901526080808201519089015260a0908101519088015260c09096019590820190600101612064565b73ffffffffffffffffffffffffffffffffffffffff841681526000602060608184015260a0830185516040606086015281815180845260c08701915060c08160051b8801019350848301925060005b8181101561214f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4088860301835261213d858551611cf2565b94509285019291850191600101612103565b50505050908501518382037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa00160808501529061218c8183612015565b91505082810360408401526121a18185612050565b9695505050505050565b6000602082840312156121bd57600080fd5b815167ffffffffffffffff8111156121d457600080fd5b8201601f810184136121e557600080fd5b80516121f3611eb082611e49565b81815285602083850101111561220857600080fd5b612219826020830160208601611cc2565b95945050505050565b600081526000825161223b816001850160208701611cc2565b9190910160010192915050565b60006020828403121561225a57600080fd5b5051919050565b60006020828403121561227357600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461178b57600080fd5b604080825283519082018190526000906020906060840190828701845b828110156122e657815173ffffffffffffffffffffffffffffffffffffffff16845292840192908401906001016122b4565b505050838103828501526121a18186612015565b6000602080838503121561230d57600080fd5b825167ffffffffffffffff81111561232457600080fd5b8301601f8101851361233557600080fd5b8051612343611eb082611e25565b81815260059190911b8201830190838101908783111561236257600080fd5b928401925b8284101561238057835182529284019290840190612367565b979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b8085111561241357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156123f9576123f961238b565b8085161561240657918102915b93841c93908002906123bf565b509250929050565b60008261242a575060016106d3565b81612437575060006106d3565b816001811461244d576002811461245757612473565b60019150506106d3565b60ff8411156124685761246861238b565b50506001821b6106d3565b5060208310610133831016604e8410600b8410161715612496575081810a6106d3565b6124a083836123ba565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156124d2576124d261238b565b029392505050565b600061178b838361241b565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006118846040830184612015565b73ffffffffffffffffffffffffffffffffffffffff841681528260208201526060604082015260006122196060830184612015565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516125d381600e850160208701611cc2565b91909101600e019392505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126195761261961238b565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082612683577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061178b60ff84168361241b56fea264697066735822122001c09745ac62d57bd2382fd8335c38f35ba2f87604591694c8f034a09fafe44c64736f6c634300080a0033"; type StackHeightTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StakeFactory__factory.ts b/src/typechain/factories/StakeFactory__factory.ts index c3da712..8a3bc65 100644 --- a/src/typechain/factories/StakeFactory__factory.ts +++ b/src/typechain/factories/StakeFactory__factory.ts @@ -144,7 +144,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b6129ee80610b3383390190565b608051610a6f6100c46000396000818160a6015261037a0152610a6f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f366004610510565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c366004610582565b6102bf565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d63660046105e9565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906106ba565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161031991906107ce565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906107e1565b92915050565b60008061037183850185610901565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061042e565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103f39085906004016109af565b600060405180830381600087803b15801561040d57600080fd5b505af1158015610421573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661050b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052357600080fd5b823567ffffffffffffffff8082111561053b57600080fd5b818501915085601f83011261054f57600080fd5b81358181111561055e57600080fd5b86602082850101111561057057600080fd5b60209290920196919550909350505050565b60006020828403121561059457600080fd5b813567ffffffffffffffff8111156105ab57600080fd5b8201608081850312156105bd57600080fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105e657600080fd5b50565b6000602082840312156105fb57600080fd5b81356105bd816105c4565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261063b57600080fd5b830160208101925035905067ffffffffffffffff81111561065b57600080fd5b80360383131561066a57600080fd5b9250929050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208152600082356106cb816105c4565b73ffffffffffffffffffffffffffffffffffffffff8116602084015250602083013560408301526106ff6040840184610606565b6080606085015261071460a085018284610671565b9150506107246060850185610606565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0858403016080860152610759838284610671565b9695505050505050565b6000815180845260005b818110156107895760208185018101518683018201520161076d565b8181111561079b576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006105bd6020830184610763565b6000602082840312156107f357600080fd5b81516105bd816105c4565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715610850576108506107fe565b60405290565b600082601f83011261086757600080fd5b813567ffffffffffffffff80821115610882576108826107fe565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156108c8576108c86107fe565b816040528381528660208588010111156108e157600080fd5b836020870160208301376000602085830101528094505050505092915050565b60006020828403121561091357600080fd5b813567ffffffffffffffff8082111561092b57600080fd5b908301906080828603121561093f57600080fd5b61094761082d565b8235610952816105c4565b81526020838101359082015260408301358281111561097057600080fd5b61097c87828601610856565b60408301525060608301358281111561099457600080fd5b6109a087828601610856565b60608301525095945050505050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526109f560a0840182610763565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0848303016080850152610a308282610763565b9594505050505056fea26469706673582212204c8d0d3cc07d49c88334aada1dfe79c2e0a521ffce9d92aa4264e4aac392a1ee64736f6c634300080a0033608060405234801561001057600080fd5b5060016065556129c9806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e3660046122cb565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f9190612339565b61013361016b3660046123b3565b6103ed565b6035545b60405190815260200161013f565b6101336101903660046123dd565b610405565b6101a86101a3366004612419565b61042b565b005b6040516012815260200161013f565b6101336101c73660046123b3565b610862565b6101746101da366004612432565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610174610210366004612499565b6108ae565b610150610a44565b61013361022b3660046123b3565b610a53565b61013361023e3660046123b3565b610b2f565b6101a8610251366004612419565b610b3d565b6101746102643660046124ec565b610ea0565b610174610277366004612546565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd366004612579565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a906125b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906125b4565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb81858561139a565b5060019392505050565b60003361041385828561154e565b61041e858585611625565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b3360009081526068602052604081205461052590600190612637565b336000908152606860205260408120805492935090918390811061054b5761054b61264e565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105888483612637565b90505b3360009081526068602052604090208054829190859081106105af576105af61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161115610647573360009081526068602052604090208054849081106106085761060861264e565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f90600190612637565b8154811061068f5761068f61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856118d8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b9050610789338761198a565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061267d565b61082b908a612696565b61083591906126d3565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b74565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a990879061270e565b61139a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff871660009081526068602052604090208054829081106109535761095361264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c061264e565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611c48565b935082610a1381612726565b9350506109a4565b82851415610a2857610a3a565b80610a3281612726565b9150506108ef565b5050509392505050565b60606037805461036a906125b4565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b24828686840361139a565b506001949350505050565b6000336103fb818585611625565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca9919061267d565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611cd1565b600081610cfa57606754610cf3908590611d2f565b9050610d12565b82610d058584612696565b610d0f91906126d3565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611d4e565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe90600190612637565b81548110610dce57610dce61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886118d8565b610e3d908561275f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec161264e565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f7261264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe081612726565b915050610f0e565b5050505b949350505050565b600054610100900460ff16158080156110145750600054600160ff909116105b8061102e5750303b15801561102e575060005460ff166001145b6110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561111857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60006111276020840184612432565b73ffffffffffffffffffffffffffffffffffffffff1614156111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b61129f611223604084018461279f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126592505050606085018561279f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e6e92505050565b6112ac6020830183612432565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061132b90339085906128b1565b60405180910390a1801561139657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661143c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461161f5781811015611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61161f848484840361139a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166116c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821661176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061186590849061270e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118cb91815260200190565b60405180910390a361161f565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff8216611a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611b1f908490612637565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611541565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b6f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f0f565b6000826008811115611cb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261161f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bc6565b6000670de0b6b3a7640000611d448385612696565b61042491906126d3565b73ffffffffffffffffffffffffffffffffffffffff8216611dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611ddd919061270e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e1790849061270e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b611396828261201b565b6000611f71826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120d99092919063ffffffff16565b805190915015611b6f5780806020019051810190611f8f9190612955565b611b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff166120b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b81516120c590603690602085019061223b565b508051611b6f90603790602084019061223b565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161218b9190612977565b60006040518083038185875af1925050503d80600081146121c8576040519150601f19603f3d011682016040523d82523d6000602084013e6121cd565b606091505b50915091506121dd8282866121e8565b979650505050505050565b606083156121f7575081610424565b8251156122075782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104949190612339565b828054612247906125b4565b90600052602060002090601f01602090048101928261226957600085556122af565b82601f1061228257805160ff19168380011785556122af565b828001600101855582156122af579182015b828111156122af578251825591602001919060010190612294565b506119869291505b8082111561198657600081556001016122b7565b6000602082840312156122dd57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b83811015612328578181015183820152602001612310565b8381111561161f5750506000910152565b602081526000825180602084015261235881604085016020870161230d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123ae57600080fd5b919050565b600080604083850312156123c657600080fd5b6123cf8361238a565b946020939093013593505050565b6000806000606084860312156123f257600080fd5b6123fb8461238a565b92506124096020850161238a565b9150604084013590509250925092565b60006020828403121561242b57600080fd5b5035919050565b60006020828403121561244457600080fd5b6104248261238a565b60008083601f84011261245f57600080fd5b50813567ffffffffffffffff81111561247757600080fd5b6020830191508360208260051b850101111561249257600080fd5b9250929050565b6000806000604084860312156124ae57600080fd5b6124b78461238a565b9250602084013567ffffffffffffffff8111156124d357600080fd5b6124df8682870161244d565b9497909650939450505050565b6000806000806060858703121561250257600080fd5b61250b8561238a565b935060208501359250604085013567ffffffffffffffff81111561252e57600080fd5b61253a8782880161244d565b95989497509550505050565b6000806040838503121561255957600080fd5b6125628361238a565b91506125706020840161238a565b90509250929050565b60006020828403121561258b57600080fd5b813567ffffffffffffffff8111156125a257600080fd5b82016080818503121561042457600080fd5b600181811c908216806125c857607f821691505b60208210811415612602577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561264957612649612608565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561268f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce612608565b500290565b600082612709577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561272157612721612608565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561275857612758612608565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561279657612796612608565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127d457600080fd5b83018035915067ffffffffffffffff8211156127ef57600080fd5b60200191503681900382131561249257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283957600080fd5b830160208101925035905067ffffffffffffffff81111561285957600080fd5b80360383131561249257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128de8561238a565b16604084015250602083013560608301526128fc6040840184612804565b60808085015261291060c085018284612868565b9150506129206060850185612804565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121dd838284612868565b60006020828403121561296757600080fd5b8151801515811461042457600080fd5b6000825161298981846020870161230d565b919091019291505056fea2646970667358221220fd729b475c9b0be8aaf319e61873b188919a1cca160d19b7be91f74a382eff1a64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61292980610a1783390190565b6080516109536100c46000396000818160a6015261030d01526109536000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f3660046105cd565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c36600461066a565b6102bd565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d6366004610718565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102e7826040516020016102d391906107af565b604051602081830303815290604052610111565b92915050565b60008082806020019051810190610304919061087e565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103869085906004016107af565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610541576105416104a2565b604052919050565b600067ffffffffffffffff821115610563576105636104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105a261059d84610549565b6104fa565b90508281528383830111156105b657600080fd5b828260208301376000602084830101529392505050565b6000602082840312156105df57600080fd5b813567ffffffffffffffff8111156105f657600080fd5b8201601f8101841361060757600080fd5b6106168482356020840161058f565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461064057600080fd5b50565b600082601f83011261065457600080fd5b6106638383356020850161058f565b9392505050565b60006020828403121561067c57600080fd5b813567ffffffffffffffff8082111561069457600080fd5b90830190608082860312156106a857600080fd5b6106b06104d1565b82356106bb8161061e565b8152602083810135908201526040830135828111156106d957600080fd5b6106e587828601610643565b6040830152506060830135828111156106fd57600080fd5b61070987828601610643565b60608301525095945050505050565b60006020828403121561072a57600080fd5b81356106638161061e565b60005b83811015610750578181015183820152602001610738565b8381111561075f576000848401525b50505050565b6000815180845261077d816020860160208601610735565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526107f560a0840182610765565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526108308282610765565b95945050505050565b600082601f83011261084a57600080fd5b815161085861059d82610549565b81815284602083860101111561086d57600080fd5b610616826020830160208701610735565b60006020828403121561089057600080fd5b815167ffffffffffffffff808211156108a857600080fd5b90830190608082860312156108bc57600080fd5b6108c46104d1565b82516108cf8161061e565b8152602083810151908201526040830151828111156108ed57600080fd5b6108f987828601610839565b60408301525060608301518281111561091157600080fd5b6107098782860161083956fea2646970667358221220fe79bca5b62859d84b747d90fb44b014afee6759f5bef7e7cd9d4cc62e9ac86164736f6c634300080a0033608060405234801561001057600080fd5b506001606555612904806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610284578063dd62ed3e146102d0578063fad876c31461031657600080fd5b8063b6b55f251461025e578063caa0eb3b1461027157600080fd5b806388d686041461021d57806395d89b4114610230578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c557806339509351146101d457806370a08231146101e757600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e61014936600461227f565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906122ed565b61014e610186366004612367565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612391565b61046c565b6101c36101be3660046123cd565b610492565b005b6040516012815260200161015a565b61014e6101e2366004612367565b610814565b61018f6101f53660046123e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022b36600461244d565b610860565b61016b6108f5565b61014e610246366004612367565b610904565b61014e610259366004612367565b6109e0565b6101c361026c3660046123cd565b6109ee565b61018f61027f3660046124a0565b610d70565b610297610292366004612367565b610dd2565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102de3660046124fa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101c361032436600461252d565b610e2e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d190612568565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90612568565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111d4565b5060019392505050565b60003361047a858285611388565b61048585858561145f565b60019150505b9392505050565b60026065541415610504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b3360009081526068602052604081205461058c906001906125eb565b33600090815260686020526040812080549293509091839081106105b2576105b2612602565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105ef84836125eb565b9050600081156106095761060533836000611712565b5090505b808411156106675733600090815260686020526040902080548590811061063257610632612602565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90930192610609565b81156106f75761067682611871565b33600090815260686020526040902080548390811061069757610697612602565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610724565b33600090815260686020526040902080548590811061071857610718612602565b60009182526020822001555b600061072f60355490565b905061073b3387611923565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610807913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190612631565b6107dd908a61264a565b6107e79190612687565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b0d565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085b9087906126c2565b6111d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108eb5760008686838181106108ac576108ac612602565b9050602002013590506108c0888286611712565b93505063ffffffff8314156108d557506108eb565b6108e0858385611be1565b945050600101610890565b5050509392505050565b6060603780546103d190612568565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fb565b6109d582868684036111d4565b506001949350505050565b60003361046281858561145f565b60026065541415610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fb565b600260655580610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a9190612631565b90506000610b6760355490565b606654909150610b8f9073ffffffffffffffffffffffffffffffffffffffff16333086611c6a565b600081610bab57606754610ba4908590611cc8565b9050610bc3565b82610bb6858461264a565b610bc09190612687565b90505b60008111610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fb565b610c373382611ce7565b336000908152606860205260408120549081610c54576000610cb1565b336000908152606860205260409020610c6e6001846125eb565b81548110610c7e57610c7e612602565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610d0c610d078a866126c2565b611871565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff909416939093179190920155606555505050505050565b600083610d7f57506000610dca565b818411610dc35760008383610d956001886125eb565b818110610da457610da4612602565b905060200201359050610db986826000611712565b9250610dca915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610dee57600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e4e5750600054600160ff909116105b80610e685750303b158015610e68575060005460ff166001145b610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f6160208401846123e6565b73ffffffffffffffffffffffffffffffffffffffff161415610fdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fb565b600082602001351161104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fb565b6110d961105d60408401846126da565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109f9250505060608501856126da565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e0792505050565b6110e660208301836123e6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061116590339085906127ec565b60405180910390a180156111d057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611276576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff8216611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611459578181101561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fb565b61145984848484036111d4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff82166115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169f9084906126c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161170591815260200190565b60405180910390a3611459565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b84861015611809576117668686611ea8565b73ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805491935090839081106117a1576117a1612602565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117fe57819450611754565b816001019550611754565b82851461185e5773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061184757611847612602565b60009182526020909120015463ffffffff16611864565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fb565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611ab89084906125eb565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161137b565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b089084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611ec3565b6000826008811115611c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fb565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526114599085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611b5f565b6000670de0b6b3a7640000611cdd838561264a565b61048b9190612687565b73ffffffffffffffffffffffffffffffffffffffff8216611d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fb565b8060356000828254611d7691906126c2565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611db09084906126c2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b6111d08282611fcf565b6000611eb76002848418612687565b61048b908484166126c2565b6000611f25826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661208d9092919063ffffffff16565b805190915015611b085780806020019051810190611f439190612890565b611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fb565b600054610100900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b81516120799060369060208501906121ef565b508051611b089060379060208401906121ef565b6060610dca84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fb565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161213f91906128b2565b60006040518083038185875af1925050503d806000811461217c576040519150601f19603f3d011682016040523d82523d6000602084013e612181565b606091505b509150915061219182828661219c565b979650505050505050565b606083156121ab57508161048b565b8251156121bb5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb91906122ed565b8280546121fb90612568565b90600052602060002090601f01602090048101928261221d5760008555612263565b82601f1061223657805160ff1916838001178555612263565b82800160010185558215612263579182015b82811115612263578251825591602001919060010190612248565b5061191f9291505b8082111561191f576000815560010161226b565b60006020828403121561229157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b838110156122dc5781810151838201526020016122c4565b838111156114595750506000910152565b602081526000825180602084015261230c8160408501602087016122c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461236257600080fd5b919050565b6000806040838503121561237a57600080fd5b6123838361233e565b946020939093013593505050565b6000806000606084860312156123a657600080fd5b6123af8461233e565b92506123bd6020850161233e565b9150604084013590509250925092565b6000602082840312156123df57600080fd5b5035919050565b6000602082840312156123f857600080fd5b61048b8261233e565b60008083601f84011261241357600080fd5b50813567ffffffffffffffff81111561242b57600080fd5b6020830191508360208260051b850101111561244657600080fd5b9250929050565b60008060006040848603121561246257600080fd5b61246b8461233e565b9250602084013567ffffffffffffffff81111561248757600080fd5b61249386828701612401565b9497909650939450505050565b600080600080606085870312156124b657600080fd5b6124bf8561233e565b935060208501359250604085013567ffffffffffffffff8111156124e257600080fd5b6124ee87828801612401565b95989497509550505050565b6000806040838503121561250d57600080fd5b6125168361233e565b91506125246020840161233e565b90509250929050565b60006020828403121561253f57600080fd5b813567ffffffffffffffff81111561255657600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061257c57607f821691505b602082108114156125b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156125fd576125fd6125bc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561264357600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612682576126826125bc565b500290565b6000826126bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156126d5576126d56125bc565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261270f57600080fd5b83018035915067ffffffffffffffff82111561272a57600080fd5b60200191503681900382131561244657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261277457600080fd5b830160208101925035905067ffffffffffffffff81111561279457600080fd5b80360383131561244657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128198561233e565b1660408401525060208301356060830152612837604084018461273f565b60808085015261284b60c0850182846127a3565b91505061285b606085018561273f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121918382846127a3565b6000602082840312156128a257600080fd5b8151801515811461048b57600080fd5b600082516128c48184602087016122c1565b919091019291505056fea2646970667358221220518806b70f1ba1b4e4a7136880cd900808327839a2711add0378549565eecebc64736f6c634300080a0033"; type StakeFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Stake__factory.ts b/src/typechain/factories/Stake__factory.ts index cbee6d5..21ffe6e 100644 --- a/src/typechain/factories/Stake__factory.ts +++ b/src/typechain/factories/Stake__factory.ts @@ -227,6 +227,35 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "deposits", + outputs: [ + { + internalType: "uint32", + name: "timestamp", + type: "uint32", + }, + { + internalType: "uint224", + name: "amount", + type: "uint224", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -466,7 +495,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b5060016065556129c9806100256000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c806370a08231116100b2578063a9059cbb11610081578063caa0eb3b11610066578063caa0eb3b14610256578063dd62ed3e14610269578063fad876c3146102af57600080fd5b8063a9059cbb14610230578063b6b55f251461024357600080fd5b806370a08231146101cc57806388d686041461020257806395d89b4114610215578063a457c2d71461021d57600080fd5b806323b872dd116100ee57806323b872dd146101825780632e1a7d4d14610195578063313ce567146101aa57806339509351146101b957600080fd5b806301ffc9a71461012057806306fdde0314610148578063095ea7b31461015d57806318160ddd14610170575b600080fd5b61013361012e3660046122cb565b6102c2565b60405190151581526020015b60405180910390f35b61015061035b565b60405161013f9190612339565b61013361016b3660046123b3565b6103ed565b6035545b60405190815260200161013f565b6101336101903660046123dd565b610405565b6101a86101a3366004612419565b61042b565b005b6040516012815260200161013f565b6101336101c73660046123b3565b610862565b6101746101da366004612432565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b610174610210366004612499565b6108ae565b610150610a44565b61013361022b3660046123b3565b610a53565b61013361023e3660046123b3565b610b2f565b6101a8610251366004612419565b610b3d565b6101746102643660046124ec565b610ea0565b610174610277366004612546565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101a86102bd366004612579565b610ff4565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061035557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60606036805461036a906125b4565b80601f0160208091040260200160405190810160405280929190818152602001828054610396906125b4565b80156103e35780601f106103b8576101008083540402835291602001916103e3565b820191906000526020600020905b8154815290600101906020018083116103c657829003601f168201915b5050505050905090565b6000336103fb81858561139a565b5060019392505050565b60003361041385828561154e565b61041e858585611625565b60019150505b9392505050565b6002606554141561049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610509576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b3360009081526068602052604081205461052590600190612637565b336000908152606860205260408120805492935090918390811061054b5761054b61264e565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105888483612637565b90505b3360009081526068602052604090208054829190859081106105af576105af61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff161115610647573360009081526068602052604090208054849081106106085761060861264e565b60009182526020822001558261061d57610647565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019161058b565b336000908152606860205260408120546106625760006106c2565b336000908152606860205260409020805461067f90600190612637565b8154811061068f5761068f61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050808211156107725733600090815260686020908152604091829020825180840190935263ffffffff421683529190810161071b856118d8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b600061077d60355490565b9050610789338761198a565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610855913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061267d565b61082b908a612696565b61083591906126d3565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b74565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906103fb90829086906108a990879061270e565b61139a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561042457604080518082019091526000808252602082018190529060005b73ffffffffffffffffffffffffffffffffffffffff8716600090815260686020526040902054811015610a3a5773ffffffffffffffffffffffffffffffffffffffff871660009081526068602052604090208054829081106109535761095361264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169181019190915291505b84831080156109ed57508585848181106109c0576109c061264e565b9050602002013582602001517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1610155b15610a1b57610a078484846000015163ffffffff16611c48565b935082610a1381612726565b9350506109a4565b82851415610a2857610a3a565b80610a3281612726565b9150506108ef565b5050509392505050565b60606037805461036a906125b4565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490919083811015610b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610494565b610b24828686840361139a565b506001949350505050565b6000336103fb818585611625565b60026065541415610baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610494565b600260655580610c16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e540000000000000000000000000000000000000000000000006044820152606401610494565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610c85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca9919061267d565b90506000610cb660355490565b606654909150610cde9073ffffffffffffffffffffffffffffffffffffffff16333086611cd1565b600081610cfa57606754610cf3908590611d2f565b9050610d12565b82610d058584612696565b610d0f91906126d3565b90505b60008111610d7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e5400000000000000000000000000000000000000000000000000006044820152606401610494565b610d863382611d4e565b33600090815260686020526040812054610da1576000610e01565b3360009081526068602052604090208054610dbe90600190612637565b81548110610dce57610dce61264e565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683529293508101610e33886118d8565b610e3d908561275f565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555050505050565b63ffffffff81841015610fec576000838386818110610ec157610ec161264e565b905060200201359050610f0b6040518060400160405280600063ffffffff16815260200160007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681525090565b60005b73ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902054811015610fe85773ffffffffffffffffffffffffffffffffffffffff88166000908152606860205260409020805482908110610f7257610f7261264e565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691810182905292508311610fd657815163ffffffff169350610fe8565b80610fe081612726565b915050610f0e565b5050505b949350505050565b600054610100900460ff16158080156110145750600054600160ff909116105b8061102e5750303b15801561102e575060005460ff166001145b6110ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610494565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561111857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b60006111276020840184612432565b73ffffffffffffffffffffffffffffffffffffffff1614156111a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e000000000000000000000000000000000000000000000000006044820152606401610494565b6000826020013511611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f000000000000000000000000000000000000000000000000006044820152606401610494565b61129f611223604084018461279f565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061126592505050606085018561279f565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e6e92505050565b6112ac6020830183612432565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061132b90339085906128b1565b60405180910390a1801561139657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661143c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff82166114df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461161f5781811015611612576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610494565b61161f848484840361139a565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166116c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821661176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff831660009081526033602052604090205481811015611821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061186590849061270e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118cb91815260200190565b60405180910390a361161f565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611986576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610494565b5090565b73ffffffffffffffffffffffffffffffffffffffff8216611a2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611ae3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610494565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611b1f908490612637565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611541565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b6f9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f0f565b6000826008811115611cb6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f544945520000000000000000000000000000000000000000000000006044820152606401610494565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261161f9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611bc6565b6000670de0b6b3a7640000611d448385612696565b61042491906126d3565b73ffffffffffffffffffffffffffffffffffffffff8216611dcb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610494565b8060356000828254611ddd919061270e565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e1790849061270e565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b611396828261201b565b6000611f71826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166120d99092919063ffffffff16565b805190915015611b6f5780806020019051810190611f8f9190612955565b611b6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610494565b600054610100900460ff166120b2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610494565b81516120c590603690602085019061223b565b508051611b6f90603790602084019061223b565b6060610fec84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612162576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610494565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161218b9190612977565b60006040518083038185875af1925050503d80600081146121c8576040519150601f19603f3d011682016040523d82523d6000602084013e6121cd565b606091505b50915091506121dd8282866121e8565b979650505050505050565b606083156121f7575081610424565b8251156122075782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104949190612339565b828054612247906125b4565b90600052602060002090601f01602090048101928261226957600085556122af565b82601f1061228257805160ff19168380011785556122af565b828001600101855582156122af579182015b828111156122af578251825591602001919060010190612294565b506119869291505b8082111561198657600081556001016122b7565b6000602082840312156122dd57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461042457600080fd5b60005b83811015612328578181015183820152602001612310565b8381111561161f5750506000910152565b602081526000825180602084015261235881604085016020870161230d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123ae57600080fd5b919050565b600080604083850312156123c657600080fd5b6123cf8361238a565b946020939093013593505050565b6000806000606084860312156123f257600080fd5b6123fb8461238a565b92506124096020850161238a565b9150604084013590509250925092565b60006020828403121561242b57600080fd5b5035919050565b60006020828403121561244457600080fd5b6104248261238a565b60008083601f84011261245f57600080fd5b50813567ffffffffffffffff81111561247757600080fd5b6020830191508360208260051b850101111561249257600080fd5b9250929050565b6000806000604084860312156124ae57600080fd5b6124b78461238a565b9250602084013567ffffffffffffffff8111156124d357600080fd5b6124df8682870161244d565b9497909650939450505050565b6000806000806060858703121561250257600080fd5b61250b8561238a565b935060208501359250604085013567ffffffffffffffff81111561252e57600080fd5b61253a8782880161244d565b95989497509550505050565b6000806040838503121561255957600080fd5b6125628361238a565b91506125706020840161238a565b90509250929050565b60006020828403121561258b57600080fd5b813567ffffffffffffffff8111156125a257600080fd5b82016080818503121561042457600080fd5b600181811c908216806125c857607f821691505b60208210811415612602577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008282101561264957612649612608565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561268f57600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156126ce576126ce612608565b500290565b600082612709577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b6000821982111561272157612721612608565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561275857612758612608565b5060010190565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff80831681851680830382111561279657612796612608565b01949350505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127d457600080fd5b83018035915067ffffffffffffffff8211156127ef57600080fd5b60200191503681900382131561249257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261283957600080fd5b830160208101925035905067ffffffffffffffff81111561285957600080fd5b80360383131561249257600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128de8561238a565b16604084015250602083013560608301526128fc6040840184612804565b60808085015261291060c085018284612868565b9150506129206060850185612804565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121dd838284612868565b60006020828403121561296757600080fd5b8151801515811461042457600080fd5b6000825161298981846020870161230d565b919091019291505056fea2646970667358221220fd729b475c9b0be8aaf319e61873b188919a1cca160d19b7be91f74a382eff1a64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506001606555612904806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610284578063dd62ed3e146102d0578063fad876c31461031657600080fd5b8063b6b55f251461025e578063caa0eb3b1461027157600080fd5b806388d686041461021d57806395d89b4114610230578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c557806339509351146101d457806370a08231146101e757600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e61014936600461227f565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906122ed565b61014e610186366004612367565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612391565b61046c565b6101c36101be3660046123cd565b610492565b005b6040516012815260200161015a565b61014e6101e2366004612367565b610814565b61018f6101f53660046123e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022b36600461244d565b610860565b61016b6108f5565b61014e610246366004612367565b610904565b61014e610259366004612367565b6109e0565b6101c361026c3660046123cd565b6109ee565b61018f61027f3660046124a0565b610d70565b610297610292366004612367565b610dd2565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102de3660046124fa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101c361032436600461252d565b610e2e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d190612568565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90612568565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111d4565b5060019392505050565b60003361047a858285611388565b61048585858561145f565b60019150505b9392505050565b60026065541415610504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b3360009081526068602052604081205461058c906001906125eb565b33600090815260686020526040812080549293509091839081106105b2576105b2612602565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105ef84836125eb565b9050600081156106095761060533836000611712565b5090505b808411156106675733600090815260686020526040902080548590811061063257610632612602565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90930192610609565b81156106f75761067682611871565b33600090815260686020526040902080548390811061069757610697612602565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610724565b33600090815260686020526040902080548590811061071857610718612602565b60009182526020822001555b600061072f60355490565b905061073b3387611923565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610807913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190612631565b6107dd908a61264a565b6107e79190612687565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b0d565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085b9087906126c2565b6111d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108eb5760008686838181106108ac576108ac612602565b9050602002013590506108c0888286611712565b93505063ffffffff8314156108d557506108eb565b6108e0858385611be1565b945050600101610890565b5050509392505050565b6060603780546103d190612568565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fb565b6109d582868684036111d4565b506001949350505050565b60003361046281858561145f565b60026065541415610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fb565b600260655580610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a9190612631565b90506000610b6760355490565b606654909150610b8f9073ffffffffffffffffffffffffffffffffffffffff16333086611c6a565b600081610bab57606754610ba4908590611cc8565b9050610bc3565b82610bb6858461264a565b610bc09190612687565b90505b60008111610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fb565b610c373382611ce7565b336000908152606860205260408120549081610c54576000610cb1565b336000908152606860205260409020610c6e6001846125eb565b81548110610c7e57610c7e612602565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610d0c610d078a866126c2565b611871565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff909416939093179190920155606555505050505050565b600083610d7f57506000610dca565b818411610dc35760008383610d956001886125eb565b818110610da457610da4612602565b905060200201359050610db986826000611712565b9250610dca915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610dee57600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e4e5750600054600160ff909116105b80610e685750303b158015610e68575060005460ff166001145b610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f6160208401846123e6565b73ffffffffffffffffffffffffffffffffffffffff161415610fdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fb565b600082602001351161104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fb565b6110d961105d60408401846126da565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109f9250505060608501856126da565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e0792505050565b6110e660208301836123e6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061116590339085906127ec565b60405180910390a180156111d057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611276576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff8216611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611459578181101561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fb565b61145984848484036111d4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff82166115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169f9084906126c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161170591815260200190565b60405180910390a3611459565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b84861015611809576117668686611ea8565b73ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805491935090839081106117a1576117a1612602565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117fe57819450611754565b816001019550611754565b82851461185e5773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061184757611847612602565b60009182526020909120015463ffffffff16611864565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fb565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611ab89084906125eb565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161137b565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b089084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611ec3565b6000826008811115611c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fb565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526114599085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611b5f565b6000670de0b6b3a7640000611cdd838561264a565b61048b9190612687565b73ffffffffffffffffffffffffffffffffffffffff8216611d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fb565b8060356000828254611d7691906126c2565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611db09084906126c2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b6111d08282611fcf565b6000611eb76002848418612687565b61048b908484166126c2565b6000611f25826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661208d9092919063ffffffff16565b805190915015611b085780806020019051810190611f439190612890565b611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fb565b600054610100900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b81516120799060369060208501906121ef565b508051611b089060379060208401906121ef565b6060610dca84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fb565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161213f91906128b2565b60006040518083038185875af1925050503d806000811461217c576040519150601f19603f3d011682016040523d82523d6000602084013e612181565b606091505b509150915061219182828661219c565b979650505050505050565b606083156121ab57508161048b565b8251156121bb5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb91906122ed565b8280546121fb90612568565b90600052602060002090601f01602090048101928261221d5760008555612263565b82601f1061223657805160ff1916838001178555612263565b82800160010185558215612263579182015b82811115612263578251825591602001919060010190612248565b5061191f9291505b8082111561191f576000815560010161226b565b60006020828403121561229157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b838110156122dc5781810151838201526020016122c4565b838111156114595750506000910152565b602081526000825180602084015261230c8160408501602087016122c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461236257600080fd5b919050565b6000806040838503121561237a57600080fd5b6123838361233e565b946020939093013593505050565b6000806000606084860312156123a657600080fd5b6123af8461233e565b92506123bd6020850161233e565b9150604084013590509250925092565b6000602082840312156123df57600080fd5b5035919050565b6000602082840312156123f857600080fd5b61048b8261233e565b60008083601f84011261241357600080fd5b50813567ffffffffffffffff81111561242b57600080fd5b6020830191508360208260051b850101111561244657600080fd5b9250929050565b60008060006040848603121561246257600080fd5b61246b8461233e565b9250602084013567ffffffffffffffff81111561248757600080fd5b61249386828701612401565b9497909650939450505050565b600080600080606085870312156124b657600080fd5b6124bf8561233e565b935060208501359250604085013567ffffffffffffffff8111156124e257600080fd5b6124ee87828801612401565b95989497509550505050565b6000806040838503121561250d57600080fd5b6125168361233e565b91506125246020840161233e565b90509250929050565b60006020828403121561253f57600080fd5b813567ffffffffffffffff81111561255657600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061257c57607f821691505b602082108114156125b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156125fd576125fd6125bc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561264357600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612682576126826125bc565b500290565b6000826126bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156126d5576126d56125bc565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261270f57600080fd5b83018035915067ffffffffffffffff82111561272a57600080fd5b60200191503681900382131561244657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261277457600080fd5b830160208101925035905067ffffffffffffffff81111561279457600080fd5b80360383131561244657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128198561233e565b1660408401525060208301356060830152612837604084018461273f565b60808085015261284b60c0850182846127a3565b91505061285b606085018561273f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121918382846127a3565b6000602082840312156128a257600080fd5b8151801515811461048b57600080fd5b600082516128c48184602087016122c1565b919091019291505056fea2646970667358221220518806b70f1ba1b4e4a7136880cd900808327839a2711add0378549565eecebc64736f6c634300080a0033"; type StakeConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/StandardStateBuilder__factory.ts b/src/typechain/factories/StandardStateBuilder__factory.ts new file mode 100644 index 0000000..9327782 --- /dev/null +++ b/src/typechain/factories/StandardStateBuilder__factory.ts @@ -0,0 +1,262 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + StandardStateBuilder, + StandardStateBuilderInterface, +} from "../StandardStateBuilder"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "_size", + type: "uint256", + }, + { + internalType: "uint256", + name: "_start", + type: "uint256", + }, + { + internalType: "uint256", + name: "_end", + type: "uint256", + }, + ], + name: "InvalidCodeAtRange", + type: "error", + }, + { + inputs: [], + name: "WriteError", + type: "error", + }, + { + inputs: [ + { + internalType: "address", + name: "vm_", + type: "address", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "config_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + ], + internalType: "struct Bounds[]", + name: "boundss_", + type: "tuple[]", + }, + ], + name: "buildState", + outputs: [ + { + internalType: "bytes", + name: "state_", + type: "bytes", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256[]", + name: "stackPops_", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "stackPushes_", + type: "uint256[]", + }, + { + components: [ + { + internalType: "bytes[]", + name: "sources", + type: "bytes[]", + }, + { + internalType: "uint256[]", + name: "constants", + type: "uint256[]", + }, + ], + internalType: "struct StateConfig", + name: "stateConfig_", + type: "tuple", + }, + { + components: [ + { + internalType: "uint256", + name: "entrypoint", + type: "uint256", + }, + { + internalType: "uint256", + name: "minFinalStackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackIndex", + type: "uint256", + }, + { + internalType: "uint256", + name: "stackLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "argumentsLength", + type: "uint256", + }, + { + internalType: "uint256", + name: "storageLength", + type: "uint256", + }, + ], + internalType: "struct Bounds", + name: "bounds_", + type: "tuple", + }, + ], + name: "ensureIntegrity", + outputs: [], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "stackPops", + outputs: [ + { + internalType: "uint256[]", + name: "pops_", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "stackPushes", + outputs: [ + { + internalType: "uint256[]", + name: "pushes_", + type: "uint256[]", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b50611d77806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d1461006f578063aa9628a114610077578063ce19c93514610097575b600080fd5b6100596100ac565b604051610066919061156b565b60405180910390f35b6100596100bc565b61008a6100853660046118c3565b6100c7565b60405161006691906119e1565b6100aa6100a5366004611a32565b6103a2565b005b60606100b7816107aa565b905090565b60606100b78161097b565b606060006100d485610b4d565b905060006100e58260200151610eb2565b905060008060006100f46100bc565b905060006101006100ac565b905060005b88518110156101ca57866000015161ffff1689828151811061012957610129611acd565b602002602001015160a001818152505061015e83838c8c858151811061015157610151611acd565b60200260200101516103a2565b61018e89828151811061017357610173611acd565b60200260200101516080015186610ee690919063ffffffff16565b94506101c08982815181106101a5576101a5611acd565b60200260200101516060015185610ee690919063ffffffff16565b9350600101610105565b506000848a60200151510167ffffffffffffffff8111156101ed576101ed6115af565b604051908082528060200260200182016040528015610216578160200160208202803683370190505b50905060005b8a602001515181101561026c578a60200151818151811061023f5761023f611acd565b602002602001015182828151811061025957610259611acd565b602090810291909101015260010161021c565b5089515160009067ffffffffffffffff81111561028b5761028b6115af565b6040519080825280602002602001820160405280156102be57816020015b60608152602001906001900390816102a95790505b50905060005b8b515181101561031a576102f5888d6000015183815181106102e8576102e8611acd565b6020026020010151610eff565b82828151811061030757610307611acd565b60209081029190910101526001016102c4565b506103926040518060a00160405280600081526020018767ffffffffffffffff811115610349576103496115af565b604051908082528060200260200182016040528015610372578160200160208202803683370190505b5081526020018381526020018481526020018d602001515181525061108f565b9c9b505050505050505050505050565b80518251518110610414576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b838510156106bd576002850194508481015180601e1a935080601f1a92505060068310156105fe57826104de5787602001515187608001510182106104ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e540000000000000000000000000000000000000000604482015260640161040b565b60408701805160010190526106a0565b600183141561055457866040015182106104ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b0000000000000000000000000000000000000000000000604482015260640161040b565b600283141561056d5760408701805160010190526106a0565b60038314156105e3578660a0015182106104ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f52414745000000000000000000000000000000000000000000604482015260640161040b565b60048314156105f9576105f98a8a8a8a866111cc565b6106a0565b60008a848151811061061257610612611acd565b60200260200101519050600581111561063757806106338463ffffffff8316565b9150505b60408801805182900390819052606089015161065291610ee6565b606089015289516000908b908690811061066e5761066e611acd565b602002602001015190506005811115610693578061068f8563ffffffff8316565b9150505b6040890180519091019052505b604087015160608801516106b391610ee6565b606088015261042d565b606087015160ff101561072c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b0000000000000000000000000000000000000000000000604482015260640161040b565b86602001518760400151101561079e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e444558000000000000000000000000000000604482015260640161040b565b50505050505050505050565b60606000825190506000604051806105e001604052808360286006010181526020016001815260200160018152602001600181526020016001815260200160008152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200161083061126f90565b81526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152602001600181526020016001815260200160018152509050604051602083020160405280925060005b828110156109735784818151811061094057610940611acd565b602002602001015184602860060183018151811061096057610960611acd565b6020908102919091010152600101610926565b505050919050565b8051606090600061126f90506000604051806105e0016040528084602860060101815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160028152602001600181526020016003815260200160028152602001600281526020016002815260200160038152602001610a056112de90565b81526020016000815260200160008152602001600081526020016000815260200160018152602001600281526020016002815260200160018152602001600181526020018381526020016003815260200160028152602001838152602001600281526020016001815260200160028152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001838152602001610ac361135390565b815260200161135981526002602082015260400161135f815260200160028152509050604051602084020160405280935060005b83811015610b4457858181518110610b1157610b11611acd565b6020026020010151856028600601830181518110610b3157610b31611acd565b6020908102919091010152600101610af7565b50505050919050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610ead5760008273ffffffffffffffffffffffffffffffffffffffff163b11610c26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d0000000000000000000000000000000000000000000000604482015260640161040b565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c73573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610cb99190810190611afc565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610d07573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2b9190611b73565b905061ffff801681602001511115610d9f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f44455300000000000000000000000000604482015260640161040b565b6002825181610db057610db0611bc2565b0615610e18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e5445525300000000000000000000000000000000604482015260640161040b565b6040518060400160405280826020015161ffff168152602001610e3a846113cc565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610ee08260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611457565b92915050565b600081831015610ef65781610ef8565b825b9392505050565b805182516060919060011615610f71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f505452530000000000000000000000000000000000604482015260640161040b565b6002810615610fdc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e475448000000000000000000000000000000604482015260640161040b565b60006002600383020467ffffffffffffffff811115610ffd57610ffd6115af565b6040519080825280601f01601f191660200182016040528015611027576020820181803683370190505b50905060056002808701908681019085880101600385015b8183101561108157825180601e1a868111156110605760020285015161ffff165b81601f1a8160081b178351178352505060028301925060038101905061103f565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b836040516020016110db9190611bf1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290526111179291602001611c27565b604051602081830303815290604052905060005b8560400151518110156111c357818660400151828151811061114f5761114f611acd565b60200260200101515160001b8760400151838151811061117157611171611acd565b602002602001015160405160200161118b93929190611c4d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052915060010161112b565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c91829003019182905260608401516001909101916112169190610ee6565b6060840152608083015161122a9082610ee6565b60808401528251600783168085526001600385811c161b919060005b838110156112625761125a8a8a8a8a6103a2565b600101611246565b5050909352505050505050565b60008082116112da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f305f4f504552414e445f4e5a4f4e000000000000000000000000000000000000604482015260640161040b565b5090565b6000808211611349576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f305f4f504552414e445f45524331313535000000000000000000000000000000604482015260640161040b565b5060020260010190565b60020190565b60030190565b6000601f821680610ee0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4241445f4f504552414e44000000000000000000000000000000000000000000604482015260640161040b565b6000806113f7836040516020016113e39190611c84565b60405160208183030381529060405261153f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216611451576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80611476575050604080516020810190915260008152610ef8565b80841115611494575050604080516020810190915260008152610ef8565b838310156114df576040517f2c4a89fa00000000000000000000000000000000000000000000000000000000815260048101829052602481018590526044810184905260640161040b565b83830384820360008282106114f457826114f6565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b6060815182604051602001611555929190611caa565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b818110156115a357835183529284019291840191600101611587565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715611601576116016115af565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561164e5761164e6115af565b604052919050565b600067ffffffffffffffff821115611670576116706115af565b5060051b60200190565b600067ffffffffffffffff821115611694576116946115af565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f8301126116d157600080fd5b813560206116e66116e183611656565b611607565b82815260059290921b8401810191818101908684111561170557600080fd5b8286015b848110156117205780358352918301918301611709565b509695505050505050565b6000604080838503121561173e57600080fd5b6117466115de565b9150823567ffffffffffffffff8082111561176057600080fd5b818501915085601f83011261177457600080fd5b813560206117846116e183611656565b82815260059290921b840181019181810190898411156117a357600080fd5b8286015b84811015611817578035868111156117bf5760008081fd5b8701603f81018c136117d15760008081fd5b848101356117e16116e18261167a565b8181528d8b8385010111156117f65760008081fd5b818b84018883013760009181018701919091528452509183019183016117a7565b508752508681013594508285111561182e57600080fd5b61183a888689016116c0565b81870152505050505092915050565b600060c0828403121561185b57600080fd5b60405160c0810181811067ffffffffffffffff8211171561187e5761187e6115af565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b6000806000606084860312156118d857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146118fc57600080fd5b925060208481013567ffffffffffffffff8082111561191a57600080fd5b6119268883890161172b565b9450604087013591508082111561193c57600080fd5b508501601f8101871361194e57600080fd5b803561195c6116e182611656565b81815260c0918202830184019184820191908a84111561197b57600080fd5b938501935b838510156119a1576119928b86611849565b83529384019391850191611980565b5080955050505050509250925092565b60005b838110156119cc5781810151838201526020016119b4565b838111156119db576000848401525b50505050565b6020815260008251806020840152611a008160408501602087016119b1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000806000806101208587031215611a4957600080fd5b843567ffffffffffffffff80821115611a6157600080fd5b611a6d888389016116c0565b95506020870135915080821115611a8357600080fd5b611a8f888389016116c0565b94506040870135915080821115611aa557600080fd5b50611ab28782880161172b565b925050611ac28660608701611849565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611b0e57600080fd5b815167ffffffffffffffff811115611b2557600080fd5b8201601f81018413611b3657600080fd5b8051611b446116e18261167a565b818152856020838501011115611b5957600080fd5b611b6a8260208301602086016119b1565b95945050505050565b600060408284031215611b8557600080fd5b6040516040810181811067ffffffffffffffff82111715611ba857611ba86115af565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b83811015611c1b57815185529382019390820190600101611bff565b50929695505050505050565b82815260008251611c3f8160208501602087016119b1565b919091016020019392505050565b60008451611c5f8184602089016119b1565b82018481528351611c778160208085019088016119b1565b0160200195945050505050565b6000815260008251611c9d8160018501602087016119b1565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f30000000000000000000000000000000000000000000000600582015260008251611d3381600e8501602087016119b1565b91909101600e01939250505056fea26469706673582212209eb839edd88203a4fff92b7d123f4cd1ff081252552bfeca12619cd44d31e61f64736f6c634300080a0033"; + +type StandardStateBuilderConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StandardStateBuilderConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StandardStateBuilder__factory extends ContractFactory { + constructor(...args: StandardStateBuilderConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): StandardStateBuilder { + return super.attach(address) as StandardStateBuilder; + } + connect(signer: Signer): StandardStateBuilder__factory { + return super.connect(signer) as StandardStateBuilder__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StandardStateBuilderInterface { + return new utils.Interface(_abi) as StandardStateBuilderInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StandardStateBuilder { + return new Contract( + address, + _abi, + signerOrProvider + ) as StandardStateBuilder; + } +} diff --git a/src/typechain/factories/StandardVM__factory.ts b/src/typechain/factories/StandardVM__factory.ts new file mode 100644 index 0000000..fc0e870 --- /dev/null +++ b/src/typechain/factories/StandardVM__factory.ts @@ -0,0 +1,112 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { StandardVM, StandardVMInterface } from "../StandardVM"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "vmStateBuilder_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "packedFunctionPointers", + outputs: [ + { + internalType: "bytes", + name: "ptrs_", + type: "bytes", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "storageOpcodesRange", + outputs: [ + { + components: [ + { + internalType: "uint256", + name: "pointer", + type: "uint256", + }, + { + internalType: "uint256", + name: "length", + type: "uint256", + }, + ], + internalType: "struct StorageOpcodesRange", + name: "", + type: "tuple", + }, + ], + stateMutability: "pure", + type: "function", + }, +]; + +const _bytecode = + "0x60c060405234801561001057600080fd5b50604051611f69380380611f6983398101604081905261002f91610044565b306080526001600160a01b031660a052610074565b60006020828403121561005657600080fd5b81516001600160a01b038116811461006d57600080fd5b9392505050565b60805160a051611ed66100936000396000505060005050611ed66000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063e0419ae31461003b578063ea7cb37014610078575b600080fd5b6040805180820182526000808252602091820181905282518084018452818152820181815283519182525191810191909152015b60405180910390f35b61008061008d565b60405161006f919061197e565b60606100a061009b826100a5565b6102c6565b905090565b8051604080516105e08101825267ffffffffffffffff602e840116815260006020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905261030560e084018190526103fc6101008501526104886101208501526105a961014085015261016084015261065261018084015261075a6101a084015261082e6101c0840152610a2b6101e0840152610a36610200840152610a41610220840152610a4c610240840152610a57610260840152610a8b610280840152610af16102a0840152610b576102c0840152610b8b6102e0840152610bbf610300840152610bf4610320840152610c4f610340840152610ca5610360840152610cce610380840152610d256103a0840152610d526103c0840152610da96103e0840152610e14610400840152610e71610420840152610eaf610440840152610ee8610460840152610f1c610480840152610f4e6104a0840152610f806104c0840152610fb26104e0840152610fe66105008401526110386105208401526110716105408401526111236105608401526112506105808401526112ac6105a08401526113666105c0840152835190850201909252919082815b838110156102bd5785818151811061027c5761027c6119f1565b602002602001015185602860060183018151811061029c5761029c6119f1565b67ffffffffffffffff90921660209283029190910190910152600101610262565b50505050919050565b60606020820182516020028101600284015b818310156102f557825181511781526020909201916002016102d8565b5050825160020283525090919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808316600483015292946000949390929185918416906370a08231906024015b602060405180830381865afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec9190611a20565b9093525083925050505b92915050565b60008060006020840391508151905060008173ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610458573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061047c9190611a20565b90925250919392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517f4ee2cd7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015260248201839052929560009594939092918691851690634ee2cd7e906044015b602060405180830381865afa158015610577573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061059b9190611a20565b909452509395945050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f981b24d000000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff84169063981b24d0906024016103ab565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180516040517f6352211e00000000000000000000000000000000000000000000000000000000815260048101829052919360009392909190849073ffffffffffffffffffffffffffffffffffffffff841690636352211e90602401602060405180830381865afa158015610713573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107379190611a39565b73ffffffffffffffffffffffffffffffffffffffff169093525092949350505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0830180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909401516040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80871660048301526024820183905292956000959493909291869185169062fdd58e9060440161055a565b60008060008467ffffffffffffffff81111561084c5761084c611a6f565b604051908082528060200260200182016040528015610875578160200160208202803683370190505b50905060008567ffffffffffffffff81111561089357610893611a6f565b6040519080825280602002602001820160405280156108bc578160200160208202803683370190505b506040870286037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051909550919250602080890282019085015b818310156109115782518152602092830192016108f9565b5050602088028101602084015b8183101561093657825181526020928301920161091e565b50506040517f4e1273f40000000000000000000000000000000000000000000000000000000081526000915073ffffffffffffffffffffffffffffffffffffffff831690634e1273f4906109909087908790600401611ad9565b600060405180830381865afa1580156109ad573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526109f39190810190611b46565b9050846020820160208a0281015b80821015610a1c578151835260209283019290910190610a01565b50909998505050505050505050565b438152602001919050565b338152602001919050565b308152602001919050565b428152602001919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261047c82876113e2565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836103ec82610aeb858a6113e2565b90611463565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836103ec82610b51858a6113e2565b90611489565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261047c828761149e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051600091908261047c82876114e9565b6000602083028203805b83811015610be95780518015610be0578252610be9565b50602001610bc9565b506020019392505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180511560200282017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc090810151909152018092915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09092018051909214909152919050565b6000602083028203805b83811015610be9578051610cc65760008252610be9565b602001610caf565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909211909152919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018051159052919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0909201805192909210909152919050565b6020828102820380516000928201835b8582108015610de757507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15610e0657508051602090910190610dff8382611547565b9250610db9565b505081526020019392505050565b6020828102820380516000928201835b8582108015610e5257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83105b15610e0657508051602090910190610e6a8382611583565b9250610e24565b6020828102820380516000928201835b8582108015610e905750826000105b15610e0657508051602090910190610ea883826115b2565b9250610e81565b600060208302820380516000602083015b85811015610e065780518301915082821015610edb57600080fd5b9091508190602001610ec0565b600060208302820380516000602083015b85811015610e06578051915081610f0f57600080fd5b9181900491602001610ef9565b6020828102820380516000928201835b85821015610e0657508051602090910190610f478184611d71565b9250610f2c565b6020828102820380516000928201835b85821015610e065750805182811115610f75578092505b602082019150610f5e565b6020828102820380516000928201835b85821015610e065750805182811015610fa7578092505b602082019150610f90565b600060208302820380516000602083015b85811015610e06578051915081610fd957600080fd5b9181900691602001610fc3565b60006020830282038051600080602084015b8681101561102957831561102157805192508284029150828483041461101d57600080fd5b8193505b602001610ff8565b50505081526020019392505050565b600060208302820380516000602083015b85811015610e06578051830391508282111561106457600080fd5b9091508190602001611049565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920180518482526040517f88d686040000000000000000000000000000000000000000000000000000000081529193600093929091908590859073ffffffffffffffffffffffffffffffffffffffff8516906388d686049061055a9086908690600401611d7d565b8190037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08301517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090930180518582526040517fcaa0eb3b000000000000000000000000000000000000000000000000000000008152919460009493929091908690869073ffffffffffffffffffffffffffffffffffffffff86169063caa0eb3b906111fc90879087908790600401611dac565b602060405180830381865afa158015611219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123d9190611a20565b8652505060209093019695505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291836103ec83836115c8565b6000600783901c6003600585901c16601f851683808267ffffffffffffffff8111156112da576112da611a6f565b604051908082528060200260200182016040528015611303578160200160208202803683370190505b509050600060206001850102880392506020840283018360005b8282101561133f5781518160200186015260208201915060208101905061131d565b5050519050600061135283838989611627565b845250506020909101979650505050505050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0810180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092018051909260009291600f80871691600488901c90911690856113d385858585611777565b90955250949695505050505050565b60008082601214156113f757839150506103f6565b82601211156114235750601282900361141181600a611d71565b61141b9085611dea565b9150506103f6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161145281600a611d71565b61141b9085611e56565b5092915050565b600081611478670de0b6b3a764000085611dea565b6114829190611e56565b9392505050565b6000670de0b6b3a76400006114788385611dea565b600081810b6114ae5750816103f6565b60008260000b13156114d6576114c582600a611e91565b6114cf9084611dea565b90506103f6565b60ff60008390031661145281600a611d71565b60008060128314156114fe57839150506103f6565b82601211156115185750601282900361145281600a611d71565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffee820161141181600a611d71565b6000828201838110611559578061157b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b949350505050565b600082611592575060006103f6565b828202828482816115a5576115a5611e27565b041415611559578061157b565b60008183116115c2576000611482565b50900390565b60008060015b6008811161161f5760006115e28683611822565b905060006115f08684611822565b905060006115fe83836115b2565b905061160e8560018603836118cf565b945050600190920191506115ce9050565b509392505050565b835160009081908190819060015b600881116117695760009250828761166e57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611672565b5060005b60005b83811015611727576116a08c8281518110611692576116926119f1565b602002602001015184611822565b95508a86116116f257886116bf576116b88683611958565b91506116e9565b60018914156116d2576116b8868361196e565b6002891480156116e0575084155b156116e9578591505b6001945061171f565b8961171f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150611727565b600101611675565b508361175057507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b61175e8660018403836118cf565b955050600101611635565b509298975050505050505050565b60008260088111156117ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000855b858110156118165763ffffffff6020820290811b199890981685891b179791506001016117ee565b50959695505050505050565b6000816008811115611890576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016117e1565b8261189e576000915061145c565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b600082600881111561193d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016117e1565b505063ffffffff602090920291821b199290921691901b1790565b60008183106119675781611482565b5090919050565b6000818310156119675781611482565b600060208083528351808285015260005b818110156119ab5785810183015185820160400152820161198f565b818111156119bd576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215611a3257600080fd5b5051919050565b600060208284031215611a4b57600080fd5b815173ffffffffffffffffffffffffffffffffffffffff8116811461148257600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081518084526020808501945080840160005b83811015611ace57815187529582019590820190600101611ab2565b509495945050505050565b604080825283519082018190526000906020906060840190828701845b82811015611b2857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101611af6565b50505083810382850152611b3c8186611a9e565b9695505050505050565b60006020808385031215611b5957600080fd5b825167ffffffffffffffff80821115611b7157600080fd5b818501915085601f830112611b8557600080fd5b815181811115611b9757611b97611a6f565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f83011681018181108582111715611bda57611bda611a6f565b604052918252848201925083810185019188831115611bf857600080fd5b938501935b82851015611c1657845184529385019392850192611bfd565b98975050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600181815b80851115611caa57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611c9057611c90611c22565b80851615611c9d57918102915b93841c9390800290611c56565b509250929050565b600082611cc1575060016103f6565b81611cce575060006103f6565b8160018114611ce45760028114611cee57611d0a565b60019150506103f6565b60ff841115611cff57611cff611c22565b50506001821b6103f6565b5060208310610133831016604e8410600b8410161715611d2d575081810a6103f6565b611d378383611c51565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04821115611d6957611d69611c22565b029392505050565b60006114828383611cb2565b73ffffffffffffffffffffffffffffffffffffffff8316815260406020820152600061157b6040830184611a9e565b73ffffffffffffffffffffffffffffffffffffffff84168152826020820152606060408201526000611de16060830184611a9e565b95945050505050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611e2257611e22611c22565b500290565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082611e8c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600061148260ff841683611cb256fea2646970667358221220cb22e3a557138e07aae789c4711a192ce8ad04a3fda5ea342a5e4aaad9d7674a64736f6c634300080a0033"; + +type StandardVMConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: StandardVMConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class StandardVM__factory extends ContractFactory { + constructor(...args: StandardVMConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy( + vmStateBuilder_, + overrides || {} + ) as Promise; + } + getDeployTransaction( + vmStateBuilder_: string, + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(vmStateBuilder_, overrides || {}); + } + attach(address: string): StandardVM { + return super.attach(address) as StandardVM; + } + connect(signer: Signer): StandardVM__factory { + return super.connect(signer) as StandardVM__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): StandardVMInterface { + return new utils.Interface(_abi) as StandardVMInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): StandardVM { + return new Contract(address, _abi, signerOrProvider) as StandardVM; + } +} diff --git a/src/typechain/factories/TierReportTest__factory.ts b/src/typechain/factories/TierReportTest__factory.ts index 1b6508e..41ae0e5 100644 --- a/src/typechain/factories/TierReportTest__factory.ts +++ b/src/typechain/factories/TierReportTest__factory.ts @@ -181,7 +181,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506104ee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063787752041161005057806378775204146100c2578063c29df246146100d5578063f0ef511b146100e857600080fd5b806318cc4ccb146100775780633907cb421461009c578063696dd6c0146100af575b600080fd5b61008a610085366004610438565b6100fb565b60405190815260200160405180910390f35b61008a6100aa366004610464565b610110565b61008a6100bd366004610496565b610127565b61008a6100d0366004610496565b61013c565b61008a6100e3366004610464565b610148565b61008a6100f6366004610496565b610156565b6000610108848484610162565b949350505050565b600061011e858585856101f0565b95945050505050565b60006101338383610214565b90505b92915050565b60006101338383610241565b600061011e858585856102e5565b6000610133838361038b565b60008260088111156101d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b505063ffffffff602090920291821b199290921691901b1790565b600083831061020a57610205858585856102e5565b61011e565b61011e8584610241565b60005b600881101561013657818160200284901c63ffffffff16111561023957610136565b600101610217565b60008160088111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b6000855b8581101561037f5763ffffffff6020820290811b199890981685891b17979150600101610357565b50959695505050505050565b60008160088111156103f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b8261040757600091506102de565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008060006060848603121561044d57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561047a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156104a957600080fd5b5050803592602090910135915056fea2646970667358221220d1b29abc4efd97e1dc9510b634571b5ad146a1b9f7e8405e4e49e1afae641f7864736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506104ee806100206000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c8063787752041161005057806378775204146100c2578063c29df246146100d5578063f0ef511b146100e857600080fd5b806318cc4ccb146100775780633907cb421461009c578063696dd6c0146100af575b600080fd5b61008a610085366004610438565b6100fb565b60405190815260200160405180910390f35b61008a6100aa366004610464565b610110565b61008a6100bd366004610496565b610127565b61008a6100d0366004610496565b61013c565b61008a6100e3366004610464565b610148565b61008a6100f6366004610496565b610156565b6000610108848484610162565b949350505050565b600061011e858585856101f0565b95945050505050565b60006101338383610214565b90505b92915050565b60006101338383610241565b600061011e858585856102e5565b6000610133838361038b565b60008260088111156101d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b505063ffffffff602090920291821b199290921691901b1790565b600083831061020a57610205858585856102e5565b61011e565b61011e8584610241565b60005b600881101561013657818160200284901c63ffffffff16111561023957610136565b600101610217565b60008160088111156102af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020840290811c901b841791505b5092915050565b6000826008811115610353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b6000855b8581101561037f5763ffffffff6020820290811b199890981685891b17979150600101610357565b50959695505050505050565b60008160088111156103f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016101cc565b8261040757600091506102de565b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016020021c63ffffffff1690565b60008060006060848603121561044d57600080fd5b505081359360208301359350604090920135919050565b6000806000806080858703121561047a57600080fd5b5050823594602084013594506040840135936060013592509050565b600080604083850312156104a957600080fd5b5050803592602090910135915056fea2646970667358221220f1da986a94a2a4f14f1e18b4e6480d7c27f4053a71b597802ae688d8bda3454764736f6c634300080a0033"; type TierReportTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/TierV2Test__factory.ts b/src/typechain/factories/TierV2Test__factory.ts index 75f88c2..36478ba 100644 --- a/src/typechain/factories/TierV2Test__factory.ts +++ b/src/typechain/factories/TierV2Test__factory.ts @@ -81,7 +81,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506103b1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806388d686041461006e578063caa0eb3b146100b1575b600080fd5b610059610054366004610161565b6100c8565b60405190151581526020015b60405180910390f35b6100a361007c366004610202565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b604051908152602001610065565b6100a36100bf3660046102f1565b42949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561017357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101a357600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101ce57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561021557600080fd5b61021e836101aa565b915060208084013567ffffffffffffffff8082111561023c57600080fd5b818601915086601f83011261025057600080fd5b813581811115610262576102626101d3565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156102a5576102a56101d3565b6040529182528482019250838101850191898311156102c357600080fd5b938501935b828510156102e1578435845293850193928501926102c8565b8096505050505050509250929050565b6000806000806060858703121561030757600080fd5b610310856101aa565b935060208501359250604085013567ffffffffffffffff8082111561033457600080fd5b818701915087601f83011261034857600080fd5b81358181111561035757600080fd5b8860208260051b850101111561036c57600080fd5b9598949750506020019450505056fea2646970667358221220fd4264fc1eba0f1f56b48364c8be202265b81d30bcaac437f240ec8bf2fd862964736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506103b1806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a71461004657806388d686041461006e578063caa0eb3b146100b1575b600080fd5b610059610054366004610161565b6100c8565b60405190151581526020015b60405180910390f35b6100a361007c366004610202565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff92915050565b604051908152602001610065565b6100a36100bf3660046102f1565b42949350505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015b57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60006020828403121561017357600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146101a357600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146101ce57600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000806040838503121561021557600080fd5b61021e836101aa565b915060208084013567ffffffffffffffff8082111561023c57600080fd5b818601915086601f83011261025057600080fd5b813581811115610262576102626101d3565b8060051b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f830116810181811085821117156102a5576102a56101d3565b6040529182528482019250838101850191898311156102c357600080fd5b938501935b828510156102e1578435845293850193928501926102c8565b8096505050505050509250929050565b6000806000806060858703121561030757600080fd5b610310856101aa565b935060208501359250604085013567ffffffffffffffff8082111561033457600080fd5b818701915087601f83011261034857600080fd5b81358181111561035757600080fd5b8860208260051b850101111561036c57600080fd5b9598949750506020019450505056fea2646970667358221220273327074f8d407c4933213d71b6717095e46d39454f99367b4a18548d64103864736f6c634300080a0033"; type TierV2TestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VMStateBuilder__factory.ts b/src/typechain/factories/VMStateBuilder__factory.ts index f1b3326..6d90faf 100644 --- a/src/typechain/factories/VMStateBuilder__factory.ts +++ b/src/typechain/factories/VMStateBuilder__factory.ts @@ -9,11 +9,6 @@ import type { } from "../VMStateBuilder"; const _abi = [ - { - inputs: [], - stateMutability: "nonpayable", - type: "constructor", - }, { inputs: [ { @@ -96,11 +91,6 @@ const _abi = [ name: "storageLength", type: "uint256", }, - { - internalType: "uint256", - name: "opcodesLength", - type: "uint256", - }, ], internalType: "struct Bounds[]", name: "boundss_", @@ -111,7 +101,7 @@ const _abi = [ outputs: [ { internalType: "bytes", - name: "", + name: "state_", type: "bytes", }, ], @@ -120,6 +110,16 @@ const _abi = [ }, { inputs: [ + { + internalType: "uint256[]", + name: "stackPops_", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "stackPushes_", + type: "uint256[]", + }, { components: [ { @@ -169,11 +169,6 @@ const _abi = [ name: "storageLength", type: "uint256", }, - { - internalType: "uint256", - name: "opcodesLength", - type: "uint256", - }, ], internalType: "struct Bounds", name: "bounds_", @@ -185,38 +180,14 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "bytes", - name: "packedFnPtrs_", - type: "bytes", - }, - { - internalType: "bytes", - name: "source_", - type: "bytes", - }, - ], - name: "ptrSource", - outputs: [ - { - internalType: "bytes", - name: "", - type: "bytes", - }, - ], - stateMutability: "pure", - type: "function", - }, { inputs: [], - name: "stackPopsFnPtrs", + name: "stackPops", outputs: [ { - internalType: "bytes", + internalType: "uint256[]", name: "", - type: "bytes", + type: "uint256[]", }, ], stateMutability: "pure", @@ -224,21 +195,21 @@ const _abi = [ }, { inputs: [], - name: "stackPushesFnPtrs", + name: "stackPushes", outputs: [ { - internalType: "bytes", + internalType: "uint256[]", name: "", - type: "bytes", + type: "uint256[]", }, ], - stateMutability: "pure", + stateMutability: "view", type: "function", }, ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506200002a60605b6200005460201b620009141760201c565b6001600160a01b031660805262000042606062000019565b6001600160a01b031660a05262000197565b6000806200008e836040516020016200006e919062000135565b604051602081830303815290604052620000c960201b6200099f1760201c565b90508051602082016000f091506001600160a01b038216620000c35760405163046a55db60e11b815260040160405180910390fd5b50919050565b6060815182604051602001620000e192919062000151565b6040516020818303038152906040529050919050565b6000815160005b818110156200011a5760208185018101518683015201620000fe565b818111156200012a576000828601525b509290920192915050565b6000815260006200014a6001830184620000f7565b9392505050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b600582015260006200018f600e830184620000f7565b949350505050565b60805160a051611720620001bd60003960006105600152600061053301526117206000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634fc976e9116100505780634fc976e91461009c5780639b0bc349146100b1578063a46c2a311461009557600080fd5b806317376ae01461006c5780634127338614610095575b600080fd5b61007f61007a366004611253565b6100c4565b60405161008c9190611371565b60405180910390f35b606061007f565b6100af6100aa3660046113c2565b6104bf565b005b61007f6100bf366004611412565b6107c3565b606060006100d1856109cb565b905060008573ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa15801561011f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101439190611476565b60200151905060008060005b86518110156102e7578387828151811061016b5761016b6114c5565b602002602001015160a0018181525050600285518161018c5761018c6114f4565b0487828151811061019f5761019f6114c5565b602002602001015160c00181815250506101d2888883815181106101c5576101c56114c5565b60200260200101516104bf565b6102028782815181106101e7576101e76114c5565b60200260200101516080015184610b0f90919063ffffffff16565b9250610234878281518110610219576102196114c5565b60200260200101516060015183610b0f90919063ffffffff16565b9150868181518110610248576102486114c5565b602002602001015160200151878281518110610266576102666114c5565b60200260200101516040015110156102df576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064015b60405180910390fd5b60010161014f565b506000828860200151510167ffffffffffffffff81111561030a5761030a610f22565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b50905060005b886020015151811015610389578860200151818151811061035c5761035c6114c5565b6020026020010151828281518110610376576103766114c5565b6020908102919091010152600101610339565b5087515160009067ffffffffffffffff8111156103a8576103a8610f22565b6040519080825280602002602001820160405280156103db57816020015b60608152602001906001900390816103c65790505b50905060005b89515181101561043757610412878b600001518381518110610405576104056114c5565b60200260200101516107c3565b828281518110610424576104246114c5565b60209081029190910101526001016103e1565b506104af6040518060a00160405280600081526020018567ffffffffffffffff81111561046657610466610f22565b60405190808252806020026020018201604052801561048f578160200160208202803683370190505b5081526020018381526020018481526020018b6020015151815250610b26565b96505050505050505b9392505050565b8051825151811061052c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064016102d6565b60006105577f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060006105847f0000000000000000000000000000000000000000000000000000000000000000610c63565b905060008080600080602088026020018a5101519050805193505b83851015610748576002850194508481015180601e1a935080601f1a925050600683101561066357826105f35789602001515189608001510182106105e357600080fd5b604089018051600101905261064a565b600183141561060c57886040015182106105e357600080fd5b600283141561062557604089018051600101905261064a565b600383141561064a578860a00151821061063e57600080fd5b60408901805160010190525b600483141561065e5761065e8a8a84610c91565b61072b565b8860c0015183106106d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4d41585f4f50434f44450000000000000000000000000000000000000000000060448201526064016102d6565b6020838102888101820151908801909101516106ef8463ffffffff8416565b60408c018051919091039081905260608c015161070b91610b0f565b60608c015261071d8463ffffffff8316565b60408c018051909101905250505b604089015160608a015161073e91610b0f565b60608a015261059f565b606089015160ff10156107b7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016102d6565b50505050505050505050565b80516060906002810615610833576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016102d6565b60006002600383020467ffffffffffffffff81111561085457610854610f22565b6040519080825280601f01601f19166020018201604052801561087e576020820181803683370190505b509050600660018381018160005b828210156109065781890151601f1a60028306156108e857858110156108ba57600182019181908801602101535b8581106108e857600281026002018b015180601e1a83602001890153600183019260ff821690890160210153505b600283066108f95780826020018801535b506001918201910161088c565b509398975050505050505050565b60008061093f8360405160200161092b9190611523565b60405160208183030381529060405261099f565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610999576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b60608151826040516020016109b5929190611549565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff8082166000908152602081905260408120546060926109ff9116610c63565b9050805160001415610b0957610aac610aa78473ffffffffffffffffffffffffffffffffffffffff1663f2cd6c086040518163ffffffff1660e01b8152600401600060405180830381865afa158015610a5c573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610aa291908101906115e0565b610d30565b610914565b73ffffffffffffffffffffffffffffffffffffffff848116600090815260208190526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000016929091169190911790556104b8836109cb565b92915050565b600081831015610b1f57816104b8565b5090919050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610b729190611657565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610bae929160200161168d565b604051602081830303815290604052905060005b856040015151811015610c5a578186604001518281518110610be657610be66114c5565b60200260200101515160001b87604001518381518110610c0857610c086114c5565b6020026020010151604051602001610c22939291906116b3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610bc2565b50949350505050565b6060610b098260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610e3a565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610cdb9190610b0f565b60608401526080830151610cef9082610b0f565b60808401528251600783168085526001600385811c161b919060005b83811015610d2557610d1d88886104bf565b600101610d0b565b505090935250505050565b60606020825181610d4357610d436114f4565b0615610dab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4241445f464e5f505452535f4c454e475448000000000000000000000000000060448201526064016102d6565b60006010835181610dbe57610dbe6114f4565b0467ffffffffffffffff811115610dd757610dd7610f22565b6040519080825280601f01601f191660200182016040528015610e01576020820181803683370190505b509050600060025b8451821015610e31578083018051602084880181015190911790915290910190600201610e09565b50909392505050565b6060833b80610e595750506040805160208101909152600081526104b8565b80841115610e775750506040805160208101909152600081526104b8565b83831015610ec2576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016102d6565b8383038482036000828210610ed75782610ed9565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f7457610f74610f22565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610fc157610fc1610f22565b604052919050565b600067ffffffffffffffff821115610fe357610fe3610f22565b5060051b60200190565b600067ffffffffffffffff82111561100757611007610f22565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261104457600080fd5b813561105761105282610fed565b610f7a565b81815284602083860101111561106c57600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261109a57600080fd5b813560206110aa61105283610fc9565b82815260059290921b840181019181810190868411156110c957600080fd5b8286015b848110156110e457803583529183019183016110cd565b509695505050505050565b60006040828403121561110157600080fd5b611109610f51565b9050813567ffffffffffffffff8082111561112357600080fd5b818401915084601f83011261113757600080fd5b8135602061114761105283610fc9565b82815260059290921b8401810191818101908884111561116657600080fd5b8286015b8481101561119e578035868111156111825760008081fd5b6111908b86838b0101611033565b84525091830191830161116a565b50865250858101359350828411156111b557600080fd5b6111c187858801611089565b818601525050505092915050565b600060e082840312156111e157600080fd5b60405160e0810181811067ffffffffffffffff8211171561120457611204610f22565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a082015260c083013560c08201525092915050565b60008060006060848603121561126857600080fd5b833573ffffffffffffffffffffffffffffffffffffffff8116811461128c57600080fd5b925060208481013567ffffffffffffffff808211156112aa57600080fd5b6112b6888389016110ef565b945060408701359150808211156112cc57600080fd5b508501601f810187136112de57600080fd5b80356112ec61105282610fc9565b81815260e0918202830184019184820191908a84111561130b57600080fd5b938501935b83851015611331576113228b866111cf565b83529384019391850191611310565b5080955050505050509250925092565b60005b8381101561135c578181015183820152602001611344565b8381111561136b576000848401525b50505050565b6020815260008251806020840152611390816040850160208701611341565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008061010083850312156113d657600080fd5b823567ffffffffffffffff8111156113ed57600080fd5b6113f9858286016110ef565b92505061140984602085016111cf565b90509250929050565b6000806040838503121561142557600080fd5b823567ffffffffffffffff8082111561143d57600080fd5b61144986838701611033565b9350602085013591508082111561145f57600080fd5b5061146c85828601611033565b9150509250929050565b60006040828403121561148857600080fd5b6040516040810181811067ffffffffffffffff821117156114ab576114ab610f22565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600081526000825161153c816001850160208701611341565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516115d281600e850160208701611341565b91909101600e019392505050565b6000602082840312156115f257600080fd5b815167ffffffffffffffff81111561160957600080fd5b8201601f8101841361161a57600080fd5b805161162861105282610fed565b81815285602083850101111561163d57600080fd5b61164e826020830160208601611341565b95945050505050565b815160009082906020808601845b8381101561168157815185529382019390820190600101611665565b50929695505050505050565b828152600082516116a5816020850160208701611341565b919091016020019392505050565b600084516116c5818460208901611341565b820184815283516116dd816020808501908801611341565b016020019594505050505056fea264697066735822122054bae36e78a0fd904c0d8e7af39329eb28b2e7842061a7b08cf588ee520ee9ac64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b50611838806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80630d5236cd14610051578063661b810d14610051578063aa9628a114610069578063ce19c93514610089575b600080fd5b6060604051610060919061102c565b60405180910390f35b61007c610077366004611384565b61009e565b60405161006091906114a2565b61009c6100973660046114f3565b610363565b005b606060006100ab8561076b565b905060006100bc8260200151610ad0565b9050600080606080825b885181101561018b57866000015161ffff168982815181106100ea576100ea61158e565b602002602001015160a001818152505061011f83838c8c85815181106101125761011261158e565b6020026020010151610363565b61014f8982815181106101345761013461158e565b60200260200101516080015186610b0490919063ffffffff16565b94506101818982815181106101665761016661158e565b60200260200101516060015185610b0490919063ffffffff16565b93506001016100c6565b506000848a60200151510167ffffffffffffffff8111156101ae576101ae611070565b6040519080825280602002602001820160405280156101d7578160200160208202803683370190505b50905060005b8a602001515181101561022d578a6020015181815181106102005761020061158e565b602002602001015182828151811061021a5761021a61158e565b60209081029190910101526001016101dd565b5089515160009067ffffffffffffffff81111561024c5761024c611070565b60405190808252806020026020018201604052801561027f57816020015b606081526020019060019003908161026a5790505b50905060005b8b51518110156102db576102b6888d6000015183815181106102a9576102a961158e565b6020026020010151610b1d565b8282815181106102c8576102c861158e565b6020908102919091010152600101610285565b506103536040518060a00160405280600081526020018767ffffffffffffffff81111561030a5761030a611070565b604051908082528060200260200182016040528015610333578160200160208202803683370190505b5081526020018381526020018481526020018d6020015151815250610cad565b9c9b505050505050505050505050565b805182515181106103d5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4d494e5f534f555243455300000000000000000000000000000000000000000060448201526064015b60405180910390fd5b6000808060008060208602602001885101519050805193505b8385101561067e576002850194508481015180601e1a935080601f1a92505060068310156105bf578261049f57876020015151876080015101821061048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4f4f425f434f4e5354414e54000000000000000000000000000000000000000060448201526064016103cc565b6040870180516001019052610661565b6001831415610515578660400151821061048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4f4f425f535441434b000000000000000000000000000000000000000000000060448201526064016103cc565b600283141561052e576040870180516001019052610661565b60038314156105a4578660a00151821061048f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f4f425f53544f5241474500000000000000000000000000000000000000000060448201526064016103cc565b60048314156105ba576105ba8a8a8a8a86610dea565b610661565b60008a84815181106105d3576105d361158e565b6020026020010151905060058111156105f857806105f48463ffffffff8316565b9150505b60408801805182900390819052606089015161061391610b04565b606089015289516000908b908690811061062f5761062f61158e565b60200260200101519050600581111561065457806106508563ffffffff8316565b9150505b6040890180519091019052505b6040870151606088015161067491610b04565b60608801526103ee565b606087015160ff10156106ed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4d41585f535441434b000000000000000000000000000000000000000000000060448201526064016103cc565b86602001518760400151101561075f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f46494e414c5f535441434b5f494e44455800000000000000000000000000000060448201526064016103cc565b50505050505050505050565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff84811682528183529083902083518085019094525461ffff8116845262010000900416908201819052610acb5760008273ffffffffffffffffffffffffffffffffffffffff163b11610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f53495a455f564d000000000000000000000000000000000000000000000060448201526064016103cc565b60008273ffffffffffffffffffffffffffffffffffffffff1663ea7cb3706040518163ffffffff1660e01b8152600401600060405180830381865afa158015610891573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682016040526108d791908101906115bd565b905060008373ffffffffffffffffffffffffffffffffffffffff1663e0419ae36040518163ffffffff1660e01b81526004016040805180830381865afa158015610925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109499190611634565b905061ffff8016816020015111156109bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4f425f53544f524147455f4f50434f4445530000000000000000000000000060448201526064016103cc565b60028251816109ce576109ce611683565b0615610a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f494e56414c49445f504f494e544552530000000000000000000000000000000060448201526064016103cc565b6040518060400160405280826020015161ffff168152602001610a5884610e8d565b73ffffffffffffffffffffffffffffffffffffffff908116909152858116600090815260208181526040909120835181549285015190931662010000027fffffffffffffffffffff0000000000000000000000000000000000000000000090921661ffff90931692909217179055925050505b919050565b6060610afe8260017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610f18565b92915050565b600081831015610b145781610b16565b825b9392505050565b805182516060919060011615610b8f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4f44445f5041434b45445f50545253000000000000000000000000000000000060448201526064016103cc565b6002810615610bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4f44445f534f555243455f4c454e47544800000000000000000000000000000060448201526064016103cc565b60006002600383020467ffffffffffffffff811115610c1b57610c1b611070565b6040519080825280601f01601f191660200182016040528015610c45576020820181803683370190505b50905060056002808701908681019085880101600385015b81831015610c9f57825180601e1a86811115610c7e5760020285015161ffff165b81601f1a8160081b1783511783525050600283019250600381019050610c5d565b509398975050505050505050565b606060008260600151905060006018846040015151901b60108560800151901b6008866020015151901b866060015151171717905060008160001b83604051602001610cf991906116b2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610d3592916020016116e8565b604051602081830303815290604052905060005b856040015151811015610de1578186604001518281518110610d6d57610d6d61158e565b60200260200101515160001b87604001518381518110610d8f57610d8f61158e565b6020026020010151604051602001610da99392919061170e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101610d49565b50949350505050565b6040820180517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600584901c9182900301918290526060840151600190910191610e349190610b04565b60608401526080830151610e489082610b04565b60808401528251600783168085526001600385811c161b919060005b83811015610e8057610e788a8a8a8a610363565b600101610e64565b5050909352505050505050565b600080610eb883604051602001610ea49190611745565b604051602081830303815290604052611000565b90508051602082016000f0915073ffffffffffffffffffffffffffffffffffffffff8216610f12576040517f08d4abb600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50919050565b6060833b80610f37575050604080516020810190915260008152610b16565b80841115610f55575050604080516020810190915260008152610b16565b83831015610fa0576040517f2c4a89fa0000000000000000000000000000000000000000000000000000000081526004810182905260248101859052604481018490526064016103cc565b8383038482036000828210610fb55782610fb7565b815b60408051603f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168101909152818152955090508087602087018a3c505050509392505050565b606081518260405160200161101692919061176b565b6040516020818303038152906040529050919050565b6020808252825182820181905260009190848201906040850190845b8181101561106457835183529284019291840191600101611048565b50909695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156110c2576110c2611070565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561110f5761110f611070565b604052919050565b600067ffffffffffffffff82111561113157611131611070565b5060051b60200190565b600067ffffffffffffffff82111561115557611155611070565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f83011261119257600080fd5b813560206111a76111a283611117565b6110c8565b82815260059290921b840181019181810190868411156111c657600080fd5b8286015b848110156111e157803583529183019183016111ca565b509695505050505050565b600060408083850312156111ff57600080fd5b61120761109f565b9150823567ffffffffffffffff8082111561122157600080fd5b818501915085601f83011261123557600080fd5b813560206112456111a283611117565b82815260059290921b8401810191818101908984111561126457600080fd5b8286015b848110156112d8578035868111156112805760008081fd5b8701603f81018c136112925760008081fd5b848101356112a26111a28261113b565b8181528d8b8385010111156112b75760008081fd5b818b8401888301376000918101870191909152845250918301918301611268565b50875250868101359450828511156112ef57600080fd5b6112fb88868901611181565b81870152505050505092915050565b600060c0828403121561131c57600080fd5b60405160c0810181811067ffffffffffffffff8211171561133f5761133f611070565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060006060848603121561139957600080fd5b833573ffffffffffffffffffffffffffffffffffffffff811681146113bd57600080fd5b925060208481013567ffffffffffffffff808211156113db57600080fd5b6113e7888389016111ec565b945060408701359150808211156113fd57600080fd5b508501601f8101871361140f57600080fd5b803561141d6111a282611117565b81815260c0918202830184019184820191908a84111561143c57600080fd5b938501935b83851015611462576114538b8661130a565b83529384019391850191611441565b5080955050505050509250925092565b60005b8381101561148d578181015183820152602001611475565b8381111561149c576000848401525b50505050565b60208152600082518060208401526114c1816040850160208701611472565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b600080600080610120858703121561150a57600080fd5b843567ffffffffffffffff8082111561152257600080fd5b61152e88838901611181565b9550602087013591508082111561154457600080fd5b61155088838901611181565b9450604087013591508082111561156657600080fd5b50611573878288016111ec565b925050611583866060870161130a565b905092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000602082840312156115cf57600080fd5b815167ffffffffffffffff8111156115e657600080fd5b8201601f810184136115f757600080fd5b80516116056111a28261113b565b81815285602083850101111561161a57600080fd5b61162b826020830160208601611472565b95945050505050565b60006040828403121561164657600080fd5b6040516040810181811067ffffffffffffffff8211171561166957611669611070565b604052825181526020928301519281019290925250919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b815160009082906020808601845b838110156116dc578151855293820193908201906001016116c0565b50929695505050505050565b82815260008251611700816020850160208701611472565b919091016020019392505050565b60008451611720818460208901611472565b82018481528351611738816020808501908801611472565b0160200195945050505050565b600081526000825161175e816001850160208701611472565b9190910160010192915050565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f300000000000000000000000000000000000000000000006005820152600082516117f481600e850160208701611472565b91909101600e01939250505056fea26469706673582212204f2c1fdca32218e1412ade29a17d26548ce2502d83562d189816298a5935520b64736f6c634300080a0033"; type VMStateBuilderConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyCallbackTest__factory.ts b/src/typechain/factories/VerifyCallbackTest__factory.ts index 246083d..b488887 100644 --- a/src/typechain/factories/VerifyCallbackTest__factory.ts +++ b/src/typechain/factories/VerifyCallbackTest__factory.ts @@ -208,7 +208,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220648f05203a3f3903e1b1b5a1cbe86cad75ffdf4dc7a41ce4c92661c01f5d2c8964736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b506111e6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80639897187b1161005b5780639897187b146100ff578063ad285cad14610122578063ebae2d8c14610145578063f24267891461015857600080fd5b8063376dcbe21461008d5780635d0341ba146100a257806389bd6b26146100d95780638f6b1146146100ec575b600080fd5b6100a061009b366004610fbf565b61017b565b005b6100c56100b0366004611045565b60016020526000908152604090205460ff1681565b604051901515815260200160405180910390f35b6100a06100e7366004610fbf565b61053b565b6100a06100fa366004610fbf565b61082a565b6100c561010d366004611045565b60036020526000908152604090205460ff1681565b6100c5610130366004611045565b60026020526000908152604090205460ff1681565b6100a0610153366004610fbf565b610be0565b6100c5610166366004611045565b60006020819052908152604090205460ff1681565b73ffffffffffffffffffffffffffffffffffffffff83166101fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b60005b81811015610535576001600084848481811061021e5761021e611067565b90506020028101906102309190611096565b61023e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16156102cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f5052494f525f415050524f56450000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f83838381811061033757610337611067565b90506020028101906103499190611096565b6103579060208101906110d4565b604051610365929190611140565b6040518091039020146103d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b6000808484848181106103e9576103e9611067565b90506020028101906103fb9190611096565b610409906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610499576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b60018060008585858181106104b0576104b0611067565b90506020028101906104c29190611096565b6104d0906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061052d81611150565b915050610200565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166105b8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b81811015610535576000808484848181106105d8576105d8611067565b90506020028101906105ea9190611096565b6105f8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f414444000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106106f1576106f1611067565b90506020028101906107039190611096565b6107119060208101906110d4565b60405161071f929190611140565b60405180910390201461078e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b60016000808585858181106107a5576107a5611067565b90506020028101906107b79190611096565b6107c5906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169115159190911790558061082281611150565b9150506105bb565b73ffffffffffffffffffffffffffffffffffffffff83166108a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b8181101561053557600260008484848181106108c8576108c8611067565b90506020028101906108da9190611096565b6108e8906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f5052494f525f42414e000000000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f8383838181106109e1576109e1611067565b90506020028101906109f39190611096565b610a019060208101906110d4565b604051610a0f929190611140565b604051809103902014610a7e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610a9357610a93611067565b9050602002810190610aa59190611096565b610ab3906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610b43576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160026000858585818110610b5b57610b5b611067565b9050602002810190610b6d9190611096565b610b7b906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610bd881611150565b9150506108aa565b73ffffffffffffffffffffffffffffffffffffffff8316610c5d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016101f4565b60005b818110156105355760036000848484818110610c7e57610c7e611067565b9050602002810190610c909190611096565b610c9e906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff1615610d2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5052494f525f52454d4f5645000000000000000000000000000000000000000060448201526064016101f4565b60408051808201909152600481527f476f6f64000000000000000000000000000000000000000000000000000000006020909101527fa8dae9b555011d119186698e9c3ac10ea4db14c9780aa0d040dd47e9bfc6f41f838383818110610d9757610d97611067565b9050602002810190610da99190611096565b610db79060208101906110d4565b604051610dc5929190611140565b604051809103902014610e34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4241445f45564944454e4345000000000000000000000000000000000000000060448201526064016101f4565b600080848484818110610e4957610e49611067565b9050602002810190610e5b9190611096565b610e69906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205460ff16610ef9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e4f545f41444445445f43414c4c4241434b000000000000000000000000000060448201526064016101f4565b600160036000858585818110610f1157610f11611067565b9050602002810190610f239190611096565b610f31906020810190611045565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905580610f8e81611150565b915050610c60565b803573ffffffffffffffffffffffffffffffffffffffff81168114610fba57600080fd5b919050565b600080600060408486031215610fd457600080fd5b610fdd84610f96565b9250602084013567ffffffffffffffff80821115610ffa57600080fd5b818601915086601f83011261100e57600080fd5b81358181111561101d57600080fd5b8760208260051b850101111561103257600080fd5b6020830194508093505050509250925092565b60006020828403121561105757600080fd5b61106082610f96565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126110ca57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261110957600080fd5b83018035915067ffffffffffffffff82111561112457600080fd5b60200191503681900382131561113957600080fd5b9250929050565b8183823760009101908152919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156111a9577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b506001019056fea2646970667358221220728d091ffcf033f11d27e5cb7feccc6ffe2ce6b2179d4036db53d1d2069a34a564736f6c634300080a0033"; type VerifyCallbackTestConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyCallback__factory.ts b/src/typechain/factories/VerifyCallback__factory.ts new file mode 100644 index 0000000..63490bf --- /dev/null +++ b/src/typechain/factories/VerifyCallback__factory.ts @@ -0,0 +1,233 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { + VerifyCallback, + VerifyCallbackInterface, +} from "../VerifyCallback"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "adder_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterAdd", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "approver_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterApprove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "banner_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterBan", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "remover_", + type: "address", + }, + { + components: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + internalType: "struct Evidence[]", + name: "evidences_", + type: "tuple[]", + }, + ], + name: "afterRemove", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; + +const _bytecode = + "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6103b88061007e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b1461009f5780638f6b114614610082578063ebae2d8c14610082578063f2fde38b146100cb57600080fd5b8063376dcbe214610082578063715018a61461009757806389bd6b2614610082575b600080fd5b6100956100903660046102da565b6100de565b005b6100956100eb565b6000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100956100d9366004610360565b6100ff565b6100e66101bb565b505050565b6100f36101bb565b6100fd600061023c565b565b6101076101bb565b73ffffffffffffffffffffffffffffffffffffffff81166101af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6101b88161023c565b50565b60005473ffffffffffffffffffffffffffffffffffffffff1633146100fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016101a6565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803573ffffffffffffffffffffffffffffffffffffffff811681146102d557600080fd5b919050565b6000806000604084860312156102ef57600080fd5b6102f8846102b1565b9250602084013567ffffffffffffffff8082111561031557600080fd5b818601915086601f83011261032957600080fd5b81358181111561033857600080fd5b8760208260051b850101111561034d57600080fd5b6020830194508093505050509250925092565b60006020828403121561037257600080fd5b61037b826102b1565b939250505056fea264697066735822122079c3eec858c9f1a5d1e561498bccd8fba6c0349250a6f4b9cfd151f677bb9c7964736f6c634300080a0033"; + +type VerifyCallbackConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: VerifyCallbackConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class VerifyCallback__factory extends ContractFactory { + constructor(...args: VerifyCallbackConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + deploy( + overrides?: Overrides & { from?: string | Promise } + ): Promise { + return super.deploy(overrides || {}) as Promise; + } + getDeployTransaction( + overrides?: Overrides & { from?: string | Promise } + ): TransactionRequest { + return super.getDeployTransaction(overrides || {}); + } + attach(address: string): VerifyCallback { + return super.attach(address) as VerifyCallback; + } + connect(signer: Signer): VerifyCallback__factory { + return super.connect(signer) as VerifyCallback__factory; + } + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): VerifyCallbackInterface { + return new utils.Interface(_abi) as VerifyCallbackInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): VerifyCallback { + return new Contract(address, _abi, signerOrProvider) as VerifyCallback; + } +} diff --git a/src/typechain/factories/VerifyFactory__factory.ts b/src/typechain/factories/VerifyFactory__factory.ts index 8dab4ee..5009e20 100644 --- a/src/typechain/factories/VerifyFactory__factory.ts +++ b/src/typechain/factories/VerifyFactory__factory.ts @@ -134,7 +134,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612c9e8061084783390190565b6080516107836100c4600039600081816093015261037a01526107836000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461051c565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c336600461058e565b6102bf565b6101016100d63660046105cb565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260009081556101968484610362565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b60003073ffffffffffffffffffffffffffffffffffffffff16632ea72a49836040516020016102ee91906105ef565b6040516020818303038152906040526040518263ffffffff1660e01b81526004016103199190610637565b6020604051808303816000875af1158015610338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035c91906106aa565b92915050565b600080610371838501856106c7565b9050600061039e7f000000000000000000000000000000000000000000000000000000000000000061043a565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b15801561041957600080fd5b505af115801561042d573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610517576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561052f57600080fd5b823567ffffffffffffffff8082111561054757600080fd5b818501915085601f83011261055b57600080fd5b81358181111561056a57600080fd5b86602082850101111561057c57600080fd5b60209290920196919550909350505050565b6000604082840312156105a057600080fd5b50919050565b73ffffffffffffffffffffffffffffffffffffffff811681146105c857600080fd5b50565b6000602082840312156105dd57600080fd5b81356105e8816105a6565b9392505050565b6040810182356105fe816105a6565b73ffffffffffffffffffffffffffffffffffffffff9081168352602084013590610627826105a6565b8082166020850152505092915050565b600060208083528351808285015260005b8181101561066457858101830151858201604001528201610648565b81811115610676576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b6000602082840312156106bc57600080fd5b81516105e8816105a6565b6000604082840312156106d957600080fd5b6040516040810181811067ffffffffffffffff82111715610723577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235610731816105a6565b81526020830135610741816105a6565b6020820152939250505056fea2646970667358221220be4de78be4f78a48eee27312ed39acd599f3f97b809f00a45c2c6d9e3adc28f564736f6c634300080a0033608060405234801561001057600080fd5b50612c7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612346565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612388565b60009081526020819052604090206001015490565b61029c6102973660046123ca565b6105a5565b005b6103246102ac3660046123f6565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ca565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b366004612411565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125fa565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ca565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125fa565b610be2565b610231600081565b61029c61046e3660046126bd565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a83660046126e9565b61131b565b61029c6104bb36600461276d565b611389565b61029c6104ce366004612411565b6116d3565b61029c6104e13660046123ca565b611b11565b61029c6104f4366004612411565b611b36565b61029c610507366004612411565b611c65565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d94565b6105ca8383611da1565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e91565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261131b565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127cd565b905060200281019061079891906127fc565b6040516107a692919061283a565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612486565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612486565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127cd565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f48565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f48565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129d8565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a07565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f72565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a07565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612486565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127cd565b6020026020010151905060026000888481518110610cb257610cb26127cd565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f48565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129d8565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f72565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a07565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610fb560208401846123f6565b73ffffffffffffffffffffffffffffffffffffffff161415611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61105d7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fe1565b6110a77f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fe1565b6110d17f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fe1565b61111b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fe1565b6111457fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fe1565b61118f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fe1565b6111c57f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111c060208501856123f6565b611da1565b6111f67f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111c060208501856123f6565b6112277fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111c060208501856123f6565b61123760408301602084016123f6565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ae9033908590612aa5565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff1610156113385750600061059f565b81836040015163ffffffff16116113515750600361059f565b81836020015163ffffffff161161136a5750600261059f565b825163ffffffff1682106113805750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113de824261131b565b9050600281141580156113f2575060038114155b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061152757604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115bd90339084906129d8565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115fb5790505090508281600081518110611639576116396127cd565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116989033908590600401612a07565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116fd81611d94565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561173357611733612486565b60405190808252806020026020018201604052801561175c578160200160208202803683370190505b50905060008467ffffffffffffffff81111561177a5761177a612486565b6040519080825280602002602001820160405280156117a3578160200160208202803683370190505b50905060008060005b878110156119b85760008989838181106117c8576117c86127cd565b90506020028101906117da91906127fc565b6117e390612aef565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156118a157604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061189a868286611f48565b6001909301925b604087015163ffffffff90811614156119765763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561196f858285611f48565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119a79291906129d8565b60405180910390a1506001016117ac565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611b06578215611a6f576119e88584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a3c9033908990600401612a07565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050505b8115611b0657611a7f8483611f72565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ad39033908890600401612a07565b600060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b2c81611d94565b6105ca8383611e91565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b8f904261131b565b14611bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c3557611c356127cd565b9050602002810190611c4791906127fc565b604051611c5592919061283a565b60405180910390a1600101611bf9565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611cbe904261131b565b14611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d6457611d646127cd565b9050602002810190611d7691906127fc565b604051611d8492919061283a565b60405180910390a1600101611d28565b611d9e813361202c565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e333390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f6057611f606127cd565b60200260200101818152505050505050565b8151811115611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120828173ffffffffffffffffffffffffffffffffffffffff1660146120fc565b61208d8360206120fc565b60405160200161209e929190612afb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b7c565b6060600061210b836002612bbe565b612116906002612bfb565b67ffffffffffffffff81111561212e5761212e612486565b6040519080825280601f01601f191660200182016040528015612158576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061218f5761218f6127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121f2576121f26127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061222e846002612bbe565b612239906001612bfb565b90505b60018111156122d6577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061227a5761227a6127cd565b1a60f81b828281518110612290576122906127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122cf81612c13565b905061223c565b50831561233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561235857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461233f57600080fd5b60006020828403121561239a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123c557600080fd5b919050565b600080604083850312156123dd57600080fd5b823591506123ed602084016123a1565b90509250929050565b60006020828403121561240857600080fd5b61233f826123a1565b6000806020838503121561242457600080fd5b823567ffffffffffffffff8082111561243c57600080fd5b818501915085601f83011261245057600080fd5b81358181111561245f57600080fd5b8660208260051b850101111561247457600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124d8576124d8612486565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561252557612525612486565b604052919050565b60006040828403121561253f57600080fd5b6125476124b5565b9050612552826123a1565b815260208083013567ffffffffffffffff8082111561257057600080fd5b818501915085601f83011261258457600080fd5b81358181111561259657612596612486565b6125c6847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124de565b915080825286848285010111156125dc57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561260d57600080fd5b823567ffffffffffffffff8082111561262557600080fd5b818501915085601f83011261263957600080fd5b81358181111561264b5761264b612486565b8060051b61265a8582016124de565b918252838101850191858101908984111561267457600080fd5b86860192505b838310156126b0578235858111156126925760008081fd5b6126a08b89838a010161252d565b835250918601919086019061267a565b9998505050505050505050565b6000604082840312156126cf57600080fd5b50919050565b803563ffffffff811681146123c557600080fd5b60008082840360808112156126fd57600080fd5b606081121561270b57600080fd5b506040516060810181811067ffffffffffffffff8211171561272f5761272f612486565b60405261273b846126d5565b8152612749602085016126d5565b602082015261275a604085016126d5565b6040820152946060939093013593505050565b6000806020838503121561278057600080fd5b823567ffffffffffffffff8082111561279857600080fd5b818501915085601f8301126127ac57600080fd5b8135818111156127bb57600080fd5b86602082850101111561247457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261283057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015280612867856123a1565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128a357600080fd5b8301803567ffffffffffffffff8111156128bc57600080fd5b8036038513156128cb57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b8381101561293c578181015183820152602001612924565b8381111561294b576000848401525b50505050565b60008151808452612969816020860160208601612921565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129d06040850182612951565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129d0604083018461299b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a97577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a8586835161299b565b95509284019290840190600101612a4b565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612ace856123a1565b16602084015280612ae1602086016123a1565b166040840152509392505050565b600061059f368361252d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b33816017850160208801612921565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b70816028840160208801612921565b01602801949350505050565b60208152600061233f6020830184612951565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bf657612bf6612b8f565b500290565b60008219821115612c0e57612c0e612b8f565b500190565b600081612c2257612c22612b8f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212203d0ba714d57d7fdb0d65b54e89a15e74d8998df27f317576865309844fbad83f64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612d4d806107b983390190565b6080516106f56100c4600039600081816093015261033801526106f56000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e5780638ce7fcc8146100b5578063fc91a897146100c8575b600080fd5b61006461005f366004610531565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c3366004610625565b6102bd565b6101016100d6366004610666565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600090815561019583610318565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b6000610312826040516020016102fe9190815173ffffffffffffffffffffffffffffffffffffffff9081168252602092830151169181019190915260400190565b604051602081830303815290604052610111565b92915050565b6000808280602001905181019061032f919061068a565b9050600061035c7f00000000000000000000000000000000000000000000000000000000000000006103f7565b6040517fb6a597dd000000000000000000000000000000000000000000000000000000008152835173ffffffffffffffffffffffffffffffffffffffff90811660048301526020850151811660248301529192509082169063b6a597dd90604401600060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff8111828210171561052b5761052b6104d9565b60405290565b60006020828403121561054357600080fd5b813567ffffffffffffffff8082111561055b57600080fd5b818401915084601f83011261056f57600080fd5b813581811115610581576105816104d9565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156105c7576105c76104d9565b816040528281528760208487010111156105e057600080fd5b826020860160208301376000928101602001929092525095945050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461062257600080fd5b50565b60006040828403121561063757600080fd5b61063f610508565b823561064a81610600565b8152602083013561065a81610600565b60208201529392505050565b60006020828403121561067857600080fd5b813561068381610600565b9392505050565b60006040828403121561069c57600080fd5b6106a4610508565b82516106af81610600565b8152602083015161065a8161060056fea264697066735822122095b192b4605b1b22ec9d3d9fd96672b2633e71eb5a320301d1a604809ff6ad7664736f6c634300080a003360806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600154610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff9081161015620000e2576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c5980620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612328565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b61023161027436600461236a565b60009081526020819052604090206001015490565b61029c6102973660046123ac565b6105a5565b005b6103246102ac3660046123d8565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ac565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046123f3565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125dc565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ac565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125dc565b610be2565b610231600081565b61029c61046e36600461269f565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a836600461270e565b6112fd565b61029c6104bb366004612792565b61136b565b61029c6104ce3660046123f3565b6116b5565b61029c6104e13660046123ac565b611af3565b61029c6104f43660046123f3565b611b18565b61029c6105073660046123f3565b611c47565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d76565b6105ca8383611d83565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e73565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e090426112fd565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127f2565b90506020028101906107989190612821565b6040516107a692919061285f565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612468565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612468565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127f2565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f2a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f2a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129fd565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a2c565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f54565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a2c565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612468565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127f2565b6020026020010151905060026000888481518110610cb257610cb26127f2565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f2a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129fd565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f54565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a2c565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815173ffffffffffffffffffffffffffffffffffffffff16611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61104e7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fc3565b6110987f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fc3565b6110c27f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fc3565b61110c7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fc3565b6111367fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fc3565b6111807f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fc3565b6111ae7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8360000151611d83565b6111dc7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18360000151611d83565b61120a7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8360000151611d83565b60208281018051600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080513381528651831694810194909452915116908201527fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09060600160405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561131a5750600061059f565b81836040015163ffffffff16116113335750600361059f565b81836020015163ffffffff161161134c5750600261059f565b825163ffffffff1682106113625750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113c082426112fd565b9050600281141580156113d4575060038114155b61143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061150957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d9061159f90339084906129fd565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115dd579050509050828160008151811061161b5761161b6127f2565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b269061167a9033908590600401612a2c565b600060405180830381600087803b15801561169457600080fd5b505af11580156116a8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116df81611d76565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561171557611715612468565b60405190808252806020026020018201604052801561173e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561175c5761175c612468565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b50905060008060005b8781101561199a5760008989838181106117aa576117aa6127f2565b90506020028101906117bc9190612821565b6117c590612aca565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561188357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061187c868286611f2a565b6001909301925b604087015163ffffffff90811614156119585763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611951858285611f2a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119899291906129fd565b60405180910390a15060010161178e565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611ae8578215611a51576119ca8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a1e9033908990600401612a2c565b600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050505b8115611ae857611a618483611f54565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ab59033908890600401612a2c565b600060405180830381600087803b158015611acf57600080fd5b505af1158015611ae3573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b0e81611d76565b6105ca8383611e73565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b7190426112fd565b14611bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c1757611c176127f2565b9050602002810190611c299190612821565b604051611c3792919061285f565b60405180910390a1600101611bdb565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ca090426112fd565b14611d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d4657611d466127f2565b9050602002810190611d589190612821565b604051611d6692919061285f565b60405180910390a1600101611d0a565b611d80813361200e565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e153390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f4257611f426127f2565b60200260200101818152505050505050565b8151811115611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120648173ffffffffffffffffffffffffffffffffffffffff1660146120de565b61206f8360206120de565b604051602001612080929190612ad6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b57565b606060006120ed836002612b99565b6120f8906002612bd6565b67ffffffffffffffff81111561211057612110612468565b6040519080825280601f01601f19166020018201604052801561213a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612171576121716127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121d4576121d46127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612210846002612b99565b61221b906001612bd6565b90505b60018111156122b8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061225c5761225c6127f2565b1a60f81b828281518110612272576122726127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122b181612bee565b905061221e565b508315612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561233a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461232157600080fd5b60006020828403121561237c57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123a757600080fd5b919050565b600080604083850312156123bf57600080fd5b823591506123cf60208401612383565b90509250929050565b6000602082840312156123ea57600080fd5b61232182612383565b6000806020838503121561240657600080fd5b823567ffffffffffffffff8082111561241e57600080fd5b818501915085601f83011261243257600080fd5b81358181111561244157600080fd5b8660208260051b850101111561245657600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124ba576124ba612468565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561250757612507612468565b604052919050565b60006040828403121561252157600080fd5b612529612497565b905061253482612383565b815260208083013567ffffffffffffffff8082111561255257600080fd5b818501915085601f83011261256657600080fd5b81358181111561257857612578612468565b6125a8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124c0565b915080825286848285010111156125be57600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156125ef57600080fd5b823567ffffffffffffffff8082111561260757600080fd5b818501915085601f83011261261b57600080fd5b81358181111561262d5761262d612468565b8060051b61263c8582016124c0565b918252838101850191858101908984111561265657600080fd5b86860192505b83831015612692578235858111156126745760008081fd5b6126828b89838a010161250f565b835250918601919086019061265c565b9998505050505050505050565b6000604082840312156126b157600080fd5b6040516040810181811067ffffffffffffffff821117156126d4576126d4612468565b6040526126e083612383565b81526126ee60208401612383565b60208201529392505050565b803563ffffffff811681146123a757600080fd5b600080828403608081121561272257600080fd5b606081121561273057600080fd5b506040516060810181811067ffffffffffffffff8211171561275457612754612468565b604052612760846126fa565b815261276e602085016126fa565b602082015261277f604085016126fa565b6040820152946060939093013593505050565b600080602083850312156127a557600080fd5b823567ffffffffffffffff808211156127bd57600080fd5b818501915085601f8301126127d157600080fd5b8135818111156127e057600080fd5b86602082850101111561245657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261285557600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061288c85612383565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128c857600080fd5b8301803567ffffffffffffffff8111156128e157600080fd5b8036038513156128f057600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b83811015612961578181015183820152602001612949565b83811115612970576000848401525b50505050565b6000815180845261298e816020860160208601612946565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129f56040850182612976565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129f560408301846129c0565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612abc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612aaa8683516129c0565b95509284019290840190600101612a70565b509398975050505050505050565b600061059f368361250f565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b0e816017850160208801612946565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b4b816028840160208801612946565b01602801949350505050565b6020815260006123216020830184612976565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bd157612bd1612b6a565b500290565b60008219821115612be957612be9612b6a565b500190565b600081612bfd57612bfd612b6a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220296cff4dcea9f4275b1211dc3f87dfe8fd16364241623bfee2195df62e92b95d64736f6c634300080a0033"; type VerifyFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTierFactory__factory.ts b/src/typechain/factories/VerifyTierFactory__factory.ts index 1224dd9..4e9b5fa 100644 --- a/src/typechain/factories/VerifyTierFactory__factory.ts +++ b/src/typechain/factories/VerifyTierFactory__factory.ts @@ -125,7 +125,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610b438061075083390190565b60805161068c6100c46000396000818160930152610377015261068c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f36600461050b565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105a2565b6102bf565b6101016100d63660046105a2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610196848461035f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a160016000559392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000913091632ea72a4991016040516020818303038152906040526040518263ffffffff1660e01b815260040161031691906105c6565b6020604051808303816000875af1158015610335573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103599190610639565b92915050565b60008061036e838501856105a2565b9050600061039b7f0000000000000000000000000000000000000000000000000000000000000000610429565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b15801561040857600080fd5b505af115801561041c573d6000803e3d6000fd5b5092979650505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff8116610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b6000806020838503121561051e57600080fd5b823567ffffffffffffffff8082111561053657600080fd5b818501915085601f83011261054a57600080fd5b81358181111561055957600080fd5b86602082850101111561056b57600080fd5b60209290920196919550909350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461059f57600080fd5b50565b6000602082840312156105b457600080fd5b81356105bf8161057d565b9392505050565b600060208083528351808285015260005b818110156105f3578581018301518582016040015282016105d7565b81811115610605576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60006020828403121561064b57600080fd5b81516105bf8161057d56fea26469706673582212209e0e557b1a4a3c1ca6ab91968d9689e01da72d45292a49a227ef113d7f24e32e64736f6c634300080a0033608060405234801561001057600080fd5b50610b23806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122076c864008663246b84869bbdb2a1a64aa869ceee967deb4b7d3898c320384da764736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b610c108061071083390190565b60805161064c6100c4600039600081816093015261031f015261064c6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a49146100515780635c60da1b1461008e578063b5367451146100b5578063fc91a897146100c8575b600080fd5b61006461005f3660046104e1565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6100646100c33660046105d5565b6102bd565b6101016100d63660046105d5565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ff565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b6040805173ffffffffffffffffffffffffffffffffffffffff831660208201526000916102f99101604051602081830303815290604052610111565b92915050565b6000808280602001905181019061031691906105f9565b905060006103437f00000000000000000000000000000000000000000000000000000000000000006103d0565b6040517fc4d66de800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529192509082169063c4d66de890602401600060405180830381600087803b1580156103b057600080fd5b505af11580156103c4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff81166104ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000602082840312156104f357600080fd5b813567ffffffffffffffff8082111561050b57600080fd5b818401915084601f83011261051f57600080fd5b813581811115610531576105316104b2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715610577576105776104b2565b8160405282815287602084870101111561059057600080fd5b826020860160208301376000928101602001929092525095945050505050565b73ffffffffffffffffffffffffffffffffffffffff811681146105d257600080fd5b50565b6000602082840312156105e757600080fd5b81356105f2816105b0565b9392505050565b60006020828403121561060b57600080fd5b81516105f2816105b056fea2646970667358221220cb5d34880cd6a24bbf962b2dc6462fecd4f6a7b023ff0cc0cb7d202ccd43a63364736f6c634300080a0033608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610b23806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122079f4bfe1a984c53748413132faf71353708f021af36650539764ce7d5caeeee164736f6c634300080a0033"; type VerifyTierFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/VerifyTier__factory.ts b/src/typechain/factories/VerifyTier__factory.ts index a9f0787..2c7d531 100644 --- a/src/typechain/factories/VerifyTier__factory.ts +++ b/src/typechain/factories/VerifyTier__factory.ts @@ -6,6 +6,11 @@ import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { VerifyTier, VerifyTierInterface } from "../VerifyTier"; const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, { anonymous: false, inputs: [ @@ -126,7 +131,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50610b23806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122076c864008663246b84869bbdb2a1a64aa869ceee967deb4b7d3898c320384da764736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b610b23806100ed6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301ffc9a71461005157806388d6860414610079578063c4d66de81461009a578063caa0eb3b146100af575b600080fd5b61006461005f366004610806565b6100c2565b60405190151581526020015b60405180910390f35b61008c6100873660046108f6565b61015b565b604051908152602001610070565b6100ad6100a83660046109af565b61032a565b005b61008c6100bd3660046109ca565b6105bc565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f00000000000000000000000000000000000000000000000000000000148061015557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152839262010000900416906331e658a590602401606060405180830381865afa1580156101d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101f69190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa158015610297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102bb9190610ad4565b1415610301576102f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60006008846020015163ffffffff16610760565b915050610155565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9392505050565b600054610100900460ff161580801561034a5750600054600160ff909116105b806103645750303b158015610364575060005460ff166001145b6103f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561045357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b73ffffffffffffffffffffffffffffffffffffffff82166104d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f41444452455353000000000000000000000000000000000000000000000060448201526064016103ec565b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040805133815260208101929092527fdc90fed0326ba91706deeac7eb34ac9f8b680734f9d782864dc29704d23bed6a910160405180910390a180156105b857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b600080546040517f31e658a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152839262010000900416906331e658a590602401606060405180830381865afa158015610633573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106579190610a68565b600054604080517fb9bd0135000000000000000000000000000000000000000000000000000000008152835163ffffffff90811660048301526020850151811660248301529184015190911660448201524260648201529192506002916201000090910473ffffffffffffffffffffffffffffffffffffffff169063b9bd013590608401602060405180830381865afa1580156106f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071c9190610ad4565b1415610733576020015163ffffffff169050610758565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9150505b949350505050565b60008260088111156107ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016103ec565b6000855b858110156107fa5763ffffffff6020820290811b199890981685891b179791506001016107d2565b50959695505050505050565b60006020828403121561081857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461084857600080fd5b9392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461087357600080fd5b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156108ee576108ee610878565b604052919050565b6000806040838503121561090957600080fd5b6109128361084f565b915060208084013567ffffffffffffffff8082111561093057600080fd5b818601915086601f83011261094457600080fd5b81358181111561095657610956610878565b8060051b91506109678483016108a7565b818152918301840191848101908984111561098157600080fd5b938501935b8385101561099f57843582529385019390850190610986565b8096505050505050509250929050565b6000602082840312156109c157600080fd5b6108488261084f565b600080600080606085870312156109e057600080fd5b6109e98561084f565b935060208501359250604085013567ffffffffffffffff80821115610a0d57600080fd5b818701915087601f830112610a2157600080fd5b813581811115610a3057600080fd5b8860208260051b8501011115610a4557600080fd5b95989497505060200194505050565b805163ffffffff8116811461087357600080fd5b600060608284031215610a7a57600080fd5b6040516060810181811067ffffffffffffffff82111715610a9d57610a9d610878565b604052610aa983610a54565b8152610ab760208401610a54565b6020820152610ac860408401610a54565b60408201529392505050565b600060208284031215610ae657600080fd5b505191905056fea264697066735822122079f4bfe1a984c53748413132faf71353708f021af36650539764ce7d5caeeee164736f6c634300080a0033"; type VerifyTierConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Verify__factory.ts b/src/typechain/factories/Verify__factory.ts index 2342577..df3a2d6 100644 --- a/src/typechain/factories/Verify__factory.ts +++ b/src/typechain/factories/Verify__factory.ts @@ -6,6 +6,11 @@ import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { Verify, VerifyInterface } from "../Verify"; const _abi = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, { anonymous: false, inputs: [ @@ -799,7 +804,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50612c7e806100206000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612346565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b610231610274366004612388565b60009081526020819052604090206001015490565b61029c6102973660046123ca565b6105a5565b005b6103246102ac3660046123f6565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ca565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b366004612411565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125fa565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ca565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125fa565b610be2565b610231600081565b61029c61046e3660046126bd565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a83660046126e9565b61131b565b61029c6104bb36600461276d565b611389565b61029c6104ce366004612411565b6116d3565b61029c6104e13660046123ca565b611b11565b61029c6104f4366004612411565b611b36565b61029c610507366004612411565b611c65565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d94565b6105ca8383611da1565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e91565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e0904261131b565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127cd565b905060200281019061079891906127fc565b6040516107a692919061283a565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612486565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612486565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127cd565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f48565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f48565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129d8565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a07565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f72565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a07565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d94565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612486565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127cd565b6020026020010151905060026000888481518110610cb257610cb26127cd565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f48565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129d8565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f72565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a07565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610fb560208401846123f6565b73ffffffffffffffffffffffffffffffffffffffff161415611033576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61105d7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fe1565b6110a77f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fe1565b6110d17f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fe1565b61111b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fe1565b6111457fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fe1565b61118f7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fe1565b6111c57f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c6111c060208501856123f6565b611da1565b6111f67f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b16111c060208501856123f6565b6112277fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d6111c060208501856123f6565b61123760408301602084016123f6565b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff929092169190911790556040517fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d0906112ae9033908590612aa5565b60405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff1610156113385750600061059f565b81836040015163ffffffff16116113515750600361059f565b81836020015163ffffffff161161136a5750600261059f565b825163ffffffff1682106113805750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113de824261131b565b9050600281141580156113f2575060038114155b611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061152757604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d906115bd90339084906129d8565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115fb5790505090508281600081518110611639576116396127cd565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b26906116989033908590600401612a07565b600060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116fd81611d94565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561173357611733612486565b60405190808252806020026020018201604052801561175c578160200160208202803683370190505b50905060008467ffffffffffffffff81111561177a5761177a612486565b6040519080825280602002602001820160405280156117a3578160200160208202803683370190505b50905060008060005b878110156119b85760008989838181106117c8576117c86127cd565b90506020028101906117da91906127fc565b6117e390612aef565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff8082168084526401000000008304821694840194909452680100000000000000009091041692810192909252909850909150600111156118a157604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061189a868286611f48565b6001909301925b604087015163ffffffff90811614156119765763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000009094169190951617919091179190911691909117905561196f858285611f48565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119a79291906129d8565b60405180910390a1506001016117ac565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611b06578215611a6f576119e88584611f72565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a3c9033908990600401612a07565b600060405180830381600087803b158015611a5657600080fd5b505af1158015611a6a573d6000803e3d6000fd5b505050505b8115611b0657611a7f8483611f72565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ad39033908890600401612a07565b600060405180830381600087803b158015611aed57600080fd5b505af1158015611b01573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b2c81611d94565b6105ca8383611e91565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b8f904261131b565b14611bf6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c3557611c356127cd565b9050602002810190611c4791906127fc565b604051611c5592919061283a565b60405180910390a1600101611bf9565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611cbe904261131b565b14611d25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d6457611d646127cd565b9050602002810190611d7691906127fc565b604051611d8492919061283a565b60405180910390a1600101611d28565b611d9e813361202c565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e333390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f6057611f606127cd565b60200260200101818152505050505050565b8151811115611fdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120828173ffffffffffffffffffffffffffffffffffffffff1660146120fc565b61208d8360206120fc565b60405160200161209e929190612afb565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b7c565b6060600061210b836002612bbe565b612116906002612bfb565b67ffffffffffffffff81111561212e5761212e612486565b6040519080825280601f01601f191660200182016040528015612158576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061218f5761218f6127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121f2576121f26127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600061222e846002612bbe565b612239906001612bfb565b90505b60018111156122d6577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061227a5761227a6127cd565b1a60f81b828281518110612290576122906127cd565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122cf81612c13565b905061223c565b50831561233f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561235857600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461233f57600080fd5b60006020828403121561239a57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123c557600080fd5b919050565b600080604083850312156123dd57600080fd5b823591506123ed602084016123a1565b90509250929050565b60006020828403121561240857600080fd5b61233f826123a1565b6000806020838503121561242457600080fd5b823567ffffffffffffffff8082111561243c57600080fd5b818501915085601f83011261245057600080fd5b81358181111561245f57600080fd5b8660208260051b850101111561247457600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124d8576124d8612486565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561252557612525612486565b604052919050565b60006040828403121561253f57600080fd5b6125476124b5565b9050612552826123a1565b815260208083013567ffffffffffffffff8082111561257057600080fd5b818501915085601f83011261258457600080fd5b81358181111561259657612596612486565b6125c6847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124de565b915080825286848285010111156125dc57600080fd5b80848401858401376000908201840152918301919091525092915050565b6000602080838503121561260d57600080fd5b823567ffffffffffffffff8082111561262557600080fd5b818501915085601f83011261263957600080fd5b81358181111561264b5761264b612486565b8060051b61265a8582016124de565b918252838101850191858101908984111561267457600080fd5b86860192505b838310156126b0578235858111156126925760008081fd5b6126a08b89838a010161252d565b835250918601919086019061267a565b9998505050505050505050565b6000604082840312156126cf57600080fd5b50919050565b803563ffffffff811681146123c557600080fd5b60008082840360808112156126fd57600080fd5b606081121561270b57600080fd5b506040516060810181811067ffffffffffffffff8211171561272f5761272f612486565b60405261273b846126d5565b8152612749602085016126d5565b602082015261275a604085016126d5565b6040820152946060939093013593505050565b6000806020838503121561278057600080fd5b823567ffffffffffffffff8082111561279857600080fd5b818501915085601f8301126127ac57600080fd5b8135818111156127bb57600080fd5b86602082850101111561247457600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261283057600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff80851683526040602084015280612867856123a1565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128a357600080fd5b8301803567ffffffffffffffff8111156128bc57600080fd5b8036038513156128cb57600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b8381101561293c578181015183820152602001612924565b8381111561294b576000848401525b50505050565b60008151808452612969816020860160208601612921565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129d06040850182612951565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129d0604083018461299b565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612a97577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612a8586835161299b565b95509284019290840190600101612a4b565b509398975050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8381168252606082019080612ace856123a1565b16602084015280612ae1602086016123a1565b166040840152509392505050565b600061059f368361252d565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b33816017850160208801612921565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b70816028840160208801612921565b01602801949350505050565b60208152600061233f6020830184612951565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bf657612bf6612b8f565b500290565b60008219821115612c0e57612c0e612b8f565b500190565b600081612c2257612c22612b8f565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea26469706673582212203d0ba714d57d7fdb0d65b54e89a15e74d8998df27f317576865309844fbad83f64736f6c634300080a0033"; + "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600154610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60015460ff9081161015620000e2576001805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b612c5980620000f46000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806381792e44116100e3578063b9bd01351161008c578063d547741f11610066578063d547741f146104d3578063e04dcf3d146104e6578063e2fac37c146104f957600080fd5b8063b9bd01351461049a578063ba658111146104ad578063cd491526146104c057600080fd5b8063a217fddf116100bd578063a217fddf14610458578063b6a597dd14610460578063b8c55bfa1461047357600080fd5b806381792e44146103da57806391d14854146104015780639f8392221461044557600080fd5b806331e658a5116101455780635df0675a1161011f5780635df0675a1461038d5780637547a867146103a05780637c7d7f7a146103c757600080fd5b806331e658a51461029e57806336568abe146103535780633d111c7e1461036657600080fd5b80631e210912116101765780631e2109121461023f578063248a9ca3146102665780632f2ff15d1461028957600080fd5b806301ffc9a71461019d578063083b2732146101c5578063100ec9981461020a575b600080fd5b6101b06101ab366004612328565b61050c565b60405190151581526020015b60405180910390f35b6003546101e59073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101bc565b6102317f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b181565b6040519081526020016101bc565b6102317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c81565b61023161027436600461236a565b60009081526020819052604090206001015490565b61029c6102973660046123ac565b6105a5565b005b6103246102ac3660046123d8565b60408051606080820183526000808352602080840182905292840181905273ffffffffffffffffffffffffffffffffffffffff9490941684526002825292829020825193840183525463ffffffff80821685526401000000008204811692850192909252680100000000000000009004169082015290565b60408051825163ffffffff908116825260208085015182169083015292820151909216908201526060016101bc565b61029c6103613660046123ac565b6105cf565b6102317f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a3181565b61029c61039b3660046123f3565b610687565b6102317f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac81565b61029c6103d53660046125dc565b6107b6565b6102317fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d81565b6101b061040f3660046123ac565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b61029c6104533660046125dc565b610be2565b610231600081565b61029c61046e36600461269f565b610e87565b6102317f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d81565b6102316104a836600461270e565b6112fd565b61029c6104bb366004612792565b61136b565b61029c6104ce3660046123f3565b6116b5565b61029c6104e13660046123ac565b611af3565b61029c6104f43660046123f3565b611b18565b61029c6105073660046123f3565b611c47565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061059f57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000828152602081905260409020600101546105c081611d76565b6105ca8383611d83565b505050565b73ffffffffffffffffffffffffffffffffffffffff81163314610679576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084015b60405180910390fd5b6106838282611e73565b5050565b336000908152600260208181526040928390208351606081018552905463ffffffff8082168352640100000000820481169383019390935268010000000000000000900490911692810192909252906106e090426112fd565b14610747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d33848484818110610786576107866127f2565b90506020028101906107989190612821565b6040516107a692919061285f565b60405180910390a160010161074a565b7f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a316107e081611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff81111561081957610819612468565b604051908082528060200260200182016040528015610842578160200160208202803683370190505b5090506000845167ffffffffffffffff81111561086157610861612468565b60405190808252806020026020018201604052801561088a578160200160208202803683370190505b50905060008060005b8751811015610a8a5760008882815181106108b0576108b06127f2565b602090810291909101810151805173ffffffffffffffffffffffffffffffffffffffff166000908152600283526040908190208151606081018352905463ffffffff8082168084526401000000008304821696840196909652680100000000000000009091041691810191909152985091506001111561097557604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061096e868286611f2a565b6001909301925b602087015163ffffffff9081161415610a485763ffffffff4281166020808a01918252835173ffffffffffffffffffffffffffffffffffffffff16600090815260029091526040908190208a5181549351928c0151851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff938616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090951691909516179290921716919091179055610a41858285611f2a565b6001909201915b7fd140ad1540fe1b6d943b0509d447b34e0719ff7f9c6175d26a870abc89c9304f3382604051610a799291906129fd565b60405180910390a150600101610893565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610bd8578215610b4157610aba8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690610b0e9033908990600401612a2c565b600060405180830381600087803b158015610b2857600080fd5b505af1158015610b3c573d6000803e3d6000fd5b505050505b8115610bd857610b518483611f54565b6040517f376dcbe200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063376dcbe290610ba59033908890600401612a2c565b600060405180830381600087803b158015610bbf57600080fd5b505af1158015610bd3573d6000803e3d6000fd5b505050505b5050505050505050565b7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac610c0c81611d76565b60408051606081018252600080825260208201819052918101919091526000835167ffffffffffffffff811115610c4557610c45612468565b604051908082528060200260200182016040528015610c6e578160200160208202803683370190505b5090506000805b8551811015610dc8576000868281518110610c9257610c926127f2565b6020026020010151905060026000888481518110610cb257610cb26127f2565b6020908102919091018101515173ffffffffffffffffffffffffffffffffffffffff1682528181019290925260409081016000208151606081018352905463ffffffff8082168084526401000000008304821695840195909552680100000000000000009091041691810191909152955015610d8657805173ffffffffffffffffffffffffffffffffffffffff16600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169055610d7f848285611f2a565b6001909201915b7fb6a0d4e5532c50d585db7a2aeb6d4628467d3c969d491458bb46c3dba33c46da3382604051610db79291906129fd565b60405180910390a150600101610c75565b5060035473ffffffffffffffffffffffffffffffffffffffff168015610e7f578115610e7f57610df88383611f54565b6040517febae2d8c00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82169063ebae2d8c90610e4c9033908790600401612a2c565b600060405180830381600087803b158015610e6657600080fd5b505af1158015610e7a573d6000803e3d6000fd5b505050505b505050505050565b600154610100900460ff1615808015610ea457506001805460ff16105b80610ebd5750303b158015610ebd57506001805460ff16145b610f49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610670565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790558015610fa657600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b815173ffffffffffffffffffffffffffffffffffffffff16611024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f305f4143434f554e5400000000000000000000000000000000000000000000006044820152606401610670565b61104e7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c80611fc3565b6110987f5ff1fb0ce9089603e6e193667ed17164e0360a6148f4a39fc194055588948a317f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c611fc3565b6110c27f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b180611fc3565b61110c7f794e4221ebb6dd4e460d558b4ec709511d44017d6610ba89daa896c0684ddfac7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b1611fc3565b6111367fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d80611fc3565b6111807f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d611fc3565b6111ae7f2d4d1d70bd81797c3479f5c3f873a5c9203d249659c3b317cdad46367472783c8360000151611d83565b6111dc7f9d65f741849e7609dd1e2c70f0d7da5f5433b36bfcf3ba4d27d2bb08ad2155b18360000151611d83565b61120a7fbb496ca6fee71a17f78592fbc6fc7f04a436edb9c709c4289d6bbfbc5fd45f4d8360000151611d83565b60208281018051600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055604080513381528651831694810194909452915116908201527fed00b297c1b136ccaa940038371e3751cf8ca3c2bd51002f9bc4a4ad908441d09060600160405180910390a1801561068357600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1681556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60006001836000015163ffffffff16101561131a5750600061059f565b81836040015163ffffffff16116113335750600361059f565b81836020015163ffffffff161161134c5750600261059f565b825163ffffffff1682106113625750600161059f565b50600092915050565b3360009081526002602090815260408083208151606081018352905463ffffffff8082168352640100000000820481169483019490945268010000000000000000900490921690820152906113c082426112fd565b9050600281141580156113d4575060038114155b61143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4558495354530000000000000000000000000000000000006044820152606401610670565b8061150957604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152336000908152600260209081526040918290208351815492850151949093015163ffffffff90811668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff958216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909416919094161791909117929092161790555b600060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509152506040519091507f9def0eb63e24d052c362c931f2ab4c31eda642472ddc393a44484906f374ba4d9061159f90339084906129fd565b60405180910390a160035473ffffffffffffffffffffffffffffffffffffffff168015610e7f57604080516001808252818301909252600091816020015b6040805180820190915260008152606060208201528152602001906001900390816115dd579050509050828160008151811061161b5761161b6127f2565b60209081029190910101526040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316906389bd6b269061167a9033908590600401612a2c565b600060405180830381600087803b15801561169457600080fd5b505af11580156116a8573d6000803e3d6000fd5b5050505050505050505050565b7f5a686c9d070917be517818979fb56f451f007e3ae83e96fb5a22a304929b070d6116df81611d76565b60408051606081018252600080825260208201819052918101829052908367ffffffffffffffff81111561171557611715612468565b60405190808252806020026020018201604052801561173e578160200160208202803683370190505b50905060008467ffffffffffffffff81111561175c5761175c612468565b604051908082528060200260200182016040528015611785578160200160208202803683370190505b50905060008060005b8781101561199a5760008989838181106117aa576117aa6127f2565b90506020028101906117bc9190612821565b6117c590612aca565b805173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081526040918290208251606081018452905463ffffffff80821680845264010000000083048216948401949094526801000000000000000090910416928101929092529098509091506001111561188357604080516060808201835260008083526020808401829052928401528251908101835263ffffffff428116825291810182905291820152965061187c868286611f2a565b6001909301925b604087015163ffffffff90811614156119585763ffffffff4281166040808a01918252835173ffffffffffffffffffffffffffffffffffffffff166000908152600260209081529190208a518154928c01519351851668010000000000000000027fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff948616640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090941691909516179190911791909116919091179055611951858285611f2a565b6001909201915b7f56ed5bd6a5ed51ea9976f064fa4b26035c05a8d1ef4f4cd92454befc5090e9d233826040516119899291906129fd565b60405180910390a15060010161178e565b5060035473ffffffffffffffffffffffffffffffffffffffff168015611ae8578215611a51576119ca8584611f54565b6040517f89bd6b2600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389bd6b2690611a1e9033908990600401612a2c565b600060405180830381600087803b158015611a3857600080fd5b505af1158015611a4c573d6000803e3d6000fd5b505050505b8115611ae857611a618483611f54565b6040517f8f6b114600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690638f6b114690611ab59033908890600401612a2c565b600060405180830381600087803b158015611acf57600080fd5b505af1158015611ae3573d6000803e3d6000fd5b505050505b505050505050505050565b600082815260208190526040902060010154611b0e81611d76565b6105ca8383611e73565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611b7190426112fd565b14611bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f9d48392ffd5df4ad821c86aa1f446e2b39cfecb6acd84a5b1dd41e3b4c1defce33848484818110611c1757611c176127f2565b9050602002810190611c299190612821565b604051611c3792919061285f565b60405180910390a1600101611bdb565b336000908152600260208181526040928390208351606081018552905463ffffffff808216835264010000000082048116938301939093526801000000000000000090049091169281019290925290611ca090426112fd565b14611d07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4f4e4c595f415050524f564544000000000000000000000000000000000000006044820152606401610670565b60005b818110156105ca577f1b7bdec72dbe138bce2074865e8cf0347693327c317e9c1fdfe914001d48b5d133848484818110611d4657611d466127f2565b9050602002810190611d589190612821565b604051611d6692919061285f565b60405180910390a1600101611d0a565b611d80813361200e565b50565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff166106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055611e153390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16156106835760008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600082905080848381518110611f4257611f426127f2565b60200260200101818152505050505050565b8151811115611fbf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4241445f524553495a45000000000000000000000000000000000000000000006044820152606401610670565b9052565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610683576120648173ffffffffffffffffffffffffffffffffffffffff1660146120de565b61206f8360206120de565b604051602001612080929190612ad6565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261067091600401612b57565b606060006120ed836002612b99565b6120f8906002612bd6565b67ffffffffffffffff81111561211057612110612468565b6040519080825280601f01601f19166020018201604052801561213a576020820181803683370190505b5090507f300000000000000000000000000000000000000000000000000000000000000081600081518110612171576121716127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106121d4576121d46127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000612210846002612b99565b61221b906001612bd6565b90505b60018111156122b8577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061225c5761225c6127f2565b1a60f81b828281518110612272576122726127f2565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c936122b181612bee565b905061221e565b508315612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610670565b9392505050565b60006020828403121561233a57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461232157600080fd5b60006020828403121561237c57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146123a757600080fd5b919050565b600080604083850312156123bf57600080fd5b823591506123cf60208401612383565b90509250929050565b6000602082840312156123ea57600080fd5b61232182612383565b6000806020838503121561240657600080fd5b823567ffffffffffffffff8082111561241e57600080fd5b818501915085601f83011261243257600080fd5b81358181111561244157600080fd5b8660208260051b850101111561245657600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156124ba576124ba612468565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561250757612507612468565b604052919050565b60006040828403121561252157600080fd5b612529612497565b905061253482612383565b815260208083013567ffffffffffffffff8082111561255257600080fd5b818501915085601f83011261256657600080fd5b81358181111561257857612578612468565b6125a8847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016124c0565b915080825286848285010111156125be57600080fd5b80848401858401376000908201840152918301919091525092915050565b600060208083850312156125ef57600080fd5b823567ffffffffffffffff8082111561260757600080fd5b818501915085601f83011261261b57600080fd5b81358181111561262d5761262d612468565b8060051b61263c8582016124c0565b918252838101850191858101908984111561265657600080fd5b86860192505b83831015612692578235858111156126745760008081fd5b6126828b89838a010161250f565b835250918601919086019061265c565b9998505050505050505050565b6000604082840312156126b157600080fd5b6040516040810181811067ffffffffffffffff821117156126d4576126d4612468565b6040526126e083612383565b81526126ee60208401612383565b60208201529392505050565b803563ffffffff811681146123a757600080fd5b600080828403608081121561272257600080fd5b606081121561273057600080fd5b506040516060810181811067ffffffffffffffff8211171561275457612754612468565b604052612760846126fa565b815261276e602085016126fa565b602082015261277f604085016126fa565b6040820152946060939093013593505050565b600080602083850312156127a557600080fd5b823567ffffffffffffffff808211156127bd57600080fd5b818501915085601f8301126127d157600080fd5b8135818111156127e057600080fd5b86602082850101111561245657600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc183360301811261285557600080fd5b9190910192915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061288c85612383565b1660408401525060208301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126128c857600080fd5b8301803567ffffffffffffffff8111156128e157600080fd5b8036038513156128f057600080fd5b60406060850152806080850152806020830160a0860137600060a0828601015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116850101925050509392505050565b60005b83811015612961578181015183820152602001612949565b83811115612970576000848401525b50505050565b6000815180845261298e816020860160208601612946565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b73ffffffffffffffffffffffffffffffffffffffff815116825260006020820151604060208501526129f56040850182612976565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff831681526040602082015260006129f560408301846129c0565b60006040820173ffffffffffffffffffffffffffffffffffffffff85168352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015612abc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452612aaa8683516129c0565b95509284019290840190600101612a70565b509398975050505050505050565b600061059f368361250f565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612b0e816017850160208801612946565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351612b4b816028840160208801612946565b01602801949350505050565b6020815260006123216020830184612976565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612bd157612bd1612b6a565b500290565b60008219821115612be957612be9612b6a565b500190565b600081612bfd57612bfd612b6a565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019056fea2646970667358221220296cff4dcea9f4275b1211dc3f87dfe8fd16364241623bfee2195df62e92b95d64736f6c634300080a0033"; type VerifyConstructorParams = | [signer?: Signer] diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index f27226f..33e049e 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -84,6 +84,10 @@ declare module "hardhat/types/runtime" { name: "IAccessControl", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "Ownable", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -196,6 +200,10 @@ declare module "hardhat/types/runtime" { name: "Factory", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "FactoryCurator", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IFactory", signerOrOptions?: ethers.Signer | FactoryOptions @@ -261,13 +269,17 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; getContractFactory( - name: "FixedPointMathTest", + name: "FactoryChildTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; getContractFactory( - name: "FnPtrsTest", + name: "FactoryTest", signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; + ): Promise; + getContractFactory( + name: "FixedPointMathTest", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "MockISale", signerOrOptions?: ethers.Signer | FactoryOptions @@ -292,6 +304,10 @@ declare module "hardhat/types/runtime" { name: "RedeemableERC20Reentrant", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ReportOMeter", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ReserveToken", signerOrOptions?: ethers.Signer | FactoryOptions @@ -384,6 +400,18 @@ declare module "hardhat/types/runtime" { name: "VerifyTierFactory", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "AutoApprove", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AutoApproveFactory", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "AutoApproveStateBuilder", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IVerifyCallback", signerOrOptions?: ethers.Signer | FactoryOptions @@ -392,6 +420,10 @@ declare module "hardhat/types/runtime" { name: "Verify", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "VerifyCallback", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "VerifyFactory", signerOrOptions?: ethers.Signer | FactoryOptions @@ -404,6 +436,14 @@ declare module "hardhat/types/runtime" { name: "RainVM", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "StandardStateBuilder", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "StandardVM", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "VMStateBuilder", signerOrOptions?: ethers.Signer | FactoryOptions @@ -499,6 +539,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "Ownable", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "Initializable", address: string, @@ -639,6 +684,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "FactoryCurator", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IFactory", address: string, @@ -720,15 +770,20 @@ declare module "hardhat/types/runtime" { signer?: ethers.Signer ): Promise; getContractAt( - name: "FixedPointMathTest", + name: "FactoryChildTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; + getContractAt( + name: "FactoryTest", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( - name: "FnPtrsTest", + name: "FixedPointMathTest", address: string, signer?: ethers.Signer - ): Promise; + ): Promise; getContractAt( name: "MockISale", address: string, @@ -759,6 +814,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ReportOMeter", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ReserveToken", address: string, @@ -874,6 +934,21 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "AutoApprove", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AutoApproveFactory", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "AutoApproveStateBuilder", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IVerifyCallback", address: string, @@ -884,6 +959,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "VerifyCallback", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "VerifyFactory", address: string, @@ -899,6 +979,16 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "StandardStateBuilder", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "StandardVM", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "VMStateBuilder", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index a0c8dd2..2e7e6dd 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -19,6 +19,7 @@ export type { ERC165Upgradeable } from "./ERC165Upgradeable"; export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; +export type { Ownable } from "./Ownable"; export type { ERC1155 } from "./ERC1155"; export type { ERC1155Burnable } from "./ERC1155Burnable"; export type { IERC1155MetadataURI } from "./IERC1155MetadataURI"; @@ -45,6 +46,7 @@ export type { SeedDance } from "./SeedDance"; export type { ERC20Redeem } from "./ERC20Redeem"; export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; +export type { FactoryCurator } from "./FactoryCurator"; export type { NoticeBoard } from "./NoticeBoard"; export type { OrderBook } from "./OrderBook"; export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; @@ -60,14 +62,16 @@ export type { Stake } from "./Stake"; export type { StakeFactory } from "./StakeFactory"; export type { AllStandardOpsTest } from "./AllStandardOpsTest"; export type { ERC20PulleeTest } from "./ERC20PulleeTest"; +export type { FactoryChildTest } from "./FactoryChildTest"; +export type { FactoryTest } from "./FactoryTest"; export type { FixedPointMathTest } from "./FixedPointMathTest"; -export type { FnPtrsTest } from "./FnPtrsTest"; export type { MockISale } from "./MockISale"; export type { PhasedScheduleTest } from "./PhasedScheduleTest"; export type { PhasedTest } from "./PhasedTest"; export type { RandomTest } from "./RandomTest"; export type { ReadWriteTier } from "./ReadWriteTier"; export type { RedeemableERC20Reentrant } from "./RedeemableERC20Reentrant"; +export type { ReportOMeter } from "./ReportOMeter"; export type { ReserveToken } from "./ReserveToken"; export type { ReserveToken18 } from "./ReserveToken18"; export type { ReserveTokenERC1155 } from "./ReserveTokenERC1155"; @@ -91,11 +95,17 @@ export type { ITierV2 } from "./ITierV2"; export type { TierV2 } from "./TierV2"; export type { VerifyTier } from "./VerifyTier"; export type { VerifyTierFactory } from "./VerifyTierFactory"; +export type { AutoApprove } from "./AutoApprove"; +export type { AutoApproveFactory } from "./AutoApproveFactory"; +export type { AutoApproveStateBuilder } from "./AutoApproveStateBuilder"; export type { IVerifyCallback } from "./IVerifyCallback"; export type { Verify } from "./Verify"; +export type { VerifyCallback } from "./VerifyCallback"; export type { VerifyFactory } from "./VerifyFactory"; export type { AllStandardOpsStateBuilder } from "./AllStandardOpsStateBuilder"; export type { RainVM } from "./RainVM"; +export type { StandardStateBuilder } from "./StandardStateBuilder"; +export type { StandardVM } from "./StandardVM"; export type { VMStateBuilder } from "./VMStateBuilder"; export { Factory__factory } from "./factories/Factory__factory"; @@ -116,6 +126,7 @@ export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__facto export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; +export { Ownable__factory } from "./factories/Ownable__factory"; export { ERC1155__factory } from "./factories/ERC1155__factory"; export { ERC1155Burnable__factory } from "./factories/ERC1155Burnable__factory"; export { IERC1155MetadataURI__factory } from "./factories/IERC1155MetadataURI__factory"; @@ -142,6 +153,7 @@ export { SeedDance__factory } from "./factories/SeedDance__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; +export { FactoryCurator__factory } from "./factories/FactoryCurator__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; export { OrderBook__factory } from "./factories/OrderBook__factory"; export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; @@ -157,14 +169,16 @@ export { Stake__factory } from "./factories/Stake__factory"; export { StakeFactory__factory } from "./factories/StakeFactory__factory"; export { AllStandardOpsTest__factory } from "./factories/AllStandardOpsTest__factory"; export { ERC20PulleeTest__factory } from "./factories/ERC20PulleeTest__factory"; +export { FactoryChildTest__factory } from "./factories/FactoryChildTest__factory"; +export { FactoryTest__factory } from "./factories/FactoryTest__factory"; export { FixedPointMathTest__factory } from "./factories/FixedPointMathTest__factory"; -export { FnPtrsTest__factory } from "./factories/FnPtrsTest__factory"; export { MockISale__factory } from "./factories/MockISale__factory"; export { PhasedScheduleTest__factory } from "./factories/PhasedScheduleTest__factory"; export { PhasedTest__factory } from "./factories/PhasedTest__factory"; export { RandomTest__factory } from "./factories/RandomTest__factory"; export { ReadWriteTier__factory } from "./factories/ReadWriteTier__factory"; export { RedeemableERC20Reentrant__factory } from "./factories/RedeemableERC20Reentrant__factory"; +export { ReportOMeter__factory } from "./factories/ReportOMeter__factory"; export { ReserveToken__factory } from "./factories/ReserveToken__factory"; export { ReserveToken18__factory } from "./factories/ReserveToken18__factory"; export { ReserveTokenERC1155__factory } from "./factories/ReserveTokenERC1155__factory"; @@ -188,9 +202,15 @@ export { ITierV2__factory } from "./factories/ITierV2__factory"; export { TierV2__factory } from "./factories/TierV2__factory"; export { VerifyTier__factory } from "./factories/VerifyTier__factory"; export { VerifyTierFactory__factory } from "./factories/VerifyTierFactory__factory"; +export { AutoApprove__factory } from "./factories/AutoApprove__factory"; +export { AutoApproveFactory__factory } from "./factories/AutoApproveFactory__factory"; +export { AutoApproveStateBuilder__factory } from "./factories/AutoApproveStateBuilder__factory"; export { IVerifyCallback__factory } from "./factories/IVerifyCallback__factory"; export { Verify__factory } from "./factories/Verify__factory"; +export { VerifyCallback__factory } from "./factories/VerifyCallback__factory"; export { VerifyFactory__factory } from "./factories/VerifyFactory__factory"; export { AllStandardOpsStateBuilder__factory } from "./factories/AllStandardOpsStateBuilder__factory"; export { RainVM__factory } from "./factories/RainVM__factory"; +export { StandardStateBuilder__factory } from "./factories/StandardStateBuilder__factory"; +export { StandardVM__factory } from "./factories/StandardVM__factory"; export { VMStateBuilder__factory } from "./factories/VMStateBuilder__factory"; diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 8cb4c8a..f15ae66 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -9,18 +9,20 @@ import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; import { SaleContext, SaleStorage } from '../contracts/sale'; import { arrayify, + extractFromMap, paddedUInt256, selectLteLogic, selectLteMode, } from '../utils'; +import { OpMeta } from './OpMeta'; -interface OpMeta { - opcode: number; +interface opMeta { + enum: number; name: string; input: string; } -interface OpInfo extends OpMeta { +interface OpInfo extends opMeta { operand: number; } @@ -56,7 +58,7 @@ type Stack = { }; /** - * Type identify the pair relate to the [opcode, operand] + * Type identify the pair relate to the [enum, operand] */ type Pair = [number, number]; @@ -93,242 +95,13 @@ export type PrettifyConfig = { length?: number; }; -const newOpMeta: OpMeta[] = [ - { - opcode: AllStandardOps.CONSTANT, - name: 'CONSTANTS', - input: 'constantIndex', - }, - { - opcode: AllStandardOps.STACK, - name: 'STACK', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.CONTEXT, - name: 'CONTEXT', - input: 'CONTEXT', - }, - { - opcode: AllStandardOps.STORAGE, - name: 'STORAGE', - input: 'STORAGE', - }, - { - opcode: AllStandardOps.ZIPMAP, - name: 'ZIPMAP', - input: 'zipmap', - }, - { - opcode: AllStandardOps.DEBUG, - name: 'DEBUG', - input: '', - }, - { - opcode: AllStandardOps.IERC20_BALANCE_OF, - name: 'IERC20_BALANCE_OF', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC20_TOTAL_SUPPLY, - name: 'IERC20_TOTAL_SUPPLY', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, - name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, - name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC721_BALANCE_OF, - name: 'IERC721_BALANCE_OF', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC721_OWNER_OF, - name: 'IERC721_OWNER_OF', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC1155_BALANCE_OF, - name: 'IERC1155_BALANCE_OF', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.IERC1155_BALANCE_OF_BATCH, - name: 'IERC1155_BALANCE_OF_BATCH', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.BLOCK_NUMBER, - name: 'BLOCK_NUMBER', - input: 'blockNumber', - }, - { - opcode: AllStandardOps.SENDER, - name: 'SENDER', - input: 'msgSender', - }, - { - opcode: AllStandardOps.THIS_ADDRESS, - name: 'THIS_ADDRESS', - input: 'thisAddress', - }, - { - opcode: AllStandardOps.BLOCK_TIMESTAMP, - name: 'BLOCK_TIMESTAMP', - input: 'blockTimestamp', - }, - { - opcode: AllStandardOps.SCALE18, - name: 'SCALE18', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SCALE18_DIV, - name: 'SCALE18_DIV', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SCALE18_MUL, - name: 'SCALE18_MUL', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SCALE_BY, - name: 'SCALE_BY', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SCALEN, - name: 'SCALEN', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.ANY, - name: 'ANY', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.EAGER_IF, - name: 'EAGER_IF', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.EQUAL_TO, - name: 'EQUAL_TO', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.EVERY, - name: 'EVERY', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.GREATER_THAN, - name: 'GREATER_THAN', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.ISZERO, - name: 'ISZERO', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.LESS_THAN, - name: 'LESS_THAN', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SATURATING_ADD, - name: 'SATURATING_ADD', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SATURATING_MUL, - name: 'SATURATING_MUL', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SATURATING_SUB, - name: 'SATURATING_SUB', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.ADD, - name: 'ADD', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.DIV, - name: 'DIV', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.EXP, - name: 'EXP', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.MAX, - name: 'MAX', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.MIN, - name: 'MIN', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.MOD, - name: 'MOD', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.MUL, - name: 'MUL', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SUB, - name: 'SUB', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.ITIERV2_REPORT, - name: 'ITIERV2_REPORT', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, - name: 'ITIERV2_REPORT_TIME_FOR_TIER', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SATURATING_DIFF, - name: 'SATURATING_DIFF', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.SELECT_LTE, - name: 'SELECT_LTE', - input: 'takeFromStack', - }, - { - opcode: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, - name: 'UPDATE_TIMES_FOR_TIER_RANGE', - input: 'takeFromStack', - }, -]; +const newOpMeta: opMeta[] = Array.from( + extractFromMap(OpMeta, ["name", "enum", "input"]).values() +); /** * @public - * The generator of friendly human readable source. + * The generator of human friendly readable source. * * @remarks * Parse an State/Script to a more human readable form, making easier to understand. This form allow to the users read exactly @@ -339,7 +112,7 @@ const newOpMeta: OpMeta[] = [ * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ export class HumanFriendlyRead { - private static opMeta: OpMeta[] = newOpMeta; + private static opMeta: opMeta[] = newOpMeta; private static _context: string | undefined; private static _pretty: boolean; @@ -441,7 +214,7 @@ export class HumanFriendlyRead { }; const ops = this.pairs(state.sources[sourceIndex]).map((pair) => { - let opmeta = this.opMeta.find((opmeta) => opmeta.opcode === pair[0]); + let opmeta = this.opMeta.find((opmeta) => opmeta.enum === pair[0]); if (typeof opmeta === 'undefined') { // still undefined if (typeof opmeta === 'undefined') { @@ -696,22 +469,22 @@ export class HumanFriendlyRead { let selectLteFlag = false; if ( - op.opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH || - op.opcode === AllStandardOps.IERC1155_BALANCE_OF + op.enum === AllStandardOps.IERC1155_BALANCE_OF_BATCH || + op.enum === AllStandardOps.IERC1155_BALANCE_OF ) { baseIndex = _stackIndex - 1 - (op.operand + 1) * 2; cursor = baseIndex; tempArr = [state.stack[cursor].val]; // - } else if (op.opcode === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { + } else if (op.enum === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { tierRangeFlag = true; baseIndex = _stackIndex - 2; cursor = baseIndex; tempArr = [state.stack[cursor].val]; // } else if ( - op.opcode === AllStandardOps.SCALE18_DIV || - op.opcode === AllStandardOps.SCALE18_MUL + op.enum === AllStandardOps.SCALE18_DIV || + op.enum === AllStandardOps.SCALE18_MUL ) { const _stackLength = this.identifyZipmap(state.stack, 2); @@ -727,7 +500,7 @@ export class HumanFriendlyRead { cursor = baseIndex; tempArr = [state.stack[cursor].val + '*10**18']; // - } else if (op.opcode === AllStandardOps.EAGER_IF) { + } else if (op.enum === AllStandardOps.EAGER_IF) { const _stackLength = this.identifyZipmap(state.stack, 3); // At least one zipmap was found to fll all the required stack from MIN @@ -743,10 +516,10 @@ export class HumanFriendlyRead { tempArr = [state.stack[cursor].val]; // } else if ( - op.opcode === AllStandardOps.SCALE18 || - op.opcode === AllStandardOps.ISZERO || - op.opcode === AllStandardOps.IERC20_TOTAL_SUPPLY || - this.flagOp(op.opcode) + op.enum === AllStandardOps.SCALE18 || + op.enum === AllStandardOps.ISZERO || + op.enum === AllStandardOps.IERC20_TOTAL_SUPPLY || + this.flagOp(op.enum) ) { const _stackLength = this.identifyZipmap(state.stack, 1); @@ -759,19 +532,19 @@ export class HumanFriendlyRead { baseIndex = _stackIndex - 1; } - operandFlag = this.flagOp(op.opcode); + operandFlag = this.flagOp(op.enum); cursor = baseIndex; tempArr = [state.stack[cursor].val]; // } else if ( - op.opcode === AllStandardOps.GREATER_THAN || - op.opcode === AllStandardOps.LESS_THAN || - op.opcode === AllStandardOps.EQUAL_TO || - op.opcode === AllStandardOps.SATURATING_DIFF || - op.opcode === AllStandardOps.IERC721_OWNER_OF || - op.opcode === AllStandardOps.IERC721_BALANCE_OF || - op.opcode === AllStandardOps.IERC20_BALANCE_OF || - op.opcode === AllStandardOps.ITIERV2_REPORT + op.enum === AllStandardOps.GREATER_THAN || + op.enum === AllStandardOps.LESS_THAN || + op.enum === AllStandardOps.EQUAL_TO || + op.enum === AllStandardOps.SATURATING_DIFF || + op.enum === AllStandardOps.IERC721_OWNER_OF || + op.enum === AllStandardOps.IERC721_BALANCE_OF || + op.enum === AllStandardOps.IERC20_BALANCE_OF || + op.enum === AllStandardOps.ITIERV2_REPORT ) { const _stackLength = this.identifyZipmap(state.stack, 2); @@ -787,7 +560,7 @@ export class HumanFriendlyRead { cursor = baseIndex; tempArr = [state.stack[cursor].val]; // - } else if (op.opcode === AllStandardOps.SELECT_LTE) { + } else if (op.enum === AllStandardOps.SELECT_LTE) { const _stackLength = this.identifyZipmap(state.stack, 3); // At least one zipmap was found to fll all the required stack from MIN @@ -803,15 +576,15 @@ export class HumanFriendlyRead { cursor = baseIndex; tempArr = []; } else if ( - op.opcode === AllStandardOps.MIN || - op.opcode === AllStandardOps.MAX || - op.opcode === AllStandardOps.ADD || - op.opcode === AllStandardOps.SUB || - op.opcode === AllStandardOps.MUL || - op.opcode === AllStandardOps.DIV || - op.opcode === AllStandardOps.SATURATING_ADD || - op.opcode === AllStandardOps.SATURATING_SUB || - op.opcode === AllStandardOps.SATURATING_MUL + op.enum === AllStandardOps.MIN || + op.enum === AllStandardOps.MAX || + op.enum === AllStandardOps.ADD || + op.enum === AllStandardOps.SUB || + op.enum === AllStandardOps.MUL || + op.enum === AllStandardOps.DIV || + op.enum === AllStandardOps.SATURATING_ADD || + op.enum === AllStandardOps.SATURATING_SUB || + op.enum === AllStandardOps.SATURATING_MUL ) { const operand = this.identifyZipmap(state.stack, op.operand); @@ -1001,4 +774,4 @@ export class HumanFriendlyRead { function isValidContext(_operand: number, _length: number): boolean { if (_operand >= 0 && _operand < _length) return true; return false; -} +} \ No newline at end of file diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 7b7425c..664bf42 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -8,7 +8,7 @@ import { OpMin } from "../jsvm/ops/math/OpMin"; import { OpMod } from "../jsvm/ops/math/OpMod"; import { OpMul } from "../jsvm/ops/math/OpMul"; import { OpSub } from "../jsvm/ops/math/OpSub"; -import { OpFn, StateJSVM } from "./../jsvm/types"; +import { OpJSVM, StateJSVM } from "./../jsvm/types"; import { AllStandardOps } from "../../src/classes/vm"; import { OpCaller } from "../jsvm/ops/evm/OpCaller"; import { OpAny } from "../jsvm/ops/math/logic/OpAny"; @@ -44,7 +44,6 @@ import { OpERC20SnapshotBalanceOfAt } from "../jsvm/ops/erc20/snapshot/OpERC20Sn import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt"; - /** * @public * Class for Opcodes number of stack pushes and pops @@ -114,10 +113,10 @@ export interface IOpMeta extends Record { enum: number; name: string; - input: string, + input: string, pushes: (opcode: number, operand: number) => number; pops: (opcode: number, operand: number) => number; - jsvmfn: OpFn; + jsvmfn: OpJSVM; description?: string; } @@ -131,12 +130,12 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.CONSTANT, name: 'CONSTANT', description: '', - input: 'constantIndex', + input: 'constantIndex', pushes: pnp.one, pops: pnp.zero, jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.constant(operand, data) - } + this.constant(operand, data) + } } ], [ @@ -145,12 +144,12 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.STACK, name: 'STACK', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.zero, jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.stack(operand, data) - } + this.stack(operand, data) + } } ], [ @@ -159,12 +158,12 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.CONTEXT, name: 'CONTEXT', description: '', - input: 'CONTEXT', + input: 'CONTEXT', pushes: pnp.one, pops: pnp.zero, jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.context(operand, data) - } + this.context(operand, data) + } } ], [ @@ -173,12 +172,12 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.STORAGE, name: 'STORAGE', description: '', - input: 'STORAGE', + input: 'STORAGE', pushes: pnp.one, pops: pnp.zero, jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - await this.storage(operand, data) - } + await this.storage(operand, data) + } } ], [ @@ -187,26 +186,26 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.ZIPMAP, name: 'ZIPMAP', description: '', - input: 'zipmap', + input: 'zipmap', pushes: pnp.zipmappush, pops: pnp.derived, jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - await this.zipmap(operand, data) - } + await this.zipmap(operand, data) + } } ], - [ + [ 5, { enum: AllStandardOps.DEBUG, name: 'DEBUG', description: '', - input: '', + input: '', pushes: pnp.zero, pops: pnp.zero, jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.debug(operand, data) - } + this.debug(operand, data) + } } ], [ @@ -215,7 +214,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC20_BALANCE_OF, name: 'IERC20_BALANCE_OF', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpERC20BalanceOf @@ -227,7 +226,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC20_TOTAL_SUPPLY, name: 'IERC20_TOTAL_SUPPLY', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.one, jsvmfn: OpERC20TotalSupply @@ -239,7 +238,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.three, jsvmfn: OpERC20SnapshotBalanceOfAt @@ -251,7 +250,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpERC20SnapshotTotalSupplyAt @@ -263,7 +262,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC721_BALANCE_OF, name: 'IERC721_BALANCE_OF', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpERC721BalanceOf @@ -275,7 +274,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC721_OWNER_OF, name: 'IERC721_OWNER_OF', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpERC721OwnerOf @@ -287,7 +286,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC1155_BALANCE_OF, name: 'IERC1155_BALANCE_OF', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.three, jsvmfn: OpERC1155BalanceOf @@ -299,7 +298,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, name: 'IERC1155_BALANCE_OF_BATCH', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.oprnd, pops: pnp.derived, jsvmfn: OpERC1155BalanceOfBatch @@ -311,7 +310,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.BLOCK_NUMBER, name: 'BLOCK_NUMBER', description: '', - input: 'blockNumber', + input: 'blockNumber', pushes: pnp.one, pops: pnp.zero, jsvmfn: OpBlockNumber @@ -323,7 +322,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SENDER, name: 'SENDER', description: '', - input: 'msgSender', + input: 'msgSender', pushes: pnp.one, pops: pnp.zero, jsvmfn: OpCaller @@ -335,7 +334,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.THIS_ADDRESS, name: 'THIS_ADDRESS', description: '', - input: 'thisAddress', + input: 'thisAddress', pushes: pnp.one, pops: pnp.zero, jsvmfn: OpThisAddress @@ -347,7 +346,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.BLOCK_TIMESTAMP, name: 'BLOCK_TIMESTAMP', description: '', - input: 'blockTimestamp', + input: 'blockTimestamp', pushes: pnp.one, pops: pnp.zero, jsvmfn: OpTimestamp @@ -359,7 +358,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SCALE18, name: 'SCALE18', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.one, jsvmfn: OpScale18 @@ -371,7 +370,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SCALE18_DIV, name: 'SCALE18_DIV', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpScale18Div @@ -383,7 +382,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SCALE18_MUL, name: 'SCALE18_MUL', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpScale18Mul @@ -395,7 +394,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SCALE_BY, name: 'SCALE_BY', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.one, jsvmfn: OpScaleBy @@ -407,7 +406,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SCALEN, name: 'SCALEN', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.one, jsvmfn: OpScaleN @@ -419,7 +418,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.ANY, name: 'ANY', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpAny @@ -431,7 +430,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.EAGER_IF, name: 'EAGER_IF', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.three, jsvmfn: OpEagerIf @@ -443,7 +442,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.EQUAL_TO, name: 'EQUAL_TO', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpEqualTo @@ -455,7 +454,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.EVERY, name: 'EVERY', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpEvery @@ -467,7 +466,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.GREATER_THAN, name: 'GREATER_THAN', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpGreaterThan @@ -479,7 +478,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.ISZERO, name: 'ISZERO', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.one, jsvmfn: OpIsZero @@ -491,7 +490,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.LESS_THAN, name: 'LESS_THAN', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpLessThan @@ -503,7 +502,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SATURATING_ADD, name: 'SATURATING_ADD', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpSaturatingAdd @@ -515,7 +514,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SATURATING_MUL, name: 'SATURATING_MUL', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpSaturatingMul @@ -527,7 +526,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SATURATING_SUB, name: 'SATURATING_SUB', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpSaturatingSub @@ -539,7 +538,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.ADD, name: 'ADD', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpAdd @@ -551,7 +550,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.DIV, name: 'DIV', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpDiv @@ -563,7 +562,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.EXP, name: 'EXP', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpExp @@ -575,7 +574,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.MAX, name: 'MAX', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpMax @@ -587,7 +586,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.MIN, name: 'MIN', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpMin @@ -599,7 +598,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.MOD, name: 'MOD', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpMod @@ -611,7 +610,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.MUL, name: 'MUL', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpMul @@ -623,7 +622,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SUB, name: 'SUB', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.oprnd, jsvmfn: OpSub @@ -635,7 +634,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.ITIERV2_REPORT, name: 'ITIERV2_REPORT', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.derived, jsvmfn: OpITierV2Report @@ -647,7 +646,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, name: 'ITIERV2_REPORT_TIME_FOR_TIER', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.derived, jsvmfn: OpITierV2ReportTimesForTier @@ -659,7 +658,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SATURATING_DIFF, name: 'SATURATING_DIFF', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpSaturatingDiff @@ -671,7 +670,7 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.SELECT_LTE, name: 'SELECT_LTE', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.derived, jsvmfn: OpSelectLte @@ -683,11 +682,10 @@ export const OpMeta: Map = new Map([ enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, name: 'UPDATE_TIMES_FOR_TIER_RANGE', description: '', - input: 'takeFromStack', + input: 'takeFromStack', pushes: pnp.one, pops: pnp.two, jsvmfn: OpUpdateTimesForTierRange } ] -]) - +]); \ No newline at end of file diff --git a/test/1_Init.test.ts b/test/0_Init.test.ts similarity index 92% rename from test/1_Init.test.ts rename to test/0_Init.test.ts index 4014546..09b6296 100644 --- a/test/1_Init.test.ts +++ b/test/0_Init.test.ts @@ -23,7 +23,8 @@ import { RedeemableERC20ClaimEscrow, ERC20, ERC721, - ERC1155 + ERC1155, + AutoApprove, } from '../src'; @@ -72,6 +73,12 @@ before('Initializing and deploying contracts to hardhat network', async () => { ); const OrderBookFactory = await ethers.getContractFactory('OrderBook'); + const AutoApproveStateBuilderFactory = await ethers.getContractFactory( + 'AutoApproveStateBuilder' + ); + const AutoApproveFactoryFactory = await ethers.getContractFactory('AutoApproveFactory'); + + // ⚠️ Deployments to hardhat test network ⚠️ const vmStateBuilder = await vmStateBuilderFactory.deploy(); const RedeemableERC20Factory = await RedeemableERC20FactoryFactory.deploy(); @@ -95,13 +102,19 @@ before('Initializing and deploying contracts to hardhat network', async () => { vmStateBuilder: vmStateBuilder.address, }); - const stakeFactory = await StakeFactoryFactory.deploy(); + const StakeFactory = await StakeFactoryFactory.deploy(); - const orderBookStateBuilder = await OrderBookStateBuilderFactory.deploy(); - const orderBook = await OrderBookFactory.deploy( - orderBookStateBuilder.address + const OrderBookStateBuilder = await OrderBookStateBuilderFactory.deploy(); + const OrderBook = await OrderBookFactory.deploy( + OrderBookStateBuilder.address ); + const AutoApproveStateBuilder = await AutoApproveStateBuilderFactory.deploy(); + const AutoApproveFactory = await AutoApproveFactoryFactory.deploy( + AutoApproveStateBuilder.address + ); + + // Deploying AlwaysTier const alwaysArg = { combinedTiersLength: 0, @@ -129,12 +142,15 @@ before('Initializing and deploying contracts to hardhat network', async () => { NoticeBoard: NoticeBoard.address, EmissionsERC20Factory: EmissionsERC20Factory.address, SaleFactory: SaleFactory.address, - StakeFactory: stakeFactory.address, - OrderBook: orderBook.address, + StakeFactory: StakeFactory.address, + OrderBook: OrderBook.address, AlwaysTier: AlwaysTier, + AutoApproveFactory: AutoApproveFactory.address, }; }); + + describe('SDK - BookAddress', () => { it('should fail if no address stored in the book for a chain', () => { const arbitraryChainId = 1234; @@ -199,6 +215,11 @@ describe('SDK - BookAddress', () => { expect(address).to.be.equals(addresses.StakeFactory); }); + it('should get the AutoApproveFactory address', async () => { + const address = AutoApprove.getBookAddress(chainId); + expect(address).to.be.equals(addresses.AutoApproveFactory); + }); + it('should get the NoticeBoard address', () => { const address = NoticeBoard.getBookAddress(chainId); expect(address).to.be.equals(addresses.NoticeBoard); @@ -393,4 +414,4 @@ describe('SDK - Generics', () => { 'WRONG: the address is not an ERC1155' ).to.be.false; }); -}); +}); \ No newline at end of file diff --git a/test/2_sale.test.ts b/test/1_Sale.test.ts similarity index 99% rename from test/2_sale.test.ts rename to test/1_Sale.test.ts index e84edfc..b7f5070 100644 --- a/test/2_sale.test.ts +++ b/test/1_Sale.test.ts @@ -307,4 +307,4 @@ describe('SDK - Sale', () => { expect(await sale.saleStatus()).to.be.equals(SaleStatus.Success); }); -}); +}); \ No newline at end of file diff --git a/test/5_escrow.test.ts b/test/2_Escrow.test.ts similarity index 99% rename from test/5_escrow.test.ts rename to test/2_Escrow.test.ts index 701938d..ece0e99 100644 --- a/test/5_escrow.test.ts +++ b/test/2_Escrow.test.ts @@ -328,4 +328,4 @@ describe('SDK - ClaimEscrow', () => { expect(saleAddress_1).to.be.equals(sale_1.address); expect(saleAddress_2).to.be.equals(sale_2.address); }); -}); +}); \ No newline at end of file diff --git a/test/3_verify.test.ts b/test/3_verify.test.ts index fb27830..6b2238f 100644 --- a/test/3_verify.test.ts +++ b/test/3_verify.test.ts @@ -65,4 +65,4 @@ describe('SDK - Verify', () => { ); expect(txNewSigner.from).to.equals(newSigner.address); }); -}); +}); \ No newline at end of file diff --git a/test/4_tiers.test.ts b/test/4_tiers.test.ts index bf9ea9f..8de7702 100644 --- a/test/4_tiers.test.ts +++ b/test/4_tiers.test.ts @@ -110,4 +110,4 @@ describe('SDK - CombineTier', () => { tier.levels.EIGHT ); }); -}); +}); \ No newline at end of file diff --git a/test/5_AutoApprove.test.ts b/test/5_AutoApprove.test.ts new file mode 100644 index 0000000..80b7bb3 --- /dev/null +++ b/test/5_AutoApprove.test.ts @@ -0,0 +1,203 @@ +import { assert } from 'chai'; +import { ethers } from 'hardhat'; +import { AutoApprove, StateConfig, Verify, VM } from '../src'; +import { concat, hexZeroPad, op } from '../src/utils'; +import { deployErc721, expectAsyncError, getEventArgs } from './utils'; +import { Verify__factory } from '../typechain'; +import { ApproveEvent } from '../typechain/Verify'; + + +const verifyInterFace = Verify__factory.createInterface(); + +describe("SDK - AutoApprove", async function () { + it("should automatically approve sender if AutoApprove has APPROVER role", async () => { + const signers = await ethers.getSigners(); + + const deployer = signers[1]; + const admin = signers[2]; + const signer1 = signers[3]; + const aprAdmin = signers[4]; + + const correctID = hexZeroPad(ethers.utils.randomBytes(32), 32); + + const stateConfig: StateConfig = { + // prettier-ignore + sources: [ + concat([ + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.EQUAL_TO), + ]), + ], + constants: [correctID], + }; + + const autoApprove = await AutoApprove.deploy( + deployer, + stateConfig + ); + + const verify = await Verify.deploy(deployer, { + admin: admin.address, + callback: autoApprove.address, + }); + + await autoApprove.connect(deployer).transferOwnership(verify.address); + + const evidenceAdd = hexZeroPad(correctID, 32); + + // Can't approve without permissions + await expectAsyncError( + (async () => { + try { + await verify.connect(signer1).add(evidenceAdd) + } + catch { + throw new Error("autoApprove approved without approver role") + } + })(), + "autoApprove approved without approver role" + ); + + // make AutoApprove an approver + await verify + .connect(admin) + .grantRole(await verify.APPROVER_ADMIN(), aprAdmin.address); + await verify + .connect(admin) + .renounceRole(await verify.APPROVER_ADMIN(), admin.address); + await verify + .connect(aprAdmin) + .grantRole(await verify.APPROVER(), autoApprove.address); + + // now signer1 can get their account automatically approved + await verify.connect(signer1).add(evidenceAdd); + }); + + it("should automatically approve sender if evidence matches the correct ID", async () => { + const signers = await ethers.getSigners(); + + const deployer = signers[1]; + const admin = signers[2]; + const signer1 = signers[3]; + const aprAdmin = signers[4]; + + const correctID = hexZeroPad(ethers.utils.randomBytes(32), 32); + + const stateConfig: StateConfig = { + // prettier-ignore + sources: [ + concat([ + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.EQUAL_TO), + ]), + ], + constants: [correctID], + }; + + const autoApprove = await AutoApprove.deploy( + deployer, + stateConfig + ); + + const verify = await Verify.deploy(deployer, { + admin: admin.address, + callback: autoApprove.address, + }); + + await autoApprove.connect(deployer).transferOwnership(verify.address); + + const evidenceAdd = hexZeroPad(correctID, 32); + + // make AutoApprove an approver + await verify + .connect(admin) + .grantRole(await verify.APPROVER_ADMIN(), aprAdmin.address); + await verify + .connect(admin) + .renounceRole(await verify.APPROVER_ADMIN(), admin.address); + await verify + .connect(aprAdmin) + .grantRole(await verify.APPROVER(), autoApprove.address); + + // now signer1 can get their account automatically approved + const addTx = await verify.connect(signer1).add(evidenceAdd); + + const { sender, evidence } = (await getEventArgs( + addTx, + "Approve", + verify.address, + verifyInterFace + )) as ApproveEvent["args"]; + + assert(sender === autoApprove.address, "wrong approve sender"); + assert(evidence.account === signer1.address, "wrong evidence account"); + assert(evidence.data === evidenceAdd, "wrong evidence data"); + }); + + it("should automatically approve only if account owns the NFT", async () => { + const signers = await ethers.getSigners(); + + const signer0 = signers[0]; + const deployer = signers[1]; + const admin = signers[2]; + const aprAdmin = signers[3]; + const signer1 = signers[4]; + + let tokenERC721 = await deployErc721(); + + const vTokenAddr = op(VM.Opcodes.CONSTANT, 0); + const cAccount = op(VM.Opcodes.CONTEXT, 0); + const cNftId = op(VM.Opcodes.CONTEXT, 1); + + const stateConfig: StateConfig = { + // prettier-ignore + sources: [ + concat([ + vTokenAddr, + cNftId, + op(VM.Opcodes.IERC721_OWNER_OF), + cAccount, + op(VM.Opcodes.EQUAL_TO), + ])], + constants: [tokenERC721.address], + }; + + const autoApprove = await AutoApprove.deploy( + deployer, + stateConfig + ); + + const verify = await Verify.deploy(deployer, { + admin: admin.address, + callback: autoApprove.address, + }); + + await autoApprove.connect(deployer).transferOwnership(verify.address); + + // make AutoApprove an approver + await verify + .connect(admin) + .grantRole(await verify.APPROVER_ADMIN(), aprAdmin.address); + await verify + .connect(admin) + .renounceRole(await verify.APPROVER_ADMIN(), admin.address); + await verify + .connect(aprAdmin) + .grantRole(await verify.APPROVER(), autoApprove.address); + + // signer1 acquires NFT with id 1 + await tokenERC721.mintNewToken(); + await tokenERC721.transferFrom(signer0.address, signer1.address, 1); + const evidenceAdd0 = hexZeroPad("0x1", 32); + const addTx0 = await verify.connect(signer1).add(evidenceAdd0); + (await getEventArgs( + addTx0, + "Approve", + verify.address, + verifyInterFace + )) as ApproveEvent["args"]; + + }); +}); \ No newline at end of file diff --git a/test/8_Stake.test.ts b/test/6_Stake.test.ts similarity index 99% rename from test/8_Stake.test.ts rename to test/6_Stake.test.ts index 113e46e..63652ec 100644 --- a/test/8_Stake.test.ts +++ b/test/6_Stake.test.ts @@ -492,4 +492,4 @@ describe('SDK - Stake' , async function () { assert(time6_.eq(max_uint32)); assert(time7_.eq(max_uint32)); }); -}); +}); \ No newline at end of file diff --git a/test/9_Orderbook.test.ts b/test/7_Orderbook.test.ts similarity index 92% rename from test/9_Orderbook.test.ts rename to test/7_Orderbook.test.ts index 37ff2cb..de148cd 100644 --- a/test/9_Orderbook.test.ts +++ b/test/7_Orderbook.test.ts @@ -5,7 +5,7 @@ import { OrderBook__factory, ReserveTokenTest } from '../typechain'; import { OrderBook, OrderConfig, - BountyConfig, + ClearConfig, DepositConfig, WithdrawConfig, ClearStateChange @@ -68,11 +68,17 @@ describe('SDK - OrderBook', async function () { vAskOutputMax, vAskPrice, ]); + + const askOrderConfig: OrderConfig = { - inputToken: tokenA.address, - inputVaultId: aliceInputVault, - outputToken: tokenB.address, - outputVaultId: aliceOutputVault, + validInputs: [{ + token: tokenA.address, + vaultId: aliceInputVault + }], + validOutputs: [{ + token: tokenB.address, + vaultId: aliceOutputVault, + }], tracking: "0x00", vmStateConfig: { sources: [askSource], @@ -104,10 +110,14 @@ describe('SDK - OrderBook', async function () { vBidPrice, ]); const bidOrderConfig: OrderConfig = { - inputToken: tokenB.address, - inputVaultId: bobInputVault, - outputToken: tokenA.address, - outputVaultId: bobOutputVault, + validInputs: [{ + token: tokenB.address, + vaultId: bobInputVault, + }], + validOutputs: [{ + token: tokenA.address, + vaultId: bobOutputVault, + }], tracking: "0x00", vmStateConfig: { sources: [bidSource], @@ -218,10 +228,14 @@ describe('SDK - OrderBook', async function () { vAskPrice, ]); const askOrderConfig: OrderConfig = { - inputToken: tokenA.address, - inputVaultId: aliceInputVault, - outputToken: tokenB.address, - outputVaultId: aliceOutputVault, + validInputs: [{ + token: tokenA.address, + vaultId: aliceInputVault, + }], + validOutputs: [{ + token: tokenB.address, + vaultId: aliceOutputVault, + }], tracking: "0x00", vmStateConfig: { sources: [askSource], @@ -359,10 +373,16 @@ describe('SDK - OrderBook', async function () { vAskPrice, ]); const askOrderConfig: OrderConfig = { - inputToken: tokenA.address, - inputVaultId: aliceInputVault, - outputToken: tokenB.address, - outputVaultId: aliceOutputVault, + validInputs: [{ + token: tokenA.address, + vaultId: aliceInputVault, + }], + validOutputs: [{ + token: tokenB.address, + vaultId: aliceOutputVault, + }], + + tracking: "0x00", vmStateConfig: { sources: [askSource], @@ -395,10 +415,16 @@ describe('SDK - OrderBook', async function () { vBidPrice, ]); const bidOrderConfig: OrderConfig = { - inputToken: tokenB.address, - inputVaultId: bobInputVault, - outputToken: tokenA.address, - outputVaultId: bobOutputVault, + validInputs: [{ + token: tokenB.address, + vaultId: bobInputVault, + }], + validOutputs: [{ + token: tokenA.address, + vaultId: bobOutputVault, + }], + + tracking: "0x00", vmStateConfig: { sources: [bidSource], @@ -476,9 +502,13 @@ describe('SDK - OrderBook', async function () { // BOUNTY BOT CLEARS THE ORDER - const bountyConfig: BountyConfig = { - aVaultId: bountyBotVaultA, - bVaultId: bountyBotVaultB, + const bountyConfig: ClearConfig = { + aInputIndex: 0, + aOutputIndex: 0, + bInputIndex: 0, + bOutputIndex: 0, + aBountyVaultId: bountyBotVaultA, + bBountyVaultId: bountyBotVaultB, }; const txClearOrder = await orderBook @@ -489,7 +519,7 @@ describe('SDK - OrderBook', async function () { sender: clearSender, a_: clearA_, b_: clearB_, - bountyConfig: clearBountyConfig, + clearConfig: clearBountyConfig, } = (await getEventArgs( txClearOrder, "Clear", @@ -529,5 +559,4 @@ describe('SDK - OrderBook', async function () { compareStructs(clearStateChange, expectedClearStateChange); }); -}); - +}); \ No newline at end of file diff --git a/test/6_RainJSVM.test.ts b/test/8_RainJSVM.test.ts similarity index 99% rename from test/6_RainJSVM.test.ts rename to test/8_RainJSVM.test.ts index 40c3628..e147681 100644 --- a/test/6_RainJSVM.test.ts +++ b/test/8_RainJSVM.test.ts @@ -2,7 +2,7 @@ import { assert } from 'chai'; import { ethers } from 'hardhat'; import { BigNumber } from 'ethers'; import { expectAsyncError, ONE, Tier, Time } from './utils'; -import { StateConfig, RainJSVM, OpFn, FnPtrs, VM } from '../src'; +import { StateConfig, RainJSVM, OpJSVM, FnPtrsJSVM, VM } from '../src'; import { op, paddedUInt32, @@ -17,10 +17,10 @@ import { describe('SDK - RainJSVM', () => { it('should perform correctly with custom opcode function', async () => { - const customBlockNumber: OpFn = (state, operand, data) => { + const customBlockNumber: OpJSVM = (state, operand, data) => { state.stack.push(BigNumber.from(data.blockNumber)); }; - const applyOpFn: FnPtrs = {}; + const applyOpFn: FnPtrsJSVM = {}; applyOpFn[VM.Opcodes.BLOCK_NUMBER] = customBlockNumber; const script: StateConfig = { @@ -813,4 +813,4 @@ describe('SDK - RainJSVM', () => { await expectAsyncError(rainJs.run(), 'max numeric range overflow'); }); -}); +}); \ No newline at end of file diff --git a/test/7_HumanFriendlyRead.test.ts b/test/9_HumanFriendlyRead.test.ts similarity index 99% rename from test/7_HumanFriendlyRead.test.ts rename to test/9_HumanFriendlyRead.test.ts index cfc7292..8dc3803 100644 --- a/test/7_HumanFriendlyRead.test.ts +++ b/test/9_HumanFriendlyRead.test.ts @@ -1920,4 +1920,4 @@ EAGER_IF( expect(friendlyPretty).to.be.equals(expectedOutput); }); -}); +}); \ No newline at end of file diff --git a/test/OB_MatchMaker.test.ts b/test/OB_MatchMaker.test.ts new file mode 100644 index 0000000..d766955 --- /dev/null +++ b/test/OB_MatchMaker.test.ts @@ -0,0 +1,213 @@ +import { paddedUInt160, paddedUInt256, parseUnits } from "../src/utils"; +import { FixedPrice, IncDecPrice, SERC20s, SOrder, VM, MatchMaker, eighteenZeros } from "../src"; + + +////////// ---------------------| Demo |------------------------ *** Demo *** -----------------------| Demo |---------------------- \\\\\\\\\\ +describe('Orderbook MatchMaker', () => { + it('should perform simple simulation match making over provided simulated orders', async () => { + + // a function for benchmarking + var timer = function(name: string) { + var start = new Date(); + return { + stop: function() { + var end = new Date(); + var time = end.getTime() - start.getTime(); + return {name, time} + } + } + }; + + //simulating some addresses + let sender1 = paddedUInt160("0x11111"); + let sender2 = paddedUInt160("0x22222"); + let sender3 = paddedUInt160("0x33333"); + let sender4 = paddedUInt160("0x44444"); + let sender6 = paddedUInt160("0x66666"); + let orderbook = paddedUInt160("0x55555"); + + // simulating some tokens addresses + const token1 = paddedUInt160("0x1") + const token2 = paddedUInt160("0x2") + const token3 = paddedUInt160("0x3") + + //simulating some erc20 tokens + let tokens: SERC20s = { + [token1]: { + totalSupply: parseUnits((1000).toString()), + decimals: 18, + balanceOf: { + [sender1]: parseUnits((500).toString()), + [sender2]: parseUnits((100).toString()), + [sender3]: parseUnits((200).toString()), + [sender4]: parseUnits((100).toString()), + [orderbook]: parseUnits((0).toString()), + } + }, + [token2]: { + totalSupply: parseUnits((2000).toString()), + decimals: 18, + balanceOf: { + [sender1]: parseUnits((200).toString()), + [sender2]: parseUnits((150).toString()), + [sender3]: parseUnits((350).toString()), + [sender4]: parseUnits((220).toString()), + [orderbook]: parseUnits((0).toString()), + } + }, + [token3]: { + totalSupply: parseUnits((500).toString()), + decimals: 18, + balanceOf: { + [sender1]: parseUnits((20).toString()), + [sender2]: parseUnits((100).toString()), + [sender3]: parseUnits((50).toString()), + [sender4]: parseUnits((130).toString()), + [orderbook]: parseUnits((0).toString()), + } + }, + } + + // some scripts for orders + const scriptA = VM.pair(new FixedPrice(4), new FixedPrice(2)); + const scriptB = VM.pair(new FixedPrice(10), new FixedPrice(0.4)); + const scriptC = VM.pair(new FixedPrice(2), new IncDecPrice(0.1, 8, 1, 900)); + + // simulating some orders usinf the data above + const orderHash1 = paddedUInt256("0x1abc") + const vaultId101 = paddedUInt256("0x0101") + const vaultId201 = paddedUInt256("0x0201") + + const orderHash2 = paddedUInt256("0x2abc") + const vaultId202 = paddedUInt256("0x0202") + const vaultId302 = paddedUInt256("0x0302") + + const orderHash3 = paddedUInt256("0x3abc") + const vaultId203 = paddedUInt256("0x0203") + const vaultId103 = paddedUInt256("0x0103") + + const orderHash4 = paddedUInt256("0x4abc") + const vaultId304 = paddedUInt256("0x0304") + const vaultId204 = paddedUInt256("0x0204") + + const order1 : SOrder = { + orderHash: orderHash1, + owner: sender1, + validInputs: [{ token: token1, vaultId: vaultId101 }], + validOutputs: [{ token: token2, vaultId: vaultId201 }], + vmConfig: scriptA + }; + const order2 : SOrder = { + orderHash: orderHash2, + owner: sender2, + validInputs: [{ token: token2, vaultId: vaultId202 }], + validOutputs: [{ token: token3, vaultId: vaultId302 }], + vmConfig: scriptC + }; + const order3 : SOrder = { + orderHash: orderHash3, + owner: sender3, + validInputs: [{ token: token2, vaultId: vaultId203 }], + validOutputs: [{ token: token1, vaultId: vaultId103 }], + vmConfig: scriptB + }; + const order4 : SOrder = { + orderHash: orderHash4, + owner: sender4, + validInputs: [{ token: token3, vaultId: vaultId304 }], + validOutputs: [{ token: token2, vaultId: vaultId204 }], + vmConfig: scriptB + }; + + // bounty vaults for performing the matchmaking + const bounty = { + aBounty: paddedUInt256("0x88"), + bBounty: paddedUInt256("0x99") + } + + // simulating an orderbook cycle + // async function bot() { + // try{ + const matchmaker = new MatchMaker(orderbook, sender6); + matchmaker.timestamp = 1; + + matchmaker.addAssets(tokens); + matchmaker.setSender(sender6); + + console.log("checking sender1 balance of token 0x2") + console.log("sender1 token0x2 balance before adding order and depositing: " + matchmaker.erc20s[token2].balanceOf[sender1].div(eighteenZeros).toNumber()); + + console.log("---------------------------------------") + console.log("adding orders") + await matchmaker.addOrder(order1); + await matchmaker.addOrder(order3); + await matchmaker.addOrder(order2); + await matchmaker.addOrder(order4); + + console.log("---------------------------------------") + console.log("checking output valut balances of sener1 and sender3") + console.log("sender1 outputValt balance before depositing: " + matchmaker.vaults[sender1][token2][vaultId201].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance before depositing: " + matchmaker.vaults[sender3][token1][vaultId103].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance before depositing: " + matchmaker.vaults[sender2][token3][vaultId302].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance before depositing: " + matchmaker.vaults[sender4][token2][vaultId204].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("depositing 30 tokens for order1 and 40 tokens for order3") + matchmaker.deposit(sender1, token2, vaultId201, 30); + matchmaker.deposit(sender3, token1, vaultId103, 40); + matchmaker.deposit(sender2, token3, vaultId302, 70); + matchmaker.deposit(sender4, token2, vaultId204, 60); + + console.log("---------------------------------------") + console.log("checking the balances of sender1 and sender3 output vaults") + + console.log("sender1 outputValt balance after depositing: " + matchmaker.vaults[sender1][token2][vaultId201].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance after depositing: " + matchmaker.vaults[sender3][token1][vaultId103].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance after depositing: " + matchmaker.vaults[sender2][token3][vaultId302].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance after depositing: " + matchmaker.vaults[sender4][token2][vaultId204].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("checking sender1 balance of token 0x2") + console.log("sender1 token0x2 balance after dpositing: " + matchmaker.erc20s[token2].balanceOf[sender1].div(eighteenZeros).toNumber()) + + console.log("---------------------------------------") + console.log("performing the match") + + var t = timer("benchmark") + await matchmaker.makeMatch(bounty); + let result = t.stop() + + console.log("---------------------------------------") + console.log("checking output balances of sender1's and sender3's output vaults") + console.log("sender1 outputValt balance after matching: " + matchmaker.vaults[sender1][token2][vaultId201].div("100000000000000").toNumber()/10000) + console.log("sender3 outputValt balance after matching: " + matchmaker.vaults[sender3][token1][vaultId103].div("100000000000000").toNumber()/10000) + console.log("sender2 outputValt balance after matching: " + matchmaker.vaults[sender2][token3][vaultId302].div("100000000000000").toNumber()/10000) + console.log("sender4 outputValt balance after matching: " + matchmaker.vaults[sender4][token2][vaultId204].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("checking input balances of sender1's and sender3's output vaults") + console.log("sender1 inputValt balance after matching: " + matchmaker.vaults[sender1][token1][vaultId101].div("100000000000000").toNumber()/10000) + console.log("sender3 inputValt balance after matching: " + matchmaker.vaults[sender3][token2][vaultId203].div("100000000000000").toNumber()/10000) + console.log("sender2 inputValt balance after matching: " + matchmaker.vaults[sender2][token2][vaultId202].div("100000000000000").toNumber()/10000) + console.log("sender4 inputValt balance after matching: " + matchmaker.vaults[sender4][token3][vaultId304].div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log("checking total bounty balance") + console.log("total bounties collected of token0x2: " + Object.values(matchmaker.vaults[sender6][token2]).reduce((e, m) => e.add(m)) + .div("100000000000000").toNumber()/10000) + console.log("total bounties collected of token0x1: " + Object.values(matchmaker.vaults[sender6][token1]).reduce((e, m) => e.add(m)) + .div("100000000000000").toNumber()/10000) + console.log("total bounties collected of token0x3: " + Object.values(matchmaker.vaults[sender6][token3]).reduce((e, m) => e.add(m)) + .div("100000000000000").toNumber()/10000) + + console.log("---------------------------------------") + console.log(result.name + " of this matchmaking round: " + result.time + " ms") + + // } + // catch(err){ + // console.log(err) + // } + // } + + }); +}) \ No newline at end of file diff --git a/test/utils.ts b/test/utils.ts index 673e577..5021ec9 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -61,6 +61,7 @@ export interface Addresses { StakeFactory: string; OrderBook: string; AlwaysTier: string; + AutoApproveFactory: string; } export const sixZeros = '000000'; diff --git a/yarn.lock b/yarn.lock index c38e8f6..ddce2ed 100644 --- a/yarn.lock +++ b/yarn.lock @@ -901,7 +901,7 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.18.9", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.18.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== @@ -946,12 +946,12 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#f184482cca57c72db22ba97649d5f84a1b7ad291": +"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff": version "0.0.16" - resolved "git+https://github.com/beehive-innovation/rain-protocol.git#f184482cca57c72db22ba97649d5f84a1b7ad291" + resolved "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff" dependencies: - "@openzeppelin/contracts" "^4.3.3" - "@openzeppelin/contracts-upgradeable" "^4.4.1" + "@openzeppelin/contracts" "=4.7.0" + "@openzeppelin/contracts-upgradeable" "=4.7.0" "@cspotcode/source-map-support@^0.8.0": version "0.8.1" @@ -1747,21 +1747,21 @@ tweetnacl "^1.0.3" tweetnacl-util "^0.15.1" -"@microsoft/api-extractor-model@7.21.0", "@microsoft/api-extractor-model@^7.0.28": - version "7.21.0" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.21.0.tgz#2138682e738a14038d40165ec77362e69853f200" - integrity sha512-NN4mXzoQWTuzznIcnLWeV6tGyn6Os9frDK6M/mmTXZ73vUYOvSWoKQ5SYzyzP7HF3YtvTmr1Rs+DsBb0HRx7WQ== +"@microsoft/api-extractor-model@7.22.1", "@microsoft/api-extractor-model@^7.0.28": + version "7.22.1" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor-model/-/api-extractor-model-7.22.1.tgz#2c72bba972bdcc74d16f6f5c8a5f575eff9ce977" + integrity sha512-3Bx6VC8F4ti8XlhaOCynCpwGvdXGwHD2dGBpo2xpJT9gEmPQvpAL3Ni+5gaEX0eQ27zGILVTUZDqZSRYskk/Rw== dependencies: "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" "@rushstack/node-core-library" "3.49.0" "@microsoft/api-extractor@^7.22.2": - version "7.28.4" - resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.28.4.tgz#8e67a69edb4937beda516d42d4f325e6e1258445" - integrity sha512-7JeROBGYTUt4/4HPnpMscsQgLzX0OfGTQR2qOQzzh3kdkMyxmiv2mzpuhoMnwbubb1GvPcyFm+NguoqOqkCVaw== + version "7.28.6" + resolved "https://registry.yarnpkg.com/@microsoft/api-extractor/-/api-extractor-7.28.6.tgz#da88050d37b19edd414d8daf7da890beeff264f2" + integrity sha512-RNUokJTlBGD0ax/Jo8xLPWv4s6IboqrYrcabEEh6rFadO/tVPoV/R5YHtEeZ2q4ubvwhHTtX3sRm+p4fJo/3Sg== dependencies: - "@microsoft/api-extractor-model" "7.21.0" + "@microsoft/api-extractor-model" "7.22.1" "@microsoft/tsdoc" "0.14.1" "@microsoft/tsdoc-config" "~0.16.1" "@rushstack/node-core-library" "3.49.0" @@ -1915,12 +1915,12 @@ chalk "^4.1.0" tslib "^2.3.1" -"@openzeppelin/contracts-upgradeable@^4.4.1": +"@openzeppelin/contracts-upgradeable@=4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.7.0.tgz#6437261286879d353f6de7bf3ac8216bef8a486d" integrity sha512-wO3PyoAaAV/rA77cK8H4c3SbO98QylTjfiFxyvURUZKTFLV180rnAvna1x7/Nxvt0Gqv+jt1sXKC7ygxsq8iCw== -"@openzeppelin/contracts@^4.3.3": +"@openzeppelin/contracts@=4.7.0": version "4.7.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-4.7.0.tgz#3092d70ea60e3d1835466266b1d68ad47035a2d5" integrity sha512-52Qb+A1DdOss8QvJrijYYPSf32GUg2pGaG/yCxtaA3cu4jduouTdg4XZSMLW9op54m1jH7J8hoajhHKOPsoJFw== @@ -2213,10 +2213,10 @@ resolved "https://registry.yarnpkg.com/@statoscope/extensions/-/extensions-5.14.1.tgz#b7c32b39de447da76b9fa2daada61b2f699754e6" integrity sha512-5O31566+bOkkdYFH81mGGBTh0YcU0zoYurTrsK5uZfpNY87ZCPpptrszX8npTRHNsxbjBBNt7vAwImJyYdhzLw== -"@statoscope/helpers@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.23.0.tgz#4f24f079a68039d2c21d1d8513acd6e7368c18b5" - integrity sha512-Rmix1ayv6BqxNAR71HrgcvFpa2o3GFm0GpL5zqfLnkAyVtd3fAc4eVo2KaRG3RnxfpetoPNfmueI0zsbpn7tVA== +"@statoscope/helpers@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/helpers/-/helpers-5.24.0.tgz#3a8100ee3eb21bbfecc110547639fa708677e3fe" + integrity sha512-PhCynDA+FHB1DuuHlMeVnETRRDfgKrQTGey2jhBdHzd/Gae/GuwDcnFxiRVMIA97UQM8EwyE/hc0sF6dpPXd9w== dependencies: "@types/archy" "^0.0.32" "@types/semver" "^7.3.10" @@ -2231,38 +2231,38 @@ dependencies: "@discoveryjs/json-ext" "^0.5.7" -"@statoscope/stats-extension-compressed@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.23.0.tgz#2bca5b340b660c170af5f59b4efc60d09747ff32" - integrity sha512-HkOBGCOIP6CxZBxwZtWEXUqQhNnoQWWsz+UPDuPebsp5biuSYbwTvv6e6y/SAEIsRSRquENh3UspcdrYFIb9AQ== +"@statoscope/stats-extension-compressed@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-compressed/-/stats-extension-compressed-5.24.0.tgz#5f23227bfabe4368bc57416580594a2c11c3ab34" + integrity sha512-QRgTY7wnJhB5BjV2OHt2e3E8rLi+53LEJ2q7KZDjRMNZNGY6G1LPIuHTCAUlcLNxDbaeATqkioTVRyf2v9SjPQ== dependencies: - "@statoscope/helpers" "5.23.0" + "@statoscope/helpers" "5.24.0" gzip-size "^6.0.0" -"@statoscope/stats-extension-custom-reports@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.23.0.tgz#2eb5dcca6d088d1fbd6aff074ed3c4cc25447406" - integrity sha512-jQxQMn+rbES/JCJUbzP0ciGUBRtvkX5bsS4JoUkn/jHdUv+v0T60/LlbmnokCyPknuuvCQm+g0e2WLQrLUJxww== +"@statoscope/stats-extension-custom-reports@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-custom-reports/-/stats-extension-custom-reports-5.24.0.tgz#153aa71d2b74cfc5e56f265e6d15104647de87bb" + integrity sha512-n20dL3WYrwla8eCYNtHY0AdcBuyHiaW1F2gQBsJqV3PJzIYBijo/f1dHl2p8hzVDQmJ/QYWNwsbTvr1GQGdseg== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.23.0" + "@statoscope/helpers" "5.24.0" "@statoscope/stats" "5.14.1" "@statoscope/types" "5.22.0" -"@statoscope/stats-extension-package-info@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.23.0.tgz#11dbab0eb0ead806fe826bd35b282f36cae7bbe1" - integrity sha512-XGJLeAbGMT2KUgnmycDALbWEIz040tDPsKAdJHhqqLFvTNVvh8rqJW+Jj7WfweiBr7H/MbQpPHZiZ7yqodSm9w== +"@statoscope/stats-extension-package-info@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-package-info/-/stats-extension-package-info-5.24.0.tgz#ef8d1aacf8f268524c54f2fb21b44ce6dca38fd7" + integrity sha512-L7UtVb5CwG2dMZdVrGjok4+0ryEASO1rr8Kf/QzcQNIHb8mG5VSYRFBlcFfvvC/PNKafxoexbwhiSGZEtggwqw== dependencies: - "@statoscope/helpers" "5.23.0" + "@statoscope/helpers" "5.24.0" -"@statoscope/stats-extension-stats-validation-result@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.23.0.tgz#dbfe086638e3a9b07676f6d2330e391f2fba93e2" - integrity sha512-UWEEo2ahzy9hupO44+Wzr8+PqbtBFBOXuOcD+eKWRZPORNfkidPahjJ/DHK6QsuoModqMPr9SLaxYjaeN+neaA== +"@statoscope/stats-extension-stats-validation-result@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/stats-extension-stats-validation-result/-/stats-extension-stats-validation-result-5.24.0.tgz#7409bd625d9a5f15bf3f017e521bc1701850b7b4" + integrity sha512-++8hX2cb0CpIM+gqLwIl9N/ISJHTKtrQXwsl9CSlds3K4D49BwC2cULlvhGdjVRMf7U1RI0COL9dj79K7iK5Ig== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.23.0" + "@statoscope/helpers" "5.24.0" "@statoscope/stats" "5.14.1" "@statoscope/types" "5.22.0" @@ -2278,64 +2278,62 @@ dependencies: "@statoscope/stats" "5.14.1" -"@statoscope/webpack-model@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.23.0.tgz#997c4f5a96c7ba1aeb3404d2932a481d56cac77d" - integrity sha512-ivAQAO0TS67xNPtdFHg2JxugFW2qCAiuEdOe7R8EGZ+6d5ZFBAcelz74toZ8x4h5wm5SSgwPFVEasYCxfGQJSg== +"@statoscope/webpack-model@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-model/-/webpack-model-5.24.0.tgz#8d7b50749bd6f03cb7307e6f73cddf15d5eac771" + integrity sha512-6XHhTbA4Vw8LKUGLuRvsNUUgiiGAvqciUMQRjovf2xNRT2a3rCP7L3QKOntEvIBcKzNGuQ0T+L5sKF8pqiI3mA== dependencies: "@statoscope/extensions" "5.14.1" - "@statoscope/helpers" "5.23.0" + "@statoscope/helpers" "5.24.0" "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.23.0" - "@statoscope/stats-extension-custom-reports" "5.23.0" - "@statoscope/stats-extension-package-info" "5.23.0" - "@statoscope/stats-extension-stats-validation-result" "5.23.0" + "@statoscope/stats-extension-compressed" "5.24.0" + "@statoscope/stats-extension-custom-reports" "5.24.0" + "@statoscope/stats-extension-package-info" "5.24.0" + "@statoscope/stats-extension-stats-validation-result" "5.24.0" "@statoscope/types" "5.22.0" - ajv "^8.11.0" md5 "^2.3.0" "@statoscope/webpack-plugin@^5.17.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.23.0.tgz#d2a363d7957f4cc9d1b8fd03d53bf302b927885d" - integrity sha512-6XC8689UpDeHxKNJ/ZNT8jaCNV0IQhm1qW1SWb1VeOmWj7Rh78GLlFeD3EcJ55MJp7EesU2g90DAUDq//xpdvQ== + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-plugin/-/webpack-plugin-5.24.0.tgz#1a4faa14ca110c6247662775d087ba9900fa2996" + integrity sha512-8GX0ULmvwZRAqQClLMdzV1L/Y9PBJZTwBTXiiKzU4+vypRiI7VA+fz9aZ2XGWErVonXbrIvclj2IAQMbz/z2YQ== dependencies: "@discoveryjs/json-ext" "^0.5.7" "@statoscope/report-writer" "5.22.0" "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.23.0" - "@statoscope/stats-extension-custom-reports" "5.23.0" + "@statoscope/stats-extension-compressed" "5.24.0" + "@statoscope/stats-extension-custom-reports" "5.24.0" "@statoscope/types" "5.22.0" - "@statoscope/webpack-model" "5.23.0" - "@statoscope/webpack-stats-extension-compressed" "5.23.0" - "@statoscope/webpack-stats-extension-package-info" "5.23.0" - "@statoscope/webpack-ui" "5.23.0" + "@statoscope/webpack-model" "5.24.0" + "@statoscope/webpack-stats-extension-compressed" "5.24.0" + "@statoscope/webpack-stats-extension-package-info" "5.24.0" + "@statoscope/webpack-ui" "5.24.0" open "^8.4.0" -"@statoscope/webpack-stats-extension-compressed@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.23.0.tgz#972f27c6f6beb249c92b6aae9eb9f2292a57ad33" - integrity sha512-eexc4fOLnpQWmG+BubWOppvBaPhDOgZ1gXw8c+9WJVZyG3/Um4G3MVsokaocAakXgZm4s1C60dj963mN5V0QeQ== +"@statoscope/webpack-stats-extension-compressed@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-compressed/-/webpack-stats-extension-compressed-5.24.0.tgz#fb33fa83d22e584a9b281f69b28bca453b44e386" + integrity sha512-yJyYo/TC393MZcA/txnd/37WubSdGNpVAncFlifVtJoGgsD9GrqltN8aUiaVPBDy/r4N4qP9+8T6OQ/Ha4J4DA== dependencies: "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-compressed" "5.23.0" - "@statoscope/webpack-model" "5.23.0" + "@statoscope/stats-extension-compressed" "5.24.0" + "@statoscope/webpack-model" "5.24.0" -"@statoscope/webpack-stats-extension-package-info@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.23.0.tgz#f718568c8de46c5eb4324449579e7e5ef98fffc4" - integrity sha512-uY+ArAZeWfXa47vhcEHcOm2fPy77PV9eYjGYCdn57fA7pmAGcusw+rw0CHcFCeA/fRsUc1czOwoxrpLUfABGJA== +"@statoscope/webpack-stats-extension-package-info@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-stats-extension-package-info/-/webpack-stats-extension-package-info-5.24.0.tgz#4d78974dc9739162c2f9e89c01ccd31ddcb300e6" + integrity sha512-AXtYSbvyyFdgn1H/bnE2gu0oEhKBiHbeZA/gCJM+hEWOwGWnz61+qiPxYj2QnOnXN8XmjHho3jf0Gd4eW3dJfw== dependencies: "@statoscope/stats" "5.14.1" - "@statoscope/stats-extension-package-info" "5.23.0" - "@statoscope/webpack-model" "5.23.0" + "@statoscope/stats-extension-package-info" "5.24.0" + "@statoscope/webpack-model" "5.24.0" -"@statoscope/webpack-ui@5.23.0": - version "5.23.0" - resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.23.0.tgz#0425388c32ef71ef5b9f574ce157d5283c94333e" - integrity sha512-4pvEPOin/wlv8WZjbh2mrr2ynMyzv6cMhStKQiC/sApgiyOoVUTlqKWm1AaKkteb8uzlZmj442zhwlNBjG1nww== +"@statoscope/webpack-ui@5.24.0": + version "5.24.0" + resolved "https://registry.yarnpkg.com/@statoscope/webpack-ui/-/webpack-ui-5.24.0.tgz#7a2d6af6384073ae2254feb2b067e2780b76b06c" + integrity sha512-tqNH1O7WE8dVa2WknmmM4j7mYD6mna3TKRLRYmiAwg6W/RICVAxXwZy1v9uKN9+pfa6By0hI3mWiYS7V1seh2w== dependencies: "@statoscope/types" "5.22.0" - highcharts "^10.2.0" "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -2657,9 +2655,9 @@ "@types/sinon" "*" "@types/sinon@*": - version "10.0.12" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.12.tgz#fb7009ea71f313a9da4644ba73b94e44d6b84f7f" - integrity sha512-uWf4QJ4oky/GckJ1MYQxU52cgVDcXwBhDkpvLbi4EKoLPqLE4MOH6T/ttM33l3hi0oZ882G6oIzWv/oupRYSxQ== + version "10.0.13" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-10.0.13.tgz#60a7a87a70d9372d0b7b38cc03e825f46981fb83" + integrity sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ== dependencies: "@types/sinonjs__fake-timers" "*" @@ -3040,9 +3038,9 @@ acorn@^7.1.0, acorn@^7.1.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.4, acorn@^8.4.1, acorn@^8.5.0: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + version "8.8.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" + integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== adm-zip@^0.4.16: version "0.4.16" @@ -3103,7 +3101,7 @@ ajv@^6.0.1, ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.5, ajv@^6.5.0, ajv@ json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^8.0.0, ajv@^8.11.0, ajv@^8.8.0: +ajv@^8.0.0, ajv@^8.8.0: version "8.11.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== @@ -3421,7 +3419,7 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axe-core@^4.4.2: +axe-core@^4.4.3: version "4.4.3" resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.4.3.tgz#11c74d23d5013c0fa5d183796729bc3482bd2f6f" integrity sha512-32+ub6kkdhhWick/UjvEwRchgoetXqTK14INLqbGm5U2TzBkBNF3nQtLYm8ovxSkQWArjEQvftCKryjZaATu3w== @@ -4512,9 +4510,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001366: - version "1.0.30001367" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz#2b97fe472e8fa29c78c5970615d7cd2ee414108a" - integrity sha512-XDgbeOHfifWV3GEES2B8rtsrADx4Jf+juKX2SICJcaUhjYBO3bR96kvEIHa15VU6ohtOhBZuPGGYGbXMRn0NCw== + version "1.0.30001368" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz#c5c06381c6051cd863c45021475434e81936f713" + integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ== caseless@~0.12.0: version "0.12.0" @@ -5620,9 +5618,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.3.47, electron-to-chromium@^1.4.188: - version "1.4.195" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.195.tgz#139b2d95a42a3f17df217589723a1deac71d1473" - integrity sha512-vefjEh0sk871xNmR5whJf9TEngX+KTKS3hOHpjoMpauKkwlGwtMz1H8IaIjAT/GNnX0TbGwAdmVoXCAzXf+PPg== + version "1.4.199" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz#e0384fde79fdda89880e8be58196a9153e04db3b" + integrity sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg== elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3, elliptic@^6.5.4: version "6.5.4" @@ -5945,20 +5943,20 @@ eslint-plugin-import@~2.14.0: resolve "^1.6.0" eslint-plugin-jsx-a11y@^6.2.3: - version "6.6.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.0.tgz#2c5ac12e013eb98337b9aa261c3b355275cc6415" - integrity sha512-kTeLuIzpNhXL2CwLlc8AHI0aFRwWHcg483yepO9VQiHzM9bZwJdzTkzBszbuPrbgGmq2rlX/FaT2fJQsjUSHsw== + version "6.6.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff" + integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q== dependencies: - "@babel/runtime" "^7.18.3" + "@babel/runtime" "^7.18.9" aria-query "^4.2.2" array-includes "^3.1.5" ast-types-flow "^0.0.7" - axe-core "^4.4.2" + axe-core "^4.4.3" axobject-query "^2.2.0" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" has "^1.0.3" - jsx-ast-utils "^3.3.1" + jsx-ast-utils "^3.3.2" language-tags "^1.0.5" minimatch "^3.1.2" semver "^6.3.0" @@ -7677,11 +7675,6 @@ heap@0.2.6: resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" integrity sha512-MzzWcnfB1e4EG2vHi3dXHoBupmuXNZzx6pY6HldVS55JKKBoq3xOyzfSaZRkJp37HIhEYC78knabHff3zc4dQQ== -highcharts@^10.2.0: - version "10.2.0" - resolved "https://registry.yarnpkg.com/highcharts/-/highcharts-10.2.0.tgz#646b1c80fb4add9e35e5813bd87419ccdf1fc6b7" - integrity sha512-MvLo4dzR2Vo7Y85dsqJ07uabBXSSIRKRRdW4l9IGP55h2jYWNm/m9JBszVVxySH5Lda6g+Ins9NdGppZJpjNCA== - hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" @@ -9107,7 +9100,7 @@ jsx-ast-utils@^2.0.1: array-includes "^3.1.1" object.assign "^4.1.0" -"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.1: +"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.2.tgz#afe5efe4332cd3515c065072bd4d6b0aa22152bd" integrity sha512-4ZCADZHRkno244xlNnn4AOG6sRQ7iBZ5BbgZ4vW4y5IZw7cVUD1PPeblm1xx/nfmMxPdt/LHsXZW8z/j58+l9Q== From d61f0e723e9b8948e17b8b0bfe046741b5ea013d Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 23 Jul 2022 19:23:45 +0000 Subject: [PATCH 050/125] Update addresses.ts --- src/addresses.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addresses.ts b/src/addresses.ts index e5bd9ea..b5f7dd7 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -230,7 +230,7 @@ const subgraphBook: SubgraphBook = { /** * Mumbai chain */ - 80001: '', + 80001: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-mumbai-v3', }; /** From 723aaf70996ac78437a4878cb90b6ed3a1014f4d Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 23 Jul 2022 20:37:22 +0000 Subject: [PATCH 051/125] Update vm.ts --- src/classes/vm.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 48e7d20..1c14035 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -13,6 +13,7 @@ import { arrayify, parseUnits, } from '../utils'; +import { CombineTierGenerator } from '../contracts/script-generators/combineTierScriptGenerator'; /** * @public @@ -558,7 +559,7 @@ export class VM { */ public static multi(configs: StateConfig[]) : StateConfig { - if (configs.length > 2) { + if (configs.length > 1) { let _result: StateConfig = configs[0]; for (let i = 1; i < configs.length; i++) { @@ -1724,4 +1725,12 @@ export class VM { return VM.gte(tierConfig, VM.constant(reportCheck)) } -} \ No newline at end of file +} + +const rule1 = VM.and([ + VM.beforeAfterTime(1, "lt"), + VM.hasAnyTier( + new CombineTierGenerator("jhgiggi") + ) +]); +console.log(rule1) \ No newline at end of file From 7e6ecdf5d3f99823fd9eb76633af2376b61ae2c0 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 23 Jul 2022 20:39:38 +0000 Subject: [PATCH 052/125] Update vm.ts --- src/classes/vm.ts | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 1c14035..17921a3 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -13,7 +13,6 @@ import { arrayify, parseUnits, } from '../utils'; -import { CombineTierGenerator } from '../contracts/script-generators/combineTierScriptGenerator'; /** * @public @@ -1725,12 +1724,4 @@ export class VM { return VM.gte(tierConfig, VM.constant(reportCheck)) } -} - -const rule1 = VM.and([ - VM.beforeAfterTime(1, "lt"), - VM.hasAnyTier( - new CombineTierGenerator("jhgiggi") - ) -]); -console.log(rule1) \ No newline at end of file +} \ No newline at end of file From 9bc231f048aaf395630d5060322f9c82be349b74 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 23 Jul 2022 21:43:01 +0000 Subject: [PATCH 053/125] Update vm.ts --- src/classes/vm.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 17921a3..8e17513 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1695,11 +1695,9 @@ export class VM { tierConfig: StateConfig, ) : StateConfig { - return VM.isZero( - VM.isEqual( - tierConfig, - VM.constant(ethers.constants.MaxUint256) - ) + return VM.lt( + tierConfig, + VM.constant(ethers.constants.MaxUint256) ) } From 0107235d71dfa3249802bc2a492c330a1c13209d Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 23 Jul 2022 22:05:45 +0000 Subject: [PATCH 054/125] Update vm.ts --- src/classes/vm.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 8e17513..b41f97a 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1068,10 +1068,10 @@ export class VM { src = op(VM.Opcodes.LESS_THAN) } if (type === "lt") { - src = op(VM.Opcodes.GREATER_THAN) + src = op(VM.Opcodes.LESS_THAN) } if (type === "gt") { - src = op(VM.Opcodes.LESS_THAN) + src = op(VM.Opcodes.GREATER_THAN) } return { @@ -1110,10 +1110,10 @@ export class VM { src = op(VM.Opcodes.LESS_THAN) } if (type === "lt") { - src = op(VM.Opcodes.GREATER_THAN) + src = op(VM.Opcodes.LESS_THAN) } if (type === "gt") { - src = op(VM.Opcodes.LESS_THAN) + src = op(VM.Opcodes.GREATER_THAN) } return { From a25a209a71cf0dc1b5873cfe7b02977f29339863 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 27 Jul 2022 17:05:51 +0000 Subject: [PATCH 055/125] update --- docs/classes/betweenblocks.md | 12 +-- docs/classes/betweentimestamps.md | 12 +-- docs/classes/buyamount.md | 2 +- docs/classes/combinetiergenerator.md | 12 +-- docs/classes/combinetierjsvm.md | 6 +- docs/classes/combinetiersimulation.md | 16 ++-- docs/classes/emissionserc20jsvm.md | 6 +- docs/classes/emissionsmiulation.md | 22 ++--- docs/classes/humanfriendlyread.md | 2 +- docs/classes/matchmaker.md | 54 +++++------ docs/classes/orderbooksimulation.md | 48 +++++----- docs/classes/pricecurve.md | 4 +- docs/classes/rainjsvm.md | 16 ++-- docs/classes/salejsvm.md | 8 +- docs/classes/salesimulation.md | 18 ++-- docs/classes/vm.md | 14 +-- docs/classes/vmsimulation.md | 32 +++---- docs/index.md | 39 ++++---- docs/interfaces/bountyconfig.md | 39 -------- docs/interfaces/clearedcounterpartyfunds.md | 10 --- docs/interfaces/clearedfunds.md | 10 --- docs/interfaces/erc1155.md | 10 --- docs/interfaces/erc1155s.md | 10 --- docs/interfaces/erc20.md | 70 --------------- docs/interfaces/erc20s.md | 10 --- docs/interfaces/erc721.md | 10 --- docs/interfaces/erc721s.md | 10 --- docs/interfaces/{fnptrs.md => fnptrsjsvm.md} | 6 +- docs/interfaces/forcast.md | 10 --- docs/interfaces/iopmeta.md | 4 +- docs/interfaces/itiers.md | 10 --- docs/interfaces/{opfn.md => opjsvm.md} | 4 +- docs/interfaces/order.md | 94 -------------------- docs/interfaces/orders.md | 10 --- docs/interfaces/reservebook.md | 47 ++++++++++ docs/interfaces/sclearconfig.md | 83 +++++++++++++++++ docs/interfaces/sclearedcounterpartyfunds.md | 16 ++++ docs/interfaces/sclearedfunds.md | 17 ++++ docs/interfaces/serc1155.md | 35 ++++++++ docs/interfaces/serc1155s.md | 16 ++++ docs/interfaces/serc20.md | 61 +++++++++++++ docs/interfaces/serc20s.md | 16 ++++ docs/interfaces/serc721.md | 35 ++++++++ docs/interfaces/serc721s.md | 16 ++++ docs/interfaces/sitiers.md | 35 ++++++++ docs/interfaces/sorder.md | 72 +++++++++++++++ docs/interfaces/sorders.md | 16 ++++ docs/interfaces/ssnapshot.md | 47 ++++++++++ docs/interfaces/sstore.md | 21 +++++ docs/interfaces/statejsvm.md | 10 +-- docs/interfaces/svaults.md | 16 ++++ docs/interfaces/vaults.md | 10 --- docs/types/calloptions.md | 4 +- docs/types/sioconfig.md | 13 +++ docs/variables/max.md | 10 +++ docs/variables/min.md | 10 +++ src/classes/vm.ts | 60 ++++++++----- src/index.ts | 1 + src/jsvm/lib/Math.ts | 26 ++++++ src/jsvm/ops/math/OpMax.ts | 15 ++-- src/jsvm/ops/math/OpMin.ts | 15 ++-- 61 files changed, 838 insertions(+), 525 deletions(-) delete mode 100644 docs/interfaces/bountyconfig.md delete mode 100644 docs/interfaces/clearedcounterpartyfunds.md delete mode 100644 docs/interfaces/clearedfunds.md delete mode 100644 docs/interfaces/erc1155.md delete mode 100644 docs/interfaces/erc1155s.md delete mode 100644 docs/interfaces/erc20.md delete mode 100644 docs/interfaces/erc20s.md delete mode 100644 docs/interfaces/erc721.md delete mode 100644 docs/interfaces/erc721s.md rename docs/interfaces/{fnptrs.md => fnptrsjsvm.md} (62%) delete mode 100644 docs/interfaces/forcast.md delete mode 100644 docs/interfaces/itiers.md rename docs/interfaces/{opfn.md => opjsvm.md} (71%) delete mode 100644 docs/interfaces/order.md delete mode 100644 docs/interfaces/orders.md create mode 100644 docs/interfaces/reservebook.md create mode 100644 docs/interfaces/sclearconfig.md create mode 100644 docs/interfaces/sclearedcounterpartyfunds.md create mode 100644 docs/interfaces/sclearedfunds.md create mode 100644 docs/interfaces/serc1155.md create mode 100644 docs/interfaces/serc1155s.md create mode 100644 docs/interfaces/serc20.md create mode 100644 docs/interfaces/serc20s.md create mode 100644 docs/interfaces/serc721.md create mode 100644 docs/interfaces/serc721s.md create mode 100644 docs/interfaces/sitiers.md create mode 100644 docs/interfaces/sorder.md create mode 100644 docs/interfaces/sorders.md create mode 100644 docs/interfaces/ssnapshot.md create mode 100644 docs/interfaces/sstore.md create mode 100644 docs/interfaces/svaults.md delete mode 100644 docs/interfaces/vaults.md create mode 100644 docs/types/sioconfig.md create mode 100644 docs/variables/max.md create mode 100644 docs/variables/min.md create mode 100644 src/jsvm/lib/Math.ts diff --git a/docs/classes/betweenblocks.md b/docs/classes/betweenblocks.md index 1ed4e90..c3d1191 100644 --- a/docs/classes/betweenblocks.md +++ b/docs/classes/betweenblocks.md @@ -91,7 +91,7 @@ please note that this method should not be used with applyExtraTime as they are Signature: ```typescript -afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): this; +afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): BetweenBlocks; ``` #### Parameters @@ -103,9 +103,9 @@ afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): this; Returns: -`this` +`BetweenBlocks` -this +BetweenBlocks @@ -118,7 +118,7 @@ Method to apply extra time to the sale duration. if the extra time criteria whic Signature: ```typescript -applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDecimals?: number): this; +applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDecimals?: number): BetweenBlocks; ``` #### Parameters @@ -131,7 +131,7 @@ applyExtraTime(extraTimeBlocks: number, extraTimeAmount: number, reserveTokenDec Returns: -`this` +`BetweenBlocks` -this +BetweenBlocks diff --git a/docs/classes/betweentimestamps.md b/docs/classes/betweentimestamps.md index 50ece7b..ff543e8 100644 --- a/docs/classes/betweentimestamps.md +++ b/docs/classes/betweentimestamps.md @@ -91,7 +91,7 @@ please note that this method should not be used with applyExtraTime as they are Signature: ```typescript -afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): this; +afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): BetweenTimestamps; ``` #### Parameters @@ -103,9 +103,9 @@ afterMinimumRaise(minimumRaise: number, reserveTokenDecimals?: number): this; Returns: -`this` +`BetweenTimestamps` -this +BetweenTimestamps @@ -118,7 +118,7 @@ Method to apply extra time to the sale duration. if the extra time criteria whic Signature: ```typescript -applyExtraTime(extraTime: number, extraTimeAmount: number, reserveTokenDecimals?: number): this; +applyExtraTime(extraTime: number, extraTimeAmount: number, reserveTokenDecimals?: number): BetweenTimestamps; ``` #### Parameters @@ -131,7 +131,7 @@ applyExtraTime(extraTime: number, extraTimeAmount: number, reserveTokenDecimals? Returns: -`this` +`BetweenTimestamps` -this +BetweenTimestamps diff --git a/docs/classes/buyamount.md b/docs/classes/buyamount.md index ea69b0d..a93b654 100644 --- a/docs/classes/buyamount.md +++ b/docs/classes/buyamount.md @@ -87,5 +87,5 @@ applyWalletCap(mode: BuyCapMode, options?: { `BuyAmount` -this +BuyAmount diff --git a/docs/classes/combinetiergenerator.md b/docs/classes/combinetiergenerator.md index 8e431f9..bff3be8 100644 --- a/docs/classes/combinetiergenerator.md +++ b/docs/classes/combinetiergenerator.md @@ -79,7 +79,7 @@ combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectL `CombineTierGenerator` -this +CombineTierGenerator @@ -104,7 +104,7 @@ differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this; `this` -this +CombineTierGenerator @@ -115,20 +115,20 @@ Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of Signature: ```typescript -isTierHeldFor(duration: number | number[]): CombineTierGenerator; +isTierHeldFor(duration: number[]): CombineTierGenerator; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| duration | `number \| number[]` | A number or an array of numbers represting the duration in timestamp a given tier must be held to get ALWAYS report or else it gets NEVER report. | +| duration | `number[]` | An array of numbers represting the duration in timestamp a given tier must be held to get ALWAYS report or else it gets NEVER report. | Returns: `CombineTierGenerator` -this +CombineTierGenerator @@ -154,5 +154,5 @@ updateReport(startTier: Tier, endTier: Tier, number?: number): CombineTierGenera `CombineTierGenerator` -this +CombineTierGenerator diff --git a/docs/classes/combinetierjsvm.md b/docs/classes/combinetierjsvm.md index 3bc0ab3..8746f33 100644 --- a/docs/classes/combinetierjsvm.md +++ b/docs/classes/combinetierjsvm.md @@ -13,19 +13,19 @@ class CombineTierJSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextLength](./combinetierjsvm.md#ContextLength-property) | `number` | CombineTierJSVM can have any length for context | | [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval

*Inherited from [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | | [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-property)* | -| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | | [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJSVM.lastState](./rainjsvm.md#lastState-property)* | | [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode

*Inherited from [RainJSVM.self](./rainjsvm.md#self-property)* | | [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJSVM.signer](./rainjsvm.md#signer-property)* | | [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.stack](./rainjsvm.md#stack-property)* | | [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` |

*Inherited from [RainJSVM.storage](./rainjsvm.md#storage-property)* | -| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes)

*Inherited from [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | +| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes)

*Inherited from [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | | [StorageRange](./combinetierjsvm.md#StorageRange-property) | `` | CombineTierJSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | diff --git a/docs/classes/combinetiersimulation.md b/docs/classes/combinetiersimulation.md index 65b5ac5..6b36129 100644 --- a/docs/classes/combinetiersimulation.md +++ b/docs/classes/combinetiersimulation.md @@ -17,12 +17,12 @@ class CombinetierSimulation extends vmSimulation | --- | --- | --- | | [address](./combinetiersimulation.md#address-property) | `string` | The CombineTier address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | -| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [report](./combinetiersimulation.md#report-property) |
{
    [wallet: string]: BigNumber;
}
| The report of each account which is compatible and can be stored in | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [report](./combinetiersimulation.md#report-property) | [SStore](../interfaces/sstore.md) | The report of each account which is compatible and can be stored in | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | @@ -64,9 +64,7 @@ The report of each account which is compatible and can be stored in Signature: ```typescript -report: { - [wallet: string]: BigNumber; - }; +report: SStore; ``` ## Method Details diff --git a/docs/classes/emissionserc20jsvm.md b/docs/classes/emissionserc20jsvm.md index deb26f8..2f75564 100644 --- a/docs/classes/emissionserc20jsvm.md +++ b/docs/classes/emissionserc20jsvm.md @@ -13,19 +13,19 @@ class EmissionsERC20JSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextLength](./emissionserc20jsvm.md#ContextLength-property) | `` | EmissionsERC20JSVM valid context length | | [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval

*Inherited from [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | | [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-property)* | -| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | | [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJSVM.lastState](./rainjsvm.md#lastState-property)* | | [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode

*Inherited from [RainJSVM.self](./rainjsvm.md#self-property)* | | [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJSVM.signer](./rainjsvm.md#signer-property)* | | [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.stack](./rainjsvm.md#stack-property)* | | [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` |

*Inherited from [RainJSVM.storage](./rainjsvm.md#storage-property)* | -| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes)

*Inherited from [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | +| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes)

*Inherited from [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | | [StorageRange](./emissionserc20jsvm.md#StorageRange-property) | `` | EmissionsERC20JSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | diff --git a/docs/classes/emissionsmiulation.md b/docs/classes/emissionsmiulation.md index 41bfdad..2bfd9f5 100644 --- a/docs/classes/emissionsmiulation.md +++ b/docs/classes/emissionsmiulation.md @@ -16,15 +16,15 @@ class EmissionSmiulation extends vmSimulation | Property | Type | Description | | --- | --- | --- | | [address](./emissionsmiulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | -| [balanceOf](./emissionsmiulation.md#balanceOf-property) |
{
    [wallet: string]: BigNumber;
}
| The balance of emission token holders which is compatible with | +| [balanceOf](./emissionsmiulation.md#balanceOf-property) | [SStore](../interfaces/sstore.md) | The balance of emission token holders which is compatible with | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | | [decimals](./emissionsmiulation.md#decimals-property) | `number` | The decimals value of the emissions token which is 18 | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | -| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [report](./emissionsmiulation.md#report-property) |
{
    [wallet: string]: BigNumber;
}
| The report of each claimant which is compatible and can be stored in | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [report](./emissionsmiulation.md#report-property) | [SStore](../interfaces/sstore.md) | The report of each claimant which is compatible and can be stored in | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./emissionsmiulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | @@ -68,9 +68,7 @@ The balance of emission token holders which is compatible with Signature: ```typescript -balanceOf: { - [wallet: string]: BigNumber; - }; +balanceOf: SStore; ``` @@ -94,9 +92,7 @@ The report of each claimant which is compatible and can be stored in Signature: ```typescript -report: { - [wallet: string]: BigNumber; - }; +report: SStore; ``` diff --git a/docs/classes/humanfriendlyread.md b/docs/classes/humanfriendlyread.md index 4998eae..4934a83 100644 --- a/docs/classes/humanfriendlyread.md +++ b/docs/classes/humanfriendlyread.md @@ -1,7 +1,7 @@ # Class HumanFriendlyRead -The generator of friendly human readable source. +The generator of human friendly readable source. Parse an State/Script to a more human readable form, making easier to understand. This form allow to the users read exactly what the Script is made for, like the conditions, values used, etc. Also, anyone can learn to write their own scripts if use the Human Form to see the output for each combination that they made. diff --git a/docs/classes/matchmaker.md b/docs/classes/matchmaker.md index 90c8a0d..15d2bc2 100644 --- a/docs/classes/matchmaker.md +++ b/docs/classes/matchmaker.md @@ -15,20 +15,20 @@ class MatchMaker extends OrderbookSimulation | --- | --- | --- | | [address](./orderbooksimulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Inherited from [OrderbookSimulation.address](./orderbooksimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [clearedCounterPartyFunds](../interfaces/clearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string

*Inherited from [OrderbookSimulation.clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property)* | -| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [clearedFunds](../interfaces/clearedfunds.md) | The property that stores all the data of an order's total cleared amount,

*Inherited from [OrderbookSimulation.clearedFunds](./orderbooksimulation.md#clearedFunds-property)* | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [SClearedCounterPartyFunds](../interfaces/sclearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string

*Inherited from [OrderbookSimulation.clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property)* | +| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [SClearedFunds](../interfaces/sclearedfunds.md) | The property that stores all the data of an order's total cleared amount,

*Inherited from [OrderbookSimulation.clearedFunds](./orderbooksimulation.md#clearedFunds-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | | [foundMatches](./matchmaker.md#foundMatches-property) |
{
    orderA: string;
    orderB: string;
}[]
| The type of stores all the found matches | -| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | -| [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Inherited from [OrderbookSimulation.OpFns](./orderbooksimulation.md#OpFns-property)* | -| [orderForcast](./matchmaker.md#orderForcast-property) | [forcast](../interfaces/forcast.md) | The forcast property of the matchmaker | -| [orders](./orderbooksimulation.md#orders-property) | [orders](../interfaces/orders.md) | The property that stores all the data of the class's orders,

*Inherited from [OrderbookSimulation.orders](./orderbooksimulation.md#orders-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Inherited from [OrderbookSimulation.OpFns](./orderbooksimulation.md#OpFns-property)* | +| [orders](./orderbooksimulation.md#orders-property) | [SOrders](../interfaces/sorders.md) | The property that stores all the data of the class's orders,

*Inherited from [OrderbookSimulation.orders](./orderbooksimulation.md#orders-property)* | +| [reservebook](./matchmaker.md#reservebook-property) | [ReserveBook](../interfaces/reservebook.md) | The ReserveBook property of the matchmaker | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./orderbooksimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [OrderbookSimulation.sender](./orderbooksimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | -| [vaults](./orderbooksimulation.md#vaults-property) | [vaults](../interfaces/vaults.md) | The property that stores all the data of the class's vaults

*Inherited from [OrderbookSimulation.vaults](./orderbooksimulation.md#vaults-property)* | +| [vaults](./orderbooksimulation.md#vaults-property) | [SVaults](../interfaces/svaults.md) | The property that stores all the data of the class's vaults

*Inherited from [OrderbookSimulation.vaults](./orderbooksimulation.md#vaults-property)* | ## Methods @@ -37,10 +37,10 @@ class MatchMaker extends OrderbookSimulation | [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | | [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | | [addOrder(order)](./matchmaker.md#addOrder-method-1) | Method that inherits from the parent class addOrder and after perfroming that will execute orderEval method

*Overrides [OrderbookSimulation.addOrder()](./orderbooksimulation.md#addOrder-method-1)* | -| [clear(a, b, bountyConfig, timestamp, blockNumber)](./orderbooksimulation.md#clear-method-1) | Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class

*Inherited from [OrderbookSimulation.clear()](./orderbooksimulation.md#clear-method-1)* | +| [clear(a, b, clearConfig, timestamp, blockNumber)](./orderbooksimulation.md#clear-method-1) | Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class

*Inherited from [OrderbookSimulation.clear()](./orderbooksimulation.md#clear-method-1)* | | [deposit(sender, tokenAddress, vaultId, units, tokenDecimals)](./orderbooksimulation.md#deposit-method-1) | Method to dposit some units of token of tokenAddress into the vaultId of the sender

*Inherited from [OrderbookSimulation.deposit()](./orderbooksimulation.md#deposit-method-1)* | -| [makeMatch(bountyConfig)](./matchmaker.md#makeMatch-method-1) | The main method to perform matchmaking and find matches among orders | -| [orderEval(order, timestamp, blockNumber)](./matchmaker.md#orderEval-method-1) | Method to evaluate and forcast the order's script | +| [makeMatch(bounty)](./matchmaker.md#makeMatch-method-1) | The main method to perform matchmaking and find matches among orders | +| [orderEval(order, timestamp, blockNumber)](./matchmaker.md#orderEval-method-1) | Method to evaluate and ReserveBook the order's script | | [removeOrder(order)](./orderbooksimulation.md#removeOrder-method-1) | Method to remove an order from the class's orders

*Inherited from [OrderbookSimulation.removeOrder()](./orderbooksimulation.md#removeOrder-method-1)* | | [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | | [setContractAddress(contractAddress)](./vmsimulation.md#setContractAddress-method-1) | Method to set the class address property

*Inherited from [vmSimulation.setContractAddress()](./vmsimulation.md#setContractAddress-method-1)* | @@ -65,16 +65,16 @@ foundMatches: { }[]; ``` - + -### orderForcast +### reservebook -The forcast property of the matchmaker +The ReserveBook property of the matchmaker Signature: ```typescript -orderForcast: forcast; +reservebook: ReserveBook; ``` ## Method Details @@ -90,14 +90,14 @@ Method that inherits from the parent class addOrder and after perfroming that wi Signature: ```typescript -addOrder(order: order): Promise; +addOrder(order: SOrder): Promise; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | [order](../interfaces/order.md) | the order to be added | +| order | [SOrder](../interfaces/sorder.md) | the order to be added | Returns: @@ -107,14 +107,17 @@ void -### makeMatch(bountyConfig) +### makeMatch(bounty) The main method to perform matchmaking and find matches among orders Signature: ```typescript -makeMatch(bountyConfig: bountyConfig): Promise<{ +makeMatch(bounty: { + aBounty: string; + bBounty: string; + }): Promise<{ orderA: string; orderB: string; }[]>; @@ -124,7 +127,7 @@ makeMatch(bountyConfig: bountyConfig): Promise<{ | Parameter | Type | Description | | --- | --- | --- | -| bountyConfig | [bountyConfig](../interfaces/bountyconfig.md) | the BountyConfig of this matchmaker class | +| bounty |
{
    aBounty: string;
    bBounty: string;
}
| the Bounty Vault IDs | Returns: @@ -133,24 +136,23 @@ makeMatch(bountyConfig: bountyConfig): Promise<{ orderB: string; }[]>` - ### orderEval(order, timestamp, blockNumber) -Method to evaluate and forcast the order's script +Method to evaluate and ReserveBook the order's script Signature: ```typescript -orderEval(order: order, timestamp?: number, blockNumber?: number): Promise; +orderEval(order: SOrder, timestamp?: number, blockNumber?: number): Promise; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | [order](../interfaces/order.md) | the order to be evaluated | +| order | [SOrder](../interfaces/sorder.md) | the order to be evaluated | | timestamp | `number` | | | blockNumber | `number` | | diff --git a/docs/classes/orderbooksimulation.md b/docs/classes/orderbooksimulation.md index 3428213..82854fd 100644 --- a/docs/classes/orderbooksimulation.md +++ b/docs/classes/orderbooksimulation.md @@ -15,18 +15,18 @@ class OrderbookSimulation extends vmSimulation | --- | --- | --- | | [address](./orderbooksimulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [clearedCounterPartyFunds](../interfaces/clearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string | -| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [clearedFunds](../interfaces/clearedfunds.md) | The property that stores all the data of an order's total cleared amount, | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | -| [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Overrides [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [orders](./orderbooksimulation.md#orders-property) | [orders](../interfaces/orders.md) | The property that stores all the data of the class's orders, | +| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [SClearedCounterPartyFunds](../interfaces/sclearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string | +| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [SClearedFunds](../interfaces/sclearedfunds.md) | The property that stores all the data of an order's total cleared amount, | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Overrides [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [orders](./orderbooksimulation.md#orders-property) | [SOrders](../interfaces/sorders.md) | The property that stores all the data of the class's orders, | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./orderbooksimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | -| [vaults](./orderbooksimulation.md#vaults-property) | [vaults](../interfaces/vaults.md) | The property that stores all the data of the class's vaults | +| [vaults](./orderbooksimulation.md#vaults-property) | [SVaults](../interfaces/svaults.md) | The property that stores all the data of the class's vaults | ## Methods @@ -35,7 +35,7 @@ class OrderbookSimulation extends vmSimulation | [addAssets(erc20s, erc721s, erc1155s)](./vmsimulation.md#addAssets-method-1) | Method to add assets i.e erc20/721/1155 types objects

*Inherited from [vmSimulation.addAssets()](./vmsimulation.md#addAssets-method-1)* | | [addITiers(iTiers)](./vmsimulation.md#addITiers-method-1) | Method to add tier contract types objects to the class (iTiers)

*Inherited from [vmSimulation.addITiers()](./vmsimulation.md#addITiers-method-1)* | | [addOrder(order)](./orderbooksimulation.md#addOrder-method-1) | Method to submit an order into the class orders | -| [clear(a, b, bountyConfig, timestamp, blockNumber)](./orderbooksimulation.md#clear-method-1) | Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class | +| [clear(a, b, clearConfig, timestamp, blockNumber)](./orderbooksimulation.md#clear-method-1) | Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class | | [deposit(sender, tokenAddress, vaultId, units, tokenDecimals)](./orderbooksimulation.md#deposit-method-1) | Method to dposit some units of token of tokenAddress into the vaultId of the sender | | [removeOrder(order)](./orderbooksimulation.md#removeOrder-method-1) | Method to remove an order from the class's orders | | [runScript(data, index)](./vmsimulation.md#runScript-method-1) | Method to run the script using JSVM

*Inherited from [vmSimulation.runScript()](./vmsimulation.md#runScript-method-1)* | @@ -69,7 +69,7 @@ The property that stores all the data of an order's total cleared amount to a sp Signature: ```typescript -clearedCounterPartyFunds: clearedCounterPartyFunds; +clearedCounterPartyFunds: SClearedCounterPartyFunds; ``` @@ -81,7 +81,7 @@ The property that stores all the data of an order's total cleared amount, Signature: ```typescript -clearedFunds: clearedFunds; +clearedFunds: SClearedFunds; ``` @@ -95,7 +95,7 @@ Local Orderbook Opcodes' functions body for simulation that uses the class prope Signature: ```typescript -protected OpFns: FnPtrs; +protected OpFns: FnPtrsJSVM; ``` @@ -107,7 +107,7 @@ The property that stores all the data of the class's orders, Signature: ```typescript -orders: orders; +orders: SOrders; ``` @@ -133,7 +133,7 @@ The property that stores all the data of the class's vaults Signature: ```typescript -vaults: vaults; +vaults: SVaults; ``` ## Method Details @@ -147,14 +147,14 @@ Method to submit an order into the class orders Signature: ```typescript -addOrder(order: order): void; +addOrder(order: SOrder): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | [order](../interfaces/order.md) | the order to add | +| order | [SOrder](../interfaces/sorder.md) | the order to add | Returns: @@ -164,23 +164,23 @@ void -### clear(a, b, bountyConfig, timestamp, blockNumber) +### clear(a, b, clearConfig, timestamp, blockNumber) Method to perform the clear by JSVM for this simulation which will update all the present storage/types of the the class Signature: ```typescript -clear(a: order, b: order, bountyConfig: bountyConfig, timestamp?: number, blockNumber?: number): Promise; +clear(a: SOrder, b: SOrder, clearConfig: SClearConfig, timestamp?: number, blockNumber?: number): Promise; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| a | [order](../interfaces/order.md) | order A to clear | -| b | [order](../interfaces/order.md) | order B to clear | -| bountyConfig | [bountyConfig](../interfaces/bountyconfig.md) | the BountyConfig type to collect bounties of this clear | +| a | [SOrder](../interfaces/sorder.md) | order A to clear | +| b | [SOrder](../interfaces/sorder.md) | order B to clear | +| clearConfig | [SClearConfig](../interfaces/sclearconfig.md) | the BountyConfig type to collect bounties of this clear | | timestamp | `number` | (optional) custom timestamp to be used when running the script | | blockNumber | `number` | (optional) custom block number to be used when running the script | @@ -227,14 +227,14 @@ Method to remove an order from the class's orders Signature: ```typescript -removeOrder(order: order | string): void; +removeOrder(order: SOrder | string): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | `order \| string` | the order to remove | +| order | `SOrder \| string` | the order to remove | Returns: diff --git a/docs/classes/pricecurve.md b/docs/classes/pricecurve.md index 707965f..228d488 100644 --- a/docs/classes/pricecurve.md +++ b/docs/classes/pricecurve.md @@ -75,7 +75,7 @@ applyExtraTimeDiscount(endTimestamp: number, extraTimeDiscountThreshold: number, `PriceCurve` -this +PriceCurve @@ -104,5 +104,5 @@ applyTierDiscount(tierAddress: string, tierDiscount: number[], options?: { `PriceCurve` -this +PriceCurve diff --git a/docs/classes/rainjsvm.md b/docs/classes/rainjsvm.md index 393e451..7931c21 100644 --- a/docs/classes/rainjsvm.md +++ b/docs/classes/rainjsvm.md @@ -13,18 +13,18 @@ class RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created. | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created. | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` | | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` | | | [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval | | [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | | -| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | key/value pair of opcodes and their functions for all standard opcodes | | [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs. | | [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode | | [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer. | | [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` | | | [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` | | -| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes) | +| [StorageOps](./rainjsvm.md#StorageOps-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Object that contains the STORAGE opcode functions (i.e. local opcodes) | | [StorageRange](./rainjsvm.md#StorageRange-property) | `number` | Range of available storage variables accessible by eval | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | | @@ -53,7 +53,7 @@ It is a property for overriding the opcodes. Need to ba passed at the time of co Signature: ```typescript -readonly applyOpFn?: FnPtrs; +readonly applyOpFn?: FnPtrsJSVM; ``` @@ -109,7 +109,7 @@ key/value pair of opcodes and their functions for all standard opcodes Signature: ```typescript -protected readonly fnPtrs: FnPtrs; +protected readonly fnPtrs: FnPtrsJSVM; ``` @@ -179,7 +179,7 @@ Object that contains the STORAGE opcode functions (i.e. local opcodes) Signature: ```typescript -protected readonly StorageOps?: FnPtrs; +protected readonly StorageOps?: FnPtrsJSVM; ``` @@ -213,7 +213,7 @@ get zipmap(): (operand: number, data?: any) => Promise; Signature: ```typescript -static opsFromOpMeta(_opmeta: Map): FnPtrs; +static opsFromOpMeta(_opmeta: Map): FnPtrsJSVM; ``` #### Parameters @@ -224,7 +224,7 @@ static opsFromOpMeta(_opmeta: Map): FnPt Returns: -`FnPtrs` +`FnPtrsJSVM` ## Method Details diff --git a/docs/classes/salejsvm.md b/docs/classes/salejsvm.md index 0f594bd..569dbc2 100644 --- a/docs/classes/salejsvm.md +++ b/docs/classes/salejsvm.md @@ -13,18 +13,18 @@ class SaleJSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrs](../interfaces/fnptrs.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextRange](./salejsvm.md#ContextRange-property) | `` | SaleJSVM valid context length

*Overrides [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | | [debug](./rainjsvm.md#debug-property) | `(operand: number, data?: any) => void` | *Inherited from [RainJSVM.debug](./rainjsvm.md#debug-property)* | -| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | +| [fnPtrs](./rainjsvm.md#fnPtrs-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | key/value pair of opcodes and their functions for all standard opcodes

*Inherited from [RainJSVM.fnPtrs](./rainjsvm.md#fnPtrs-property)* | | [lastState](./rainjsvm.md#lastState-property) | `BigNumber[]` | The result state of the executed Rainjs.

*Inherited from [RainJSVM.lastState](./rainjsvm.md#lastState-property)* | | [self](./rainjsvm.md#self-property) | `string` | The contract address of the instance of this class used for THIS\_ADDRESS opcode

*Inherited from [RainJSVM.self](./rainjsvm.md#self-property)* | | [signer](./rainjsvm.md#signer-property) | `Signer` | An ethers Signer.

*Inherited from [RainJSVM.signer](./rainjsvm.md#signer-property)* | | [stack](./rainjsvm.md#stack-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.stack](./rainjsvm.md#stack-property)* | | [storage](./rainjsvm.md#storage-property) | `(operand: number, data?: any) => Promise` |

*Inherited from [RainJSVM.storage](./rainjsvm.md#storage-property)* | -| [StorageOps](./salejsvm.md#StorageOps-property) | [FnPtrs](../interfaces/fnptrs.md) | key/value pair of STORAGE opcodes of the sale JSVM

*Overrides [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | +| [StorageOps](./salejsvm.md#StorageOps-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | key/value pair of STORAGE opcodes of the sale JSVM

*Overrides [RainJSVM.StorageOps](./rainjsvm.md#StorageOps-property)* | | [StorageRange](./salejsvm.md#StorageRange-property) | `` | SaleJSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | @@ -69,7 +69,7 @@ key/value pair of STORAGE opcodes of the sale JSVM Signature: ```typescript -protected readonly StorageOps: FnPtrs; +protected readonly StorageOps: FnPtrsJSVM; ``` diff --git a/docs/classes/salesimulation.md b/docs/classes/salesimulation.md index beb4935..932c940 100644 --- a/docs/classes/salesimulation.md +++ b/docs/classes/salesimulation.md @@ -15,17 +15,17 @@ class SaleSimulation extends vmSimulation | --- | --- | --- | | [address](./salesimulation.md#address-property) | `string` | The sale address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | -| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [reserve](./salesimulation.md#reserve-property) | [erc20](../interfaces/erc20.md) | The reserve token of this sale as an erc20 type object | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | +| [reserve](./salesimulation.md#reserve-property) | [SERC20](../interfaces/serc20.md) | The reserve token of this sale as an erc20 type object | | [reserveAddress](./salesimulation.md#reserveAddress-property) | `string` | The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | -| [token](./salesimulation.md#token-property) | [erc20](../interfaces/erc20.md) | The reedeemable token of this sale i.e rTKN which needs to a string number or hex string | +| [token](./salesimulation.md#token-property) | [SERC20](../interfaces/serc20.md) | The reedeemable token of this sale i.e rTKN which needs to a string number or hex string | | [tokenAddress](./salesimulation.md#tokenAddress-property) | `string` | The reserve token addres of this sale as an erc20 type object | ## Methods @@ -67,7 +67,7 @@ The reserve token of this sale as an erc20 type object Signature: ```typescript -reserve: erc20; +reserve: SERC20; ``` @@ -91,7 +91,7 @@ The reedeemable token of this sale i.e rTKN which needs to a string number or he Signature: ```typescript -token: erc20; +token: SERC20; ``` diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 53aa468..baf4f66 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -38,10 +38,10 @@ class VM | [lte(config1, config2)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | | [max(configs)](./vm.md#max-method-static-1) | Method to get maximum of multiple scripts | | [min(configs)](./vm.md#min-method-static-1) | Method to get minimum of multiple scripts | -| [multi(configs)](./vm.md#multi-method-static-1) | A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. | +| [multi(configs, stackReassignment)](./vm.md#multi-method-static-1) | A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. | | [mulTogether(configs)](./vm.md#mulTogether-method-static-1) | Method to multiply multiple scripts together | | [or(configs)](./vm.md#or-method-static-1) | Method to or multiple scripts together ie ANY | -| [pair(amountConfig, priceConfig)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | +| [pair(amountConfig, priceConfig, stackReassignment)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | | [setDiscountForTiers(config, tierAddress, tierDiscount, options)](./vm.md#setDiscountForTiers-method-static-1) | Deducts percentage off of the result of a VM script based on a tier contract. | | [setMultiplierForTiers(config, tierAddress, tierMultiplier, options)](./vm.md#setMultiplierForTiers-method-static-1) | Multiply the result of a VM script based on a tier contract. | | [setOwnership(config, ownerAddress, options)](./vm.md#setOwnership-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | @@ -542,14 +542,14 @@ a -### multi(configs) +### multi(configs, stackReassignment) A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. Signature: ```typescript -static multi(configs: StateConfig[]): StateConfig; +static multi(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -557,6 +557,7 @@ static multi(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | An array of StateConfigs to combine together and its lengths should be more than 2 (can use VM.pair() method for combining 2 configs - | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -614,14 +615,14 @@ a -### pair(amountConfig, priceConfig) +### pair(amountConfig, priceConfig, stackReassignment) method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc Signature: ```typescript -static pair(amountConfig: StateConfig, priceConfig: StateConfig): StateConfig; +static pair(amountConfig: StateConfig, priceConfig: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -630,6 +631,7 @@ static pair(amountConfig: StateConfig, priceConfig: StateConfig): StateConfig; | --- | --- | --- | | amountConfig | [StateConfig](../interfaces/stateconfig.md) | amount's StateConfig, the config sitting at top and returning the first value | | priceConfig | [StateConfig](../interfaces/stateconfig.md) | price's StateConfig, the config sitting at bottom and returning the second value | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (other scripts that are being combined) this way the STACK opcode operand will stay untouched when scripts combine | Returns: diff --git a/docs/classes/vmsimulation.md b/docs/classes/vmsimulation.md index cddf92a..adc3b9a 100644 --- a/docs/classes/vmsimulation.md +++ b/docs/classes/vmsimulation.md @@ -15,11 +15,11 @@ class vmSimulation | --- | --- | --- | | [address](./vmsimulation.md#address-property) | `string` | The contract address of this simulation that the simulation is done for. this is needed for THIS\_ADDRESS opcode simulation and updating storage types after method calls, and needs to be a string number or hex string. | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [erc1155s](../interfaces/erc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes | -| [erc20s](./vmsimulation.md#erc20s-property) | [erc20s](../interfaces/erc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes | -| [erc721s](./vmsimulation.md#erc721s-property) | [erc721s](../interfaces/erc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes | -| [iTiers](./vmsimulation.md#iTiers-property) | [itiers](../interfaces/itiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes. | -| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrs](../interfaces/fnptrs.md) | Opcodes functions body for simulation that use the class properties/types. | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes | +| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes | +| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes | +| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes. | +| [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types. | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate | | [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string. | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime | @@ -70,7 +70,7 @@ A property of type erc1155s that act like a storage for simulation and stores th Signature: ```typescript -erc1155s: erc1155s; +erc1155s: SERC1155s; ``` @@ -82,7 +82,7 @@ A property of type erc20s that act like a storage for simulation and stores the Signature: ```typescript -erc20s: erc20s; +erc20s: SERC20s; ``` @@ -94,7 +94,7 @@ A property of type erc721s that act like a storage for simulation and stores the Signature: ```typescript -erc721s: erc721s; +erc721s: SERC721s; ``` @@ -106,7 +106,7 @@ A property of type itiers that act like a storage for simulation of Rain tier co Signature: ```typescript -iTiers: itiers; +iTiers: SITiers; ``` @@ -118,7 +118,7 @@ Opcodes functions body for simulation that use the class properties/types. Signature: ```typescript -protected OpFns: FnPtrs; +protected OpFns: FnPtrsJSVM; ``` @@ -168,16 +168,16 @@ Method to add assets i.e erc20/721/1155 types objects Signature: ```typescript -addAssets(erc20s?: erc20s, erc721s?: erc721s, erc1155s?: erc1155s): void; +addAssets(erc20s?: SERC20s, erc721s?: SERC721s, erc1155s?: SERC1155s): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| erc20s | [erc20s](../interfaces/erc20s.md) | An object of type erc20s | -| erc721s | [erc721s](../interfaces/erc721s.md) | An object of type erc721s | -| erc1155s | [erc1155s](../interfaces/erc1155s.md) | An object of type erc1155s | +| erc20s | [SERC20s](../interfaces/serc20s.md) | An object of type erc20s | +| erc721s | [SERC721s](../interfaces/serc721s.md) | An object of type erc721s | +| erc1155s | [SERC1155s](../interfaces/serc1155s.md) | An object of type erc1155s | Returns: @@ -192,14 +192,14 @@ Method to add tier contract types objects to the class (iTiers) Signature: ```typescript -addITiers(iTiers: itiers): void; +addITiers(iTiers: SITiers): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| iTiers | [itiers](../interfaces/itiers.md) | An Object of itiers type | +| iTiers | [SITiers](../interfaces/sitiers.md) | An Object of itiers type | Returns: diff --git a/docs/index.md b/docs/index.md index a5c5865..7943188 100644 --- a/docs/index.md +++ b/docs/index.md @@ -26,7 +26,7 @@ | [ERC721BalanceTier](./classes/erc721balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC721BalancTier in RainVM version 1.0 | | [FactoryContract](./classes/factorycontract.md) | All contract factory should use this instead of directly Rain contract to take advantage of specific method to factories | | [FixedPrice](./classes/fixedprice.md) | - A sub-class of PriceCurve for creating a Fixed Price sale type. The price is a constant value over the span of the sale. | -| [HumanFriendlyRead](./classes/humanfriendlyread.md) | The generator of friendly human readable source. | +| [HumanFriendlyRead](./classes/humanfriendlyread.md) | The generator of human friendly readable source. | | [IncDecPrice](./classes/incdecprice.md) | - A sub-class of PriceCurve for creating an linear Increasing or Decreasing sale type. | | [ITierV2](./classes/itierv2.md) | Class to interact with any Rain Tier contract i.e ITierV2 contracts | | [LinearEmissions](./classes/linearemissions.md) | A linear minting emissions over a period of time. holding more before claiming would result in a more reward. | @@ -121,38 +121,40 @@ | Interface | Description | | --- | --- | -| [bountyConfig](./interfaces/bountyconfig.md) | type for bounty config | | [BuyConfig](./interfaces/buyconfig.md) | The configuration that is need it to buy in the sale | -| [clearedCounterPartyFunds](./interfaces/clearedcounterpartyfunds.md) | type for simulating and storing matched order counterparty cleared funds | -| [clearedFunds](./interfaces/clearedfunds.md) | type for simulating and storing matched order cleared funds | | [EmissionsERC20DeployArgs](./interfaces/emissionserc20deployargs.md) | Everything required by the `EmissionsERC20` constructor. | -| [erc1155](./interfaces/erc1155.md) | type for simulating and storing ERC1155 contract data | -| [erc1155s](./interfaces/erc1155s.md) | type for simulating and storing multiple ERC1155 tokens | -| [erc20](./interfaces/erc20.md) | type for simulating and storing ERC20token contract data | | [ERC20Config](./interfaces/erc20config.md) | Constructor config for standard Open Zeppelin ERC20. | -| [erc20s](./interfaces/erc20s.md) | type for simulating and storing multiple ERC20 tokens | -| [erc721](./interfaces/erc721.md) | type for simulating and storing ERC721 contract data | -| [erc721s](./interfaces/erc721s.md) | type for simulating and storing multiple ERC721 tokens | | [Evidence](./interfaces/evidence.md) | Structure of arbitrary evidence to support any action taken. Priviledged roles are expected to provide evidence just as applicants as an audit trail will be preserved permanently in the logs. | -| [FnPtrs](./interfaces/fnptrs.md) | An interface for creating a key/value pair of opcodes functions to override. | -| [forcast](./interfaces/forcast.md) | Interface for matchmaker forcasting a script | +| [FnPtrsJSVM](./interfaces/fnptrsjsvm.md) | An interface for creating a key/value pair of opcodes functions to override. | | [IOpMeta](./interfaces/iopmeta.md) | | -| [itiers](./interfaces/itiers.md) | type for simulating and storing ITier contract data | | [NoticeStruct](./interfaces/noticestruct.md) | | -| [OpFn](./interfaces/opfn.md) | An interface/type of JSVM opcodes' function's body | -| [order](./interfaces/order.md) | type for simulating and storing orderbook Order data | -| [orders](./interfaces/orders.md) | type for simulating and storing multiple orderbook Orders | +| [OpJSVM](./interfaces/opjsvm.md) | An interface/type of JSVM opcodes' function's body | | [ReadTxOverrides](./interfaces/readtxoverrides.md) | More read about `ReadTxOverrides` that comes from CallOverrides of ethers | | [Receipt](./interfaces/receipt.md) | The receipt that contain the information of the buy | | [RedeemableERC20DeployArgs](./interfaces/redeemableerc20deployargs.md) | Everything required by the `RedeemableERC20` constructor. | +| [ReserveBook](./interfaces/reservebook.md) | Interface for matchmaker forcasting a script | | [SaleConfig](./interfaces/saleconfig.md) | The configuration of the sale | | [SaleDeployArguments](./interfaces/saledeployarguments.md) | Arguments to deploy/create a new Sale | | [SaleRedeemableERC20Config](./interfaces/saleredeemableerc20config.md) | Configuration that will have the Redeemable of the Sale | +| [SClearConfig](./interfaces/sclearconfig.md) | type for bounty config | +| [SClearedCounterPartyFunds](./interfaces/sclearedcounterpartyfunds.md) | type for simulating and storing matched order counterparty cleared funds | +| [SClearedFunds](./interfaces/sclearedfunds.md) | type for simulating and storing matched order cleared funds | +| [SERC1155](./interfaces/serc1155.md) | type for simulating and storing ERC1155 contract data | +| [SERC1155s](./interfaces/serc1155s.md) | type for simulating and storing multiple ERC1155 tokens | +| [SERC20](./interfaces/serc20.md) | type for simulating and storing ERC20token contract data | +| [SERC20s](./interfaces/serc20s.md) | type for simulating and storing multiple ERC20 tokens | +| [SERC721](./interfaces/serc721.md) | type for simulating and storing ERC721 contract data | +| [SERC721s](./interfaces/serc721s.md) | type for simulating and storing multiple ERC721 tokens | +| [SITiers](./interfaces/sitiers.md) | type for simulating and storing ITier contract data | +| [SOrder](./interfaces/sorder.md) | type for simulating and storing orderbook Order data | +| [SOrders](./interfaces/sorders.md) | type for simulating and storing multiple orderbook Orders | +| [SSnapshot](./interfaces/ssnapshot.md) | type for SimERC20 with snapshots | +| [SStore](./interfaces/sstore.md) | A simple key/value pair object used as storage in simulation classes to store the required data | | [StateConfig](./interfaces/stateconfig.md) | Config required to build a new `State`. | | [StateJSVM](./interfaces/statejsvm.md) | - An interface, StateJS is basically javascript version of 'State' struct in RainVM, although it doesn't need stackLength and argumentsLength to operate. It receives a regular RainVM in the constructor and initiates the stack for it and all opcodes do their operations to the stack. | | [StorageOpcodesRange](./interfaces/storageopcodesrange.md) | Interface for accessible by vm storage's slots range available for a contract to be used as local opcodes. | +| [SVaults](./interfaces/svaults.md) | type for simulating and storing orderbook Vaults data | | [TxOverrides](./interfaces/txoverrides.md) | More read about `TxOverrides` that comes from Overrides of ethers | -| [vaults](./interfaces/vaults.md) | type for simulating and storing orderbook Vaults data | | [VerifyDeployArgs](./interfaces/verifydeployargs.md) | Config to initialize a Verify contract with. | | [VerifyState](./interfaces/verifystate.md) | Records the block a verify session reaches each status. If a status is not reached it is left as UNINITIALIZED, i.e. 0xFFFFFFFF. Most accounts will never be banned so most accounts will never reach every status, which is a good thing. | @@ -169,6 +171,8 @@ | [eighteenZeros](./variables/eighteenzeros.md) | 18 decimals or i.e "DECIMALS" - used for fixed point match | | [fixedPointDiv](./variables/fixedpointdiv.md) | | | [fixedPointMul](./variables/fixedpointmul.md) | | +| [max](./variables/max.md) | calculate the maximum among array of BigNumbers | +| [min](./variables/min.md) | calculate the minimum among array of BigNumbers | | [OpMeta](./variables/opmeta.md) | | | [pnp](./variables/pnp.md) | Class for Opcodes number of stack pushes and pops | | [saturatingAdd](./variables/saturatingadd.md) | | @@ -201,6 +205,7 @@ | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | | [PrettifyConfig](./types/prettifyconfig.md) | Specific the configuration of the Prettify method. | +| [SIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | | [TimeBoundConfig](./types/timeboundconfig.md) | | diff --git a/docs/interfaces/bountyconfig.md b/docs/interfaces/bountyconfig.md deleted file mode 100644 index e5b7adb..0000000 --- a/docs/interfaces/bountyconfig.md +++ /dev/null @@ -1,39 +0,0 @@ - -# Interface bountyConfig - -type for bounty config - -Signature: - -```typescript -interface bountyConfig -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [aVaultId](./bountyconfig.md#aVaultId-property) | `string` | | -| [bVaultId](./bountyconfig.md#bVaultId-property) | `string` | | - -## Property Details - - - -### aVaultId - -Signature: - -```typescript -aVaultId: string; -``` - - - -### bVaultId - -Signature: - -```typescript -bVaultId: string; -``` diff --git a/docs/interfaces/clearedcounterpartyfunds.md b/docs/interfaces/clearedcounterpartyfunds.md deleted file mode 100644 index aa25564..0000000 --- a/docs/interfaces/clearedcounterpartyfunds.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface clearedCounterPartyFunds - -type for simulating and storing matched order counterparty cleared funds - -Signature: - -```typescript -interface clearedCounterPartyFunds -``` diff --git a/docs/interfaces/clearedfunds.md b/docs/interfaces/clearedfunds.md deleted file mode 100644 index ed78fc0..0000000 --- a/docs/interfaces/clearedfunds.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface clearedFunds - -type for simulating and storing matched order cleared funds - -Signature: - -```typescript -interface clearedFunds -``` diff --git a/docs/interfaces/erc1155.md b/docs/interfaces/erc1155.md deleted file mode 100644 index 1333b75..0000000 --- a/docs/interfaces/erc1155.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface erc1155 - -type for simulating and storing ERC1155 contract data - -Signature: - -```typescript -interface erc1155 -``` diff --git a/docs/interfaces/erc1155s.md b/docs/interfaces/erc1155s.md deleted file mode 100644 index 99e8209..0000000 --- a/docs/interfaces/erc1155s.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface erc1155s - -type for simulating and storing multiple ERC1155 tokens - -Signature: - -```typescript -interface erc1155s -``` diff --git a/docs/interfaces/erc20.md b/docs/interfaces/erc20.md deleted file mode 100644 index d158718..0000000 --- a/docs/interfaces/erc20.md +++ /dev/null @@ -1,70 +0,0 @@ - -# Interface erc20 - -type for simulating and storing ERC20token contract data - -Signature: - -```typescript -interface erc20 -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [balanceOf](./erc20.md#balanceOf-property) |
{
    [wallet: string]: BigNumber;
}
| | -| [decimals](./erc20.md#decimals-property) | `number` | | -| [snapshots](./erc20.md#snapshots-property) |
{
    [id: string]: {
        totalSupplyAt: BigNumber;
        balanceOfAt: {
            [wallet: string]: BigNumber;
        };
    };
}
| | -| [totalSupply](./erc20.md#totalSupply-property) | `BigNumber` | | - -## Property Details - - - -### balanceOf - -Signature: - -```typescript -balanceOf: { - [wallet: string]: BigNumber; - }; -``` - - - -### decimals - -Signature: - -```typescript -decimals: number; -``` - - - -### snapshots - -Signature: - -```typescript -snapshots?: { - [id: string]: { - totalSupplyAt: BigNumber; - balanceOfAt: { - [wallet: string]: BigNumber; - }; - }; - }; -``` - - - -### totalSupply - -Signature: - -```typescript -totalSupply: BigNumber; -``` diff --git a/docs/interfaces/erc20s.md b/docs/interfaces/erc20s.md deleted file mode 100644 index a23f800..0000000 --- a/docs/interfaces/erc20s.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface erc20s - -type for simulating and storing multiple ERC20 tokens - -Signature: - -```typescript -interface erc20s -``` diff --git a/docs/interfaces/erc721.md b/docs/interfaces/erc721.md deleted file mode 100644 index 27fea82..0000000 --- a/docs/interfaces/erc721.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface erc721 - -type for simulating and storing ERC721 contract data - -Signature: - -```typescript -interface erc721 -``` diff --git a/docs/interfaces/erc721s.md b/docs/interfaces/erc721s.md deleted file mode 100644 index 1e12c1c..0000000 --- a/docs/interfaces/erc721s.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface erc721s - -type for simulating and storing multiple ERC721 tokens - -Signature: - -```typescript -interface erc721s -``` diff --git a/docs/interfaces/fnptrs.md b/docs/interfaces/fnptrsjsvm.md similarity index 62% rename from docs/interfaces/fnptrs.md rename to docs/interfaces/fnptrsjsvm.md index 16e052b..d754f39 100644 --- a/docs/interfaces/fnptrs.md +++ b/docs/interfaces/fnptrsjsvm.md @@ -1,16 +1,16 @@ -# Interface FnPtrs +# Interface FnPtrsJSVM An interface for creating a key/value pair of opcodes functions to override. Signature: ```typescript -interface FnPtrs extends Record +interface FnPtrsJSVM extends Record ``` ## Implements Interfaces -- FnPtrs +- FnPtrsJSVM - Record diff --git a/docs/interfaces/forcast.md b/docs/interfaces/forcast.md deleted file mode 100644 index 8c8bda6..0000000 --- a/docs/interfaces/forcast.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface forcast - -Interface for matchmaker forcasting a script - -Signature: - -```typescript -interface forcast -``` diff --git a/docs/interfaces/iopmeta.md b/docs/interfaces/iopmeta.md index 2ba24e7..6e511c6 100644 --- a/docs/interfaces/iopmeta.md +++ b/docs/interfaces/iopmeta.md @@ -20,7 +20,7 @@ interface IOpMeta extends Record | [description](./iopmeta.md#description-property) | `string` | | | [enum](./iopmeta.md#enum-property) | `number` | | | [input](./iopmeta.md#input-property) | `string` | | -| [jsvmfn](./iopmeta.md#jsvmfn-property) | [OpFn](./opfn.md) | | +| [jsvmfn](./iopmeta.md#jsvmfn-property) | [OpJSVM](./opjsvm.md) | | | [name](./iopmeta.md#name-property) | `string` | | | [pops](./iopmeta.md#pops-property) | `(opcode: number, operand: number) => number` | | | [pushes](./iopmeta.md#pushes-property) | `(opcode: number, operand: number) => number` | | @@ -64,7 +64,7 @@ input: string; Signature: ```typescript -jsvmfn: OpFn; +jsvmfn: OpJSVM; ``` diff --git a/docs/interfaces/itiers.md b/docs/interfaces/itiers.md deleted file mode 100644 index d458372..0000000 --- a/docs/interfaces/itiers.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface itiers - -type for simulating and storing ITier contract data - -Signature: - -```typescript -interface itiers -``` diff --git a/docs/interfaces/opfn.md b/docs/interfaces/opjsvm.md similarity index 71% rename from docs/interfaces/opfn.md rename to docs/interfaces/opjsvm.md index ee31e6f..2fb74e4 100644 --- a/docs/interfaces/opfn.md +++ b/docs/interfaces/opjsvm.md @@ -1,10 +1,10 @@ -# Interface OpFn +# Interface OpJSVM An interface/type of JSVM opcodes' function's body Signature: ```typescript -interface OpFn +interface OpJSVM ``` diff --git a/docs/interfaces/order.md b/docs/interfaces/order.md deleted file mode 100644 index 175384f..0000000 --- a/docs/interfaces/order.md +++ /dev/null @@ -1,94 +0,0 @@ - -# Interface order - -type for simulating and storing orderbook Order data - -Signature: - -```typescript -interface order -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [inputToken](./order.md#inputToken-property) | `string` | | -| [inputVaultId](./order.md#inputVaultId-property) | `string` | | -| [orderHash](./order.md#orderHash-property) | `string` | | -| [outputToken](./order.md#outputToken-property) | `string` | | -| [outputVaultId](./order.md#outputVaultId-property) | `string` | | -| [owner](./order.md#owner-property) | `string` | | -| [vmConfig](./order.md#vmConfig-property) | [StateConfig](./stateconfig.md) | | - -## Property Details - - - -### inputToken - -Signature: - -```typescript -inputToken: string; -``` - - - -### inputVaultId - -Signature: - -```typescript -inputVaultId: string; -``` - - - -### orderHash - -Signature: - -```typescript -orderHash: string; -``` - - - -### outputToken - -Signature: - -```typescript -outputToken: string; -``` - - - -### outputVaultId - -Signature: - -```typescript -outputVaultId: string; -``` - - - -### owner - -Signature: - -```typescript -owner: string; -``` - - - -### vmConfig - -Signature: - -```typescript -vmConfig: StateConfig; -``` diff --git a/docs/interfaces/orders.md b/docs/interfaces/orders.md deleted file mode 100644 index a104134..0000000 --- a/docs/interfaces/orders.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface orders - -type for simulating and storing multiple orderbook Orders - -Signature: - -```typescript -interface orders -``` diff --git a/docs/interfaces/reservebook.md b/docs/interfaces/reservebook.md new file mode 100644 index 0000000..486a628 --- /dev/null +++ b/docs/interfaces/reservebook.md @@ -0,0 +1,47 @@ + +# Interface ReserveBook + +Interface for matchmaker forcasting a script + +Signature: + +```typescript +interface ReserveBook extends Record +``` + +## Implements Interfaces + +- ReserveBook + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [maxP](./reservebook.md#maxP-property) | `BigNumber` | | +| [minP](./reservebook.md#minP-property) | `BigNumber` | | + +## Property Details + + + +### maxP + +Signature: + +```typescript +maxP: BigNumber; +``` + + + +### minP + +Signature: + +```typescript +minP: BigNumber; +``` diff --git a/docs/interfaces/sclearconfig.md b/docs/interfaces/sclearconfig.md new file mode 100644 index 0000000..e5e83c1 --- /dev/null +++ b/docs/interfaces/sclearconfig.md @@ -0,0 +1,83 @@ + +# Interface SClearConfig + +type for bounty config + +Signature: + +```typescript +interface SClearConfig +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [aBountyVaultId](./sclearconfig.md#aBountyVaultId-property) | `string` | | +| [aInputIndex](./sclearconfig.md#aInputIndex-property) | `number` | | +| [aOutputIndex](./sclearconfig.md#aOutputIndex-property) | `number` | | +| [bBountyVaultId](./sclearconfig.md#bBountyVaultId-property) | `string` | | +| [bInputIndex](./sclearconfig.md#bInputIndex-property) | `number` | | +| [bOutputIndex](./sclearconfig.md#bOutputIndex-property) | `number` | | + +## Property Details + + + +### aBountyVaultId + +Signature: + +```typescript +aBountyVaultId: string; +``` + + + +### aInputIndex + +Signature: + +```typescript +aInputIndex: number; +``` + + + +### aOutputIndex + +Signature: + +```typescript +aOutputIndex: number; +``` + + + +### bBountyVaultId + +Signature: + +```typescript +bBountyVaultId: string; +``` + + + +### bInputIndex + +Signature: + +```typescript +bInputIndex: number; +``` + + + +### bOutputIndex + +Signature: + +```typescript +bOutputIndex: number; +``` diff --git a/docs/interfaces/sclearedcounterpartyfunds.md b/docs/interfaces/sclearedcounterpartyfunds.md new file mode 100644 index 0000000..4b7a92a --- /dev/null +++ b/docs/interfaces/sclearedcounterpartyfunds.md @@ -0,0 +1,16 @@ + +# Interface SClearedCounterPartyFunds + +type for simulating and storing matched order counterparty cleared funds + +Signature: + +```typescript +interface SClearedCounterPartyFunds extends Record +``` + +## Implements Interfaces + +- SClearedCounterPartyFunds + - Record + diff --git a/docs/interfaces/sclearedfunds.md b/docs/interfaces/sclearedfunds.md new file mode 100644 index 0000000..093895b --- /dev/null +++ b/docs/interfaces/sclearedfunds.md @@ -0,0 +1,17 @@ + +# Interface SClearedFunds + +type for simulating and storing matched order cleared funds + +Signature: + +```typescript +interface SClearedFunds extends SStore +``` + +## Implements Interfaces + +- SClearedFunds + - [SStore](./sstore.md) + - Record + diff --git a/docs/interfaces/serc1155.md b/docs/interfaces/serc1155.md new file mode 100644 index 0000000..d815e62 --- /dev/null +++ b/docs/interfaces/serc1155.md @@ -0,0 +1,35 @@ + +# Interface SERC1155 + +type for simulating and storing ERC1155 contract data + +Signature: + +```typescript +interface SERC1155 extends Record +``` + +## Implements Interfaces + +- SERC1155 + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [balanceOf](./serc1155.md#balanceOf-property) | [SStore](./sstore.md) | | + +## Property Details + + + +### balanceOf + +Signature: + +```typescript +balanceOf: SStore; +``` diff --git a/docs/interfaces/serc1155s.md b/docs/interfaces/serc1155s.md new file mode 100644 index 0000000..ef560ce --- /dev/null +++ b/docs/interfaces/serc1155s.md @@ -0,0 +1,16 @@ + +# Interface SERC1155s + +type for simulating and storing multiple ERC1155 tokens + +Signature: + +```typescript +interface SERC1155s extends Record +``` + +## Implements Interfaces + +- SERC1155s + - Record + diff --git a/docs/interfaces/serc20.md b/docs/interfaces/serc20.md new file mode 100644 index 0000000..5fd8ef4 --- /dev/null +++ b/docs/interfaces/serc20.md @@ -0,0 +1,61 @@ + +# Interface SERC20 + +type for simulating and storing ERC20token contract data + +Signature: + +```typescript +interface SERC20 +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [balanceOf](./serc20.md#balanceOf-property) | [SStore](./sstore.md) | | +| [decimals](./serc20.md#decimals-property) | `number` | | +| [snapshots](./serc20.md#snapshots-property) | [SSnapshot](./ssnapshot.md) | | +| [totalSupply](./serc20.md#totalSupply-property) | `BigNumber` | | + +## Property Details + + + +### balanceOf + +Signature: + +```typescript +balanceOf: SStore; +``` + + + +### decimals + +Signature: + +```typescript +decimals: number; +``` + + + +### snapshots + +Signature: + +```typescript +snapshots?: SSnapshot; +``` + + + +### totalSupply + +Signature: + +```typescript +totalSupply: BigNumber; +``` diff --git a/docs/interfaces/serc20s.md b/docs/interfaces/serc20s.md new file mode 100644 index 0000000..8336447 --- /dev/null +++ b/docs/interfaces/serc20s.md @@ -0,0 +1,16 @@ + +# Interface SERC20s + +type for simulating and storing multiple ERC20 tokens + +Signature: + +```typescript +interface SERC20s extends Record +``` + +## Implements Interfaces + +- SERC20s + - Record + diff --git a/docs/interfaces/serc721.md b/docs/interfaces/serc721.md new file mode 100644 index 0000000..837fb75 --- /dev/null +++ b/docs/interfaces/serc721.md @@ -0,0 +1,35 @@ + +# Interface SERC721 + +type for simulating and storing ERC721 contract data + +Signature: + +```typescript +interface SERC721 extends Record +``` + +## Implements Interfaces + +- SERC721 + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [ownerOf](./serc721.md#ownerOf-property) | `string` | | + +## Property Details + + + +### ownerOf + +Signature: + +```typescript +ownerOf: string; +``` diff --git a/docs/interfaces/serc721s.md b/docs/interfaces/serc721s.md new file mode 100644 index 0000000..f07cce0 --- /dev/null +++ b/docs/interfaces/serc721s.md @@ -0,0 +1,16 @@ + +# Interface SERC721s + +type for simulating and storing multiple ERC721 tokens + +Signature: + +```typescript +interface SERC721s extends Record +``` + +## Implements Interfaces + +- SERC721s + - Record + diff --git a/docs/interfaces/sitiers.md b/docs/interfaces/sitiers.md new file mode 100644 index 0000000..d401ce9 --- /dev/null +++ b/docs/interfaces/sitiers.md @@ -0,0 +1,35 @@ + +# Interface SITiers + +type for simulating and storing ITier contract data + +Signature: + +```typescript +interface SITiers extends Record +``` + +## Implements Interfaces + +- SITiers + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [report](./sitiers.md#report-property) | [SStore](./sstore.md) | | + +## Property Details + + + +### report + +Signature: + +```typescript +report: SStore; +``` diff --git a/docs/interfaces/sorder.md b/docs/interfaces/sorder.md new file mode 100644 index 0000000..16b33f5 --- /dev/null +++ b/docs/interfaces/sorder.md @@ -0,0 +1,72 @@ + +# Interface SOrder + +type for simulating and storing orderbook Order data + +Signature: + +```typescript +interface SOrder +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [orderHash](./sorder.md#orderHash-property) | `string` | | +| [owner](./sorder.md#owner-property) | `string` | | +| [validInputs](./sorder.md#validInputs-property) | `SIOConfig[]` | | +| [validOutputs](./sorder.md#validOutputs-property) | `SIOConfig[]` | | +| [vmConfig](./sorder.md#vmConfig-property) | [StateConfig](./stateconfig.md) | | + +## Property Details + + + +### orderHash + +Signature: + +```typescript +orderHash: string; +``` + + + +### owner + +Signature: + +```typescript +owner: string; +``` + + + +### validInputs + +Signature: + +```typescript +validInputs: SIOConfig[]; +``` + + + +### validOutputs + +Signature: + +```typescript +validOutputs: SIOConfig[]; +``` + + + +### vmConfig + +Signature: + +```typescript +vmConfig: StateConfig; +``` diff --git a/docs/interfaces/sorders.md b/docs/interfaces/sorders.md new file mode 100644 index 0000000..efa7afc --- /dev/null +++ b/docs/interfaces/sorders.md @@ -0,0 +1,16 @@ + +# Interface SOrders + +type for simulating and storing multiple orderbook Orders + +Signature: + +```typescript +interface SOrders extends Record +``` + +## Implements Interfaces + +- SOrders + - Record + diff --git a/docs/interfaces/ssnapshot.md b/docs/interfaces/ssnapshot.md new file mode 100644 index 0000000..c1a1f71 --- /dev/null +++ b/docs/interfaces/ssnapshot.md @@ -0,0 +1,47 @@ + +# Interface SSnapshot + +type for SimERC20 with snapshots + +Signature: + +```typescript +interface SSnapshot extends Record +``` + +## Implements Interfaces + +- SSnapshot + - Record + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [balanceOfAt](./ssnapshot.md#balanceOfAt-property) | [SStore](./sstore.md) | | +| [totalSupplyAt](./ssnapshot.md#totalSupplyAt-property) | `BigNumber` | | + +## Property Details + + + +### balanceOfAt + +Signature: + +```typescript +balanceOfAt: SStore; +``` + + + +### totalSupplyAt + +Signature: + +```typescript +totalSupplyAt: BigNumber; +``` diff --git a/docs/interfaces/sstore.md b/docs/interfaces/sstore.md new file mode 100644 index 0000000..89bcb13 --- /dev/null +++ b/docs/interfaces/sstore.md @@ -0,0 +1,21 @@ + +# Interface SStore + +A simple key/value pair object used as storage in simulation classes to store the required data + +Signature: + +```typescript +interface SStore extends Record +``` + +## Implements Interfaces + +- SStore + - Record + +## Implemented By + +- SStore + - [SClearedFunds](./sclearedfunds.md) + diff --git a/docs/interfaces/statejsvm.md b/docs/interfaces/statejsvm.md index 067bb1c..ae525fe 100644 --- a/docs/interfaces/statejsvm.md +++ b/docs/interfaces/statejsvm.md @@ -13,23 +13,23 @@ interface StateJSVM | Property | Type | Description | | --- | --- | --- | -| [argumentsStack](./statejsvm.md#argumentsStack-property) | `BigNumber[]` | Used only for zipmap opcode | +| [argStack](./statejsvm.md#argStack-property) | `BigNumber[]` | Used only for zipmap opcode arguments | | [constants](./statejsvm.md#constants-property) | `BigNumber[]` | The property to store the RainVM script constants. | | [sources](./statejsvm.md#sources-property) | `Uint8Array[]` | The property to store the RainVM script sources. | | [stack](./statejsvm.md#stack-property) | `BigNumber[]` | The RainJSVM's stack. | ## Property Details - + -### argumentsStack +### argStack -Used only for zipmap opcode +Used only for zipmap opcode arguments Signature: ```typescript -readonly argumentsStack: BigNumber[]; +readonly argStack: BigNumber[]; ``` diff --git a/docs/interfaces/svaults.md b/docs/interfaces/svaults.md new file mode 100644 index 0000000..d80f399 --- /dev/null +++ b/docs/interfaces/svaults.md @@ -0,0 +1,16 @@ + +# Interface SVaults + +type for simulating and storing orderbook Vaults data + +Signature: + +```typescript +interface SVaults extends Record> +``` + +## Implements Interfaces + +- SVaults + - Record + diff --git a/docs/interfaces/vaults.md b/docs/interfaces/vaults.md deleted file mode 100644 index cb9b69c..0000000 --- a/docs/interfaces/vaults.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Interface vaults - -type for simulating and storing orderbook Vaults data - -Signature: - -```typescript -interface vaults -``` diff --git a/docs/types/calloptions.md b/docs/types/calloptions.md index ddab9e4..ffb2b04 100644 --- a/docs/types/calloptions.md +++ b/docs/types/calloptions.md @@ -9,8 +9,8 @@ Options for instantiating RainJSVM type CallOptions = { signer?: Signer; contract?: string | Contract; - applyOpFn?: FnPtrs; - storageOpFn?: FnPtrs; + applyOpFn?: FnPtrsJSVM; + storageOpFn?: FnPtrsJSVM; opMeta?: Map; }; ``` diff --git a/docs/types/sioconfig.md b/docs/types/sioconfig.md new file mode 100644 index 0000000..8ebcbd9 --- /dev/null +++ b/docs/types/sioconfig.md @@ -0,0 +1,13 @@ + +# Type SIOConfig + +token the address of the desired token vaultId corresponding token vault id + +Signature: + +```typescript +type SIOConfig = { + token: string; + vaultId: string; +}; +``` diff --git a/docs/variables/max.md b/docs/variables/max.md new file mode 100644 index 0000000..393d9e5 --- /dev/null +++ b/docs/variables/max.md @@ -0,0 +1,10 @@ + +# Variable max + +calculate the maximum among array of BigNumbers + +Signature: + +```typescript +max: (values: BigNumber[]) => BigNumber +``` diff --git a/docs/variables/min.md b/docs/variables/min.md new file mode 100644 index 0000000..e389dbf --- /dev/null +++ b/docs/variables/min.md @@ -0,0 +1,10 @@ + +# Variable min + +calculate the minimum among array of BigNumbers + +Signature: + +```typescript +min: (values: BigNumber[]) => BigNumber +``` diff --git a/src/classes/vm.ts b/src/classes/vm.ts index b41f97a..b59f399 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -524,27 +524,34 @@ export class VM { * * @param amountConfig - amount's StateConfig, the config sitting at top and returning the first value * @param priceConfig - price's StateConfig, the config sitting at bottom and returning the second value + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to + * their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to + * any value outside of their own script scope (other scripts that are being combined) this way the STACK opcode + * operand will stay untouched when scripts combine * * @returns a @see StatecConfig */ public static pair( amountConfig: StateConfig, - priceConfig: StateConfig + priceConfig: StateConfig, + stackReassignment: boolean = true ): StateConfig { - - for (let i = 0; i < priceConfig.sources.length; i++) { - let _stackOpcodeModify = arrayify( - priceConfig.sources[i], - {allowMissingPrefix: true} - ); - for (let j = 0; j < _stackOpcodeModify.length; j++) { - if (_stackOpcodeModify[j] === 1) { - _stackOpcodeModify[j + 1]++; + if (stackReassignment) { + for (let i = 0; i < priceConfig.sources.length; i++) { + let _stackOpcodeModify = arrayify( + priceConfig.sources[i], + {allowMissingPrefix: true} + ); + for (let j = 0; j < _stackOpcodeModify.length; j++) { + if (_stackOpcodeModify[j] === 1) { + _stackOpcodeModify[j + 1]++; + } + j++; } - j++; + priceConfig.sources[i] = _stackOpcodeModify; } - priceConfig.sources[i] = _stackOpcodeModify; } + return VM.combiner(amountConfig, priceConfig); } @@ -552,28 +559,33 @@ export class VM { * A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. * * @param configs - An array of StateConfigs to combine together and its lengths should be more than 2 - * (can use VM.pair() method for combining 2 configs - @see pair) + * (can use VM.pair() method for combining 2 configs - @see pair + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * * @returns a @see StateConfig */ - public static multi(configs: StateConfig[]) : StateConfig { + public static multi(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { if (configs.length > 1) { let _result: StateConfig = configs[0]; for (let i = 1; i < configs.length; i++) { - for (let j = 0; j < configs[i].sources.length; j++) { - let _stackOpcodeModify = arrayify( - configs[i].sources[j], - {allowMissingPrefix: true} - ); - for (let k = 0; k < _stackOpcodeModify.length; k++) { - if (_stackOpcodeModify[k] === 1) { - _stackOpcodeModify[k + 1] = _stackOpcodeModify[k + 1] + i; + if (stackReassignment) { + for (let j = 0; j < configs[i].sources.length; j++) { + let _stackOpcodeModify = arrayify( + configs[i].sources[j], + {allowMissingPrefix: true} + ); + for (let k = 0; k < _stackOpcodeModify.length; k++) { + if (_stackOpcodeModify[k] === 1) { + _stackOpcodeModify[k + 1] = _stackOpcodeModify[k + 1] + i; + } + k++; } - k++; + configs[i].sources[j] = _stackOpcodeModify; } - configs[i].sources[j] = _stackOpcodeModify; } _result = VM.combiner(_result, configs[i]) } diff --git a/src/index.ts b/src/index.ts index 94e178f..333a068 100644 --- a/src/index.ts +++ b/src/index.ts @@ -29,6 +29,7 @@ export * from './jsvm/SaleJSVM'; export * from './jsvm/types'; export * from './jsvm/lib/FixedPointMath'; +export * from './jsvm/lib/Math'; export * from './jsvm/lib/SaturatingMath'; export * from './jsvm/lib/TierReport'; export * from './jsvm/lib/TierwiseCombine'; diff --git a/src/jsvm/lib/Math.ts b/src/jsvm/lib/Math.ts new file mode 100644 index 0000000..ddafcf1 --- /dev/null +++ b/src/jsvm/lib/Math.ts @@ -0,0 +1,26 @@ +import { BigNumber } from "ethers"; + + +/** + * @public + * calculate the minimum among array of BigNumbers + * + * @param values - array of BigNumbers to calculate the min value out of them + * @returns the min of values in BigNumber type + */ +export const min = (values: BigNumber[]): BigNumber => { + + return values.reduce((e, m) => (e.lt(m) ? e : m)) +} + +/** + * @public + * calculate the maximum among array of BigNumbers + * + * @param values - array of BigNumbers to calculate the max value out of them + * @returns the max of values in BigNumber type + */ +export const max = (values: BigNumber[]): BigNumber => { + + return values.reduce((e, m) => (e.gt(m) ? e : m)) +} \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts index fa37c23..5097438 100644 --- a/src/jsvm/ops/math/OpMax.ts +++ b/src/jsvm/ops/math/OpMax.ts @@ -1,3 +1,4 @@ +import { max } from "../../lib/Math"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; @@ -7,14 +8,14 @@ import { StateJSVM } from "../../types"; */ export function OpMax(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); + const items_ = state.stack.splice(-operand); - if ((items_.length = operand)) { + if ((items_.length = operand)) { - state.stack.push( - items_.reduce((e, m) => (e.gt(m) ? e : m)) - ); + state.stack.push( + max(items_) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMin.ts b/src/jsvm/ops/math/OpMin.ts index b09be24..02a4748 100644 --- a/src/jsvm/ops/math/OpMin.ts +++ b/src/jsvm/ops/math/OpMin.ts @@ -1,3 +1,4 @@ +import { min } from "../../lib/Math"; import { RainJSVM } from "../../RainJSVM"; import { StateJSVM } from "../../types"; @@ -7,14 +8,14 @@ import { StateJSVM } from "../../types"; */ export function OpMin(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); + const items_ = state.stack.splice(-operand); - if (items_.length === operand) { + if (items_.length === operand) { - state.stack.push( - items_.reduce((e, m) => (e.lt(m) ? e : m)) - ); + state.stack.push( + min(items_) + ); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file From 7b1b24767ff5514051dddebd4b49d0e7ffb24410 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 27 Jul 2022 19:47:48 +0000 Subject: [PATCH 056/125] stack reassignment for vm methods --- docs/classes/vm.md | 98 ++++++++++++++++++++++---------------- src/classes/vm.ts | 116 ++++++++++++++++++++++++++++++--------------- 2 files changed, 133 insertions(+), 81 deletions(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index baf4f66..fc339b0 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -19,28 +19,28 @@ class VM | Method | Description | | --- | --- | -| [addTogether(configs)](./vm.md#addTogether-method-static-1) | Method to add multiple scripts together | -| [and(configs)](./vm.md#and-method-static-1) | Method to and multiple scripts together ie EVERY | +| [addTogether(configs, stackReassignment)](./vm.md#addTogether-method-static-1) | Method to add multiple scripts together | +| [and(configs, stackReassignment)](./vm.md#and-method-static-1) | Method to and multiple scripts together ie EVERY | | [beforeAfterBlock(blockNumber, type: "gt" \| "lt" \| "gte" \| "lte")](./vm.md#beforeAfterBlock-method-static-1) | Method to create a simple block number based rule | | [beforeAfterTime(timestamp, type: "gt" \| "lt" \| "gte" \| "lte")](./vm.md#beforeAfterTime-method-static-1) | Method to create a simple time based rule | | [combiner(config1, config2, options)](./vm.md#combiner-method-static-1) | Combines 2 individual VM scripts | | [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | | [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | -| [gt(config1, config2)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | -| [gte(config1, config2)](./vm.md#gte-method-static-1) | Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not | -| [hasAnyTier(tierConfig)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | -| [hasMinTier(tierConfig, tier)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | -| [ifelse(condition, ifStatement, elseStatement)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | -| [isEqual(config1, config2)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | +| [gt(config1, config2, stackReassignment)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | +| [gte(config1, config2, stackReassignment)](./vm.md#gte-method-static-1) | Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not | +| [hasAnyTier(tierConfig, stackReassignment)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | +| [hasMinTier(tierConfig, tier, stackReassignment)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | +| [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | +| [isEqual(config1, config2, stackReassignment)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [isZero(config)](./vm.md#isZero-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | -| [lt(config1, config2)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | -| [lte(config1, config2)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | -| [max(configs)](./vm.md#max-method-static-1) | Method to get maximum of multiple scripts | -| [min(configs)](./vm.md#min-method-static-1) | Method to get minimum of multiple scripts | +| [lt(config1, config2, stackReassignment)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | +| [lte(config1, config2, stackReassignment)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | +| [max(configs, stackReassignment)](./vm.md#max-method-static-1) | Method to get maximum of multiple scripts | +| [min(configs, stackReassignment)](./vm.md#min-method-static-1) | Method to get minimum of multiple scripts | | [multi(configs, stackReassignment)](./vm.md#multi-method-static-1) | A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. | -| [mulTogether(configs)](./vm.md#mulTogether-method-static-1) | Method to multiply multiple scripts together | -| [or(configs)](./vm.md#or-method-static-1) | Method to or multiple scripts together ie ANY | +| [mulTogether(configs, stackReassignment)](./vm.md#mulTogether-method-static-1) | Method to multiply multiple scripts together | +| [or(configs, stackReassignment)](./vm.md#or-method-static-1) | Method to or multiple scripts together ie ANY | | [pair(amountConfig, priceConfig, stackReassignment)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | | [setDiscountForTiers(config, tierAddress, tierDiscount, options)](./vm.md#setDiscountForTiers-method-static-1) | Deducts percentage off of the result of a VM script based on a tier contract. | | [setMultiplierForTiers(config, tierAddress, tierMultiplier, options)](./vm.md#setMultiplierForTiers-method-static-1) | Multiply the result of a VM script based on a tier contract. | @@ -66,14 +66,14 @@ static Opcodes: typeof AllStandardOps; -### addTogether(configs) +### addTogether(configs, stackReassignment) Method to add multiple scripts together Signature: ```typescript -static addTogether(configs: StateConfig[]): StateConfig; +static addTogether(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -81,6 +81,7 @@ static addTogether(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | an array of configs to add | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -90,14 +91,14 @@ a -### and(configs) +### and(configs, stackReassignment) Method to and multiple scripts together ie EVERY Signature: ```typescript -static and(configs: StateConfig[]): StateConfig; +static and(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -105,6 +106,7 @@ static and(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | an array of configs to and | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -270,14 +272,14 @@ a VM script -### gt(config1, config2) +### gt(config1, config2, stackReassignment) Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static gt(config1: StateConfig, config2: StateConfig): StateConfig; +static gt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -286,6 +288,7 @@ static gt(config1: StateConfig, config2: StateConfig): StateConfig; | --- | --- | --- | | config1 | [StateConfig](../interfaces/stateconfig.md) | first script | | config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -295,14 +298,14 @@ a -### gte(config1, config2) +### gte(config1, config2, stackReassignment) Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static gte(config1: StateConfig, config2: StateConfig): StateConfig; +static gte(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -311,6 +314,7 @@ static gte(config1: StateConfig, config2: StateConfig): StateConfig; | --- | --- | --- | | config1 | [StateConfig](../interfaces/stateconfig.md) | first script | | config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -320,14 +324,14 @@ a -### hasAnyTier(tierConfig) +### hasAnyTier(tierConfig, stackReassignment) Method to check if an address has any tier status or not, i.e if is in tier contract or not Signature: ```typescript -static hasAnyTier(tierConfig: StateConfig): StateConfig; +static hasAnyTier(tierConfig: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -335,6 +339,7 @@ static hasAnyTier(tierConfig: StateConfig): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | tierConfig | [StateConfig](../interfaces/stateconfig.md) | the tier report config | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -344,14 +349,14 @@ a VM script -### hasMinTier(tierConfig, tier) +### hasMinTier(tierConfig, tier, stackReassignment) Method to check if an address has at least the "TIER" status Signature: ```typescript -static hasMinTier(tierConfig: StateConfig, tier: Tier): StateConfig; +static hasMinTier(tierConfig: StateConfig, tier: Tier, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -360,6 +365,7 @@ static hasMinTier(tierConfig: StateConfig, tier: Tier): StateConfig; | --- | --- | --- | | tierConfig | [StateConfig](../interfaces/stateconfig.md) | the tier report config | | tier | [Tier](../enums/tier.md) | the minimum tier needed to be held | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -369,14 +375,14 @@ a VM script -### ifelse(condition, ifStatement, elseStatement) +### ifelse(condition, ifStatement, elseStatement, stackReassignment) Method to create an if/else script Signature: ```typescript -static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: StateConfig): StateConfig; +static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -386,6 +392,7 @@ static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: S | condition | [StateConfig](../interfaces/stateconfig.md) | the condition script ie the if check statement | | ifStatement | [StateConfig](../interfaces/stateconfig.md) | the script(statement) if the check passes | | elseStatement | [StateConfig](../interfaces/stateconfig.md) | the script(statement) if the check fails | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -395,14 +402,14 @@ a -### isEqual(config1, config2) +### isEqual(config1, config2, stackReassignment) Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static isEqual(config1: StateConfig, config2: StateConfig): StateConfig; +static isEqual(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -411,6 +418,7 @@ static isEqual(config1: StateConfig, config2: StateConfig): StateConfig; | --- | --- | --- | | config1 | [StateConfig](../interfaces/stateconfig.md) | first script | | config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -444,14 +452,14 @@ a -### lt(config1, config2) +### lt(config1, config2, stackReassignment) Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static lt(config1: StateConfig, config2: StateConfig): StateConfig; +static lt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -460,6 +468,7 @@ static lt(config1: StateConfig, config2: StateConfig): StateConfig; | --- | --- | --- | | config1 | [StateConfig](../interfaces/stateconfig.md) | first script | | config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -469,14 +478,14 @@ a -### lte(config1, config2) +### lte(config1, config2, stackReassignment) Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static lte(config1: StateConfig, config2: StateConfig): StateConfig; +static lte(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -485,6 +494,7 @@ static lte(config1: StateConfig, config2: StateConfig): StateConfig; | --- | --- | --- | | config1 | [StateConfig](../interfaces/stateconfig.md) | first script | | config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -494,14 +504,14 @@ a -### max(configs) +### max(configs, stackReassignment) Method to get maximum of multiple scripts Signature: ```typescript -static max(configs: StateConfig[]): StateConfig; +static max(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -509,6 +519,7 @@ static max(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | an array of configs to get maximum of | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -518,14 +529,14 @@ a -### min(configs) +### min(configs, stackReassignment) Method to get minimum of multiple scripts Signature: ```typescript -static min(configs: StateConfig[]): StateConfig; +static min(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -533,6 +544,7 @@ static min(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | an array of configs to get minimum of | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -567,14 +579,14 @@ a -### mulTogether(configs) +### mulTogether(configs, stackReassignment) Method to multiply multiple scripts together Signature: ```typescript -static mulTogether(configs: StateConfig[]): StateConfig; +static mulTogether(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -582,6 +594,7 @@ static mulTogether(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | an array of configs to multiply | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -591,14 +604,14 @@ a -### or(configs) +### or(configs, stackReassignment) Method to or multiple scripts together ie ANY Signature: ```typescript -static or(configs: StateConfig[]): StateConfig; +static or(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -606,6 +619,7 @@ static or(configs: StateConfig[]): StateConfig; | Parameter | Type | Description | | --- | --- | --- | | configs | `StateConfig[]` | an array of configs to or | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: diff --git a/src/classes/vm.ts b/src/classes/vm.ts index b59f399..08b26ff 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1144,11 +1144,14 @@ export class VM { * Method to multiply multiple scripts together * * @param configs - an array of configs to multiply + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * * @returns a @see StateConfig */ - public static mulTogether(configs: StateConfig[]): StateConfig { - let result_ = VM.multi(configs) + public static mulTogether(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.MUL, configs.length) @@ -1161,11 +1164,13 @@ export class VM { * Method to add multiple scripts together * * @param configs - an array of configs to add - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig */ - public static addTogether(configs: StateConfig[]): StateConfig { - let result_ = VM.multi(configs) + public static addTogether(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.ADD, configs.length) @@ -1178,11 +1183,13 @@ export class VM { * Method to get maximum of multiple scripts * * @param configs - an array of configs to get maximum of - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig */ - public static max(configs: StateConfig[]): StateConfig { - let result_ = VM.multi(configs) + public static max(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.MAX, configs.length) @@ -1195,11 +1202,13 @@ export class VM { * Method to get minimum of multiple scripts * * @param configs - an array of configs to get minimum of - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig */ - public static min(configs: StateConfig[]): StateConfig { - let result_ = VM.multi(configs) + public static min(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.MIN, configs.length) @@ -1212,11 +1221,13 @@ export class VM { * Method to and multiple scripts together ie EVERY * * @param configs - an array of configs to and - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static and(configs: StateConfig[]): StateConfig { - let result_ = VM.multi(configs) + public static and(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.EVERY, configs.length) @@ -1229,11 +1240,13 @@ export class VM { * Method to or multiple scripts together ie ANY * * @param configs - an array of configs to or - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static or(configs: StateConfig[]): StateConfig { - let result_ = VM.multi(configs) + public static or(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.ANY, configs.length) @@ -1248,16 +1261,19 @@ export class VM { * @param condition - the condition script ie the if check statement * @param ifStatement - the script(statement) if the check passes * @param elseStatement - the script(statement) if the check fails - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig */ public static ifelse( condition: StateConfig, ifStatement: StateConfig, - elseStatement: StateConfig + elseStatement: StateConfig, + stackReassignment: boolean = true ): StateConfig { - let result_ = VM.multi([condition, ifStatement, elseStatement]) + let result_ = VM.multi([condition, ifStatement, elseStatement], stackReassignment) result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.EAGER_IF) @@ -1305,11 +1321,13 @@ export class VM { * * @param config1 - first script * @param config2 - second script - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static isEqual(config1: StateConfig, config2: StateConfig): StateConfig { - let result_ = VM.pair(config1, config2); + public static isEqual(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { + let result_ = VM.pair(config1, config2, stackReassignment); result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.EQUAL_TO) @@ -1323,11 +1341,13 @@ export class VM { * * @param config1 - first script * @param config2 - second script - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static gt(config1: StateConfig, config2: StateConfig): StateConfig { - let result_ = VM.pair(config1, config2); + public static gt(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { + let result_ = VM.pair(config1, config2, stackReassignment); result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.GREATER_THAN) @@ -1341,11 +1361,13 @@ export class VM { * * @param config1 - first script * @param config2 - second script - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static lt(config1: StateConfig, config2: StateConfig): StateConfig { - let result_ = VM.pair(config1, config2); + public static lt(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { + let result_ = VM.pair(config1, config2, stackReassignment); result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.LESS_THAN) @@ -1359,11 +1381,13 @@ export class VM { * * @param config1 - first script * @param config2 - second script - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static gte(config1: StateConfig, config2: StateConfig): StateConfig { - let result_ = VM.pair(config1, config2); + public static gte(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { + let result_ = VM.pair(config1, config2, stackReassignment); result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.LESS_THAN), @@ -1378,11 +1402,13 @@ export class VM { * * @param config1 - first script * @param config2 - second script - * + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static lte(config1: StateConfig, config2: StateConfig): StateConfig { - let result_ = VM.pair(config1, config2); + public static lte(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { + let result_ = VM.pair(config1, config2, stackReassignment); result_.sources[0] = concat([ result_.sources[0], op(VM.Opcodes.GREATER_THAN), @@ -1701,15 +1727,20 @@ export class VM { * Method to check if an address has any tier status or not, i.e if is in tier contract or not * * @param tierConfig - the tier report config @see CombineTierGenerator + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a VM script @see StateConfig */ public static hasAnyTier( tierConfig: StateConfig, + stackReassignment: boolean = true ) : StateConfig { return VM.lt( tierConfig, - VM.constant(ethers.constants.MaxUint256) + VM.constant(ethers.constants.MaxUint256), + stackReassignment ) } @@ -1718,11 +1749,15 @@ export class VM { * * @param tierConfig - the tier report config @see CombineTierGenerator * @param tier - the minimum tier needed to be held + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a VM script @see StateConfig */ public static hasMinTier( tierConfig: StateConfig, - tier: Tier + tier: Tier, + stackReassignment: boolean = true ) : StateConfig { const reportCheck = paddedUInt256( @@ -1731,7 +1766,10 @@ export class VM { paddedUInt32("0").repeat(tier) ) - return VM.gte(tierConfig, VM.constant(reportCheck)) + return VM.gte(tierConfig, VM.constant(reportCheck), stackReassignment) } -} \ No newline at end of file +} +const x = [7,2,6,1,5] +x.sort() +console.log(x) \ No newline at end of file From 28e07467ec34c6625b8fa2ff6ae053de438605b4 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 27 Jul 2022 19:55:08 +0000 Subject: [PATCH 057/125] Update vm.ts --- src/classes/vm.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 08b26ff..aa1f730 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1769,7 +1769,4 @@ export class VM { return VM.gte(tierConfig, VM.constant(reportCheck), stackReassignment) } -} -const x = [7,2,6,1,5] -x.sort() -console.log(x) \ No newline at end of file +} \ No newline at end of file From 6e85212d36496a205b4330f4b2e1011824dd0614 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 29 Jul 2022 13:40:20 +0000 Subject: [PATCH 058/125] added RuleBuilder + debugs and fixes --- docs/classes/vm.md | 25 +++ docs/namespaces/utils.md | 2 + .../utils/variables/areequalconfigs.md | 10 + docs/namespaces/utils/variables/istier.md | 10 + src/classes/vm.ts | 14 ++ .../combineTierScriptGenerator.ts | 78 +++++-- .../script-generators/ruleBuilder.ts | 195 ++++++++++++++++++ src/contracts/tiers/combineTier.ts | 4 +- src/utils.ts | 72 ++++++- 9 files changed, 386 insertions(+), 24 deletions(-) create mode 100644 docs/namespaces/utils/variables/areequalconfigs.md create mode 100644 docs/namespaces/utils/variables/istier.md create mode 100644 src/contracts/script-generators/ruleBuilder.ts diff --git a/docs/classes/vm.md b/docs/classes/vm.md index fc339b0..a90869f 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -47,6 +47,7 @@ class VM | [setOwnership(config, ownerAddress, options)](./vm.md#setOwnership-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | | [setTimers(configs, times, inBlockNumber)](./vm.md#setTimers-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | | [setValueForTiers(config, tierAddress, tierValues, ascending, options)](./vm.md#setValueForTiers-method-static-1) | Produce different values from the result of a VM script based on a tier contract. | +| [stack(operand)](./vm.md#stack-method-static-1) | Method to create a simple STACK opcode script | ## Static Property Details @@ -806,3 +807,27 @@ static setValueForTiers(config: StateConfig, tierAddress: string, tierValues: nu a VM script + + +### stack(operand) + +Method to create a simple STACK opcode script + +Signature: + +```typescript +static stack(operand: number): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| operand | `number` | stack operand | + +Returns: + +`StateConfig` + +a VM script + diff --git a/docs/namespaces/utils.md b/docs/namespaces/utils.md index 231eec3..2ef5285 100644 --- a/docs/namespaces/utils.md +++ b/docs/namespaces/utils.md @@ -25,12 +25,14 @@ | Variable | Description | | --- | --- | +| [areEqualConfigs](./utils/variables/areequalconfigs.md) | Checks 2 StateConfig objects to see if they are equal or not | | [arrayify](./utils/variables/arrayify.md) | ethers arrayify | | [arrToReport](./utils/variables/arrtoreport.md) | Convert an array of 8 BigNumberish values to 8 32bit values packed in a HexString uint256 i.e. Report | | [bytify](./utils/variables/bytify.md) | Converts a value to raw bytes representation. Assumes `value` is less than or equal to 1 byte, unless a desired `bytesLength` is specified. | | [concat](./utils/variables/concat.md) | ethers concat | | [hexlify](./utils/variables/hexlify.md) | ethers hexlify | | [hexZeroPad](./utils/variables/hexzeropad.md) | ethers hexZeroPad | +| [isTier](./utils/variables/istier.md) | Check if a contract is a valid ITierV2 contract or not | | [op](./utils/variables/op.md) | Converts an opcode and operand to bytes, and returns their concatenation. | | [paddedUInt128](./utils/variables/paddeduint128.md) | Utility function to produce 128 bits size hexString | | [paddedUInt160](./utils/variables/paddeduint160.md) | Utility function that transforms a BigNumberish to an ether address (40 char length hexString) | diff --git a/docs/namespaces/utils/variables/areequalconfigs.md b/docs/namespaces/utils/variables/areequalconfigs.md new file mode 100644 index 0000000..e9adfa7 --- /dev/null +++ b/docs/namespaces/utils/variables/areequalconfigs.md @@ -0,0 +1,10 @@ + +# Variable utils.areEqualConfigs + +Checks 2 StateConfig objects to see if they are equal or not + +Signature: + +```typescript +areEqualConfigs: (config1: StateConfig, config2: StateConfig) => boolean +``` diff --git a/docs/namespaces/utils/variables/istier.md b/docs/namespaces/utils/variables/istier.md new file mode 100644 index 0000000..f9d3063 --- /dev/null +++ b/docs/namespaces/utils/variables/istier.md @@ -0,0 +1,10 @@ + +# Variable utils.isTier + +Check if a contract is a valid ITierV2 contract or not + +Signature: + +```typescript +isTier: (tierAddress: string, signer: Signer) => Promise +``` diff --git a/src/classes/vm.ts b/src/classes/vm.ts index aa1f730..996430f 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1769,4 +1769,18 @@ export class VM { return VM.gte(tierConfig, VM.constant(reportCheck), stackReassignment) } + /** + * @public + * Method to create a simple STACK opcode script + * + * @param operand - stack operand + * @returns a VM script @see StateConfig + */ + public static stack(operand: number): StateConfig { + return { + constants: [], + sources: [concat([op(VM.Opcodes.STACK, operand)])] + } + } + } \ No newline at end of file diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index ca926ba..46f70c0 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -35,34 +35,56 @@ export class CombineTierGenerator { * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * - (param) hasReportForSingleTier - (optional) Used to determine if this script needs to have a second * script used for getting the ITIERV2_TIME_FOR_TIER for a combineTier contract reportTimeForTier, default is false - * - (param) tierContext - (optional) an array of 8 values used as Stake thresholds or in general as REPORT opcodes context + * - (optional) dynamicTierContext - (optional) true if tier context will be passed at runtime to the report function + * - (param) staticTierContext - (optional) an array of 8 values used as Stake thresholds or in general as REPORT opcodes context */ constructor( reporter: string | StateConfig, options?: { accountOrSender?: boolean, - hasReportForSingleTier?: boolean, - tierContext?: BigNumber[] + hasReportForSingleTier?: boolean, + dynamicTierContext?: boolean, + staticTierContext?: BigNumber[] } ) { - const CONTEXT_ = options?.tierContext && typeof reporter === "string" - ? { - constants: options.tierContext, - sources: concat([ - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 8), - ]) - } - : { + const CONTEXT_ = + typeof reporter === "string" + ? options?.dynamicTierContext + ? { + constants: [], + sources: concat([ + op(VM.Opcodes.CONTEXT, 2), + op(VM.Opcodes.CONTEXT, 3), + op(VM.Opcodes.CONTEXT, 4), + op(VM.Opcodes.CONTEXT, 5), + op(VM.Opcodes.CONTEXT, 6), + op(VM.Opcodes.CONTEXT, 7), + op(VM.Opcodes.CONTEXT, 8), + op(VM.Opcodes.CONTEXT, 9), + ]) + } + : options?.staticTierContext && options?.staticTierContext.length === 8 + ? { + constants: options.staticTierContext, + sources: concat([ + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.CONSTANT, 8), + ]) + } + : { constants: [], sources: concat([]) - } + } + : { + constants: [], + sources: concat([]) + } let report_: StateConfig; @@ -117,7 +139,23 @@ export class CombineTierGenerator { report_ = reporter; } - report_ = options?.hasReportForSingleTier ? VM.combiner(report_, singleReport_, {numberOfSources: 0}) : report_; + report_ = options?.hasReportForSingleTier + ? typeof reporter == 'string' + ? { + constants: report_.constants, + sources: [ + ...report_.sources, + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.CONTEXT, 1), + CONTEXT_.sources, + op(VM.Opcodes.ITIERV2_REPORT_TIME_FOR_TIER, CONTEXT_.constants.length), + ]) + ] + } + : VM.combiner(report_, singleReport_, {numberOfSources: 0}) + : report_; this.constants = report_.constants; this.sources = report_.sources; diff --git a/src/contracts/script-generators/ruleBuilder.ts b/src/contracts/script-generators/ruleBuilder.ts new file mode 100644 index 0000000..866f049 --- /dev/null +++ b/src/contracts/script-generators/ruleBuilder.ts @@ -0,0 +1,195 @@ +import { BigNumber } from "ethers"; +import { concat } from "ethers/lib/utils"; +import { StateConfig, VM } from "../../classes/vm"; +import { areEqualConfigs, op } from "../../utils"; + + +/** + * @public + * Type for price/quantity scripts modifier based on a tier report + */ +export interface modifier { + mode: "discounter" | "multiplier", + tierAddress: string, + tierModifierValues: number[], + tierActivation?: (string | number)[], + tierContext?: BigNumber[] +} + +/** + * @public + * Type for a currency scripts used in Rulebuilder class + */ +export interface vmCurrency { + qRules: StateConfig[], + quantities: StateConfig[], + pRules: StateConfig[], + prices: StateConfig[], + pModifiers: { + [index: number]: modifier, + }, + qModifiers: { + [index: number]: modifier, + }, +} + +/** + * @public + * Class with methods to generate a rule-based StateConfig + */ +export class RuleBuilder { + + /** + * @public + * Method to generate a multi currency rule-based StateConfig + * + * @param currencies - An array of vmCurrency objects + * @returns A StateConfig + */ + public static multiCurrency(currencies: vmCurrency[]): StateConfig { + + let rules_: StateConfig = {constants: [], sources: []}; + let quantities_: StateConfig[] = []; + let prices_: StateConfig[] = []; + let count = 0; + + for (let i = 0; i < currencies.length; i++) { + if ( + currencies[i].quantities.length === currencies[i].prices.length && + currencies[i].qRules.length === currencies[i].pRules.length && + currencies[i].prices.length === currencies[i].pRules.length + ) { + for (let j = 0; j < currencies[i].qRules.length; j++) { + rules_ = VM.pair( + rules_, + areEqualConfigs(currencies[i].qRules[j], currencies[i].pRules[j],) + ? VM.pair( + currencies[i].qRules[j], + VM.stack(count * 2) + ) + : VM.pair( + currencies[i].qRules[j], + currencies[i].pRules[j], + false + ), + false + ); + + quantities_[i] = VM.pair( + quantities_[i], + currencies[i].qModifiers[j] + ? RuleBuilder.applyModifier( + VM.mulTogether([ + VM.stack(count * 2), + currencies[i].quantities[j], + ], + false + ), + currencies[i].qModifiers[j] + ) + : VM.mulTogether([ + VM.stack(count * 2), + currencies[i].quantities[j], + ], + false + ), + false + ); + + prices_[i] = VM.pair( + prices_[i], + currencies[i].pModifiers[j] + ? RuleBuilder.applyModifier( + VM.mulTogether([ + VM.stack((count * 2) + 1), + currencies[i].prices[j], + ], + false + ), + currencies[i].pModifiers[j] + ) + : VM.mulTogether([ + VM.stack((count * 2) + 1), + currencies[i].prices[j], + ], + false + ), + false + ); + + if (j + 1 === currencies[i].quantities.length) { + quantities_[i].sources[0] = concat([ + quantities_[i].sources[0], + op(VM.Opcodes.MAX, currencies[i].quantities.length) + ]) + prices_[i].sources[0] = concat([ + prices_[i].sources[0], + (op(VM.Opcodes.MIN, currencies[i].quantities.length)) + ]) + } + + if (currencies[i].qModifiers[currencies[i].quantities.length]) { + quantities_[i] = RuleBuilder.applyModifier( + quantities_[i], + currencies[i].qModifiers[currencies[i].quantities.length] + ) + } + if (currencies[i].pModifiers[currencies[i].prices.length]) { + prices_[i] = RuleBuilder.applyModifier( + prices_[i], + currencies[i].pModifiers[currencies[i].prices.length] + ) + } + count++; + } + } + } + + return VM.multi([ + rules_, + VM.multi(quantities_, false), + VM.multi(prices_, false) + ], + false + ); + } + + /** + * @public + * Method to generate a single currency rule-based StateConfig + * + * @param currency - A vmCurrency object + * @returns A StateConfig + */ + public static singleCurrency(currency: vmCurrency): StateConfig { + return this.multiCurrency([currency]); + } + + /** + * Method to apply modifier to price/quantity scripts for the RuleBuilder main methods + */ + private static applyModifier(config: StateConfig, modifier: modifier): StateConfig { + if (modifier.mode === "multiplier") return VM.setDiscountForTiers( + config, + modifier.tierAddress, + modifier.tierModifierValues, + { + tierActivation: modifier.tierActivation, + tierContext: modifier.tierContext + } + ) + else if (modifier.mode === "discounter") return VM.setDiscountForTiers( + config, + modifier.tierAddress, + modifier.tierModifierValues, + { + tierActivation: modifier.tierActivation, + tierContext: modifier.tierContext + } + ) + else throw new Error("Invalid Arguments"); + } + +} + + diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 83a82c2..aa50e79 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -100,8 +100,8 @@ export class CombineTier extends ITierV2 { super(address, signer); this.storageOpcodesRange = _combineTier.storageOpcodesRange; - this.packedFunctionPointers = _combineTier.packedFunctionPointers; - this.supportsInterface = _combineTier.supportsInterface; + this.packedFunctionPointers = _combineTier.packedFunctionPointers; + this.supportsInterface = _combineTier.supportsInterface; } /** diff --git a/src/utils.ts b/src/utils.ts index 38b02f2..4801520 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -1,6 +1,8 @@ -import type { BytesLike } from 'ethers'; +import type { BytesLike, Signer } from 'ethers'; import { isBytes, isHexString } from 'ethers/lib/utils'; import { BigNumber, BigNumberish, ethers, utils } from 'ethers'; +import { StateConfig } from './classes/vm'; +import { ITierV2 } from './classes/iTierV2'; export const { @@ -427,4 +429,70 @@ export function recordToMap( const Properties = properties ? properties : []; return new Map(Object.entries(extractFromRecord(record, Properties))) as Map -} \ No newline at end of file +} + +/** + * @public + * Checks 2 StateConfig objects to see if they are equal or not + * + * @param config1 - first StateConfig + * @param config2 - second StateConfig + * @returns boolean + */ +export const areEqualConfigs = (config1: StateConfig, config2: StateConfig): boolean => { + + if (config1.constants.length !== config2.constants.length) return false; + if (config1.sources.length !== config2.sources.length) return false; + + let aConstants: BigNumber[] = []; + let bConstants: BigNumber[] = []; + for (const item of config1.constants) { + aConstants.push(BigNumber.from(item)) + } + for (const item of config2.constants) { + bConstants.push(BigNumber.from(item)) + } + + for (let i = 0; i < aConstants.length; i++) { + if (!aConstants[i].eq(bConstants[i])) return false; + } + + let aSources: string[] = []; + let bSources: string[] = []; + for (const item of config1.sources) { + aSources.push(hexlify(item, {allowMissingPrefix: true})); + } + for (const item of config2.sources) { + bSources.push(hexlify(item, {allowMissingPrefix: true})); + } + + for (let i = 0; i < aSources.length; i++) { + if (aSources[i] !== bSources[i]) return false; + } + + return true; +} + +/** + * @public + * Check if a contract is a valid ITierV2 contract or not + * + * @param tierAddress - The contract address + * @param signer - An ethers signer + * @returns boolean + */ +export const isTier = async(tierAddress: string, signer: Signer) => { + if (ethers.utils.isAddress(tierAddress)) { + try{ + const iTier = new ITierV2(tierAddress, signer) + await iTier.report(await signer.getAddress(), []); + return true; + } + catch(err){ + return false; + } + } + else { + return false; + } + } \ No newline at end of file From e51e3e3a8326e7f510c314e1da41d10e4b384a11 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 29 Jul 2022 20:23:02 +0000 Subject: [PATCH 059/125] Update combineTierScriptGenerator.ts --- .../script-generators/combineTierScriptGenerator.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 46f70c0..3e14015 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -181,7 +181,7 @@ export class CombineTierGenerator { accountOrSender?: boolean, number?: number ): CombineTierGenerator { - const _buttom = new CombineTierGenerator(reporter, {accountOrSender}) + const _buttom = new CombineTierGenerator(reporter, {accountOrSender, hasReportForSingleTier: true}) const _combiner: StateConfig = { constants: number ? [number] : [], @@ -190,11 +190,15 @@ export class CombineTierGenerator { number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), ]), + concat([ + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), + ]), ], }; - let _result: StateConfig = VM.combiner(_buttom, _combiner); - _result = VM.combiner(this, _result); + let _result: StateConfig = VM.combiner(_buttom, _combiner, {numberOfSources: 2}); + _result = VM.combiner(this, _result, {numberOfSources: 2}); this.constants = _result.constants; this.sources = _result.sources; From 9de2a86be83ec988a8b38743e9b88cecfea4d8c5 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 29 Jul 2022 23:58:28 +0000 Subject: [PATCH 060/125] update --- docs/classes/buildreport.md | 4 +-- docs/classes/combinetiergenerator.md | 16 ++++----- docs/classes/erc1155balancetier.md | 4 +-- docs/classes/erc20balancetier.md | 4 +-- docs/classes/erc721balancetier.md | 4 +-- docs/classes/vm.md | 7 ++-- src/classes/vm.ts | 14 ++++---- .../combineTierScriptGenerator.ts | 34 +++++++++---------- 8 files changed, 45 insertions(+), 42 deletions(-) diff --git a/docs/classes/buildreport.md b/docs/classes/buildreport.md index 61cba36..f2df5d6 100644 --- a/docs/classes/buildreport.md +++ b/docs/classes/buildreport.md @@ -20,8 +20,8 @@ class BuildReport extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/combinetiergenerator.md b/docs/classes/combinetiergenerator.md index bff3be8..072e136 100644 --- a/docs/classes/combinetiergenerator.md +++ b/docs/classes/combinetiergenerator.md @@ -24,8 +24,8 @@ new CombineTier(a tierAddress or a StateConfig) | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | -| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports | +| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | +| [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8) | @@ -55,14 +55,14 @@ sources: BytesLike[]; -### combineWith(reporter, logic, mode, accountOrSender, number) +### combineWith(reporter, logic, mode, delegatedReport, number) Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode Signature: ```typescript -combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, accountOrSender?: boolean, number?: number): CombineTierGenerator; +combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, delegatedReport?: boolean, number?: number): CombineTierGenerator; ``` #### Parameters @@ -72,7 +72,7 @@ combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectL | reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | | logic | `selectLteLogic` | selectLte logic | | mode | `selectLteMode` | selectLte mode | -| accountOrSender | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | +| delegatedReport | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | | number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_TIMESTAMP | Returns: @@ -83,14 +83,14 @@ CombineTierGenerator -### differenceFrom(reporter, accountOrSender) +### differenceFrom(reporter, delegatedReport) Saturating difference between 2 reports Signature: ```typescript -differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this; +differenceFrom(reporter: string | StateConfig, delegatedReport?: boolean): this; ``` #### Parameters @@ -98,7 +98,7 @@ differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this; | Parameter | Type | Description | | --- | --- | --- | | reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | -| accountOrSender | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | +| delegatedReport | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | Returns: diff --git a/docs/classes/erc1155balancetier.md b/docs/classes/erc1155balancetier.md index 2a2dc78..036aeeb 100644 --- a/docs/classes/erc1155balancetier.md +++ b/docs/classes/erc1155balancetier.md @@ -23,8 +23,8 @@ class ERC1155BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/erc20balancetier.md b/docs/classes/erc20balancetier.md index b253e04..71f258e 100644 --- a/docs/classes/erc20balancetier.md +++ b/docs/classes/erc20balancetier.md @@ -22,8 +22,8 @@ class ERC20BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/erc721balancetier.md b/docs/classes/erc721balancetier.md index 33d54b0..edf2d1a 100644 --- a/docs/classes/erc721balancetier.md +++ b/docs/classes/erc721balancetier.md @@ -22,8 +22,8 @@ class ERC721BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, accountOrSender, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter, accountOrSender)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | +| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/vm.md b/docs/classes/vm.md index a90869f..7d43baf 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -26,7 +26,7 @@ class VM | [combiner(config1, config2, options)](./vm.md#combiner-method-static-1) | Combines 2 individual VM scripts | | [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | -| [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | +| [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | | [gt(config1, config2, stackReassignment)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | | [gte(config1, config2, stackReassignment)](./vm.md#gte-method-static-1) | Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not | | [hasAnyTier(tierConfig, stackReassignment)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | @@ -247,14 +247,14 @@ A source -### getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id) +### getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall) A method to generate the StateConfig out of EVM assets' opcodes Signature: ```typescript -static getAsset(type: "erc20-balance-of" | "erc20-total-supply" | "snapshot-balance-of" | "snapshot-total-supply" | "erc721-balance-of" | "erc721-owner-of" | "erc1155-balance-of" | "erc1155-balance-of-batch", address: string[], id?: BigNumber[]): StateConfig; +static getAsset(type: "erc20-balance-of" | "erc20-total-supply" | "snapshot-balance-of" | "snapshot-total-supply" | "erc721-balance-of" | "erc721-owner-of" | "erc1155-balance-of" | "erc1155-balance-of-batch", address: string[], id?: BigNumber[], delegatedCall?: boolean): StateConfig; ``` #### Parameters @@ -264,6 +264,7 @@ static getAsset(type: "erc20-balance-of" | "erc20-total-supply" | "snapshot-bala | type | `"erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch"` | the type of the asset script | | address | `string[]` | an array of address(es) of the asset(s) contract(s), only IERC20-Balance-of-Batch uses more than 1 address | | id | `BigNumber[]` | an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id | +| delegatedCall | `boolean` | (optional) if true CONTEXT opcode will be used and if false SENDER opcode will be used | Returns: diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 996430f..326a846 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1603,6 +1603,7 @@ export class VM { * @param type - the type of the asset script * @param address - an array of address(es) of the asset(s) contract(s), only IERC20-Balance-of-Batch uses more than 1 address * @param id - an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id + * @param delegatedCall - (optional) if true CONTEXT opcode will be used and if false SENDER opcode will be used * * @returns a VM script @see StateConfig */ @@ -1617,7 +1618,8 @@ export class VM { "erc1155-balance-of" | "erc1155-balance-of-batch", address: string[], - id?: BigNumber[] + id?: BigNumber[], + delegatedCall: boolean = false ) : StateConfig { if (type === "erc20-balance-of" && address[0]) { @@ -1626,7 +1628,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), + delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.IERC20_BALANCE_OF), ]) ] @@ -1649,7 +1651,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), + delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT) ]) @@ -1674,7 +1676,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), + delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.IERC721_BALANCE_OF) ]) ] @@ -1698,7 +1700,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SENDER), + delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.IERC1155_BALANCE_OF) ]) @@ -1711,7 +1713,7 @@ export class VM { for (i; i < address.length; i++) { sources.push(op(VM.Opcodes.CONSTANT, i)) }; - sources.push(op(VM.Opcodes.SENDER)); + sources.push(delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0)); for (i; i < address.length * 2; i++) { sources.push(op(VM.Opcodes.CONSTANT, i)) }; diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 3e14015..400ec50 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -30,8 +30,8 @@ export class CombineTierGenerator { * Constructor for this class * * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) - * @param optioins - (optional) used for additional configuration of the script - * - (param) accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * @param options - (optional) used for additional configuration of the script + * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * - (param) hasReportForSingleTier - (optional) Used to determine if this script needs to have a second * script used for getting the ITIERV2_TIME_FOR_TIER for a combineTier contract reportTimeForTier, default is false @@ -41,7 +41,7 @@ export class CombineTierGenerator { constructor( reporter: string | StateConfig, options?: { - accountOrSender?: boolean, + delegatedReport?: boolean, hasReportForSingleTier?: boolean, dynamicTierContext?: boolean, staticTierContext?: BigNumber[] @@ -105,7 +105,7 @@ export class CombineTierGenerator { sources: [ concat([ op(VM.Opcodes.THIS_ADDRESS), - options?.accountOrSender ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), + options?.delegatedReport ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), op(VM.Opcodes.ITIERV2_REPORT), op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), @@ -128,7 +128,7 @@ export class CombineTierGenerator { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - options?.accountOrSender ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), + options?.delegatedReport ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER, 0), CONTEXT_.sources, op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), ]) @@ -168,7 +168,7 @@ export class CombineTierGenerator { * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) * @param logic - selectLte logic * @param mode - selectLte mode - * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * @param delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP * @@ -178,10 +178,10 @@ export class CombineTierGenerator { reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, - accountOrSender?: boolean, + delegatedReport?: boolean, number?: number ): CombineTierGenerator { - const _buttom = new CombineTierGenerator(reporter, {accountOrSender, hasReportForSingleTier: true}) + const _buttom = new CombineTierGenerator(reporter, {delegatedReport, hasReportForSingleTier: true}) const _combiner: StateConfig = { constants: number ? [number] : [], @@ -245,13 +245,13 @@ export class CombineTierGenerator { * Saturating difference between 2 reports * * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) - * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * @param delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * * @returns CombineTierGenerator */ - public differenceFrom(reporter: string | StateConfig, accountOrSender?: boolean): this { - const _buttom = new CombineTierGenerator(reporter, {accountOrSender}) + public differenceFrom(reporter: string | StateConfig, delegatedReport?: boolean): this { + const _buttom = new CombineTierGenerator(reporter, {delegatedReport}) const _differ: StateConfig = { constants: [], @@ -358,14 +358,14 @@ export class BuildReport extends CombineTierGenerator { * @param number - (optional) A number or an array of numbers represting the report at each tier, * if not passed, BLOCK_TIMESTAMP will be used to creat the report of each tier which would result in * a dynamic report when the script is executed by combineTier contract report function - * @param accountOrSender - (optional) Used to determine if this script is being used for combinetier contract + * @param delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * @param hasReportForSingleTier - (optional) Used to determine if this script needs to be combined with another * script used for getting the ITIERV2_TIME_FOR_TIER, default is false */ constructor( number?: number | number[], - accountOrSender?: boolean, + delegatedReport?: boolean, hasReportForSingleTier?: boolean, ) { let _result: StateConfig; @@ -452,7 +452,7 @@ export class BuildReport extends CombineTierGenerator { ], }; } - super(_result, {hasReportForSingleTier, accountOrSender}); + super(_result, {hasReportForSingleTier, delegatedReport}); } }; @@ -524,7 +524,7 @@ export class ERC20BalanceTier extends CombineTierGenerator { op(VM.Opcodes.MUL, 2), ]) ]; - super({constants, sources}, {hasReportForSingleTier: true, accountOrSender: true}); + super({constants, sources}, {hasReportForSingleTier: true, delegatedReport: true}); } }; @@ -594,7 +594,7 @@ export class ERC20BalanceTier extends CombineTierGenerator { op(VM.Opcodes.MUL, 2), ]) ]; - super({constants, sources}, {hasReportForSingleTier: true, accountOrSender: true}); + super({constants, sources}, {hasReportForSingleTier: true, delegatedReport: true}); } } @@ -668,6 +668,6 @@ export class ERC20BalanceTier extends CombineTierGenerator { op(VM.Opcodes.MUL, 2), ]) ]; - super({constants, sources}, {hasReportForSingleTier: true, accountOrSender: true}); + super({constants, sources}, {hasReportForSingleTier: true, delegatedReport: true}); } } \ No newline at end of file From 41c345b18ea0096b2212564b9ed338b609c622f6 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 30 Jul 2022 00:01:16 +0000 Subject: [PATCH 061/125] update --- docs/classes/vm.md | 25 +++++++++++++++++++++++++ src/classes/vm.ts | 14 ++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 7d43baf..e14f67c 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -32,6 +32,7 @@ class VM | [hasAnyTier(tierConfig, stackReassignment)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | | [hasMinTier(tierConfig, tier, stackReassignment)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | | [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | +| [input(operand)](./vm.md#input-method-static-1) | Method to create a simple CONTEXT opcode script | | [isEqual(config1, config2, stackReassignment)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [isZero(config)](./vm.md#isZero-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | | [lt(config1, config2, stackReassignment)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | @@ -402,6 +403,30 @@ static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: S a + + +### input(operand) + +Method to create a simple CONTEXT opcode script + +Signature: + +```typescript +static input(operand: number): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| operand | `number` | context operand | + +Returns: + +`StateConfig` + +a VM script + ### isEqual(config1, config2, stackReassignment) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 326a846..d73aa41 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1785,4 +1785,18 @@ export class VM { } } + /** + * @public + * Method to create a simple CONTEXT opcode script + * + * @param operand - context operand + * @returns a VM script @see StateConfig + */ + public static input(operand: number): StateConfig { + return { + constants: [], + sources: [concat([op(VM.Opcodes.CONTEXT, operand)])] + } + } + } \ No newline at end of file From 199b26adeb1143e1af687614bbe2d1570c4c5847 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 30 Jul 2022 00:20:09 +0000 Subject: [PATCH 062/125] update --- docs/classes/buildreport.md | 2 +- docs/classes/combinetiergenerator.md | 7 +++--- docs/classes/erc1155balancetier.md | 2 +- docs/classes/erc20balancetier.md | 2 +- docs/classes/erc721balancetier.md | 2 +- .../combineTierScriptGenerator.ts | 22 ++++++++++++------- 6 files changed, 22 insertions(+), 15 deletions(-) diff --git a/docs/classes/buildreport.md b/docs/classes/buildreport.md index f2df5d6..2c4fff2 100644 --- a/docs/classes/buildreport.md +++ b/docs/classes/buildreport.md @@ -20,7 +20,7 @@ class BuildReport extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | | [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/combinetiergenerator.md b/docs/classes/combinetiergenerator.md index 072e136..eeed73a 100644 --- a/docs/classes/combinetiergenerator.md +++ b/docs/classes/combinetiergenerator.md @@ -24,7 +24,7 @@ new CombineTier(a tierAddress or a StateConfig) | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | +| [combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode | | [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract. | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8) | @@ -55,14 +55,14 @@ sources: BytesLike[]; -### combineWith(reporter, logic, mode, delegatedReport, number) +### combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number) Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode Signature: ```typescript -combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, delegatedReport?: boolean, number?: number): CombineTierGenerator; +combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, hasReportForSingleTier?: boolean, delegatedReport?: boolean, number?: number): CombineTierGenerator; ``` #### Parameters @@ -72,6 +72,7 @@ combineWith(reporter: string | StateConfig, logic: selectLteLogic, mode: selectL | reporter | `string \| StateConfig` | either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) | | logic | `selectLteLogic` | selectLte logic | | mode | `selectLteMode` | selectLte mode | +| hasReportForSingleTier | `boolean` | (optional) Used to determine if this script needs to have a second script used for getting the ITIERV2\_TIME\_FOR\_TIER for a combineTier contract reportTimeForTier, default is false | | delegatedReport | `boolean` | (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | | number | `number` | (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK\_TIMESTAMP | diff --git a/docs/classes/erc1155balancetier.md b/docs/classes/erc1155balancetier.md index 036aeeb..6b720e7 100644 --- a/docs/classes/erc1155balancetier.md +++ b/docs/classes/erc1155balancetier.md @@ -23,7 +23,7 @@ class ERC1155BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | | [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/erc20balancetier.md b/docs/classes/erc20balancetier.md index 71f258e..2399f43 100644 --- a/docs/classes/erc20balancetier.md +++ b/docs/classes/erc20balancetier.md @@ -22,7 +22,7 @@ class ERC20BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | | [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/docs/classes/erc721balancetier.md b/docs/classes/erc721balancetier.md index edf2d1a..9d40dde 100644 --- a/docs/classes/erc721balancetier.md +++ b/docs/classes/erc721balancetier.md @@ -22,7 +22,7 @@ class ERC721BalanceTier extends CombineTierGenerator | Method | Description | | --- | --- | -| [combineWith(reporter, logic, mode, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | +| [combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | | [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | | [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | | [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 400ec50..c4ac636 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -168,6 +168,8 @@ export class CombineTierGenerator { * @param reporter - either a tier contract address or a StateConfig of REPROT script (or any other form of StateConfig desired) * @param logic - selectLte logic * @param mode - selectLte mode + * @param hasReportForSingleTier - (optional) Used to determine if this script needs to have a second + * script used for getting the ITIERV2_TIME_FOR_TIER for a combineTier contract reportTimeForTier, default is false * @param delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * @param number - (optional) if passed it would be the number to compare reports against, if not passed reports will be compared against BLOCK_TIMESTAMP @@ -178,10 +180,11 @@ export class CombineTierGenerator { reporter: string | StateConfig, logic: selectLteLogic, mode: selectLteMode, + hasReportForSingleTier: boolean = false, delegatedReport?: boolean, number?: number ): CombineTierGenerator { - const _buttom = new CombineTierGenerator(reporter, {delegatedReport, hasReportForSingleTier: true}) + const _buttom = new CombineTierGenerator(reporter, {delegatedReport, hasReportForSingleTier}) const _combiner: StateConfig = { constants: number ? [number] : [], @@ -189,16 +192,19 @@ export class CombineTierGenerator { concat([ number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), - ]), - concat([ - number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), - ]), + ]) ], }; - let _result: StateConfig = VM.combiner(_buttom, _combiner, {numberOfSources: 2}); - _result = VM.combiner(this, _result, {numberOfSources: 2}); + if (hasReportForSingleTier) _combiner.sources.push( + concat([ + number ? op(VM.Opcodes.CONSTANT, 0) : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.SELECT_LTE, selectLte(logic, mode, 2)), + ]) + ) + + let _result: StateConfig = VM.combiner(_buttom, _combiner, {numberOfSources: hasReportForSingleTier ? 2 : 1}); + _result = VM.combiner(this, _result, {numberOfSources: hasReportForSingleTier ? 2 : 1}); this.constants = _result.constants; this.sources = _result.sources; From 0f07d7847e8871b563c012f5cca92dcf6bdc0f7a Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 30 Jul 2022 00:51:42 +0000 Subject: [PATCH 063/125] update --- docs/classes/vm.md | 34 ++++++++++++++ src/classes/vm.ts | 45 +++++++++++++++++++ .../script-generators/saleScriptGenerator.ts | 2 +- 3 files changed, 80 insertions(+), 1 deletion(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index e14f67c..7670eb4 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -32,6 +32,7 @@ class VM | [hasAnyTier(tierConfig, stackReassignment)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | | [hasMinTier(tierConfig, tier, stackReassignment)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | | [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | +| [incdec(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#incdec-method-static-1) | Create a new raw linear Increasing or Decreasing value StateConfig. | | [input(operand)](./vm.md#input-method-static-1) | Method to create a simple CONTEXT opcode script | | [isEqual(config1, config2, stackReassignment)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [isZero(config)](./vm.md#isZero-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | @@ -403,6 +404,39 @@ static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: S a + + +### incdec(startValue, endValue, startTimestamp, endTimestamp) + +Create a new raw linear Increasing or Decreasing value StateConfig. + +Signature: + +```typescript +static incdec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number): { + constants: (number | BigNumber)[]; + sources: Uint8Array[]; + }; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| startValue | `BigNumber` | The starting value | +| endValue | `BigNumber` | The ending value | +| startTimestamp | `number` | Start timestamp | +| endTimestamp | `number` | End timestamp | + +Returns: + +`{ + constants: (number | BigNumber)[]; + sources: Uint8Array[]; + }` + +a VM StateConfig + ### input(operand) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index d73aa41..9231514 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1799,4 +1799,49 @@ export class VM { } } + /** + * @public + * Create a new raw linear Increasing or Decreasing value StateConfig. + * + * @param startValue - The starting value + * @param endValue - The ending value + * @param startTimestamp - Start timestamp + * @param endTimestamp - End timestamp + * @returns a VM StateConfig + */ + public static incdec( + startValue: BigNumber, + endValue: BigNumber, + startTimestamp: number, + endTimestamp: number + ) { + const isInc = endValue >= startValue ? true : false; + let raiseDuration = endTimestamp - startTimestamp; + let valueChange = isInc + ? (endValue.sub(startValue)).div(raiseDuration) + : (startValue.sub(endValue)).div(raiseDuration); + + return ({ + constants: [ + startValue, + endValue, + valueChange, + startTimestamp, + ], + sources: [ + concat([ + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 0), + isInc ? op(VM.Opcodes.ADD, 2) : op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.MIN, 2), + ]) + ], + }); + } + } \ No newline at end of file diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index 2a9f60c..fc9f5e4 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -317,7 +317,7 @@ export class IncDecPrice extends PriceCurve { concat([ op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.SUB, 2), + op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 0), From e438f12f3c980d7057560fc54fe7c97a5417f482 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 30 Jul 2022 01:30:50 +0000 Subject: [PATCH 064/125] update --- docs/classes/vm.md | 44 +++++++++++++++++++++++++++++++++----- src/classes/vm.ts | 53 ++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 85 insertions(+), 12 deletions(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 7670eb4..6c451f9 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -26,13 +26,14 @@ class VM | [combiner(config1, config2, options)](./vm.md#combiner-method-static-1) | Combines 2 individual VM scripts | | [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | +| [dec(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#dec-method-static-1) | Create a new raw linear decreasing value StateConfig. | | [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | | [gt(config1, config2, stackReassignment)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | | [gte(config1, config2, stackReassignment)](./vm.md#gte-method-static-1) | Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not | | [hasAnyTier(tierConfig, stackReassignment)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | | [hasMinTier(tierConfig, tier, stackReassignment)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | | [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | -| [incdec(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#incdec-method-static-1) | Create a new raw linear Increasing or Decreasing value StateConfig. | +| [inc(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#inc-method-static-1) | Create a new raw linear increasing value StateConfig. | | [input(operand)](./vm.md#input-method-static-1) | Method to create a simple CONTEXT opcode script | | [isEqual(config1, config2, stackReassignment)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [isZero(config)](./vm.md#isZero-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | @@ -247,6 +248,39 @@ static createVMSources(OPerands: (OPerand | Uint8Array)[]): [Uint8Array]; A source + + +### dec(startValue, endValue, startTimestamp, endTimestamp) + +Create a new raw linear decreasing value StateConfig. + +Signature: + +```typescript +static dec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number): { + constants: (number | BigNumber)[]; + sources: Uint8Array[]; + }; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| startValue | `BigNumber` | The starting value | +| endValue | `BigNumber` | The ending value | +| startTimestamp | `number` | Start timestamp | +| endTimestamp | `number` | End timestamp | + +Returns: + +`{ + constants: (number | BigNumber)[]; + sources: Uint8Array[]; + }` + +a VM StateConfig + ### getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall) @@ -404,16 +438,16 @@ static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: S a - + -### incdec(startValue, endValue, startTimestamp, endTimestamp) +### inc(startValue, endValue, startTimestamp, endTimestamp) -Create a new raw linear Increasing or Decreasing value StateConfig. +Create a new raw linear increasing value StateConfig. Signature: ```typescript -static incdec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number): { +static inc(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number): { constants: (number | BigNumber)[]; sources: Uint8Array[]; }; diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 9231514..7855fbf 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1801,7 +1801,7 @@ export class VM { /** * @public - * Create a new raw linear Increasing or Decreasing value StateConfig. + * Create a new raw linear decreasing value StateConfig. * * @param startValue - The starting value * @param endValue - The ending value @@ -1809,17 +1809,14 @@ export class VM { * @param endTimestamp - End timestamp * @returns a VM StateConfig */ - public static incdec( + public static dec( startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number ) { - const isInc = endValue >= startValue ? true : false; let raiseDuration = endTimestamp - startTimestamp; - let valueChange = isInc - ? (endValue.sub(startValue)).div(raiseDuration) - : (startValue.sub(endValue)).div(raiseDuration); + let valueChange = (startValue.sub(endValue)).div(raiseDuration); return ({ constants: [ @@ -1836,7 +1833,49 @@ export class VM { op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 0), - isInc ? op(VM.Opcodes.ADD, 2) : op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.MIN, 2), + ]) + ], + }); + } + + /** + * @public + * Create a new raw linear increasing value StateConfig. + * + * @param startValue - The starting value + * @param endValue - The ending value + * @param startTimestamp - Start timestamp + * @param endTimestamp - End timestamp + * @returns a VM StateConfig + */ + public static inc( + startValue: BigNumber, + endValue: BigNumber, + startTimestamp: number, + endTimestamp: number + ) { + let raiseDuration = endTimestamp - startTimestamp; + let valueChange = (endValue.sub(startValue)).div(raiseDuration); + + return ({ + constants: [ + startValue, + endValue, + valueChange, + startTimestamp, + ], + sources: [ + concat([ + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.ADD, 2), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.MIN, 2), ]) From b2093366075d3c40069773d1ea3a5bf431662a20 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 30 Jul 2022 23:29:36 +0000 Subject: [PATCH 065/125] update RuleBuilder --- docs/classes/vm.md | 56 ++++- src/classes/vm.ts | 84 ++++++- .../script-generators/ruleBuilder.ts | 231 ++++++++++++------ 3 files changed, 289 insertions(+), 82 deletions(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 6c451f9..720668e 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -45,7 +45,9 @@ class VM | [mulTogether(configs, stackReassignment)](./vm.md#mulTogether-method-static-1) | Method to multiply multiple scripts together | | [or(configs, stackReassignment)](./vm.md#or-method-static-1) | Method to or multiple scripts together ie ANY | | [pair(amountConfig, priceConfig, stackReassignment)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | +| [setDisccount(config, condition, discount)](./vm.md#setDisccount-method-static-1) | Method to apply discount on a StateConfig based on a condition passing | | [setDiscountForTiers(config, tierAddress, tierDiscount, options)](./vm.md#setDiscountForTiers-method-static-1) | Deducts percentage off of the result of a VM script based on a tier contract. | +| [setMultiplier(config, condition, multiplier)](./vm.md#setMultiplier-method-static-1) | Method to apply multiplier to a StateConfig based on a condition passing | | [setMultiplierForTiers(config, tierAddress, tierMultiplier, options)](./vm.md#setMultiplierForTiers-method-static-1) | Multiply the result of a VM script based on a tier contract. | | [setOwnership(config, ownerAddress, options)](./vm.md#setOwnership-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | | [setTimers(configs, times, inBlockNumber)](./vm.md#setTimers-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | @@ -279,7 +281,7 @@ static dec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, e sources: Uint8Array[]; }` -a VM StateConfig +a @@ -469,7 +471,7 @@ static inc(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, e sources: Uint8Array[]; }` -a VM StateConfig +a @@ -748,6 +750,32 @@ static pair(amountConfig: StateConfig, priceConfig: StateConfig, stackReassignme a + + +### setDisccount(config, condition, discount) + +Method to apply discount on a StateConfig based on a condition passing + +Signature: + +```typescript +static setDisccount(config: StateConfig, condition: StateConfig, discount: number): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | The StateConfig to apply discount on | +| condition | [StateConfig](../interfaces/stateconfig.md) | The condition of StateConfig type | +| discount | `number` | discount percentage (between 0 - 99 and 2 decimals max) | + +Returns: + +`StateConfig` + +a + ### setDiscountForTiers(config, tierAddress, tierDiscount, options) @@ -779,6 +807,30 @@ static setDiscountForTiers(config: StateConfig, tierAddress: string, tierDiscoun a VM script + + +### setMultiplier(config, condition, multiplier) + +Method to apply multiplier to a StateConfig based on a condition passing + +Signature: + +```typescript +static setMultiplier(config: StateConfig, condition: StateConfig, multiplier: number): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | The StateConfig to apply multiplier to | +| condition | [StateConfig](../interfaces/stateconfig.md) | The condition of StateConfig type | +| multiplier | `number` | multulpier (2 decimals max) | + +Returns: + +`StateConfig` + ### setMultiplierForTiers(config, tierAddress, tierMultiplier, options) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 7855fbf..c326483 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -700,14 +700,14 @@ export class VM { const TierDiscount = paddedUInt256( BigNumber.from( '0x' + - paddedUInt32(100 - tierDiscount[7]) + - paddedUInt32(100 - tierDiscount[6]) + - paddedUInt32(100 - tierDiscount[5]) + - paddedUInt32(100 - tierDiscount[4]) + - paddedUInt32(100 - tierDiscount[3]) + - paddedUInt32(100 - tierDiscount[2]) + - paddedUInt32(100 - tierDiscount[1]) + - paddedUInt32(100 - tierDiscount[0]) + paddedUInt32(Math.floor(100 - tierDiscount[7])) + + paddedUInt32(Math.floor(100 - tierDiscount[6])) + + paddedUInt32(Math.floor(100 - tierDiscount[5])) + + paddedUInt32(Math.floor(100 - tierDiscount[4])) + + paddedUInt32(Math.floor(100 - tierDiscount[3])) + + paddedUInt32(Math.floor(100 - tierDiscount[2])) + + paddedUInt32(Math.floor(100 - tierDiscount[1])) + + paddedUInt32(Math.floor(100 - tierDiscount[0])) ) ); @@ -1807,7 +1807,7 @@ export class VM { * @param endValue - The ending value * @param startTimestamp - Start timestamp * @param endTimestamp - End timestamp - * @returns a VM StateConfig + * @returns a @see StateConfig */ public static dec( startValue: BigNumber, @@ -1849,7 +1849,7 @@ export class VM { * @param endValue - The ending value * @param startTimestamp - Start timestamp * @param endTimestamp - End timestamp - * @returns a VM StateConfig + * @returns a @see StateConfig */ public static inc( startValue: BigNumber, @@ -1883,4 +1883,68 @@ export class VM { }); } + /** + * @public + * Method to apply discount on a StateConfig based on a condition passing + * + * @param config - The StateConfig to apply discount on + * @param condition - The condition of StateConfig type + * @param discount - discount percentage (between 0 - 99 and 2 decimals max) + * @returns a @see StateConfig + */ + public static setDisccount(config: StateConfig, condition: StateConfig, discount: number): StateConfig { + if ( discount >= 0 && discount <= 99 ) { + const _discount = Math.floor(10000 - (100 * discount)); + const _discounter: StateConfig = VM.pair( + condition, + { + constants: [_discount, 10000], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.DIV, 2), + ]) + ] + } + ); + + return VM.pair(config, _discounter, false); + } + else throw new Error(`Invalid discount`) + } + + /** + * @public + * Method to apply multiplier to a StateConfig based on a condition passing + * + * @param config - The StateConfig to apply multiplier to + * @param condition - The condition of StateConfig type + * @param multiplier - multulpier (2 decimals max) + */ + public static setMultiplier(config: StateConfig, condition: StateConfig, multiplier: number): StateConfig { + const _multiply = Math.floor(100 * multiplier); + const _multiplier: StateConfig = VM.pair( + condition, + { + constants: [_multiply, 100], + sources: [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.DIV, 2), + ]) + ] + } + ); + + return VM.pair(config, _multiplier, false); + } + } \ No newline at end of file diff --git a/src/contracts/script-generators/ruleBuilder.ts b/src/contracts/script-generators/ruleBuilder.ts index 866f049..ee1ae45 100644 --- a/src/contracts/script-generators/ruleBuilder.ts +++ b/src/contracts/script-generators/ruleBuilder.ts @@ -9,28 +9,82 @@ import { areEqualConfigs, op } from "../../utils"; * Type for price/quantity scripts modifier based on a tier report */ export interface modifier { - mode: "discounter" | "multiplier", - tierAddress: string, - tierModifierValues: number[], - tierActivation?: (string | number)[], - tierContext?: BigNumber[] + /** + * Determines the modifier's mode + */ + mode: "tier_discounts" | "tier_multipliers" | "tier_values" | "discount" | "multiplier", + /** + * the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier + */ + condition: string | StateConfig, + /** + * The modifing value(s) + */ + values: number[], + /** + * Optional properties for specific modifier's mode + */ + options?: { + /** + * context for tier report of tier based modifiers + */ + tierContext?: BigNumber[], + /** + * used specifically in "tier_values" modifier to pick max value if true and min value if false + */ + pickMax?: boolean + } } /** * @public - * Type for a currency scripts used in Rulebuilder class + * Type for a currency scripts used in RuleBuilder class */ export interface vmCurrency { - qRules: StateConfig[], + /** + * Default quantity StateConfig of this currency + */ + defaultQuantity: StateConfig, + /** + * Default price StateConfig of this currency + */ + defaultPrice: StateConfig, + /** + * Array of conditions for conditional quantities + */ + quantityConditions: StateConfig[], + /** + * Array of conditional quantities + */ quantities: StateConfig[], - pRules: StateConfig[], + /** + * Array of conditions for conditional prices + */ + priceConditions: StateConfig[], + /** + * Array of conditional prices + */ prices: StateConfig[], - pModifiers: { + /** + * Quantities modifiers, modifier on a single sub-quantity StateConfig + */ + quantityModifiers: { [index: number]: modifier, }, - qModifiers: { + /** + * Prices modifiers, modifier on a single sub-price StateConfig + */ + priceModifiers: { [index: number]: modifier, }, + /** + * Top quantity modifier, modifier on all sub-quantities + */ + quantityTopModifier?: modifier, + /** + * Top price modifier, modifier on all sub-prices + */ + priceTopModifier?: modifier, } /** @@ -49,35 +103,38 @@ export class RuleBuilder { public static multiCurrency(currencies: vmCurrency[]): StateConfig { let rules_: StateConfig = {constants: [], sources: []}; - let quantities_: StateConfig[] = []; - let prices_: StateConfig[] = []; + let currencies_: StateConfig[] = []; let count = 0; for (let i = 0; i < currencies.length; i++) { + let quantities_: StateConfig = {constants: [], sources: [concat([])]}; + let prices_: StateConfig= {constants: [], sources: [concat([])]}; + if ( currencies[i].quantities.length === currencies[i].prices.length && - currencies[i].qRules.length === currencies[i].pRules.length && - currencies[i].prices.length === currencies[i].pRules.length + currencies[i].quantityConditions.length === currencies[i].priceConditions.length && + currencies[i].prices.length === currencies[i].priceConditions.length ) { - for (let j = 0; j < currencies[i].qRules.length; j++) { + for (let j = 0; j < currencies[i].quantityConditions.length; j++) { rules_ = VM.pair( rules_, - areEqualConfigs(currencies[i].qRules[j], currencies[i].pRules[j],) + areEqualConfigs(currencies[i].quantityConditions[j], currencies[i].priceConditions[j],) ? VM.pair( - currencies[i].qRules[j], - VM.stack(count * 2) + currencies[i].quantityConditions[j], + VM.stack(count * 2), + false ) : VM.pair( - currencies[i].qRules[j], - currencies[i].pRules[j], + currencies[i].quantityConditions[j], + currencies[i].priceConditions[j], false ), false ); - quantities_[i] = VM.pair( - quantities_[i], - currencies[i].qModifiers[j] + quantities_ = VM.pair( + quantities_, + currencies[i].quantityModifiers[j] ? RuleBuilder.applyModifier( VM.mulTogether([ VM.stack(count * 2), @@ -85,7 +142,7 @@ export class RuleBuilder { ], false ), - currencies[i].qModifiers[j] + currencies[i].quantityModifiers[j] ) : VM.mulTogether([ VM.stack(count * 2), @@ -96,9 +153,9 @@ export class RuleBuilder { false ); - prices_[i] = VM.pair( - prices_[i], - currencies[i].pModifiers[j] + prices_ = VM.pair( + prices_, + currencies[i].priceModifiers[j] ? RuleBuilder.applyModifier( VM.mulTogether([ VM.stack((count * 2) + 1), @@ -106,7 +163,7 @@ export class RuleBuilder { ], false ), - currencies[i].pModifiers[j] + currencies[i].priceModifiers[j] ) : VM.mulTogether([ VM.stack((count * 2) + 1), @@ -118,40 +175,37 @@ export class RuleBuilder { ); if (j + 1 === currencies[i].quantities.length) { - quantities_[i].sources[0] = concat([ - quantities_[i].sources[0], - op(VM.Opcodes.MAX, currencies[i].quantities.length) - ]) - prices_[i].sources[0] = concat([ - prices_[i].sources[0], - (op(VM.Opcodes.MIN, currencies[i].quantities.length)) - ]) - } + quantities_ = VM.pair(quantities_, currencies[i].defaultQuantity, false); + prices_ = VM.pair(prices_, currencies[i].defaultPrice, false); - if (currencies[i].qModifiers[currencies[i].quantities.length]) { - quantities_[i] = RuleBuilder.applyModifier( - quantities_[i], - currencies[i].qModifiers[currencies[i].quantities.length] - ) - } - if (currencies[i].pModifiers[currencies[i].prices.length]) { - prices_[i] = RuleBuilder.applyModifier( - prices_[i], - currencies[i].pModifiers[currencies[i].prices.length] - ) + quantities_.sources[0] = concat([ + quantities_.sources[0], + op(VM.Opcodes.MAX, currencies[i].quantities.length + 1) + ]) + prices_.sources[0] = concat([ + prices_.sources[0], + op(VM.Opcodes.MIN, currencies[i].quantities.length + 1) + ]) } count++; } + if (currencies[i].quantityTopModifier !== undefined) { + quantities_ = RuleBuilder.applyModifier( + quantities_, + currencies[i].quantityTopModifier! + ) + } + if (currencies[i].priceTopModifier !== undefined) { + prices_ = RuleBuilder.applyModifier( + prices_, + currencies[i].priceTopModifier! + ) + } + currencies_.push(VM.pair(quantities_, prices_, false)); } } - return VM.multi([ - rules_, - VM.multi(quantities_, false), - VM.multi(prices_, false) - ], - false - ); + return VM.multi([rules_, ...currencies_], false); } /** @@ -169,27 +223,64 @@ export class RuleBuilder { * Method to apply modifier to price/quantity scripts for the RuleBuilder main methods */ private static applyModifier(config: StateConfig, modifier: modifier): StateConfig { - if (modifier.mode === "multiplier") return VM.setDiscountForTiers( + + if ( + modifier.mode === "tier_multipliers" && + typeof modifier.condition === "string" && + modifier.values.length === 8 + ) return VM.setDiscountForTiers( config, - modifier.tierAddress, - modifier.tierModifierValues, - { - tierActivation: modifier.tierActivation, - tierContext: modifier.tierContext - } + modifier.condition, + modifier.values, + { tierContext: modifier.options?.tierContext } ) - else if (modifier.mode === "discounter") return VM.setDiscountForTiers( + + else if ( + modifier.mode === "tier_discounts" && + typeof modifier.condition === "string" && + modifier.values.length === 8 + ) return VM.setDiscountForTiers( config, - modifier.tierAddress, - modifier.tierModifierValues, - { - tierActivation: modifier.tierActivation, - tierContext: modifier.tierContext - } + modifier.condition, + modifier.values, + { tierContext: modifier.options?.tierContext } ) + + else if ( + modifier.mode === "tier_values" && + typeof modifier.condition === "string" && + modifier.values.length === 8 && + modifier.options?.pickMax !== undefined + ) return VM.setValueForTiers( + config, + modifier.condition, + modifier.values, + modifier.options.pickMax, + { tierContext: modifier.options?.tierContext } + ) + + else if ( + modifier.mode === "discount" && + typeof modifier.condition !== "string" && + modifier.values.length !== 0 + ) return VM.setDisccount( + config, + modifier.condition, + modifier.values[0] + ) + + else if ( + modifier.mode === "multiplier" && + typeof modifier.condition !== "string" && + modifier.values.length !== 0 + ) return VM.setMultiplier( + config, + modifier.condition, + modifier.values[0] + ) + else throw new Error("Invalid Arguments"); } - } From 018789dcd9f10c42b3236f069982e450108482f2 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 30 Jul 2022 23:32:28 +0000 Subject: [PATCH 066/125] update index.ts and docs --- docs/classes/rulebuilder.md | 68 +++++++++++++++ docs/index.md | 3 + docs/interfaces/modifier.md | 72 ++++++++++++++++ docs/interfaces/vmcurrency.md | 151 ++++++++++++++++++++++++++++++++++ src/index.ts | 1 + 5 files changed, 295 insertions(+) create mode 100644 docs/classes/rulebuilder.md create mode 100644 docs/interfaces/modifier.md create mode 100644 docs/interfaces/vmcurrency.md diff --git a/docs/classes/rulebuilder.md b/docs/classes/rulebuilder.md new file mode 100644 index 0000000..4ea6fee --- /dev/null +++ b/docs/classes/rulebuilder.md @@ -0,0 +1,68 @@ + +# Class RuleBuilder + +Class with methods to generate a rule-based StateConfig + +Signature: + +```typescript +class RuleBuilder +``` + +## Static Methods + +| Method | Description | +| --- | --- | +| [multiCurrency(currencies)](./rulebuilder.md#multiCurrency-method-static-1) | Method to generate a multi currency rule-based StateConfig | +| [singleCurrency(currency)](./rulebuilder.md#singleCurrency-method-static-1) | Method to generate a single currency rule-based StateConfig | + +## Static Method Details + + + +### multiCurrency(currencies) + +Method to generate a multi currency rule-based StateConfig + +Signature: + +```typescript +static multiCurrency(currencies: vmCurrency[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| currencies | `vmCurrency[]` | An array of vmCurrency objects | + +Returns: + +`StateConfig` + +A StateConfig + + + +### singleCurrency(currency) + +Method to generate a single currency rule-based StateConfig + +Signature: + +```typescript +static singleCurrency(currency: vmCurrency): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| currency | [vmCurrency](../interfaces/vmcurrency.md) | A vmCurrency object | + +Returns: + +`StateConfig` + +A StateConfig + diff --git a/docs/index.md b/docs/index.md index 7943188..9f6858d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -39,6 +39,7 @@ | [RainJSVM](./classes/rainjsvm.md) | - The javascript version of the RainVM, basically does the same job RainVM does but off-chain. | | [RedeemableERC20](./classes/redeemableerc20.md) | A class for calling methods on a RedeemableERC20. | | [RedeemableERC20ClaimEscrow](./classes/redeemableerc20claimescrow.md) | A class for calling methods on a RedeemableERC20ClaimEscrow. | +| [RuleBuilder](./classes/rulebuilder.md) | Class with methods to generate a rule-based StateConfig | | [Sale](./classes/sale.md) | A class for deploying and calling methods on a Sale. | | [SaleJSVM](./classes/salejsvm.md) | - The javascript version of SaleVM which inherits RainJSVM with local Sale opcodes. | | [SaleSimulation](./classes/salesimulation.md) | A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. | @@ -127,6 +128,7 @@ | [Evidence](./interfaces/evidence.md) | Structure of arbitrary evidence to support any action taken. Priviledged roles are expected to provide evidence just as applicants as an audit trail will be preserved permanently in the logs. | | [FnPtrsJSVM](./interfaces/fnptrsjsvm.md) | An interface for creating a key/value pair of opcodes functions to override. | | [IOpMeta](./interfaces/iopmeta.md) | | +| [modifier](./interfaces/modifier.md) | Type for price/quantity scripts modifier based on a tier report | | [NoticeStruct](./interfaces/noticestruct.md) | | | [OpJSVM](./interfaces/opjsvm.md) | An interface/type of JSVM opcodes' function's body | | [ReadTxOverrides](./interfaces/readtxoverrides.md) | More read about `ReadTxOverrides` that comes from CallOverrides of ethers | @@ -157,6 +159,7 @@ | [TxOverrides](./interfaces/txoverrides.md) | More read about `TxOverrides` that comes from Overrides of ethers | | [VerifyDeployArgs](./interfaces/verifydeployargs.md) | Config to initialize a Verify contract with. | | [VerifyState](./interfaces/verifystate.md) | Records the block a verify session reaches each status. If a status is not reached it is left as UNINITIALIZED, i.e. 0xFFFFFFFF. Most accounts will never be banned so most accounts will never reach every status, which is a good thing. | +| [vmCurrency](./interfaces/vmcurrency.md) | Type for a currency scripts used in RuleBuilder class | ## Namespaces diff --git a/docs/interfaces/modifier.md b/docs/interfaces/modifier.md new file mode 100644 index 0000000..0734dc7 --- /dev/null +++ b/docs/interfaces/modifier.md @@ -0,0 +1,72 @@ + +# Interface modifier + +Type for price/quantity scripts modifier based on a tier report + +Signature: + +```typescript +interface modifier +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [condition](./modifier.md#condition-property) | `string \| StateConfig` | the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier | +| [mode](./modifier.md#mode-property) | `"tier_discounts" \| "tier_multipliers" \| "tier_values" \| "discount" \| "multiplier"` | Determines the modifier's mode | +| [options](./modifier.md#options-property) |
{
    tierContext?: BigNumber[];
    pickMax?: boolean;
}
| Optional properties for specific modifier's mode | +| [values](./modifier.md#values-property) | `number[]` | The modifing value(s) | + +## Property Details + + + +### condition + +the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier + +Signature: + +```typescript +condition: string | StateConfig; +``` + + + +### mode + +Determines the modifier's mode + +Signature: + +```typescript +mode: "tier_discounts" | "tier_multipliers" | "tier_values" | "discount" | "multiplier"; +``` + + + +### options + +Optional properties for specific modifier's mode + +Signature: + +```typescript +options?: { + tierContext?: BigNumber[]; + pickMax?: boolean; + }; +``` + + + +### values + +The modifing value(s) + +Signature: + +```typescript +values: number[]; +``` diff --git a/docs/interfaces/vmcurrency.md b/docs/interfaces/vmcurrency.md new file mode 100644 index 0000000..d99451a --- /dev/null +++ b/docs/interfaces/vmcurrency.md @@ -0,0 +1,151 @@ + +# Interface vmCurrency + +Type for a currency scripts used in RuleBuilder class + +Signature: + +```typescript +interface vmCurrency +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [defaultPrice](./vmcurrency.md#defaultPrice-property) | [StateConfig](./stateconfig.md) | Default price StateConfig of this currency | +| [defaultQuantity](./vmcurrency.md#defaultQuantity-property) | [StateConfig](./stateconfig.md) | Default quantity StateConfig of this currency | +| [priceConditions](./vmcurrency.md#priceConditions-property) | `StateConfig[]` | Array of conditions for conditional prices | +| [priceModifiers](./vmcurrency.md#priceModifiers-property) |
{
    [index: number]: modifier;
}
| Prices modifiers, modifier on a single sub-price StateConfig | +| [prices](./vmcurrency.md#prices-property) | `StateConfig[]` | Array of conditional prices | +| [priceTopModifier](./vmcurrency.md#priceTopModifier-property) | [modifier](./modifier.md) | Top price modifier, modifier on all sub-prices | +| [quantities](./vmcurrency.md#quantities-property) | `StateConfig[]` | Array of conditional quantities | +| [quantityConditions](./vmcurrency.md#quantityConditions-property) | `StateConfig[]` | Array of conditions for conditional quantities | +| [quantityModifiers](./vmcurrency.md#quantityModifiers-property) |
{
    [index: number]: modifier;
}
| Quantities modifiers, modifier on a single sub-quantity StateConfig | +| [quantityTopModifier](./vmcurrency.md#quantityTopModifier-property) | [modifier](./modifier.md) | Top quantity modifier, modifier on all sub-quantities | + +## Property Details + + + +### defaultPrice + +Default price StateConfig of this currency + +Signature: + +```typescript +defaultPrice: StateConfig; +``` + + + +### defaultQuantity + +Default quantity StateConfig of this currency + +Signature: + +```typescript +defaultQuantity: StateConfig; +``` + + + +### priceConditions + +Array of conditions for conditional prices + +Signature: + +```typescript +priceConditions: StateConfig[]; +``` + + + +### priceModifiers + +Prices modifiers, modifier on a single sub-price StateConfig + +Signature: + +```typescript +priceModifiers: { + [index: number]: modifier; + }; +``` + + + +### prices + +Array of conditional prices + +Signature: + +```typescript +prices: StateConfig[]; +``` + + + +### priceTopModifier + +Top price modifier, modifier on all sub-prices + +Signature: + +```typescript +priceTopModifier?: modifier; +``` + + + +### quantities + +Array of conditional quantities + +Signature: + +```typescript +quantities: StateConfig[]; +``` + + + +### quantityConditions + +Array of conditions for conditional quantities + +Signature: + +```typescript +quantityConditions: StateConfig[]; +``` + + + +### quantityModifiers + +Quantities modifiers, modifier on a single sub-quantity StateConfig + +Signature: + +```typescript +quantityModifiers: { + [index: number]: modifier; + }; +``` + + + +### quantityTopModifier + +Top quantity modifier, modifier on all sub-quantities + +Signature: + +```typescript +quantityTopModifier?: modifier; +``` diff --git a/src/index.ts b/src/index.ts index 333a068..4fc0383 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,6 +21,7 @@ export * from './contracts/autoApprove'; export * from './contracts/script-generators/saleScriptGenerator'; export * from './contracts/script-generators/combineTierScriptGenerator'; export * from './contracts/script-generators/emissionsERC20ScriptGenerator'; +export * from './contracts/script-generators/ruleBuilder'; export * from './jsvm/RainJSVM'; export * from './jsvm/CombineTierJSVM'; From 550b34f7dfefd1470ec7abfd79e84f7252a02071 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sun, 31 Jul 2022 15:19:59 +0000 Subject: [PATCH 067/125] update --- docs/classes/vm.md | 40 +---- src/classes/vm.ts | 365 ++++++++++++++++++++++----------------------- 2 files changed, 186 insertions(+), 219 deletions(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 720668e..6b07513 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -51,7 +51,6 @@ class VM | [setMultiplierForTiers(config, tierAddress, tierMultiplier, options)](./vm.md#setMultiplierForTiers-method-static-1) | Multiply the result of a VM script based on a tier contract. | | [setOwnership(config, ownerAddress, options)](./vm.md#setOwnership-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | | [setTimers(configs, times, inBlockNumber)](./vm.md#setTimers-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | -| [setValueForTiers(config, tierAddress, tierValues, ascending, options)](./vm.md#setValueForTiers-method-static-1) | Produce different values from the result of a VM script based on a tier contract. | | [stack(operand)](./vm.md#stack-method-static-1) | Method to create a simple STACK opcode script | ## Static Property Details @@ -789,6 +788,7 @@ static setDiscountForTiers(config: StateConfig, tierAddress: string, tierDiscoun index?: number; tierActivation?: (string | number)[]; tierContext?: BigNumber[]; + delegatedReport?: boolean; }): StateConfig; ``` @@ -799,7 +799,7 @@ static setDiscountForTiers(config: StateConfig, tierAddress: string, tierDiscoun | config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | | tierAddress | `string` | the contract address of the tier contract. | | tierDiscount | `number[]` | an array of 8 items - the discount value (range 0 - 99) of each tier are the 8 items of the array. | -| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the discount, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the discount.(used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. | +| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
    delegatedReport?: boolean;
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the discount, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the discount.(used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | Returns: @@ -844,6 +844,7 @@ static setMultiplierForTiers(config: StateConfig, tierAddress: string, tierMulti index?: number; tierActivation?: (string | number)[]; tierContext?: BigNumber[]; + delegatedReport?: boolean; }): StateConfig; ``` @@ -854,7 +855,7 @@ static setMultiplierForTiers(config: StateConfig, tierAddress: string, tierMulti | config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | | tierAddress | `string` | the contract address of the tier contract. | | tierMultiplier | `number[]` | an array of 8 items - the multiplier value (2 decimals max) of each tier are the 8 items of the array. | -| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the multiplier, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the multiplier.(used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. | +| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
    delegatedReport?: boolean;
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the tierMultiplier applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the multiplier, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the multiplier.(used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT\[0\] | Returns: @@ -920,39 +921,6 @@ static setTimers(configs: StateConfig[], times: number[], inBlockNumber?: boolea a VM script - - -### setValueForTiers(config, tierAddress, tierValues, ascending, options) - -Produce different values from the result of a VM script based on a tier contract. - -Signature: - -```typescript -static setValueForTiers(config: StateConfig, tierAddress: string, tierValues: number[], ascending: boolean, options?: { - index?: number; - tierActivation?: (string | number)[]; - tierContext?: BigNumber[]; - finalDecimals?: number; - }): StateConfig; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| config | [StateConfig](../interfaces/stateconfig.md) | the main VM script | -| tierAddress | `string` | the contract address of the tier contract. | -| tierValues | `number[]` | an array of 8 items - the value (6 decimals max) of each tier are the 8 items of the array. | -| ascending | `boolean` | true if the tierValues (argument above) are ascending and false if descending from tier 1 to 8 | -| options |
{
    index?: number;
    tierActivation?: (string \| number)[];
    tierContext?: BigNumber[];
    finalDecimals?: number;
}
| used for additional configuraions: - (param) index to identify which sources item in config.sources the TierValues applies to, if not specified, it will be 0. - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the different value, e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the respective value. (used for stake tier contract) - (param) tierContext an array of values mostly used for stake tier contracts. - (param) finalDecimals produce the final values in this fixed decimals - 0 by deafult | - -Returns: - -`StateConfig` - -a VM script - ### stack(operand) diff --git a/src/classes/vm.ts b/src/classes/vm.ts index c326483..7a75523 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -11,7 +11,6 @@ import { selectLteLogic, callSize, arrayify, - parseUnits, } from '../utils'; /** @@ -682,6 +681,8 @@ export class VM { * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the discount, * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the discount.(used for stake tier contract) * - (param) tierContext an array of values mostly used for stake tier contracts. + * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract + * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * * @returns a VM script @see StateConfig */ @@ -692,10 +693,12 @@ export class VM { options?: { index?: number, tierActivation?: (string | number)[], - tierContext?: BigNumber[] + tierContext?: BigNumber[], + delegatedReport?: boolean, } ): StateConfig { const Index = options?.index ? options.index : 0; + const delegated = options?.delegatedReport !== undefined ? options.delegatedReport : false; const TierDiscount = paddedUInt256( BigNumber.from( @@ -739,7 +742,7 @@ export class VM { op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), + delegated ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), CONTEXT_.sources, op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.BLOCK_TIMESTAMP), @@ -763,7 +766,7 @@ export class VM { op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), + delegated ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), CONTEXT_.sources, op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), @@ -849,6 +852,8 @@ export class VM { * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the multiplier, * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the multiplier.(used for stake tier contract) * - (param) tierContext an array of values mostly used for stake tier contracts. + * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract + * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * * @returns a VM script @see StateConfig */ @@ -859,10 +864,12 @@ export class VM { options?: { index?: number, tierActivation?: (string | number)[], - tierContext?: BigNumber[] + tierContext?: BigNumber[], + delegatedReport?: boolean, } ): StateConfig { const Index = options?.index ? options.index : 0; + const delegated = options?.delegatedReport !== undefined ? options.delegatedReport : false; const TierMultiplier = paddedUInt256( BigNumber.from( @@ -902,7 +909,7 @@ export class VM { concat([ op(VM.Opcodes.CONSTANT, 2), op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), + delegated ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), CONTEXT_.sources, op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.BLOCK_TIMESTAMP), @@ -925,7 +932,7 @@ export class VM { op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), + delegated ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), CONTEXT_.sources, op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), op(VM.Opcodes.SATURATING_DIFF), @@ -1418,184 +1425,176 @@ export class VM { return result_; } - /** - * Produce different values from the result of a VM script based on a tier contract. - * - * @param config - the main VM script - * @param tierAddress - the contract address of the tier contract. - * @param tierValues - an array of 8 items - the value (6 decimals max) of each tier are the 8 items of the array. - * @param ascending - true if the tierValues (argument above) are ascending and false if descending from tier 1 to 8 - * @param options - used for additional configuraions: - * - (param) index to identify which sources item in config.sources the TierValues applies to, if not specified, it will be 0. - * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the different value, - * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the respective value. (used for stake tier contract) - * - (param) tierContext an array of values mostly used for stake tier contracts. - * - (param) finalDecimals produce the final values in this fixed decimals - 0 by deafult - * - * @returns a VM script @see StateConfig - */ - public static setValueForTiers( - config: StateConfig, - tierAddress: string, - tierValues: number[], - ascending: boolean, - options?: { - index?: number, - tierActivation?: (string | number)[], - tierContext?: BigNumber[], - finalDecimals?: number - } - ): StateConfig { - const Index = options?.index ? options.index : 0; - const Decimals = ("1").padEnd( - (options?.finalDecimals ? options.finalDecimals - 6 >= 0 ? options.finalDecimals - 6 : 6 - options.finalDecimals : 0), - "0" - ); - - const TierValues = paddedUInt256( - BigNumber.from( - '0x' + - paddedUInt32(parseUnits(tierValues[7].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[6].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[5].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[4].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[3].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[2].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[1].toString(), 6)) + - paddedUInt32(parseUnits(tierValues[0].toString(), 6)) - ) - ); + // /** + // * Produce different values from the result of a VM script based on a tier contract. + // * + // * @param tierAddress - the contract address of the tier contract. + // * @param tierValues - an array of 8 items - the value (6 decimals max) of each tier are the 8 items of the array. + // * @param options - used for additional configuraions: + // * - (param) index to identify which sources item in config.sources the TierValues applies to, if not specified, it will be 0. + // * - (param) tierActivation An array of numbers, representing the amount of timestamps each tier must hold in order to get the different value, + // * e.g. the first item in array is 100 mean tier 1 needs to be held at least 100 timestamps to get the respective value. (used for stake tier contract) + // * - (param) tierContext an array of values mostly used for stake tier contracts. + // * - (param) finalDecimals produce the final values in this fixed decimals - 0 by deafult + // * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract + // * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] + // * + // * @returns a VM script @see StateConfig + // */ + // public static setValueForTiers( + // tierAddress: string, + // tierValues: BigNumber[], + // options?: { + // index?: number, + // tierActivation?: (string | number)[], + // tierContext?: BigNumber[], + // finalDecimals?: number, + // delegatedReport?: boolean + // } + // ): StateConfig { + // const Index = options?.index ? options.index : 0; + // const delegated = options?.delegatedReport !== undefined ? options.delegatedReport : false; + // const Decimals = ("1").padEnd((options?.finalDecimals ? options.finalDecimals : 0), "0"); + + // const TierValues = paddedUInt256( + // BigNumber.from( + // '0x' + + // paddedUInt32(tierValues[7]) + + // paddedUInt32(tierValues[6]) + + // paddedUInt32(tierValues[5]) + + // paddedUInt32(tierValues[4]) + + // paddedUInt32(tierValues[3]) + + // paddedUInt32(tierValues[2]) + + // paddedUInt32(tierValues[1]) + + // paddedUInt32(tierValues[0]) + // ) + // ); - const CONTEXT_ = options?.tierContext && options.tierContext.length === 8 - ? { - constants: options.tierContext, - sources: concat([ - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.CONSTANT, 8), - op(VM.Opcodes.CONSTANT, 9), - op(VM.Opcodes.CONSTANT, 10), - op(VM.Opcodes.CONSTANT, 11), - op(VM.Opcodes.CONSTANT, 12), - op(VM.Opcodes.CONSTANT, 13), - op(VM.Opcodes.CONSTANT, 14), - ]) - } - : { - constants: [], - sources: concat([]) - } - - const TIER_BASED_VAL = () => - concat([ - op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), - CONTEXT_.sources, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), - op(VM.Opcodes.BLOCK_TIMESTAMP), - op( - VM.Opcodes.SELECT_LTE, - selectLte(selectLteLogic.every, selectLteMode.first, 2) - ), - ]); - const TIER_BASED_VAL_ZIPMAP = (valSize: number) => - concat([ - op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), - ascending ? op(VM.Opcodes.MAX, 8) : op(VM.Opcodes.MIN, 8), - op(VM.Opcodes.CONSTANT, 5), - options?.finalDecimals - ? options?.finalDecimals - 6 >= 0 - ? op(VM.Opcodes.MUL, 2) - : op(VM.Opcodes.DIV, 2) - : op(VM.Opcodes.MUL, 2), - ascending ? op(VM.Opcodes.MAX, 2) : op(VM.Opcodes.MIN, 2), - ]); - const ACTIVATION_TIME = () => - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), - CONTEXT_.sources, - op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), - op(VM.Opcodes.SATURATING_DIFF), - op(VM.Opcodes.CONSTANT, 6), - ]); - const TIER_BASED_VAL_FN = (i: number) => - concat([ - op(VM.Opcodes.CONSTANT, i), - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, i), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.EAGER_IF), - ]); - const ACTIVATION_TIME_FN = () => - concat([ - op(VM.Opcodes.CONSTANT, 16), - op(VM.Opcodes.CONSTANT, 17), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 3), - ]); - - const _tierValuesConfig: StateConfig = - options?.tierActivation && options.tierActivation.length === 8 - ? { - constants: [ - ethers.constants.MaxUint256, - tierAddress, - TierValues, - ascending ? '0' : '0xffffffff', - '0xffffffff', - Decimals, - paddedUInt256( - BigNumber.from( - '0x' + - paddedUInt32(options.tierActivation[7]) + - paddedUInt32(options.tierActivation[6]) + - paddedUInt32(options.tierActivation[5]) + - paddedUInt32(options.tierActivation[4]) + - paddedUInt32(options.tierActivation[3]) + - paddedUInt32(options.tierActivation[2]) + - paddedUInt32(options.tierActivation[1]) + - paddedUInt32(options.tierActivation[0]) - ) - ), - ...CONTEXT_.constants, - ], - sources: [ - concat([ - TIER_BASED_VAL(), - ACTIVATION_TIME(), - TIER_BASED_VAL_ZIPMAP(2), - ]), - concat([ - ACTIVATION_TIME_FN(), - TIER_BASED_VAL_FN(7 + CONTEXT_.constants.length), - op(VM.Opcodes.EAGER_IF), - ]), - ], - } - : { - constants: [ - ethers.constants.MaxUint256, - tierAddress, - TierValues, - ascending ? '0' : '0xffffffff', - '0xffffffff', - Decimals, - ...CONTEXT_.constants - ], - sources: [ - concat([TIER_BASED_VAL(), TIER_BASED_VAL_ZIPMAP(0)]), - TIER_BASED_VAL_FN(6 + CONTEXT_.constants.length), - ], - }; - - return VM.combiner(config, _tierValuesConfig, { index: Index }); - } + // const CONTEXT_ = options?.tierContext && options.tierContext.length === 8 + // ? { + // constants: options.tierContext, + // sources: concat([ + // op(VM.Opcodes.CONSTANT, 7), + // op(VM.Opcodes.CONSTANT, 8), + // op(VM.Opcodes.CONSTANT, 9), + // op(VM.Opcodes.CONSTANT, 10), + // op(VM.Opcodes.CONSTANT, 11), + // op(VM.Opcodes.CONSTANT, 12), + // op(VM.Opcodes.CONSTANT, 13), + // op(VM.Opcodes.CONSTANT, 14), + // ]) + // } + // : { + // constants: [], + // sources: concat([]) + // } + + // const TIER_BASED_VAL = () => + // concat([ + // op(VM.Opcodes.CONSTANT, 2), + // op(VM.Opcodes.CONSTANT, 1), + // delegated ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), + // CONTEXT_.sources, + // op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), + // op(VM.Opcodes.BLOCK_TIMESTAMP), + // op( + // VM.Opcodes.SELECT_LTE, + // selectLte(selectLteLogic.every, selectLteMode.first, 2) + // ), + // ]); + // const TIER_BASED_VAL_ZIPMAP = (valSize: number) => + // concat([ + // op(VM.Opcodes.ZIPMAP, callSize(1, 3, valSize)), + // op(VM.Opcodes.ADD, 8), + // op(VM.Opcodes.CONSTANT, 5), + // op(VM.Opcodes.MUL, 2), + // ]); + // const ACTIVATION_TIME = () => + // concat([ + // op(VM.Opcodes.CONSTANT, 0), + // op(VM.Opcodes.BLOCK_TIMESTAMP), + // op(VM.Opcodes.UPDATE_TIMES_FOR_TIER_RANGE, tierRange(0, 8)), + // op(VM.Opcodes.CONSTANT, 1), + // delegated ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), + // CONTEXT_.sources, + // op(VM.Opcodes.ITIERV2_REPORT, CONTEXT_.constants.length), + // op(VM.Opcodes.SATURATING_DIFF), + // op(VM.Opcodes.CONSTANT, 6), + // ]); + // const TIER_BASED_VAL_FN = (i: number) => + // concat([ + // op(VM.Opcodes.CONSTANT, i), + // op(VM.Opcodes.CONSTANT, 4), + // op(VM.Opcodes.LESS_THAN), + // op(VM.Opcodes.CONSTANT, i), + // op(VM.Opcodes.CONSTANT, 3), + // op(VM.Opcodes.EAGER_IF), + // ]); + // const ACTIVATION_TIME_FN = () => + // concat([ + // op(VM.Opcodes.CONSTANT, 16), + // op(VM.Opcodes.CONSTANT, 17), + // op(VM.Opcodes.LESS_THAN), + // op(VM.Opcodes.CONSTANT, 3), + // ]); + + // const _tierValuesConfig: StateConfig = + // options?.tierActivation && options.tierActivation.length === 8 + // ? { + // constants: [ + // ethers.constants.MaxUint256, + // tierAddress, + // TierValues, + // ascending ? '0' : '0xffffffff', + // '0xffffffff', + // Decimals, + // paddedUInt256( + // BigNumber.from( + // '0x' + + // paddedUInt32(options.tierActivation[7]) + + // paddedUInt32(options.tierActivation[6]) + + // paddedUInt32(options.tierActivation[5]) + + // paddedUInt32(options.tierActivation[4]) + + // paddedUInt32(options.tierActivation[3]) + + // paddedUInt32(options.tierActivation[2]) + + // paddedUInt32(options.tierActivation[1]) + + // paddedUInt32(options.tierActivation[0]) + // ) + // ), + // ...CONTEXT_.constants, + // ], + // sources: [ + // concat([ + // TIER_BASED_VAL(), + // ACTIVATION_TIME(), + // TIER_BASED_VAL_ZIPMAP(2), + // ]), + // concat([ + // ACTIVATION_TIME_FN(), + // TIER_BASED_VAL_FN(7 + CONTEXT_.constants.length), + // op(VM.Opcodes.EAGER_IF), + // ]), + // ], + // } + // : { + // constants: [ + // ethers.constants.MaxUint256, + // tierAddress, + // TierValues, + // ascending ? '0' : '0xffffffff', + // '0xffffffff', + // Decimals, + // ...CONTEXT_.constants + // ], + // sources: [ + // concat([TIER_BASED_VAL(), TIER_BASED_VAL_ZIPMAP(0)]), + // TIER_BASED_VAL_FN(6 + CONTEXT_.constants.length), + // ], + // }; + + // return VM.combiner(config, _tierValuesConfig, { index: Index }); + // } /** * A method to generate the StateConfig out of EVM assets' opcodes From 584d67a173a4e807e6acd24179949a78cc68b5a2 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sun, 31 Jul 2022 15:31:33 +0000 Subject: [PATCH 068/125] update --- docs/interfaces/modifier.md | 8 ++--- .../script-generators/ruleBuilder.ts | 29 +++++++------------ 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/docs/interfaces/modifier.md b/docs/interfaces/modifier.md index 0734dc7..e8d4307 100644 --- a/docs/interfaces/modifier.md +++ b/docs/interfaces/modifier.md @@ -14,8 +14,8 @@ interface modifier | Property | Type | Description | | --- | --- | --- | | [condition](./modifier.md#condition-property) | `string \| StateConfig` | the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier | -| [mode](./modifier.md#mode-property) | `"tier_discounts" \| "tier_multipliers" \| "tier_values" \| "discount" \| "multiplier"` | Determines the modifier's mode | -| [options](./modifier.md#options-property) |
{
    tierContext?: BigNumber[];
    pickMax?: boolean;
}
| Optional properties for specific modifier's mode | +| [mode](./modifier.md#mode-property) | `"tier_discounts" \| "tier_multipliers" \| "discount" \| "multiplier"` | Determines the modifier's mode | +| [options](./modifier.md#options-property) |
{
    tierContext?: BigNumber[];
    delegatedReport?: boolean;
}
| Optional properties for specific modifier's mode | | [values](./modifier.md#values-property) | `number[]` | The modifing value(s) | ## Property Details @@ -41,7 +41,7 @@ Determines the modifier's mode Signature: ```typescript -mode: "tier_discounts" | "tier_multipliers" | "tier_values" | "discount" | "multiplier"; +mode: "tier_discounts" | "tier_multipliers" | "discount" | "multiplier"; ``` @@ -55,7 +55,7 @@ Optional properties for specific modifier's mode ```typescript options?: { tierContext?: BigNumber[]; - pickMax?: boolean; + delegatedReport?: boolean; }; ``` diff --git a/src/contracts/script-generators/ruleBuilder.ts b/src/contracts/script-generators/ruleBuilder.ts index ee1ae45..b414864 100644 --- a/src/contracts/script-generators/ruleBuilder.ts +++ b/src/contracts/script-generators/ruleBuilder.ts @@ -12,7 +12,7 @@ export interface modifier { /** * Determines the modifier's mode */ - mode: "tier_discounts" | "tier_multipliers" | "tier_values" | "discount" | "multiplier", + mode: "tier_discounts" | "tier_multipliers" | "discount" | "multiplier", /** * the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier */ @@ -30,9 +30,9 @@ export interface modifier { */ tierContext?: BigNumber[], /** - * used specifically in "tier_values" modifier to pick max value if true and min value if false + * Used in tier modifiers to determins if the delegated reported is available or not, i.e use SENDER if false and CONTEXT[0] if true */ - pickMax?: boolean + delegatedReport?: boolean } } @@ -232,7 +232,10 @@ export class RuleBuilder { config, modifier.condition, modifier.values, - { tierContext: modifier.options?.tierContext } + { + tierContext: modifier.options?.tierContext, + delegatedReport: modifier.options?.delegatedReport + } ) else if ( @@ -243,20 +246,10 @@ export class RuleBuilder { config, modifier.condition, modifier.values, - { tierContext: modifier.options?.tierContext } - ) - - else if ( - modifier.mode === "tier_values" && - typeof modifier.condition === "string" && - modifier.values.length === 8 && - modifier.options?.pickMax !== undefined - ) return VM.setValueForTiers( - config, - modifier.condition, - modifier.values, - modifier.options.pickMax, - { tierContext: modifier.options?.tierContext } + { + tierContext: modifier.options?.tierContext, + delegatedReport: modifier.options?.delegatedReport + } ) else if ( From 36183c71e97fc7ed66c8ca9153aca99270365ff4 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sun, 31 Jul 2022 19:54:17 +0000 Subject: [PATCH 069/125] update --- docs/interfaces/modifier.md | 4 ++-- src/contracts/script-generators/ruleBuilder.ts | 10 ++++------ 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/docs/interfaces/modifier.md b/docs/interfaces/modifier.md index e8d4307..ed16f99 100644 --- a/docs/interfaces/modifier.md +++ b/docs/interfaces/modifier.md @@ -14,7 +14,7 @@ interface modifier | Property | Type | Description | | --- | --- | --- | | [condition](./modifier.md#condition-property) | `string \| StateConfig` | the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier | -| [mode](./modifier.md#mode-property) | `"tier_discounts" \| "tier_multipliers" \| "discount" \| "multiplier"` | Determines the modifier's mode | +| [mode](./modifier.md#mode-property) | `"tier-discounts" \| "tier-multipliers" \| "discount" \| "multiplier"` | Determines the modifier's mode | | [options](./modifier.md#options-property) |
{
    tierContext?: BigNumber[];
    delegatedReport?: boolean;
}
| Optional properties for specific modifier's mode | | [values](./modifier.md#values-property) | `number[]` | The modifing value(s) | @@ -41,7 +41,7 @@ Determines the modifier's mode Signature: ```typescript -mode: "tier_discounts" | "tier_multipliers" | "discount" | "multiplier"; +mode: "tier-discounts" | "tier-multipliers" | "discount" | "multiplier"; ``` diff --git a/src/contracts/script-generators/ruleBuilder.ts b/src/contracts/script-generators/ruleBuilder.ts index b414864..c710a13 100644 --- a/src/contracts/script-generators/ruleBuilder.ts +++ b/src/contracts/script-generators/ruleBuilder.ts @@ -12,7 +12,7 @@ export interface modifier { /** * Determines the modifier's mode */ - mode: "tier_discounts" | "tier_multipliers" | "discount" | "multiplier", + mode: "tier-discounts" | "tier-multipliers" | "discount" | "multiplier", /** * the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier */ @@ -225,7 +225,7 @@ export class RuleBuilder { private static applyModifier(config: StateConfig, modifier: modifier): StateConfig { if ( - modifier.mode === "tier_multipliers" && + modifier.mode === "tier-multipliers" && typeof modifier.condition === "string" && modifier.values.length === 8 ) return VM.setDiscountForTiers( @@ -239,7 +239,7 @@ export class RuleBuilder { ) else if ( - modifier.mode === "tier_discounts" && + modifier.mode === "tier-discounts" && typeof modifier.condition === "string" && modifier.values.length === 8 ) return VM.setDiscountForTiers( @@ -274,6 +274,4 @@ export class RuleBuilder { else throw new Error("Invalid Arguments"); } -} - - +} \ No newline at end of file From dc5a5ba46aa9e40c6ade15233cc4a5481d96da02 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 1 Aug 2022 00:51:51 +0000 Subject: [PATCH 070/125] debug and fix for critical issue of VM.combiner issue: loss of sources when combining when 2 configs were exactly the same --- docs/classes/vm.md | 198 ++++++++++++++++++++++++------- docs/index.md | 2 +- src/classes/vm.ts | 282 ++++++++++++++++++++++++++++++--------------- 3 files changed, 346 insertions(+), 136 deletions(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 6b07513..2010814 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -1,7 +1,9 @@ # Class VM -//TODO: Add doc +The main class cointaining the methods for constructing and making VM scripts. + +Please note that all methods (except combiner, pair and multi) in this class assume that 'config'(s) parameter passed to them are in fact resolved to one value. Meaning that each config passed to the methods will not result in more than one value in the VM stack. This is essential point to pay attention to when using this class's methods Signature: @@ -27,6 +29,7 @@ class VM | [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | | [dec(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#dec-method-static-1) | Create a new raw linear decreasing value StateConfig. | +| [eq(config1, config2, stackReassignment)](./vm.md#eq-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | | [gt(config1, config2, stackReassignment)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | | [gte(config1, config2, stackReassignment)](./vm.md#gte-method-static-1) | Method to check if a script is greater than or equal to another script or not. will return 1 if is true and 0 if it is not | @@ -35,14 +38,15 @@ class VM | [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | | [inc(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#inc-method-static-1) | Create a new raw linear increasing value StateConfig. | | [input(operand)](./vm.md#input-method-static-1) | Method to create a simple CONTEXT opcode script | -| [isEqual(config1, config2, stackReassignment)](./vm.md#isEqual-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | -| [isZero(config)](./vm.md#isZero-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | | [lt(config1, config2, stackReassignment)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | | [lte(config1, config2, stackReassignment)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | | [max(configs, stackReassignment)](./vm.md#max-method-static-1) | Method to get maximum of multiple scripts | | [min(configs, stackReassignment)](./vm.md#min-method-static-1) | Method to get minimum of multiple scripts | | [multi(configs, stackReassignment)](./vm.md#multi-method-static-1) | A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. | | [mulTogether(configs, stackReassignment)](./vm.md#mulTogether-method-static-1) | Method to multiply multiple scripts together | +| [nand(configs, stackReassignment)](./vm.md#nand-method-static-1) | Method to nand multiple scripts together | +| [nor(configs, stackReassignment)](./vm.md#nor-method-static-1) | Method to nor multiple scripts together | +| [not(config)](./vm.md#not-method-static-1) | Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not | | [or(configs, stackReassignment)](./vm.md#or-method-static-1) | Method to or multiple scripts together ie ANY | | [pair(amountConfig, priceConfig, stackReassignment)](./vm.md#pair-method-static-1) | method to create paired(amount-price) StateConfig, which is used for sale, orderbook, etc | | [setDisccount(config, condition, discount)](./vm.md#setDisccount-method-static-1) | Method to apply discount on a StateConfig based on a condition passing | @@ -52,6 +56,8 @@ class VM | [setOwnership(config, ownerAddress, options)](./vm.md#setOwnership-method-static-1) | Make an address the owner of a VM Script - checks the sender address against the owner address and if it passes the final result will be determined by the main VM script and if it fails it will be 0 by default. | | [setTimers(configs, times, inBlockNumber)](./vm.md#setTimers-method-static-1) | A method to merge multiple (more than 1) scripts to be executed based on time slices. | | [stack(operand)](./vm.md#stack-method-static-1) | Method to create a simple STACK opcode script | +| [xnor(configs, stackReassignment)](./vm.md#xnor-method-static-1) | Method to xnor multiple scripts together | +| [xor(configs, stackReassignment)](./vm.md#xor-method-static-1) | Method to xor multiple scripts together | ## Static Property Details @@ -282,6 +288,32 @@ static dec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, e a + + +### eq(config1, config2, stackReassignment) + +Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not + +Signature: + +```typescript +static eq(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | + +Returns: + +`StateConfig` + +a + ### getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall) @@ -496,16 +528,16 @@ static input(operand: number): StateConfig; a VM script - + -### isEqual(config1, config2, stackReassignment) +### lt(config1, config2, stackReassignment) -Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not +Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static isEqual(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; +static lt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters @@ -522,23 +554,25 @@ static isEqual(config1: StateConfig, config2: StateConfig, stackReassignment?: b a - + -### isZero(config) +### lte(config1, config2, stackReassignment) -Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not +Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not Signature: ```typescript -static isZero(config: StateConfig): StateConfig; +static lte(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| config | [StateConfig](../interfaces/stateconfig.md) | the script to check | +| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | +| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -546,24 +580,23 @@ static isZero(config: StateConfig): StateConfig; a - + -### lt(config1, config2, stackReassignment) +### max(configs, stackReassignment) -Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not +Method to get maximum of multiple scripts Signature: ```typescript -static lt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; +static max(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | -| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| configs | `StateConfig[]` | an array of configs to get maximum of | | stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -572,24 +605,23 @@ static lt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolea a - + -### lte(config1, config2, stackReassignment) +### min(configs, stackReassignment) -Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not +Method to get minimum of multiple scripts Signature: ```typescript -static lte(config1: StateConfig, config2: StateConfig, stackReassignment?: boolean): StateConfig; +static min(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| config1 | [StateConfig](../interfaces/stateconfig.md) | first script | -| config2 | [StateConfig](../interfaces/stateconfig.md) | second script | +| configs | `StateConfig[]` | an array of configs to get minimum of | | stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -598,23 +630,23 @@ static lte(config1: StateConfig, config2: StateConfig, stackReassignment?: boole a - + -### max(configs, stackReassignment) +### multi(configs, stackReassignment) -Method to get maximum of multiple scripts +A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. Signature: ```typescript -static max(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +static multi(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| configs | `StateConfig[]` | an array of configs to get maximum of | +| configs | `StateConfig[]` | An array of StateConfigs to combine together and its lengths should be more than 2 (can use VM.pair() method for combining 2 configs - | | stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -623,23 +655,23 @@ static max(configs: StateConfig[], stackReassignment?: boolean): StateConfig; a - + -### min(configs, stackReassignment) +### mulTogether(configs, stackReassignment) -Method to get minimum of multiple scripts +Method to multiply multiple scripts together Signature: ```typescript -static min(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +static mulTogether(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| configs | `StateConfig[]` | an array of configs to get minimum of | +| configs | `StateConfig[]` | an array of configs to multiply | | stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -648,23 +680,23 @@ static min(configs: StateConfig[], stackReassignment?: boolean): StateConfig; a - + -### multi(configs, stackReassignment) +### nand(configs, stackReassignment) -A method to combine multiple StateConfigs together each on top of the other at the first item in final sources. +Method to nand multiple scripts together Signature: ```typescript -static multi(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +static nand(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| configs | `StateConfig[]` | An array of StateConfigs to combine together and its lengths should be more than 2 (can use VM.pair() method for combining 2 configs - | +| configs | `StateConfig[]` | an array of configs to nand | | stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -673,23 +705,23 @@ static multi(configs: StateConfig[], stackReassignment?: boolean): StateConfig; a - + -### mulTogether(configs, stackReassignment) +### nor(configs, stackReassignment) -Method to multiply multiple scripts together +Method to nor multiple scripts together Signature: ```typescript -static mulTogether(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +static nor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| configs | `StateConfig[]` | an array of configs to multiply | +| configs | `StateConfig[]` | an array of configs to nor | | stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | Returns: @@ -698,6 +730,30 @@ static mulTogether(configs: StateConfig[], stackReassignment?: boolean): StateCo a + + +### not(config) + +Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not + +Signature: + +```typescript +static not(config: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | the script to check | + +Returns: + +`StateConfig` + +a + ### or(configs, stackReassignment) @@ -945,3 +1001,57 @@ static stack(operand: number): StateConfig; a VM script + + +### xnor(configs, stackReassignment) + +Method to xnor multiple scripts together + +This method when used in a contract will be gas intensive specially the configs or number of them are larg already + +Signature: + +```typescript +static xnor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to xnor | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | + +Returns: + +`StateConfig` + +a + + + +### xor(configs, stackReassignment) + +Method to xor multiple scripts together + +This method when used in a contract will be gas intensive specially the configs or number of them are larg already + +Signature: + +```typescript +static xor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| configs | `StateConfig[]` | an array of configs to xor | +| stackReassignment | `boolean` | (optional) pass false if STACK opcode operands dont need to be reassigned to their new relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine | + +Returns: + +`StateConfig` + +a + diff --git a/docs/index.md b/docs/index.md index 9f6858d..a9437bb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -50,7 +50,7 @@ | [Verify](./classes/verify.md) | A class for deploying and calling methods on a Verify. | | [VerifyTier](./classes/verifytier.md) | A class for deploying and calling methods on a VerifyTier.

A contract that is `VerifyTier` expects to derive tiers from the time the account was approved by the underlying `Verify` contract. The approval block numbers defer to `State.since` returned from `Verify.state`. | | [vLBP](./classes/vlbp.md) | - A sub-class of PriceCurve for creating an vLBP i.e virtual LBP sale type. | -| [VM](./classes/vm.md) | //TODO: Add doc | +| [VM](./classes/vm.md) | The main class cointaining the methods for constructing and making VM scripts. | | [vmSimulation](./classes/vmsimulation.md) | A class for creating a simulation environment for running pure RainVM off-chain using JSVM. | ## Enumerations diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 7a75523..7c3cc18 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -282,8 +282,6 @@ export enum Debug { } /** - * @public - * * Parameter that will use to converted to the source. * * Use an opcode and operand (optional) @@ -292,8 +290,13 @@ export type OPerand = [number, (number | BytesLike | utils.Hexable)?]; /** * @public - * - * //TODO: Add doc + * The main class cointaining the methods for constructing and making VM scripts. + * + * @remarks + * Please note that all methods (except combiner, pair and multi) in this class assume + * that 'config'(s) parameter passed to them are in fact resolved to one value. Meaning + * that each config passed to the methods will not result in more than one value in the + * VM stack. This is essential point to pay attention to when using this class's methods */ export class VM { /** @@ -351,8 +354,8 @@ export class VM { ): StateConfig { const NumberOfSources = options?.numberOfSources !== undefined ? options.numberOfSources : 1; - let sourceModify1; - let sourceModify2; + let sourceModify1: Uint8Array[] = []; + let sourceModify2: Uint8Array[] = []; const constants = [...config1.constants, ...config2.constants]; let sources: BytesLike[]; @@ -370,112 +373,104 @@ export class VM { if (NumberOfSources === 0) { for (let i = 0; i < config1.sources.length; i++) { - sourceModify1 = arrayify(config1.sources[i], { + sourceModify1[i] = arrayify(config1.sources[i], { allowMissingPrefix: true, }); - for (let j = 0; j < sourceModify1.length; j++) { - if (sourceModify1[j] === 0) { - if (sourceModify1[j + 1] >= config1.constants.length) { - sourceModify1[j + 1] += config2.constants.length; + for (let j = 0; j < sourceModify1[i].length; j++) { + if (sourceModify1[i][j] === 0) { + if (sourceModify1[i][j + 1] >= config1.constants.length) { + sourceModify1[i][j + 1] += config2.constants.length; } } - if (sourceModify1[j] === 4) { - sourceModify1[j + 1]++; + if (sourceModify1[i][j] === 4) { + sourceModify1[i][j + 1]++; } j++; } - config1.sources[i] = sourceModify1; } for (let i = 0; i < config2.sources.length; i++) { - sourceModify2 = arrayify(config2.sources[i], { + sourceModify2[i] = arrayify(config2.sources[i], { allowMissingPrefix: true, }); - for (let j = 0; j < sourceModify2.length; j++) { - if (sourceModify2[j] === 0) { - if (sourceModify2[j + 1] < config2.constants.length) { - sourceModify2[j + 1] += config1.constants.length; + for (let j = 0; j < sourceModify2[i].length; j++) { + if (sourceModify2[i][j] === 0) { + if (sourceModify2[i][j + 1] < config2.constants.length) { + sourceModify2[i][j + 1] += config1.constants.length; } else { - sourceModify2[j + 1] += argCount + config1.constants.length; + sourceModify2[i][j + 1] += argCount + config1.constants.length; } } - if (sourceModify2[j] === 4) { - sourceModify2[j + 1] += config1.sources.length; + if (sourceModify2[i][j] === 4) { + sourceModify2[i][j + 1] += config1.sources.length; } j++; } - config2.sources[i] = sourceModify2; } sources = [ - config1.sources[0], - config2.sources[0], - ...config1.sources.splice(1), - ...config2.sources.splice(1), + sourceModify1[0], + sourceModify2[0], + ...sourceModify1.splice(1), + ...sourceModify2.splice(1), ]; } else { const Index = options?.index ? options.index : 0; for (let i = 0; i < config1.sources.length; i++) { - sourceModify1 = arrayify(config1.sources[i], { + sourceModify1[i] = arrayify(config1.sources[i], { allowMissingPrefix: true, }); - for (let j = 0; j < sourceModify1.length; j++) { - if (sourceModify1[j] === 0) { - if (sourceModify1[j + 1] >= config1.constants.length) { - sourceModify1[j + 1] += config2.constants.length; + for (let j = 0; j < sourceModify1[i].length; j++) { + if (sourceModify1[i][j] === 0) { + if (sourceModify1[i][j + 1] >= config1.constants.length) { + sourceModify1[i][j + 1] += config2.constants.length; } } j++; } - config1.sources[i] = sourceModify1; } for (let i = 0; i < config2.sources.length; i++) { - sourceModify2 = arrayify(config2.sources[i], { + sourceModify2[i] = arrayify(config2.sources[i], { allowMissingPrefix: true, }); - for (let j = 0; j < sourceModify2.length; j++) { - if (sourceModify2[j] === 0) { - if (sourceModify2[j + 1] < config2.constants.length) { - sourceModify2[j + 1] += config1.constants.length; + for (let j = 0; j < sourceModify2[i].length; j++) { + if (sourceModify2[i][j] === 0) { + if (sourceModify2[i][j + 1] < config2.constants.length) { + sourceModify2[i][j + 1] += config1.constants.length; } else { - sourceModify2[j + 1] += config1.constants.length + argCount; + sourceModify2[i][j + 1] += config1.constants.length + argCount; } } - if (sourceModify2[j] === 4) { + if (sourceModify2[i][j] === 4) { const srcIndexIncrement = config1.sources.length - NumberOfSources; - const srcIndex = sourceModify2[j + 1] & 7; - sourceModify2[j + 1] = + const srcIndex = sourceModify2[i][j + 1] & 7; + sourceModify2[i][j + 1] = srcIndex < NumberOfSources - ? sourceModify2[j + 1] + Index - : sourceModify2[j + 1] + srcIndexIncrement; + ? sourceModify2[i][j + 1] + Index + : sourceModify2[i][j + 1] + srcIndexIncrement; } j++; } - config2.sources[i] = sourceModify2; } - if (options?.position && options.position.length === NumberOfSources) { for (let i = 0; i < NumberOfSources; i++) { - const sourceModify = arrayify(config1.sources[Index + i], { - allowMissingPrefix: true, - }); - config1.sources[Index + i] = concat([ - sourceModify.subarray(0, options.position[i] * 2), - config2.sources[i], - sourceModify.subarray(options.position[i] * 2), + sourceModify1[Index + i] = concat([ + sourceModify1[Index + i].subarray(0, options.position[i] * 2), + sourceModify2[i], + sourceModify1[Index + i].subarray(options.position[i] * 2), ]); } } else { for (let i = 0; i < NumberOfSources; i++) { - config1.sources[Index + i] = concat([ - config1.sources[Index + i], - config2.sources[i], + sourceModify1[Index + i] = concat([ + sourceModify1[Index + i], + sourceModify2[i], ]); } } - config2.sources.splice(0, NumberOfSources); - sources = [...config1.sources, ...config2.sources]; + sourceModify2.splice(0, NumberOfSources); + sources = [...sourceModify1, ...sourceModify2]; } let offset = 0; @@ -1224,6 +1219,67 @@ export class VM { return result_; } + /** + * Method to create an if/else script + * + * @param condition - the condition script ie the if check statement + * @param ifStatement - the script(statement) if the check passes + * @param elseStatement - the script(statement) if the check fails + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine + * @returns a @see StateConfig + */ + public static ifelse( + condition: StateConfig, + ifStatement: StateConfig, + elseStatement: StateConfig, + stackReassignment: boolean = true + ): StateConfig { + + let result_ = VM.multi([condition, ifStatement, elseStatement], stackReassignment) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EAGER_IF) + ]) + + return result_; + } + + /** + * Methdo to create a simple signle value script, ie CONTANT + * + * @param value - the value + * + * @returns a @see StateConfig + */ + public static constant(value: BigNumberish): StateConfig { + if (!(value instanceof BigNumber)) { + value = BigNumber.from(value); + } + + return { + constants: [value], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])] + }; + } + + /** + * Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not + * + * @param config - the script to check + * + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + */ + public static not(config: StateConfig): StateConfig { + config.sources[0] = concat([ + config.sources[0], + op(VM.Opcodes.ISZERO) + ]) + + return config; + } + /** * Method to and multiple scripts together ie EVERY * @@ -1263,64 +1319,108 @@ export class VM { } /** - * Method to create an if/else script + * Method to nand multiple scripts together * - * @param condition - the condition script ie the if check statement - * @param ifStatement - the script(statement) if the check passes - * @param elseStatement - the script(statement) if the check fails + * @param configs - an array of configs to nand * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static ifelse( - condition: StateConfig, - ifStatement: StateConfig, - elseStatement: StateConfig, - stackReassignment: boolean = true - ): StateConfig { + public static nand(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.EVERY, configs.length), + op(VM.Opcodes.ISZERO) + ]) - let result_ = VM.multi([condition, ifStatement, elseStatement], stackReassignment) + return result_; + } + + /** + * Method to nor multiple scripts together + * + * @param configs - an array of configs to nor + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + */ + public static nor(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + let result_ = VM.multi(configs, stackReassignment) result_.sources[0] = concat([ result_.sources[0], - op(VM.Opcodes.EAGER_IF) + op(VM.Opcodes.ANY, configs.length), + op(VM.Opcodes.ISZERO) ]) return result_; } /** - * Methdo to create a simple signle value script, ie CONTANT + * Method to xor multiple scripts together * - * @param value - the value + * @remarks + * This method when used in a contract will be gas intensive specially the configs or number of them are larg already * - * @returns a @see StateConfig + * @param configs - an array of configs to xor + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine + * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static constant(value: BigNumberish): StateConfig { - if (!(value instanceof BigNumber)) { - value = BigNumber.from(value); - } - - return { - constants: [value], - sources: [concat([op(VM.Opcodes.CONSTANT, 0)])] + public static xor(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + const and: StateConfig = {constants: [], sources: [concat([op(VM.Opcodes.EVERY, configs.length)])]}; + const nor: StateConfig = { + constants: [], + sources: [ + concat([ + op(VM.Opcodes.ANY, configs.length), + op(VM.Opcodes.ISZERO) + ]) + ] }; + let result_ = VM.multi([...configs, and, ...configs, nor], stackReassignment) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.ISZERO), + ]); + + return result_; } /** - * Method to check if a script is zero or not. will return 1 if is zero and 0 if it is not + * Method to xnor multiple scripts together * - * @param config - the script to check + * @remarks + * This method when used in a contract will be gas intensive specially the configs or number of them are larg already * + * @param configs - an array of configs to xnor + * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new + * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own + * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static isZero(config: StateConfig): StateConfig { - config.sources[0] = concat([ - config.sources[0], - op(VM.Opcodes.ISZERO) - ]) + public static xnor(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { + const and: StateConfig = {constants: [], sources: [concat([op(VM.Opcodes.EVERY, configs.length)])]}; + const nor: StateConfig = { + constants: [], + sources: [ + concat([ + op(VM.Opcodes.ANY, configs.length), + op(VM.Opcodes.ISZERO) + ]) + ] + }; + let result_ = VM.multi([...configs, and, ...configs, nor], stackReassignment) + result_.sources[0] = concat([ + result_.sources[0], + op(VM.Opcodes.ANY, 2) + ]); - return config; + return result_; } /** @@ -1333,7 +1433,7 @@ export class VM { * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) */ - public static isEqual(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { + public static eq(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { let result_ = VM.pair(config1, config2, stackReassignment); result_.sources[0] = concat([ result_.sources[0], From 9ad4a371682a2c1fb8bd97ce62b35435d63ccd4a Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 1 Aug 2022 01:37:41 +0000 Subject: [PATCH 071/125] update --- docs/classes/vm.md | 38 ++++++++++++++------------------------ src/classes/vm.ts | 40 ++++++++++++++++++++++------------------ 2 files changed, 36 insertions(+), 42 deletions(-) diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 2010814..93df552 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -28,7 +28,7 @@ class VM | [combiner(config1, config2, options)](./vm.md#combiner-method-static-1) | Combines 2 individual VM scripts | | [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | -| [dec(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#dec-method-static-1) | Create a new raw linear decreasing value StateConfig. | +| [dec(startValue, endValue, startPoint, endPoint, byBlock)](./vm.md#dec-method-static-1) | Create a new raw linear decreasing value StateConfig. | | [eq(config1, config2, stackReassignment)](./vm.md#eq-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | | [gt(config1, config2, stackReassignment)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | @@ -36,7 +36,7 @@ class VM | [hasAnyTier(tierConfig, stackReassignment)](./vm.md#hasAnyTier-method-static-1) | Method to check if an address has any tier status or not, i.e if is in tier contract or not | | [hasMinTier(tierConfig, tier, stackReassignment)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | | [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | -| [inc(startValue, endValue, startTimestamp, endTimestamp)](./vm.md#inc-method-static-1) | Create a new raw linear increasing value StateConfig. | +| [inc(startValue, endValue, startPoint, endPoint, byBlock)](./vm.md#inc-method-static-1) | Create a new raw linear increasing value StateConfig. | | [input(operand)](./vm.md#input-method-static-1) | Method to create a simple CONTEXT opcode script | | [lt(config1, config2, stackReassignment)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | | [lte(config1, config2, stackReassignment)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | @@ -257,17 +257,14 @@ A source -### dec(startValue, endValue, startTimestamp, endTimestamp) +### dec(startValue, endValue, startPoint, endPoint, byBlock) Create a new raw linear decreasing value StateConfig. Signature: ```typescript -static dec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number): { - constants: (number | BigNumber)[]; - sources: Uint8Array[]; - }; +static dec(startValue: BigNumber, endValue: BigNumber, startPoint: number, endPoint: number, byBlock?: boolean): StateConfig; ``` #### Parameters @@ -276,15 +273,13 @@ static dec(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, e | --- | --- | --- | | startValue | `BigNumber` | The starting value | | endValue | `BigNumber` | The ending value | -| startTimestamp | `number` | Start timestamp | -| endTimestamp | `number` | End timestamp | +| startPoint | `number` | Starting point, either timestamp or block number | +| endPoint | `number` | Ending point, either timestamp or block number | +| byBlock | `boolean` | Whether increasing by block or timestamp, pass true to be based on block | Returns: -`{ - constants: (number | BigNumber)[]; - sources: Uint8Array[]; - }` +`StateConfig` a @@ -473,17 +468,14 @@ a -### inc(startValue, endValue, startTimestamp, endTimestamp) +### inc(startValue, endValue, startPoint, endPoint, byBlock) Create a new raw linear increasing value StateConfig. Signature: ```typescript -static inc(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, endTimestamp: number): { - constants: (number | BigNumber)[]; - sources: Uint8Array[]; - }; +static inc(startValue: BigNumber, endValue: BigNumber, startPoint: number, endPoint: number, byBlock?: boolean): StateConfig; ``` #### Parameters @@ -492,15 +484,13 @@ static inc(startValue: BigNumber, endValue: BigNumber, startTimestamp: number, e | --- | --- | --- | | startValue | `BigNumber` | The starting value | | endValue | `BigNumber` | The ending value | -| startTimestamp | `number` | Start timestamp | -| endTimestamp | `number` | End timestamp | +| startPoint | `number` | Starting point, either timestamp or block number | +| endPoint | `number` | Ending point, either timestamp or block number | +| byBlock | `boolean` | Whether increasing by block or timestamp, pass true to be based on block | Returns: -`{ - constants: (number | BigNumber)[]; - sources: Uint8Array[]; - }` +`StateConfig` a diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 7c3cc18..4073891 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -1904,29 +1904,31 @@ export class VM { * * @param startValue - The starting value * @param endValue - The ending value - * @param startTimestamp - Start timestamp - * @param endTimestamp - End timestamp + * @param startPoint - Starting point, either timestamp or block number + * @param endPoint - Ending point, either timestamp or block number + * @param byBlock - Whether increasing by block or timestamp, pass true to be based on block * @returns a @see StateConfig */ public static dec( startValue: BigNumber, endValue: BigNumber, - startTimestamp: number, - endTimestamp: number - ) { - let raiseDuration = endTimestamp - startTimestamp; - let valueChange = (startValue.sub(endValue)).div(raiseDuration); + startPoint: number, + endPoint: number, + byBlock: boolean = false + ): StateConfig { + let duration = endPoint - startPoint; + let valueChange = (startValue.sub(endValue)).div(duration); return ({ constants: [ startValue, endValue, valueChange, - startTimestamp, + startPoint, ], sources: [ concat([ - op(VM.Opcodes.BLOCK_TIMESTAMP), + byBlock ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 2), @@ -1946,29 +1948,31 @@ export class VM { * * @param startValue - The starting value * @param endValue - The ending value - * @param startTimestamp - Start timestamp - * @param endTimestamp - End timestamp + * @param startPoint - Starting point, either timestamp or block number + * @param endPoint - Ending point, either timestamp or block number + * @param byBlock - Whether increasing by block or timestamp, pass true to be based on block * @returns a @see StateConfig */ public static inc( startValue: BigNumber, endValue: BigNumber, - startTimestamp: number, - endTimestamp: number - ) { - let raiseDuration = endTimestamp - startTimestamp; - let valueChange = (endValue.sub(startValue)).div(raiseDuration); + startPoint: number, + endPoint: number, + byBlock: boolean = false + ): StateConfig { + let duration = endPoint - startPoint; + let valueChange = (endValue.sub(startValue)).div(duration); return ({ constants: [ startValue, endValue, valueChange, - startTimestamp, + startPoint, ], sources: [ concat([ - op(VM.Opcodes.BLOCK_TIMESTAMP), + byBlock ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), op(VM.Opcodes.CONSTANT, 3), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 2), From 0d9374f9053ae42d7cbdd773dc4be9d2b06ac55b Mon Sep 17 00:00:00 2001 From: Josh Hardy Date: Mon, 1 Aug 2022 12:21:43 +0100 Subject: [PATCH 072/125] making super call the first line in the constructor for iTierV2 class --- src/classes/iTierV2.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/classes/iTierV2.ts b/src/classes/iTierV2.ts index 91ab5d7..9978004 100644 --- a/src/classes/iTierV2.ts +++ b/src/classes/iTierV2.ts @@ -79,12 +79,13 @@ export class ITierV2 extends FactoryContract { * @param signer - The signer to get connected to the instance * @returns A new instance of ITierV2 contract from the address with Signer */ - constructor(address: string, signer: Signer) { + constructor(address: string, signer: Signer) { + super(address, signer); + ITierV2.checkAddress(address); - super(address, signer); const _iTierV2 = ITierV2__factory.connect(address, signer); - + this.report = _iTierV2.report; this.reportTimeForTier = _iTierV2.reportTimeForTier; } From 08a2e8cdda9fb57543d3d2163a6f3511eeee146f Mon Sep 17 00:00:00 2001 From: Josh Hardy Date: Mon, 1 Aug 2022 12:25:44 +0100 Subject: [PATCH 073/125] moving super calls --- src/contracts/autoApprove.ts | 21 +++++++++++---------- src/contracts/emissionsERC20.ts | 9 +++++---- src/contracts/generics/seedDance.ts | 3 ++- src/contracts/noticeBoard.ts | 2 +- src/contracts/orderBook.ts | 21 +++++++++++---------- src/contracts/redeemableERC20.ts | 2 +- src/contracts/redeemableERC20ClaimEscrow.ts | 3 ++- src/contracts/sale.ts | 5 +++-- src/contracts/stake.ts | 5 +++-- src/contracts/tiers/combineTier.ts | 11 ++++++----- src/contracts/tiers/verifyTier.ts | 4 ++-- src/contracts/verify.ts | 3 ++- 12 files changed, 49 insertions(+), 40 deletions(-) diff --git a/src/contracts/autoApprove.ts b/src/contracts/autoApprove.ts index a82e0b6..84e49c1 100644 --- a/src/contracts/autoApprove.ts +++ b/src/contracts/autoApprove.ts @@ -49,10 +49,11 @@ export class AutoApprove extends FactoryContract { * @returns A new AutoApprove instance * */ - constructor(address: string, signer: Signer) { + constructor(address: string, signer: Signer) { + super(address, signer); + AutoApprove.checkAddress(address); - super(address, signer); const _autoApprove = AutoApprove__factory.connect(address, signer); this.afterAdd = _autoApprove.afterAdd; @@ -143,7 +144,7 @@ export class AutoApprove extends FactoryContract { /** * @public */ - public readonly afterApprove :( + public readonly afterApprove: ( approver_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & { from?: string | Promise } @@ -197,13 +198,13 @@ export class AutoApprove extends FactoryContract { overrides?: ReadTxOverrides ) => Promise; - /** - * Pointers to opcode functions, necessary for being able to read the packedBytes - * - * @param overrides - @see ReadTxOverrides - * @returns the opcode functions pointers - */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index a575b51..733ccef 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -77,11 +77,12 @@ export class EmissionsERC20 extends ITierV2 { * */ constructor(address: string, signer: Signer) { + super(address, signer); + EmissionsERC20.checkAddress(address); - super(address, signer); const _emission = EmissionsERC20__factory.connect(address, signer); - + this.allowDelegatedClaims = _emission.allowDelegatedClaims; this.allowance = _emission.allowance; this.approve = _emission.approve; @@ -97,7 +98,7 @@ export class EmissionsERC20 extends ITierV2 { this.transfer = _emission.transfer; this.transferFrom = _emission.transferFrom; this.storageOpcodesRange = _emission.storageOpcodesRange; - this.packedFunctionPointers = _emission.packedFunctionPointers; + this.packedFunctionPointers = _emission.packedFunctionPointers; } /** @@ -374,7 +375,7 @@ export class EmissionsERC20 extends ITierV2 { * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** diff --git a/src/contracts/generics/seedDance.ts b/src/contracts/generics/seedDance.ts index 8899da8..0c6a243 100644 --- a/src/contracts/generics/seedDance.ts +++ b/src/contracts/generics/seedDance.ts @@ -35,9 +35,10 @@ export class SeedDance extends RainContract { * @returns A new SeedDance instance */ constructor(address: string, signer: Signer) { + super(address, signer); + SeedDance.checkAddress(address); - super(address, signer); const _seedDance = SeedDance__factory.connect(address, signer); this.canRevealUntil = _seedDance.canRevealUntil diff --git a/src/contracts/noticeBoard.ts b/src/contracts/noticeBoard.ts index 651f909..78dd2d0 100644 --- a/src/contracts/noticeBoard.ts +++ b/src/contracts/noticeBoard.ts @@ -46,8 +46,8 @@ export class NoticeBoard extends RainContract { * */ constructor(address: string, signer: Signer) { - NoticeBoard.checkAddress(address); super(address, signer); + NoticeBoard.checkAddress(address); const _noticeBoard = NoticeBoard__factory.connect(address, signer); this.createNotices = _noticeBoard.createNotices; } diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index bcf8f95..2af6df3 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -58,9 +58,10 @@ export class OrderBook extends RainContract { * @returns A new OrderBook instance */ constructor(address: string, signer: Signer) { + super(address, signer); + OrderBook.checkAddress(address); - super(address, signer); const _orderBook = OrderBook__factory.connect(address, signer); this.addOrder = _orderBook.addOrder; @@ -69,7 +70,7 @@ export class OrderBook extends RainContract { this.removeOrder = _orderBook.removeOrder; this.storageOpcodesRange = _orderBook.storageOpcodesRange; this.withdraw = _orderBook.withdraw; - this.packedFunctionPointers = _orderBook.packedFunctionPointers; + this.packedFunctionPointers = _orderBook.packedFunctionPointers; } /** @@ -191,13 +192,13 @@ export class OrderBook extends RainContract { overrides?: ReadTxOverrides ) => Promise; - /** - * Pointers to opcode functions, necessary for being able to read the packedBytes - * - * @param overrides - @see ReadTxOverrides - * @returns the opcode functions pointers - */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** @@ -263,7 +264,7 @@ export type WithdrawConfig = { * @public * Type for clear vaultIds used when in @see clear when clearing 2 orders that will collect the bounties into its vaults */ - export type ClearConfig = { +export type ClearConfig = { aInputIndex: BigNumberish; aOutputIndex: BigNumberish; bInputIndex: BigNumberish; diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index 49c8637..053f7ef 100644 --- a/src/contracts/redeemableERC20.ts +++ b/src/contracts/redeemableERC20.ts @@ -50,8 +50,8 @@ export class RedeemableERC20 extends FactoryContract { * */ constructor(address: string, signer: Signer) { - RedeemableERC20.checkAddress(address); super(address, signer); + RedeemableERC20.checkAddress(address); const _redeemable = RedeemableERC20__factory.connect(address, signer); this.allowance = _redeemable.allowance; diff --git a/src/contracts/redeemableERC20ClaimEscrow.ts b/src/contracts/redeemableERC20ClaimEscrow.ts index 6850676..ef1cd97 100644 --- a/src/contracts/redeemableERC20ClaimEscrow.ts +++ b/src/contracts/redeemableERC20ClaimEscrow.ts @@ -62,9 +62,10 @@ export class RedeemableERC20ClaimEscrow extends RainContract { tokenAddress: string, signer: Signer ) { + super(address, signer); + RedeemableERC20ClaimEscrow.checkAddress(address); - super(address, signer); const _claimEsrow = RedeemableERC20ClaimEscrow__factory.connect( address, signer diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index 40f40b4..c8c731a 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -93,9 +93,10 @@ export class Sale extends FactoryContract { * */ constructor(address: string, signer: Signer) { + super(address, signer); + Sale.checkAddress(address); - super(address, signer); const _sale = Sale__factory.connect(address, signer); this.buy = _sale.buy; @@ -111,7 +112,7 @@ export class Sale extends FactoryContract { this.token = _sale.token; this.packedFunctionPointers = _sale.packedFunctionPointers; this.storageOpcodesRange = _sale.storageOpcodesRange; - this.packedFunctionPointers = _sale.packedFunctionPointers; + this.packedFunctionPointers = _sale.packedFunctionPointers; } /** diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts index 899c928..e057603 100644 --- a/src/contracts/stake.ts +++ b/src/contracts/stake.ts @@ -38,11 +38,12 @@ export class Stake extends ITierV2 { * @returns A new Stake instance */ constructor(address: string, signer: Signer) { + super(address, signer); + Stake.checkAddress(address); - super(address, signer); const _stake = Stake__factory.connect(address, signer); - + this.allowance = _stake.allowance; this.approve = _stake.approve; this.balanceOf = _stake.balanceOf; diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index aa50e79..ee3cc1a 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -94,10 +94,11 @@ export class CombineTier extends ITierV2 { * @returns A new combineTier instance */ constructor(address: string, signer: Signer) { + super(address, signer); + CombineTier.checkAddress(address); const _combineTier = CombineTier__factory.connect(address, signer); - super(address, signer); this.storageOpcodesRange = _combineTier.storageOpcodesRange; this.packedFunctionPointers = _combineTier.packedFunctionPointers; @@ -196,12 +197,12 @@ export class CombineTier extends ITierV2 { * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; /** * @public */ - public readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; + public readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; /** * @public @@ -224,7 +225,7 @@ export class CombineTier extends ITierV2 { * @param tokenId - (optional) the tokenId used if the type of the BalanceTier is ERC1155 * @returns A new combineTier instance */ - public static deployBalanceTier = async( + public static deployBalanceTier = async ( address: string, type: "erc20" | "erc721" | "erc1155", levels: (number | string)[], @@ -242,7 +243,7 @@ export class CombineTier extends ITierV2 { if (type === "erc721") { _balanceTierConfig = new ERC721BalanceTier(levels, address) } - if ( type === "erc1155" && tokenId) { + if (type === "erc1155" && tokenId) { _balanceTierConfig = new ERC1155BalanceTier(levels, tokenId, address) } const deplyArg: CombineTierDeployArgs = { diff --git a/src/contracts/tiers/verifyTier.ts b/src/contracts/tiers/verifyTier.ts index 2910ab4..8b6db3a 100644 --- a/src/contracts/tiers/verifyTier.ts +++ b/src/contracts/tiers/verifyTier.ts @@ -40,9 +40,9 @@ export class VerifyTier extends ITierV2 { * @returns A new VerifyTier instance */ constructor(address: string, signer: Signer) { - VerifyTier.checkAddress(address); - super(address, signer); + + VerifyTier.checkAddress(address); } /** diff --git a/src/contracts/verify.ts b/src/contracts/verify.ts index 839d529..f2b8e5b 100644 --- a/src/contracts/verify.ts +++ b/src/contracts/verify.ts @@ -80,9 +80,10 @@ export class Verify extends FactoryContract { * */ constructor(address: string, signer: Signer) { + super(address, signer); + Verify.checkAddress(address); - super(address, signer); const _verify = Verify__factory.connect(address, signer); this.callback = _verify.callback; From 79650cd1cbf3d33f13fdb2991fdd0a85feb2c740 Mon Sep 17 00:00:00 2001 From: Josh Hardy Date: Mon, 1 Aug 2022 12:29:18 +0100 Subject: [PATCH 074/125] Revert "moving super calls" This reverts commit 08a2e8cdda9fb57543d3d2163a6f3511eeee146f. --- src/classes/iTierV2.ts | 4 ++-- src/contracts/autoApprove.ts | 21 ++++++++++----------- src/contracts/emissionsERC20.ts | 9 ++++----- src/contracts/generics/seedDance.ts | 3 +-- src/contracts/noticeBoard.ts | 2 +- src/contracts/orderBook.ts | 21 ++++++++++----------- src/contracts/redeemableERC20.ts | 2 +- src/contracts/redeemableERC20ClaimEscrow.ts | 3 +-- src/contracts/sale.ts | 5 ++--- src/contracts/stake.ts | 5 ++--- src/contracts/tiers/combineTier.ts | 11 +++++------ src/contracts/tiers/verifyTier.ts | 4 ++-- src/contracts/verify.ts | 3 +-- 13 files changed, 42 insertions(+), 51 deletions(-) diff --git a/src/classes/iTierV2.ts b/src/classes/iTierV2.ts index 9978004..f613f71 100644 --- a/src/classes/iTierV2.ts +++ b/src/classes/iTierV2.ts @@ -80,10 +80,10 @@ export class ITierV2 extends FactoryContract { * @returns A new instance of ITierV2 contract from the address with Signer */ constructor(address: string, signer: Signer) { - super(address, signer); - ITierV2.checkAddress(address); + super(address, signer); + const _iTierV2 = ITierV2__factory.connect(address, signer); this.report = _iTierV2.report; diff --git a/src/contracts/autoApprove.ts b/src/contracts/autoApprove.ts index 84e49c1..a82e0b6 100644 --- a/src/contracts/autoApprove.ts +++ b/src/contracts/autoApprove.ts @@ -49,11 +49,10 @@ export class AutoApprove extends FactoryContract { * @returns A new AutoApprove instance * */ - constructor(address: string, signer: Signer) { - super(address, signer); - + constructor(address: string, signer: Signer) { AutoApprove.checkAddress(address); + super(address, signer); const _autoApprove = AutoApprove__factory.connect(address, signer); this.afterAdd = _autoApprove.afterAdd; @@ -144,7 +143,7 @@ export class AutoApprove extends FactoryContract { /** * @public */ - public readonly afterApprove: ( + public readonly afterApprove :( approver_: string, evidences_: EvidenceConfig[], overrides?: TxOverrides & { from?: string | Promise } @@ -198,13 +197,13 @@ export class AutoApprove extends FactoryContract { overrides?: ReadTxOverrides ) => Promise; - /** - * Pointers to opcode functions, necessary for being able to read the packedBytes - * - * @param overrides - @see ReadTxOverrides - * @returns the opcode functions pointers - */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index 733ccef..a575b51 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -77,12 +77,11 @@ export class EmissionsERC20 extends ITierV2 { * */ constructor(address: string, signer: Signer) { - super(address, signer); - EmissionsERC20.checkAddress(address); + super(address, signer); const _emission = EmissionsERC20__factory.connect(address, signer); - + this.allowDelegatedClaims = _emission.allowDelegatedClaims; this.allowance = _emission.allowance; this.approve = _emission.approve; @@ -98,7 +97,7 @@ export class EmissionsERC20 extends ITierV2 { this.transfer = _emission.transfer; this.transferFrom = _emission.transferFrom; this.storageOpcodesRange = _emission.storageOpcodesRange; - this.packedFunctionPointers = _emission.packedFunctionPointers; + this.packedFunctionPointers = _emission.packedFunctionPointers; } /** @@ -375,7 +374,7 @@ export class EmissionsERC20 extends ITierV2 { * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** diff --git a/src/contracts/generics/seedDance.ts b/src/contracts/generics/seedDance.ts index 0c6a243..8899da8 100644 --- a/src/contracts/generics/seedDance.ts +++ b/src/contracts/generics/seedDance.ts @@ -35,10 +35,9 @@ export class SeedDance extends RainContract { * @returns A new SeedDance instance */ constructor(address: string, signer: Signer) { - super(address, signer); - SeedDance.checkAddress(address); + super(address, signer); const _seedDance = SeedDance__factory.connect(address, signer); this.canRevealUntil = _seedDance.canRevealUntil diff --git a/src/contracts/noticeBoard.ts b/src/contracts/noticeBoard.ts index 78dd2d0..651f909 100644 --- a/src/contracts/noticeBoard.ts +++ b/src/contracts/noticeBoard.ts @@ -46,8 +46,8 @@ export class NoticeBoard extends RainContract { * */ constructor(address: string, signer: Signer) { - super(address, signer); NoticeBoard.checkAddress(address); + super(address, signer); const _noticeBoard = NoticeBoard__factory.connect(address, signer); this.createNotices = _noticeBoard.createNotices; } diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index 2af6df3..bcf8f95 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -58,10 +58,9 @@ export class OrderBook extends RainContract { * @returns A new OrderBook instance */ constructor(address: string, signer: Signer) { - super(address, signer); - OrderBook.checkAddress(address); + super(address, signer); const _orderBook = OrderBook__factory.connect(address, signer); this.addOrder = _orderBook.addOrder; @@ -70,7 +69,7 @@ export class OrderBook extends RainContract { this.removeOrder = _orderBook.removeOrder; this.storageOpcodesRange = _orderBook.storageOpcodesRange; this.withdraw = _orderBook.withdraw; - this.packedFunctionPointers = _orderBook.packedFunctionPointers; + this.packedFunctionPointers = _orderBook.packedFunctionPointers; } /** @@ -192,13 +191,13 @@ export class OrderBook extends RainContract { overrides?: ReadTxOverrides ) => Promise; - /** - * Pointers to opcode functions, necessary for being able to read the packedBytes - * - * @param overrides - @see ReadTxOverrides - * @returns the opcode functions pointers - */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + /** + * Pointers to opcode functions, necessary for being able to read the packedBytes + * + * @param overrides - @see ReadTxOverrides + * @returns the opcode functions pointers + */ + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; } /** @@ -264,7 +263,7 @@ export type WithdrawConfig = { * @public * Type for clear vaultIds used when in @see clear when clearing 2 orders that will collect the bounties into its vaults */ -export type ClearConfig = { + export type ClearConfig = { aInputIndex: BigNumberish; aOutputIndex: BigNumberish; bInputIndex: BigNumberish; diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index 053f7ef..49c8637 100644 --- a/src/contracts/redeemableERC20.ts +++ b/src/contracts/redeemableERC20.ts @@ -50,8 +50,8 @@ export class RedeemableERC20 extends FactoryContract { * */ constructor(address: string, signer: Signer) { - super(address, signer); RedeemableERC20.checkAddress(address); + super(address, signer); const _redeemable = RedeemableERC20__factory.connect(address, signer); this.allowance = _redeemable.allowance; diff --git a/src/contracts/redeemableERC20ClaimEscrow.ts b/src/contracts/redeemableERC20ClaimEscrow.ts index ef1cd97..6850676 100644 --- a/src/contracts/redeemableERC20ClaimEscrow.ts +++ b/src/contracts/redeemableERC20ClaimEscrow.ts @@ -62,10 +62,9 @@ export class RedeemableERC20ClaimEscrow extends RainContract { tokenAddress: string, signer: Signer ) { - super(address, signer); - RedeemableERC20ClaimEscrow.checkAddress(address); + super(address, signer); const _claimEsrow = RedeemableERC20ClaimEscrow__factory.connect( address, signer diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index c8c731a..40f40b4 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -93,10 +93,9 @@ export class Sale extends FactoryContract { * */ constructor(address: string, signer: Signer) { - super(address, signer); - Sale.checkAddress(address); + super(address, signer); const _sale = Sale__factory.connect(address, signer); this.buy = _sale.buy; @@ -112,7 +111,7 @@ export class Sale extends FactoryContract { this.token = _sale.token; this.packedFunctionPointers = _sale.packedFunctionPointers; this.storageOpcodesRange = _sale.storageOpcodesRange; - this.packedFunctionPointers = _sale.packedFunctionPointers; + this.packedFunctionPointers = _sale.packedFunctionPointers; } /** diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts index e057603..899c928 100644 --- a/src/contracts/stake.ts +++ b/src/contracts/stake.ts @@ -38,12 +38,11 @@ export class Stake extends ITierV2 { * @returns A new Stake instance */ constructor(address: string, signer: Signer) { - super(address, signer); - Stake.checkAddress(address); + super(address, signer); const _stake = Stake__factory.connect(address, signer); - + this.allowance = _stake.allowance; this.approve = _stake.approve; this.balanceOf = _stake.balanceOf; diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index ee3cc1a..aa50e79 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -94,11 +94,10 @@ export class CombineTier extends ITierV2 { * @returns A new combineTier instance */ constructor(address: string, signer: Signer) { - super(address, signer); - CombineTier.checkAddress(address); const _combineTier = CombineTier__factory.connect(address, signer); + super(address, signer); this.storageOpcodesRange = _combineTier.storageOpcodesRange; this.packedFunctionPointers = _combineTier.packedFunctionPointers; @@ -197,12 +196,12 @@ export class CombineTier extends ITierV2 { * @param overrides - @see ReadTxOverrides * @returns the opcode functions pointers */ - public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; + public readonly packedFunctionPointers: (overrides?: ReadTxOverrides) => Promise; /** * @public */ - public readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; + public readonly supportsInterface: (interfaceId_: BytesLike, overrides?: ReadTxOverrides) => Promise; /** * @public @@ -225,7 +224,7 @@ export class CombineTier extends ITierV2 { * @param tokenId - (optional) the tokenId used if the type of the BalanceTier is ERC1155 * @returns A new combineTier instance */ - public static deployBalanceTier = async ( + public static deployBalanceTier = async( address: string, type: "erc20" | "erc721" | "erc1155", levels: (number | string)[], @@ -243,7 +242,7 @@ export class CombineTier extends ITierV2 { if (type === "erc721") { _balanceTierConfig = new ERC721BalanceTier(levels, address) } - if (type === "erc1155" && tokenId) { + if ( type === "erc1155" && tokenId) { _balanceTierConfig = new ERC1155BalanceTier(levels, tokenId, address) } const deplyArg: CombineTierDeployArgs = { diff --git a/src/contracts/tiers/verifyTier.ts b/src/contracts/tiers/verifyTier.ts index 8b6db3a..2910ab4 100644 --- a/src/contracts/tiers/verifyTier.ts +++ b/src/contracts/tiers/verifyTier.ts @@ -40,9 +40,9 @@ export class VerifyTier extends ITierV2 { * @returns A new VerifyTier instance */ constructor(address: string, signer: Signer) { - super(address, signer); - VerifyTier.checkAddress(address); + + super(address, signer); } /** diff --git a/src/contracts/verify.ts b/src/contracts/verify.ts index f2b8e5b..839d529 100644 --- a/src/contracts/verify.ts +++ b/src/contracts/verify.ts @@ -80,10 +80,9 @@ export class Verify extends FactoryContract { * */ constructor(address: string, signer: Signer) { - super(address, signer); - Verify.checkAddress(address); + super(address, signer); const _verify = Verify__factory.connect(address, signer); this.callback = _verify.callback; From ca8908eaa569b0cc3a3e1a23611b9b818614afa0 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 5 Aug 2022 17:08:07 +0000 Subject: [PATCH 075/125] RuleBuilder full version RuleBuilder full version + tests --- .eslintignore | 3 +- docs/classes/rulebuilder.md | 189 ++++- docs/index.md | 24 +- docs/interfaces/modifier.md | 72 -- docs/interfaces/vmcurrency.md | 151 ---- docs/types/asset.md | 10 + docs/types/block.md | 10 + docs/types/buyunits.md | 10 + docs/types/condition.md | 14 + docs/types/conditiongroup.md | 13 + docs/types/currency.md | 19 + docs/types/default.md | 13 + docs/types/filter.md | 15 + docs/types/math_2.md | 10 + docs/types/modifier.md | 14 + docs/types/modifiertype.md | 10 + docs/types/operator.md | 10 + docs/types/price.md | 13 + docs/types/quantity.md | 13 + docs/types/rule.md | 17 + docs/types/struct.md | 10 + docs/types/structtypelib.md | 99 +++ docs/types/tiers.md | 10 + docs/types/time.md | 10 + docs/variables/lib.md | 10 + src/classes/vm.ts | 88 ++- .../script-generators/ruleBuilder.ts | 277 ------- src/index.ts | 5 +- src/rule-builder/lib.ts | 178 +++++ src/rule-builder/ruleBuilder.ts | 287 +++++++ src/rule-builder/types.ts | 327 ++++++++ src/utils.ts | 18 +- test/RuleBuilder.test.ts | 741 ++++++++++++++++++ 33 files changed, 2120 insertions(+), 570 deletions(-) delete mode 100644 docs/interfaces/modifier.md delete mode 100644 docs/interfaces/vmcurrency.md create mode 100644 docs/types/asset.md create mode 100644 docs/types/block.md create mode 100644 docs/types/buyunits.md create mode 100644 docs/types/condition.md create mode 100644 docs/types/conditiongroup.md create mode 100644 docs/types/currency.md create mode 100644 docs/types/default.md create mode 100644 docs/types/filter.md create mode 100644 docs/types/math_2.md create mode 100644 docs/types/modifier.md create mode 100644 docs/types/modifiertype.md create mode 100644 docs/types/operator.md create mode 100644 docs/types/price.md create mode 100644 docs/types/quantity.md create mode 100644 docs/types/rule.md create mode 100644 docs/types/struct.md create mode 100644 docs/types/structtypelib.md create mode 100644 docs/types/tiers.md create mode 100644 docs/types/time.md create mode 100644 docs/variables/lib.md delete mode 100644 src/contracts/script-generators/ruleBuilder.ts create mode 100644 src/rule-builder/lib.ts create mode 100644 src/rule-builder/ruleBuilder.ts create mode 100644 src/rule-builder/types.ts create mode 100644 test/RuleBuilder.test.ts diff --git a/.eslintignore b/.eslintignore index fadc50e..127d0a3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -7,4 +7,5 @@ cache contracts dist typechain -/src/typechain \ No newline at end of file +/src/typechain +rule-builder \ No newline at end of file diff --git a/docs/classes/rulebuilder.md b/docs/classes/rulebuilder.md index 4ea6fee..b29b351 100644 --- a/docs/classes/rulebuilder.md +++ b/docs/classes/rulebuilder.md @@ -1,7 +1,7 @@ # Class RuleBuilder -Class with methods to generate a rule-based StateConfig +Class with methods to generate a multi-currency rule-based StateConfig Signature: @@ -9,60 +9,223 @@ Class with methods to generate a rule-based StateConfig class RuleBuilder ``` +## Example + + +```typescript +// to import: +import { RuleBuilder } from "rain-sdk" + +// to build the multi-currency rule-based StateConfig: +const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) + +// to build a single condition's StateConfig of a single Rule: +const conditions = RuleBuilder.getConditionConfig(condition) + +// to build a ConditionGroup StateConfig: +const rule = RuleBuilder.getConditionGroup(conditionGroup) + +//to build a single price or quantity StateConfig: +const quantity = RuleBuilder.getQPConfig(quantity) +const price = RuleBuilder.getQPConfig(price) + +``` + +## Properties + +| Property | Type | Description | +| --- | --- | --- | +| [constants](./rulebuilder.md#constants-property) | `BigNumberish[]` | | +| [currencies](./rulebuilder.md#currencies-property) | `Currency[]` | | +| [sources](./rulebuilder.md#sources-property) | `BytesLike[]` | | + ## Static Methods | Method | Description | | --- | --- | -| [multiCurrency(currencies)](./rulebuilder.md#multiCurrency-method-static-1) | Method to generate a multi currency rule-based StateConfig | -| [singleCurrency(currency)](./rulebuilder.md#singleCurrency-method-static-1) | Method to generate a single currency rule-based StateConfig | +| [applyModifier(config, modifier)](./rulebuilder.md#applyModifier-method-static-1) | Method to generate a single currency rule-based StateConfig | +| [build(currencies)](./rulebuilder.md#build-method-static-1) | Method to generate a multi currency rule-based StateConfig | +| [getConditionConfig(condition)](./rulebuilder.md#getConditionConfig-method-static-1) | Method to get the conditions' StateConfig of a ConditionGroup seperately | +| [getConditionGroupConfig(conditionGroup)](./rulebuilder.md#getConditionGroupConfig-method-static-1) | Method to get the a ConditionGroup StateConfig | +| [getQPConfig(qp)](./rulebuilder.md#getQPConfig-method-static-1) | Method to get the price or quantity StateConfig | +| [singleBuild(currency)](./rulebuilder.md#singleBuild-method-static-1) | Method to generate a single currency rule-based StateConfig | + +## Property Details + + + +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### currencies + +Signature: + +```typescript +readonly currencies: Currency[]; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` ## Static Method Details - + + +### applyModifier(config, modifier) + +Method to generate a single currency rule-based StateConfig + +Signature: + +```typescript +static applyModifier(config: StateConfig, modifier: Modifier): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | The config to apply modifier on | +| modifier | [Modifier](../types/modifier.md) | The object of type Modifier | + +Returns: + +`StateConfig` + +StateConfig + + -### multiCurrency(currencies) +### build(currencies) Method to generate a multi currency rule-based StateConfig Signature: ```typescript -static multiCurrency(currencies: vmCurrency[]): StateConfig; +static build(currencies: Currency[]): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| currencies | `Currency[]` | An array of Currency objects | + +Returns: + +`StateConfig` + +StateConfig + + + +### getConditionConfig(condition) + +Method to get the conditions' StateConfig of a ConditionGroup seperately + +Signature: + +```typescript +static getConditionConfig(condition: Condition): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| condition | [Condition](../types/condition.md) | | + +Returns: + +`StateConfig` + +Array of StateConfig + + + +### getConditionGroupConfig(conditionGroup) + +Method to get the a ConditionGroup StateConfig + +Signature: + +```typescript +static getConditionGroupConfig(conditionGroup: ConditionGroup): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| conditionGroup | [ConditionGroup](../types/conditiongroup.md) | The ConditionGroup object | + +Returns: + +`StateConfig` + +StateConfig + + + +### getQPConfig(qp) + +Method to get the price or quantity StateConfig + +Signature: + +```typescript +static getQPConfig(qp: Price | Quantity): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| currencies | `vmCurrency[]` | An array of vmCurrency objects | +| qp | `Price \| Quantity` | | Returns: `StateConfig` -A StateConfig +StateConfig - + -### singleCurrency(currency) +### singleBuild(currency) Method to generate a single currency rule-based StateConfig Signature: ```typescript -static singleCurrency(currency: vmCurrency): StateConfig; +static singleBuild(currency: Currency): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| currency | [vmCurrency](../interfaces/vmcurrency.md) | A vmCurrency object | +| currency | [Currency](../types/currency.md) | A Currency object | Returns: `StateConfig` -A StateConfig +StateConfig diff --git a/docs/index.md b/docs/index.md index a9437bb..02e39fc 100644 --- a/docs/index.md +++ b/docs/index.md @@ -39,7 +39,7 @@ | [RainJSVM](./classes/rainjsvm.md) | - The javascript version of the RainVM, basically does the same job RainVM does but off-chain. | | [RedeemableERC20](./classes/redeemableerc20.md) | A class for calling methods on a RedeemableERC20. | | [RedeemableERC20ClaimEscrow](./classes/redeemableerc20claimescrow.md) | A class for calling methods on a RedeemableERC20ClaimEscrow. | -| [RuleBuilder](./classes/rulebuilder.md) | Class with methods to generate a rule-based StateConfig | +| [RuleBuilder](./classes/rulebuilder.md) | Class with methods to generate a multi-currency rule-based StateConfig | | [Sale](./classes/sale.md) | A class for deploying and calling methods on a Sale. | | [SaleJSVM](./classes/salejsvm.md) | - The javascript version of SaleVM which inherits RainJSVM with local Sale opcodes. | | [SaleSimulation](./classes/salesimulation.md) | A class for creating a simulation environment for simulating a Sale contract off-chain using JSVM. | @@ -128,7 +128,6 @@ | [Evidence](./interfaces/evidence.md) | Structure of arbitrary evidence to support any action taken. Priviledged roles are expected to provide evidence just as applicants as an audit trail will be preserved permanently in the logs. | | [FnPtrsJSVM](./interfaces/fnptrsjsvm.md) | An interface for creating a key/value pair of opcodes functions to override. | | [IOpMeta](./interfaces/iopmeta.md) | | -| [modifier](./interfaces/modifier.md) | Type for price/quantity scripts modifier based on a tier report | | [NoticeStruct](./interfaces/noticestruct.md) | | | [OpJSVM](./interfaces/opjsvm.md) | An interface/type of JSVM opcodes' function's body | | [ReadTxOverrides](./interfaces/readtxoverrides.md) | More read about `ReadTxOverrides` that comes from CallOverrides of ethers | @@ -159,7 +158,6 @@ | [TxOverrides](./interfaces/txoverrides.md) | More read about `TxOverrides` that comes from Overrides of ethers | | [VerifyDeployArgs](./interfaces/verifydeployargs.md) | Config to initialize a Verify contract with. | | [VerifyState](./interfaces/verifystate.md) | Records the block a verify session reaches each status. If a status is not reached it is left as UNINITIALIZED, i.e. 0xFFFFFFFF. Most accounts will never be banned so most accounts will never reach every status, which is a good thing. | -| [vmCurrency](./interfaces/vmcurrency.md) | Type for a currency scripts used in RuleBuilder class | ## Namespaces @@ -174,6 +172,7 @@ | [eighteenZeros](./variables/eighteenzeros.md) | 18 decimals or i.e "DECIMALS" - used for fixed point match | | [fixedPointDiv](./variables/fixedpointdiv.md) | | | [fixedPointMul](./variables/fixedpointmul.md) | | +| [lib](./variables/lib.md) | Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods | | [max](./variables/max.md) | calculate the maximum among array of BigNumbers | | [min](./variables/min.md) | calculate the minimum among array of BigNumbers | | [OpMeta](./variables/opmeta.md) | | @@ -193,24 +192,43 @@ | Type Alias | Description | | --- | --- | | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | +| [Asset](./types/asset.md) | Type for getting specific evm tokens or user wallet token balances | | [AutoApproveOps](./types/autoapproveops.md) | Type for the opcodes availables in a AutoApprove instance. | +| [Block](./types/block.md) | Type for block number based rules | +| [BuyUnits](./types/buyunits.md) | Type for current user buy units i.e. user input | | [CallOptions](./types/calloptions.md) | Options for instantiating RainJSVM | | [ClearConfig](./types/clearconfig.md) | Type for clear vaultIds used when in | | [ClearStateChange](./types/clearstatechange.md) | Type for changes in state of an orderbook vaults after an successful clear | | [CombineTierDeployArgs](./types/combinetierdeployargs.md) | The argument of the CombineTier. The StateConfig will be deployed as a pointer under VM State Pointer. | +| [Condition](./types/condition.md) | Type for conditions which is a comparison between structs which results in a boolean StateConfig | +| [ConditionGroup](./types/conditiongroup.md) | Type for a single or multiple conditions which are combined together with the valid logical operators which results in a a boolean StateConfig | | [Config](./types/config.md) | Specific the configuration of the generation method | +| [Currency](./types/currency.md) | Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig | +| [Default](./types/default.md) | The default block, i.e. default quantity and price | | [DepositConfig](./types/depositconfig.md) | Type for depositing some token amount into a vault used in | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | | [EvidenceConfig](./types/evidenceconfig.md) | | +| [Filter](./types/filter.md) | A filtering utility type for StructTypeLib | | [IOConfig](./types/ioconfig.md) | token the address of the desired token vaultId corresponding token vault id | +| [Math\_2](./types/math_2.md) | Type for mathematical folmulas or constant values | +| [Modifier](./types/modifier.md) | Type for price/quantity modifier based on a tier report or a Rule | +| [ModifierType](./types/modifiertype.md) | Valid Modifier types | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | +| [Operator](./types/operator.md) | All the valid logical operators used for comparison of previous types | | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | | [PrettifyConfig](./types/prettifyconfig.md) | Specific the configuration of the Prettify method. | +| [Price](./types/price.md) | Price type | +| [Quantity](./types/quantity.md) | Quantity type | +| [Rule](./types/rule.md) | A single Rule block, i.e. an if/then block that contains conditions of prices and quantities and its actions which are price and quantity | | [SIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | +| [Struct](./types/struct.md) | The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig | +| [StructTypeLib](./types/structtypelib.md) | A key/type pair for all the valid Struct types | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | +| [Tiers](./types/tiers.md) | Type for Rain tier contractsreport check | +| [Time](./types/time.md) | Type for times based rules | | [TimeBoundConfig](./types/timeboundconfig.md) | | | [WithdrawConfig](./types/withdrawconfig.md) | Type for withdrawing some token amount from a vault used in | diff --git a/docs/interfaces/modifier.md b/docs/interfaces/modifier.md deleted file mode 100644 index ed16f99..0000000 --- a/docs/interfaces/modifier.md +++ /dev/null @@ -1,72 +0,0 @@ - -# Interface modifier - -Type for price/quantity scripts modifier based on a tier report - -Signature: - -```typescript -interface modifier -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [condition](./modifier.md#condition-property) | `string \| StateConfig` | the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier | -| [mode](./modifier.md#mode-property) | `"tier-discounts" \| "tier-multipliers" \| "discount" \| "multiplier"` | Determines the modifier's mode | -| [options](./modifier.md#options-property) |
{
    tierContext?: BigNumber[];
    delegatedReport?: boolean;
}
| Optional properties for specific modifier's mode | -| [values](./modifier.md#values-property) | `number[]` | The modifing value(s) | - -## Property Details - - - -### condition - -the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier - -Signature: - -```typescript -condition: string | StateConfig; -``` - - - -### mode - -Determines the modifier's mode - -Signature: - -```typescript -mode: "tier-discounts" | "tier-multipliers" | "discount" | "multiplier"; -``` - - - -### options - -Optional properties for specific modifier's mode - -Signature: - -```typescript -options?: { - tierContext?: BigNumber[]; - delegatedReport?: boolean; - }; -``` - - - -### values - -The modifing value(s) - -Signature: - -```typescript -values: number[]; -``` diff --git a/docs/interfaces/vmcurrency.md b/docs/interfaces/vmcurrency.md deleted file mode 100644 index d99451a..0000000 --- a/docs/interfaces/vmcurrency.md +++ /dev/null @@ -1,151 +0,0 @@ - -# Interface vmCurrency - -Type for a currency scripts used in RuleBuilder class - -Signature: - -```typescript -interface vmCurrency -``` - -## Properties - -| Property | Type | Description | -| --- | --- | --- | -| [defaultPrice](./vmcurrency.md#defaultPrice-property) | [StateConfig](./stateconfig.md) | Default price StateConfig of this currency | -| [defaultQuantity](./vmcurrency.md#defaultQuantity-property) | [StateConfig](./stateconfig.md) | Default quantity StateConfig of this currency | -| [priceConditions](./vmcurrency.md#priceConditions-property) | `StateConfig[]` | Array of conditions for conditional prices | -| [priceModifiers](./vmcurrency.md#priceModifiers-property) |
{
    [index: number]: modifier;
}
| Prices modifiers, modifier on a single sub-price StateConfig | -| [prices](./vmcurrency.md#prices-property) | `StateConfig[]` | Array of conditional prices | -| [priceTopModifier](./vmcurrency.md#priceTopModifier-property) | [modifier](./modifier.md) | Top price modifier, modifier on all sub-prices | -| [quantities](./vmcurrency.md#quantities-property) | `StateConfig[]` | Array of conditional quantities | -| [quantityConditions](./vmcurrency.md#quantityConditions-property) | `StateConfig[]` | Array of conditions for conditional quantities | -| [quantityModifiers](./vmcurrency.md#quantityModifiers-property) |
{
    [index: number]: modifier;
}
| Quantities modifiers, modifier on a single sub-quantity StateConfig | -| [quantityTopModifier](./vmcurrency.md#quantityTopModifier-property) | [modifier](./modifier.md) | Top quantity modifier, modifier on all sub-quantities | - -## Property Details - - - -### defaultPrice - -Default price StateConfig of this currency - -Signature: - -```typescript -defaultPrice: StateConfig; -``` - - - -### defaultQuantity - -Default quantity StateConfig of this currency - -Signature: - -```typescript -defaultQuantity: StateConfig; -``` - - - -### priceConditions - -Array of conditions for conditional prices - -Signature: - -```typescript -priceConditions: StateConfig[]; -``` - - - -### priceModifiers - -Prices modifiers, modifier on a single sub-price StateConfig - -Signature: - -```typescript -priceModifiers: { - [index: number]: modifier; - }; -``` - - - -### prices - -Array of conditional prices - -Signature: - -```typescript -prices: StateConfig[]; -``` - - - -### priceTopModifier - -Top price modifier, modifier on all sub-prices - -Signature: - -```typescript -priceTopModifier?: modifier; -``` - - - -### quantities - -Array of conditional quantities - -Signature: - -```typescript -quantities: StateConfig[]; -``` - - - -### quantityConditions - -Array of conditions for conditional quantities - -Signature: - -```typescript -quantityConditions: StateConfig[]; -``` - - - -### quantityModifiers - -Quantities modifiers, modifier on a single sub-quantity StateConfig - -Signature: - -```typescript -quantityModifiers: { - [index: number]: modifier; - }; -``` - - - -### quantityTopModifier - -Top quantity modifier, modifier on all sub-quantities - -Signature: - -```typescript -quantityTopModifier?: modifier; -``` diff --git a/docs/types/asset.md b/docs/types/asset.md new file mode 100644 index 0000000..702165d --- /dev/null +++ b/docs/types/asset.md @@ -0,0 +1,10 @@ + +# Type Asset + +Type for getting specific evm tokens or user wallet token balances + +Signature: + +```typescript +type Asset = 'user-erc20-balance' | 'erc20-total-supply' | 'user-erc721-balance' | 'erc721-owner' | 'user-erc1155-balance' | 'user-erc20-snapshot-balance' | 'erc20-snapshot-totaly-supply'; +``` diff --git a/docs/types/block.md b/docs/types/block.md new file mode 100644 index 0000000..0c19eff --- /dev/null +++ b/docs/types/block.md @@ -0,0 +1,10 @@ + +# Type Block + +Type for block number based rules + +Signature: + +```typescript +type Block = 'before-block' | 'after-block' | 'between-blocks'; +``` diff --git a/docs/types/buyunits.md b/docs/types/buyunits.md new file mode 100644 index 0000000..f37e64f --- /dev/null +++ b/docs/types/buyunits.md @@ -0,0 +1,10 @@ + +# Type BuyUnits + +Type for current user buy units i.e. user input + +Signature: + +```typescript +type BuyUnits = 'buy-units'; +``` diff --git a/docs/types/condition.md b/docs/types/condition.md new file mode 100644 index 0000000..79898d7 --- /dev/null +++ b/docs/types/condition.md @@ -0,0 +1,14 @@ + +# Type Condition + +Type for conditions which is a comparison between structs which results in a boolean StateConfig + +Signature: + +```typescript +type Condition = { + struct: Struct; + operator: Extract; + struct2?: Struct; +}; +``` diff --git a/docs/types/conditiongroup.md b/docs/types/conditiongroup.md new file mode 100644 index 0000000..d44020b --- /dev/null +++ b/docs/types/conditiongroup.md @@ -0,0 +1,13 @@ + +# Type ConditionGroup + +Type for a single or multiple conditions which are combined together with the valid logical operators which results in a a boolean StateConfig + +Signature: + +```typescript +type ConditionGroup = { + conditions: (Condition | ConditionGroup)[]; + operator: Exclude; +}; +``` diff --git a/docs/types/currency.md b/docs/types/currency.md new file mode 100644 index 0000000..945af1d --- /dev/null +++ b/docs/types/currency.md @@ -0,0 +1,19 @@ + +# Type Currency + +Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig + +Signature: + +```typescript +type Currency = { + rules: Rule[]; + default: Default; + quantityGlobalModifier?: Modifier; + priceGlobalModifier?: Modifier; + pick: { + quantities: Extract; + prices: Extract; + }; +}; +``` diff --git a/docs/types/default.md b/docs/types/default.md new file mode 100644 index 0000000..8126ae0 --- /dev/null +++ b/docs/types/default.md @@ -0,0 +1,13 @@ + +# Type Default + +The default block, i.e. default quantity and price + +Signature: + +```typescript +type Default = { + quantity: Quantity; + price: Price; +}; +``` diff --git a/docs/types/filter.md b/docs/types/filter.md new file mode 100644 index 0000000..3002bc4 --- /dev/null +++ b/docs/types/filter.md @@ -0,0 +1,15 @@ + +# Type Filter + +A filtering utility type for StructTypeLib + +Signature: + +```typescript +type Filter = { + [Prop in keyof StructTypeLib]: { + subject: T; + args: StructTypeLib[T]; + }; +}; +``` diff --git a/docs/types/math_2.md b/docs/types/math_2.md new file mode 100644 index 0000000..8a8fa52 --- /dev/null +++ b/docs/types/math_2.md @@ -0,0 +1,10 @@ + +# Type Math\_2 + +Type for mathematical folmulas or constant values + +Signature: + +```typescript +type Math = 'constant' | 'increasing-by-time' | 'decreasing-by-time' | 'increasing-by-block' | 'decreasing-by-block'; +``` diff --git a/docs/types/modifier.md b/docs/types/modifier.md new file mode 100644 index 0000000..6513ba9 --- /dev/null +++ b/docs/types/modifier.md @@ -0,0 +1,14 @@ + +# Type Modifier + +Type for price/quantity modifier based on a tier report or a Rule + +Signature: + +```typescript +type Modifier = { + type: ModifierType; + condition: ConditionGroup; + values: number; +}; +``` diff --git a/docs/types/modifiertype.md b/docs/types/modifiertype.md new file mode 100644 index 0000000..edaead4 --- /dev/null +++ b/docs/types/modifiertype.md @@ -0,0 +1,10 @@ + +# Type ModifierType + +Valid Modifier types + +Signature: + +```typescript +type ModifierType = 'discount' | 'multiplier'; +``` diff --git a/docs/types/operator.md b/docs/types/operator.md new file mode 100644 index 0000000..f261924 --- /dev/null +++ b/docs/types/operator.md @@ -0,0 +1,10 @@ + +# Type Operator + +All the valid logical operators used for comparison of previous types + +Signature: + +```typescript +type Operator = 'true' | 'not' | 'and' | 'or' | 'nand' | 'nor' | 'xor' | 'xnor' | 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte'; +``` diff --git a/docs/types/price.md b/docs/types/price.md new file mode 100644 index 0000000..2c04b65 --- /dev/null +++ b/docs/types/price.md @@ -0,0 +1,13 @@ + +# Type Price + +Price type + +Signature: + +```typescript +type Price = { + struct: StateConfig | Filter<'buy-units'>['buy-units'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block']; + modifier?: Modifier; +}; +``` diff --git a/docs/types/quantity.md b/docs/types/quantity.md new file mode 100644 index 0000000..b2a4a3f --- /dev/null +++ b/docs/types/quantity.md @@ -0,0 +1,13 @@ + +# Type Quantity + +Quantity type + +Signature: + +```typescript +type Quantity = { + struct: StateConfig | Filter<'buy-units'>['buy-units'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block']; + modifier?: Modifier; +}; +``` diff --git a/docs/types/rule.md b/docs/types/rule.md new file mode 100644 index 0000000..52f21de --- /dev/null +++ b/docs/types/rule.md @@ -0,0 +1,17 @@ + +# Type Rule + +A single Rule block, i.e. an if/then block that contains conditions of prices and quantities and its actions which are price and quantity + +If the price and quantity conditions are the same just put the same object in both of 'quantityConditions' and 'priceConditions + +Signature: + +```typescript +type Rule = { + quantityConditions: ConditionGroup; + priceConditions: ConditionGroup; + quantity: Quantity; + price: Price; +}; +``` diff --git a/docs/types/struct.md b/docs/types/struct.md new file mode 100644 index 0000000..6efec1c --- /dev/null +++ b/docs/types/struct.md @@ -0,0 +1,10 @@ + +# Type Struct + +The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig + +Signature: + +```typescript +type Struct = StateConfig | Filter<'buy-units'>['buy-units'] | Filter<'before-time'>['before-time'] | Filter<'after-time'>['after-time'] | Filter<'between-times'>['between-times'] | Filter<'before-block'>['before-block'] | Filter<'after-block'>['after-block'] | Filter<'between-blocks'>['between-blocks'] | Filter<'has-min-tier'>['has-min-tier'] | Filter<'has-any-tier'>['has-any-tier'] | Filter<'user-erc20-balance'>['user-erc20-balance'] | Filter<'erc20-total-supply'>['erc20-total-supply'] | Filter<'user-erc721-balance'>['user-erc721-balance'] | Filter<'erc721-owner'>['erc721-owner'] | Filter<'user-erc1155-balance'>['user-erc1155-balance'] | Filter<'user-erc20-snapshot-balance'>['user-erc20-snapshot-balance'] | Filter<'erc20-snapshot-total-supply'>['erc20-snapshot-total-supply'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block']; +``` diff --git a/docs/types/structtypelib.md b/docs/types/structtypelib.md new file mode 100644 index 0000000..9b8555e --- /dev/null +++ b/docs/types/structtypelib.md @@ -0,0 +1,99 @@ + +# Type StructTypeLib + +A key/type pair for all the valid Struct types + +Signature: + +```typescript +type StructTypeLib = { + 'buy-units': { + index: number; + }; + 'before-time': { + timestamp: number; + exactTime?: boolean; + }; + 'after-time': { + timestamp: number; + exactTime?: boolean; + }; + 'between-times': { + startTimestamp: number; + endTimestamp: number; + }; + 'before-block': { + block: number; + exactBlock?: boolean; + }; + 'after-block': { + block: number; + exactBlock?: boolean; + }; + 'between-blocks': { + startBlock: number; + endBlock: number; + }; + 'has-min-tier': { + tierAddress: string; + minTier: Tier; + tierContext?: BigNumber[]; + }; + 'has-any-tier': { + tierAddress: string; + tierContext?: BigNumber[]; + }; + 'user-erc20-balance': { + tokenAddress: string; + }; + 'erc20-total-supply': { + tokenAddress: string; + }; + 'user-erc721-balance': { + tokenAddress: string; + }; + 'erc721-owner': { + tokenAddress: string; + id: BigNumber; + }; + 'user-erc1155-balance': { + tokenAddress: string; + id: BigNumber; + }; + 'user-erc20-snapshot-balance': { + tokenAddress: string; + id: BigNumber; + }; + 'erc20-snapshot-total-supply': { + tokenAddress: string; + id: BigNumber; + }; + 'constant': { + value: BigNumber; + }; + 'increasing-by-time': { + startValue: BigNumber; + endValue: BigNumber; + startTimestamp: number; + endTimestamp: number; + }; + 'decreasing-by-time': { + startValue: BigNumber; + endValue: BigNumber; + startTimestamp: number; + endTimestamp: number; + }; + 'increasing-by-block': { + startValue: BigNumber; + endValue: BigNumber; + startBlock: number; + endBlock: number; + }; + 'decreasing-by-block': { + startValue: BigNumber; + endValue: BigNumber; + startBlock: number; + endBlock: number; + }; +}; +``` diff --git a/docs/types/tiers.md b/docs/types/tiers.md new file mode 100644 index 0000000..3f44b5f --- /dev/null +++ b/docs/types/tiers.md @@ -0,0 +1,10 @@ + +# Type Tiers + +Type for Rain tier contractsreport check + +Signature: + +```typescript +type Tiers = 'has-min-tier' | 'has-any-tier'; +``` diff --git a/docs/types/time.md b/docs/types/time.md new file mode 100644 index 0000000..cd1c6cc --- /dev/null +++ b/docs/types/time.md @@ -0,0 +1,10 @@ + +# Type Time + +Type for times based rules + +Signature: + +```typescript +type Time = 'before-time' | 'after-time' | 'between-times'; +``` diff --git a/docs/variables/lib.md b/docs/variables/lib.md new file mode 100644 index 0000000..848fd5c --- /dev/null +++ b/docs/variables/lib.md @@ -0,0 +1,10 @@ + +# Variable lib + +Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods + +Signature: + +```typescript +lib: Record StateConfig> +``` diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 4073891..43d1cb7 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -10,7 +10,7 @@ import { selectLteMode, selectLteLogic, callSize, - arrayify, + arrayify } from '../utils'; /** @@ -282,6 +282,7 @@ export enum Debug { } /** + * @public * Parameter that will use to converted to the source. * * Use an opcode and operand (optional) @@ -305,6 +306,7 @@ export class VM { public static Opcodes = AllStandardOps; /** + * @public * Create a VM sources to be ready to use in any call just providing the combination desired. * * @param OPerands - All the configuration with the opcodes and operands. If any combination @@ -1071,33 +1073,33 @@ export class VM { timestamp: number, type: "gt" | "lt" | "gte" | "lte" ): StateConfig { - let src = new Uint8Array(); + const time: StateConfig = { + constants: [], + sources: [concat([op(VM.Opcodes.BLOCK_TIMESTAMP)])] + } + const val: StateConfig = { + constants: [timestamp], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])] + } + let result_: StateConfig = { + constants: [], + sources: [] + }; if (type === "gte") { - timestamp = timestamp === 0 ? 0 : timestamp - 1; - src = op(VM.Opcodes.GREATER_THAN) + result_ = VM.gte(time, val) } if (type === "lte") { - timestamp++; - src = op(VM.Opcodes.LESS_THAN) + result_ = VM.lte(time, val) } if (type === "lt") { - src = op(VM.Opcodes.LESS_THAN) + result_ = VM.lt(time, val) } if (type === "gt") { - src = op(VM.Opcodes.GREATER_THAN) + result_ = VM.gt(time, val) } - return { - constants: [timestamp], - sources: [ - concat([ - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - src - ]) - ] - }; + return result_; } @@ -1113,33 +1115,33 @@ export class VM { blockNumber: number, type: "gt" | "lt" | "gte" | "lte" ): StateConfig { - let src = new Uint8Array(); + const time: StateConfig = { + constants: [], + sources: [concat([op(VM.Opcodes.BLOCK_NUMBER)])] + } + const val: StateConfig = { + constants: [blockNumber], + sources: [concat([op(VM.Opcodes.CONSTANT, 0)])] + } + let result_: StateConfig = { + constants: [], + sources: [] + }; if (type === "gte") { - blockNumber = blockNumber === 0 ? 0 : blockNumber - 1; - src = op(VM.Opcodes.GREATER_THAN) + result_ = VM.gte(time, val) } if (type === "lte") { - blockNumber++; - src = op(VM.Opcodes.LESS_THAN) + result_ = VM.lte(time, val) } if (type === "lt") { - src = op(VM.Opcodes.LESS_THAN) + result_ = VM.lt(time, val) } if (type === "gt") { - src = op(VM.Opcodes.GREATER_THAN) + result_ = VM.gt(time, val) } - return { - constants: [blockNumber], - sources: [ - concat([ - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - src - ]) - ] - }; + return result_; } /** @@ -1727,7 +1729,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), + delegatedCall ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), op(VM.Opcodes.IERC20_BALANCE_OF), ]) ] @@ -1750,7 +1752,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), + delegatedCall ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.IERC20_SNAPSHOT_BALANCE_OF_AT) ]) @@ -1775,7 +1777,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), + delegatedCall ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), op(VM.Opcodes.IERC721_BALANCE_OF) ]) ] @@ -1799,7 +1801,7 @@ export class VM { sources: [ concat([ op(VM.Opcodes.CONSTANT, 0), - delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0), + delegatedCall ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER), op(VM.Opcodes.CONSTANT, 1), op(VM.Opcodes.IERC1155_BALANCE_OF) ]) @@ -1812,7 +1814,7 @@ export class VM { for (i; i < address.length; i++) { sources.push(op(VM.Opcodes.CONSTANT, i)) }; - sources.push(delegatedCall ? op(VM.Opcodes.SENDER) : op(VM.Opcodes.CONTEXT, 0)); + sources.push(delegatedCall ? op(VM.Opcodes.CONTEXT, 0) : op(VM.Opcodes.SENDER)); for (i; i < address.length * 2; i++) { sources.push(op(VM.Opcodes.CONSTANT, i)) }; @@ -1863,11 +1865,11 @@ export class VM { const reportCheck = paddedUInt256( "0x" + - paddedUInt32("0xffffffff").repeat(8 - tier) + - paddedUInt32("0").repeat(tier) + paddedUInt32("0xffffffff").repeat(8 - tier + 1) + + paddedUInt32("0").repeat(tier - 1) ) - return VM.gte(tierConfig, VM.constant(reportCheck), stackReassignment) + return VM.lt(tierConfig, VM.constant(reportCheck), stackReassignment) } /** diff --git a/src/contracts/script-generators/ruleBuilder.ts b/src/contracts/script-generators/ruleBuilder.ts deleted file mode 100644 index c710a13..0000000 --- a/src/contracts/script-generators/ruleBuilder.ts +++ /dev/null @@ -1,277 +0,0 @@ -import { BigNumber } from "ethers"; -import { concat } from "ethers/lib/utils"; -import { StateConfig, VM } from "../../classes/vm"; -import { areEqualConfigs, op } from "../../utils"; - - -/** - * @public - * Type for price/quantity scripts modifier based on a tier report - */ -export interface modifier { - /** - * Determines the modifier's mode - */ - mode: "tier-discounts" | "tier-multipliers" | "discount" | "multiplier", - /** - * the condition of the modifier, either a tier contract address for tier modifier or a boolean StateConfig for none tier modifier - */ - condition: string | StateConfig, - /** - * The modifing value(s) - */ - values: number[], - /** - * Optional properties for specific modifier's mode - */ - options?: { - /** - * context for tier report of tier based modifiers - */ - tierContext?: BigNumber[], - /** - * Used in tier modifiers to determins if the delegated reported is available or not, i.e use SENDER if false and CONTEXT[0] if true - */ - delegatedReport?: boolean - } -} - -/** - * @public - * Type for a currency scripts used in RuleBuilder class - */ -export interface vmCurrency { - /** - * Default quantity StateConfig of this currency - */ - defaultQuantity: StateConfig, - /** - * Default price StateConfig of this currency - */ - defaultPrice: StateConfig, - /** - * Array of conditions for conditional quantities - */ - quantityConditions: StateConfig[], - /** - * Array of conditional quantities - */ - quantities: StateConfig[], - /** - * Array of conditions for conditional prices - */ - priceConditions: StateConfig[], - /** - * Array of conditional prices - */ - prices: StateConfig[], - /** - * Quantities modifiers, modifier on a single sub-quantity StateConfig - */ - quantityModifiers: { - [index: number]: modifier, - }, - /** - * Prices modifiers, modifier on a single sub-price StateConfig - */ - priceModifiers: { - [index: number]: modifier, - }, - /** - * Top quantity modifier, modifier on all sub-quantities - */ - quantityTopModifier?: modifier, - /** - * Top price modifier, modifier on all sub-prices - */ - priceTopModifier?: modifier, -} - -/** - * @public - * Class with methods to generate a rule-based StateConfig - */ -export class RuleBuilder { - - /** - * @public - * Method to generate a multi currency rule-based StateConfig - * - * @param currencies - An array of vmCurrency objects - * @returns A StateConfig - */ - public static multiCurrency(currencies: vmCurrency[]): StateConfig { - - let rules_: StateConfig = {constants: [], sources: []}; - let currencies_: StateConfig[] = []; - let count = 0; - - for (let i = 0; i < currencies.length; i++) { - let quantities_: StateConfig = {constants: [], sources: [concat([])]}; - let prices_: StateConfig= {constants: [], sources: [concat([])]}; - - if ( - currencies[i].quantities.length === currencies[i].prices.length && - currencies[i].quantityConditions.length === currencies[i].priceConditions.length && - currencies[i].prices.length === currencies[i].priceConditions.length - ) { - for (let j = 0; j < currencies[i].quantityConditions.length; j++) { - rules_ = VM.pair( - rules_, - areEqualConfigs(currencies[i].quantityConditions[j], currencies[i].priceConditions[j],) - ? VM.pair( - currencies[i].quantityConditions[j], - VM.stack(count * 2), - false - ) - : VM.pair( - currencies[i].quantityConditions[j], - currencies[i].priceConditions[j], - false - ), - false - ); - - quantities_ = VM.pair( - quantities_, - currencies[i].quantityModifiers[j] - ? RuleBuilder.applyModifier( - VM.mulTogether([ - VM.stack(count * 2), - currencies[i].quantities[j], - ], - false - ), - currencies[i].quantityModifiers[j] - ) - : VM.mulTogether([ - VM.stack(count * 2), - currencies[i].quantities[j], - ], - false - ), - false - ); - - prices_ = VM.pair( - prices_, - currencies[i].priceModifiers[j] - ? RuleBuilder.applyModifier( - VM.mulTogether([ - VM.stack((count * 2) + 1), - currencies[i].prices[j], - ], - false - ), - currencies[i].priceModifiers[j] - ) - : VM.mulTogether([ - VM.stack((count * 2) + 1), - currencies[i].prices[j], - ], - false - ), - false - ); - - if (j + 1 === currencies[i].quantities.length) { - quantities_ = VM.pair(quantities_, currencies[i].defaultQuantity, false); - prices_ = VM.pair(prices_, currencies[i].defaultPrice, false); - - quantities_.sources[0] = concat([ - quantities_.sources[0], - op(VM.Opcodes.MAX, currencies[i].quantities.length + 1) - ]) - prices_.sources[0] = concat([ - prices_.sources[0], - op(VM.Opcodes.MIN, currencies[i].quantities.length + 1) - ]) - } - count++; - } - if (currencies[i].quantityTopModifier !== undefined) { - quantities_ = RuleBuilder.applyModifier( - quantities_, - currencies[i].quantityTopModifier! - ) - } - if (currencies[i].priceTopModifier !== undefined) { - prices_ = RuleBuilder.applyModifier( - prices_, - currencies[i].priceTopModifier! - ) - } - currencies_.push(VM.pair(quantities_, prices_, false)); - } - } - - return VM.multi([rules_, ...currencies_], false); - } - - /** - * @public - * Method to generate a single currency rule-based StateConfig - * - * @param currency - A vmCurrency object - * @returns A StateConfig - */ - public static singleCurrency(currency: vmCurrency): StateConfig { - return this.multiCurrency([currency]); - } - - /** - * Method to apply modifier to price/quantity scripts for the RuleBuilder main methods - */ - private static applyModifier(config: StateConfig, modifier: modifier): StateConfig { - - if ( - modifier.mode === "tier-multipliers" && - typeof modifier.condition === "string" && - modifier.values.length === 8 - ) return VM.setDiscountForTiers( - config, - modifier.condition, - modifier.values, - { - tierContext: modifier.options?.tierContext, - delegatedReport: modifier.options?.delegatedReport - } - ) - - else if ( - modifier.mode === "tier-discounts" && - typeof modifier.condition === "string" && - modifier.values.length === 8 - ) return VM.setDiscountForTiers( - config, - modifier.condition, - modifier.values, - { - tierContext: modifier.options?.tierContext, - delegatedReport: modifier.options?.delegatedReport - } - ) - - else if ( - modifier.mode === "discount" && - typeof modifier.condition !== "string" && - modifier.values.length !== 0 - ) return VM.setDisccount( - config, - modifier.condition, - modifier.values[0] - ) - - else if ( - modifier.mode === "multiplier" && - typeof modifier.condition !== "string" && - modifier.values.length !== 0 - ) return VM.setMultiplier( - config, - modifier.condition, - modifier.values[0] - ) - - else throw new Error("Invalid Arguments"); - } -} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 4fc0383..c1d356b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -21,7 +21,10 @@ export * from './contracts/autoApprove'; export * from './contracts/script-generators/saleScriptGenerator'; export * from './contracts/script-generators/combineTierScriptGenerator'; export * from './contracts/script-generators/emissionsERC20ScriptGenerator'; -export * from './contracts/script-generators/ruleBuilder'; + +export * from './rule-builder/ruleBuilder'; +export * from './rule-builder/lib'; +export * from './rule-builder/types'; export * from './jsvm/RainJSVM'; export * from './jsvm/CombineTierJSVM'; diff --git a/src/rule-builder/lib.ts b/src/rule-builder/lib.ts new file mode 100644 index 0000000..ffefb44 --- /dev/null +++ b/src/rule-builder/lib.ts @@ -0,0 +1,178 @@ +import { Filter } from './types'; +import { StateConfig, VM } from '../classes/vm'; +import { BetweenTimestamps } from '../contracts/script-generators/saleScriptGenerator'; +import { CombineTierGenerator } from '../contracts/script-generators/combineTierScriptGenerator'; + +/** + * @public + * Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods + */ +export const lib: Record StateConfig> = { + 'buy-units': ({ index }: Filter<'buy-units'>['buy-units']['args']) => { + return VM.input(index); + }, + + 'before-time': ({ + timestamp, + exactTime, + }: Filter<'before-time'>['before-time']['args']) => { + const operator = exactTime ? 'lte' : 'lt'; + return VM.beforeAfterTime(timestamp, operator); + }, + + 'after-time': ({ + timestamp, + exactTime, + }: Filter<'before-time'>['before-time']['args']) => { + const operator = exactTime ? 'gte' : 'gt'; + return VM.beforeAfterTime(timestamp!, operator); + }, + + 'between-times': ({ + startTimestamp, + endTimestamp, + }: Filter<'between-times'>['between-times']['args']) => { + return new BetweenTimestamps(startTimestamp!, endTimestamp!); + }, + + 'before-block': ({ + block, + exactBlock, + }: Filter<'before-block'>['before-block']['args']) => { + const operator = exactBlock ? 'lte' : 'lt'; + return VM.beforeAfterTime(block!, operator); + }, + + 'after-block': ({ + block, + exactBlock, + }: Filter<'after-block'>['after-block']['args']) => { + const operator = exactBlock ? 'gte' : 'gt'; + return VM.beforeAfterTime(block!, operator); + }, + + 'between-blocks': ({ + startBlock, + endBlock, + }: Filter<'between-blocks'>['between-blocks']['args']) => { + return new BetweenTimestamps(startBlock!, endBlock!); + }, + + 'has-min-tier': ({ + tierAddress, + tierContext, + minTier, + }: Filter<'has-min-tier'>['has-min-tier']['args']) => { + return VM.hasMinTier( + new CombineTierGenerator(tierAddress!, { + staticTierContext: tierContext, + delegatedReport: true, + }), + minTier!, + false + ); + }, + + 'has-any-tier': ({ + tierAddress, + tierContext, + }: Filter<'has-any-tier'>['has-any-tier']['args']) => { + return VM.hasAnyTier( + new CombineTierGenerator(tierAddress!, { + staticTierContext: tierContext, + delegatedReport: true, + }), + false + ); + }, + + 'user-erc20-balance': ({ + tokenAddress, + }: Filter<'user-erc20-balance'>['user-erc20-balance']['args']) => { + return VM.getAsset('erc20-balance-of', [tokenAddress!], undefined, true); + }, + + 'erc20-total-supply': ({ + tokenAddress, + }: Filter<'erc20-total-supply'>['erc20-total-supply']['args']) => { + return VM.getAsset('erc20-total-supply', [tokenAddress!]); + }, + + 'user-erc721-balance': ({ + tokenAddress, + }: Filter<'user-erc721-balance'>['user-erc721-balance']['args']) => { + return VM.getAsset('erc721-balance-of', [tokenAddress!], undefined, true); + }, + + 'erc721-owner': ({ + tokenAddress, + id, + }: Filter<'erc721-owner'>['erc721-owner']['args']) => { + return VM.getAsset('erc721-owner-of', [tokenAddress!], [id!], true); + }, + + 'user-erc1155-balance': ({ + tokenAddress, + id, + }: Filter<'user-erc1155-balance'>['user-erc1155-balance']['args']) => { + return VM.getAsset('erc1155-balance-of', [tokenAddress!], [id!], true); + }, + + 'user-erc20-snapshot-balance': ({ + tokenAddress, + id, + }: Filter< + 'user-erc20-snapshot-balance' + >['user-erc20-snapshot-balance']['args']) => { + return VM.getAsset('snapshot-balance-of', [tokenAddress!], [id!], true); + }, + + 'erc20-snapshot-total-supply': ({ + tokenAddress, + id, + }: Filter< + 'erc20-snapshot-total-supply' + >['erc20-snapshot-total-supply']['args']) => { + return VM.getAsset('snapshot-total-supply', [tokenAddress!], [id!], true); + }, + + constant: ({ value }: Filter<'constant'>['constant']['args']) => { + return VM.constant(value!); + }, + + 'increasing-by-time': ({ + startValue, + endValue, + startTimestamp, + endTimestamp, + }: Filter<'increasing-by-time'>['increasing-by-time']['args']) => { + return VM.inc(startValue!, endValue!, startTimestamp!, endTimestamp!); + }, + + 'decreasing-by-time': ({ + startValue, + endValue, + startTimestamp, + endTimestamp, + }: Filter<'decreasing-by-time'>['decreasing-by-time']['args']) => { + return VM.dec(startValue!, endValue!, startTimestamp!, endTimestamp!); + }, + + 'increasing-by-block': ({ + startValue, + endValue, + startBlock, + endBlock, + }: Filter<'increasing-by-block'>['increasing-by-block']['args']) => { + return VM.inc(startValue!, endValue!, startBlock!, endBlock!, true); + }, + + 'decreasing-by-block': ({ + startValue, + endValue, + startBlock, + endBlock, + }: Filter<'decreasing-by-block'>['decreasing-by-block']['args']) => { + return VM.dec(startValue!, endValue!, startBlock!, endBlock!, true); + }, +} as const; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts new file mode 100644 index 0000000..fba73bf --- /dev/null +++ b/src/rule-builder/ruleBuilder.ts @@ -0,0 +1,287 @@ +import { lib } from './lib'; +import { BigNumberish, BytesLike } from 'ethers'; +import { StateConfig, VM } from '../classes/vm'; +import { areEqualConfigs } from '../utils'; +import { + Condition, + ConditionGroup, + Currency, + Modifier, + Price, + Quantity, +} from './types'; + + +/** + * @public + * Class with methods to generate a multi-currency rule-based StateConfig + * + * @example + * ```typescript + * // to import: + * import { RuleBuilder } from "rain-sdk" + * + * // to build the multi-currency rule-based StateConfig: + * const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) + * + * // to build a single condition's StateConfig of a single Rule: + * const conditions = RuleBuilder.getConditionConfig(condition) + * + * // to build a ConditionGroup StateConfig: + * const rule = RuleBuilder.getConditionGroup(conditionGroup) + * + * //to build a single price or quantity StateConfig: + * const quantity = RuleBuilder.getQPConfig(quantity) + * const price = RuleBuilder.getQPConfig(price) + * ``` + */ +export class RuleBuilder { + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + /** + * Constructor of RuleBuilder class + * + * @param currencies - Array of Currency + */ + constructor(public readonly currencies: Currency[]) { + const vm_ = RuleBuilder.build(currencies); + this.constants = vm_.constants; + this.sources = vm_.sources; + } + + /** + * @public + * Method to generate a multi currency rule-based StateConfig + * + * @param currencies - An array of Currency objects + * @returns StateConfig + */ + public static build(currencies: Currency[]): StateConfig { + let rules_: StateConfig[] = []; + let thens_: StateConfig[] = []; + let count = 0; + + for (let i = 0; i < currencies.length; i++) { + let qs_: StateConfig[] = []; + let ps_: StateConfig[] = []; + let q_: StateConfig; + let p_: StateConfig; + + for (let rule of currencies[i].rules) { + if ( + areEqualConfigs( + this.getConditionGroupConfig(rule.quantityConditions), + this.getConditionGroupConfig(rule.priceConditions) + ) + ) { + rules_.push(this.getConditionGroupConfig(rule.quantityConditions)); + rules_.push(VM.stack(count * 2)) + } + else { + rules_.push(this.getConditionGroupConfig(rule.quantityConditions)); + rules_.push(this.getConditionGroupConfig(rule.priceConditions)); + } + + qs_.push( + VM.mulTogether( + [VM.stack(count * 2), this.getQPConfig(rule.quantity)], + false + ) + ); + ps_.push( + VM.mulTogether( + [VM.stack(count * 2 + 1), this.getQPConfig(rule.price)], + false + ) + ); + count++; + } + + qs_.push(this.getQPConfig(currencies[i].default.quantity)); + ps_.push(this.getQPConfig(currencies[i].default.price)); + + q_ = (VM[currencies[i].pick.quantities](qs_, false)); + p_ = (VM[currencies[i].pick.prices](ps_, false)); + + let qMod = currencies[i].quantityGlobalModifier; + let pMod = currencies[i].priceGlobalModifier; + if (qMod !== undefined) { + thens_.push(this.applyModifier(q_, qMod)); + } + else { + thens_.push(q_); + } + if (pMod !== undefined) { + thens_.push(this.applyModifier(p_, pMod)); + } + else { + thens_.push(p_); + } + } + + return VM.multi([...rules_, ...thens_], false); + } + + /** + * @public + * Method to generate a single currency rule-based StateConfig + * + * @param currency - A Currency object + * @returns StateConfig + */ + public static singleBuild(currency: Currency): StateConfig { + return this.build([currency]); + } + + /** + * Method to get the conditions' StateConfig of a ConditionGroup seperately + * + * @param conditionGroup - The ConditionGroup object + * @returns Array of StateConfig + */ + public static getConditionConfig(condition: Condition): StateConfig { + let condition_: StateConfig; + + if ('subject' in condition.struct) { + if (condition.operator === 'true') { + condition_ = lib[condition.struct.subject](condition.struct.args); + } + else if (condition.operator === 'not') { + condition_ = VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args) + ); + } + else { + if ('subject' in condition.struct2!) { + condition_ = VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args), + lib[condition.struct2!.subject](condition.struct2.args), + false + ); + } + else { + condition_ = VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args), + condition.struct2!, + false + ); + } + } + } + else { + if (condition.operator === 'true') { + condition_ = condition.struct; + } + else if (condition.operator === 'not') { + condition_ = VM[condition.operator](condition.struct); + } + else { + if ('subject' in condition.struct2!) { + condition_ = VM[condition.operator]( + condition.struct, + lib[condition.struct2!.subject](condition.struct2.args), + false + ); + } + else { + condition_ = VM[condition.operator]( + condition.struct, + condition.struct2!, + false + ); + } + } + } + return condition_; + } + + /** + * Method to get the a ConditionGroup StateConfig + * + * @param conditionGroup - The ConditionGroup object + * @returns StateConfig + */ + public static getConditionGroupConfig( + conditionGroup: ConditionGroup + ): StateConfig { + let group_: StateConfig[] = []; + for (const item of conditionGroup.conditions) { + if ('conditions' in item) { + group_.push(this.getConditionGroupConfig(item)); + } + else { + group_.push(this.getConditionConfig(item)); + } + } + + if (conditionGroup.operator === 'true') { + return group_[0]; + } + else if (conditionGroup.operator === 'not') { + return VM[conditionGroup.operator](group_[0]); + } + else { + return VM[conditionGroup.operator](group_, false); + } + } + + /** + * Method to get the price or quantity StateConfig + * + * @param pq - The price or quantity + * @returns StateConfig + */ + public static getQPConfig(qp: Price | Quantity): StateConfig { + if ('subject' && 'args' in qp.struct) { + if (qp.modifier !== undefined) { + return this.applyModifier( + lib[qp.struct.subject](qp.struct.args), + qp.modifier + ); + } + else { + return lib[qp.struct.subject](qp.struct.args); + } + } + else if ('consstants' && 'sources' in qp.struct) { + if (qp.modifier !== undefined) { + return this.applyModifier(qp.struct, qp.modifier); + } + else { + return qp.struct; + } + } + else throw new Error('Invalid argument'); + } + + /** + * @public + * Method to generate a single currency rule-based StateConfig + * + * @param config - The config to apply modifier on + * @param modifier - The object of type Modifier + * @returns StateConfig + */ + public static applyModifier( + config: StateConfig, + modifier: Modifier + ): StateConfig { + if (modifier.type === 'discount') { + return VM.setDisccount( + config, + this.getConditionGroupConfig(modifier.condition), + modifier.values + ); + } + else if (modifier.type === 'multiplier') { + return VM.setMultiplier( + config, + this.getConditionGroupConfig(modifier.condition), + modifier.values + ); + } + else throw new Error('Invalid Arguments'); + } +} diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts new file mode 100644 index 0000000..3241f00 --- /dev/null +++ b/src/rule-builder/types.ts @@ -0,0 +1,327 @@ +import { BigNumber } from 'ethers'; +import { Tier } from '../classes/iTierV2'; +import { StateConfig } from '../classes/vm'; + + +/** + * @public + * Type for current user buy units i.e. user input + */ +export type BuyUnits = 'buy-units'; + +/** + * @public + * Type for times based rules + */ +export type Time = 'before-time' | 'after-time' | 'between-times'; + +/** + * @public + * Type for block number based rules + */ +export type Block = 'before-block' | 'after-block' | 'between-blocks'; + +/** + * @public + * Type for Rain tier contractsreport check + */ +export type Tiers = 'has-min-tier' | 'has-any-tier'; + +/** + * @public + * Type for mathematical folmulas or constant values + */ +export type Math = + | 'constant' + | 'increasing-by-time' + | 'decreasing-by-time' + | 'increasing-by-block' + | 'decreasing-by-block'; + +/** + * @public + * Type for getting specific evm tokens or user wallet token balances + */ +export type Asset = + | 'user-erc20-balance' + | 'erc20-total-supply' + | 'user-erc721-balance' + | 'erc721-owner' + | 'user-erc1155-balance' + | 'user-erc20-snapshot-balance' + | 'erc20-snapshot-totaly-supply'; + +/** + * @public + * Valid Modifier types + */ +export type ModifierType = 'discount' | 'multiplier'; + +/** + * @public + * All the valid logical operators used for comparison of previous types + */ +export type Operator = + | 'true' + | 'not' + | 'and' + | 'or' + | 'nand' + | 'nor' + | 'xor' // should not be used unless it is really necessary as it is gas intensive cause it doubles the scripts passed to it + | 'xnor' // should not be used unless it is really necessary as it is gas intensive cause it doubles the scripts passed to it + | 'min' + | 'max' + | 'eq' + | 'gt' + | 'lt' + | 'gte' + | 'lte'; + +/** + * @public + * A key/type pair for all the valid Struct types + */ +export type StructTypeLib = { + 'buy-units' : { + index: number + }, + 'before-time': { + timestamp: number, + exactTime?: boolean + }, + 'after-time': { + timestamp: number, + exactTime?: boolean + }, + 'between-times': { + startTimestamp: number, + endTimestamp: number + }, + 'before-block': { + block: number, + exactBlock?: boolean + }, + 'after-block': { + block: number, + exactBlock?: boolean + }, + 'between-blocks': { + startBlock: number, + endBlock: number + }, + 'has-min-tier': { + tierAddress: string, + minTier: Tier, + tierContext?: BigNumber[] + }, + 'has-any-tier': { + tierAddress: string, + tierContext?: BigNumber[] + }, + 'user-erc20-balance': { + tokenAddress: string + }, + 'erc20-total-supply': { + tokenAddress: string + }, + 'user-erc721-balance': { + tokenAddress: string + }, + 'erc721-owner': { + tokenAddress: string, + id: BigNumber + }, + 'user-erc1155-balance': { + tokenAddress: string, + id: BigNumber + }, + 'user-erc20-snapshot-balance': { + tokenAddress: string, + id: BigNumber + }, + 'erc20-snapshot-total-supply': { + tokenAddress: string, + id: BigNumber + }, + 'constant': { + value: BigNumber + }, + 'increasing-by-time': { + startValue: BigNumber, + endValue: BigNumber, + startTimestamp: number, + endTimestamp: number + }, + 'decreasing-by-time': { + startValue: BigNumber, + endValue: BigNumber, + startTimestamp: number, + endTimestamp: number + }, + 'increasing-by-block': { + startValue: BigNumber, + endValue: BigNumber, + startBlock: number, + endBlock: number + }, + 'decreasing-by-block': { + startValue: BigNumber, + endValue: BigNumber, + startBlock: number, + endBlock: number + }, +} + +/** + * @public + * A filtering utility type for StructTypeLib + */ + export type Filter = { + [Prop in keyof StructTypeLib]: { subject: T, args: StructTypeLib[T] } +} + +/** + * @public + * The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig + */ +export type Struct = + | StateConfig + | Filter<'buy-units'>['buy-units'] + | Filter<'before-time'>['before-time'] + | Filter<'after-time'>['after-time'] + | Filter<'between-times'>['between-times'] + | Filter<'before-block'>['before-block'] + | Filter<'after-block'>['after-block'] + | Filter<'between-blocks'>['between-blocks'] + | Filter<'has-min-tier'>['has-min-tier'] + | Filter<'has-any-tier'>['has-any-tier'] + | Filter<'user-erc20-balance'>['user-erc20-balance'] + | Filter<'erc20-total-supply'>['erc20-total-supply'] + | Filter<'user-erc721-balance'>['user-erc721-balance'] + | Filter<'erc721-owner'>['erc721-owner'] + | Filter<'user-erc1155-balance'>['user-erc1155-balance'] + | Filter<'user-erc20-snapshot-balance'>['user-erc20-snapshot-balance'] + | Filter<'erc20-snapshot-total-supply'>['erc20-snapshot-total-supply'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block']; + +/** + * @public + * Type for conditions which is a comparison between structs which results in a boolean StateConfig + */ +export type Condition = { + struct: Struct; + operator: Extract< + Operator, + 'true' | 'not' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte' + >; + struct2?: Struct; +}; + +/** + * @public + * Type for a single or multiple conditions which are combined together with the + * valid logical operators which results in a a boolean StateConfig + */ +export type ConditionGroup = { + conditions: (Condition | ConditionGroup)[]; + operator: Exclude< + Operator, + 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'lte' | 'gte' + >; +}; + +/** + * @public + * Quantity type + */ +export type Quantity = { + struct: + | StateConfig + | Filter<'buy-units'>['buy-units'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + modifier?: Modifier; +}; + +/** + * @public + * Price type + */ +export type Price = { + struct: + | StateConfig + | Filter<'buy-units'>['buy-units'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + modifier?: Modifier; +}; + +/** + * @public + * A single Rule block, i.e. an if/then block that contains conditions of + * prices and quantities and its actions which are price and quantity + * + * @remarks + * If the price and quantity conditions are the same just put the same object + * in both of 'quantityConditions' and 'priceConditions + */ +export type Rule = { + quantityConditions: ConditionGroup; + priceConditions: ConditionGroup; + quantity: Quantity; + price: Price; +}; + +/** + * @public + * The default block, i.e. default quantity and price + */ +export type Default = { + quantity: Quantity; + price: Price; +}; + +/** + * @public + * Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig + */ +export type Currency = { + rules: Rule[]; + default: Default; + quantityGlobalModifier?: Modifier; + priceGlobalModifier?: Modifier; + pick: { + quantities: Extract; + prices: Extract; + }; +}; + +/** + * @public + * Type for price/quantity modifier based on a tier report or a Rule + */ +export type Modifier = { + /** + * Determines the modifier's type + */ + type: ModifierType; + /** + * the rule of the modifier + */ + condition: ConditionGroup; + /** + * The modifing value(s) + */ + values: number; +}; diff --git a/src/utils.ts b/src/utils.ts index 4801520..f4daab4 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -484,15 +484,15 @@ export const areEqualConfigs = (config1: StateConfig, config2: StateConfig): boo export const isTier = async(tierAddress: string, signer: Signer) => { if (ethers.utils.isAddress(tierAddress)) { try{ - const iTier = new ITierV2(tierAddress, signer) - await iTier.report(await signer.getAddress(), []); - return true; - } - catch(err){ - return false; - } + const iTier = new ITierV2(tierAddress, signer) + await iTier.report(await signer.getAddress(), []); + return true; } - else { + catch(err){ return false; } - } \ No newline at end of file + } + else { + return false; + } +} \ No newline at end of file diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts new file mode 100644 index 0000000..24ddb23 --- /dev/null +++ b/test/RuleBuilder.test.ts @@ -0,0 +1,741 @@ +import { assert } from "chai"; +import { BigNumber, ethers } from "ethers"; +import { RuleBuilder, StateConfig, VM } from "../src"; +import { Currency } from "../src/rule-builder/types"; +import { areEqualConfigs, concat, op, paddedUInt32 } from "../src/utils"; +import { Tier } from "./utils"; + + +describe('SDK - RuleBuilder', () => { + it('should correctly construct the single currency StateConfig with nested conditions', async () => { + const currencyObject: Currency = { + rules: [ + { + quantityConditions: { + conditions: [ + { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111 + } + }, + operator: 'true' + }, + { + struct: { + subject: 'has-min-tier', + args: { + tierAddress: '0xabcdef123456789', + minTier: Tier.FOUR + } + }, + operator: 'true' + } + ], + operator: 'or' + }, + { + struct: { + subject: 'user-erc20-balance', + args: { + tokenAddress: '0xa1b2c3d4e5f689' + } + }, + operator: 'gt', + struct2: { + subject: 'constant', + args: { + value: BigNumber.from(50) + } + } + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111 + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + quantity: { + struct: { + subject: 'buy-units', + args: { + index: 1 + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'after-time', + args: { + timestamp: 11111, + exactTime: true + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111, + exactTime: true + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + quantity: { + struct: { + subject: 'buy-units', + args: { + index: 1 + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + } + } + }, + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + priceGlobalModifier: { + type: 'discount', + condition: { + conditions: [ + { + struct: { + subject: 'has-any-tier', + args: { tierAddress: '0x123456789abcdef' } + }, + operator: 'true' + } + ], + operator: 'true' + }, + values: 25 + }, + pick: { + quantities: 'max', + prices: 'min' + } + } + const resultConfig = new RuleBuilder([currencyObject]); + + const expectedConfig: StateConfig = { + constants: [ + 11111, + '0xabcdef123456789', + BigNumber.from( + '0x' + + paddedUInt32('0xffffffff').repeat(5) + + paddedUInt32(0).repeat(3) + ), + '0xa1b2c3d4e5f689', + BigNumber.from(50), + 11111, + 11111, + 11111, + ethers.constants.Zero, + BigNumber.from(5), + BigNumber.from(10), + BigNumber.from(5), + '0x123456789abcdef', + ethers.constants.MaxUint256, + 7500, + 10000 + ], + sources: [ + concat([ + // q rule1 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.IERC20_BALANCE_OF), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.EVERY, 2), + // p rule1 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.LESS_THAN), + // q rule2 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ISZERO), + //p rule 2 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.ISZERO), + // quantities + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 2), + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.MAX, 3), + // prices + op(VM.Opcodes.STACK, 1), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 3), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.MIN, 3), + // prices global modifier + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 14), + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.DIV, 2), + ]) + ] + } + + assert( + areEqualConfigs(resultConfig, expectedConfig), + `RuleBuilder did not generate correct StateConfig` + ); + }); + + it('should correctly construct the multi currency StateConfig', async () => { + const currencyObject: Currency[] = [ + // currency 1 + { + rules: [ + { + quantityConditions: { + conditions: [ + { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111 + } + }, + operator: 'true' + }, + { + struct: { + subject: 'has-min-tier', + args: { + tierAddress: '0xabcdef123456789', + minTier: Tier.FOUR + } + }, + operator: 'true' + } + ], + operator: 'or' + }, + { + struct: { + subject: 'user-erc20-balance', + args: { + tokenAddress: '0xa1b2c3d4e5f689' + } + }, + operator: 'gt', + struct2: { + subject: 'constant', + args: { + value: BigNumber.from(50) + } + } + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111 + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + quantity: { + struct: { + subject: 'buy-units', + args: { + index: 1 + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'after-time', + args: { + timestamp: 11111, + exactTime: true + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111, + exactTime: true + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + quantity: { + struct: { + subject: 'buy-units', + args: { + index: 1 + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + } + } + }, + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + priceGlobalModifier: { + type: 'discount', + condition: { + conditions: [ + { + struct: { + subject: 'has-any-tier', + args: { tierAddress: '0x123456789abcdef' } + }, + operator: 'true' + } + ], + operator: 'true' + }, + values: 25 + }, + pick: { + quantities: 'max', + prices: 'min' + } + }, + // currency 2 + { + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111 + } + }, + operator: 'true' + }, + { + struct: { + subject: 'has-min-tier', + args: { + tierAddress: '0xabcdef123456789', + minTier: Tier.FOUR + } + }, + operator: 'true' + } + ], + operator: 'or' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'before-time', + args: { + timestamp: 11111 + } + }, + operator: 'true' + }, + { + struct: { + subject: 'has-min-tier', + args: { + tierAddress: '0xabcdef123456789', + minTier: Tier.FOUR + } + }, + operator: 'true' + } + ], + operator: 'or' + }, + quantity: { + struct: { + subject: 'buy-units', + args: { + index: 1 + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + quantityGlobalModifier: { + type: 'discount', + condition: { + conditions: [ + { + struct: { + subject: 'has-any-tier', + args: { tierAddress: '0x123456789abcdef' } + }, + operator: 'true' + } + ], + operator: 'true' + }, + values: 25 + }, + priceGlobalModifier: { + type: 'discount', + condition: { + conditions: [ + { + struct: { + subject: 'has-any-tier', + args: { tierAddress: '0x123456789abcdef' } + }, + operator: 'true' + } + ], + operator: 'true' + }, + values: 25 + }, + pick: { + quantities: 'max', + prices: 'min' + } + } + ] + + const resultConfig = new RuleBuilder(currencyObject); + + const expectedConfig: StateConfig = { + constants: [ + //currency1 conditions' constants + 11111, + '0xabcdef123456789', + BigNumber.from( + '0x' + + paddedUInt32('0xffffffff').repeat(5) + + paddedUInt32(0).repeat(3) + ), + '0xa1b2c3d4e5f689', + BigNumber.from(50), + 11111, + 11111, + 11111, + // currency2 conditions' constants + 11111, + '0xabcdef123456789', + BigNumber.from( + '0x' + + paddedUInt32('0xffffffff').repeat(5) + + paddedUInt32(0).repeat(3) + ), + // currency1 quantities constants + ethers.constants.Zero, + // currency1 prices constants + BigNumber.from(5), + BigNumber.from(10), + BigNumber.from(5), + // currency1 prices global modifier + '0x123456789abcdef', + ethers.constants.MaxUint256, + 7500, + 10000, + // currency2 quantities constants + ethers.constants.Zero, + // currency2 quantities global modifier + '0x123456789abcdef', + ethers.constants.MaxUint256, + 7500, + 10000, + // currency2 prices + BigNumber.from(5), + BigNumber.from(5), + // currency2 prices global modifier + '0x123456789abcdef', + ethers.constants.MaxUint256, + 7500, + 10000, + ], + sources: [ + concat([ + // currency1 quantity rule1 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.IERC20_BALANCE_OF), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.EVERY, 2), + // currency1 price rule1 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.LESS_THAN), + // currency1 quantity rule2 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ISZERO), + // currency1 price rule2 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.GREATER_THAN), + op(VM.Opcodes.ISZERO), + // currency2 quantity rule1 + op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.ANY, 2), + // currency2 price rule1 + op(VM.Opcodes.STACK, 4), + // currency1 quantities + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 2), + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.MAX, 3), + // currency1 prices + op(VM.Opcodes.STACK, 1), + op(VM.Opcodes.CONSTANT, 12), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 3), + op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 14), + op(VM.Opcodes.MIN, 3), + // currency1 prices global modifier + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 16), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 17), + op(VM.Opcodes.CONSTANT, 18), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 18), + op(VM.Opcodes.DIV, 2), + // currency2 quantities + op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.CONTEXT, 1), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 19), + op(VM.Opcodes.MAX, 2), + // currency2 quantitty global modifier + op(VM.Opcodes.CONSTANT, 20), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 21), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 22), + op(VM.Opcodes.CONSTANT, 23), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 23), + op(VM.Opcodes.DIV, 2), + // currency2 prices + op(VM.Opcodes.STACK, 5), + op(VM.Opcodes.CONSTANT, 24), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 25), + op(VM.Opcodes.MIN, 2), + // currency2 prices global modifier + op(VM.Opcodes.CONSTANT, 26), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.ITIERV2_REPORT), + op(VM.Opcodes.CONSTANT, 27), + op(VM.Opcodes.LESS_THAN), + op(VM.Opcodes.CONSTANT, 28), + op(VM.Opcodes.CONSTANT, 29), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 29), + op(VM.Opcodes.DIV, 2), + ]) + ] + } + + assert( + areEqualConfigs(resultConfig, expectedConfig), + `RuleBuilder did not generate correct StateConfig` + ); + }); +}); \ No newline at end of file From ea0baf77b2e3afcb5a2c72b3289ed228f6f66dfe Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 6 Aug 2022 15:24:59 +0000 Subject: [PATCH 076/125] update --- docs/classes/rulebuilder.md | 41 +++++++-------------------------- shell.nix | 3 ++- src/rule-builder/ruleBuilder.ts | 23 +++++------------- 3 files changed, 16 insertions(+), 51 deletions(-) diff --git a/docs/classes/rulebuilder.md b/docs/classes/rulebuilder.md index b29b351..7f5760f 100644 --- a/docs/classes/rulebuilder.md +++ b/docs/classes/rulebuilder.md @@ -16,16 +16,16 @@ class RuleBuilder // to import: import { RuleBuilder } from "rain-sdk" -// to build the multi-currency rule-based StateConfig: +// to from the multi-currency rule-based StateConfig: const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) -// to build a single condition's StateConfig of a single Rule: +// to from a single condition's StateConfig of a single Rule: const conditions = RuleBuilder.getConditionConfig(condition) -// to build a ConditionGroup StateConfig: +// to from a ConditionGroup StateConfig: const rule = RuleBuilder.getConditionGroup(conditionGroup) -//to build a single price or quantity StateConfig: +//to from a single price or quantity StateConfig: const quantity = RuleBuilder.getQPConfig(quantity) const price = RuleBuilder.getQPConfig(price) @@ -44,11 +44,10 @@ const price = RuleBuilder.getQPConfig(price) | Method | Description | | --- | --- | | [applyModifier(config, modifier)](./rulebuilder.md#applyModifier-method-static-1) | Method to generate a single currency rule-based StateConfig | -| [build(currencies)](./rulebuilder.md#build-method-static-1) | Method to generate a multi currency rule-based StateConfig | +| [from(currencies)](./rulebuilder.md#from-method-static-1) | Method to generate a multi currency rule-based StateConfig | | [getConditionConfig(condition)](./rulebuilder.md#getConditionConfig-method-static-1) | Method to get the conditions' StateConfig of a ConditionGroup seperately | | [getConditionGroupConfig(conditionGroup)](./rulebuilder.md#getConditionGroupConfig-method-static-1) | Method to get the a ConditionGroup StateConfig | | [getQPConfig(qp)](./rulebuilder.md#getQPConfig-method-static-1) | Method to get the price or quantity StateConfig | -| [singleBuild(currency)](./rulebuilder.md#singleBuild-method-static-1) | Method to generate a single currency rule-based StateConfig | ## Property Details @@ -109,16 +108,16 @@ static applyModifier(config: StateConfig, modifier: Modifier): StateConfig; StateConfig - + -### build(currencies) +### from(currencies) Method to generate a multi currency rule-based StateConfig Signature: ```typescript -static build(currencies: Currency[]): StateConfig; +static from(currencies: Currency[]): StateConfig; ``` #### Parameters @@ -205,27 +204,3 @@ static getQPConfig(qp: Price | Quantity): StateConfig; StateConfig - - -### singleBuild(currency) - -Method to generate a single currency rule-based StateConfig - -Signature: - -```typescript -static singleBuild(currency: Currency): StateConfig; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| currency | [Currency](../types/currency.md) | A Currency object | - -Returns: - -`StateConfig` - -StateConfig - diff --git a/shell.nix b/shell.nix index 2ffb8ed..9f786e8 100644 --- a/shell.nix +++ b/shell.nix @@ -49,7 +49,8 @@ pkgs.stdenv.mkDerivation { name = "shell"; buildInputs = [ pkgs.yarn - pkgs.nodejs-14_x + pkgs.nodePackages.npm + pkgs.nodejs-16_x copy-contracts generate-typechain copy-typechain diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index fba73bf..259e41b 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -21,16 +21,16 @@ import { * // to import: * import { RuleBuilder } from "rain-sdk" * - * // to build the multi-currency rule-based StateConfig: + * // to from the multi-currency rule-based StateConfig: * const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) * - * // to build a single condition's StateConfig of a single Rule: + * // to from a single condition's StateConfig of a single Rule: * const conditions = RuleBuilder.getConditionConfig(condition) * - * // to build a ConditionGroup StateConfig: + * // to from a ConditionGroup StateConfig: * const rule = RuleBuilder.getConditionGroup(conditionGroup) * - * //to build a single price or quantity StateConfig: + * //to from a single price or quantity StateConfig: * const quantity = RuleBuilder.getQPConfig(quantity) * const price = RuleBuilder.getQPConfig(price) * ``` @@ -46,7 +46,7 @@ export class RuleBuilder { * @param currencies - Array of Currency */ constructor(public readonly currencies: Currency[]) { - const vm_ = RuleBuilder.build(currencies); + const vm_ = RuleBuilder.from(currencies); this.constants = vm_.constants; this.sources = vm_.sources; } @@ -58,7 +58,7 @@ export class RuleBuilder { * @param currencies - An array of Currency objects * @returns StateConfig */ - public static build(currencies: Currency[]): StateConfig { + public static from(currencies: Currency[]): StateConfig { let rules_: StateConfig[] = []; let thens_: StateConfig[] = []; let count = 0; @@ -124,17 +124,6 @@ export class RuleBuilder { return VM.multi([...rules_, ...thens_], false); } - /** - * @public - * Method to generate a single currency rule-based StateConfig - * - * @param currency - A Currency object - * @returns StateConfig - */ - public static singleBuild(currency: Currency): StateConfig { - return this.build([currency]); - } - /** * Method to get the conditions' StateConfig of a ConditionGroup seperately * From 63f7bafe1baf0425232cf2050aeca7ed37d570ad Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 6 Aug 2022 15:30:27 +0000 Subject: [PATCH 077/125] fix doc --- docs/classes/rulebuilder.md | 8 ++++---- src/rule-builder/ruleBuilder.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/classes/rulebuilder.md b/docs/classes/rulebuilder.md index 7f5760f..066af32 100644 --- a/docs/classes/rulebuilder.md +++ b/docs/classes/rulebuilder.md @@ -16,16 +16,16 @@ class RuleBuilder // to import: import { RuleBuilder } from "rain-sdk" -// to from the multi-currency rule-based StateConfig: +// to get the multi-currency rule-based StateConfig: const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) -// to from a single condition's StateConfig of a single Rule: +// to get a single condition's StateConfig of a single Rule: const conditions = RuleBuilder.getConditionConfig(condition) -// to from a ConditionGroup StateConfig: +// to get a ConditionGroup StateConfig: const rule = RuleBuilder.getConditionGroup(conditionGroup) -//to from a single price or quantity StateConfig: +//to get a single price or quantity StateConfig: const quantity = RuleBuilder.getQPConfig(quantity) const price = RuleBuilder.getQPConfig(price) diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 259e41b..06c2112 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -21,16 +21,16 @@ import { * // to import: * import { RuleBuilder } from "rain-sdk" * - * // to from the multi-currency rule-based StateConfig: + * // to get the multi-currency rule-based StateConfig: * const vmStateConfig = new RuleBuilder([currency1, currency2, ...]) * - * // to from a single condition's StateConfig of a single Rule: + * // to get a single condition's StateConfig of a single Rule: * const conditions = RuleBuilder.getConditionConfig(condition) * - * // to from a ConditionGroup StateConfig: + * // to get a ConditionGroup StateConfig: * const rule = RuleBuilder.getConditionGroup(conditionGroup) * - * //to from a single price or quantity StateConfig: + * //to get a single price or quantity StateConfig: * const quantity = RuleBuilder.getQPConfig(quantity) * const price = RuleBuilder.getQPConfig(price) * ``` From b96f783137ed173f7ef53c40c6b3ddc594e611fd Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 8 Aug 2022 20:46:02 +0000 Subject: [PATCH 078/125] RuleBuilder debugg, update + new increasing by period template + always/never conditions + rule builder zero price bug fix + added doc for StructTypeLib --- docs/classes/vm.md | 132 +++- docs/index.md | 10 +- docs/types/always.md | 10 + docs/types/asset.md | 10 - docs/types/block.md | 10 - docs/types/buyunits.md | 10 - docs/types/condition.md | 2 +- docs/types/conditiongroup.md | 2 +- docs/types/math_2.md | 10 - docs/types/never.md | 10 + docs/types/operator.md | 2 +- docs/types/price.md | 2 +- docs/types/quantity.md | 2 +- docs/types/struct.md | 2 +- docs/types/structtypelib.md | 30 +- docs/types/tiers.md | 10 - docs/types/time.md | 10 - src/classes/vm.ts | 199 ++++-- src/rule-builder/lib.ts | 93 ++- src/rule-builder/ruleBuilder.ts | 158 +++-- src/rule-builder/types.ts | 636 +++++++++++++----- src/typechain/ERC165Upgradeable.ts | 106 --- src/typechain/ERC721Upgradeable.ts | 537 --------------- src/typechain/IERC165Upgradeable.ts | 95 --- src/typechain/IERC2981Upgradeable.ts | 141 ---- src/typechain/IERC721MetadataUpgradeable.ts | 531 --------------- src/typechain/IERC721ReceiverUpgradeable.ts | 113 ---- src/typechain/IERC721Upgradeable.ts | 480 ------------- src/typechain/OwnableUpgradeable.ts | 167 ----- .../factories/ERC165Upgradeable__factory.ts | 58 -- .../factories/ERC721Upgradeable__factory.ts | 404 ----------- .../factories/IERC165Upgradeable__factory.ts | 45 -- .../factories/IERC2981Upgradeable__factory.ts | 74 -- .../IERC721MetadataUpgradeable__factory.ts | 360 ---------- .../IERC721ReceiverUpgradeable__factory.ts | 64 -- .../factories/IERC721Upgradeable__factory.ts | 311 --------- .../factories/OwnableUpgradeable__factory.ts | 91 --- src/typechain/hardhat.d.ts | 90 --- src/typechain/index.ts | 24 +- test/RuleBuilder.test.ts | 77 ++- 40 files changed, 992 insertions(+), 4126 deletions(-) create mode 100644 docs/types/always.md delete mode 100644 docs/types/asset.md delete mode 100644 docs/types/block.md delete mode 100644 docs/types/buyunits.md delete mode 100644 docs/types/math_2.md create mode 100644 docs/types/never.md delete mode 100644 docs/types/tiers.md delete mode 100644 docs/types/time.md delete mode 100644 src/typechain/ERC165Upgradeable.ts delete mode 100644 src/typechain/ERC721Upgradeable.ts delete mode 100644 src/typechain/IERC165Upgradeable.ts delete mode 100644 src/typechain/IERC2981Upgradeable.ts delete mode 100644 src/typechain/IERC721MetadataUpgradeable.ts delete mode 100644 src/typechain/IERC721ReceiverUpgradeable.ts delete mode 100644 src/typechain/IERC721Upgradeable.ts delete mode 100644 src/typechain/OwnableUpgradeable.ts delete mode 100644 src/typechain/factories/ERC165Upgradeable__factory.ts delete mode 100644 src/typechain/factories/ERC721Upgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC165Upgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC2981Upgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721MetadataUpgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts delete mode 100644 src/typechain/factories/IERC721Upgradeable__factory.ts delete mode 100644 src/typechain/factories/OwnableUpgradeable__factory.ts diff --git a/docs/classes/vm.md b/docs/classes/vm.md index 93df552..58b1d10 100644 --- a/docs/classes/vm.md +++ b/docs/classes/vm.md @@ -29,6 +29,7 @@ class VM | [constant(value)](./vm.md#constant-method-static-1) | Methdo to create a simple signle value script, ie CONTANT | | [createVMSources(OPerands)](./vm.md#createVMSources-method-static-1) | Create a VM sources to be ready to use in any call just providing the combination desired. | | [dec(startValue, endValue, startPoint, endPoint, byBlock)](./vm.md#dec-method-static-1) | Create a new raw linear decreasing value StateConfig. | +| [decBy(startValue, startPoint, margin, periodLength, endValue, byBlock)](./vm.md#decBy-method-static-1) | Create a new raw linear decreasing value StateConfig decreasing by a margin over each period. | | [eq(config1, config2, stackReassignment)](./vm.md#eq-method-static-1) | Method to check if a script is equal to another script or not. will return 1 if is true and 0 if it is not | | [getAsset(type: "erc20-balance-of" \| "erc20-total-supply" \| "snapshot-balance-of" \| "snapshot-total-supply" \| "erc721-balance-of" \| "erc721-owner-of" \| "erc1155-balance-of" \| "erc1155-balance-of-batch", address, id, delegatedCall)](./vm.md#getAsset-method-static-1) | A method to generate the StateConfig out of EVM assets' opcodes | | [gt(config1, config2, stackReassignment)](./vm.md#gt-method-static-1) | Method to check if a script is greater than another script or not. will return 1 if is true and 0 if it is not | @@ -37,6 +38,7 @@ class VM | [hasMinTier(tierConfig, tier, stackReassignment)](./vm.md#hasMinTier-method-static-1) | Method to check if an address has at least the "TIER" status | | [ifelse(condition, ifStatement, elseStatement, stackReassignment)](./vm.md#ifelse-method-static-1) | Method to create an if/else script | | [inc(startValue, endValue, startPoint, endPoint, byBlock)](./vm.md#inc-method-static-1) | Create a new raw linear increasing value StateConfig. | +| [incBy(startValue, startPoint, margin, periodLength, endValue, byBlock)](./vm.md#incBy-method-static-1) | Create a new raw linear increasing value StateConfig increasing by a margin over each period. | | [input(operand)](./vm.md#input-method-static-1) | Method to create a simple CONTEXT opcode script | | [lt(config1, config2, stackReassignment)](./vm.md#lt-method-static-1) | Method to check if a script is less than another script or not. will return 1 if is true and 0 if it is not | | [lte(config1, config2, stackReassignment)](./vm.md#lte-method-static-1) | Method to check if a script is less than or equal to another script or not. will return 1 if is true and 0 if it is not | @@ -98,7 +100,7 @@ static addTogether(configs: StateConfig[], stackReassignment?: boolean): StateCo `StateConfig` -a +a StateConfig @@ -123,7 +125,7 @@ static and(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -148,7 +150,7 @@ static beforeAfterBlock(blockNumber: number, type: "gt" | "lt" | "gte" | "lte"): `StateConfig` -A +A StateConfig @@ -173,7 +175,7 @@ static beforeAfterTime(timestamp: number, type: "gt" | "lt" | "gte" | "lte"): St `StateConfig` -A +A StateConfig @@ -205,7 +207,7 @@ static combiner(config1: StateConfig, config2: StateConfig, options?: { `StateConfig` -combined VM script. +combined VM script (StateConfig) @@ -229,7 +231,7 @@ static constant(value: BigNumberish): StateConfig; `StateConfig` -a +a StateConfig @@ -281,7 +283,36 @@ static dec(startValue: BigNumber, endValue: BigNumber, startPoint: number, endPo `StateConfig` -a +a StateConfig + + + +### decBy(startValue, startPoint, margin, periodLength, endValue, byBlock) + +Create a new raw linear decreasing value StateConfig decreasing by a margin over each period. + +Signature: + +```typescript +static decBy(startValue: BigNumber, startPoint: number, margin: BigNumber, periodLength: number, endValue?: number, byBlock?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| startValue | `BigNumber` | The starting value | +| startPoint | `number` | Starting point, either timestamp or block number | +| margin | `BigNumber` | The amount to decrease by each period passing | +| periodLength | `number` | The length of each period | +| endValue | `number` | Ending point, either timestamp or block number | +| byBlock | `boolean` | Whether decreasing by block or timestamp, pass true to be based on block | + +Returns: + +`StateConfig` + +a StateConfig @@ -307,7 +338,7 @@ static eq(config1: StateConfig, config2: StateConfig, stackReassignment?: boolea `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -334,7 +365,7 @@ static getAsset(type: "erc20-balance-of" | "erc20-total-supply" | "snapshot-bala `StateConfig` -a VM script +a StateConfig @@ -360,7 +391,7 @@ static gt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolea `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -386,7 +417,7 @@ static gte(config1: StateConfig, config2: StateConfig, stackReassignment?: boole `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -411,7 +442,7 @@ static hasAnyTier(tierConfig: StateConfig, stackReassignment?: boolean): StateCo `StateConfig` -a VM script +a StateConfig @@ -437,7 +468,7 @@ static hasMinTier(tierConfig: StateConfig, tier: Tier, stackReassignment?: boole `StateConfig` -a VM script +a StateConfig @@ -464,7 +495,7 @@ static ifelse(condition: StateConfig, ifStatement: StateConfig, elseStatement: S `StateConfig` -a +a StateConfig @@ -492,7 +523,36 @@ static inc(startValue: BigNumber, endValue: BigNumber, startPoint: number, endPo `StateConfig` -a +a StateConfig + + + +### incBy(startValue, startPoint, margin, periodLength, endValue, byBlock) + +Create a new raw linear increasing value StateConfig increasing by a margin over each period. + +Signature: + +```typescript +static incBy(startValue: BigNumber, startPoint: number, margin: BigNumber, periodLength: number, endValue?: number, byBlock?: boolean): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| startValue | `BigNumber` | The starting value | +| startPoint | `number` | Starting point, either timestamp or block number | +| margin | `BigNumber` | The amount to increase by each period passing | +| periodLength | `number` | The length of each period | +| endValue | `number` | Ending point, either timestamp or block number | +| byBlock | `boolean` | Whether increasing by block or timestamp, pass true to be based on block | + +Returns: + +`StateConfig` + +a StateConfig @@ -516,7 +576,7 @@ static input(operand: number): StateConfig; `StateConfig` -a VM script +a StateConfig @@ -542,7 +602,7 @@ static lt(config1: StateConfig, config2: StateConfig, stackReassignment?: boolea `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -568,7 +628,7 @@ static lte(config1: StateConfig, config2: StateConfig, stackReassignment?: boole `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -593,7 +653,7 @@ static max(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig @@ -618,7 +678,7 @@ static min(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig @@ -643,7 +703,7 @@ static multi(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig @@ -668,7 +728,7 @@ static mulTogether(configs: StateConfig[], stackReassignment?: boolean): StateCo `StateConfig` -a +a StateConfig @@ -693,7 +753,7 @@ static nand(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -718,7 +778,7 @@ static nor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -742,7 +802,7 @@ static not(config: StateConfig): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -767,7 +827,7 @@ static or(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -793,7 +853,7 @@ static pair(amountConfig: StateConfig, priceConfig: StateConfig, stackReassignme `StateConfig` -a +a StatecConfig @@ -819,7 +879,7 @@ static setDisccount(config: StateConfig, condition: StateConfig, discount: numbe `StateConfig` -a +a StateConfig @@ -851,7 +911,7 @@ static setDiscountForTiers(config: StateConfig, tierAddress: string, tierDiscoun `StateConfig` -a VM script +a StateConfig @@ -877,6 +937,8 @@ static setMultiplier(config: StateConfig, condition: StateConfig, multiplier: nu `StateConfig` +a StateConfig + ### setMultiplierForTiers(config, tierAddress, tierMultiplier, options) @@ -907,7 +969,7 @@ static setMultiplierForTiers(config: StateConfig, tierAddress: string, tierMulti `StateConfig` -a VM script +a StateConfig @@ -939,7 +1001,7 @@ static setOwnership(config: StateConfig, ownerAddress: string, options?: { `StateConfig` -a VM script. +a StateConfig @@ -965,7 +1027,7 @@ static setTimers(configs: StateConfig[], times: number[], inBlockNumber?: boolea `StateConfig` -a VM script +a StateConfig @@ -989,7 +1051,7 @@ static stack(operand: number): StateConfig; `StateConfig` -a VM script +a StateConfig @@ -1016,7 +1078,7 @@ static xnor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) @@ -1043,5 +1105,5 @@ static xor(configs: StateConfig[], stackReassignment?: boolean): StateConfig; `StateConfig` -a +a StateConfig in VM boolean format (true non-zero, false zero) diff --git a/docs/index.md b/docs/index.md index 02e39fc..f674265 100644 --- a/docs/index.md +++ b/docs/index.md @@ -192,10 +192,8 @@ | Type Alias | Description | | --- | --- | | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | -| [Asset](./types/asset.md) | Type for getting specific evm tokens or user wallet token balances | +| [Always](./types/always.md) | Type to get an always true condition | | [AutoApproveOps](./types/autoapproveops.md) | Type for the opcodes availables in a AutoApprove instance. | -| [Block](./types/block.md) | Type for block number based rules | -| [BuyUnits](./types/buyunits.md) | Type for current user buy units i.e. user input | | [CallOptions](./types/calloptions.md) | Options for instantiating RainJSVM | | [ClearConfig](./types/clearconfig.md) | Type for clear vaultIds used when in | | [ClearStateChange](./types/clearstatechange.md) | Type for changes in state of an orderbook vaults after an successful clear | @@ -210,11 +208,11 @@ | [EvidenceConfig](./types/evidenceconfig.md) | | | [Filter](./types/filter.md) | A filtering utility type for StructTypeLib | | [IOConfig](./types/ioconfig.md) | token the address of the desired token vaultId corresponding token vault id | -| [Math\_2](./types/math_2.md) | Type for mathematical folmulas or constant values | | [Modifier](./types/modifier.md) | Type for price/quantity modifier based on a tier report or a Rule | | [ModifierType](./types/modifiertype.md) | Valid Modifier types | +| [Never](./types/never.md) | Type to get an always false condition | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | -| [Operator](./types/operator.md) | All the valid logical operators used for comparison of previous types | +| [Operator](./types/operator.md) | All the valid logical operators used for comparison of Struct and/or StateConfig objects | | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | @@ -227,8 +225,6 @@ | [Struct](./types/struct.md) | The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig | | [StructTypeLib](./types/structtypelib.md) | A key/type pair for all the valid Struct types | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | -| [Tiers](./types/tiers.md) | Type for Rain tier contractsreport check | -| [Time](./types/time.md) | Type for times based rules | | [TimeBoundConfig](./types/timeboundconfig.md) | | | [WithdrawConfig](./types/withdrawconfig.md) | Type for withdrawing some token amount from a vault used in | diff --git a/docs/types/always.md b/docs/types/always.md new file mode 100644 index 0000000..11b287e --- /dev/null +++ b/docs/types/always.md @@ -0,0 +1,10 @@ + +# Type Always + +Type to get an always true condition + +Signature: + +```typescript +type Always = 'always'; +``` diff --git a/docs/types/asset.md b/docs/types/asset.md deleted file mode 100644 index 702165d..0000000 --- a/docs/types/asset.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type Asset - -Type for getting specific evm tokens or user wallet token balances - -Signature: - -```typescript -type Asset = 'user-erc20-balance' | 'erc20-total-supply' | 'user-erc721-balance' | 'erc721-owner' | 'user-erc1155-balance' | 'user-erc20-snapshot-balance' | 'erc20-snapshot-totaly-supply'; -``` diff --git a/docs/types/block.md b/docs/types/block.md deleted file mode 100644 index 0c19eff..0000000 --- a/docs/types/block.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type Block - -Type for block number based rules - -Signature: - -```typescript -type Block = 'before-block' | 'after-block' | 'between-blocks'; -``` diff --git a/docs/types/buyunits.md b/docs/types/buyunits.md deleted file mode 100644 index f37e64f..0000000 --- a/docs/types/buyunits.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type BuyUnits - -Type for current user buy units i.e. user input - -Signature: - -```typescript -type BuyUnits = 'buy-units'; -``` diff --git a/docs/types/condition.md b/docs/types/condition.md index 79898d7..b03141b 100644 --- a/docs/types/condition.md +++ b/docs/types/condition.md @@ -10,5 +10,5 @@ type Condition = { struct: Struct; operator: Extract; struct2?: Struct; -}; +} | Always | Never | StateConfig; ``` diff --git a/docs/types/conditiongroup.md b/docs/types/conditiongroup.md index d44020b..b3395ba 100644 --- a/docs/types/conditiongroup.md +++ b/docs/types/conditiongroup.md @@ -9,5 +9,5 @@ Type for a single or multiple conditions which are combined together with the va type ConditionGroup = { conditions: (Condition | ConditionGroup)[]; operator: Exclude; -}; +} | Always | Never | StateConfig; ``` diff --git a/docs/types/math_2.md b/docs/types/math_2.md deleted file mode 100644 index 8a8fa52..0000000 --- a/docs/types/math_2.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type Math\_2 - -Type for mathematical folmulas or constant values - -Signature: - -```typescript -type Math = 'constant' | 'increasing-by-time' | 'decreasing-by-time' | 'increasing-by-block' | 'decreasing-by-block'; -``` diff --git a/docs/types/never.md b/docs/types/never.md new file mode 100644 index 0000000..440de7f --- /dev/null +++ b/docs/types/never.md @@ -0,0 +1,10 @@ + +# Type Never + +Type to get an always false condition + +Signature: + +```typescript +type Never = 'never'; +``` diff --git a/docs/types/operator.md b/docs/types/operator.md index f261924..faf0ac3 100644 --- a/docs/types/operator.md +++ b/docs/types/operator.md @@ -1,7 +1,7 @@ # Type Operator -All the valid logical operators used for comparison of previous types +All the valid logical operators used for comparison of Struct and/or StateConfig objects Signature: diff --git a/docs/types/price.md b/docs/types/price.md index 2c04b65..0506823 100644 --- a/docs/types/price.md +++ b/docs/types/price.md @@ -7,7 +7,7 @@ Price type ```typescript type Price = { - struct: StateConfig | Filter<'buy-units'>['buy-units'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block']; + struct: StateConfig | Filter<'input'>['input'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block'] | Filter<'increasing-by-time-period'>['increasing-by-time-period'] | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] | Filter<'increasing-by-block-period'>['increasing-by-block-period'] | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; modifier?: Modifier; }; ``` diff --git a/docs/types/quantity.md b/docs/types/quantity.md index b2a4a3f..57f9aa2 100644 --- a/docs/types/quantity.md +++ b/docs/types/quantity.md @@ -7,7 +7,7 @@ Quantity type ```typescript type Quantity = { - struct: StateConfig | Filter<'buy-units'>['buy-units'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block']; + struct: StateConfig | Filter<'input'>['input'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block'] | Filter<'increasing-by-time-period'>['increasing-by-time-period'] | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] | Filter<'increasing-by-block-period'>['increasing-by-block-period'] | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; modifier?: Modifier; }; ``` diff --git a/docs/types/struct.md b/docs/types/struct.md index 6efec1c..947951e 100644 --- a/docs/types/struct.md +++ b/docs/types/struct.md @@ -6,5 +6,5 @@ The smallest building block of RuleBuilder that contains the type and its valid Signature: ```typescript -type Struct = StateConfig | Filter<'buy-units'>['buy-units'] | Filter<'before-time'>['before-time'] | Filter<'after-time'>['after-time'] | Filter<'between-times'>['between-times'] | Filter<'before-block'>['before-block'] | Filter<'after-block'>['after-block'] | Filter<'between-blocks'>['between-blocks'] | Filter<'has-min-tier'>['has-min-tier'] | Filter<'has-any-tier'>['has-any-tier'] | Filter<'user-erc20-balance'>['user-erc20-balance'] | Filter<'erc20-total-supply'>['erc20-total-supply'] | Filter<'user-erc721-balance'>['user-erc721-balance'] | Filter<'erc721-owner'>['erc721-owner'] | Filter<'user-erc1155-balance'>['user-erc1155-balance'] | Filter<'user-erc20-snapshot-balance'>['user-erc20-snapshot-balance'] | Filter<'erc20-snapshot-total-supply'>['erc20-snapshot-total-supply'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block']; +type Struct = StateConfig | Filter<'input'>['input'] | Filter<'before-time'>['before-time'] | Filter<'after-time'>['after-time'] | Filter<'between-times'>['between-times'] | Filter<'before-block'>['before-block'] | Filter<'after-block'>['after-block'] | Filter<'between-blocks'>['between-blocks'] | Filter<'has-min-tier'>['has-min-tier'] | Filter<'has-any-tier'>['has-any-tier'] | Filter<'user-erc20-balance'>['user-erc20-balance'] | Filter<'erc20-total-supply'>['erc20-total-supply'] | Filter<'user-erc721-balance'>['user-erc721-balance'] | Filter<'erc721-owner'>['erc721-owner'] | Filter<'user-erc1155-balance'>['user-erc1155-balance'] | Filter<'user-erc20-snapshot-balance'>['user-erc20-snapshot-balance'] | Filter<'erc20-snapshot-total-supply'>['erc20-snapshot-total-supply'] | Filter<'constant'>['constant'] | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] | Filter<'decreasing-by-block'>['decreasing-by-block'] | Filter<'increasing-by-time-period'>['increasing-by-time-period'] | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] | Filter<'increasing-by-block-period'>['increasing-by-block-period'] | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; ``` diff --git a/docs/types/structtypelib.md b/docs/types/structtypelib.md index 9b8555e..f233696 100644 --- a/docs/types/structtypelib.md +++ b/docs/types/structtypelib.md @@ -7,7 +7,7 @@ A key/type pair for all the valid Struct types ```typescript type StructTypeLib = { - 'buy-units': { + 'input': { index: number; }; 'before-time': { @@ -95,5 +95,33 @@ type StructTypeLib = { startBlock: number; endBlock: number; }; + 'increasing-by-time-period': { + startValue: BigNumber; + startTimestamp: number; + margin: BigNumber; + periodLength: number; + endValue?: number; + }; + 'decreasing-by-time-period': { + startValue: BigNumber; + startTimestamp: number; + margin: BigNumber; + periodLength: number; + endValue?: number; + }; + 'increasing-by-block-period': { + startValue: BigNumber; + startBlock: number; + margin: BigNumber; + periodLength: number; + endValue?: number; + }; + 'decreasing-by-block-period': { + startValue: BigNumber; + startBlock: number; + margin: BigNumber; + periodLength: number; + endValue?: number; + }; }; ``` diff --git a/docs/types/tiers.md b/docs/types/tiers.md deleted file mode 100644 index 3f44b5f..0000000 --- a/docs/types/tiers.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type Tiers - -Type for Rain tier contractsreport check - -Signature: - -```typescript -type Tiers = 'has-min-tier' | 'has-any-tier'; -``` diff --git a/docs/types/time.md b/docs/types/time.md deleted file mode 100644 index cd1c6cc..0000000 --- a/docs/types/time.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Type Time - -Type for times based rules - -Signature: - -```typescript -type Time = 'before-time' | 'after-time' | 'between-times'; -``` diff --git a/src/classes/vm.ts b/src/classes/vm.ts index 43d1cb7..29c037b 100644 --- a/src/classes/vm.ts +++ b/src/classes/vm.ts @@ -343,7 +343,7 @@ export class VM { * - (param) - numberOfSources - for specifying how many sources item to combine. * - (param) position - An array representing the positions of config1 script where config2 sources * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. - * @returns combined VM script. @see StateConfig + * @returns combined VM script (StateConfig) */ public static combiner( config1: StateConfig, @@ -525,7 +525,7 @@ export class VM { * any value outside of their own script scope (other scripts that are being combined) this way the STACK opcode * operand will stay untouched when scripts combine * - * @returns a @see StatecConfig + * @returns a StatecConfig */ public static pair( amountConfig: StateConfig, @@ -560,7 +560,7 @@ export class VM { * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * - * @returns a @see StateConfig + * @returns a StateConfig */ public static multi(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { @@ -605,7 +605,7 @@ export class VM { * will be merged at; position, array length must be equal to 'numberOfSources' or else it will be ignored. * - (param) notOwnerVar - the value or the script that will be executed if the owner check fails, if not specified 0 will be applied. * - * @returns a VM script. @see StateConfig + * @returns a StateConfig */ public static setOwnership( config: StateConfig, @@ -681,7 +681,7 @@ export class VM { * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static setDiscountForTiers( config: StateConfig, @@ -852,7 +852,7 @@ export class VM { * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] * - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static setMultiplierForTiers( config: StateConfig, @@ -1015,7 +1015,7 @@ export class VM { * its length should be number of configs - 1. * @param inBlockNumber - (optional) false by default which means the time slices will be based on TIMESTAMP, pass true to base it on BLOCK_NUMBER * - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static setTimers( configs: StateConfig[], @@ -1067,7 +1067,7 @@ export class VM { * @param timestamp - the timestamp to set the rule for * @param type - type of the check, meaning current timestamp to be gt, gte, lt, lte than the "timestamp" * - * @returns A @see StateConfig + * @returns A StateConfig */ public static beforeAfterTime( timestamp: number, @@ -1109,7 +1109,7 @@ export class VM { * @param blockNumber - the block number to set the rule for * @param type - type of the check, meaning current block number to be gt, gte, lt, lte than the "blockNumber" * - * @returns A @see StateConfig + * @returns A StateConfig */ public static beforeAfterBlock( blockNumber: number, @@ -1152,7 +1152,7 @@ export class VM { * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine * - * @returns a @see StateConfig + * @returns a StateConfig */ public static mulTogether(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1171,7 +1171,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig + * @returns a StateConfig */ public static addTogether(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1190,7 +1190,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig + * @returns a StateConfig */ public static max(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1209,7 +1209,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig + * @returns a StateConfig */ public static min(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1230,7 +1230,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig + * @returns a StateConfig */ public static ifelse( condition: StateConfig, @@ -1253,7 +1253,7 @@ export class VM { * * @param value - the value * - * @returns a @see StateConfig + * @returns a StateConfig */ public static constant(value: BigNumberish): StateConfig { if (!(value instanceof BigNumber)) { @@ -1271,7 +1271,7 @@ export class VM { * * @param config - the script to check * - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static not(config: StateConfig): StateConfig { config.sources[0] = concat([ @@ -1289,7 +1289,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static and(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1308,7 +1308,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static or(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1327,7 +1327,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static nand(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1347,7 +1347,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static nor(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { let result_ = VM.multi(configs, stackReassignment) @@ -1370,7 +1370,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static xor(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { const and: StateConfig = {constants: [], sources: [concat([op(VM.Opcodes.EVERY, configs.length)])]}; @@ -1403,7 +1403,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static xnor(configs: StateConfig[], stackReassignment: boolean = true): StateConfig { const and: StateConfig = {constants: [], sources: [concat([op(VM.Opcodes.EVERY, configs.length)])]}; @@ -1433,7 +1433,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static eq(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { let result_ = VM.pair(config1, config2, stackReassignment); @@ -1453,7 +1453,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static gt(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { let result_ = VM.pair(config1, config2, stackReassignment); @@ -1473,7 +1473,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static lt(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { let result_ = VM.pair(config1, config2, stackReassignment); @@ -1493,7 +1493,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static gte(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { let result_ = VM.pair(config1, config2, stackReassignment); @@ -1514,7 +1514,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a @see StateConfig in VM boolean format (true non-zero, false zero) + * @returns a StateConfig in VM boolean format (true non-zero, false zero) */ public static lte(config1: StateConfig, config2: StateConfig, stackReassignment: boolean = true): StateConfig { let result_ = VM.pair(config1, config2, stackReassignment); @@ -1541,7 +1541,7 @@ export class VM { // * - (param) delegatedReport - (optional) Used to determine if this script is being used for combinetier contract // * or standalone then it will produce the result for SENDER(false) or ACCOUNT(true) i.e CONTEXT[0] // * - // * @returns a VM script @see StateConfig + // * @returns a StateConfig // */ // public static setValueForTiers( // tierAddress: string, @@ -1706,7 +1706,7 @@ export class VM { * @param id - an array of id(s) of either tokenId(s) or snapshotId(s) , only IERC20-Balance-of-Batch uses more than 1 id * @param delegatedCall - (optional) if true CONTEXT opcode will be used and if false SENDER opcode will be used * - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static getAsset( type: @@ -1833,7 +1833,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static hasAnyTier( tierConfig: StateConfig, @@ -1855,7 +1855,7 @@ export class VM { * @param stackReassignment - (optional) pass false if STACK opcode operands dont need to be reassigned to their new * relative positioins in the script. i.e. if the individual scripts' STACK opcodes are refering to any value outside of their own * script scope (refering to other scripts that are being combined). this way the STACK opcode operand will stay untouched when scripts combine - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static hasMinTier( tierConfig: StateConfig, @@ -1877,7 +1877,7 @@ export class VM { * Method to create a simple STACK opcode script * * @param operand - stack operand - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static stack(operand: number): StateConfig { return { @@ -1891,7 +1891,7 @@ export class VM { * Method to create a simple CONTEXT opcode script * * @param operand - context operand - * @returns a VM script @see StateConfig + * @returns a StateConfig */ public static input(operand: number): StateConfig { return { @@ -1909,7 +1909,7 @@ export class VM { * @param startPoint - Starting point, either timestamp or block number * @param endPoint - Ending point, either timestamp or block number * @param byBlock - Whether increasing by block or timestamp, pass true to be based on block - * @returns a @see StateConfig + * @returns a StateConfig */ public static dec( startValue: BigNumber, @@ -1938,7 +1938,7 @@ export class VM { op(VM.Opcodes.CONSTANT, 0), op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.MIN, 2), + op(VM.Opcodes.MAX, 2), ]) ], }); @@ -1953,7 +1953,7 @@ export class VM { * @param startPoint - Starting point, either timestamp or block number * @param endPoint - Ending point, either timestamp or block number * @param byBlock - Whether increasing by block or timestamp, pass true to be based on block - * @returns a @see StateConfig + * @returns a StateConfig */ public static inc( startValue: BigNumber, @@ -1995,7 +1995,7 @@ export class VM { * @param config - The StateConfig to apply discount on * @param condition - The condition of StateConfig type * @param discount - discount percentage (between 0 - 99 and 2 decimals max) - * @returns a @see StateConfig + * @returns a StateConfig */ public static setDisccount(config: StateConfig, condition: StateConfig, discount: number): StateConfig { if ( discount >= 0 && discount <= 99 ) { @@ -2028,7 +2028,8 @@ export class VM { * * @param config - The StateConfig to apply multiplier to * @param condition - The condition of StateConfig type - * @param multiplier - multulpier (2 decimals max) + * @param multiplier - multulpier (2 decimals max) + * @returns a StateConfig */ public static setMultiplier(config: StateConfig, condition: StateConfig, multiplier: number): StateConfig { const _multiply = Math.floor(100 * multiplier); @@ -2052,4 +2053,126 @@ export class VM { return VM.pair(config, _multiplier, false); } + + /** + * @public + * Create a new raw linear increasing value StateConfig increasing by a margin over each period. + * + * @param startValue - The starting value + * @param startPoint - Starting point, either timestamp or block number + * @param margin - The amount to increase by each period passing + * @param periodLength - The length of each period + * @param endValue - Ending point, either timestamp or block number + * @param byBlock - Whether increasing by block or timestamp, pass true to be based on block + * @returns a StateConfig + */ + public static incBy( + startValue: BigNumber, + startPoint: number, + margin: BigNumber, + periodLength: number, + endValue?: number, + byBlock: boolean = false, + ): StateConfig { + const constants_ = endValue + ? [ + startValue, + startPoint, + margin, + periodLength, + endValue + ] + : [ + startValue, + startPoint, + margin, + periodLength + ] + + const end_ = endValue + ? [ + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.MIN, 2) + ] + : []; + + return ({ + constants: constants_, + sources: [ + concat([ + byBlock ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.ADD, 2), + ...end_ + ]) + ], + }); + } + + /** + * @public + * Create a new raw linear decreasing value StateConfig decreasing by a margin over each period. + * + * @param startValue - The starting value + * @param startPoint - Starting point, either timestamp or block number + * @param margin - The amount to decrease by each period passing + * @param periodLength - The length of each period + * @param endValue - Ending point, either timestamp or block number + * @param byBlock - Whether decreasing by block or timestamp, pass true to be based on block + * @returns a StateConfig + */ + public static decBy( + startValue: BigNumber, + startPoint: number, + margin: BigNumber, + periodLength: number, + endValue?: number, + byBlock: boolean = false, + ): StateConfig { + const constants_ = endValue + ? [ + startValue, + startPoint, + margin, + periodLength, + endValue + ] + : [ + startValue, + startPoint, + margin, + periodLength + ] + + const end_ = endValue + ? [ + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.MAX, 2) + ] + : []; + + return ({ + constants: constants_, + sources: [ + concat([ + byBlock ? op(VM.Opcodes.BLOCK_NUMBER) : op(VM.Opcodes.BLOCK_TIMESTAMP), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.SATURATING_SUB, 2), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.DIV, 2), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.SATURATING_SUB, 2), + ...end_ + ]) + ], + }); + } } \ No newline at end of file diff --git a/src/rule-builder/lib.ts b/src/rule-builder/lib.ts index ffefb44..c99c029 100644 --- a/src/rule-builder/lib.ts +++ b/src/rule-builder/lib.ts @@ -1,14 +1,24 @@ +import { ethers } from 'ethers'; import { Filter } from './types'; import { StateConfig, VM } from '../classes/vm'; import { BetweenTimestamps } from '../contracts/script-generators/saleScriptGenerator'; import { CombineTierGenerator } from '../contracts/script-generators/combineTierScriptGenerator'; + /** * @public * Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods */ export const lib: Record StateConfig> = { - 'buy-units': ({ index }: Filter<'buy-units'>['buy-units']['args']) => { + 'always': () => { + return VM.constant(ethers.constants.One) + }, + + 'never': () => { + return VM.constant(ethers.constants.Zero) + }, + + 'input': ({ index }: Filter<'input'>['input']['args']) => { return VM.input(index); }, @@ -25,14 +35,14 @@ export const lib: Record StateConfig> = { exactTime, }: Filter<'before-time'>['before-time']['args']) => { const operator = exactTime ? 'gte' : 'gt'; - return VM.beforeAfterTime(timestamp!, operator); + return VM.beforeAfterTime(timestamp, operator); }, 'between-times': ({ startTimestamp, endTimestamp, }: Filter<'between-times'>['between-times']['args']) => { - return new BetweenTimestamps(startTimestamp!, endTimestamp!); + return new BetweenTimestamps(startTimestamp, endTimestamp); }, 'before-block': ({ @@ -40,7 +50,7 @@ export const lib: Record StateConfig> = { exactBlock, }: Filter<'before-block'>['before-block']['args']) => { const operator = exactBlock ? 'lte' : 'lt'; - return VM.beforeAfterTime(block!, operator); + return VM.beforeAfterTime(block, operator); }, 'after-block': ({ @@ -48,14 +58,14 @@ export const lib: Record StateConfig> = { exactBlock, }: Filter<'after-block'>['after-block']['args']) => { const operator = exactBlock ? 'gte' : 'gt'; - return VM.beforeAfterTime(block!, operator); + return VM.beforeAfterTime(block, operator); }, 'between-blocks': ({ startBlock, endBlock, }: Filter<'between-blocks'>['between-blocks']['args']) => { - return new BetweenTimestamps(startBlock!, endBlock!); + return new BetweenTimestamps(startBlock, endBlock); }, 'has-min-tier': ({ @@ -64,11 +74,11 @@ export const lib: Record StateConfig> = { minTier, }: Filter<'has-min-tier'>['has-min-tier']['args']) => { return VM.hasMinTier( - new CombineTierGenerator(tierAddress!, { + new CombineTierGenerator(tierAddress, { staticTierContext: tierContext, delegatedReport: true, }), - minTier!, + minTier, false ); }, @@ -78,7 +88,7 @@ export const lib: Record StateConfig> = { tierContext, }: Filter<'has-any-tier'>['has-any-tier']['args']) => { return VM.hasAnyTier( - new CombineTierGenerator(tierAddress!, { + new CombineTierGenerator(tierAddress, { staticTierContext: tierContext, delegatedReport: true, }), @@ -89,33 +99,33 @@ export const lib: Record StateConfig> = { 'user-erc20-balance': ({ tokenAddress, }: Filter<'user-erc20-balance'>['user-erc20-balance']['args']) => { - return VM.getAsset('erc20-balance-of', [tokenAddress!], undefined, true); + return VM.getAsset('erc20-balance-of', [tokenAddress], undefined, true); }, 'erc20-total-supply': ({ tokenAddress, }: Filter<'erc20-total-supply'>['erc20-total-supply']['args']) => { - return VM.getAsset('erc20-total-supply', [tokenAddress!]); + return VM.getAsset('erc20-total-supply', [tokenAddress]); }, 'user-erc721-balance': ({ tokenAddress, }: Filter<'user-erc721-balance'>['user-erc721-balance']['args']) => { - return VM.getAsset('erc721-balance-of', [tokenAddress!], undefined, true); + return VM.getAsset('erc721-balance-of', [tokenAddress], undefined, true); }, 'erc721-owner': ({ tokenAddress, id, }: Filter<'erc721-owner'>['erc721-owner']['args']) => { - return VM.getAsset('erc721-owner-of', [tokenAddress!], [id!], true); + return VM.getAsset('erc721-owner-of', [tokenAddress], [id], true); }, 'user-erc1155-balance': ({ tokenAddress, id, }: Filter<'user-erc1155-balance'>['user-erc1155-balance']['args']) => { - return VM.getAsset('erc1155-balance-of', [tokenAddress!], [id!], true); + return VM.getAsset('erc1155-balance-of', [tokenAddress], [id], true); }, 'user-erc20-snapshot-balance': ({ @@ -124,7 +134,7 @@ export const lib: Record StateConfig> = { }: Filter< 'user-erc20-snapshot-balance' >['user-erc20-snapshot-balance']['args']) => { - return VM.getAsset('snapshot-balance-of', [tokenAddress!], [id!], true); + return VM.getAsset('snapshot-balance-of', [tokenAddress], [id], true); }, 'erc20-snapshot-total-supply': ({ @@ -133,11 +143,11 @@ export const lib: Record StateConfig> = { }: Filter< 'erc20-snapshot-total-supply' >['erc20-snapshot-total-supply']['args']) => { - return VM.getAsset('snapshot-total-supply', [tokenAddress!], [id!], true); + return VM.getAsset('snapshot-total-supply', [tokenAddress], [id], true); }, constant: ({ value }: Filter<'constant'>['constant']['args']) => { - return VM.constant(value!); + return VM.constant(value); }, 'increasing-by-time': ({ @@ -146,7 +156,7 @@ export const lib: Record StateConfig> = { startTimestamp, endTimestamp, }: Filter<'increasing-by-time'>['increasing-by-time']['args']) => { - return VM.inc(startValue!, endValue!, startTimestamp!, endTimestamp!); + return VM.inc(startValue, endValue, startTimestamp, endTimestamp); }, 'decreasing-by-time': ({ @@ -155,7 +165,7 @@ export const lib: Record StateConfig> = { startTimestamp, endTimestamp, }: Filter<'decreasing-by-time'>['decreasing-by-time']['args']) => { - return VM.dec(startValue!, endValue!, startTimestamp!, endTimestamp!); + return VM.dec(startValue, endValue, startTimestamp, endTimestamp); }, 'increasing-by-block': ({ @@ -164,7 +174,7 @@ export const lib: Record StateConfig> = { startBlock, endBlock, }: Filter<'increasing-by-block'>['increasing-by-block']['args']) => { - return VM.inc(startValue!, endValue!, startBlock!, endBlock!, true); + return VM.inc(startValue, endValue, startBlock, endBlock, true); }, 'decreasing-by-block': ({ @@ -173,6 +183,47 @@ export const lib: Record StateConfig> = { startBlock, endBlock, }: Filter<'decreasing-by-block'>['decreasing-by-block']['args']) => { - return VM.dec(startValue!, endValue!, startBlock!, endBlock!, true); + return VM.dec(startValue, endValue, startBlock, endBlock, true); }, + + 'increasing-by-time-period': ({ + startValue, + startTimestamp, + margin, + periodLength, + endValue + }: Filter<'increasing-by-time-period'>['increasing-by-time-period']['args']) => { + return VM.incBy(startValue, startTimestamp, margin, periodLength, endValue) + }, + + 'decreasing-by-time-period': ({ + startValue, + startTimestamp, + margin, + periodLength, + endValue + }: Filter<'decreasing-by-time-period'>['decreasing-by-time-period']['args']) => { + return VM.decBy(startValue, startTimestamp, margin, periodLength, endValue) + }, + + 'increasing-by-block-period': ({ + startValue, + startBlock, + margin, + periodLength, + endValue + }: Filter<'increasing-by-block-period'>['increasing-by-block-period']['args']) => { + return VM.incBy(startValue, startBlock, margin, periodLength, endValue, true) + }, + + 'decreasing-by-block-period': ({ + startValue, + startBlock, + margin, + periodLength, + endValue + }: Filter<'decreasing-by-block-period'>['decreasing-by-block-period']['args']) => { + return VM.decBy(startValue, startBlock, margin, periodLength, endValue, true) + }, + } as const; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 06c2112..ca0dc4f 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -61,7 +61,13 @@ export class RuleBuilder { public static from(currencies: Currency[]): StateConfig { let rules_: StateConfig[] = []; let thens_: StateConfig[] = []; + let dps_: StateConfig[] = []; let count = 0; + let totalCount = 0; + + for (const currency of currencies) { + totalCount += currency.rules.length * 2; + } for (let i = 0; i < currencies.length; i++) { let qs_: StateConfig[] = []; @@ -91,16 +97,20 @@ export class RuleBuilder { ) ); ps_.push( - VM.mulTogether( - [VM.stack(count * 2 + 1), this.getQPConfig(rule.price)], + VM.ifelse( + VM.stack((count * 2) + 1), + this.getQPConfig(rule.price), + VM.stack(totalCount + i), false ) ); count++; } - + + dps_.push(this.getQPConfig(currencies[i].default.price)); + qs_.push(this.getQPConfig(currencies[i].default.quantity)); - ps_.push(this.getQPConfig(currencies[i].default.price)); + ps_.push(VM.stack(totalCount + i)); q_ = (VM[currencies[i].pick.quantities](qs_, false)); p_ = (VM[currencies[i].pick.prices](ps_, false)); @@ -121,7 +131,7 @@ export class RuleBuilder { } } - return VM.multi([...rules_, ...thens_], false); + return VM.multi([...rules_, ...dps_, ...thens_], false); } /** @@ -131,59 +141,66 @@ export class RuleBuilder { * @returns Array of StateConfig */ public static getConditionConfig(condition: Condition): StateConfig { - let condition_: StateConfig; - if ('subject' in condition.struct) { - if (condition.operator === 'true') { - condition_ = lib[condition.struct.subject](condition.struct.args); - } - else if (condition.operator === 'not') { - condition_ = VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args) - ); - } - else { - if ('subject' in condition.struct2!) { - condition_ = VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args), - lib[condition.struct2!.subject](condition.struct2.args), - false + if (condition === 'always' || condition === 'never') { + return lib[condition](); + } + else if ('constants' && 'sources' in condition) { + return condition; + } + else if ('struct' in condition) { + if ('subject' in condition.struct) { + if (condition.operator === 'true') { + return lib[condition.struct.subject](condition.struct.args); + } + else if (condition.operator === 'not') { + return VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args) ); } else { - condition_ = VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args), - condition.struct2!, - false - ); + if ('subject' in condition.struct2!) { + return VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args), + lib[condition.struct2!.subject](condition.struct2.args), + false + ); + } + else { + return VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args), + condition.struct2!, + false + ); + } } } - } - else { - if (condition.operator === 'true') { - condition_ = condition.struct; - } - else if (condition.operator === 'not') { - condition_ = VM[condition.operator](condition.struct); - } else { - if ('subject' in condition.struct2!) { - condition_ = VM[condition.operator]( - condition.struct, - lib[condition.struct2!.subject](condition.struct2.args), - false - ); + if (condition.operator === 'true') { + return condition.struct; + } + else if (condition.operator === 'not') { + return VM[condition.operator](condition.struct); } else { - condition_ = VM[condition.operator]( - condition.struct, - condition.struct2!, - false - ); + if ('subject' in condition.struct2!) { + return VM[condition.operator]( + condition.struct, + lib[condition.struct2!.subject](condition.struct2.args), + false + ); + } + else { + return VM[condition.operator]( + condition.struct, + condition.struct2!, + false + ); + } } - } + } } - return condition_; + else throw new Error('Invalid argument'); } /** @@ -192,28 +209,41 @@ export class RuleBuilder { * @param conditionGroup - The ConditionGroup object * @returns StateConfig */ - public static getConditionGroupConfig( - conditionGroup: ConditionGroup - ): StateConfig { + public static getConditionGroupConfig(conditionGroup: ConditionGroup): StateConfig { let group_: StateConfig[] = []; - for (const item of conditionGroup.conditions) { - if ('conditions' in item) { - group_.push(this.getConditionGroupConfig(item)); + + if (conditionGroup === 'always' || conditionGroup === 'never') { + return lib[conditionGroup](); + } + else if ('constants' && 'sources' in conditionGroup) { + return conditionGroup; + } + else if ('conditions' in conditionGroup) { + for (const item of conditionGroup.conditions) { + if (item === 'always' || item === 'never') { + return lib[item](); + } + else if ('constants' && 'sources' in item) { + return item; + } + else if ('conditions' in item) { + group_.push(this.getConditionGroupConfig(item)); + } + else { + group_.push(this.getConditionConfig(item)); + } + } + if (conditionGroup.operator === 'true') { + return group_[0]; + } + else if (conditionGroup.operator === 'not') { + return VM[conditionGroup.operator](group_[0]); } else { - group_.push(this.getConditionConfig(item)); + return VM[conditionGroup.operator](group_, false); } } - - if (conditionGroup.operator === 'true') { - return group_[0]; - } - else if (conditionGroup.operator === 'not') { - return VM[conditionGroup.operator](group_[0]); - } - else { - return VM[conditionGroup.operator](group_, false); - } + else throw new Error('Invalid argument'); } /** diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index 3241f00..c4dfe21 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -5,51 +5,15 @@ import { StateConfig } from '../classes/vm'; /** * @public - * Type for current user buy units i.e. user input + * Type to get an always true condition */ -export type BuyUnits = 'buy-units'; +export type Always = 'always'; /** * @public - * Type for times based rules + * Type to get an always false condition */ -export type Time = 'before-time' | 'after-time' | 'between-times'; - -/** - * @public - * Type for block number based rules - */ -export type Block = 'before-block' | 'after-block' | 'between-blocks'; - -/** - * @public - * Type for Rain tier contractsreport check - */ -export type Tiers = 'has-min-tier' | 'has-any-tier'; - -/** - * @public - * Type for mathematical folmulas or constant values - */ -export type Math = - | 'constant' - | 'increasing-by-time' - | 'decreasing-by-time' - | 'increasing-by-block' - | 'decreasing-by-block'; - -/** - * @public - * Type for getting specific evm tokens or user wallet token balances - */ -export type Asset = - | 'user-erc20-balance' - | 'erc20-total-supply' - | 'user-erc721-balance' - | 'erc721-owner' - | 'user-erc1155-balance' - | 'user-erc20-snapshot-balance' - | 'erc20-snapshot-totaly-supply'; +export type Never = 'never'; /** * @public @@ -59,7 +23,7 @@ export type ModifierType = 'discount' | 'multiplier'; /** * @public - * All the valid logical operators used for comparison of previous types + * All the valid logical operators used for comparison of Struct and/or StateConfig objects */ export type Operator = | 'true' @@ -78,99 +42,526 @@ export type Operator = | 'gte' | 'lte'; +/** + * @public + * Type for conditions which is a comparison between structs which results in a boolean StateConfig + */ +export type Condition = { + struct: Struct; + operator: Extract< + Operator, + 'true' | 'not' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte' + >; + struct2?: Struct; +} | Always | Never | StateConfig; + +/** + * @public + * Type for a single or multiple conditions which are combined together with the + * valid logical operators which results in a a boolean StateConfig + */ +export type ConditionGroup = { + conditions: (Condition | ConditionGroup)[]; + operator: Exclude< + Operator, + 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'lte' | 'gte' + >; +} | Always | Never | StateConfig; + +/** + * @public + * A single Rule block, i.e. an if/then block that contains conditions of + * prices and quantities and its actions which are price and quantity + * + * @remarks + * If the price and quantity conditions are the same just put the same object + * in both of 'quantityConditions' and 'priceConditions + */ +export type Rule = { + quantityConditions: ConditionGroup; + priceConditions: ConditionGroup; + quantity: Quantity; + price: Price; +}; + +/** + * @public + * The default block, i.e. default quantity and price + */ +export type Default = { + quantity: Quantity; + price: Price; +}; + +/** + * @public + * Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig + */ +export type Currency = { + rules: Rule[]; + default: Default; + quantityGlobalModifier?: Modifier; + priceGlobalModifier?: Modifier; + pick: { + quantities: Extract; + prices: Extract; + }; +}; + +/** + * @public + * Type for price/quantity modifier based on a tier report or a Rule + */ +export type Modifier = { + /** + * Determines the modifier's type + */ + type: ModifierType; + /** + * the rule of the modifier + */ + condition: ConditionGroup; + /** + * The modifing value(s) + */ + values: number; +}; + +/** + * @public + * Quantity type + */ + export type Quantity = { + struct: + | StateConfig + | Filter<'input'>['input'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + | Filter<'increasing-by-time-period'>['increasing-by-time-period'] + | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] + | Filter<'increasing-by-block-period'>['increasing-by-block-period'] + | Filter<'decreasing-by-block-period'>['decreasing-by-block-period'] + modifier?: Modifier; +}; + +/** + * @public + * Price type + */ +export type Price = { + struct: + | StateConfig + | Filter<'input'>['input'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + | Filter<'increasing-by-time-period'>['increasing-by-time-period'] + | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] + | Filter<'increasing-by-block-period'>['increasing-by-block-period'] + | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; + modifier?: Modifier; +}; + /** * @public * A key/type pair for all the valid Struct types */ -export type StructTypeLib = { - 'buy-units' : { + export type StructTypeLib = { + /** + * Type for getting the passed value to contract method at call time. + * This is completely depended on the contract's method signature + */ + 'input' : { + /** + * the index of value in the passed context array used as CONTEXT opcode operand + */ index: number }, + /** + * Type to to check if current time is before a specific time + */ 'before-time': { + /** + * The specific timestamp to check if current time is before that + */ timestamp: number, + /** + * Pass true to include the exact timestamp in check i.e. 'lte' + */ exactTime?: boolean }, + /** + * Type to to check if current time is after a specific time + */ 'after-time': { + /** + * The specific timestamp to check if current time is after that + */ timestamp: number, + /** + * Pass true to include the exact timestamp in check i.e. 'gte' + */ exactTime?: boolean }, + /** + * Type to check if current time is between 2 specific times + */ 'between-times': { + /** + * The first timestamp to check, must be less than the second timestamp + */ startTimestamp: number, + /** + * the seconf timestamp must be greater than the first timestamp + */ endTimestamp: number }, + /** + * Type to to check if current block number is before a specific block number + */ 'before-block': { + /** + * The specific block number to check if current block number is before that + */ block: number, + /** + * Pass true to include the exact block number when checking i.e. 'lte' + */ exactBlock?: boolean }, + /** + * Type to to check if current block number is after a specific block number + */ 'after-block': { + /** + * The specific block number to check if current block number is after that + */ block: number, + /** + * Pass true to include the exact block number when checking i.e. 'gte' + */ exactBlock?: boolean }, + /** + * Type to check if current block number is between 2 specific block numbers + */ 'between-blocks': { + /** + * The first block number to check, must be less than the second block number + */ startBlock: number, + /** + * the seconf block number must be greater than the first block number + */ endBlock: number }, + /** + * Type to check if an address has a minimum tier status + */ 'has-min-tier': { + /** + * The tier contract address + */ tierAddress: string, + /** + * The minimum tier status to check + */ minTier: Tier, + /** + * The tier context + */ tierContext?: BigNumber[] }, + /** + * Type to check if an address has any tier status + */ 'has-any-tier': { + /** + * The tier contract address + */ tierAddress: string, + /** + * The tier context + */ tierContext?: BigNumber[] }, + /** + * Type to get an address's erc20 token balance + */ 'user-erc20-balance': { + /** + * The erc20 token address + */ tokenAddress: string }, + /** + * Type to get an erc20 token total supply + */ 'erc20-total-supply': { + /** + * The erc20 token address + */ tokenAddress: string }, + /** + * Type to get an address's erc721 token balance + */ 'user-erc721-balance': { + /** + * The erc721 token address + */ tokenAddress: string }, + /** + * Type to get an erc721 token owner's address + */ 'erc721-owner': { + /** + * The erc721 token address + */ tokenAddress: string, + /** + * The erc721 token ID + */ id: BigNumber }, + /** + * Type to get an address's erc1155 token balance + */ 'user-erc1155-balance': { + /** + * The erc1155 token address + */ tokenAddress: string, + /** + * The erc1155 token ID + */ id: BigNumber }, + /** + * Type to get an address's erc20 snapshot token balance at snapshot ID + */ 'user-erc20-snapshot-balance': { + /** + * The erc20 token address + */ tokenAddress: string, + /** + * The snapshot ID + */ id: BigNumber }, + /** + * Type to get an erc20 snapshot token total supply at snapshot ID + */ 'erc20-snapshot-total-supply': { + /** + * The erc20 token address + */ tokenAddress: string, + /** + * The snapshot ID + */ id: BigNumber }, + /** + * Type to get a constant value + */ 'constant': { + /** + * The value in BigNumber format + */ value: BigNumber }, + /** + * Type to get a simple linear increasing value between 2 times + */ 'increasing-by-time': { + /** + * The starting value + */ startValue: BigNumber, + /** + * The ending value + */ endValue: BigNumber, + /** + * The start timestamp + */ startTimestamp: number, + /** + * The end timestamp + */ endTimestamp: number }, + /** + * Type to get a simple linear decreasing value between 2 times + */ 'decreasing-by-time': { - startValue: BigNumber, - endValue: BigNumber, - startTimestamp: number, - endTimestamp: number + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startTimestamp: number, + /** + * The end timestamp + */ + endTimestamp: number }, + /** + * Type to get a simple linear increasing value between 2 block numbers + */ 'increasing-by-block': { - startValue: BigNumber, - endValue: BigNumber, - startBlock: number, - endBlock: number + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startBlock: number, + /** + * The end timestamp + */ + endBlock: number }, + /** + * Type to get a simple linear decreasing value between 2 block numbers + */ 'decreasing-by-block': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startBlock: number, + /** + * The end timestamp + */ + endBlock: number + }, + /** + * Type to get a simple linear increasing value by a margin at each period of time + */ + 'increasing-by-time-period': { + /** + * The starting value + */ startValue: BigNumber, - endValue: BigNumber, - startBlock: number, - endBlock: number + /** + * The starting timestamp + */ + startTimestamp: number, + /** + * The margin(value) to increase at each period + */ + margin: BigNumber, + /** + * The period of time length + */ + periodLength: number, + /** + * (optional) The end value to not increase above that + */ + endValue?: number }, + /** + * Type to get a simple linear decreasing value by a margin at each period of time + */ + 'decreasing-by-time-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting timestamp + */ + startTimestamp: number, + /** + * The margin(value) to decrease at each period + */ + margin: BigNumber, + /** + * The period of time length + */ + periodLength: number, + /** + * (optional) The end value to not decrease above that + */ + endValue?: number + }, + /** + * Type to get a simple linear increasing value by a margin at each number of blocks passing + */ + 'increasing-by-block-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting block number + */ + startBlock: number, + /** + * The margin(value) to increase at each period + */ + margin: BigNumber, + /** + * The period of time length in block number + */ + periodLength: number, + /** + * (optional) The end value to not increase above that + */ + endValue?: number + }, + /** + * Type to get a simple linear decreasing value by a margin at each number of blocks passing + */ + 'decreasing-by-block-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting block number + */ + startBlock: number, + /** + * The margin(value) to decrease at each period + */ + margin: BigNumber, + /** + * The period of time length in block number + */ + periodLength: number, + /** + * (optional) The end value to not decrease above that + */ + endValue?: number + } } /** @@ -178,7 +569,17 @@ export type StructTypeLib = { * A filtering utility type for StructTypeLib */ export type Filter = { - [Prop in keyof StructTypeLib]: { subject: T, args: StructTypeLib[T] } + [Prop in keyof StructTypeLib]: { + /** + * The type of this struct which determines the valid properties (args) and build the StageConfig out of them + * @see {@link StructTypeLib} + */ + subject: T, + /** + * The valid properties of this Struct object + * @see {@link StructTypeLib} + */ + args: StructTypeLib[T] } } /** @@ -187,7 +588,7 @@ export type StructTypeLib = { */ export type Struct = | StateConfig - | Filter<'buy-units'>['buy-units'] + | Filter<'input'>['input'] | Filter<'before-time'>['before-time'] | Filter<'after-time'>['after-time'] | Filter<'between-times'>['between-times'] @@ -207,121 +608,8 @@ export type Struct = | Filter<'increasing-by-time'>['increasing-by-time'] | Filter<'decreasing-by-time'>['decreasing-by-time'] | Filter<'increasing-by-block'>['increasing-by-block'] - | Filter<'decreasing-by-block'>['decreasing-by-block']; - -/** - * @public - * Type for conditions which is a comparison between structs which results in a boolean StateConfig - */ -export type Condition = { - struct: Struct; - operator: Extract< - Operator, - 'true' | 'not' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte' - >; - struct2?: Struct; -}; - -/** - * @public - * Type for a single or multiple conditions which are combined together with the - * valid logical operators which results in a a boolean StateConfig - */ -export type ConditionGroup = { - conditions: (Condition | ConditionGroup)[]; - operator: Exclude< - Operator, - 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'lte' | 'gte' - >; -}; - -/** - * @public - * Quantity type - */ -export type Quantity = { - struct: - | StateConfig - | Filter<'buy-units'>['buy-units'] - | Filter<'constant'>['constant'] - | Filter<'increasing-by-time'>['increasing-by-time'] - | Filter<'decreasing-by-time'>['decreasing-by-time'] - | Filter<'increasing-by-block'>['increasing-by-block'] - | Filter<'decreasing-by-block'>['decreasing-by-block'] - modifier?: Modifier; -}; - -/** - * @public - * Price type - */ -export type Price = { - struct: - | StateConfig - | Filter<'buy-units'>['buy-units'] - | Filter<'constant'>['constant'] - | Filter<'increasing-by-time'>['increasing-by-time'] - | Filter<'decreasing-by-time'>['decreasing-by-time'] - | Filter<'increasing-by-block'>['increasing-by-block'] - | Filter<'decreasing-by-block'>['decreasing-by-block'] - modifier?: Modifier; -}; - -/** - * @public - * A single Rule block, i.e. an if/then block that contains conditions of - * prices and quantities and its actions which are price and quantity - * - * @remarks - * If the price and quantity conditions are the same just put the same object - * in both of 'quantityConditions' and 'priceConditions - */ -export type Rule = { - quantityConditions: ConditionGroup; - priceConditions: ConditionGroup; - quantity: Quantity; - price: Price; -}; - -/** - * @public - * The default block, i.e. default quantity and price - */ -export type Default = { - quantity: Quantity; - price: Price; -}; - -/** - * @public - * Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig - */ -export type Currency = { - rules: Rule[]; - default: Default; - quantityGlobalModifier?: Modifier; - priceGlobalModifier?: Modifier; - pick: { - quantities: Extract; - prices: Extract; - }; -}; - -/** - * @public - * Type for price/quantity modifier based on a tier report or a Rule - */ -export type Modifier = { - /** - * Determines the modifier's type - */ - type: ModifierType; - /** - * the rule of the modifier - */ - condition: ConditionGroup; - /** - * The modifing value(s) - */ - values: number; -}; + | Filter<'decreasing-by-block'>['decreasing-by-block'] + | Filter<'increasing-by-time-period'>['increasing-by-time-period'] + | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] + | Filter<'increasing-by-block-period'>['increasing-by-block-period'] + | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; diff --git a/src/typechain/ERC165Upgradeable.ts b/src/typechain/ERC165Upgradeable.ts deleted file mode 100644 index 1846fc0..0000000 --- a/src/typechain/ERC165Upgradeable.ts +++ /dev/null @@ -1,106 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ERC165UpgradeableInterface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: { - "Initialized(uint8)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; -} - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export interface ERC165Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC165UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - }; - - estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/ERC721Upgradeable.ts b/src/typechain/ERC721Upgradeable.ts deleted file mode 100644 index 06721a3..0000000 --- a/src/typechain/ERC721Upgradeable.ts +++ /dev/null @@ -1,537 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface ERC721UpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Initialized(uint8)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface ERC721Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: ERC721UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - _data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC165Upgradeable.ts b/src/typechain/IERC165Upgradeable.ts deleted file mode 100644 index 1e55fb4..0000000 --- a/src/typechain/IERC165Upgradeable.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC165UpgradeableInterface extends utils.Interface { - functions: { - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC165Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC165UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC2981Upgradeable.ts b/src/typechain/IERC2981Upgradeable.ts deleted file mode 100644 index b8e7e21..0000000 --- a/src/typechain/IERC2981Upgradeable.ts +++ /dev/null @@ -1,141 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC2981UpgradeableInterface extends utils.Interface { - functions: { - "royaltyInfo(uint256,uint256)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "royaltyInfo", - values: [BigNumberish, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "royaltyInfo", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC2981Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC2981UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - }; - - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - callStatic: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise< - [string, BigNumber] & { receiver: string; royaltyAmount: BigNumber } - >; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - populateTransaction: { - royaltyInfo( - tokenId: BigNumberish, - salePrice: BigNumberish, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - }; -} diff --git a/src/typechain/IERC721MetadataUpgradeable.ts b/src/typechain/IERC721MetadataUpgradeable.ts deleted file mode 100644 index 1121973..0000000 --- a/src/typechain/IERC721MetadataUpgradeable.ts +++ /dev/null @@ -1,531 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721MetadataUpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "name()": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "symbol()": FunctionFragment; - "tokenURI(uint256)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData(functionFragment: "name", values?: undefined): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData(functionFragment: "symbol", values?: undefined): string; - encodeFunctionData( - functionFragment: "tokenURI", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721MetadataUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721MetadataUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: string }>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - name(overrides?: CallOverrides): Promise<[string]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - name(overrides?: CallOverrides): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - symbol(overrides?: CallOverrides): Promise; - - tokenURI( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC721ReceiverUpgradeable.ts b/src/typechain/IERC721ReceiverUpgradeable.ts deleted file mode 100644 index d9fb87d..0000000 --- a/src/typechain/IERC721ReceiverUpgradeable.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721ReceiverUpgradeableInterface extends utils.Interface { - functions: { - "onERC721Received(address,address,uint256,bytes)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "onERC721Received", - values: [string, string, BigNumberish, BytesLike] - ): string; - - decodeFunctionResult( - functionFragment: "onERC721Received", - data: BytesLike - ): Result; - - events: {}; -} - -export interface IERC721ReceiverUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721ReceiverUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - }; - - filters: {}; - - estimateGas: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - onERC721Received( - operator: string, - from: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/IERC721Upgradeable.ts b/src/typechain/IERC721Upgradeable.ts deleted file mode 100644 index e4a1bd5..0000000 --- a/src/typechain/IERC721Upgradeable.ts +++ /dev/null @@ -1,480 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface IERC721UpgradeableInterface extends utils.Interface { - functions: { - "approve(address,uint256)": FunctionFragment; - "balanceOf(address)": FunctionFragment; - "getApproved(uint256)": FunctionFragment; - "isApprovedForAll(address,address)": FunctionFragment; - "ownerOf(uint256)": FunctionFragment; - "safeTransferFrom(address,address,uint256)": FunctionFragment; - "setApprovalForAll(address,bool)": FunctionFragment; - "supportsInterface(bytes4)": FunctionFragment; - "transferFrom(address,address,uint256)": FunctionFragment; - }; - - encodeFunctionData( - functionFragment: "approve", - values: [string, BigNumberish] - ): string; - encodeFunctionData(functionFragment: "balanceOf", values: [string]): string; - encodeFunctionData( - functionFragment: "getApproved", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "isApprovedForAll", - values: [string, string] - ): string; - encodeFunctionData( - functionFragment: "ownerOf", - values: [BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "safeTransferFrom", - values: [string, string, BigNumberish] - ): string; - encodeFunctionData( - functionFragment: "setApprovalForAll", - values: [string, boolean] - ): string; - encodeFunctionData( - functionFragment: "supportsInterface", - values: [BytesLike] - ): string; - encodeFunctionData( - functionFragment: "transferFrom", - values: [string, string, BigNumberish] - ): string; - - decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; - decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "getApproved", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "isApprovedForAll", - data: BytesLike - ): Result; - decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "safeTransferFrom", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "setApprovalForAll", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "supportsInterface", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferFrom", - data: BytesLike - ): Result; - - events: { - "Approval(address,address,uint256)": EventFragment; - "ApprovalForAll(address,address,bool)": EventFragment; - "Transfer(address,address,uint256)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; - getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; - getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; -} - -export type ApprovalEvent = TypedEvent< - [string, string, BigNumber], - { owner: string; approved: string; tokenId: BigNumber } ->; - -export type ApprovalEventFilter = TypedEventFilter; - -export type ApprovalForAllEvent = TypedEvent< - [string, string, boolean], - { owner: string; operator: string; approved: boolean } ->; - -export type ApprovalForAllEventFilter = TypedEventFilter; - -export type TransferEvent = TypedEvent< - [string, string, BigNumber], - { from: string; to: string; tokenId: BigNumber } ->; - -export type TransferEventFilter = TypedEventFilter; - -export interface IERC721Upgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: IERC721UpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise<[BigNumber] & { balance: BigNumber }>; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { operator: string }>; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise<[boolean]>; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise<[string] & { owner: string }>; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise<[boolean]>; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: CallOverrides - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: CallOverrides - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Approval(address,address,uint256)"( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - Approval( - owner?: string | null, - approved?: string | null, - tokenId?: BigNumberish | null - ): ApprovalEventFilter; - - "ApprovalForAll(address,address,bool)"( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - ApprovalForAll( - owner?: string | null, - operator?: string | null, - approved?: null - ): ApprovalForAllEventFilter; - - "Transfer(address,address,uint256)"( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - Transfer( - from?: string | null, - to?: string | null, - tokenId?: BigNumberish | null - ): TransferEventFilter; - }; - - estimateGas: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf(owner: string, overrides?: CallOverrides): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - approve( - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - balanceOf( - owner: string, - overrides?: CallOverrides - ): Promise; - - getApproved( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - isApprovedForAll( - owner: string, - operator: string, - overrides?: CallOverrides - ): Promise; - - ownerOf( - tokenId: BigNumberish, - overrides?: CallOverrides - ): Promise; - - "safeTransferFrom(address,address,uint256)"( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - "safeTransferFrom(address,address,uint256,bytes)"( - from: string, - to: string, - tokenId: BigNumberish, - data: BytesLike, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - setApprovalForAll( - operator: string, - _approved: boolean, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - supportsInterface( - interfaceId: BytesLike, - overrides?: CallOverrides - ): Promise; - - transferFrom( - from: string, - to: string, - tokenId: BigNumberish, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/OwnableUpgradeable.ts b/src/typechain/OwnableUpgradeable.ts deleted file mode 100644 index a703651..0000000 --- a/src/typechain/OwnableUpgradeable.ts +++ /dev/null @@ -1,167 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { - BaseContract, - BigNumber, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from "ethers"; -import { FunctionFragment, Result, EventFragment } from "@ethersproject/abi"; -import { Listener, Provider } from "@ethersproject/providers"; -import { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from "./common"; - -export interface OwnableUpgradeableInterface extends utils.Interface { - functions: { - "owner()": FunctionFragment; - "renounceOwnership()": FunctionFragment; - "transferOwnership(address)": FunctionFragment; - }; - - encodeFunctionData(functionFragment: "owner", values?: undefined): string; - encodeFunctionData( - functionFragment: "renounceOwnership", - values?: undefined - ): string; - encodeFunctionData( - functionFragment: "transferOwnership", - values: [string] - ): string; - - decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "renounceOwnership", - data: BytesLike - ): Result; - decodeFunctionResult( - functionFragment: "transferOwnership", - data: BytesLike - ): Result; - - events: { - "Initialized(uint8)": EventFragment; - "OwnershipTransferred(address,address)": EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment; - getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; -} - -export type InitializedEvent = TypedEvent<[number], { version: number }>; - -export type InitializedEventFilter = TypedEventFilter; - -export type OwnershipTransferredEvent = TypedEvent< - [string, string], - { previousOwner: string; newOwner: string } ->; - -export type OwnershipTransferredEventFilter = - TypedEventFilter; - -export interface OwnableUpgradeable extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: OwnableUpgradeableInterface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined - ): Promise>; - - listeners( - eventFilter?: TypedEventFilter - ): Array>; - listeners(eventName?: string): Array; - removeAllListeners( - eventFilter: TypedEventFilter - ): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - owner(overrides?: CallOverrides): Promise<[string]>; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - callStatic: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership(overrides?: CallOverrides): Promise; - - transferOwnership( - newOwner: string, - overrides?: CallOverrides - ): Promise; - }; - - filters: { - "Initialized(uint8)"(version?: null): InitializedEventFilter; - Initialized(version?: null): InitializedEventFilter; - - "OwnershipTransferred(address,address)"( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - OwnershipTransferred( - previousOwner?: string | null, - newOwner?: string | null - ): OwnershipTransferredEventFilter; - }; - - estimateGas: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; - - populateTransaction: { - owner(overrides?: CallOverrides): Promise; - - renounceOwnership( - overrides?: Overrides & { from?: string | Promise } - ): Promise; - - transferOwnership( - newOwner: string, - overrides?: Overrides & { from?: string | Promise } - ): Promise; - }; -} diff --git a/src/typechain/factories/ERC165Upgradeable__factory.ts b/src/typechain/factories/ERC165Upgradeable__factory.ts deleted file mode 100644 index b85fb69..0000000 --- a/src/typechain/factories/ERC165Upgradeable__factory.ts +++ /dev/null @@ -1,58 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - ERC165Upgradeable, - ERC165UpgradeableInterface, -} from "../ERC165Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class ERC165Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): ERC165UpgradeableInterface { - return new utils.Interface(_abi) as ERC165UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC165Upgradeable { - return new Contract(address, _abi, signerOrProvider) as ERC165Upgradeable; - } -} diff --git a/src/typechain/factories/ERC721Upgradeable__factory.ts b/src/typechain/factories/ERC721Upgradeable__factory.ts deleted file mode 100644 index 9a017d9..0000000 --- a/src/typechain/factories/ERC721Upgradeable__factory.ts +++ /dev/null @@ -1,404 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; -import { Provider, TransactionRequest } from "@ethersproject/providers"; -import type { - ERC721Upgradeable, - ERC721UpgradeableInterface, -} from "../ERC721Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - 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: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "_data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -const _bytecode = - "0x608060405234801561001057600080fd5b5061192c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101d0578063b88d4fde146101e3578063c87b56dd146101f6578063e985e9c51461020957600080fd5b80636352211e1461019457806370a08231146101a757806395d89b41146101c857600080fd5b8063095ea7b3116100bd578063095ea7b31461015957806323b872dd1461016e57806342842e0e1461018157600080fd5b806301ffc9a7146100e457806306fdde031461010c578063081812fc14610121575b600080fd5b6100f76100f23660046113ef565b610252565b60405190151581526020015b60405180910390f35b610114610337565b6040516101039190611482565b61013461012f366004611495565b6103c9565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610103565b61016c6101673660046114d7565b6104a8565b005b61016c61017c366004611501565b610635565b61016c61018f366004611501565b6106d6565b6101346101a2366004611495565b6106f1565b6101ba6101b536600461153d565b6107a3565b604051908152602001610103565b610114610871565b61016c6101de366004611558565b610880565b61016c6101f13660046115c3565b61088f565b610114610204366004611495565b610937565b6100f76102173660046116bd565b73ffffffffffffffffffffffffffffffffffffffff9182166000908152606a6020908152604080832093909416825291909152205460ff1690565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f80ac58cd0000000000000000000000000000000000000000000000000000000014806102e557507fffffffff0000000000000000000000000000000000000000000000000000000082167f5b5e139f00000000000000000000000000000000000000000000000000000000145b8061033157507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b606060658054610346906116f0565b80601f0160208091040260200160405190810160405280929190818152602001828054610372906116f0565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1661047f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060009081526069602052604090205473ffffffffffffffffffffffffffffffffffffffff1690565b60006104b3826106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610571576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610476565b3373ffffffffffffffffffffffffffffffffffffffff8216148061059a575061059a8133610217565b610626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610476565b6106308383610a54565b505050565b61063f3382610af4565b6106cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b610630838383610c64565b6106308383836040518060200160405280600081525061088f565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff1680610331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201527f656e7420746f6b656e00000000000000000000000000000000000000000000006064820152608401610476565b600073ffffffffffffffffffffffffffffffffffffffff8216610848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a6560448201527f726f2061646472657373000000000000000000000000000000000000000000006064820152608401610476565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526068602052604090205490565b606060668054610346906116f0565b61088b338383610ecb565b5050565b6108993383610af4565b610925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f60448201527f776e6572206e6f7220617070726f7665640000000000000000000000000000006064820152608401610476565b61093184848484610ff9565b50505050565b60008181526067602052604090205460609073ffffffffffffffffffffffffffffffffffffffff166109eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201527f6e6578697374656e7420746f6b656e00000000000000000000000000000000006064820152608401610476565b6000610a0260408051602081019091526000815290565b90506000815111610a225760405180602001604052806000815250610a4d565b80610a2c8461109c565b604051602001610a3d929190611744565b6040516020818303038152906040525b9392505050565b600081815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091558190610aae826106f1565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008181526067602052604081205473ffffffffffffffffffffffffffffffffffffffff16610ba5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201527f697374656e7420746f6b656e00000000000000000000000000000000000000006064820152608401610476565b6000610bb0836106f1565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480610c1e575073ffffffffffffffffffffffffffffffffffffffff8082166000908152606a602090815260408083209388168352929052205460ff165b80610c5c57508373ffffffffffffffffffffffffffffffffffffffff16610c44846103c9565b73ffffffffffffffffffffffffffffffffffffffff16145b949350505050565b8273ffffffffffffffffffffffffffffffffffffffff16610c84826106f1565b73ffffffffffffffffffffffffffffffffffffffff1614610d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201527f6f776e65720000000000000000000000000000000000000000000000000000006064820152608401610476565b73ffffffffffffffffffffffffffffffffffffffff8216610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610476565b610dd4600082610a54565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860205260408120805460019290610e0a9084906117a2565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000908152606860205260408120805460019290610e459084906117b9565b909155505060008181526067602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f61576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610476565b73ffffffffffffffffffffffffffffffffffffffff8381166000818152606a602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611004848484610c64565b611010848484846111ce565b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b6060816110dc57505060408051808201909152600181527f3000000000000000000000000000000000000000000000000000000000000000602082015290565b8160005b811561110657806110f0816117d1565b91506110ff9050600a83611839565b91506110e0565b60008167ffffffffffffffff81111561112157611121611594565b6040519080825280601f01601f19166020018201604052801561114b576020820181803683370190505b5090505b8415610c5c576111606001836117a2565b915061116d600a8661184d565b6111789060306117b9565b60f81b81838151811061118d5761118d611861565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506111c7600a86611839565b945061114f565b600073ffffffffffffffffffffffffffffffffffffffff84163b156113b3576040517f150b7a0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85169063150b7a0290611245903390899088908890600401611890565b6020604051808303816000875af192505050801561129e575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820190925261129b918101906118d9565b60015b611368573d8080156112cc576040519150601f19603f3d011682016040523d82523d6000602084013e6112d1565b606091505b508051611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527f63656976657220696d706c656d656e74657200000000000000000000000000006064820152608401610476565b805181602001fd5b7fffffffff00000000000000000000000000000000000000000000000000000000167f150b7a0200000000000000000000000000000000000000000000000000000000149050610c5c565b506001949350505050565b7fffffffff00000000000000000000000000000000000000000000000000000000811681146113ec57600080fd5b50565b60006020828403121561140157600080fd5b8135610a4d816113be565b60005b8381101561142757818101518382015260200161140f565b838111156109315750506000910152565b6000815180845261145081602086016020860161140c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000610a4d6020830184611438565b6000602082840312156114a757600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146114d257600080fd5b919050565b600080604083850312156114ea57600080fd5b6114f3836114ae565b946020939093013593505050565b60008060006060848603121561151657600080fd5b61151f846114ae565b925061152d602085016114ae565b9150604084013590509250925092565b60006020828403121561154f57600080fd5b610a4d826114ae565b6000806040838503121561156b57600080fd5b611574836114ae565b91506020830135801515811461158957600080fd5b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080600080608085870312156115d957600080fd5b6115e2856114ae565b93506115f0602086016114ae565b925060408501359150606085013567ffffffffffffffff8082111561161457600080fd5b818701915087601f83011261162857600080fd5b81358181111561163a5761163a611594565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561168057611680611594565b816040528281528a602084870101111561169957600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b600080604083850312156116d057600080fd5b6116d9836114ae565b91506116e7602084016114ae565b90509250929050565b600181811c9082168061170457607f821691505b6020821081141561173e577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b6000835161175681846020880161140c565b83519083019061176a81836020880161140c565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156117b4576117b4611773565b500390565b600082198211156117cc576117cc611773565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561180357611803611773565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826118485761184861180a565b500490565b60008261185c5761185c61180a565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600073ffffffffffffffffffffffffffffffffffffffff8087168352808616602084015250836040830152608060608301526118cf6080830184611438565b9695505050505050565b6000602082840312156118eb57600080fd5b8151610a4d816113be56fea26469706673582212206d6095494c27553541fe0f0e51f0544e9a2d2bf8f3d6c40b03226902630ce7cb64736f6c634300080a0033"; - -type ERC721UpgradeableConstructorParams = - | [signer?: Signer] - | ConstructorParameters; - -const isSuperArgs = ( - xs: ERC721UpgradeableConstructorParams -): xs is ConstructorParameters => xs.length > 1; - -export class ERC721Upgradeable__factory extends ContractFactory { - constructor(...args: ERC721UpgradeableConstructorParams) { - if (isSuperArgs(args)) { - super(...args); - } else { - super(_abi, _bytecode, args[0]); - } - } - - deploy( - overrides?: Overrides & { from?: string | Promise } - ): Promise { - return super.deploy(overrides || {}) as Promise; - } - getDeployTransaction( - overrides?: Overrides & { from?: string | Promise } - ): TransactionRequest { - return super.getDeployTransaction(overrides || {}); - } - attach(address: string): ERC721Upgradeable { - return super.attach(address) as ERC721Upgradeable; - } - connect(signer: Signer): ERC721Upgradeable__factory { - return super.connect(signer) as ERC721Upgradeable__factory; - } - static readonly bytecode = _bytecode; - static readonly abi = _abi; - static createInterface(): ERC721UpgradeableInterface { - return new utils.Interface(_abi) as ERC721UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): ERC721Upgradeable { - return new Contract(address, _abi, signerOrProvider) as ERC721Upgradeable; - } -} diff --git a/src/typechain/factories/IERC165Upgradeable__factory.ts b/src/typechain/factories/IERC165Upgradeable__factory.ts deleted file mode 100644 index 9eed671..0000000 --- a/src/typechain/factories/IERC165Upgradeable__factory.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC165Upgradeable, - IERC165UpgradeableInterface, -} from "../IERC165Upgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class IERC165Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC165UpgradeableInterface { - return new utils.Interface(_abi) as IERC165UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC165Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC165Upgradeable; - } -} diff --git a/src/typechain/factories/IERC2981Upgradeable__factory.ts b/src/typechain/factories/IERC2981Upgradeable__factory.ts deleted file mode 100644 index 95e46af..0000000 --- a/src/typechain/factories/IERC2981Upgradeable__factory.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC2981Upgradeable, - IERC2981UpgradeableInterface, -} from "../IERC2981Upgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "uint256", - name: "salePrice", - type: "uint256", - }, - ], - name: "royaltyInfo", - outputs: [ - { - internalType: "address", - name: "receiver", - type: "address", - }, - { - internalType: "uint256", - name: "royaltyAmount", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, -]; - -export class IERC2981Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC2981UpgradeableInterface { - return new utils.Interface(_abi) as IERC2981UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC2981Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC2981Upgradeable; - } -} diff --git a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts b/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts deleted file mode 100644 index 41562db..0000000 --- a/src/typechain/factories/IERC721MetadataUpgradeable__factory.ts +++ /dev/null @@ -1,360 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721MetadataUpgradeable, - IERC721MetadataUpgradeableInterface, -} from "../IERC721MetadataUpgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "name", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "symbol", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "tokenURI", - outputs: [ - { - internalType: "string", - name: "", - type: "string", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721MetadataUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721MetadataUpgradeableInterface { - return new utils.Interface(_abi) as IERC721MetadataUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721MetadataUpgradeable { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721MetadataUpgradeable; - } -} diff --git a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts b/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts deleted file mode 100644 index 4d54c21..0000000 --- a/src/typechain/factories/IERC721ReceiverUpgradeable__factory.ts +++ /dev/null @@ -1,64 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721ReceiverUpgradeable, - IERC721ReceiverUpgradeableInterface, -} from "../IERC721ReceiverUpgradeable"; - -const _abi = [ - { - inputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "onERC721Received", - outputs: [ - { - internalType: "bytes4", - name: "", - type: "bytes4", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721ReceiverUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721ReceiverUpgradeableInterface { - return new utils.Interface(_abi) as IERC721ReceiverUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721ReceiverUpgradeable { - return new Contract( - address, - _abi, - signerOrProvider - ) as IERC721ReceiverUpgradeable; - } -} diff --git a/src/typechain/factories/IERC721Upgradeable__factory.ts b/src/typechain/factories/IERC721Upgradeable__factory.ts deleted file mode 100644 index 6da8e4a..0000000 --- a/src/typechain/factories/IERC721Upgradeable__factory.ts +++ /dev/null @@ -1,311 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - IERC721Upgradeable, - IERC721UpgradeableInterface, -} from "../IERC721Upgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "approved", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Approval", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "owner", - 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: "from", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "to", - type: "address", - }, - { - indexed: true, - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "Transfer", - type: "event", - }, - { - inputs: [ - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "approve", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - name: "balanceOf", - outputs: [ - { - internalType: "uint256", - name: "balance", - type: "uint256", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "getApproved", - outputs: [ - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - { - internalType: "address", - name: "operator", - type: "address", - }, - ], - name: "isApprovedForAll", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "ownerOf", - outputs: [ - { - internalType: "address", - name: "owner", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "safeTransferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - { - internalType: "bytes", - name: "data", - type: "bytes", - }, - ], - name: "safeTransferFrom", - 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: "bytes4", - name: "interfaceId", - type: "bytes4", - }, - ], - name: "supportsInterface", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "from", - type: "address", - }, - { - internalType: "address", - name: "to", - type: "address", - }, - { - internalType: "uint256", - name: "tokenId", - type: "uint256", - }, - ], - name: "transferFrom", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class IERC721Upgradeable__factory { - static readonly abi = _abi; - static createInterface(): IERC721UpgradeableInterface { - return new utils.Interface(_abi) as IERC721UpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): IERC721Upgradeable { - return new Contract(address, _abi, signerOrProvider) as IERC721Upgradeable; - } -} diff --git a/src/typechain/factories/OwnableUpgradeable__factory.ts b/src/typechain/factories/OwnableUpgradeable__factory.ts deleted file mode 100644 index 3100f92..0000000 --- a/src/typechain/factories/OwnableUpgradeable__factory.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from "ethers"; -import { Provider } from "@ethersproject/providers"; -import type { - OwnableUpgradeable, - OwnableUpgradeableInterface, -} from "../OwnableUpgradeable"; - -const _abi = [ - { - anonymous: false, - inputs: [ - { - indexed: false, - internalType: "uint8", - name: "version", - type: "uint8", - }, - ], - name: "Initialized", - type: "event", - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: "address", - name: "previousOwner", - type: "address", - }, - { - indexed: true, - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "OwnershipTransferred", - type: "event", - }, - { - inputs: [], - name: "owner", - outputs: [ - { - internalType: "address", - name: "", - type: "address", - }, - ], - stateMutability: "view", - type: "function", - }, - { - inputs: [], - name: "renounceOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, - { - inputs: [ - { - internalType: "address", - name: "newOwner", - type: "address", - }, - ], - name: "transferOwnership", - outputs: [], - stateMutability: "nonpayable", - type: "function", - }, -]; - -export class OwnableUpgradeable__factory { - static readonly abi = _abi; - static createInterface(): OwnableUpgradeableInterface { - return new utils.Interface(_abi) as OwnableUpgradeableInterface; - } - static connect( - address: string, - signerOrProvider: Signer | Provider - ): OwnableUpgradeable { - return new Contract(address, _abi, signerOrProvider) as OwnableUpgradeable; - } -} diff --git a/src/typechain/hardhat.d.ts b/src/typechain/hardhat.d.ts index 33e049e..d00491c 100644 --- a/src/typechain/hardhat.d.ts +++ b/src/typechain/hardhat.d.ts @@ -12,22 +12,6 @@ import * as Contracts from "."; declare module "hardhat/types/runtime" { interface HardhatEthersHelpers extends HardhatEthersHelpersBase { - getContractFactory( - name: "Factory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IFactory", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "OwnableUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC2981Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "Initializable", signerOrOptions?: ethers.Signer | FactoryOptions @@ -48,34 +32,10 @@ declare module "hardhat/types/runtime" { name: "IERC20Upgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC721Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721MetadataUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721ReceiverUpgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC721Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ContextUpgradeable", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "ERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "IERC165Upgradeable", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "AccessControl", signerOrOptions?: ethers.Signer | FactoryOptions @@ -449,26 +409,6 @@ declare module "hardhat/types/runtime" { signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractAt( - name: "Factory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IFactory", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "OwnableUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC2981Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "Initializable", address: string, @@ -494,41 +434,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC721Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721MetadataUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721ReceiverUpgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC721Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ContextUpgradeable", address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "ERC165Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "IERC165Upgradeable", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "AccessControl", address: string, diff --git a/src/typechain/index.ts b/src/typechain/index.ts index 2e7e6dd..c8b6f1f 100644 --- a/src/typechain/index.ts +++ b/src/typechain/index.ts @@ -1,22 +1,12 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export type { Factory } from "./Factory"; -export type { IFactory } from "./IFactory"; -export type { OwnableUpgradeable } from "./OwnableUpgradeable"; -export type { IERC2981Upgradeable } from "./IERC2981Upgradeable"; export type { Initializable } from "./Initializable"; export type { ERC20Upgradeable } from "./ERC20Upgradeable"; export type { ERC20BurnableUpgradeable } from "./ERC20BurnableUpgradeable"; export type { IERC20MetadataUpgradeable } from "./IERC20MetadataUpgradeable"; export type { IERC20Upgradeable } from "./IERC20Upgradeable"; -export type { ERC721Upgradeable } from "./ERC721Upgradeable"; -export type { IERC721MetadataUpgradeable } from "./IERC721MetadataUpgradeable"; -export type { IERC721ReceiverUpgradeable } from "./IERC721ReceiverUpgradeable"; -export type { IERC721Upgradeable } from "./IERC721Upgradeable"; export type { ContextUpgradeable } from "./ContextUpgradeable"; -export type { ERC165Upgradeable } from "./ERC165Upgradeable"; -export type { IERC165Upgradeable } from "./IERC165Upgradeable"; export type { AccessControl } from "./AccessControl"; export type { IAccessControl } from "./IAccessControl"; export type { Ownable } from "./Ownable"; @@ -46,7 +36,9 @@ export type { SeedDance } from "./SeedDance"; export type { ERC20Redeem } from "./ERC20Redeem"; export type { IERC4626 } from "./IERC4626"; export type { RedeemableERC20ClaimEscrow } from "./RedeemableERC20ClaimEscrow"; +export type { Factory } from "./Factory"; export type { FactoryCurator } from "./FactoryCurator"; +export type { IFactory } from "./IFactory"; export type { NoticeBoard } from "./NoticeBoard"; export type { OrderBook } from "./OrderBook"; export type { OrderBookStateBuilder } from "./OrderBookStateBuilder"; @@ -108,22 +100,12 @@ export type { StandardStateBuilder } from "./StandardStateBuilder"; export type { StandardVM } from "./StandardVM"; export type { VMStateBuilder } from "./VMStateBuilder"; -export { Factory__factory } from "./factories/Factory__factory"; -export { IFactory__factory } from "./factories/IFactory__factory"; -export { OwnableUpgradeable__factory } from "./factories/OwnableUpgradeable__factory"; -export { IERC2981Upgradeable__factory } from "./factories/IERC2981Upgradeable__factory"; export { Initializable__factory } from "./factories/Initializable__factory"; export { ERC20Upgradeable__factory } from "./factories/ERC20Upgradeable__factory"; export { ERC20BurnableUpgradeable__factory } from "./factories/ERC20BurnableUpgradeable__factory"; export { IERC20MetadataUpgradeable__factory } from "./factories/IERC20MetadataUpgradeable__factory"; export { IERC20Upgradeable__factory } from "./factories/IERC20Upgradeable__factory"; -export { ERC721Upgradeable__factory } from "./factories/ERC721Upgradeable__factory"; -export { IERC721MetadataUpgradeable__factory } from "./factories/IERC721MetadataUpgradeable__factory"; -export { IERC721ReceiverUpgradeable__factory } from "./factories/IERC721ReceiverUpgradeable__factory"; -export { IERC721Upgradeable__factory } from "./factories/IERC721Upgradeable__factory"; export { ContextUpgradeable__factory } from "./factories/ContextUpgradeable__factory"; -export { ERC165Upgradeable__factory } from "./factories/ERC165Upgradeable__factory"; -export { IERC165Upgradeable__factory } from "./factories/IERC165Upgradeable__factory"; export { AccessControl__factory } from "./factories/AccessControl__factory"; export { IAccessControl__factory } from "./factories/IAccessControl__factory"; export { Ownable__factory } from "./factories/Ownable__factory"; @@ -153,7 +135,9 @@ export { SeedDance__factory } from "./factories/SeedDance__factory"; export { ERC20Redeem__factory } from "./factories/ERC20Redeem__factory"; export { IERC4626__factory } from "./factories/IERC4626__factory"; export { RedeemableERC20ClaimEscrow__factory } from "./factories/RedeemableERC20ClaimEscrow__factory"; +export { Factory__factory } from "./factories/Factory__factory"; export { FactoryCurator__factory } from "./factories/FactoryCurator__factory"; +export { IFactory__factory } from "./factories/IFactory__factory"; export { NoticeBoard__factory } from "./factories/NoticeBoard__factory"; export { OrderBook__factory } from "./factories/OrderBook__factory"; export { OrderBookStateBuilder__factory } from "./factories/OrderBookStateBuilder__factory"; diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts index 24ddb23..4c4d568 100644 --- a/test/RuleBuilder.test.ts +++ b/test/RuleBuilder.test.ts @@ -1,9 +1,9 @@ import { assert } from "chai"; +import { Tier } from "./utils"; import { BigNumber, ethers } from "ethers"; import { RuleBuilder, StateConfig, VM } from "../src"; import { Currency } from "../src/rule-builder/types"; import { areEqualConfigs, concat, op, paddedUInt32 } from "../src/utils"; -import { Tier } from "./utils"; describe('SDK - RuleBuilder', () => { @@ -71,7 +71,7 @@ describe('SDK - RuleBuilder', () => { }, quantity: { struct: { - subject: 'buy-units', + subject: 'input', args: { index: 1 } @@ -119,7 +119,7 @@ describe('SDK - RuleBuilder', () => { }, quantity: { struct: { - subject: 'buy-units', + subject: 'input', args: { index: 1 } @@ -175,7 +175,7 @@ describe('SDK - RuleBuilder', () => { } } const resultConfig = new RuleBuilder([currencyObject]); - + console.log(resultConfig); const expectedConfig: StateConfig = { constants: [ 11111, @@ -190,10 +190,10 @@ describe('SDK - RuleBuilder', () => { 11111, 11111, 11111, + BigNumber.from(5), ethers.constants.Zero, BigNumber.from(5), BigNumber.from(10), - BigNumber.from(5), '0x123456789abcdef', ethers.constants.MaxUint256, 7500, @@ -231,6 +231,8 @@ describe('SDK - RuleBuilder', () => { op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.GREATER_THAN), op(VM.Opcodes.ISZERO), + // default price + op(VM.Opcodes.CONSTANT, 8), // quantities op(VM.Opcodes.STACK, 0), op(VM.Opcodes.CONTEXT, 1), @@ -238,16 +240,18 @@ describe('SDK - RuleBuilder', () => { op(VM.Opcodes.STACK, 2), op(VM.Opcodes.CONTEXT, 1), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.CONSTANT, 9), op(VM.Opcodes.MAX, 3), // prices op(VM.Opcodes.STACK, 1), - op(VM.Opcodes.CONSTANT, 9), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.STACK, 3), op(VM.Opcodes.CONSTANT, 10), - op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 3), op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 4), op(VM.Opcodes.MIN, 3), // prices global modifier op(VM.Opcodes.CONSTANT, 12), @@ -337,7 +341,7 @@ describe('SDK - RuleBuilder', () => { }, quantity: { struct: { - subject: 'buy-units', + subject: 'input', args: { index: 1 } @@ -385,7 +389,7 @@ describe('SDK - RuleBuilder', () => { }, quantity: { struct: { - subject: 'buy-units', + subject: 'input', args: { index: 1 } @@ -494,7 +498,7 @@ describe('SDK - RuleBuilder', () => { }, quantity: { struct: { - subject: 'buy-units', + subject: 'input', args: { index: 1 } @@ -523,7 +527,7 @@ describe('SDK - RuleBuilder', () => { struct: { subject: 'constant', args: { - value: BigNumber.from(5) + value: BigNumber.from(7) } } } @@ -592,12 +596,14 @@ describe('SDK - RuleBuilder', () => { paddedUInt32('0xffffffff').repeat(5) + paddedUInt32(0).repeat(3) ), + // default prices + BigNumber.from(5), + BigNumber.from(7), // currency1 quantities constants ethers.constants.Zero, // currency1 prices constants BigNumber.from(5), BigNumber.from(10), - BigNumber.from(5), // currency1 prices global modifier '0x123456789abcdef', ethers.constants.MaxUint256, @@ -612,7 +618,6 @@ describe('SDK - RuleBuilder', () => { 10000, // currency2 prices BigNumber.from(5), - BigNumber.from(5), // currency2 prices global modifier '0x123456789abcdef', ethers.constants.MaxUint256, @@ -663,6 +668,9 @@ describe('SDK - RuleBuilder', () => { op(VM.Opcodes.ANY, 2), // currency2 price rule1 op(VM.Opcodes.STACK, 4), + // default prices + op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 12), // currency1 quantities op(VM.Opcodes.STACK, 0), op(VM.Opcodes.CONTEXT, 1), @@ -670,52 +678,55 @@ describe('SDK - RuleBuilder', () => { op(VM.Opcodes.STACK, 2), op(VM.Opcodes.CONTEXT, 1), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 11), + op(VM.Opcodes.CONSTANT, 13), op(VM.Opcodes.MAX, 3), // currency1 prices op(VM.Opcodes.STACK, 1), - op(VM.Opcodes.CONSTANT, 12), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.STACK, 3), - op(VM.Opcodes.CONSTANT, 13), - op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 14), + op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 3), + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 6), op(VM.Opcodes.MIN, 3), // currency1 prices global modifier - op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.CONSTANT, 16), op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.ITIERV2_REPORT), - op(VM.Opcodes.CONSTANT, 16), - op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 17), + op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 18), + op(VM.Opcodes.CONSTANT, 19), op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 18), + op(VM.Opcodes.CONSTANT, 19), op(VM.Opcodes.DIV, 2), // currency2 quantities op(VM.Opcodes.STACK, 4), op(VM.Opcodes.CONTEXT, 1), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 19), + op(VM.Opcodes.CONSTANT, 20), op(VM.Opcodes.MAX, 2), // currency2 quantitty global modifier - op(VM.Opcodes.CONSTANT, 20), + op(VM.Opcodes.CONSTANT, 21), op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.ITIERV2_REPORT), - op(VM.Opcodes.CONSTANT, 21), - op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 22), + op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 23), + op(VM.Opcodes.CONSTANT, 24), op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 23), + op(VM.Opcodes.CONSTANT, 24), op(VM.Opcodes.DIV, 2), // currency2 prices op(VM.Opcodes.STACK, 5), - op(VM.Opcodes.CONSTANT, 24), - op(VM.Opcodes.MUL, 2), op(VM.Opcodes.CONSTANT, 25), + op(VM.Opcodes.STACK, 7), + op(VM.Opcodes.EAGER_IF,), + op(VM.Opcodes.STACK, 7), op(VM.Opcodes.MIN, 2), // currency2 prices global modifier op(VM.Opcodes.CONSTANT, 26), From 608a3a1adbb2930e9ab4c1beb5d4278b7258bdb1 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 9 Aug 2022 17:57:09 +0000 Subject: [PATCH 079/125] expandable HumanFriendlyRead --- src/vm/HumanFreindlyRead.ts | 398 +++++++----- src/vm/OpMeta.ts | 1175 +++++++++++++++++------------------ 2 files changed, 811 insertions(+), 762 deletions(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index f15ae66..9b2851b 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -9,20 +9,23 @@ import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; import { SaleContext, SaleStorage } from '../contracts/sale'; import { arrayify, + concat, extractFromMap, + op, paddedUInt256, + selectLte, selectLteLogic, selectLteMode, } from '../utils'; -import { OpMeta } from './OpMeta'; +import { IOpMeta, OpMeta } from './OpMeta'; -interface opMeta { - enum: number; - name: string; - input: string; -} +// interface opMeta { +// enum: number; +// name: string; +// name: string; +// } -interface OpInfo extends opMeta { +interface OpInfo extends IOpMeta { operand: number; } @@ -95,9 +98,9 @@ export type PrettifyConfig = { length?: number; }; -const newOpMeta: opMeta[] = Array.from( - extractFromMap(OpMeta, ["name", "enum", "input"]).values() -); +// const newOpMeta = Array.from( +// extractFromMap(OpMeta, []).values() +// ); /** * @public @@ -112,10 +115,21 @@ const newOpMeta: opMeta[] = Array.from( * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ export class HumanFriendlyRead { - private static opMeta: opMeta[] = newOpMeta; + private static opMeta: IOpMeta[]; private static _context: string | undefined; private static _pretty: boolean; + /** + * + * @param opmeta + * @returns + */ + public static set(opmeta: typeof OpMeta): any { + this.opMeta = Array.from( + extractFromMap(opmeta, []).values() + ); + } + /** * Obtain the friendly output from an script. * @param _state - The state or script to generate the friendly version @see StateConfig @@ -233,7 +247,7 @@ export class HumanFriendlyRead { op = ops[i]; i++; - if (op.input === 'constantIndex') { + if (op.name === 'CONSTANT') { if (op.operand < 128) { state.stack[_stackIndex] = { val: state.constants[op.operand], @@ -246,13 +260,15 @@ export class HumanFriendlyRead { }; } state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'blockNumber') { - state.stack[_stackIndex] = { - val: 'CURRENT_BLOCK', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'DUP') { + } + // else if (op.name === 'blockNumber') { + // state.stack[_stackIndex] = { + // val: 'CURRENT_BLOCK', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + else if (op.name === 'STACK') { state.stack[op.operand].consumed = true; state.stack[op.operand].wasDup = true; const valueDup = { @@ -261,93 +277,108 @@ export class HumanFriendlyRead { }; state.stack.push(valueDup); state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'msgSender') { - state.stack[_stackIndex] = { - val: 'SENDER()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'thisAddress') { - state.stack[_stackIndex] = { - val: 'THIS_ADDRESS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'blockTimestamp') { - state.stack[_stackIndex] = { - val: 'CURRENT_TIMESTAMP', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'SCALE18_DECIMALS') { - state.stack[_stackIndex] = { - val: 'SCALE18_DECIMALS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'SCALE18_ONE') { - state.stack[_stackIndex] = { - val: 'SCALE18_ONE()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'NEVER') { - state.stack[_stackIndex] = { - val: 'NEVER()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'REMAINING_UNITS') { - state.stack[_stackIndex] = { - val: 'REMAINING_UNITS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'TOTAL_RESERVE_IN') { - state.stack[_stackIndex] = { - val: 'TOTAL_RESERVE_IN()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'CURRENT_BUY_UNITS') { - state.stack[_stackIndex] = { - val: 'CURRENT_BUY_UNITS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'TOKEN_ADDRESS') { - state.stack[_stackIndex] = { - val: 'TOKEN_ADDRESS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'RESERVE_ADDRESS') { - state.stack[_stackIndex] = { - val: 'RESERVE_ADDRESS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'ACCOUNT') { - state.stack[_stackIndex] = { - val: 'ACCOUNT()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'CLAIMANT_ACCOUNT') { - state.stack[_stackIndex] = { - val: 'CLAIMANT_ACCOUNT()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'CURRENT_UNITS') { - state.stack[_stackIndex] = { - val: 'CURRENT_UNITS()', - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'CONTEXT') { + } + // else if (op.name === 'msgSender') { + // state.stack[_stackIndex] = { + // val: 'SENDER()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'thisAddress') { + // state.stack[_stackIndex] = { + // val: 'THIS_ADDRESS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'blockTimestamp') { + // state.stack[_stackIndex] = { + // val: 'CURRENT_TIMESTAMP', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'SCALE18_DECIMALS') { + // state.stack[_stackIndex] = { + // val: 'SCALE18_DECIMALS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'SCALE18_ONE') { + // state.stack[_stackIndex] = { + // val: 'SCALE18_ONE()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'NEVER') { + // state.stack[_stackIndex] = { + // val: 'NEVER()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'REMAINING_UNITS') { + // state.stack[_stackIndex] = { + // val: 'REMAINING_UNITS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'TOTAL_RESERVE_IN') { + // state.stack[_stackIndex] = { + // val: 'TOTAL_RESERVE_IN()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'CURRENT_BUY_UNITS') { + // state.stack[_stackIndex] = { + // val: 'CURRENT_BUY_UNITS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'TOKEN_ADDRESS') { + // state.stack[_stackIndex] = { + // val: 'TOKEN_ADDRESS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'RESERVE_ADDRESS') { + // state.stack[_stackIndex] = { + // val: 'RESERVE_ADDRESS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'ACCOUNT') { + // state.stack[_stackIndex] = { + // val: 'ACCOUNT()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'CLAIMANT_ACCOUNT') { + // state.stack[_stackIndex] = { + // val: 'CLAIMANT_ACCOUNT()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + // else if (op.name === 'CURRENT_UNITS') { + // state.stack[_stackIndex] = { + // val: 'CURRENT_UNITS()', + // consumed: false, + // }; + // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + // } + else if (op.name === 'CONTEXT') { // - let context = `CONTEXT Argument ${op.operand} passed to contract function at call`; + let context = `CONTEXT Argument ${op.operand} passed at contract function call`; let valid = true; if (this._context === 'sale') { valid = isValidContext(op.operand, SaleContext.length); @@ -375,7 +406,8 @@ export class HumanFriendlyRead { `Wrong context value '${op.operand}' given for the context '${this._context}'` ); } - } else if (op.input === 'STORAGE') { + } + else if (op.name === 'STORAGE') { // let storage = ''; if (this._context === 'sale') { @@ -395,10 +427,19 @@ export class HumanFriendlyRead { consumed: false, }; state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else if (op.input === 'takeFromStack') { - this.applyOp(state, op); - } else if (op.input === 'zipmap') { + } + else if (op.pops.name === 'zero' && op.pushes.name === 'one') { + state.stack[_stackIndex] = { + val: op.readableAlias ? op.readableAlias : op.name, + consumed: false, + }; + state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + } + else if (op.name === 'ZIPMAP') { this.zipmap(state, op.operand); + } + else { + this.applyOp(state, op); } } @@ -460,7 +501,7 @@ export class HumanFriendlyRead { const _stackIndex = BigNumber.from(state.stackIndex).toNumber(); let baseIndex = _stackIndex - op.operand; let top = _stackIndex - 1; - let tempString = op.name + '('; + let tempString = op.readableAlias ? op.readableAlias + '(' : op.name + '('; let cursor = baseIndex; let tempArr: any[]; @@ -482,25 +523,28 @@ export class HumanFriendlyRead { cursor = baseIndex; tempArr = [state.stack[cursor].val]; // - } else if ( - op.enum === AllStandardOps.SCALE18_DIV || - op.enum === AllStandardOps.SCALE18_MUL - ) { - const _stackLength = this.identifyZipmap(state.stack, 2); - - // At least one zipmap was found to fll all the required stack from MIN - if (_stackLength !== -1) { - baseIndex = _stackIndex - _stackLength; - } - // Since no zipmap was found, the stack could fill the the stack required - else { - baseIndex = _stackIndex - 2; - } - - cursor = baseIndex; - tempArr = [state.stack[cursor].val + '*10**18']; - // - } else if (op.enum === AllStandardOps.EAGER_IF) { + } + // else if ( + // // op.enum === AllStandardOps.SCALE18_DIV || + // // op.enum === AllStandardOps.SCALE18_MUL + // op.pops.name === 'two' + // ) { + // const _stackLength = this.identifyZipmap(state.stack, 2); + + // // At least one zipmap was found to fll all the required stack from MIN + // if (_stackLength !== -1) { + // baseIndex = _stackIndex - _stackLength; + // } + // // Since no zipmap was found, the stack could fill the the stack required + // else { + // baseIndex = _stackIndex - 2; + // } + + // cursor = baseIndex; + // tempArr = [state.stack[cursor].val + '*10**18']; + // // + // } + else if (op.enum === AllStandardOps.EAGER_IF) { const _stackLength = this.identifyZipmap(state.stack, 3); // At least one zipmap was found to fll all the required stack from MIN @@ -516,9 +560,10 @@ export class HumanFriendlyRead { tempArr = [state.stack[cursor].val]; // } else if ( - op.enum === AllStandardOps.SCALE18 || - op.enum === AllStandardOps.ISZERO || - op.enum === AllStandardOps.IERC20_TOTAL_SUPPLY || + // op.enum === AllStandardOps.SCALE18 || + // op.enum === AllStandardOps.ISZERO || + // op.enum === AllStandardOps.IERC20_TOTAL_SUPPLY || + op.pops.name === 'one' || this.flagOp(op.enum) ) { const _stackLength = this.identifyZipmap(state.stack, 1); @@ -537,14 +582,15 @@ export class HumanFriendlyRead { tempArr = [state.stack[cursor].val]; // } else if ( - op.enum === AllStandardOps.GREATER_THAN || - op.enum === AllStandardOps.LESS_THAN || - op.enum === AllStandardOps.EQUAL_TO || - op.enum === AllStandardOps.SATURATING_DIFF || - op.enum === AllStandardOps.IERC721_OWNER_OF || - op.enum === AllStandardOps.IERC721_BALANCE_OF || - op.enum === AllStandardOps.IERC20_BALANCE_OF || - op.enum === AllStandardOps.ITIERV2_REPORT + // op.enum === AllStandardOps.GREATER_THAN || + // op.enum === AllStandardOps.LESS_THAN || + // op.enum === AllStandardOps.EQUAL_TO || + // op.enum === AllStandardOps.SATURATING_DIFF || + // op.enum === AllStandardOps.IERC721_OWNER_OF || + // op.enum === AllStandardOps.IERC721_BALANCE_OF || + // op.enum === AllStandardOps.IERC20_BALANCE_OF || + // op.enum === AllStandardOps.ITIERV2_REPORT + op.pops.name === 'two' ) { const _stackLength = this.identifyZipmap(state.stack, 2); @@ -558,7 +604,11 @@ export class HumanFriendlyRead { } cursor = baseIndex; - tempArr = [state.stack[cursor].val]; + tempArr = + op.enum === AllStandardOps.SCALE18_DIV || + op.enum === AllStandardOps.SCALE18_MUL + ? [state.stack[cursor].val + '*10**18'] + : [state.stack[cursor].val]; // } else if (op.enum === AllStandardOps.SELECT_LTE) { const _stackLength = this.identifyZipmap(state.stack, 3); @@ -576,15 +626,16 @@ export class HumanFriendlyRead { cursor = baseIndex; tempArr = []; } else if ( - op.enum === AllStandardOps.MIN || - op.enum === AllStandardOps.MAX || - op.enum === AllStandardOps.ADD || - op.enum === AllStandardOps.SUB || - op.enum === AllStandardOps.MUL || - op.enum === AllStandardOps.DIV || - op.enum === AllStandardOps.SATURATING_ADD || - op.enum === AllStandardOps.SATURATING_SUB || - op.enum === AllStandardOps.SATURATING_MUL + // op.enum === AllStandardOps.MIN || + // op.enum === AllStandardOps.MAX || + // op.enum === AllStandardOps.ADD || + // op.enum === AllStandardOps.SUB || + // op.enum === AllStandardOps.MUL || + // op.enum === AllStandardOps.DIV || + // op.enum === AllStandardOps.SATURATING_ADD || + // op.enum === AllStandardOps.SATURATING_SUB || + // op.enum === AllStandardOps.SATURATING_MUL + op.pops.name === 'oprnd' ) { const operand = this.identifyZipmap(state.stack, op.operand); @@ -603,8 +654,24 @@ export class HumanFriendlyRead { cursor = baseIndex; tempArr = [state.stack[cursor].val]; } else { + const _stackLength = this.identifyZipmap(state.stack, op.pops(op.enum, op.operand)); + + // At least one zipmap was found to fll all the required stack from MIN + if (_stackLength !== -1) { + baseIndex = _stackIndex - _stackLength; + } + // Since no zipmap was found, the stack could fill the the stack required + else { + baseIndex = _stackIndex - op.pops(op.enum, op.operand); + } + + cursor = baseIndex; tempArr = [state.stack[cursor].val]; - } + // + } + // else { + // tempArr = [state.stack[cursor].val]; + // } state.stack[cursor].consumed = true; @@ -774,4 +841,31 @@ export class HumanFriendlyRead { function isValidContext(_operand: number, _length: number): boolean { if (_operand >= 0 && _operand < _length) return true; return false; -} \ No newline at end of file +} + +const x = { + ...AllStandardOps, + myop: AllStandardOps.length +} + +const sss: StateConfig = { + constants: [11, 22], + sources: [ + concat([ + op(x.CONSTANT, 0), + op(x.STACK, 0), + op(x.CONSTANT, 0), + op(x.CONSTANT, 0), + op(x.SELECT_LTE, selectLte(0, 0, 3)), + op(x.CONSTANT, 0), + op(x.IERC20_TOTAL_SUPPLY), + op(x.ADD, 2), + op(x.CONSTANT, 1) + ]) + ], +} + +// HumanFriendlyRead.opmeta = newOpMeta; +HumanFriendlyRead.set(OpMeta) + +console.log(HumanFriendlyRead.get(sss)); \ No newline at end of file diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 664bf42..d46be7e 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -49,643 +49,598 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 * Class for Opcodes number of stack pushes and pops */ export const pnp: Record number> = { + /** + * @public + */ + zero: (opcode: number, operand: number) => 0, - /** - * @public - */ - zero: (opcode: number, operand: number) => 0, + /** + * @public + */ + one: (opcode: number, operand: number) => 1, - /** - * @public - */ - one: (opcode: number, operand: number) => 1, + /** + * @public + */ + two: (opcode: number, operand: number) => 2, - /** - * @public - */ - two: (opcode: number, operand: number) => 2, + /** + * @public + */ + three: (opcode: number, operand: number) => 3, - /** - * @public - */ - three: (opcode: number, operand: number) => 3, + /** + * @public + */ + oprnd: (opcode: number, operand: number) => operand, - /** - * @public - */ - oprnd: (opcode: number, operand: number) => operand, - - /** - * @public - */ - derived: (opcode: number, operand: number) => { - - if (opcode === AllStandardOps.ZIPMAP) { - return operand >> 5; - } - if (opcode === AllStandardOps.SELECT_LTE) { - return (operand & 248) >> 3; - } - if (opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { - return (operand * 2) + 1; - } - if (opcode === AllStandardOps.ITIERV2_REPORT) { - return operand + 1; - } - if (opcode === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { - return operand + 2; - } - else return NaN; - }, - - /** - * @public - */ - zipmappush: (opcode: number, operand: number) => { - return 2 ** ((operand >> 3) & 3); + /** + * @public + */ + derived: (opcode: number, operand: number) => { + if (opcode === AllStandardOps.ZIPMAP) { + return operand >> 5; + } + if (opcode === AllStandardOps.SELECT_LTE) { + return (operand & 248) >> 3; + } + if (opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { + return (operand * 2) + 1; + } + if (opcode === AllStandardOps.ITIERV2_REPORT) { + return operand + 1; + } + if (opcode === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { + return operand + 2; } + else return NaN; + }, + + /** + * @public + */ + zpush: (opcode: number, operand: number) => { + return 2 ** ((operand >> 3) & 3); + } }; /** * @public */ export interface IOpMeta extends Record { - - enum: number; - name: string; - input: string, - pushes: (opcode: number, operand: number) => number; - pops: (opcode: number, operand: number) => number; - jsvmfn: OpJSVM; - description?: string; + enum: number; + name: string; + pushes: (opcode: number, operand: number) => number; + pops: (opcode: number, operand: number) => number; + jsvmfn: OpJSVM; + description?: string; + readableAlias?: string } /** * @public */ export const OpMeta: Map = new Map([ - [ - 0, - { - enum: AllStandardOps.CONSTANT, - name: 'CONSTANT', - description: '', - input: 'constantIndex', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + [ + 0, + { + enum: AllStandardOps.CONSTANT, + name: 'CONSTANT', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { this.constant(operand, data) } - } - ], - [ - 1, - { - enum: AllStandardOps.STACK, - name: 'STACK', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + } + ], + [ + 1, + { + enum: AllStandardOps.STACK, + name: 'STACK', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { this.stack(operand, data) } - } - ], - [ - 2, - { - enum: AllStandardOps.CONTEXT, - name: 'CONTEXT', - description: '', - input: 'CONTEXT', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + } + ], + [ + 2, + { + enum: AllStandardOps.CONTEXT, + name: 'CONTEXT', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { this.context(operand, data) } - } - ], - [ - 3, - { - enum: AllStandardOps.STORAGE, - name: 'STORAGE', - description: '', - input: 'STORAGE', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + } + ], + [ + 3, + { + enum: AllStandardOps.STORAGE, + name: 'STORAGE', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { await this.storage(operand, data) } - } - ], - [ - 4, - { - enum: AllStandardOps.ZIPMAP, - name: 'ZIPMAP', - description: '', - input: 'zipmap', - pushes: pnp.zipmappush, - pops: pnp.derived, - jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { + } + ], + [ + 4, + { + enum: AllStandardOps.ZIPMAP, + name: 'ZIPMAP', + description: '', + pushes: pnp.zpush, + pops: pnp.derived, + jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { await this.zipmap(operand, data) } - } - ], - [ - 5, - { - enum: AllStandardOps.DEBUG, - name: 'DEBUG', - description: '', - input: '', - pushes: pnp.zero, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { + } + ], + [ + 5, + { + enum: AllStandardOps.DEBUG, + name: 'DEBUG', + description: '', + pushes: pnp.zero, + pops: pnp.zero, + jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { this.debug(operand, data) } - } - ], - [ - 6, - { - enum: AllStandardOps.IERC20_BALANCE_OF, - name: 'IERC20_BALANCE_OF', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC20BalanceOf - } - ], - [ - 7, - { - enum: AllStandardOps.IERC20_TOTAL_SUPPLY, - name: 'IERC20_TOTAL_SUPPLY', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpERC20TotalSupply - } - ], - [ - 8, - { - enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, - name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.three, - jsvmfn: OpERC20SnapshotBalanceOfAt - } - ], - [ - 9, - { - enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, - name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC20SnapshotTotalSupplyAt - } - ], - [ - 10, - { - enum: AllStandardOps.IERC721_BALANCE_OF, - name: 'IERC721_BALANCE_OF', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC721BalanceOf - } - ], - [ - 11, - { - enum: AllStandardOps.IERC721_OWNER_OF, - name: 'IERC721_OWNER_OF', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC721OwnerOf - } - ], - [ - 12, - { - enum: AllStandardOps.IERC1155_BALANCE_OF, - name: 'IERC1155_BALANCE_OF', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.three, - jsvmfn: OpERC1155BalanceOf - } - ], - [ - 13, - { - enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, - name: 'IERC1155_BALANCE_OF_BATCH', - description: '', - input: 'takeFromStack', - pushes: pnp.oprnd, - pops: pnp.derived, - jsvmfn: OpERC1155BalanceOfBatch - } - ], - [ - 14, - { - enum: AllStandardOps.BLOCK_NUMBER, - name: 'BLOCK_NUMBER', - description: '', - input: 'blockNumber', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpBlockNumber - } - ], - [ - 15, - { - enum: AllStandardOps.SENDER, - name: 'SENDER', - description: '', - input: 'msgSender', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpCaller - } - ], - [ - 16, - { - enum: AllStandardOps.THIS_ADDRESS, - name: 'THIS_ADDRESS', - description: '', - input: 'thisAddress', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpThisAddress - } - ], - [ - 17, - { - enum: AllStandardOps.BLOCK_TIMESTAMP, - name: 'BLOCK_TIMESTAMP', - description: '', - input: 'blockTimestamp', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpTimestamp - } - ], - [ - 18, - { - enum: AllStandardOps.SCALE18, - name: 'SCALE18', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpScale18 - } - ], - [ - 19, - { - enum: AllStandardOps.SCALE18_DIV, - name: 'SCALE18_DIV', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpScale18Div - } - ], - [ - 20, - { - enum: AllStandardOps.SCALE18_MUL, - name: 'SCALE18_MUL', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpScale18Mul - } - ], - [ - 21, - { - enum: AllStandardOps.SCALE_BY, - name: 'SCALE_BY', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpScaleBy - } - ], - [ - 22, - { - enum: AllStandardOps.SCALEN, - name: 'SCALEN', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpScaleN - } - ], - [ - 23, - { - enum: AllStandardOps.ANY, - name: 'ANY', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpAny - } - ], - [ - 24, - { - enum: AllStandardOps.EAGER_IF, - name: 'EAGER_IF', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.three, - jsvmfn: OpEagerIf - } - ], - [ - 25, - { - enum: AllStandardOps.EQUAL_TO, - name: 'EQUAL_TO', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpEqualTo - } - ], - [ - 26, - { - enum: AllStandardOps.EVERY, - name: 'EVERY', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpEvery - } - ], - [ - 27, - { - enum: AllStandardOps.GREATER_THAN, - name: 'GREATER_THAN', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpGreaterThan - } - ], - [ - 28, - { - enum: AllStandardOps.ISZERO, - name: 'ISZERO', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpIsZero - } - ], - [ - 29, - { - enum: AllStandardOps.LESS_THAN, - name: 'LESS_THAN', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpLessThan - } - ], - [ - 30, - { - enum: AllStandardOps.SATURATING_ADD, - name: 'SATURATING_ADD', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSaturatingAdd - } - ], - [ - 31, - { - enum: AllStandardOps.SATURATING_MUL, - name: 'SATURATING_MUL', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSaturatingMul - } - ], - [ - 32, - { - enum: AllStandardOps.SATURATING_SUB, - name: 'SATURATING_SUB', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSaturatingSub - } - ], - [ - 33, - { - enum: AllStandardOps.ADD, - name: 'ADD', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpAdd - } - ], - [ - 34, - { - enum: AllStandardOps.DIV, - name: 'DIV', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpDiv - } - ], - [ - 35, - { - enum: AllStandardOps.EXP, - name: 'EXP', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpExp - } - ], - [ - 36, - { - enum: AllStandardOps.MAX, - name: 'MAX', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMax - } - ], - [ - 37, - { - enum: AllStandardOps.MIN, - name: 'MIN', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMin - } - ], - [ - 38, - { - enum: AllStandardOps.MOD, - name: 'MOD', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMod - } - ], - [ - 39, - { - enum: AllStandardOps.MUL, - name: 'MUL', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMul - } - ], - [ - 40, - { - enum: AllStandardOps.SUB, - name: 'SUB', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSub - } - ], - [ - 41, - { - enum: AllStandardOps.ITIERV2_REPORT, - name: 'ITIERV2_REPORT', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.derived, - jsvmfn: OpITierV2Report - } - ], - [ - 42, - { - enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, - name: 'ITIERV2_REPORT_TIME_FOR_TIER', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.derived, - jsvmfn: OpITierV2ReportTimesForTier - } - ], - [ - 43, - { - enum: AllStandardOps.SATURATING_DIFF, - name: 'SATURATING_DIFF', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpSaturatingDiff - } - ], - [ - 44, - { - enum: AllStandardOps.SELECT_LTE, - name: 'SELECT_LTE', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.derived, - jsvmfn: OpSelectLte - } - ], - [ - 45, - { - enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, - name: 'UPDATE_TIMES_FOR_TIER_RANGE', - description: '', - input: 'takeFromStack', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpUpdateTimesForTierRange - } - ] -]); \ No newline at end of file + } + ], + [ + 6, + { + enum: AllStandardOps.IERC20_BALANCE_OF, + name: 'IERC20_BALANCE_OF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC20BalanceOf + } + ], + [ + 7, + { + enum: AllStandardOps.IERC20_TOTAL_SUPPLY, + name: 'IERC20_TOTAL_SUPPLY', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpERC20TotalSupply + } + ], + [ + 8, + { + enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, + name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', + description: '', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpERC20SnapshotBalanceOfAt + } + ], + [ + 9, + { + enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, + name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC20SnapshotTotalSupplyAt + } + ], + [ + 10, + { + enum: AllStandardOps.IERC721_BALANCE_OF, + name: 'IERC721_BALANCE_OF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC721BalanceOf + } + ], + [ + 11, + { + enum: AllStandardOps.IERC721_OWNER_OF, + name: 'IERC721_OWNER_OF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC721OwnerOf + } + ], + [ + 12, + { + enum: AllStandardOps.IERC1155_BALANCE_OF, + name: 'IERC1155_BALANCE_OF', + description: '', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpERC1155BalanceOf + } + ], + [ + 13, + { + enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, + name: 'IERC1155_BALANCE_OF_BATCH', + description: '', + pushes: pnp.oprnd, + pops: pnp.derived, + jsvmfn: OpERC1155BalanceOfBatch + } + ], + [ + 14, + { + enum: AllStandardOps.BLOCK_NUMBER, + name: 'BLOCK_NUMBER', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpBlockNumber, + readableAlias: 'CURRENT_BLOCK' + } + ], + [ + 15, + { + enum: AllStandardOps.SENDER, + name: 'SENDER', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpCaller, + readableAlias: 'SENDER()' + } + ], + [ + 16, + { + enum: AllStandardOps.THIS_ADDRESS, + name: 'THIS_ADDRESS', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpThisAddress, + readableAlias: 'THIS_ADDRESS()' + } + ], + [ + 17, + { + enum: AllStandardOps.BLOCK_TIMESTAMP, + name: 'BLOCK_TIMESTAMP', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpTimestamp, + readableAlias: 'CURRENT_TIMESTAMP' + } + ], + [ + 18, + { + enum: AllStandardOps.SCALE18, + name: 'SCALE18', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScale18 + } + ], + [ + 19, + { + enum: AllStandardOps.SCALE18_DIV, + name: 'SCALE18_DIV', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpScale18Div + } + ], + [ + 20, + { + enum: AllStandardOps.SCALE18_MUL, + name: 'SCALE18_MUL', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpScale18Mul + } + ], + [ + 21, + { + enum: AllStandardOps.SCALE_BY, + name: 'SCALE_BY', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScaleBy + } + ], + [ + 22, + { + enum: AllStandardOps.SCALEN, + name: 'SCALEN', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScaleN + } + ], + [ + 23, + { + enum: AllStandardOps.ANY, + name: 'ANY', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpAny + } + ], + [ + 24, + { + enum: AllStandardOps.EAGER_IF, + name: 'EAGER_IF', + description: '', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpEagerIf + } + ], + [ + 25, + { + enum: AllStandardOps.EQUAL_TO, + name: 'EQUAL_TO', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpEqualTo + } + ], + [ + 26, + { + enum: AllStandardOps.EVERY, + name: 'EVERY', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpEvery + } + ], + [ + 27, + { + enum: AllStandardOps.GREATER_THAN, + name: 'GREATER_THAN', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpGreaterThan + } + ], + [ + 28, + { + enum: AllStandardOps.ISZERO, + name: 'ISZERO', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpIsZero + } + ], + [ + 29, + { + enum: AllStandardOps.LESS_THAN, + name: 'LESS_THAN', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpLessThan + } + ], + [ + 30, + { + enum: AllStandardOps.SATURATING_ADD, + name: 'SATURATING_ADD', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingAdd + } + ], + [ + 31, + { + enum: AllStandardOps.SATURATING_MUL, + name: 'SATURATING_MUL', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingMul + } + ], + [ + 32, + { + enum: AllStandardOps.SATURATING_SUB, + name: 'SATURATING_SUB', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingSub + } + ], + [ + 33, + { + enum: AllStandardOps.ADD, + name: 'ADD', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpAdd + } + ], + [ + 34, + { + enum: AllStandardOps.DIV, + name: 'DIV', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpDiv + } + ], + [ + 35, + { + enum: AllStandardOps.EXP, + name: 'EXP', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpExp + } + ], + [ + 36, + { + enum: AllStandardOps.MAX, + name: 'MAX', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMax + } + ], + [ + 37, + { + enum: AllStandardOps.MIN, + name: 'MIN', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMin + } + ], + [ + 38, + { + enum: AllStandardOps.MOD, + name: 'MOD', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMod + } + ], + [ + 39, + { + enum: AllStandardOps.MUL, + name: 'MUL', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMul + } + ], + [ + 40, + { + enum: AllStandardOps.SUB, + name: 'SUB', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSub + } + ], + [ + 41, + { + enum: AllStandardOps.ITIERV2_REPORT, + name: 'ITIERV2_REPORT', + description: '', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpITierV2Report + } + ], + [ + 42, + { + enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, + name: 'ITIERV2_REPORT_TIME_FOR_TIER', + description: '', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpITierV2ReportTimesForTier + } + ], + [ + 43, + { + enum: AllStandardOps.SATURATING_DIFF, + name: 'SATURATING_DIFF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpSaturatingDiff + } + ], + [ + 44, + { + enum: AllStandardOps.SELECT_LTE, + name: 'SELECT_LTE', + description: '', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpSelectLte + } + ], + [ + 45, + { + enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, + name: 'UPDATE_TIMES_FOR_TIER_RANGE', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpUpdateTimesForTierRange + } + ] +]); From 4bde9daf5a6108a40a5dbd976fa3c561b736cf45 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 9 Aug 2022 17:59:43 +0000 Subject: [PATCH 080/125] Update HumanFreindlyRead.ts --- src/vm/HumanFreindlyRead.ts | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 9b2851b..5bab8bc 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -842,30 +842,3 @@ function isValidContext(_operand: number, _length: number): boolean { if (_operand >= 0 && _operand < _length) return true; return false; } - -const x = { - ...AllStandardOps, - myop: AllStandardOps.length -} - -const sss: StateConfig = { - constants: [11, 22], - sources: [ - concat([ - op(x.CONSTANT, 0), - op(x.STACK, 0), - op(x.CONSTANT, 0), - op(x.CONSTANT, 0), - op(x.SELECT_LTE, selectLte(0, 0, 3)), - op(x.CONSTANT, 0), - op(x.IERC20_TOTAL_SUPPLY), - op(x.ADD, 2), - op(x.CONSTANT, 1) - ]) - ], -} - -// HumanFriendlyRead.opmeta = newOpMeta; -HumanFriendlyRead.set(OpMeta) - -console.log(HumanFriendlyRead.get(sss)); \ No newline at end of file From a129e99b413ec2105709abdb35586aae0f52c108 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 9 Aug 2022 18:07:06 +0000 Subject: [PATCH 081/125] update --- src/vm/HumanFreindlyRead.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 5bab8bc..33296a4 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -9,11 +9,8 @@ import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; import { SaleContext, SaleStorage } from '../contracts/sale'; import { arrayify, - concat, extractFromMap, - op, paddedUInt256, - selectLte, selectLteLogic, selectLteMode, } from '../utils'; @@ -115,7 +112,9 @@ export type PrettifyConfig = { * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ export class HumanFriendlyRead { - private static opMeta: IOpMeta[]; + private static opMeta: IOpMeta[] = Array.from( + extractFromMap(OpMeta, []).values() + );; private static _context: string | undefined; private static _pretty: boolean; From 9b3b07300c4fb3704339c628509c14fae72af14e Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 9 Aug 2022 19:07:30 +0000 Subject: [PATCH 082/125] Update RuleBuilder.test.ts --- test/RuleBuilder.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts index 4c4d568..6f910dd 100644 --- a/test/RuleBuilder.test.ts +++ b/test/RuleBuilder.test.ts @@ -175,7 +175,7 @@ describe('SDK - RuleBuilder', () => { } } const resultConfig = new RuleBuilder([currencyObject]); - console.log(resultConfig); + const expectedConfig: StateConfig = { constants: [ 11111, From 7040b6e42cad7a2b51330ef1d7e08eb55b1aa863 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 9 Aug 2022 20:15:35 +0000 Subject: [PATCH 083/125] optional CONTEXT/STORAGE op name for HumanFriendly --- docs/classes/humanfriendlyread.md | 22 ++++ docs/interfaces/iopmeta.md | 22 ++-- docs/types/config.md | 2 + src/vm/HumanFreindlyRead.ts | 38 +++++- test/9_HumanFriendlyRead.test.ts | 198 +++++++++++++++--------------- 5 files changed, 168 insertions(+), 114 deletions(-) diff --git a/docs/classes/humanfriendlyread.md b/docs/classes/humanfriendlyread.md index 4934a83..7dfd250 100644 --- a/docs/classes/humanfriendlyread.md +++ b/docs/classes/humanfriendlyread.md @@ -19,6 +19,7 @@ class HumanFriendlyRead | --- | --- | | [get(\_state, \_config)](./humanfriendlyread.md#get-method-static-1) | Obtain the friendly output from an script. | | [prettify(\_text, \_config)](./humanfriendlyread.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis | +| [set(opmeta)](./humanfriendlyread.md#set-method-static-1) | | ## Static Method Details @@ -73,3 +74,24 @@ static prettify(_text: string, _config?: PrettifyConfig): string; The pretty output + + +### set(opmeta) + +Signature: + +```typescript +static set(opmeta: typeof OpMeta): any; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| opmeta | `typeof OpMeta` | | + +Returns: + +`any` + + diff --git a/docs/interfaces/iopmeta.md b/docs/interfaces/iopmeta.md index 6e511c6..35d1356 100644 --- a/docs/interfaces/iopmeta.md +++ b/docs/interfaces/iopmeta.md @@ -19,11 +19,11 @@ interface IOpMeta extends Record | --- | --- | --- | | [description](./iopmeta.md#description-property) | `string` | | | [enum](./iopmeta.md#enum-property) | `number` | | -| [input](./iopmeta.md#input-property) | `string` | | | [jsvmfn](./iopmeta.md#jsvmfn-property) | [OpJSVM](./opjsvm.md) | | | [name](./iopmeta.md#name-property) | `string` | | | [pops](./iopmeta.md#pops-property) | `(opcode: number, operand: number) => number` | | | [pushes](./iopmeta.md#pushes-property) | `(opcode: number, operand: number) => number` | | +| [readableAlias](./iopmeta.md#readableAlias-property) | `string` | | ## Property Details @@ -47,16 +47,6 @@ description?: string; enum: number; ``` - - -### input - -Signature: - -```typescript -input: string; -``` - ### jsvmfn @@ -96,3 +86,13 @@ pops: (opcode: number, operand: number) => number; ```typescript pushes: (opcode: number, operand: number) => number; ``` + + + +### readableAlias + +Signature: + +```typescript +readableAlias?: string; +``` diff --git a/docs/types/config.md b/docs/types/config.md index 4ed11c0..63e0bec 100644 --- a/docs/types/config.md +++ b/docs/types/config.md @@ -9,5 +9,7 @@ Specific the configuration of the generation method type Config = { contract?: string; pretty?: boolean; + storageEnums?: string[]; + contextEnums?: string[]; }; ``` diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 33296a4..2d2eff2 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -77,6 +77,14 @@ export type Config = { * Enable the prettify to the result of get */ pretty?: boolean; + /** + * Providing the names for STORAGE opcodes + */ + storageEnums?: string[]; + /** + * Providing the names for CONTEXT opcodes + */ + contextEnums?: string[]; }; /** @@ -137,7 +145,12 @@ export class HumanFriendlyRead { */ public static get( _state: StateConfig, - _config: Config = { contract: '', pretty: false } + _config: Config = { + contract: '', + pretty: false, + storageEnums: undefined, + contextEnums: undefined + } ): string { this._context = _config?.contract?.toLowerCase(); this._pretty = _config.pretty ? true : false; @@ -148,7 +161,7 @@ export class HumanFriendlyRead { constants: _state.constants, }; - const _result = this._eval(state, 0); + const _result = this._eval(state, 0, _config.storageEnums, _config.contextEnums); return this._pretty ? this.prettify(_result) : _result; } @@ -215,7 +228,12 @@ export class HumanFriendlyRead { return _text; } - private static _eval = (_state: State, sourceIndex: number) => { + private static _eval = ( + _state: State, + sourceIndex: number, + storageEnums?: string[], + contextEnums?: string[] + ) => { let i = 0; let op: OpInfo; @@ -393,6 +411,16 @@ export class HumanFriendlyRead { valid = isValidContext(op.operand, OrderbookContext.length); context = OrderbookContext[op.operand]; } + // + else if (contextEnums && contextEnums.length > 0) { + valid = true; + context = contextEnums[op.operand]; + } + // + else { + valid = true; + context = `CONTEXT[${op.operand}]`; + } if (valid) { state.stack[_stackIndex] = { @@ -417,8 +445,10 @@ export class HumanFriendlyRead { storage = OrderbookStorage[op.operand]; } else if (this._context === 'combinetier') { storage = CombineTierStorage[op.operand]; + } else if (storageEnums && storageEnums.length > 0) { + storage = storageEnums[op.operand]; } else { - throw new Error('Not contract/context provided to get the STORAGE'); + storage = `STORAGE[${op.operand}]` } state.stack[_stackIndex] = { diff --git a/test/9_HumanFriendlyRead.test.ts b/test/9_HumanFriendlyRead.test.ts index 8dc3803..55fbd72 100644 --- a/test/9_HumanFriendlyRead.test.ts +++ b/test/9_HumanFriendlyRead.test.ts @@ -1737,105 +1737,105 @@ EAGER_IF( expect(friendly).to.be.equals(expectOutput); }); - it('should throw an error if the script use STORAGE op and does not provide the contact/context', async () => { - const [arbitrary] = await ethers.getSigners(); - const ERC721Address = arbitrary.address; - const fixedPrice = '20'; - const reserveTokenDecimals = 18; - const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); - const initialSupply = ethers.BigNumber.from('2000').mul(ONE); - - const splitTimestamp = await Time.currentTime(); - const endTimestamp = Time.duration - .minutes(60) - .add(splitTimestamp) - .toNumber(); - const dutchAuctionstartPrice = 50; - - //1st phase constants - const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase - - // initial calculations for dutch auction 2nd phase - let dutchAuctionDuration = endTimestamp - splitTimestamp; - let balanceReserve = minimumRaise.mul(5); - let initWeight = initialSupply - .mul(dutchAuctionstartPrice) - .div(balanceReserve); - let weightChange = initWeight.sub(1).div(dutchAuctionDuration); - - // 2nd phase constants - const ReserveBalance = parseUnits( - // Virtual reserve token balance - balanceReserve.toString(), - reserveTokenDecimals - ); - - const InitWeight = parseUnits(initWeight.toString()); // initial weight - - const WeightChange = parseUnits( - weightChange.toNumber().toFixed(5).toString() - ); // weight change per timestamp - - const one = parseUnits((1).toString()); // minimum possible weight - - const saleConfig: StateConfig = { - constants: [ - splitTimestamp, // timestamp that splits the phases - ERC721Address, - FixedPrice, - 0, - ReserveBalance, - InitWeight, - WeightChange, - one, - ], - - sources: [ - concat([ - // Amount script - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.IERC721_BALANCE_OF), - op(VM.Opcodes.ISZERO), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand - op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), - op(VM.Opcodes.EAGER_IF), - // Price script - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.MAX, 2), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand - op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.EAGER_IF), - ]), - ], - }; - - expect(() => { - HumanFriendlyRead.get(saleConfig, { - pretty: true, - }); - }).to.throw('Not contract/context provided to get the STORAGE'); - }); + // it('should throw an error if the script use STORAGE op and does not provide the contact/context', async () => { + // const [arbitrary] = await ethers.getSigners(); + // const ERC721Address = arbitrary.address; + // const fixedPrice = '20'; + // const reserveTokenDecimals = 18; + // const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); + // const initialSupply = ethers.BigNumber.from('2000').mul(ONE); + + // const splitTimestamp = await Time.currentTime(); + // const endTimestamp = Time.duration + // .minutes(60) + // .add(splitTimestamp) + // .toNumber(); + // const dutchAuctionstartPrice = 50; + + // //1st phase constants + // const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase + + // // initial calculations for dutch auction 2nd phase + // let dutchAuctionDuration = endTimestamp - splitTimestamp; + // let balanceReserve = minimumRaise.mul(5); + // let initWeight = initialSupply + // .mul(dutchAuctionstartPrice) + // .div(balanceReserve); + // let weightChange = initWeight.sub(1).div(dutchAuctionDuration); + + // // 2nd phase constants + // const ReserveBalance = parseUnits( + // // Virtual reserve token balance + // balanceReserve.toString(), + // reserveTokenDecimals + // ); + + // const InitWeight = parseUnits(initWeight.toString()); // initial weight + + // const WeightChange = parseUnits( + // weightChange.toNumber().toFixed(5).toString() + // ); // weight change per timestamp + + // const one = parseUnits((1).toString()); // minimum possible weight + + // const saleConfig: StateConfig = { + // constants: [ + // splitTimestamp, // timestamp that splits the phases + // ERC721Address, + // FixedPrice, + // 0, + // ReserveBalance, + // InitWeight, + // WeightChange, + // one, + // ], + + // sources: [ + // concat([ + // // Amount script + // op(VM.Opcodes.BLOCK_TIMESTAMP), + // op(VM.Opcodes.CONSTANT, 0), + // op(VM.Opcodes.LESS_THAN), + // op(VM.Opcodes.CONSTANT, 1), + // op(VM.Opcodes.SENDER), + // op(VM.Opcodes.IERC721_BALANCE_OF), + // op(VM.Opcodes.ISZERO), + // op(VM.Opcodes.CONSTANT, 3), + // op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand + // op(VM.Opcodes.EAGER_IF), + // op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), + // op(VM.Opcodes.EAGER_IF), + // // Price script + // op(VM.Opcodes.BLOCK_TIMESTAMP), + // op(VM.Opcodes.CONSTANT, 0), + // op(VM.Opcodes.LESS_THAN), + // op(VM.Opcodes.CONSTANT, 2), + // op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand + // op(VM.Opcodes.CONSTANT, 4), + // op(VM.Opcodes.ADD, 2), + // op(VM.Opcodes.CONSTANT, 5), + // op(VM.Opcodes.BLOCK_TIMESTAMP), + // op(VM.Opcodes.CONSTANT, 0), + // op(VM.Opcodes.SATURATING_SUB, 2), + // op(VM.Opcodes.CONSTANT, 6), + // op(VM.Opcodes.MUL, 2), + // op(VM.Opcodes.SATURATING_SUB, 2), + // op(VM.Opcodes.CONSTANT, 7), + // op(VM.Opcodes.MAX, 2), + // op(VM.Opcodes.MUL, 2), + // op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand + // op(VM.Opcodes.DIV, 2), + // op(VM.Opcodes.EAGER_IF), + // ]), + // ], + // }; + + // expect(() => { + // HumanFriendlyRead.get(saleConfig, { + // pretty: true, + // }); + // }).to.throw('Not contract/context provided to get the STORAGE'); + // }); it('brackets prettify', async () => { const report = paddedUInt256( From 6b52a0b626fd8b424679d649a17c13f7bb701cd7 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 10 Aug 2022 21:39:05 +0000 Subject: [PATCH 084/125] HumanFriendlyRead V2 HumanFriendlySource v2: + improved performance and code + expandable by custom opcodes using OpMeta + optional final stack tags + optioinal CONTEXT/STORAGE tags + option to be optimized for RuleBuilder + debugs and fixes --- docs/interfaces/iopmeta.md | 22 +- docs/types/config.md | 2 + src/jsvm/ops/math/fixedPoint/OpScale18.ts | 6 +- src/jsvm/ops/tier/OpSelectLte.ts | 4 +- src/vm/HumanFreindlyRead.ts | 838 +---- src/vm/OpMeta.ts | 14 +- test/9_HumanFriendlyRead.test.ts | 3790 ++++++++++----------- 7 files changed, 2074 insertions(+), 2602 deletions(-) diff --git a/docs/interfaces/iopmeta.md b/docs/interfaces/iopmeta.md index 35d1356..afe7ac0 100644 --- a/docs/interfaces/iopmeta.md +++ b/docs/interfaces/iopmeta.md @@ -17,16 +17,26 @@ interface IOpMeta extends Record | Property | Type | Description | | --- | --- | --- | +| [alias](./iopmeta.md#alias-property) | `string` | | | [description](./iopmeta.md#description-property) | `string` | | | [enum](./iopmeta.md#enum-property) | `number` | | | [jsvmfn](./iopmeta.md#jsvmfn-property) | [OpJSVM](./opjsvm.md) | | | [name](./iopmeta.md#name-property) | `string` | | | [pops](./iopmeta.md#pops-property) | `(opcode: number, operand: number) => number` | | | [pushes](./iopmeta.md#pushes-property) | `(opcode: number, operand: number) => number` | | -| [readableAlias](./iopmeta.md#readableAlias-property) | `string` | | ## Property Details + + +### alias + +Signature: + +```typescript +alias?: string; +``` + ### description @@ -86,13 +96,3 @@ pops: (opcode: number, operand: number) => number; ```typescript pushes: (opcode: number, operand: number) => number; ``` - - - -### readableAlias - -Signature: - -```typescript -readableAlias?: string; -``` diff --git a/docs/types/config.md b/docs/types/config.md index 63e0bec..2efa418 100644 --- a/docs/types/config.md +++ b/docs/types/config.md @@ -11,5 +11,7 @@ type Config = { pretty?: boolean; storageEnums?: string[]; contextEnums?: string[]; + aliases?: string[]; + ruleBuilder?: boolean; }; ``` diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18.ts b/src/jsvm/ops/math/fixedPoint/OpScale18.ts index d2bc68b..90981c7 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -12,10 +12,10 @@ export function OpScale18(this: RainJSVM, state: StateJSVM, operand: number, dat if (item_ !== undefined) { - state.stack.push( + state.stack.push( scale18(item_, operand) - ); + ); } else throw new Error('Undefined stack variable'); -} \ No newline at end of file +} diff --git a/src/jsvm/ops/tier/OpSelectLte.ts b/src/jsvm/ops/tier/OpSelectLte.ts index 152cf76..185e505 100644 --- a/src/jsvm/ops/tier/OpSelectLte.ts +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -9,8 +9,8 @@ import { StateJSVM } from "../../types"; export function OpSelectLte(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const length_ = operand & 31; - const mode_ = (operand & 96) >> 5; - const logic_ = (operand & 128) >> 7; + const mode_ = (operand >> 5) & 3; + const logic_ = operand >> 7; const timestamp_ = state.stack.pop(); const reports_ = state.stack.splice(-length_) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 2d2eff2..93fe329 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -1,66 +1,8 @@ -import { BytesLike, BigNumberish, BigNumber } from 'ethers'; +import { BytesLike, BigNumber, ethers } from 'ethers'; import { AllStandardOps, StateConfig } from '../classes/vm'; -import { CombineTierStorage } from '../contracts/tiers/combineTier'; -import { - EmissionsERC20Context, - EmissionsERC20Storage, -} from '../contracts/emissionsERC20'; -import { OrderbookContext, OrderbookStorage } from '../contracts/orderBook'; -import { SaleContext, SaleStorage } from '../contracts/sale'; -import { - arrayify, - extractFromMap, - paddedUInt256, - selectLteLogic, - selectLteMode, -} from '../utils'; +import { arrayify, extractFromMap } from '../utils'; import { IOpMeta, OpMeta } from './OpMeta'; -// interface opMeta { -// enum: number; -// name: string; -// name: string; -// } - -interface OpInfo extends IOpMeta { - operand: number; -} - -/** - * State that contain the information about the script. - */ -interface State { - stackIndex: BigNumberish; - stack: Stack[]; - sources: BytesLike[]; - constants: BigNumberish[]; -} - -/** - * A type to indentify the status of each value in the stack - */ -type Stack = { - /** - * Current value - */ - val: any; - /** - * Flag to identify if a value was read and use it. - * This means that after mix with other value in stack will be deleted - */ - consumed: boolean; - /** - * Flag to identify if the value was duplicate. - * A value that was duplicate will be considered as consumed, but still accessible in the stack. - * At the end, if the value was not mixed, will be discard to the final output - */ - wasDup?: boolean; -}; - -/** - * Type identify the pair relate to the [enum, operand] - */ -type Pair = [number, number]; /** * @public @@ -85,6 +27,14 @@ export type Config = { * Providing the names for CONTEXT opcodes */ contextEnums?: string[]; + /** + * Names/Aliases for each individual item on the final stack (in order) + */ + aliases?: string[]; + /** + * True if the result needs to be optimized for a RuleBuilder script generator + */ + ruleBuilder?: boolean; }; /** @@ -103,10 +53,6 @@ export type PrettifyConfig = { length?: number; }; -// const newOpMeta = Array.from( -// extractFromMap(OpMeta, []).values() -// ); - /** * @public * The generator of human friendly readable source. @@ -120,11 +66,11 @@ export type PrettifyConfig = { * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ export class HumanFriendlyRead { + + private static _pretty: boolean; private static opMeta: IOpMeta[] = Array.from( extractFromMap(OpMeta, []).values() );; - private static _context: string | undefined; - private static _pretty: boolean; /** * @@ -146,22 +92,30 @@ export class HumanFriendlyRead { public static get( _state: StateConfig, _config: Config = { - contract: '', pretty: false, storageEnums: undefined, - contextEnums: undefined + contextEnums: undefined, + aliases: undefined, + ruleBuilder: false } ): string { - this._context = _config?.contract?.toLowerCase(); this._pretty = _config.pretty ? true : false; - const state: State = { - stackIndex: 0, - stack: [], - sources: _state.sources, - constants: _state.constants, - }; + let _constants: string[] = []; + let _result; + + for (const item of _state.constants) { + _constants.push(BigNumber.from(item).toHexString()) + } + + _result = this._eval( + _state.sources, + _constants, + _config.storageEnums, + _config.contextEnums, + _config.aliases, + _config.ruleBuilder + ); - const _result = this._eval(state, 0, _config.storageEnums, _config.contextEnums); return this._pretty ? this.prettify(_result) : _result; } @@ -180,7 +134,7 @@ export class HumanFriendlyRead { if (!n) n = 2; if (!length) length = 20; - _text = _text.replace(/\s/g, ''); + // _text = _text.replace(/\s/g, ''); let space = ' '; let counter = 0; let skip = 0; @@ -191,6 +145,7 @@ export class HumanFriendlyRead { if ( _text[i] === '(' || _text[i] === '[' || + _text[i] === '{' || (_text[i] === ',' && skip === 0) ) { if ( @@ -207,7 +162,7 @@ export class HumanFriendlyRead { skip++; } } - if (_text[i] === ')' || _text[i] === ']') { + if (_text[i] === ')' || _text[i] === ']' || _text[i] === '}') { if (skip === 0) { counter--; _text = @@ -228,583 +183,148 @@ export class HumanFriendlyRead { return _text; } + /** + * The main workhorse of the Human Friendly Readable script that builds the whole text + * + * @param sources - The StateConfig sources + * @param constants - The StateConfig constants all in hex string format + * @param storageEnums - (optional) names/aliases for CONTEXT opcodes + * @param contextEnums - (optional) names/aliases for STORAGE opcodes + * @param aliases - (optional) names/aliases for individual items in final results (should be passed in order) + * @param ruleBuilder - True if the result needs to be optimized for the RuleBuilder script generator + * @returns The generated human friendly readable text + */ private static _eval = ( - _state: State, - sourceIndex: number, + sources: BytesLike[], + constants: string[], storageEnums?: string[], - contextEnums?: string[] - ) => { - let i = 0; - let op: OpInfo; - - let state: State = { - stackIndex: 0, - stack: [], - sources: _state.sources, - constants: _state.constants, - }; - - const ops = this.pairs(state.sources[sourceIndex]).map((pair) => { - let opmeta = this.opMeta.find((opmeta) => opmeta.enum === pair[0]); - if (typeof opmeta === 'undefined') { - // still undefined - if (typeof opmeta === 'undefined') { - throw Error(`Unknown opcode: ${pair[0]}`); + contextEnums?: string[], + aliases?: string[], + ruleBuilder: boolean = false, + ): string => { + + let _stack: string[] = []; + let _finalStack: string[] = []; + let _zipmapStack: { [key: number]: string } = {}; + + for (let i = 0; i < sources.length; i++) { + let src = arrayify(sources[i], { allowMissingPrefix: true}); + + for (let j = 0; j < src.length; j += 2) { + + if (src[j] === AllStandardOps.CONSTANT) { + if (src[j + 1] < constants.length) { + _stack.push( + BigNumber.from(constants[src[j + 1]]).eq(ethers.constants.MaxUint256) + ? 'MaxUint256' + : constants[src[j + 1]] + ) + } + else { + let argCount = constants.length; + for (let k = 0; k <= i; k++) { + let temp = arrayify(sources[k], { allowMissingPrefix: true}); + if (k === i) { + for (let l = 0; l < j; l += 2) { + if (temp[l] === AllStandardOps.ZIPMAP) { + argCount += (temp[l + 1] >> 5) + 1; + } + } + } + else { + for (let l = 0; l < temp.length; l += 2) { + if (temp[l] === AllStandardOps.ZIPMAP) { + argCount += (temp[l + 1] >> 5) + 1; + } + } + } + } + _stack.push(`Argument[${src[j + 1] - argCount}]`) + } } - } + else if (src[j] === AllStandardOps.STACK) { + if (ruleBuilder) { + _stack.push( + aliases && aliases[src[j + 1]] ? aliases[src[j + 1]] : `Item${src[j + 1]}` + ) + } + else { + _stack.push(_stack[src[j + 1]]) + } + } + else if (src[j] === AllStandardOps.CONTEXT) { + _stack.push( + contextEnums && (contextEnums[src[j + 1]] !== undefined || '') + ? contextEnums[src[j + 1]] + : this.opMeta[src[j]].name + `[${src[j + 1]}]` + ) + } + else if (src[j] === AllStandardOps.STORAGE) { + _stack.push( + storageEnums && (storageEnums[src[j + 1]] !== undefined || '') + ? storageEnums[src[j + 1]] + : this.opMeta[src[j]].name + `[${src[j + 1]}]` + ) + } + else if (src[j] === AllStandardOps.ZIPMAP) { - return { - operand: pair[1], - ...opmeta, - }; - }); + let index = src[j + 1] & 3; + let loopSize = 2 ** ((src[j + 1] >> 3) & 3); - while (i < ops.length) { - const _stackIndex = BigNumber.from(state.stackIndex).toNumber(); - op = ops[i]; - i++; + _zipmapStack[index] = this.opMeta[src[j]].name + + `[${index}] Function` + + `(Loop Size: ${loopSize}, ` + + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}]) ` - if (op.name === 'CONSTANT') { - if (op.operand < 128) { - state.stack[_stackIndex] = { - val: state.constants[op.operand], - consumed: false, - }; - } else { - state.stack[_stackIndex] = { - val: '^' + (op.operand - 128), - consumed: false, - }; - } - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } - // else if (op.name === 'blockNumber') { - // state.stack[_stackIndex] = { - // val: 'CURRENT_BLOCK', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - else if (op.name === 'STACK') { - state.stack[op.operand].consumed = true; - state.stack[op.operand].wasDup = true; - const valueDup = { - val: state.stack[op.operand].val, - consumed: false, - }; - state.stack.push(valueDup); - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } - // else if (op.name === 'msgSender') { - // state.stack[_stackIndex] = { - // val: 'SENDER()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'thisAddress') { - // state.stack[_stackIndex] = { - // val: 'THIS_ADDRESS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'blockTimestamp') { - // state.stack[_stackIndex] = { - // val: 'CURRENT_TIMESTAMP', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'SCALE18_DECIMALS') { - // state.stack[_stackIndex] = { - // val: 'SCALE18_DECIMALS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'SCALE18_ONE') { - // state.stack[_stackIndex] = { - // val: 'SCALE18_ONE()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'NEVER') { - // state.stack[_stackIndex] = { - // val: 'NEVER()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'REMAINING_UNITS') { - // state.stack[_stackIndex] = { - // val: 'REMAINING_UNITS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'TOTAL_RESERVE_IN') { - // state.stack[_stackIndex] = { - // val: 'TOTAL_RESERVE_IN()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'CURRENT_BUY_UNITS') { - // state.stack[_stackIndex] = { - // val: 'CURRENT_BUY_UNITS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'TOKEN_ADDRESS') { - // state.stack[_stackIndex] = { - // val: 'TOKEN_ADDRESS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'RESERVE_ADDRESS') { - // state.stack[_stackIndex] = { - // val: 'RESERVE_ADDRESS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'ACCOUNT') { - // state.stack[_stackIndex] = { - // val: 'ACCOUNT()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'CLAIMANT_ACCOUNT') { - // state.stack[_stackIndex] = { - // val: 'CLAIMANT_ACCOUNT()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - // else if (op.name === 'CURRENT_UNITS') { - // state.stack[_stackIndex] = { - // val: 'CURRENT_UNITS()', - // consumed: false, - // }; - // state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - // } - else if (op.name === 'CONTEXT') { - // - let context = `CONTEXT Argument ${op.operand} passed at contract function call`; - let valid = true; - if (this._context === 'sale') { - valid = isValidContext(op.operand, SaleContext.length); - context = SaleContext[op.operand]; + for (let k = 0; k < loopSize; k++) { + _stack.push(`ZIPMAP[${index}] Result[${k}]`) + } } - // - else if (this._context === 'emissions') { - valid = isValidContext(op.operand, EmissionsERC20Context.length); - context = EmissionsERC20Context[op.operand]; + else if (src[j] === AllStandardOps.SELECT_LTE) { + _stack.push( + this.opMeta[src[j]].name + + `(Logic: ${src[j + 1] >> 7}, Mode: ${(src[j + 1] >> 5) & 3}, ` + + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` + ) } - // - else if (this._context === 'orderbook') { - valid = isValidContext(op.operand, OrderbookContext.length); - context = OrderbookContext[op.operand]; + else if (src[j] === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { + _stack.push( + this.opMeta[src[j]].name + + `(Start Tier: ${src[j + 1] & 15}, End Tier: ${src[j + 1] >> 4}, ` + + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` + ) } - // - else if (contextEnums && contextEnums.length > 0) { - valid = true; - context = contextEnums[op.operand]; + else if (this.opMeta[src[j]].pops.name === 'zero' && this.opMeta[src[j]].pushes.name !== 'zero') { + let _alias = this.opMeta[src[j]].alias + _stack.push(_alias ? _alias : this.opMeta[src[j]].name) } - // else { - valid = true; - context = `CONTEXT[${op.operand}]`; - } - - if (valid) { - state.stack[_stackIndex] = { - val: context, - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } else { - throw new Error( - `Wrong context value '${op.operand}' given for the context '${this._context}'` - ); + let _alias = this.opMeta[src[j]].alias + _stack.push( + _alias + ? _alias + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` + : this.opMeta[src[j]].name + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` + ) } } - else if (op.name === 'STORAGE') { - // - let storage = ''; - if (this._context === 'sale') { - storage = SaleStorage[op.operand]; - } else if (this._context === 'emissions') { - storage = EmissionsERC20Storage[op.operand]; - } else if (this._context === 'orderbook') { - storage = OrderbookStorage[op.operand]; - } else if (this._context === 'combinetier') { - storage = CombineTierStorage[op.operand]; - } else if (storageEnums && storageEnums.length > 0) { - storage = storageEnums[op.operand]; - } else { - storage = `STORAGE[${op.operand}]` - } - state.stack[_stackIndex] = { - val: storage, - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); + for (let j = 0; j < _stack.length; j++) { + _stack[j] = aliases && aliases[j] + ? `${aliases[j]}: {${_stack[j]}}` + : `Item${j}: {${_stack[j]}}` } - else if (op.pops.name === 'zero' && op.pushes.name === 'one') { - state.stack[_stackIndex] = { - val: op.readableAlias ? op.readableAlias : op.name, - consumed: false, - }; - state.stackIndex = BigNumber.from(_stackIndex).add(1).toNumber(); - } - else if (op.name === 'ZIPMAP') { - this.zipmap(state, op.operand); - } - else { - this.applyOp(state, op); + for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { + let index = Number(Object.keys(_zipmapStack)[j]); + _stack[index] = `${_zipmapStack[index]} {${_stack[index]}}` } - } - - return state.stack - .filter((item) => item.consumed === false) - .map((item) => { - item.consumed = true; - return item.val; - }) - .join(' '); - }; - private static zipmap = (state: State, operand: number) => { - const sourceIndex = operand & 0x07; - const stepSize = (operand >> 3) & 0x03; - const valLength = (operand >> 5) & 0x07; - const amountValues = `${2 ** stepSize}`; - - let tempString = `ZIPMAP_${amountValues}(\n`; - - let tempArr = []; - let leng = state.stack.length - 1; - - for (let i = leng - valLength; i <= leng; i++) { - if (stepSize > 0) { - const divided = this.divideArray(state.stack[i].val, stepSize); - const _value = - typeof divided === 'string' - ? divided - : JSON.stringify(Array.from(divided)).replace(/,/g, ', '); - tempArr.push(_value); - } else { - tempArr.push(state.stack[i].val); - } - - state.stack[i].consumed = true; + _finalStack.push(_stack.join(' ')) + _stack = []; } - tempArr.push(this._eval(state, sourceIndex)); - - tempString += tempArr.map((entry) => ' ' + entry).join(`,\n`); - tempString += `\n)`; - - state.stackIndex = BigNumber.from(state.stackIndex).sub(valLength); - - // Minus 1 becuase the zipmap is not added yet - const baseIndex = BigNumber.from(state.stackIndex).toNumber() - 1; - - // Cleaning the stack - state.stack = this.cleanStack(state.stack, baseIndex); - - state.stack[baseIndex] = { - val: tempString, - consumed: false, - }; + return _finalStack.join(' '); }; - private static applyOp = (state: State, op: OpInfo) => { - const _stackIndex = BigNumber.from(state.stackIndex).toNumber(); - let baseIndex = _stackIndex - op.operand; - let top = _stackIndex - 1; - let tempString = op.readableAlias ? op.readableAlias + '(' : op.name + '('; - let cursor = baseIndex; - let tempArr: any[]; - - let operandFlag = false; - let tierRangeFlag = false; - let selectLteFlag = false; - - if ( - op.enum === AllStandardOps.IERC1155_BALANCE_OF_BATCH || - op.enum === AllStandardOps.IERC1155_BALANCE_OF - ) { - baseIndex = _stackIndex - 1 - (op.operand + 1) * 2; - cursor = baseIndex; - tempArr = [state.stack[cursor].val]; - // - } else if (op.enum === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { - tierRangeFlag = true; - baseIndex = _stackIndex - 2; - cursor = baseIndex; - tempArr = [state.stack[cursor].val]; - // - } - // else if ( - // // op.enum === AllStandardOps.SCALE18_DIV || - // // op.enum === AllStandardOps.SCALE18_MUL - // op.pops.name === 'two' - // ) { - // const _stackLength = this.identifyZipmap(state.stack, 2); - - // // At least one zipmap was found to fll all the required stack from MIN - // if (_stackLength !== -1) { - // baseIndex = _stackIndex - _stackLength; - // } - // // Since no zipmap was found, the stack could fill the the stack required - // else { - // baseIndex = _stackIndex - 2; - // } - - // cursor = baseIndex; - // tempArr = [state.stack[cursor].val + '*10**18']; - // // - // } - else if (op.enum === AllStandardOps.EAGER_IF) { - const _stackLength = this.identifyZipmap(state.stack, 3); - - // At least one zipmap was found to fll all the required stack from MIN - if (_stackLength !== -1) { - baseIndex = _stackIndex - _stackLength; - } - // Since no zipmap was found, the stack could fill the the stack required - else { - baseIndex = _stackIndex - 3; - } - - cursor = baseIndex; - tempArr = [state.stack[cursor].val]; - // - } else if ( - // op.enum === AllStandardOps.SCALE18 || - // op.enum === AllStandardOps.ISZERO || - // op.enum === AllStandardOps.IERC20_TOTAL_SUPPLY || - op.pops.name === 'one' || - this.flagOp(op.enum) - ) { - const _stackLength = this.identifyZipmap(state.stack, 1); - - // At least one zipmap was found to fll all the required stack from MIN - if (_stackLength !== -1) { - baseIndex = _stackIndex - _stackLength; - } - // Since no zipmap was found, the stack could fill the the stack required - else { - baseIndex = _stackIndex - 1; - } - - operandFlag = this.flagOp(op.enum); - cursor = baseIndex; - tempArr = [state.stack[cursor].val]; - // - } else if ( - // op.enum === AllStandardOps.GREATER_THAN || - // op.enum === AllStandardOps.LESS_THAN || - // op.enum === AllStandardOps.EQUAL_TO || - // op.enum === AllStandardOps.SATURATING_DIFF || - // op.enum === AllStandardOps.IERC721_OWNER_OF || - // op.enum === AllStandardOps.IERC721_BALANCE_OF || - // op.enum === AllStandardOps.IERC20_BALANCE_OF || - // op.enum === AllStandardOps.ITIERV2_REPORT - op.pops.name === 'two' - ) { - const _stackLength = this.identifyZipmap(state.stack, 2); - - // At least one zipmap was found to fll all the required stack from MIN - if (_stackLength !== -1) { - baseIndex = _stackIndex - _stackLength; - } - // Since no zipmap was found, the stack could fill the the stack required - else { - baseIndex = _stackIndex - 2; - } - - cursor = baseIndex; - tempArr = - op.enum === AllStandardOps.SCALE18_DIV || - op.enum === AllStandardOps.SCALE18_MUL - ? [state.stack[cursor].val + '*10**18'] - : [state.stack[cursor].val]; - // - } else if (op.enum === AllStandardOps.SELECT_LTE) { - const _stackLength = this.identifyZipmap(state.stack, 3); - - // At least one zipmap was found to fll all the required stack from MIN - if (_stackLength !== -1) { - baseIndex = _stackIndex - _stackLength; - } - // Since no zipmap was found, the stack could fill the the stack required - else { - baseIndex = _stackIndex - 3; - } - - selectLteFlag = true; - cursor = baseIndex; - tempArr = []; - } else if ( - // op.enum === AllStandardOps.MIN || - // op.enum === AllStandardOps.MAX || - // op.enum === AllStandardOps.ADD || - // op.enum === AllStandardOps.SUB || - // op.enum === AllStandardOps.MUL || - // op.enum === AllStandardOps.DIV || - // op.enum === AllStandardOps.SATURATING_ADD || - // op.enum === AllStandardOps.SATURATING_SUB || - // op.enum === AllStandardOps.SATURATING_MUL - op.pops.name === 'oprnd' - ) { - const operand = this.identifyZipmap(state.stack, op.operand); - - // At least one zipmap was found to fll all the required stack from MIN - if (operand !== -1) { - baseIndex = _stackIndex - operand; - } - // Since no zipmap was found, the stack could fill the the stack required - else if (_stackIndex >= op.operand) { - baseIndex = _stackIndex - op.operand; - } - // All the stack should fill the requiremnte (?) - else { - baseIndex = 0; - } - cursor = baseIndex; - tempArr = [state.stack[cursor].val]; - } else { - const _stackLength = this.identifyZipmap(state.stack, op.pops(op.enum, op.operand)); - - // At least one zipmap was found to fll all the required stack from MIN - if (_stackLength !== -1) { - baseIndex = _stackIndex - _stackLength; - } - // Since no zipmap was found, the stack could fill the the stack required - else { - baseIndex = _stackIndex - op.pops(op.enum, op.operand); - } - - cursor = baseIndex; - tempArr = [state.stack[cursor].val]; - // - } - // else { - // tempArr = [state.stack[cursor].val]; - // } - - state.stack[cursor].consumed = true; - - while (cursor < top || operandFlag || tierRangeFlag || selectLteFlag) { - cursor++; - if (selectLteFlag) { - const logic_ = op.operand >> 7; - const mode_ = (op.operand >> 5) & 0x3; - const reportsLength_ = op.operand & 0x1f; - let selectLteText = 'Invalid selectLte'; - if ((logic_ === 0 || logic_ === 1) && mode_ >= 0 && mode_ <= 2) { - selectLteText = `${selectLteLogic[logic_]}, ${selectLteMode[mode_]}, ${reportsLength_}`; - } - tempArr.push(selectLteText); - selectLteFlag = false; - cursor -= 2; - } else if (operandFlag) { - tempArr.push(this.getSigned8(op.operand)); - operandFlag = false; - } else if (tierRangeFlag) { - const [_start, _end] = this.tierRangeFromOp(op.operand); - let range = 'Invalid Range'; - if (_end > _start) { - range = `(${_start}, ${_end})`; - } else { - range = `(${_end})`; - } - tempArr.push(range); - tierRangeFlag = false; - cursor--; - } else { - tempArr.push(state.stack[cursor].val); - state.stack[cursor].consumed = true; - } - } - tempString += tempArr.join(', '); - tempString += ')'; - state.stack[baseIndex] = { - val: tempString, - consumed: false, - }; - state.stackIndex = baseIndex + 1; - - // Cleaning the stack - state.stack = this.cleanStack(state.stack, state.stackIndex); - }; - - private static flagOp(_a: number) { - const spcOpces = [AllStandardOps.SCALE_BY, AllStandardOps.SCALEN]; - return spcOpces.includes(_a); - } - - private static pairs = (arr: BytesLike): Pair[] => { - const _arr = Array.from(arrayify(arr)); - const pairs: Pair[] = []; - for (let i = 0; i < arr.length; i += 2) { - pairs.push(_arr.slice(i, i + 2) as Pair); - } - return pairs; - }; - - private static divideArray = ( - arr: Uint8Array | string | BigNumber, - times: number - ): (number | string)[] | string => { - if (arr.constructor === Uint8Array) { - let n = arr.length; - for (let i = 0; i < times; i++) { - n = n / 2; - } - return Array.from(arr.filter((_, i) => i % n === n - 1)); - } else { - try { - /** - * If it's not an Uint8Array, then it's an possible HexString or BigNumber comming from constants. - * Mostly these cases should come from reports. Raise an issue on repo if you see any error. - */ - BigNumber.from(arr); - - const _eachLength = (32 / 2 ** times) * 2; - const regex = new RegExp(`.{1,${_eachLength}}`, 'g'); - let value = paddedUInt256(BigNumber.from(arr)); - - return value.slice(2).match(regex)!; - } catch (e) { - // If fail, we just return the value normally as string - return arr.toString(); - } - } - }; - - private static getSigned8(_value: number): number { - if ((_value & 0x80) > 0) { - _value = _value - 0x100; - } - return _value; - } - - private static tierRangeFromOp(_op: number): [number, number] { - const startTier_ = _op & 0x0f; - const endTier_ = (_op >> 4) & 0x0f; - return [startTier_, endTier_]; - } - private static needIndent(text: string, index: number, max: number): boolean { const openRef = text[index]; const closeRef = openRef === '(' ? ')' : ']'; @@ -820,54 +340,4 @@ export class HumanFriendlyRead { } return true; } - - private static cleanStack( - _stack: Stack[], - length: number - ): { val: any; consumed: boolean }[] { - let j = 0; - let k = 0; - let _newStack: { val: any; consumed: boolean }[] = []; - while (j < length) { - if (!_stack[k].consumed || (_stack[k].consumed && _stack[k].wasDup)) { - _newStack[j] = _stack[k]; - j++; - } - k++; - } - return _newStack; - } - - private static identifyZipmap( - _stack: { val: any; consumed: boolean }[], - stackToRead: number - ): number { - if (stackToRead <= 0) { - return -1; - } - let zipmapCounter = 0; - let _stackReturn = stackToRead; - let i = _stack.length - 1; - - while (i >= 0 && _stack.length - i <= _stackReturn) { - const _text: string = _stack[i].val.toString(); - if (_text.slice(0, 6) === 'ZIPMAP') { - zipmapCounter++; - const _zipmapStack = parseInt(_text.slice(7, 8)); - _stackReturn -= _zipmapStack; - } - i--; - } - return _stackReturn === stackToRead ? -1 : _stackReturn + zipmapCounter; - } -} - -/** - * Check the operand agains the length of the EnumContext to see if it's valid - * @param _operand - Operand to check - * @param _length - The length in the enum Context - */ -function isValidContext(_operand: number, _length: number): boolean { - if (_operand >= 0 && _operand < _length) return true; - return false; } diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index d46be7e..84decd1 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -88,10 +88,10 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 return (operand * 2) + 1; } if (opcode === AllStandardOps.ITIERV2_REPORT) { - return operand + 1; + return operand + 2; } if (opcode === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { - return operand + 2; + return operand + 3; } else return NaN; }, @@ -114,7 +114,7 @@ export interface IOpMeta extends Record { pops: (opcode: number, operand: number) => number; jsvmfn: OpJSVM; description?: string; - readableAlias?: string + alias?: string } /** @@ -296,7 +296,7 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.zero, jsvmfn: OpBlockNumber, - readableAlias: 'CURRENT_BLOCK' + alias: 'CURRENT_BLOCK' } ], [ @@ -308,7 +308,7 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.zero, jsvmfn: OpCaller, - readableAlias: 'SENDER()' + alias: 'SENDER()' } ], [ @@ -320,7 +320,7 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.zero, jsvmfn: OpThisAddress, - readableAlias: 'THIS_ADDRESS()' + alias: 'THIS_ADDRESS()' } ], [ @@ -332,7 +332,7 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.zero, jsvmfn: OpTimestamp, - readableAlias: 'CURRENT_TIMESTAMP' + alias: 'CURRENT_TIMESTAMP' } ], [ diff --git a/test/9_HumanFriendlyRead.test.ts b/test/9_HumanFriendlyRead.test.ts index 55fbd72..c17798a 100644 --- a/test/9_HumanFriendlyRead.test.ts +++ b/test/9_HumanFriendlyRead.test.ts @@ -1,1923 +1,1923 @@ -import { expect } from 'chai'; -import { ethers } from 'hardhat'; -import { - VM, - utils, - AllStandardOps, - StateConfig, - SaleStorage, - SaleContext, - HumanFriendlyRead, -} from '../src'; -import { arrToReport } from '../src/utils'; -import { - getSigned8, - eighteenZeros, - sixZeros, - max_uint256, - Time, - RESERVE_ONE, - ONE, - arg, - deployErc20, - deployErc721, - deployErc1155, -} from './utils'; - -const { - bytify, - op, - concat, - callSize, - paddedUInt256, - paddedUInt32, - parseUnits, -} = utils; - -const Opcode = AllStandardOps; -const a = true ? 1 : 2; -if (a == 2) { - // -} - -describe('SDK - Human Friendly Read Generator', () => { - it('should generate the human friendly from an exponentiation op source', async () => { - const constants = [5, 2]; - - const vFive = op(Opcode.CONSTANT, 0); - const vTwo = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const source0 = VM.createVMSources([ - vFive, - vTwo, - [Opcode.EXP, 2] - ]); - - const state: StateConfig = { - sources: source0, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.be.eq(`EXP(${constants[0]}, ${constants[1]})`); - }); - - it('should generate the human friendly from a multiplication op source', async () => { - const constants = [4, 3]; - - const vFour = op(Opcode.CONSTANT, 0); - const vThree = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const source0 = VM.createVMSources([ - vFour, - vThree, - [Opcode.MUL, 2], - ]); - - const state: StateConfig = { - sources: source0, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.be.eql(`MUL(${constants[0]}, ${constants[1]})`); - }); - - it('should generate the human friendly from a subtraction op source', async () => { - const constants = [2, 1]; - - const vTwo = op(Opcode.CONSTANT, 0); - const vOne = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const source0 = VM.createVMSources([ - vTwo, - vOne, - [Opcode.SUB, 2] - ]); - - const state: StateConfig = { - sources: source0, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.be.equal(`SUB(${constants[0]}, ${constants[1]})`); - }); - - it('should generate the human friendly from an addition op source', async () => { - const constants = [6, 1]; - - const vSix = op(Opcode.CONSTANT, 0); - const vOne = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const source0 = VM.createVMSources([ - vSix, - vOne, - [Opcode.ADD, 2] - ]); +// import { expect } from 'chai'; +// import { ethers } from 'hardhat'; +// import { +// VM, +// utils, +// AllStandardOps, +// StateConfig, +// SaleStorage, +// SaleContext, +// HumanFriendlyRead, +// } from '../src'; +// import { arrToReport } from '../src/utils'; +// import { +// getSigned8, +// eighteenZeros, +// sixZeros, +// max_uint256, +// Time, +// RESERVE_ONE, +// ONE, +// arg, +// deployErc20, +// deployErc721, +// deployErc1155, +// } from './utils'; + +// const { +// bytify, +// op, +// concat, +// callSize, +// paddedUInt256, +// paddedUInt32, +// parseUnits, +// } = utils; + +// const Opcode = AllStandardOps; +// const a = true ? 1 : 2; +// if (a == 2) { +// // +// } + +// describe('SDK - Human Friendly Read Generator', () => { +// it('should generate the human friendly from an exponentiation op source', async () => { +// const constants = [5, 2]; + +// const vFive = op(Opcode.CONSTANT, 0); +// const vTwo = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// vFive, +// vTwo, +// [Opcode.EXP, 2] +// ]); + +// const state: StateConfig = { +// sources: source0, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.be.eq(`EXP(${constants[0]}, ${constants[1]})`); +// }); + +// it('should generate the human friendly from a multiplication op source', async () => { +// const constants = [4, 3]; + +// const vFour = op(Opcode.CONSTANT, 0); +// const vThree = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// vFour, +// vThree, +// [Opcode.MUL, 2], +// ]); + +// const state: StateConfig = { +// sources: source0, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.be.eql(`MUL(${constants[0]}, ${constants[1]})`); +// }); + +// it('should generate the human friendly from a subtraction op source', async () => { +// const constants = [2, 1]; + +// const vTwo = op(Opcode.CONSTANT, 0); +// const vOne = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// vTwo, +// vOne, +// [Opcode.SUB, 2] +// ]); + +// const state: StateConfig = { +// sources: source0, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.be.equal(`SUB(${constants[0]}, ${constants[1]})`); +// }); + +// it('should generate the human friendly from an addition op source', async () => { +// const constants = [6, 1]; + +// const vSix = op(Opcode.CONSTANT, 0); +// const vOne = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// vSix, +// vOne, +// [Opcode.ADD, 2] +// ]); - const state: StateConfig = { - sources: source0, - constants, - }; +// const state: StateConfig = { +// sources: source0, +// constants, +// }; - const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = HumanFriendlyRead.get(state); - expect(friendly0).to.be.equal(`ADD(${constants[0]}, ${constants[1]})`); - }); +// expect(friendly0).to.be.equal(`ADD(${constants[0]}, ${constants[1]})`); +// }); - it('should generate the human friendly from an arbitrary fixed point number DOWN by scale N', async () => { - const value1 = ethers.BigNumber.from(1 + sixZeros); - const n = 0xfc; // -4 +// it('should generate the human friendly from an arbitrary fixed point number DOWN by scale N', async () => { +// const value1 = ethers.BigNumber.from(1 + sixZeros); +// const n = 0xfc; // -4 - const constants = [value1]; - const v1 = op(Opcode.CONSTANT, 0); +// const constants = [value1]; +// const v1 = op(Opcode.CONSTANT, 0); - // prettier-ignore - const sources = VM.createVMSources([ - v1, - op(Opcode.SCALE_BY, n) - ]); +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// op(Opcode.SCALE_BY, n) +// ]); - const state: StateConfig = { - sources, - constants, - }; +// const state: StateConfig = { +// sources, +// constants, +// }; - const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = HumanFriendlyRead.get(state); - expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); - }); +// expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); +// }); - it('should generate the human friendly from an arbitrary fixed point number UP by scale N', async () => { - const value1 = ethers.BigNumber.from(1 + sixZeros); - const n = 0x04; // -4 +// it('should generate the human friendly from an arbitrary fixed point number UP by scale N', async () => { +// const value1 = ethers.BigNumber.from(1 + sixZeros); +// const n = 0x04; // -4 - const constants = [value1]; - const v1 = op(Opcode.CONSTANT, 0); +// const constants = [value1]; +// const v1 = op(Opcode.CONSTANT, 0); - // prettier-ignore - const sources = VM.createVMSources([ - v1, - op(Opcode.SCALE_BY, n) - ]); +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// op(Opcode.SCALE_BY, n) +// ]); - const state: StateConfig = { - sources, - constants, - }; +// const state: StateConfig = { +// sources, +// constants, +// }; - const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = HumanFriendlyRead.get(state); - expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); - }); +// expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); +// }); - it('should generate the human friendly from scale an 18 OOMs number UP to scale N', async () => { - const value1 = ethers.BigNumber.from(1 + eighteenZeros); - const n = 20; +// it('should generate the human friendly from scale an 18 OOMs number UP to scale N', async () => { +// const value1 = ethers.BigNumber.from(1 + eighteenZeros); +// const n = 20; - const constants = [value1]; - const v1 = op(Opcode.CONSTANT, 0); +// const constants = [value1]; +// const v1 = op(Opcode.CONSTANT, 0); - // prettier-ignore - const sources = VM.createVMSources([ - v1, - op(Opcode.SCALEN, n) - ]); +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// op(Opcode.SCALEN, n) +// ]); - const state: StateConfig = { - sources, - constants, - }; +// const state: StateConfig = { +// sources, +// constants, +// }; - const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = HumanFriendlyRead.get(state); - expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); - }); +// expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); +// }); - it('should generate the human friendly from scale an 18 OOMs number DOWN to scale N', async () => { - const value1 = ethers.BigNumber.from(1 + eighteenZeros); - const n = 6; +// it('should generate the human friendly from scale an 18 OOMs number DOWN to scale N', async () => { +// const value1 = ethers.BigNumber.from(1 + eighteenZeros); +// const n = 6; - const constants = [value1]; - const v1 = op(Opcode.CONSTANT, 0); - - // prettier-ignore - const sources = VM.createVMSources([ - v1, - op(Opcode.SCALEN, n) - ]); - - const state: StateConfig = { - sources, - constants, - }; +// const constants = [value1]; +// const v1 = op(Opcode.CONSTANT, 0); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// op(Opcode.SCALEN, n) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; - const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = HumanFriendlyRead.get(state); - expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); - }); +// expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); +// }); - it('should generate the human friendly from scale a number by 18 OOM while dividing', async () => { - const value1 = 50; - const value2 = 3; +// it('should generate the human friendly from scale a number by 18 OOM while dividing', async () => { +// const value1 = 50; +// const value2 = 3; - const constants = [value1, value2]; - const v1 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); +// const constants = [value1, value2]; +// const v1 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); - // prettier-ignore - const sources = VM.createVMSources([ - v1, - v2, - op(Opcode.SCALE18_DIV) - ]); - - const state: StateConfig = { - sources, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.be.equal(`SCALE18_DIV(${value1}*10**18, ${value2})`); - }); - - it('should generate the human friendly from scale a number by 18 OOM while multiplying', async () => { - const value1 = 1; - const value2 = 2; - - const constants = [value1, value2]; - const v1 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const sources = VM.createVMSources([ - v1, - v2, - op(Opcode.SCALE18_MUL) - ]); - - const state: StateConfig = { - sources, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.be.equal(`SCALE18_MUL(${value1}*10**18, ${value2})`); - }); - - it('should generate the human friendly from scale a number by 18 OOM in situ', async () => { - const value = 1; - - const constants = [value]; - const v1 = op(Opcode.CONSTANT, 0); - - // prettier-ignore - const sources = VM.createVMSources([ - v1, - op(Opcode.SCALE18) - ]); - - const state: StateConfig = { - sources, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.be.equal(`SCALE18(${value})`); - }); - - it('should generate the human friendly from logic ops within a zipmap loop', async () => { - const report = paddedUInt256( - ethers.BigNumber.from( - '0x' + - paddedUInt32(1) + - paddedUInt32(0) + - paddedUInt32(3) + - paddedUInt32(0) + - paddedUInt32(5) + - paddedUInt32(0) + - paddedUInt32(7) + - paddedUInt32(8) - ) - ); - - const reportMax = max_uint256; - - const constants = [report, reportMax]; - - const vReport = op(Opcode.CONSTANT, 0); - const vReportMax = op(Opcode.CONSTANT, 1); - - // BEGIN zipmap args - - const argReport = op(Opcode.CONSTANT, arg(0)); - const argReportMax = op(Opcode.CONSTANT, arg(1)); - - // END zipmap args - - // prettier-ignore - const ZIPMAP_FN = () => - concat([ - argReport, - op(Opcode.ISZERO), - argReportMax, - argReport, - op(Opcode.EAGER_IF), - ]); - - // prettier-ignore - const SOURCE = () => - concat([ - vReport, - vReportMax, - op(Opcode.ZIPMAP, callSize(1, 3, 1)), - ]); - - const state: StateConfig = { - // sources: [SOURCE()], - sources: [SOURCE(), ZIPMAP_FN()], - constants, - }; - // 0x/00000001.00000000.00000003.00000000.00000005.00000000.00000007.00000008 - - const friendly0 = HumanFriendlyRead.get(state); - - expect(friendly0).to.eq(`ZIPMAP_8( - ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], - ["ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff"], - EAGER_IF(ISZERO(^0), ^1, ^0) -)`); - }); - - it('should check whether any value in a list is non-zero', async () => { - const constants = [0, 1, 2, 3]; - - const v0 = op(Opcode.CONSTANT, 0); - const v1 = op(Opcode.CONSTANT, 1); - const v2 = op(Opcode.CONSTANT, 2); - const v3 = op(Opcode.CONSTANT, 3); - - // prettier-ignore - const source0 = VM.createVMSources([ - v1, - v2, - v3, - op(Opcode.ANY, 3), - ]); - - const state0: StateConfig = { - sources: source0, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`ANY(1, 2, 3)`); - - // prettier-ignore - const source1 = concat([ - v0, - v0, - op(Opcode.ANY, 2), - ]); - - const state1: StateConfig = { - sources: [source1], - constants, - }; - - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`ANY(0, 0)`); - - // prettier-ignore - const source2 = concat([ - v0, - v0, - v3, - op(Opcode.ANY, 3), - ]); - - const state2: StateConfig = { - sources: [source2], - constants, - }; - - const friendly2 = HumanFriendlyRead.get(state2); - expect(friendly2).to.be.equals(`ANY(0, 0, 3)`); - }); - - it('should check whether every value in a list is non-zero', async () => { - const constants = [0, 1, 2, 3]; - - const v0 = op(Opcode.CONSTANT, 0); - const v1 = op(Opcode.CONSTANT, 1); - const v2 = op(Opcode.CONSTANT, 2); - const v3 = op(Opcode.CONSTANT, 3); - - // prettier-ignore - const source0 = concat([ - v1, - v2, - v3, - op(Opcode.EVERY, 3), - ]); - - const state0: StateConfig = { - sources: [source0], - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`EVERY(1, 2, 3)`); - - // prettier-ignore - const source1 = concat([ - v0, - v1, - v2, - op(Opcode.EVERY, 3), - ]); - - const state1: StateConfig = { - sources: [source1], - constants, - }; - - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`EVERY(0, 1, 2)`); - - // prettier-ignore - const source2 = concat([ - v0, - v3, - op(Opcode.EVERY, 2), - ]); - - const state2: StateConfig = { - sources: [source2], - constants, - }; - - const friendly2 = HumanFriendlyRead.get(state2); - expect(friendly2).to.be.equals(`EVERY(0, 3)`); - }); - - it("should perform ternary 'eager if' operation on 3 values on the stack", async () => { - const constants = [0, 1, 2, 3]; - - const v0 = op(Opcode.CONSTANT, 0); - const v1 = op(Opcode.CONSTANT, 1); - const v2 = op(Opcode.CONSTANT, 2); - const v3 = op(Opcode.CONSTANT, 3); - - // prettier-ignore - const source0 = concat([ - // 1 ? 2 : 3 - v1, - v2, - v3, - op(Opcode.EAGER_IF), - ]); - - const state0: StateConfig = { - sources: [source0], - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`EAGER_IF(1, 2, 3)`); - - // prettier-ignore - const source1 = concat([ - // 2 ? 2 : 3 - v2, - v2, - v3, - op(Opcode.EAGER_IF), - ]); - - const state1: StateConfig = { - sources: [source1], - constants, - }; - - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`EAGER_IF(2, 2, 3)`); - - // prettier-ignore - const source2 = concat([ - // 2 ? 2 : 3 - v0, - v2, - v3, - op(Opcode.EAGER_IF), - ]); - - const state2: StateConfig = { - sources: [source2], - constants, - }; - - const friendly2 = HumanFriendlyRead.get(state2); - expect(friendly2).to.be.equals(`EAGER_IF(0, 2, 3)`); - }); - - it('should check that value is greater than another value', async () => { - const constants = [1, 2]; - - // prettier-ignore - const source0 = VM.createVMSources([ - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.CONSTANT, 0), // 1 - op(Opcode.GREATER_THAN), - ]); - - const state0: StateConfig = { - sources: source0, - constants, - }; - - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`GREATER_THAN(2, 1)`); - - // prettier-ignore - const source1 = VM.createVMSources([ - op(Opcode.CONSTANT, 0), // 1 - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.GREATER_THAN), - ]); - - const state1: StateConfig = { - sources: source1, - constants, - }; - - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`GREATER_THAN(1, 2)`); - }); - - it('should check that value is less than another value', async () => { - const constants = [1, 2]; - - // prettier-ignore - const source0 = VM.createVMSources([ - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.CONSTANT, 0), // 1 - op(Opcode.LESS_THAN), - ]); - - const state0: StateConfig = { - sources: source0, - constants, - }; - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`LESS_THAN(2, 1)`); - - // prettier-ignore - const source1 = VM.createVMSources([ - op(Opcode.CONSTANT, 0), // 1 - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.LESS_THAN), - ]); - - const state1: StateConfig = { - sources: source1, - constants, - }; - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`LESS_THAN(1, 2)`); - }); - - it('should check that values are equal to each other', async () => { - const constants = [1, 2]; - - // prettier-ignore - const source0 = VM.createVMSources([ - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.EQUAL_TO), - ]); - - const state0: StateConfig = { - sources: source0, - constants, - }; - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`EQUAL_TO(2, 2)`); - - // prettier-ignore - const source1 = VM.createVMSources([ - op(Opcode.CONSTANT, 0), // 1 - op(Opcode.CONSTANT, 1), // 2 - op(Opcode.EQUAL_TO), - ]); - - const state1: StateConfig = { - sources: source1, - constants, - }; - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`EQUAL_TO(1, 2)`); - }); - - it('should check that a value is zero', async () => { - const constants = [0, 1]; - - // prettier-ignore - const source0 = VM.createVMSources([ - op(Opcode.CONSTANT, 0), - op(Opcode.ISZERO), - ]); - - const state0: StateConfig = { - sources: source0, - constants, - }; - const friendly0 = HumanFriendlyRead.get(state0); - expect(friendly0).to.be.equals(`ISZERO(0)`); - - // prettier-ignore - const source1 = VM.createVMSources([ - op(Opcode.CONSTANT, 1), - op(Opcode.ISZERO), - ]); - - const state1: StateConfig = { - sources: source1, - constants, - }; - const friendly1 = HumanFriendlyRead.get(state1); - expect(friendly1).to.be.equals(`ISZERO(1)`); - }); - - it('should return block.number and block.timestamp', () => { - const constants: number[] = []; - - const source0 = VM.createVMSources([ - // (BLOCK_NUMBER) - [Opcode.BLOCK_NUMBER], - ]); - - const state0: StateConfig = { - sources: source0, - constants, - }; - const friendly0 = HumanFriendlyRead.get(state0); - - expect(friendly0).to.eq('CURRENT_BLOCK'); - - const source1 = VM.createVMSources([ - // (BLOCK_TIMESTAMP) - [Opcode.BLOCK_TIMESTAMP], - ]); - - const state1: StateConfig = { - sources: source1, - constants, - }; - const friendly1 = HumanFriendlyRead.get(state1); - - expect(friendly1).to.eq('CURRENT_TIMESTAMP'); - }); - - it('should return correct remainder when using modulo op on sequence of numbers', () => { - const constants = [7, 4, 2]; - const v7 = op(Opcode.CONSTANT, 0); - const v4 = op(Opcode.CONSTANT, 1); - const v2 = op(Opcode.CONSTANT, 2); - - // prettier-ignore - const sources = VM.createVMSources([ - // (7 4 2 %) - v7, - v4, // -> r3 - v2, // -> r1 - op(Opcode.MOD, 3), - ]); - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('MOD(7, 4, 2)'); - }); - - it('should perform exponentiation on a sequence of numbers', () => { - const constants = [2, 4, 3]; - const v2 = op(Opcode.CONSTANT, 0); - const v4 = op(Opcode.CONSTANT, 1); - const v3 = op(Opcode.CONSTANT, 2); - - // prettier-ignore - const sources = VM.createVMSources([ - // (2 4 3 ^) - v2, - v4, - v3, - [Opcode.EXP, 3], - ]); - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('EXP(2, 4, 3)'); - }); - - it('should return the maximum of a sequence of numbers', () => { - const constants = [33, 11, 22]; - const v33 = op(Opcode.CONSTANT, 0); - const v11 = op(Opcode.CONSTANT, 1); - const v22 = op(Opcode.CONSTANT, 2); - - // prettier-ignore - const source = VM.createVMSources([ - // (22 11 33 max) - v22, - v11, - v33, - [Opcode.MAX, 3], - ]); - - const state: StateConfig = { - sources: source, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('MAX(22, 11, 33)'); - }); - - it('should return the minimum of a sequence of numbers', () => { - const constants = [33, 11, 22]; - const v33 = op(Opcode.CONSTANT, 0); - const v11 = op(Opcode.CONSTANT, 1); - const v22 = op(Opcode.CONSTANT, 2); - - // prettier-ignore - const source = VM.createVMSources([ - // (22 11 33 min) - v22, - v11, - v33, - [Opcode.MIN, 3], - ]); - - const state: StateConfig = { - sources: source, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('MIN(22, 11, 33)'); - }); - - it('should run a basic program (return current block number)', () => { - const constants: Array = []; - - // prettier-ignore - const source = VM.createVMSources([ - [Opcode.BLOCK_NUMBER] - ]); - - const state: StateConfig = { - sources: source, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('CURRENT_BLOCK'); - }); - - it('should handle a zipmap which loops 4 times', () => { - // The following 3 variables use zero-based counting. - - // Which index in `sources` array to use as our inner function to ZIPMAP. - const sourceIndex = 1; - - // Number of times to 'break up' our uint256 constants into a concatenated array of 'sub-constants'. - // In this case, we subdivide a constant 4 times, so we are left with 8 uint32 'sub-constants' concatenated together. - const loopSize = 3; - - // Number of constants to zip together. Here we are zipping 2 constants together. Hence, our inner function will - // accept 2 arguments at a time (arg0, arg1), which will be the sub-constants of the respective constants. - const valSize = 1; - - // Size of each 'sub-constant' in bytes, which can be determined by how many times we broke up our uint256. In this case we have 32-bit unsigned integers. - const valBytes = 32 / Math.pow(2, loopSize); - - // prettier-ignore - const constants = [ // a.k.a. 'vals' - concat([ // constant0 -> an array of sub-constants - bytify(1, valBytes), - bytify(2, valBytes), - bytify(3, valBytes), - bytify(4, valBytes), - bytify(5, valBytes), - bytify(6, valBytes), - bytify(7, valBytes), - bytify(8, valBytes), - ]), - concat([ // constant1 -> an array of sub-constants - bytify(10, valBytes), - bytify(20, valBytes), - bytify(30, valBytes), - bytify(40, valBytes), - bytify(50, valBytes), - bytify(60, valBytes), - bytify(70, valBytes), - bytify(80, valBytes), - ]), - ]; - - // prettier-ignore - const sources = [ - VM.createVMSources([ - // sourceIndex === 0 (main source) - [Opcode.CONSTANT, 0], // val0 - [Opcode.CONSTANT, 1], // val1 - [Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)], - ])[0], - VM.createVMSources([ - // sourceIndex === 1 (inner ZIPMAP function) - // (arg0 arg1 mul) (arg0 arg1 add) - [Opcode.CONSTANT, arg(0)], - [Opcode.CONSTANT, arg(1)], - [Opcode.MUL, 2], - [Opcode.CONSTANT, arg(0)], - [Opcode.CONSTANT, arg(1)], - [Opcode.ADD, 2], - ])[0], - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq(`ZIPMAP_8( - [1, 2, 3, 4, 5, 6, 7, 8], - [10, 20, 30, 40, 50, 60, 70, 80], - MUL(^0, ^1) ADD(^0, ^1) -)`); - }); - - it('should handle a zipmap which loops twice', () => { - // zero-based counting - const sourceIndex = 1; - const loopSize = 1; - const valSize = 2; - - const valBytes = 32 / Math.pow(2, loopSize); // 128-bit unsigned - - const constants = [ - concat([bytify(3, valBytes), bytify(1, valBytes)]), - concat([bytify(4, valBytes), bytify(2, valBytes)]), - concat([bytify(5, valBytes), bytify(3, valBytes)]), - ]; - - const sources = [ - VM.createVMSources([ - op(Opcode.CONSTANT, 2), // val0 - op(Opcode.CONSTANT, 1), // val1 - op(Opcode.CONSTANT, 0), // val2 - op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - ])[0], - VM.createVMSources([ - // (arg0 arg1 arg2 mul) (arg0 arg1 arg2 add) - op(Opcode.CONSTANT, arg(0)), - op(Opcode.CONSTANT, arg(1)), - op(Opcode.CONSTANT, arg(2)), - op(Opcode.MUL, 3), - op(Opcode.CONSTANT, arg(0)), - op(Opcode.CONSTANT, arg(1)), - op(Opcode.CONSTANT, arg(2)), - op(Opcode.ADD, 3), - ])[0], - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq(`ZIPMAP_2( - [5, 3], - [4, 2], - [3, 1], - MUL(^0, ^1, ^2) ADD(^0, ^1, ^2) -)`); - }); - - it('should handle a zipmap op with maxed sourceIndex and valSize', () => { - const constants = [10, 20, 30, 40, 50, 60, 70, 80]; - - const a0 = op(Opcode.CONSTANT, arg(0)); - const a1 = op(Opcode.CONSTANT, arg(1)); - const a2 = op(Opcode.CONSTANT, arg(2)); - const a3 = op(Opcode.CONSTANT, arg(3)); - const a4 = op(Opcode.CONSTANT, arg(4)); - const a5 = op(Opcode.CONSTANT, arg(5)); - const a6 = op(Opcode.CONSTANT, arg(6)); - const a7 = op(Opcode.CONSTANT, arg(7)); - - // zero-based counting - const sourceIndex = 1; - const loopSize = 0; // no subdivision of uint256, normal constants - const valSize = 7; - - const sources = [ - VM.createVMSources([ - op(Opcode.CONSTANT, 0), // val0 - op(Opcode.CONSTANT, 1), // val1 - op(Opcode.CONSTANT, 2), // val2 - op(Opcode.CONSTANT, 3), // val3 - op(Opcode.CONSTANT, 4), // val4 - op(Opcode.CONSTANT, 5), // val5 - op(Opcode.CONSTANT, 6), // val6 - op(Opcode.CONSTANT, 7), // val7 - op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - ])[0], - VM.createVMSources([ - // (arg0 arg1 arg2 ... add) (arg0 arg1 arg2 ... add) - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - op(Opcode.ADD, 32), // max no. items - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - a0, - a1, - a2, - a3, - a4, - a5, - a6, - a7, - a0, - a1, - a2, - a3, - a4, - a5, - op(Opcode.ADD, 30), - ])[0], - ]; - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq(`ZIPMAP_1( - 10, - 20, - 30, - 40, - 50, - 60, - 70, - 80, - ADD(^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7) ADD(^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5) -)`); - }); - - it('should handle a zipmap op which runs multiple functions (across multiple fn vals)', () => { - const constants = [1, 2, 3]; - const v0 = op(Opcode.CONSTANT, 0); - const v1 = op(Opcode.CONSTANT, 1); - const v2 = op(Opcode.CONSTANT, 2); - - const a0 = op(Opcode.CONSTANT, arg(0)); - const a1 = op(Opcode.CONSTANT, arg(1)); - const a2 = op(Opcode.CONSTANT, arg(2)); - - // zero-based counting - const sourceIndex = 1; - const loopSize = 0; - const valSize = 2; - - const sources = [ - VM.createVMSources([ - v0, - v1, - v2, - op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - ])[0], - VM.createVMSources([ - // (arg0 arg1 arg2 mul) (arg1 arg2 arg0 arg1 arg2 ... add) - a0, - a1, - a2, - op(Opcode.MUL, 3), - a1, - a2, - a0, - a1, - a2, - a0, - a1, - a2, - a0, - a1, - a2, - a0, - a1, - a2, - op(Opcode.ADD, 14), - ])[0], - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq(`ZIPMAP_1( - 1, - 2, - 3, - MUL(^0, ^1, ^2) ADD(^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2) -)`); - }); - - it('should handle a zipmap op which runs multiple functions (using single inner zipmap function source)', () => { - const constants = [3, 4, 5]; - const v3 = op(Opcode.CONSTANT, 0); - const v4 = op(Opcode.CONSTANT, 1); - const v5 = op(Opcode.CONSTANT, 2); - - const a0 = op(Opcode.CONSTANT, arg(0)); - const a1 = op(Opcode.CONSTANT, arg(1)); - const a2 = op(Opcode.CONSTANT, arg(2)); - - // zero-based counting - const sourceIndex = 1; - const loopSize = 0; - const valSize = 2; - - const sources = [ - concat([ - v3, - v4, - v5, - op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - ]), - concat([ - // inner zipmap function source - // (arg0 arg1 arg2 mul) (arg0 arg1 ar2 add) - a0, - a1, - a2, - op(Opcode.MUL, 3), - a0, - a1, - a2, - op(Opcode.ADD, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq(`ZIPMAP_1( - 3, - 4, - 5, - MUL(^0, ^1, ^2) ADD(^0, ^1, ^2) -)`); - }); - - it('should handle a simple call op', () => { - const constants = [1, 2, 3]; - const v1 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); - const v3 = op(Opcode.CONSTANT, 2); - - const a0 = op(Opcode.CONSTANT, arg(0)); - const a1 = op(Opcode.CONSTANT, arg(1)); - const a2 = op(Opcode.CONSTANT, arg(2)); - - // zero-based counting - const sourceIndex = 1; // 1 - const loopSize = 0; // 1 - const valSize = 2; // 3 - - const sources = [ - concat([ - v1, - v2, - v3, - op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), - ]), - concat([ - // (arg0 arg1 arg2 add) - a0, - a1, - a2, - op(Opcode.ADD, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq(`ZIPMAP_1( - 1, - 2, - 3, - ADD(^0, ^1, ^2) -)`); - }); - - it('should perform a calculation using the block number as a value', () => { - const constants = [1, 2, 3, 4, 6]; - - const one = op(Opcode.CONSTANT, 0); - const two = op(Opcode.CONSTANT, 1); - const three = op(Opcode.CONSTANT, 2); - const four = op(Opcode.CONSTANT, 3); - const six = op(Opcode.CONSTANT, 4); - - const sources = [ - concat([ - // (BLOCK_NUMBER (6 3 /) (3 4 (2 1 -) +) *) - op(Opcode.BLOCK_NUMBER), - six, - three, - op(Opcode.DIV, 2), - three, - four, - two, - one, - op(Opcode.SUB, 2), - op(Opcode.ADD, 3), - op(Opcode.MUL, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq( - 'MUL(CURRENT_BLOCK, DIV(6, 3), ADD(3, 4, SUB(2, 1)))' - ); - }); - - it('should calculate a mathematical expression (division, product, summation)', () => { - const constants = [2, 3]; - const v2 = op(Opcode.CONSTANT, 0); - const v3 = op(Opcode.CONSTANT, 1); - - const sources = [ - concat([ - // (((2 2 2 +) 3 *) 2 3 /) - v2, - v2, - v2, - op(Opcode.ADD, 3), - v3, - op(Opcode.MUL, 2), - v2, - v3, - op(Opcode.DIV, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('DIV(MUL(ADD(2, 2, 2), 3), 2, 3)'); - }); - - it('should return remainder of dividing an initial number by the product of a sequence of numbers', () => { - const constants = [3, 2, 13]; - const v3 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); - const v13 = op(Opcode.CONSTANT, 2); - - const sources = [ - concat([ - // (13 2 3 %) - v13, - v2, - v3, - op(Opcode.MOD, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('MOD(13, 2, 3)'); - }); - - it('should divide an initial number by the product of a sequence of numbers', () => { - const constants = [3, 2, 12]; - const v3 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); - const v12 = op(Opcode.CONSTANT, 2); - - const sources = [ - concat([ - // (12 2 3 /) - v12, - v2, - v3, - op(Opcode.DIV, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('DIV(12, 2, 3)'); - }); - - it('should multiply a sequence of numbers together', () => { - const constants = [5, 4, 3]; - const v5 = op(Opcode.CONSTANT, 0); - const v4 = op(Opcode.CONSTANT, 1); - const v3 = op(Opcode.CONSTANT, 2); - - const sources = [ - concat([ - // (3 4 5 *) - v3, - v4, - v5, - op(Opcode.MUL, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('MUL(3, 4, 5)'); - }); - - it('should subtract a sequence of numbers from an initial number', () => { - const constants = [3, 2, 10]; - const v3 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); - const v10 = op(Opcode.CONSTANT, 2); - - const sources = [ - concat([ - // (10 2 3 -) - v10, - v2, - v3, - op(Opcode.SUB, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('SUB(10, 2, 3)'); - }); - - it('should add a sequence of numbers together', () => { - const constants = [3, 2, 1]; - const v3 = op(Opcode.CONSTANT, 0); - const v2 = op(Opcode.CONSTANT, 1); - const v1 = op(Opcode.CONSTANT, 2); - - const sources = [ - concat([ - // (1 2 3 +) - v1, - v2, - v3, - op(Opcode.ADD, 3), - ]), - ]; - - const state: StateConfig = { - sources: sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.eq('ADD(1, 2, 3)'); - }); - - it('should use saturating sub for diff where only some tiers would underflow', async () => { - const constants0 = [ - // 0x01000000020000000300000004000000050000000600000007 - arrToReport([0, 1, 2, 3, 4, 5, 6, 7]), - // 0x0200000000000000040000000000000006000000000000000800000000 - arrToReport([2, 0, 4, 0, 6, 0, 8, 0]), - ]; - - const vReport0 = op(Opcode.CONSTANT, 0); - const vReport1 = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const source0 = VM.createVMSources([ - vReport0, - vReport1, - op(Opcode.SATURATING_DIFF), - ]); - - const state: StateConfig = { - sources: source0, - constants: constants0, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal( - `SATURATING_DIFF(${constants0[0]}, ${constants0[1]})` - ); - }); - - it('should return ERC1155 batch balance result for multiple signers', async () => { - const [signer1, signer2] = await ethers.getSigners(); - const tokenERC1155 = await deployErc1155(); - - const tokenId = 0; - const length = 2; - - const constants = [ - signer1.address, - signer2.address, - tokenERC1155.address, - tokenId, - ]; - const vSigner1 = op(Opcode.CONSTANT, 0); - const vSigner2 = op(Opcode.CONSTANT, 1); - const vTokenAddr = op(Opcode.CONSTANT, 2); - const vTokenId = op(Opcode.CONSTANT, 3); - - // prettier-ignore - const sources = VM.createVMSources([ - vTokenAddr, - vSigner1, - vSigner2, - vTokenId, - vTokenId, - op(Opcode.IERC1155_BALANCE_OF_BATCH, length - 1) - ]); - - const state: StateConfig = { - sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal( - `IERC1155_BALANCE_OF_BATCH(${tokenERC1155.address}, ${signer1.address}, ${signer2.address}, ${tokenId}, ${tokenId})` - ); - }); - - it('should return ERC1155 balance of signer', async () => { - const [signer1] = await ethers.getSigners(); - const tokenERC1155 = await deployErc1155(); - - const tokenId = 0; - - const constants = [signer1.address, tokenERC1155.address, tokenId]; - const vSigner1 = op(Opcode.CONSTANT, 0); - const vTokenAddr = op(Opcode.CONSTANT, 1); - const vTokenId = op(Opcode.CONSTANT, 2); - - // prettier-ignore - const sources = VM.createVMSources([ - vTokenAddr, - vSigner1, - vTokenId, - op(Opcode.IERC1155_BALANCE_OF) - ]); - - const state: StateConfig = { - sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal( - `IERC1155_BALANCE_OF(${tokenERC1155.address}, ${signer1.address}, ${tokenId})` - ); - }); - - it('should return owner of specific ERC721 token', async () => { - const tokenERC721 = await deployErc721(); - - const nftId = 0; - const constants = [nftId, tokenERC721.address]; - const vNftId = op(Opcode.CONSTANT, 0); - const vTokenAddr = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const sources = VM.createVMSources([ - vTokenAddr, - vNftId, - op(Opcode.IERC721_OWNER_OF) - ]); - - const state: StateConfig = { - sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal( - `IERC721_OWNER_OF(${tokenERC721.address}, ${nftId})` - ); - }); - - it('should return ERC721 balance of signer', async () => { - const [signer1] = await ethers.getSigners(); - const tokenERC721 = await deployErc721(); - const constants = [signer1.address, tokenERC721.address]; - - const vSigner1 = op(Opcode.CONSTANT, 0); - const vTokenAddr = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const sources = VM.createVMSources([ - vTokenAddr, - vSigner1, - op(Opcode.IERC721_BALANCE_OF) - ]); - - const state: StateConfig = { - sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal( - `IERC721_BALANCE_OF(${tokenERC721.address}, ${signer1.address})` - ); - }); - - it('should return ERC20 total supply', async () => { - const tokenERC20 = await deployErc20(); - - const constants = [tokenERC20.address]; - const vTokenAddr = op(Opcode.CONSTANT, 0); - - // prettier-ignore - const sources = [ - concat([ - vTokenAddr, - op(Opcode.IERC20_TOTAL_SUPPLY) - ]), - ]; - - const state: StateConfig = { - sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal(`IERC20_TOTAL_SUPPLY(${tokenERC20.address})`); - }); - - it('should return ERC20 balance', async () => { - const [signer1] = await ethers.getSigners(); - const tokenERC20 = await deployErc20(); - - const constants = [signer1.address, tokenERC20.address]; - const vSigner1 = op(Opcode.CONSTANT, 0); - const vTokenAddr = op(Opcode.CONSTANT, 1); - - // prettier-ignore - const sources = VM.createVMSources([ - vTokenAddr, - vSigner1, - op(Opcode.IERC20_BALANCE_OF) - ]); - - const state: StateConfig = { - sources, - constants, - }; - const friendly = HumanFriendlyRead.get(state); - - expect(friendly).to.be.equal( - `IERC20_BALANCE_OF(${tokenERC20.address}, ${signer1.address})` - ); - }); - - it('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { - const [arbitrary] = await ethers.getSigners(); - const ERC721Address = arbitrary.address; - const fixedPrice = '20'; - const reserveTokenDecimals = 18; - const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); - const initialSupply = ethers.BigNumber.from('2000').mul(ONE); - - const splitTimestamp = await Time.currentTime(); - const endTimestamp = Time.duration - .minutes(60) - .add(splitTimestamp) - .toNumber(); - const dutchAuctionstartPrice = 50; - - //1st phase constants - const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase - - // initial calculations for dutch auction 2nd phase - let dutchAuctionDuration = endTimestamp - splitTimestamp; - let balanceReserve = minimumRaise.mul(5); - let initWeight = initialSupply - .mul(dutchAuctionstartPrice) - .div(balanceReserve); - let weightChange = initWeight.sub(1).div(dutchAuctionDuration); - - // 2nd phase constants - const ReserveBalance = parseUnits( - // Virtualizing reserve token balance as vLBP seed balance - balanceReserve.toString(), - reserveTokenDecimals - ); - - const InitWeight = parseUnits(initWeight.toString()); // initial weight - - const WeightChange = parseUnits( - weightChange.toNumber().toFixed(5).toString() - ); // weight change per timestamp - - const one = parseUnits((1).toString()); // minimum possible weight - - const saleConfig: StateConfig = { - constants: [ - splitTimestamp, // timestamp that splits the phases - ERC721Address, - FixedPrice, - 0, - ReserveBalance, - InitWeight, - WeightChange, - one, - ], - - sources: [ - concat([ - // Amount script - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.SENDER), - op(VM.Opcodes.IERC721_BALANCE_OF), - op(VM.Opcodes.ISZERO), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand - op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), - op(VM.Opcodes.EAGER_IF), - // Price script - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.ADD, 2), - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.BLOCK_TIMESTAMP), - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.SATURATING_SUB, 2), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.MAX, 2), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand - op(VM.Opcodes.DIV, 2), - op(VM.Opcodes.EAGER_IF), - ]), - ], - }; - - // @ts-ignore - const friendly = HumanFriendlyRead.get(saleConfig, { - contract: 'sale', - pretty: true, - }); - - // prettier-ignore - const expectOutput = -`EAGER_IF( - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - EAGER_IF( - ISZERO( - IERC721_BALANCE_OF( - ${ERC721Address}, - SENDER() - ) - ), - 0, - CurrentBuyUnits - ), - CurrentBuyUnits -) - -EAGER_IF( - LESS_THAN( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${FixedPrice}, - DIV( - MUL( - ADD( - TotalReserveIn, - ${ReserveBalance} - ), - MAX( - SATURATING_SUB( - ${InitWeight}, - MUL( - SATURATING_SUB( - CURRENT_TIMESTAMP, - ${splitTimestamp} - ), - ${WeightChange} - ) - ), - ${one} - ) - ), - RemainingUnits - ) -)`; - - expect(friendly).to.be.equals(expectOutput); - }); - - // it('should throw an error if the script use STORAGE op and does not provide the contact/context', async () => { - // const [arbitrary] = await ethers.getSigners(); - // const ERC721Address = arbitrary.address; - // const fixedPrice = '20'; - // const reserveTokenDecimals = 18; - // const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); - // const initialSupply = ethers.BigNumber.from('2000').mul(ONE); - - // const splitTimestamp = await Time.currentTime(); - // const endTimestamp = Time.duration - // .minutes(60) - // .add(splitTimestamp) - // .toNumber(); - // const dutchAuctionstartPrice = 50; - - // //1st phase constants - // const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase - - // // initial calculations for dutch auction 2nd phase - // let dutchAuctionDuration = endTimestamp - splitTimestamp; - // let balanceReserve = minimumRaise.mul(5); - // let initWeight = initialSupply - // .mul(dutchAuctionstartPrice) - // .div(balanceReserve); - // let weightChange = initWeight.sub(1).div(dutchAuctionDuration); - - // // 2nd phase constants - // const ReserveBalance = parseUnits( - // // Virtual reserve token balance - // balanceReserve.toString(), - // reserveTokenDecimals - // ); - - // const InitWeight = parseUnits(initWeight.toString()); // initial weight - - // const WeightChange = parseUnits( - // weightChange.toNumber().toFixed(5).toString() - // ); // weight change per timestamp - - // const one = parseUnits((1).toString()); // minimum possible weight - - // const saleConfig: StateConfig = { - // constants: [ - // splitTimestamp, // timestamp that splits the phases - // ERC721Address, - // FixedPrice, - // 0, - // ReserveBalance, - // InitWeight, - // WeightChange, - // one, - // ], - - // sources: [ - // concat([ - // // Amount script - // op(VM.Opcodes.BLOCK_TIMESTAMP), - // op(VM.Opcodes.CONSTANT, 0), - // op(VM.Opcodes.LESS_THAN), - // op(VM.Opcodes.CONSTANT, 1), - // op(VM.Opcodes.SENDER), - // op(VM.Opcodes.IERC721_BALANCE_OF), - // op(VM.Opcodes.ISZERO), - // op(VM.Opcodes.CONSTANT, 3), - // op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand - // op(VM.Opcodes.EAGER_IF), - // op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), - // op(VM.Opcodes.EAGER_IF), - // // Price script - // op(VM.Opcodes.BLOCK_TIMESTAMP), - // op(VM.Opcodes.CONSTANT, 0), - // op(VM.Opcodes.LESS_THAN), - // op(VM.Opcodes.CONSTANT, 2), - // op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand - // op(VM.Opcodes.CONSTANT, 4), - // op(VM.Opcodes.ADD, 2), - // op(VM.Opcodes.CONSTANT, 5), - // op(VM.Opcodes.BLOCK_TIMESTAMP), - // op(VM.Opcodes.CONSTANT, 0), - // op(VM.Opcodes.SATURATING_SUB, 2), - // op(VM.Opcodes.CONSTANT, 6), - // op(VM.Opcodes.MUL, 2), - // op(VM.Opcodes.SATURATING_SUB, 2), - // op(VM.Opcodes.CONSTANT, 7), - // op(VM.Opcodes.MAX, 2), - // op(VM.Opcodes.MUL, 2), - // op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand - // op(VM.Opcodes.DIV, 2), - // op(VM.Opcodes.EAGER_IF), - // ]), - // ], - // }; - - // expect(() => { - // HumanFriendlyRead.get(saleConfig, { - // pretty: true, - // }); - // }).to.throw('Not contract/context provided to get the STORAGE'); - // }); - - it('brackets prettify', async () => { - const report = paddedUInt256( - ethers.BigNumber.from( - '0x' + - paddedUInt32(1) + - paddedUInt32(0) + - paddedUInt32(3) + - paddedUInt32(0) + - paddedUInt32(5) + - paddedUInt32(0) + - paddedUInt32(7) + - paddedUInt32(8) - ) - ); - - const reportMax = max_uint256; - - const constants = [report, reportMax]; - - const vReport = op(Opcode.CONSTANT, 0); - const vReportMax = op(Opcode.CONSTANT, 1); - - // BEGIN zipmap args - - const argReport = op(Opcode.CONSTANT, arg(0)); - const argReportMax = op(Opcode.CONSTANT, arg(1)); - - // END zipmap args - - // prettier-ignore - const ZIPMAP_FN = () => - concat([ - argReport, - op(Opcode.ISZERO), - argReportMax, - argReport, - op(Opcode.EAGER_IF), - ]); - - // prettier-ignore - const SOURCE = () => - concat([ - vReport, - vReportMax, - op(Opcode.ZIPMAP, callSize(1, 3, 1)), - ]); - - const state: StateConfig = { - // sources: [SOURCE()], - sources: [SOURCE(), ZIPMAP_FN()], - constants, - }; - - const friendlyPretty = HumanFriendlyRead.get(state, { - pretty: true, - }); - - const expectedOutput = `ZIPMAP_8( - [ - "00000001", - "00000000", - "00000003", - "00000000", - "00000005", - "00000000", - "00000007", - "00000008" - ], - [ - "ffffffff", - "ffffffff", - "ffffffff", - "ffffffff", - "ffffffff", - "ffffffff", - "ffffffff", - "ffffffff" - ], - EAGER_IF(ISZERO(^0), ^1, ^0) -)`; - - expect(friendlyPretty).to.be.equals(expectedOutput); - }); -}); \ No newline at end of file +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// v2, +// op(Opcode.SCALE18_DIV) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.be.equal(`SCALE18_DIV(${value1}*10**18, ${value2})`); +// }); + +// it('should generate the human friendly from scale a number by 18 OOM while multiplying', async () => { +// const value1 = 1; +// const value2 = 2; + +// const constants = [value1, value2]; +// const v1 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// v2, +// op(Opcode.SCALE18_MUL) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.be.equal(`SCALE18_MUL(${value1}*10**18, ${value2})`); +// }); + +// it('should generate the human friendly from scale a number by 18 OOM in situ', async () => { +// const value = 1; + +// const constants = [value]; +// const v1 = op(Opcode.CONSTANT, 0); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// v1, +// op(Opcode.SCALE18) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.be.equal(`SCALE18(${value})`); +// }); + +// it('should generate the human friendly from logic ops within a zipmap loop', async () => { +// const report = paddedUInt256( +// ethers.BigNumber.from( +// '0x' + +// paddedUInt32(1) + +// paddedUInt32(0) + +// paddedUInt32(3) + +// paddedUInt32(0) + +// paddedUInt32(5) + +// paddedUInt32(0) + +// paddedUInt32(7) + +// paddedUInt32(8) +// ) +// ); + +// const reportMax = max_uint256; + +// const constants = [report, reportMax]; + +// const vReport = op(Opcode.CONSTANT, 0); +// const vReportMax = op(Opcode.CONSTANT, 1); + +// // BEGIN zipmap args + +// const argReport = op(Opcode.CONSTANT, arg(0)); +// const argReportMax = op(Opcode.CONSTANT, arg(1)); + +// // END zipmap args + +// // prettier-ignore +// const ZIPMAP_FN = () => +// concat([ +// argReport, +// op(Opcode.ISZERO), +// argReportMax, +// argReport, +// op(Opcode.EAGER_IF), +// ]); + +// // prettier-ignore +// const SOURCE = () => +// concat([ +// vReport, +// vReportMax, +// op(Opcode.ZIPMAP, callSize(1, 3, 1)), +// ]); + +// const state: StateConfig = { +// // sources: [SOURCE()], +// sources: [SOURCE(), ZIPMAP_FN()], +// constants, +// }; +// // 0x/00000001.00000000.00000003.00000000.00000005.00000000.00000007.00000008 + +// const friendly0 = HumanFriendlyRead.get(state); + +// expect(friendly0).to.eq(`ZIPMAP_8( +// ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], +// ["ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff", "ffffffff"], +// EAGER_IF(ISZERO(^0), ^1, ^0) +// )`); +// }); + +// it('should check whether any value in a list is non-zero', async () => { +// const constants = [0, 1, 2, 3]; + +// const v0 = op(Opcode.CONSTANT, 0); +// const v1 = op(Opcode.CONSTANT, 1); +// const v2 = op(Opcode.CONSTANT, 2); +// const v3 = op(Opcode.CONSTANT, 3); + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// v1, +// v2, +// v3, +// op(Opcode.ANY, 3), +// ]); + +// const state0: StateConfig = { +// sources: source0, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`ANY(1, 2, 3)`); + +// // prettier-ignore +// const source1 = concat([ +// v0, +// v0, +// op(Opcode.ANY, 2), +// ]); + +// const state1: StateConfig = { +// sources: [source1], +// constants, +// }; + +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`ANY(0, 0)`); + +// // prettier-ignore +// const source2 = concat([ +// v0, +// v0, +// v3, +// op(Opcode.ANY, 3), +// ]); + +// const state2: StateConfig = { +// sources: [source2], +// constants, +// }; + +// const friendly2 = HumanFriendlyRead.get(state2); +// expect(friendly2).to.be.equals(`ANY(0, 0, 3)`); +// }); + +// it('should check whether every value in a list is non-zero', async () => { +// const constants = [0, 1, 2, 3]; + +// const v0 = op(Opcode.CONSTANT, 0); +// const v1 = op(Opcode.CONSTANT, 1); +// const v2 = op(Opcode.CONSTANT, 2); +// const v3 = op(Opcode.CONSTANT, 3); + +// // prettier-ignore +// const source0 = concat([ +// v1, +// v2, +// v3, +// op(Opcode.EVERY, 3), +// ]); + +// const state0: StateConfig = { +// sources: [source0], +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`EVERY(1, 2, 3)`); + +// // prettier-ignore +// const source1 = concat([ +// v0, +// v1, +// v2, +// op(Opcode.EVERY, 3), +// ]); + +// const state1: StateConfig = { +// sources: [source1], +// constants, +// }; + +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`EVERY(0, 1, 2)`); + +// // prettier-ignore +// const source2 = concat([ +// v0, +// v3, +// op(Opcode.EVERY, 2), +// ]); + +// const state2: StateConfig = { +// sources: [source2], +// constants, +// }; + +// const friendly2 = HumanFriendlyRead.get(state2); +// expect(friendly2).to.be.equals(`EVERY(0, 3)`); +// }); + +// it("should perform ternary 'eager if' operation on 3 values on the stack", async () => { +// const constants = [0, 1, 2, 3]; + +// const v0 = op(Opcode.CONSTANT, 0); +// const v1 = op(Opcode.CONSTANT, 1); +// const v2 = op(Opcode.CONSTANT, 2); +// const v3 = op(Opcode.CONSTANT, 3); + +// // prettier-ignore +// const source0 = concat([ +// // 1 ? 2 : 3 +// v1, +// v2, +// v3, +// op(Opcode.EAGER_IF), +// ]); + +// const state0: StateConfig = { +// sources: [source0], +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`EAGER_IF(1, 2, 3)`); + +// // prettier-ignore +// const source1 = concat([ +// // 2 ? 2 : 3 +// v2, +// v2, +// v3, +// op(Opcode.EAGER_IF), +// ]); + +// const state1: StateConfig = { +// sources: [source1], +// constants, +// }; + +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`EAGER_IF(2, 2, 3)`); + +// // prettier-ignore +// const source2 = concat([ +// // 2 ? 2 : 3 +// v0, +// v2, +// v3, +// op(Opcode.EAGER_IF), +// ]); + +// const state2: StateConfig = { +// sources: [source2], +// constants, +// }; + +// const friendly2 = HumanFriendlyRead.get(state2); +// expect(friendly2).to.be.equals(`EAGER_IF(0, 2, 3)`); +// }); + +// it('should check that value is greater than another value', async () => { +// const constants = [1, 2]; + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.CONSTANT, 0), // 1 +// op(Opcode.GREATER_THAN), +// ]); + +// const state0: StateConfig = { +// sources: source0, +// constants, +// }; + +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`GREATER_THAN(2, 1)`); + +// // prettier-ignore +// const source1 = VM.createVMSources([ +// op(Opcode.CONSTANT, 0), // 1 +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.GREATER_THAN), +// ]); + +// const state1: StateConfig = { +// sources: source1, +// constants, +// }; + +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`GREATER_THAN(1, 2)`); +// }); + +// it('should check that value is less than another value', async () => { +// const constants = [1, 2]; + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.CONSTANT, 0), // 1 +// op(Opcode.LESS_THAN), +// ]); + +// const state0: StateConfig = { +// sources: source0, +// constants, +// }; +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`LESS_THAN(2, 1)`); + +// // prettier-ignore +// const source1 = VM.createVMSources([ +// op(Opcode.CONSTANT, 0), // 1 +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.LESS_THAN), +// ]); + +// const state1: StateConfig = { +// sources: source1, +// constants, +// }; +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`LESS_THAN(1, 2)`); +// }); + +// it('should check that values are equal to each other', async () => { +// const constants = [1, 2]; + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.EQUAL_TO), +// ]); + +// const state0: StateConfig = { +// sources: source0, +// constants, +// }; +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`EQUAL_TO(2, 2)`); + +// // prettier-ignore +// const source1 = VM.createVMSources([ +// op(Opcode.CONSTANT, 0), // 1 +// op(Opcode.CONSTANT, 1), // 2 +// op(Opcode.EQUAL_TO), +// ]); + +// const state1: StateConfig = { +// sources: source1, +// constants, +// }; +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`EQUAL_TO(1, 2)`); +// }); + +// it('should check that a value is zero', async () => { +// const constants = [0, 1]; + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// op(Opcode.CONSTANT, 0), +// op(Opcode.ISZERO), +// ]); + +// const state0: StateConfig = { +// sources: source0, +// constants, +// }; +// const friendly0 = HumanFriendlyRead.get(state0); +// expect(friendly0).to.be.equals(`ISZERO(0)`); + +// // prettier-ignore +// const source1 = VM.createVMSources([ +// op(Opcode.CONSTANT, 1), +// op(Opcode.ISZERO), +// ]); + +// const state1: StateConfig = { +// sources: source1, +// constants, +// }; +// const friendly1 = HumanFriendlyRead.get(state1); +// expect(friendly1).to.be.equals(`ISZERO(1)`); +// }); + +// it('should return block.number and block.timestamp', () => { +// const constants: number[] = []; + +// const source0 = VM.createVMSources([ +// // (BLOCK_NUMBER) +// [Opcode.BLOCK_NUMBER], +// ]); + +// const state0: StateConfig = { +// sources: source0, +// constants, +// }; +// const friendly0 = HumanFriendlyRead.get(state0); + +// expect(friendly0).to.eq('CURRENT_BLOCK'); + +// const source1 = VM.createVMSources([ +// // (BLOCK_TIMESTAMP) +// [Opcode.BLOCK_TIMESTAMP], +// ]); + +// const state1: StateConfig = { +// sources: source1, +// constants, +// }; +// const friendly1 = HumanFriendlyRead.get(state1); + +// expect(friendly1).to.eq('CURRENT_TIMESTAMP'); +// }); + +// it('should return correct remainder when using modulo op on sequence of numbers', () => { +// const constants = [7, 4, 2]; +// const v7 = op(Opcode.CONSTANT, 0); +// const v4 = op(Opcode.CONSTANT, 1); +// const v2 = op(Opcode.CONSTANT, 2); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// // (7 4 2 %) +// v7, +// v4, // -> r3 +// v2, // -> r1 +// op(Opcode.MOD, 3), +// ]); + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('MOD(7, 4, 2)'); +// }); + +// it('should perform exponentiation on a sequence of numbers', () => { +// const constants = [2, 4, 3]; +// const v2 = op(Opcode.CONSTANT, 0); +// const v4 = op(Opcode.CONSTANT, 1); +// const v3 = op(Opcode.CONSTANT, 2); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// // (2 4 3 ^) +// v2, +// v4, +// v3, +// [Opcode.EXP, 3], +// ]); +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('EXP(2, 4, 3)'); +// }); + +// it('should return the maximum of a sequence of numbers', () => { +// const constants = [33, 11, 22]; +// const v33 = op(Opcode.CONSTANT, 0); +// const v11 = op(Opcode.CONSTANT, 1); +// const v22 = op(Opcode.CONSTANT, 2); + +// // prettier-ignore +// const source = VM.createVMSources([ +// // (22 11 33 max) +// v22, +// v11, +// v33, +// [Opcode.MAX, 3], +// ]); + +// const state: StateConfig = { +// sources: source, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('MAX(22, 11, 33)'); +// }); + +// it('should return the minimum of a sequence of numbers', () => { +// const constants = [33, 11, 22]; +// const v33 = op(Opcode.CONSTANT, 0); +// const v11 = op(Opcode.CONSTANT, 1); +// const v22 = op(Opcode.CONSTANT, 2); + +// // prettier-ignore +// const source = VM.createVMSources([ +// // (22 11 33 min) +// v22, +// v11, +// v33, +// [Opcode.MIN, 3], +// ]); + +// const state: StateConfig = { +// sources: source, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('MIN(22, 11, 33)'); +// }); + +// it('should run a basic program (return current block number)', () => { +// const constants: Array = []; + +// // prettier-ignore +// const source = VM.createVMSources([ +// [Opcode.BLOCK_NUMBER] +// ]); + +// const state: StateConfig = { +// sources: source, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('CURRENT_BLOCK'); +// }); + +// it('should handle a zipmap which loops 4 times', () => { +// // The following 3 variables use zero-based counting. + +// // Which index in `sources` array to use as our inner function to ZIPMAP. +// const sourceIndex = 1; + +// // Number of times to 'break up' our uint256 constants into a concatenated array of 'sub-constants'. +// // In this case, we subdivide a constant 4 times, so we are left with 8 uint32 'sub-constants' concatenated together. +// const loopSize = 3; + +// // Number of constants to zip together. Here we are zipping 2 constants together. Hence, our inner function will +// // accept 2 arguments at a time (arg0, arg1), which will be the sub-constants of the respective constants. +// const valSize = 1; + +// // Size of each 'sub-constant' in bytes, which can be determined by how many times we broke up our uint256. In this case we have 32-bit unsigned integers. +// const valBytes = 32 / Math.pow(2, loopSize); + +// // prettier-ignore +// const constants = [ // a.k.a. 'vals' +// concat([ // constant0 -> an array of sub-constants +// bytify(1, valBytes), +// bytify(2, valBytes), +// bytify(3, valBytes), +// bytify(4, valBytes), +// bytify(5, valBytes), +// bytify(6, valBytes), +// bytify(7, valBytes), +// bytify(8, valBytes), +// ]), +// concat([ // constant1 -> an array of sub-constants +// bytify(10, valBytes), +// bytify(20, valBytes), +// bytify(30, valBytes), +// bytify(40, valBytes), +// bytify(50, valBytes), +// bytify(60, valBytes), +// bytify(70, valBytes), +// bytify(80, valBytes), +// ]), +// ]; + +// // prettier-ignore +// const sources = [ +// VM.createVMSources([ +// // sourceIndex === 0 (main source) +// [Opcode.CONSTANT, 0], // val0 +// [Opcode.CONSTANT, 1], // val1 +// [Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)], +// ])[0], +// VM.createVMSources([ +// // sourceIndex === 1 (inner ZIPMAP function) +// // (arg0 arg1 mul) (arg0 arg1 add) +// [Opcode.CONSTANT, arg(0)], +// [Opcode.CONSTANT, arg(1)], +// [Opcode.MUL, 2], +// [Opcode.CONSTANT, arg(0)], +// [Opcode.CONSTANT, arg(1)], +// [Opcode.ADD, 2], +// ])[0], +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq(`ZIPMAP_8( +// [1, 2, 3, 4, 5, 6, 7, 8], +// [10, 20, 30, 40, 50, 60, 70, 80], +// MUL(^0, ^1) ADD(^0, ^1) +// )`); +// }); + +// it('should handle a zipmap which loops twice', () => { +// // zero-based counting +// const sourceIndex = 1; +// const loopSize = 1; +// const valSize = 2; + +// const valBytes = 32 / Math.pow(2, loopSize); // 128-bit unsigned + +// const constants = [ +// concat([bytify(3, valBytes), bytify(1, valBytes)]), +// concat([bytify(4, valBytes), bytify(2, valBytes)]), +// concat([bytify(5, valBytes), bytify(3, valBytes)]), +// ]; + +// const sources = [ +// VM.createVMSources([ +// op(Opcode.CONSTANT, 2), // val0 +// op(Opcode.CONSTANT, 1), // val1 +// op(Opcode.CONSTANT, 0), // val2 +// op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), +// ])[0], +// VM.createVMSources([ +// // (arg0 arg1 arg2 mul) (arg0 arg1 arg2 add) +// op(Opcode.CONSTANT, arg(0)), +// op(Opcode.CONSTANT, arg(1)), +// op(Opcode.CONSTANT, arg(2)), +// op(Opcode.MUL, 3), +// op(Opcode.CONSTANT, arg(0)), +// op(Opcode.CONSTANT, arg(1)), +// op(Opcode.CONSTANT, arg(2)), +// op(Opcode.ADD, 3), +// ])[0], +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq(`ZIPMAP_2( +// [5, 3], +// [4, 2], +// [3, 1], +// MUL(^0, ^1, ^2) ADD(^0, ^1, ^2) +// )`); +// }); + +// it('should handle a zipmap op with maxed sourceIndex and valSize', () => { +// const constants = [10, 20, 30, 40, 50, 60, 70, 80]; + +// const a0 = op(Opcode.CONSTANT, arg(0)); +// const a1 = op(Opcode.CONSTANT, arg(1)); +// const a2 = op(Opcode.CONSTANT, arg(2)); +// const a3 = op(Opcode.CONSTANT, arg(3)); +// const a4 = op(Opcode.CONSTANT, arg(4)); +// const a5 = op(Opcode.CONSTANT, arg(5)); +// const a6 = op(Opcode.CONSTANT, arg(6)); +// const a7 = op(Opcode.CONSTANT, arg(7)); + +// // zero-based counting +// const sourceIndex = 1; +// const loopSize = 0; // no subdivision of uint256, normal constants +// const valSize = 7; + +// const sources = [ +// VM.createVMSources([ +// op(Opcode.CONSTANT, 0), // val0 +// op(Opcode.CONSTANT, 1), // val1 +// op(Opcode.CONSTANT, 2), // val2 +// op(Opcode.CONSTANT, 3), // val3 +// op(Opcode.CONSTANT, 4), // val4 +// op(Opcode.CONSTANT, 5), // val5 +// op(Opcode.CONSTANT, 6), // val6 +// op(Opcode.CONSTANT, 7), // val7 +// op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), +// ])[0], +// VM.createVMSources([ +// // (arg0 arg1 arg2 ... add) (arg0 arg1 arg2 ... add) +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// op(Opcode.ADD, 32), // max no. items +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// a6, +// a7, +// a0, +// a1, +// a2, +// a3, +// a4, +// a5, +// op(Opcode.ADD, 30), +// ])[0], +// ]; +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq(`ZIPMAP_1( +// 10, +// 20, +// 30, +// 40, +// 50, +// 60, +// 70, +// 80, +// ADD(^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7) ADD(^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5, ^6, ^7, ^0, ^1, ^2, ^3, ^4, ^5) +// )`); +// }); + +// it('should handle a zipmap op which runs multiple functions (across multiple fn vals)', () => { +// const constants = [1, 2, 3]; +// const v0 = op(Opcode.CONSTANT, 0); +// const v1 = op(Opcode.CONSTANT, 1); +// const v2 = op(Opcode.CONSTANT, 2); + +// const a0 = op(Opcode.CONSTANT, arg(0)); +// const a1 = op(Opcode.CONSTANT, arg(1)); +// const a2 = op(Opcode.CONSTANT, arg(2)); + +// // zero-based counting +// const sourceIndex = 1; +// const loopSize = 0; +// const valSize = 2; + +// const sources = [ +// VM.createVMSources([ +// v0, +// v1, +// v2, +// op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), +// ])[0], +// VM.createVMSources([ +// // (arg0 arg1 arg2 mul) (arg1 arg2 arg0 arg1 arg2 ... add) +// a0, +// a1, +// a2, +// op(Opcode.MUL, 3), +// a1, +// a2, +// a0, +// a1, +// a2, +// a0, +// a1, +// a2, +// a0, +// a1, +// a2, +// a0, +// a1, +// a2, +// op(Opcode.ADD, 14), +// ])[0], +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq(`ZIPMAP_1( +// 1, +// 2, +// 3, +// MUL(^0, ^1, ^2) ADD(^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2, ^0, ^1, ^2) +// )`); +// }); + +// it('should handle a zipmap op which runs multiple functions (using single inner zipmap function source)', () => { +// const constants = [3, 4, 5]; +// const v3 = op(Opcode.CONSTANT, 0); +// const v4 = op(Opcode.CONSTANT, 1); +// const v5 = op(Opcode.CONSTANT, 2); + +// const a0 = op(Opcode.CONSTANT, arg(0)); +// const a1 = op(Opcode.CONSTANT, arg(1)); +// const a2 = op(Opcode.CONSTANT, arg(2)); + +// // zero-based counting +// const sourceIndex = 1; +// const loopSize = 0; +// const valSize = 2; + +// const sources = [ +// concat([ +// v3, +// v4, +// v5, +// op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), +// ]), +// concat([ +// // inner zipmap function source +// // (arg0 arg1 arg2 mul) (arg0 arg1 ar2 add) +// a0, +// a1, +// a2, +// op(Opcode.MUL, 3), +// a0, +// a1, +// a2, +// op(Opcode.ADD, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq(`ZIPMAP_1( +// 3, +// 4, +// 5, +// MUL(^0, ^1, ^2) ADD(^0, ^1, ^2) +// )`); +// }); + +// it('should handle a simple call op', () => { +// const constants = [1, 2, 3]; +// const v1 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); +// const v3 = op(Opcode.CONSTANT, 2); + +// const a0 = op(Opcode.CONSTANT, arg(0)); +// const a1 = op(Opcode.CONSTANT, arg(1)); +// const a2 = op(Opcode.CONSTANT, arg(2)); + +// // zero-based counting +// const sourceIndex = 1; // 1 +// const loopSize = 0; // 1 +// const valSize = 2; // 3 + +// const sources = [ +// concat([ +// v1, +// v2, +// v3, +// op(Opcode.ZIPMAP, callSize(sourceIndex, loopSize, valSize)), +// ]), +// concat([ +// // (arg0 arg1 arg2 add) +// a0, +// a1, +// a2, +// op(Opcode.ADD, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq(`ZIPMAP_1( +// 1, +// 2, +// 3, +// ADD(^0, ^1, ^2) +// )`); +// }); + +// it('should perform a calculation using the block number as a value', () => { +// const constants = [1, 2, 3, 4, 6]; + +// const one = op(Opcode.CONSTANT, 0); +// const two = op(Opcode.CONSTANT, 1); +// const three = op(Opcode.CONSTANT, 2); +// const four = op(Opcode.CONSTANT, 3); +// const six = op(Opcode.CONSTANT, 4); + +// const sources = [ +// concat([ +// // (BLOCK_NUMBER (6 3 /) (3 4 (2 1 -) +) *) +// op(Opcode.BLOCK_NUMBER), +// six, +// three, +// op(Opcode.DIV, 2), +// three, +// four, +// two, +// one, +// op(Opcode.SUB, 2), +// op(Opcode.ADD, 3), +// op(Opcode.MUL, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq( +// 'MUL(CURRENT_BLOCK, DIV(6, 3), ADD(3, 4, SUB(2, 1)))' +// ); +// }); + +// it('should calculate a mathematical expression (division, product, summation)', () => { +// const constants = [2, 3]; +// const v2 = op(Opcode.CONSTANT, 0); +// const v3 = op(Opcode.CONSTANT, 1); + +// const sources = [ +// concat([ +// // (((2 2 2 +) 3 *) 2 3 /) +// v2, +// v2, +// v2, +// op(Opcode.ADD, 3), +// v3, +// op(Opcode.MUL, 2), +// v2, +// v3, +// op(Opcode.DIV, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('DIV(MUL(ADD(2, 2, 2), 3), 2, 3)'); +// }); + +// it('should return remainder of dividing an initial number by the product of a sequence of numbers', () => { +// const constants = [3, 2, 13]; +// const v3 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); +// const v13 = op(Opcode.CONSTANT, 2); + +// const sources = [ +// concat([ +// // (13 2 3 %) +// v13, +// v2, +// v3, +// op(Opcode.MOD, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('MOD(13, 2, 3)'); +// }); + +// it('should divide an initial number by the product of a sequence of numbers', () => { +// const constants = [3, 2, 12]; +// const v3 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); +// const v12 = op(Opcode.CONSTANT, 2); + +// const sources = [ +// concat([ +// // (12 2 3 /) +// v12, +// v2, +// v3, +// op(Opcode.DIV, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('DIV(12, 2, 3)'); +// }); + +// it('should multiply a sequence of numbers together', () => { +// const constants = [5, 4, 3]; +// const v5 = op(Opcode.CONSTANT, 0); +// const v4 = op(Opcode.CONSTANT, 1); +// const v3 = op(Opcode.CONSTANT, 2); + +// const sources = [ +// concat([ +// // (3 4 5 *) +// v3, +// v4, +// v5, +// op(Opcode.MUL, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('MUL(3, 4, 5)'); +// }); + +// it('should subtract a sequence of numbers from an initial number', () => { +// const constants = [3, 2, 10]; +// const v3 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); +// const v10 = op(Opcode.CONSTANT, 2); + +// const sources = [ +// concat([ +// // (10 2 3 -) +// v10, +// v2, +// v3, +// op(Opcode.SUB, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('SUB(10, 2, 3)'); +// }); + +// it('should add a sequence of numbers together', () => { +// const constants = [3, 2, 1]; +// const v3 = op(Opcode.CONSTANT, 0); +// const v2 = op(Opcode.CONSTANT, 1); +// const v1 = op(Opcode.CONSTANT, 2); + +// const sources = [ +// concat([ +// // (1 2 3 +) +// v1, +// v2, +// v3, +// op(Opcode.ADD, 3), +// ]), +// ]; + +// const state: StateConfig = { +// sources: sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.eq('ADD(1, 2, 3)'); +// }); + +// it('should use saturating sub for diff where only some tiers would underflow', async () => { +// const constants0 = [ +// // 0x01000000020000000300000004000000050000000600000007 +// arrToReport([0, 1, 2, 3, 4, 5, 6, 7]), +// // 0x0200000000000000040000000000000006000000000000000800000000 +// arrToReport([2, 0, 4, 0, 6, 0, 8, 0]), +// ]; + +// const vReport0 = op(Opcode.CONSTANT, 0); +// const vReport1 = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const source0 = VM.createVMSources([ +// vReport0, +// vReport1, +// op(Opcode.SATURATING_DIFF), +// ]); + +// const state: StateConfig = { +// sources: source0, +// constants: constants0, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal( +// `SATURATING_DIFF(${constants0[0]}, ${constants0[1]})` +// ); +// }); + +// it('should return ERC1155 batch balance result for multiple signers', async () => { +// const [signer1, signer2] = await ethers.getSigners(); +// const tokenERC1155 = await deployErc1155(); + +// const tokenId = 0; +// const length = 2; + +// const constants = [ +// signer1.address, +// signer2.address, +// tokenERC1155.address, +// tokenId, +// ]; +// const vSigner1 = op(Opcode.CONSTANT, 0); +// const vSigner2 = op(Opcode.CONSTANT, 1); +// const vTokenAddr = op(Opcode.CONSTANT, 2); +// const vTokenId = op(Opcode.CONSTANT, 3); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// vTokenAddr, +// vSigner1, +// vSigner2, +// vTokenId, +// vTokenId, +// op(Opcode.IERC1155_BALANCE_OF_BATCH, length - 1) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal( +// `IERC1155_BALANCE_OF_BATCH(${tokenERC1155.address}, ${signer1.address}, ${signer2.address}, ${tokenId}, ${tokenId})` +// ); +// }); + +// it('should return ERC1155 balance of signer', async () => { +// const [signer1] = await ethers.getSigners(); +// const tokenERC1155 = await deployErc1155(); + +// const tokenId = 0; + +// const constants = [signer1.address, tokenERC1155.address, tokenId]; +// const vSigner1 = op(Opcode.CONSTANT, 0); +// const vTokenAddr = op(Opcode.CONSTANT, 1); +// const vTokenId = op(Opcode.CONSTANT, 2); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// vTokenAddr, +// vSigner1, +// vTokenId, +// op(Opcode.IERC1155_BALANCE_OF) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal( +// `IERC1155_BALANCE_OF(${tokenERC1155.address}, ${signer1.address}, ${tokenId})` +// ); +// }); + +// it('should return owner of specific ERC721 token', async () => { +// const tokenERC721 = await deployErc721(); + +// const nftId = 0; +// const constants = [nftId, tokenERC721.address]; +// const vNftId = op(Opcode.CONSTANT, 0); +// const vTokenAddr = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// vTokenAddr, +// vNftId, +// op(Opcode.IERC721_OWNER_OF) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal( +// `IERC721_OWNER_OF(${tokenERC721.address}, ${nftId})` +// ); +// }); + +// it('should return ERC721 balance of signer', async () => { +// const [signer1] = await ethers.getSigners(); +// const tokenERC721 = await deployErc721(); +// const constants = [signer1.address, tokenERC721.address]; + +// const vSigner1 = op(Opcode.CONSTANT, 0); +// const vTokenAddr = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// vTokenAddr, +// vSigner1, +// op(Opcode.IERC721_BALANCE_OF) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal( +// `IERC721_BALANCE_OF(${tokenERC721.address}, ${signer1.address})` +// ); +// }); + +// it('should return ERC20 total supply', async () => { +// const tokenERC20 = await deployErc20(); + +// const constants = [tokenERC20.address]; +// const vTokenAddr = op(Opcode.CONSTANT, 0); + +// // prettier-ignore +// const sources = [ +// concat([ +// vTokenAddr, +// op(Opcode.IERC20_TOTAL_SUPPLY) +// ]), +// ]; + +// const state: StateConfig = { +// sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal(`IERC20_TOTAL_SUPPLY(${tokenERC20.address})`); +// }); + +// it('should return ERC20 balance', async () => { +// const [signer1] = await ethers.getSigners(); +// const tokenERC20 = await deployErc20(); + +// const constants = [signer1.address, tokenERC20.address]; +// const vSigner1 = op(Opcode.CONSTANT, 0); +// const vTokenAddr = op(Opcode.CONSTANT, 1); + +// // prettier-ignore +// const sources = VM.createVMSources([ +// vTokenAddr, +// vSigner1, +// op(Opcode.IERC20_BALANCE_OF) +// ]); + +// const state: StateConfig = { +// sources, +// constants, +// }; +// const friendly = HumanFriendlyRead.get(state); + +// expect(friendly).to.be.equal( +// `IERC20_BALANCE_OF(${tokenERC20.address}, ${signer1.address})` +// ); +// }); + +// it('multi-phase sale with a fixed price NFT-gated first phase, and dutch auction second phase open to the public', async () => { +// const [arbitrary] = await ethers.getSigners(); +// const ERC721Address = arbitrary.address; +// const fixedPrice = '20'; +// const reserveTokenDecimals = 18; +// const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); +// const initialSupply = ethers.BigNumber.from('2000').mul(ONE); + +// const splitTimestamp = await Time.currentTime(); +// const endTimestamp = Time.duration +// .minutes(60) +// .add(splitTimestamp) +// .toNumber(); +// const dutchAuctionstartPrice = 50; + +// //1st phase constants +// const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase + +// // initial calculations for dutch auction 2nd phase +// let dutchAuctionDuration = endTimestamp - splitTimestamp; +// let balanceReserve = minimumRaise.mul(5); +// let initWeight = initialSupply +// .mul(dutchAuctionstartPrice) +// .div(balanceReserve); +// let weightChange = initWeight.sub(1).div(dutchAuctionDuration); + +// // 2nd phase constants +// const ReserveBalance = parseUnits( +// // Virtualizing reserve token balance as vLBP seed balance +// balanceReserve.toString(), +// reserveTokenDecimals +// ); + +// const InitWeight = parseUnits(initWeight.toString()); // initial weight + +// const WeightChange = parseUnits( +// weightChange.toNumber().toFixed(5).toString() +// ); // weight change per timestamp + +// const one = parseUnits((1).toString()); // minimum possible weight + +// const saleConfig: StateConfig = { +// constants: [ +// splitTimestamp, // timestamp that splits the phases +// ERC721Address, +// FixedPrice, +// 0, +// ReserveBalance, +// InitWeight, +// WeightChange, +// one, +// ], + +// sources: [ +// concat([ +// // Amount script +// op(VM.Opcodes.BLOCK_TIMESTAMP), +// op(VM.Opcodes.CONSTANT, 0), +// op(VM.Opcodes.LESS_THAN), +// op(VM.Opcodes.CONSTANT, 1), +// op(VM.Opcodes.SENDER), +// op(VM.Opcodes.IERC721_BALANCE_OF), +// op(VM.Opcodes.ISZERO), +// op(VM.Opcodes.CONSTANT, 3), +// op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand +// op(VM.Opcodes.EAGER_IF), +// op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), +// op(VM.Opcodes.EAGER_IF), +// // Price script +// op(VM.Opcodes.BLOCK_TIMESTAMP), +// op(VM.Opcodes.CONSTANT, 0), +// op(VM.Opcodes.LESS_THAN), +// op(VM.Opcodes.CONSTANT, 2), +// op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand +// op(VM.Opcodes.CONSTANT, 4), +// op(VM.Opcodes.ADD, 2), +// op(VM.Opcodes.CONSTANT, 5), +// op(VM.Opcodes.BLOCK_TIMESTAMP), +// op(VM.Opcodes.CONSTANT, 0), +// op(VM.Opcodes.SATURATING_SUB, 2), +// op(VM.Opcodes.CONSTANT, 6), +// op(VM.Opcodes.MUL, 2), +// op(VM.Opcodes.SATURATING_SUB, 2), +// op(VM.Opcodes.CONSTANT, 7), +// op(VM.Opcodes.MAX, 2), +// op(VM.Opcodes.MUL, 2), +// op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand +// op(VM.Opcodes.DIV, 2), +// op(VM.Opcodes.EAGER_IF), +// ]), +// ], +// }; + +// // @ts-ignore +// const friendly = HumanFriendlyRead.get(saleConfig, { +// contract: 'sale', +// pretty: true, +// }); + +// // prettier-ignore +// const expectOutput = +// `EAGER_IF( +// LESS_THAN( +// CURRENT_TIMESTAMP, +// ${splitTimestamp} +// ), +// EAGER_IF( +// ISZERO( +// IERC721_BALANCE_OF( +// ${ERC721Address}, +// SENDER() +// ) +// ), +// 0, +// CurrentBuyUnits +// ), +// CurrentBuyUnits +// ) + +// EAGER_IF( +// LESS_THAN( +// CURRENT_TIMESTAMP, +// ${splitTimestamp} +// ), +// ${FixedPrice}, +// DIV( +// MUL( +// ADD( +// TotalReserveIn, +// ${ReserveBalance} +// ), +// MAX( +// SATURATING_SUB( +// ${InitWeight}, +// MUL( +// SATURATING_SUB( +// CURRENT_TIMESTAMP, +// ${splitTimestamp} +// ), +// ${WeightChange} +// ) +// ), +// ${one} +// ) +// ), +// RemainingUnits +// ) +// )`; + +// expect(friendly).to.be.equals(expectOutput); +// }); + +// // it('should throw an error if the script use STORAGE op and does not provide the contact/context', async () => { +// // const [arbitrary] = await ethers.getSigners(); +// // const ERC721Address = arbitrary.address; +// // const fixedPrice = '20'; +// // const reserveTokenDecimals = 18; +// // const minimumRaise = ethers.BigNumber.from('150000').mul(RESERVE_ONE); +// // const initialSupply = ethers.BigNumber.from('2000').mul(ONE); + +// // const splitTimestamp = await Time.currentTime(); +// // const endTimestamp = Time.duration +// // .minutes(60) +// // .add(splitTimestamp) +// // .toNumber(); +// // const dutchAuctionstartPrice = 50; + +// // //1st phase constants +// // const FixedPrice = parseUnits(fixedPrice.toString(), reserveTokenDecimals); //fixed price of 1st phase + +// // // initial calculations for dutch auction 2nd phase +// // let dutchAuctionDuration = endTimestamp - splitTimestamp; +// // let balanceReserve = minimumRaise.mul(5); +// // let initWeight = initialSupply +// // .mul(dutchAuctionstartPrice) +// // .div(balanceReserve); +// // let weightChange = initWeight.sub(1).div(dutchAuctionDuration); + +// // // 2nd phase constants +// // const ReserveBalance = parseUnits( +// // // Virtual reserve token balance +// // balanceReserve.toString(), +// // reserveTokenDecimals +// // ); + +// // const InitWeight = parseUnits(initWeight.toString()); // initial weight + +// // const WeightChange = parseUnits( +// // weightChange.toNumber().toFixed(5).toString() +// // ); // weight change per timestamp + +// // const one = parseUnits((1).toString()); // minimum possible weight + +// // const saleConfig: StateConfig = { +// // constants: [ +// // splitTimestamp, // timestamp that splits the phases +// // ERC721Address, +// // FixedPrice, +// // 0, +// // ReserveBalance, +// // InitWeight, +// // WeightChange, +// // one, +// // ], + +// // sources: [ +// // concat([ +// // // Amount script +// // op(VM.Opcodes.BLOCK_TIMESTAMP), +// // op(VM.Opcodes.CONSTANT, 0), +// // op(VM.Opcodes.LESS_THAN), +// // op(VM.Opcodes.CONSTANT, 1), +// // op(VM.Opcodes.SENDER), +// // op(VM.Opcodes.IERC721_BALANCE_OF), +// // op(VM.Opcodes.ISZERO), +// // op(VM.Opcodes.CONSTANT, 3), +// // op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), // ie 0 as operand +// // op(VM.Opcodes.EAGER_IF), +// // op(VM.Opcodes.CONTEXT, SaleContext.CurrentBuyUnits), +// // op(VM.Opcodes.EAGER_IF), +// // // Price script +// // op(VM.Opcodes.BLOCK_TIMESTAMP), +// // op(VM.Opcodes.CONSTANT, 0), +// // op(VM.Opcodes.LESS_THAN), +// // op(VM.Opcodes.CONSTANT, 2), +// // op(VM.Opcodes.STORAGE, SaleStorage.TotalReserveIn), // ie 1 as operand +// // op(VM.Opcodes.CONSTANT, 4), +// // op(VM.Opcodes.ADD, 2), +// // op(VM.Opcodes.CONSTANT, 5), +// // op(VM.Opcodes.BLOCK_TIMESTAMP), +// // op(VM.Opcodes.CONSTANT, 0), +// // op(VM.Opcodes.SATURATING_SUB, 2), +// // op(VM.Opcodes.CONSTANT, 6), +// // op(VM.Opcodes.MUL, 2), +// // op(VM.Opcodes.SATURATING_SUB, 2), +// // op(VM.Opcodes.CONSTANT, 7), +// // op(VM.Opcodes.MAX, 2), +// // op(VM.Opcodes.MUL, 2), +// // op(VM.Opcodes.STORAGE, SaleStorage.RemainingUnits), // ie 0 as operand +// // op(VM.Opcodes.DIV, 2), +// // op(VM.Opcodes.EAGER_IF), +// // ]), +// // ], +// // }; + +// // expect(() => { +// // HumanFriendlyRead.get(saleConfig, { +// // pretty: true, +// // }); +// // }).to.throw('Not contract/context provided to get the STORAGE'); +// // }); + +// it('brackets prettify', async () => { +// const report = paddedUInt256( +// ethers.BigNumber.from( +// '0x' + +// paddedUInt32(1) + +// paddedUInt32(0) + +// paddedUInt32(3) + +// paddedUInt32(0) + +// paddedUInt32(5) + +// paddedUInt32(0) + +// paddedUInt32(7) + +// paddedUInt32(8) +// ) +// ); + +// const reportMax = max_uint256; + +// const constants = [report, reportMax]; + +// const vReport = op(Opcode.CONSTANT, 0); +// const vReportMax = op(Opcode.CONSTANT, 1); + +// // BEGIN zipmap args + +// const argReport = op(Opcode.CONSTANT, arg(0)); +// const argReportMax = op(Opcode.CONSTANT, arg(1)); + +// // END zipmap args + +// // prettier-ignore +// const ZIPMAP_FN = () => +// concat([ +// argReport, +// op(Opcode.ISZERO), +// argReportMax, +// argReport, +// op(Opcode.EAGER_IF), +// ]); + +// // prettier-ignore +// const SOURCE = () => +// concat([ +// vReport, +// vReportMax, +// op(Opcode.ZIPMAP, callSize(1, 3, 1)), +// ]); + +// const state: StateConfig = { +// // sources: [SOURCE()], +// sources: [SOURCE(), ZIPMAP_FN()], +// constants, +// }; + +// const friendlyPretty = HumanFriendlyRead.get(state, { +// pretty: true, +// }); + +// const expectedOutput = `ZIPMAP_8( +// [ +// "00000001", +// "00000000", +// "00000003", +// "00000000", +// "00000005", +// "00000000", +// "00000007", +// "00000008" +// ], +// [ +// "ffffffff", +// "ffffffff", +// "ffffffff", +// "ffffffff", +// "ffffffff", +// "ffffffff", +// "ffffffff", +// "ffffffff" +// ], +// EAGER_IF(ISZERO(^0), ^1, ^0) +// )`; + +// expect(friendlyPretty).to.be.equals(expectedOutput); +// }); +// }); \ No newline at end of file From 2cb11faebbedfc3764c88d8da3f16b380cc04691 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 10 Aug 2022 22:49:05 +0000 Subject: [PATCH 085/125] HumanFriendly optional aliases fix --- src/vm/HumanFreindlyRead.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 93fe329..266cd7b 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -206,6 +206,7 @@ export class HumanFriendlyRead { let _stack: string[] = []; let _finalStack: string[] = []; let _zipmapStack: { [key: number]: string } = {}; + let useableAliases = aliases; for (let i = 0; i < sources.length; i++) { let src = arrayify(sources[i], { allowMissingPrefix: true}); @@ -309,8 +310,9 @@ export class HumanFriendlyRead { } for (let j = 0; j < _stack.length; j++) { - _stack[j] = aliases && aliases[j] - ? `${aliases[j]}: {${_stack[j]}}` + let tempAlias = useableAliases?.shift() + _stack[j] = tempAlias + ? `${tempAlias}: {${_stack[j]}}` : `Item${j}: {${_stack[j]}}` } for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { From 56c93ba4337d0ef31b32a07527c353b87e7815a6 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 10 Aug 2022 23:25:06 +0000 Subject: [PATCH 086/125] GTE and LTE for HumanFriendlySource GREATER_THAN_EQUAL and LESS_THAN_EQUAL --- src/vm/HumanFreindlyRead.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 266cd7b..7284b3e 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -1,5 +1,5 @@ import { BytesLike, BigNumber, ethers } from 'ethers'; -import { AllStandardOps, StateConfig } from '../classes/vm'; +import { AllStandardOps, StateConfig, VM } from '../classes/vm'; import { arrayify, extractFromMap } from '../utils'; import { IOpMeta, OpMeta } from './OpMeta'; @@ -307,6 +307,13 @@ export class HumanFriendlyRead { : this.opMeta[src[j]].name + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` ) } + + if (_stack[_stack.length - 1].slice(0, 20) === 'ISZERO(GREATER_THAN(') { + _stack[_stack.length - 1] = 'LESS_THAN_EQUAL(' + _stack[_stack.length - 1].slice(20) + } + if (_stack[_stack.length - 1].slice(0, 17) === 'ISZERO(LESS_THAN(') { + _stack[_stack.length - 1] = 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1].slice(17) + } } for (let j = 0; j < _stack.length; j++) { From 66892c1e765c2c15ed32a658c3694ba545b3f119 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 10 Aug 2022 23:25:47 +0000 Subject: [PATCH 087/125] Update HumanFreindlyRead.ts --- src/vm/HumanFreindlyRead.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 7284b3e..7e24167 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -1,5 +1,5 @@ import { BytesLike, BigNumber, ethers } from 'ethers'; -import { AllStandardOps, StateConfig, VM } from '../classes/vm'; +import { AllStandardOps, StateConfig } from '../classes/vm'; import { arrayify, extractFromMap } from '../utils'; import { IOpMeta, OpMeta } from './OpMeta'; From e6d06bbc96d503c5fce7040d1eb1e1dc3f89f2ff Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 11 Aug 2022 01:41:07 +0000 Subject: [PATCH 088/125] HumanFriendlyRead zipmap showcase update --- src/vm/HumanFreindlyRead.ts | 93 ++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 47 deletions(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 7e24167..9655035 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -1,6 +1,6 @@ import { BytesLike, BigNumber, ethers } from 'ethers'; import { AllStandardOps, StateConfig } from '../classes/vm'; -import { arrayify, extractFromMap } from '../utils'; +import { arrayify } from '../utils'; import { IOpMeta, OpMeta } from './OpMeta'; @@ -68,9 +68,7 @@ export type PrettifyConfig = { export class HumanFriendlyRead { private static _pretty: boolean; - private static opMeta: IOpMeta[] = Array.from( - extractFromMap(OpMeta, []).values() - );; + private static opMeta: IOpMeta[] = Array.from(OpMeta.values()); /** * @@ -78,9 +76,7 @@ export class HumanFriendlyRead { * @returns */ public static set(opmeta: typeof OpMeta): any { - this.opMeta = Array.from( - extractFromMap(opmeta, []).values() - ); + this.opMeta = Array.from(opmeta.values()); } /** @@ -164,20 +160,30 @@ export class HumanFriendlyRead { } if (_text[i] === ')' || _text[i] === ']' || _text[i] === '}') { if (skip === 0) { - counter--; - _text = - _text.slice(0, i) + - '\n' + - space.repeat(counter * n) + - _text.slice(i); - i = i + counter * n + 1; - if (counter === 0 && (_text[i + 1] || _text[i + 1])) { - _text = _text.slice(0, i + 1) + '\n\n' + _text.slice(i + 1); + if (_text[i + 3] === '=' && _text[i + 4] === '>') { + counter--; + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); + i = i + counter * n + 1; + } + else { + counter--; + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); + i = i + counter * n + 1; + if (counter === 0 && (_text[i + 1] || _text[i + 1])) { + _text = _text.slice(0, i + 1) + '\n\n' + _text.slice(i + 1); + } } } else { skip--; } - } } return _text; @@ -222,25 +228,15 @@ export class HumanFriendlyRead { ) } else { - let argCount = constants.length; - for (let k = 0; k <= i; k++) { - let temp = arrayify(sources[k], { allowMissingPrefix: true}); - if (k === i) { - for (let l = 0; l < j; l += 2) { - if (temp[l] === AllStandardOps.ZIPMAP) { - argCount += (temp[l + 1] >> 5) + 1; - } - } - } - else { - for (let l = 0; l < temp.length; l += 2) { - if (temp[l] === AllStandardOps.ZIPMAP) { - argCount += (temp[l + 1] >> 5) + 1; - } - } + let _args: number[] = []; + let _offset: number; + for (let k = 0; k < src.length; k += 2) { + if (src[k] === 0 && src[k + 1] >= constants.length) { + _args.push(src[k + 1]) } } - _stack.push(`Argument[${src[j + 1] - argCount}]`) + _offset = _args.reduce((a, b) => a <= b ? a : b) + _stack.push(`Argument[${src[j + 1] - _offset}]`) } } else if (src[j] === AllStandardOps.STACK) { @@ -272,13 +268,14 @@ export class HumanFriendlyRead { let index = src[j + 1] & 3; let loopSize = 2 ** ((src[j + 1] >> 3) & 3); - _zipmapStack[index] = this.opMeta[src[j]].name - + `[${index}] Function` + _zipmapStack[index] = 'function ' + + this.opMeta[src[j]].name + + `${index} = ` + `(Loop Size: ${loopSize}, ` + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}]) ` for (let k = 0; k < loopSize; k++) { - _stack.push(`ZIPMAP[${index}] Result[${k}]`) + _stack.push(`ZIPMAP${index} Result[${k + 1}]`) } } else if (src[j] === AllStandardOps.SELECT_LTE) { @@ -315,21 +312,23 @@ export class HumanFriendlyRead { _stack[_stack.length - 1] = 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1].slice(17) } } - - for (let j = 0; j < _stack.length; j++) { - let tempAlias = useableAliases?.shift() - _stack[j] = tempAlias - ? `${tempAlias}: {${_stack[j]}}` - : `Item${j}: {${_stack[j]}}` - } - for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { - let index = Number(Object.keys(_zipmapStack)[j]); - _stack[index] = `${_zipmapStack[index]} {${_stack[index]}}` + console.log(_stack) + if (!Object.keys(_zipmapStack).includes(i.toString())) { + for (let j = 0; j < _stack.length; j++) { + let tempAlias = useableAliases?.shift() + _stack[j] = tempAlias + ? `${tempAlias}: {${_stack[j]}}` + : `Item${j}: {${_stack[j]}}` + } } _finalStack.push(_stack.join(' ')) _stack = []; } + for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { + let index = Number(Object.keys(_zipmapStack)[j]); + _finalStack[index] = `${_zipmapStack[index]} => { ${_finalStack[index]} }` + } return _finalStack.join(' '); }; From 8dc4ea02e052ceb90d43e857a5cf16acc59517d5 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 11 Aug 2022 11:01:12 +0000 Subject: [PATCH 089/125] fix --- src/vm/HumanFreindlyRead.ts | 14 +++++++++----- src/vm/OpMeta.ts | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 9655035..9d27c90 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -1,6 +1,6 @@ import { BytesLike, BigNumber, ethers } from 'ethers'; import { AllStandardOps, StateConfig } from '../classes/vm'; -import { arrayify } from '../utils'; +import { arrayify, selectLteLogic, selectLteMode } from '../utils'; import { IOpMeta, OpMeta } from './OpMeta'; @@ -281,7 +281,7 @@ export class HumanFriendlyRead { else if (src[j] === AllStandardOps.SELECT_LTE) { _stack.push( this.opMeta[src[j]].name + - `(Logic: ${src[j + 1] >> 7}, Mode: ${(src[j + 1] >> 5) & 3}, ` + + `(Logic: ${selectLteLogic[src[j + 1] >> 7]}, Mode: ${selectLteMode[(src[j + 1] >> 5) & 3]}, ` + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` ) } @@ -306,13 +306,17 @@ export class HumanFriendlyRead { } if (_stack[_stack.length - 1].slice(0, 20) === 'ISZERO(GREATER_THAN(') { - _stack[_stack.length - 1] = 'LESS_THAN_EQUAL(' + _stack[_stack.length - 1].slice(20) + _stack[_stack.length - 1] = + 'LESS_THAN_EQUAL(' + _stack[_stack.length - 1] + .slice(20, _stack[_stack.length - 1].length - 1) } if (_stack[_stack.length - 1].slice(0, 17) === 'ISZERO(LESS_THAN(') { - _stack[_stack.length - 1] = 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1].slice(17) + _stack[_stack.length - 1] = + 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1] + .slice(17, _stack[_stack.length - 1].length - 1) } } - console.log(_stack) + if (!Object.keys(_zipmapStack).includes(i.toString())) { for (let j = 0; j < _stack.length; j++) { let tempAlias = useableAliases?.shift() diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 84decd1..b783e00 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -308,7 +308,7 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.zero, jsvmfn: OpCaller, - alias: 'SENDER()' + alias: 'MSG_SENDER' } ], [ @@ -320,7 +320,7 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.zero, jsvmfn: OpThisAddress, - alias: 'THIS_ADDRESS()' + alias: 'THIS_ADDRESS' } ], [ From 70e6ae6feb888d9e3240d9cd151bcdfca02a5bca Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 11 Aug 2022 11:05:19 +0000 Subject: [PATCH 090/125] update --- docs/types/config.md | 1 - src/vm/HumanFreindlyRead.ts | 5 ----- 2 files changed, 6 deletions(-) diff --git a/docs/types/config.md b/docs/types/config.md index 2efa418..f603928 100644 --- a/docs/types/config.md +++ b/docs/types/config.md @@ -7,7 +7,6 @@ Specific the configuration of the generation method ```typescript type Config = { - contract?: string; pretty?: boolean; storageEnums?: string[]; contextEnums?: string[]; diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 9d27c90..8678143 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -10,11 +10,6 @@ import { IOpMeta, OpMeta } from './OpMeta'; * Specific the configuration of the generation method */ export type Config = { - /** - * With this we can get the context. - * This will be the contract name eg: sale, combineTier (It's not case-sensitive) - */ - contract?: string; /** * Enable the prettify to the result of get */ From 5d2265efae425ba266cdb5baaccbdfa7893b157f Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 11 Aug 2022 11:31:25 +0000 Subject: [PATCH 091/125] update --- docs/classes/humanfriendlyread.md | 2 +- docs/types/config.md | 2 +- src/vm/HumanFreindlyRead.ts | 25 ++++++++++++++----------- 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/docs/classes/humanfriendlyread.md b/docs/classes/humanfriendlyread.md index 7dfd250..db4e16b 100644 --- a/docs/classes/humanfriendlyread.md +++ b/docs/classes/humanfriendlyread.md @@ -40,7 +40,7 @@ static get(_state: StateConfig, _config?: Config): string; | Parameter | Type | Description | | --- | --- | --- | | \_state | [StateConfig](../interfaces/stateconfig.md) | The state or script to generate the friendly version | -| \_config | [Config](../types/config.md) | The configuration that will run the generator. | +| \_config | [Config](../types/config.md) | The configuration that will run the generator | Returns: diff --git a/docs/types/config.md b/docs/types/config.md index f603928..7d0130d 100644 --- a/docs/types/config.md +++ b/docs/types/config.md @@ -11,6 +11,6 @@ type Config = { storageEnums?: string[]; contextEnums?: string[]; aliases?: string[]; - ruleBuilder?: boolean; + enableTagging?: boolean; }; ``` diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 8678143..8e35c64 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -27,9 +27,9 @@ export type Config = { */ aliases?: string[]; /** - * True if the result needs to be optimized for a RuleBuilder script generator + * True if the result needs to be tagged and optimized for the RuleBuilder script generator */ - ruleBuilder?: boolean; + enableTagging?: boolean; }; /** @@ -76,8 +76,8 @@ export class HumanFriendlyRead { /** * Obtain the friendly output from an script. - * @param _state - The state or script to generate the friendly version @see StateConfig - * @param _config - The configuration that will run the generator. @see Config + * @param _state - The state or script to generate the friendly version + * @param _config - The configuration that will run the generator * @returns */ public static get( @@ -87,7 +87,7 @@ export class HumanFriendlyRead { storageEnums: undefined, contextEnums: undefined, aliases: undefined, - ruleBuilder: false + enableTagging: false } ): string { this._pretty = _config.pretty ? true : false; @@ -104,7 +104,7 @@ export class HumanFriendlyRead { _config.storageEnums, _config.contextEnums, _config.aliases, - _config.ruleBuilder + _config.enableTagging ); return this._pretty ? this.prettify(_result) : _result; @@ -192,7 +192,7 @@ export class HumanFriendlyRead { * @param storageEnums - (optional) names/aliases for CONTEXT opcodes * @param contextEnums - (optional) names/aliases for STORAGE opcodes * @param aliases - (optional) names/aliases for individual items in final results (should be passed in order) - * @param ruleBuilder - True if the result needs to be optimized for the RuleBuilder script generator + * @param enableTagging - True if the result needs to be tagged and optimized for the RuleBuilder script generator * @returns The generated human friendly readable text */ private static _eval = ( @@ -201,13 +201,14 @@ export class HumanFriendlyRead { storageEnums?: string[], contextEnums?: string[], aliases?: string[], - ruleBuilder: boolean = false, + enableTagging: boolean = false, ): string => { let _stack: string[] = []; let _finalStack: string[] = []; let _zipmapStack: { [key: number]: string } = {}; let useableAliases = aliases; + let counter = 0; for (let i = 0; i < sources.length; i++) { let src = arrayify(sources[i], { allowMissingPrefix: true}); @@ -235,7 +236,7 @@ export class HumanFriendlyRead { } } else if (src[j] === AllStandardOps.STACK) { - if (ruleBuilder) { + if (enableTagging) { _stack.push( aliases && aliases[src[j + 1]] ? aliases[src[j + 1]] : `Item${src[j + 1]}` ) @@ -312,12 +313,14 @@ export class HumanFriendlyRead { } } - if (!Object.keys(_zipmapStack).includes(i.toString())) { + if (enableTagging && !Object.keys(_zipmapStack).includes(i.toString())) { for (let j = 0; j < _stack.length; j++) { let tempAlias = useableAliases?.shift() _stack[j] = tempAlias ? `${tempAlias}: {${_stack[j]}}` - : `Item${j}: {${_stack[j]}}` + : `Item${counter}: {${_stack[j]}}` + + counter++; } } From cca35e713efd5b40520484959df20e1a8f14d0e3 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 11 Aug 2022 14:33:31 +0000 Subject: [PATCH 092/125] Update ruleBuilder.ts --- src/rule-builder/ruleBuilder.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index ca0dc4f..d5b2e4e 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -1,7 +1,7 @@ import { lib } from './lib'; import { BigNumberish, BytesLike } from 'ethers'; import { StateConfig, VM } from '../classes/vm'; -import { areEqualConfigs } from '../utils'; +import { areEqualConfigs, concat } from '../utils'; import { Condition, ConditionGroup, @@ -107,13 +107,22 @@ export class RuleBuilder { count++; } - dps_.push(this.getQPConfig(currencies[i].default.price)); + if (currencies[i].rules.length > 0) { + dps_.push(this.getQPConfig(currencies[i].default.price)); - qs_.push(this.getQPConfig(currencies[i].default.quantity)); - ps_.push(VM.stack(totalCount + i)); + qs_.push(this.getQPConfig(currencies[i].default.quantity)); + ps_.push(VM.stack(totalCount + i)); + + q_ = (VM[currencies[i].pick.quantities](qs_, false)); + p_ = (VM[currencies[i].pick.prices](ps_, false)); + } + else { + rules_.push({constants: [], sources: [concat([])]}); + dps_.push({constants: [], sources: [concat([])]}); - q_ = (VM[currencies[i].pick.quantities](qs_, false)); - p_ = (VM[currencies[i].pick.prices](ps_, false)); + p_ = this.getQPConfig(currencies[i].default.price); + q_ = this.getQPConfig(currencies[i].default.quantity); + } let qMod = currencies[i].quantityGlobalModifier; let pMod = currencies[i].priceGlobalModifier; From eed330de93a63aeacb42e10b882ef592351a6955 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 11 Aug 2022 23:29:47 +0000 Subject: [PATCH 093/125] update --- docs/types/config.md | 2 +- src/jsvm/lib/FixedPointMath.ts | 48 +- src/jsvm/lib/Math.ts | 6 +- src/jsvm/lib/SaturatingMath.ts | 32 +- src/jsvm/lib/TierReport.ts | 38 +- src/jsvm/lib/TierwiseCombine.ts | 204 +-- src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts | 29 +- .../ops/erc1155/OpERC1155BalanceOfBatch.ts | 61 +- src/jsvm/ops/erc20/OpERC20BalanceOf.ts | 25 +- src/jsvm/ops/erc20/OpERC20TotalSupply.ts | 21 +- .../snapshot/OpERC20SnapshotBalanceOfAt.ts | 29 +- .../snapshot/OpERC20SnapshotTotalSupplyAt.ts | 27 +- src/jsvm/ops/erc721/OpERC721BalanceOf.ts | 25 +- src/jsvm/ops/erc721/OpERC721OwnerOf.ts | 29 +- src/jsvm/ops/evm/OpBlockNumber.ts | 34 +- src/jsvm/ops/evm/OpCaller.ts | 23 +- src/jsvm/ops/evm/OpThisAddress.ts | 12 +- src/jsvm/ops/evm/OpTimestamp.ts | 26 +- src/jsvm/ops/math/OpAdd.ts | 28 +- src/jsvm/ops/math/OpDiv.ts | 30 +- src/jsvm/ops/math/OpExp.ts | 36 +- src/jsvm/ops/math/OpMax.ts | 5 +- src/jsvm/ops/math/OpMin.ts | 4 +- src/jsvm/ops/math/OpMod.ts | 30 +- src/jsvm/ops/math/OpMul.ts | 29 +- src/jsvm/ops/math/OpSub.ts | 34 +- src/jsvm/ops/math/fixedPoint/OpScale18.ts | 15 +- src/jsvm/ops/math/fixedPoint/OpScale18Div.ts | 17 +- src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts | 17 +- src/jsvm/ops/math/fixedPoint/OpScaleBy.ts | 12 +- src/jsvm/ops/math/fixedPoint/OpScaleN.ts | 13 +- src/jsvm/ops/math/logic/OpAny.ts | 39 +- src/jsvm/ops/math/logic/OpEagerIf.ts | 18 +- src/jsvm/ops/math/logic/OpEqualTo.ts | 16 +- src/jsvm/ops/math/logic/OpEvery.ts | 49 +- src/jsvm/ops/math/logic/OpGreaterThan.ts | 17 +- src/jsvm/ops/math/logic/OpIsZero.ts | 15 +- src/jsvm/ops/math/logic/OpLessThan.ts | 19 +- .../ops/math/saturating/OpSaturatingAdd.ts | 23 +- .../ops/math/saturating/OpSaturatingMul.ts | 29 +- .../ops/math/saturating/OpSaturatingSub.ts | 23 +- src/jsvm/ops/tier/OpITierV2Report.ts | 29 +- .../ops/tier/OpITierV2ReportTimesForTier.ts | 39 +- src/jsvm/ops/tier/OpSaturatingDiff.ts | 18 +- src/jsvm/ops/tier/OpSelectLte.ts | 25 +- .../ops/tier/OpUpdateTimesForTierRange.ts | 18 +- src/jsvm/simulation/CombineTierSimulation.ts | 114 +- src/rule-builder/lib.ts | 431 +++--- src/rule-builder/ruleBuilder.ts | 514 +++---- src/rule-builder/types.ts | 1009 +++++++------- src/vm/HumanFreindlyRead.ts | 583 ++++---- src/vm/OpMeta.ts | 1182 +++++++++-------- 52 files changed, 2604 insertions(+), 2547 deletions(-) diff --git a/docs/types/config.md b/docs/types/config.md index 7d0130d..a45b754 100644 --- a/docs/types/config.md +++ b/docs/types/config.md @@ -10,7 +10,7 @@ type Config = { pretty?: boolean; storageEnums?: string[]; contextEnums?: string[]; - aliases?: string[]; + tags?: string[]; enableTagging?: boolean; }; ``` diff --git a/src/jsvm/lib/FixedPointMath.ts b/src/jsvm/lib/FixedPointMath.ts index 25e4882..5dc3e13 100644 --- a/src/jsvm/lib/FixedPointMath.ts +++ b/src/jsvm/lib/FixedPointMath.ts @@ -5,52 +5,52 @@ import { eighteenZeros } from "../types"; * @public */ export const scale18 = (value: BigNumber, scale: number) : BigNumber => { - return scale <= 18 - ? value.mul((10 ** (18 - scale)).toString()) - : value.div((10 ** (scale - 18)).toString()) + return scale <= 18 + ? value.mul((10 ** (18 - scale)).toString()) + : value.div((10 ** (scale - 18)).toString()) } /** * @public */ export const scaleBy = (value: BigNumber, scale: number) : BigNumber => { - if (scale > 127) { - scale = 256 - scale; - return value.div((10 ** (scale)).toString()); - } - else { - return value.mul((10 ** (scale)).toString()); - } + if (scale > 127) { + scale = 256 - scale; + return value.div((10 ** (scale)).toString()); + } + else { + return value.mul((10 ** (scale)).toString()); + } } /** * @public */ export const scaleN = (value: BigNumber, scale: number) : BigNumber => { - return scale <= 18 - ? value.div((10 ** (18 - scale)).toString()) - : value.mul((10 ** (scale - 18)).toString()) + return scale <= 18 + ? value.div((10 ** (18 - scale)).toString()) + : value.mul((10 ** (scale - 18)).toString()) } /** * @public */ export const fixedPointDiv = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { - return (scale <= 18 - ? value1.mul((10 ** (18 - scale)).toString()) - : value1.div((10 ** (scale - 18)).toString()) - ) - .mul(eighteenZeros).div(value2) + return (scale <= 18 + ? value1.mul((10 ** (18 - scale)).toString()) + : value1.div((10 ** (scale - 18)).toString()) + ) + .mul(eighteenZeros).div(value2) } /** * @public */ export const fixedPointMul = (value1: BigNumber, value2: BigNumber, scale: number) : BigNumber => { - return value2.mul( - scale <= 18 - ? value1.mul((10 ** (18 - scale)).toString()) - : value1.div((10 ** (scale - 18)).toString()) - ) - .div(eighteenZeros) + return value2.mul( + scale <= 18 + ? value1.mul((10 ** (18 - scale)).toString()) + : value1.div((10 ** (scale - 18)).toString()) + ) + .div(eighteenZeros) } diff --git a/src/jsvm/lib/Math.ts b/src/jsvm/lib/Math.ts index ddafcf1..a0eaf0d 100644 --- a/src/jsvm/lib/Math.ts +++ b/src/jsvm/lib/Math.ts @@ -10,7 +10,7 @@ import { BigNumber } from "ethers"; */ export const min = (values: BigNumber[]): BigNumber => { - return values.reduce((e, m) => (e.lt(m) ? e : m)) + return values.reduce((e, m) => (e.lt(m) ? e : m)) } /** @@ -21,6 +21,6 @@ export const min = (values: BigNumber[]): BigNumber => { * @returns the max of values in BigNumber type */ export const max = (values: BigNumber[]): BigNumber => { - - return values.reduce((e, m) => (e.gt(m) ? e : m)) + + return values.reduce((e, m) => (e.gt(m) ? e : m)) } \ No newline at end of file diff --git a/src/jsvm/lib/SaturatingMath.ts b/src/jsvm/lib/SaturatingMath.ts index ef5491f..fe5f560 100644 --- a/src/jsvm/lib/SaturatingMath.ts +++ b/src/jsvm/lib/SaturatingMath.ts @@ -4,12 +4,12 @@ import { BigNumber, ethers } from "ethers" * @public */ export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1.add(value2); - value1 = value1.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : value1; - - return value1; + value1 = value1.add(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; + + return value1; } /** @@ -17,22 +17,22 @@ export const saturatingAdd = (value1: BigNumber, value2: BigNumber) : BigNumber * */ export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1.mul(value2); - value1 = value1.gt(ethers.constants.MaxUint256) - ? ethers.constants.MaxUint256 - : value1; + value1 = value1.mul(value2); + value1 = value1.gt(ethers.constants.MaxUint256) + ? ethers.constants.MaxUint256 + : value1; - return value1; + return value1; } /** * @public */ export const saturatingSub = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1?.sub(value2); - value1 = value1.gt(0) - ? value1 - : ethers.constants.Zero; + value1 = value1?.sub(value2); + value1 = value1.gt(0) + ? value1 + : ethers.constants.Zero; - return value1; + return value1; } diff --git a/src/jsvm/lib/TierReport.ts b/src/jsvm/lib/TierReport.ts index 0cfd394..d35f03a 100644 --- a/src/jsvm/lib/TierReport.ts +++ b/src/jsvm/lib/TierReport.ts @@ -7,25 +7,25 @@ import { paddedUInt256, paddedUInt32 } from "../../utils"; */ export const updateTimesForTierRange = (report: BigNumber, timestamp: BigNumber, range: number) : BigNumber => { - const endTier_ = range >> 4; - const startTier_ = range & 15; - const _timestamp = paddedUInt32(timestamp); - const _report = paddedUInt256(report).substring(2); - let _startIndex = (8 - endTier_) * 8; - let _endIndex = _startIndex + 8; - let _result = _report.slice(0, _startIndex); - const resultLow_ = _report.slice( - _startIndex + (endTier_ - startTier_) * 8 - ); + const endTier_ = range >> 4; + const startTier_ = range & 15; + const _timestamp = paddedUInt32(timestamp); + const _report = paddedUInt256(report).substring(2); + let _startIndex = (8 - endTier_) * 8; + let _endIndex = _startIndex + 8; + let _result = _report.slice(0, _startIndex); + const resultLow_ = _report.slice( + _startIndex + (endTier_ - startTier_) * 8 + ); - for (let i = 0; i < endTier_ - startTier_; i++) { - _result += - _report.slice(_startIndex, _endIndex) > _timestamp - ? _timestamp - : _report.slice(_startIndex, _endIndex); - _startIndex += 8; - _endIndex += 8; - } + for (let i = 0; i < endTier_ - startTier_; i++) { + _result += + _report.slice(_startIndex, _endIndex) > _timestamp + ? _timestamp + : _report.slice(_startIndex, _endIndex); + _startIndex += 8; + _endIndex += 8; + } - return BigNumber.from('0x' + _result + resultLow_); + return BigNumber.from('0x' + _result + resultLow_); } \ No newline at end of file diff --git a/src/jsvm/lib/TierwiseCombine.ts b/src/jsvm/lib/TierwiseCombine.ts index ae69750..2b63752 100644 --- a/src/jsvm/lib/TierwiseCombine.ts +++ b/src/jsvm/lib/TierwiseCombine.ts @@ -6,123 +6,127 @@ import { paddedUInt256, paddedUInt32 } from "../../utils"; * @public */ export const saturatingDiff = (report1: BigNumber, report2: BigNumber) : BigNumber => { - const report1_ = paddedUInt256(report1).substring(2); - const report2_ = paddedUInt256(report2).substring(2); - let _startIndex = 0; - let _endIndex = 8; - let _result = ''; - let _tierRep1; - let _tierRep2; + const report1_ = paddedUInt256(report1).substring(2); + const report2_ = paddedUInt256(report2).substring(2); + let _startIndex = 0; + let _endIndex = 8; + let _result = ''; + let _tierRep1; + let _tierRep2; + + for (let i = 0; i < 8; i++) { + _tierRep1 = BigNumber.from( + '0x' + report1_.slice(_startIndex, _endIndex) + ); + _tierRep2 = BigNumber.from( + '0x' + report2_.slice(_startIndex, _endIndex) + ); + _result += _tierRep1.gt(_tierRep2) + ? paddedUInt32(_tierRep1.sub(_tierRep2)) + : '00000000'; - for (let i = 0; i < 8; i++) { - _tierRep1 = BigNumber.from( - '0x' + report1_.slice(_startIndex, _endIndex) - ); - _tierRep2 = BigNumber.from( - '0x' + report2_.slice(_startIndex, _endIndex) - ); - _result += _tierRep1.gt(_tierRep2) - ? paddedUInt32(_tierRep1.sub(_tierRep2)) - : '00000000'; - _startIndex += 8; - _endIndex += 8; - } + _startIndex += 8; + _endIndex += 8; + } - return BigNumber.from('0x' + _result); + return BigNumber.from('0x' + _result); } /** * @public */ export const selectLte = ( - reports: BigNumber[], - timestamp: BigNumber, - logic: number, - mode: number, - length: number + reports: BigNumber[], + timestamp: BigNumber, + logic: number, + mode: number, + length: number ) : BigNumber => { - let _report; - // array of raw reports - let _reports: string[] = []; - // array of array of each tier's lte report - let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; - let _result = ''; + let _report; + // array of raw reports + let _reports: string[] = []; + // array of array of each tier's lte report + let _reportsAtTier: string[][] = [[], [], [], [], [], [], [], []]; + let _result = ''; - //building an array of each tier's report against blockNumber_ - //tiers greater than blockNumber_ will get "ffffffff" + //building an array of each tier's report against blockNumber_ + //tiers greater than blockNumber_ will get "ffffffff" const blockNumber_ = paddedUInt32(timestamp); + for (let i = 0; i < length; i++) { - let _startIndex = 0; - let _endIndex = 8; - _report = reports[reports.length - 1 - i]; - _reports[i] = paddedUInt256(_report).substring(2); - for (let j = 0; j < 8; j++) { - _reportsAtTier[j].push( - blockNumber_ < _reports[i].slice(_startIndex, _endIndex) - ? 'ffffffff' - : _reports[i].slice(_startIndex, _endIndex) - ); - _startIndex += 8; - _endIndex += 8; - } - } + let _startIndex = 0; + let _endIndex = 8; + _report = reports[reports.length - 1 - i]; + _reports[i] = paddedUInt256(_report).substring(2); - // logic and mode selections - if (logic) { - for (let i = 0; i < 8; i++) { - if (mode === 0) { - _reportsAtTier[i] = [ - _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), - ]; + for (let j = 0; j < 8; j++) { + _reportsAtTier[j].push( + blockNumber_ < _reports[i].slice(_startIndex, _endIndex) + ? 'ffffffff' + : _reports[i].slice(_startIndex, _endIndex) + ); + _startIndex += 8; + _endIndex += 8; + } } - else if (mode === 1) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e !== 'ffffffff' - ); - _reportsAtTier[i] = - _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] - : ['ffffffff']; + + // logic and mode selections + if (logic) { + for (let i = 0; i < 8; i++) { + if (mode === 0) { + _reportsAtTier[i] = [ + _reportsAtTier[i].reduce((e, m) => (e < m ? e : m)), + ]; + } + else if (mode === 1) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e !== 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))] + : ['ffffffff']; + } + else if (mode === 2) { + //filter out "ffffffff" + _reportsAtTier[i] = _reportsAtTier[i].filter( + (e) => e !== 'ffffffff' + ); + _reportsAtTier[i] = + _reportsAtTier[i].length > 0 + ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] + : ['ffffffff']; + } + } } - else if (mode === 2) { - //filter out "ffffffff" - _reportsAtTier[i] = _reportsAtTier[i].filter( - (e) => e !== 'ffffffff' - ); - _reportsAtTier[i] = - _reportsAtTier[i].length > 0 - ? [_reportsAtTier[i][_reportsAtTier[i].length - 1]] - : ['ffffffff']; - } + else { + for (let i = 0; i < 8; i++) { + if (mode === 0) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; + } + else if (mode === 1) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; + } + else if (mode === 2) { + //check if "ffffffff" exists within the tier's array + _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') + ? ['ffffffff'] + : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; + } + } } - } - else { + //building the final report for (let i = 0; i < 8; i++) { - if (mode === 0) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i].reduce((e, m) => (e < m ? e : m))]; - } - else if (mode === 1) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i].reduce((e, m) => (e > m ? e : m))]; - } - else if (mode === 2) { - //check if "ffffffff" exists within the tier's array - _reportsAtTier[i] = _reportsAtTier[i].includes('ffffffff') - ? ['ffffffff'] - : [_reportsAtTier[i][_reportsAtTier[i].length - 1]]; - } + _result += _reportsAtTier[i][0]; } - } - //building the final report - for (let i = 0; i < 8; i++) { - _result += _reportsAtTier[i][0]; - } - return BigNumber.from('0x' + _result); + + return BigNumber.from('0x' + _result); } diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts index a1b205d..59f4bd4 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts @@ -8,21 +8,26 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpERC1155BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC1155BalanceOf( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer !== undefined) { + if (item1_ && item2_ && item3_ && this.signer !== undefined) { - const id_ = BigNumber.from(item3_); - const account_ = paddedUInt160(item2_); - const erc1155Address_ = paddedUInt160(item1_); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + const id_ = BigNumber.from(item3_); + const account_ = paddedUInt160(item2_); + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); + state.stack.push(await erc1155Contract_.balanceOf(account_, id_)); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts index fb87df5..50e48d4 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts @@ -8,34 +8,41 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpERC1155BalanceOfBatch(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC1155BalanceOfBatch( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item3_ = state.stack.splice(-(operand + 1)); - const item2_ = state.stack.splice(-(operand + 1)); - const item1_ = state.stack.pop(); + const item3_ = state.stack.splice(-(operand + 1)); + const item2_ = state.stack.splice(-(operand + 1)); + const item1_ = state.stack.pop(); - if ( - item1_ && - item2_ && - item3_ && - this.signer !== undefined && - item2_.length === item3_.length - ) { - const tokenIds_: BigNumber[] = []; - for (let i = 0; i < item3_.length; i++) { - tokenIds_.push(BigNumber.from(item3_[i])); - } - const accounts_: string[] = []; - for (let i = 0; i < item2_.length; i++) { - accounts_.push(paddedUInt160(item2_[i])); - } - const erc1155Address_ = paddedUInt160(item1_); - const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); - - state.stack.push( - ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) - ); + if ( + item1_ && + item2_ && + item3_ && + this.signer !== undefined && + item2_.length === item3_.length + ) { + const tokenIds_: BigNumber[] = []; + for (let i = 0; i < item3_.length; i++) { + tokenIds_.push(BigNumber.from(item3_[i])); + } - } - else throw new Error('Undefined stack variable'); + const accounts_: string[] = []; + for (let i = 0; i < item2_.length; i++) { + accounts_.push(paddedUInt160(item2_[i])); + } + + const erc1155Address_ = paddedUInt160(item1_); + const erc1155Contract_ = new ERC1155(erc1155Address_, this.signer); + + state.stack.push( + ...(await erc1155Contract_.balanceOfBatch(accounts_, tokenIds_)) + ); + } + + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts index aa5bd9c..a372aa3 100644 --- a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts +++ b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts @@ -7,18 +7,23 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpERC20BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC20BalanceOf( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { + if (item1_ && item2_ && this.signer !== undefined) { - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.balanceOf(account_)); - } - else throw new Error('Undefined stack variables'); + state.stack.push(await erc20Contract_.balanceOf(account_)); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts index 4ae8011..2cec61d 100644 --- a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts +++ b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts @@ -7,16 +7,21 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpERC20TotalSupply(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC20TotalSupply( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ && this.signer !== undefined) { + if (item_ && this.signer !== undefined) { - const erc20Address_ = paddedUInt160(item_); - const erc20Contract_ = new ERC20(erc20Address_, this.signer); + const erc20Address_ = paddedUInt160(item_); + const erc20Contract_ = new ERC20(erc20Address_, this.signer); - state.stack.push(await erc20Contract_.totalSupply()); - } - else throw new Error('Undefined stack variable'); + state.stack.push(await erc20Contract_.totalSupply()); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts index 19371b3..633e784 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts @@ -7,21 +7,26 @@ import { StateJSVM } from "../../../types"; /** * @public */ -export async function OpERC20SnapshotBalanceOfAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC20SnapshotBalanceOfAt( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item3_ = state.stack.pop(); - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item3_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && item3_ && this.signer !== undefined) { + if (item1_ && item2_ && item3_ && this.signer !== undefined) { - const snapshotId_ = item3_; - const account_ = paddedUInt160(item2_); - const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + const snapshotId_ = item3_; + const account_ = paddedUInt160(item2_); + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); - state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); + state.stack.push(await erc20Snapshot_.balanceOfAt!(account_, snapshotId_)); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts index ef5e871..fb387f1 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts @@ -7,19 +7,24 @@ import { StateJSVM } from "../../../types"; /** * @public */ -export async function OpERC20SnapshotTotalSupplyAt(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC20SnapshotTotalSupplyAt( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { + if (item1_ && item2_ && this.signer !== undefined) { - const snapshotId_ = item2_; - const erc20Address_ = paddedUInt160(item1_); - const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); + const snapshotId_ = item2_; + const erc20Address_ = paddedUInt160(item1_); + const erc20Snapshot_ = new ERC20(erc20Address_, this.signer, true); - state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); - - } - else throw new Error('Undefined stack variables'); + state.stack.push(await erc20Snapshot_.totalSupplyAt!(snapshotId_)); + + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts index f969876..4057a0a 100644 --- a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts +++ b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts @@ -7,18 +7,23 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpERC721BalanceOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC721BalanceOf( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { - const account_ = paddedUInt160(item2_); - const erc721Address_ = paddedUInt160(item1_); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); + if (item1_ && item2_ && this.signer !== undefined) { + const account_ = paddedUInt160(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push(await erc721Contract_.balanceOf(account_)); + state.stack.push(await erc721Contract_.balanceOf(account_)); - } - else throw new Error('Undefined stack variables'); + } + else throw new Error('Undefined stack variables'); } diff --git a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts index 66aab3e..8fecd9d 100644 --- a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts +++ b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts @@ -8,21 +8,26 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpERC721OwnerOf(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpERC721OwnerOf( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined) { + if (item1_ && item2_ && this.signer !== undefined) { - const tokenId_ = BigNumber.from(item2_); - const erc721Address_ = paddedUInt160(item1_); - const erc721Contract_ = new ERC721(erc721Address_, this.signer); + const tokenId_ = BigNumber.from(item2_); + const erc721Address_ = paddedUInt160(item1_); + const erc721Contract_ = new ERC721(erc721Address_, this.signer); - state.stack.push( - BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) - ); + state.stack.push( + BigNumber.from(await erc721Contract_.ownerOf(tokenId_)) + ); - } - else throw new Error('Undefined stack variable'); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpBlockNumber.ts b/src/jsvm/ops/evm/OpBlockNumber.ts index 9f90d04..ae226e6 100644 --- a/src/jsvm/ops/evm/OpBlockNumber.ts +++ b/src/jsvm/ops/evm/OpBlockNumber.ts @@ -6,21 +6,27 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpBlockNumber(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpBlockNumber( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - if (this.signer !== undefined) { + if (this.signer !== undefined) { + + const _provider = this.signer.provider; + + if (_provider !== undefined) { - const _provider = this.signer.provider; - - if (_provider !== undefined) { + state.stack.push( + BigNumber.from( + await _provider.getBlockNumber() + ) + ) + } + else throw new Error("undefined Provider") + } - state.stack.push( - BigNumber.from( - await _provider.getBlockNumber() - ) - ) - } - else throw new Error("undefined Provider") - } - else throw new Error('Undefined Signer'); + else throw new Error('Undefined Signer'); } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpCaller.ts b/src/jsvm/ops/evm/OpCaller.ts index d035a41..893e92c 100644 --- a/src/jsvm/ops/evm/OpCaller.ts +++ b/src/jsvm/ops/evm/OpCaller.ts @@ -6,15 +6,20 @@ import { StateJSVM } from "../../types"; /** * @public */ -export async function OpCaller(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { +export async function OpCaller( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any +): Promise { - if (this.signer !== undefined) { + if (this.signer !== undefined) { - state.stack.push( - BigNumber.from( - await this.signer.getAddress() - ) - ); - } - else throw new Error("undefined signer or signer address") + state.stack.push( + BigNumber.from( + await this.signer.getAddress() + ) + ); + } + else throw new Error("undefined signer or signer address") } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpThisAddress.ts b/src/jsvm/ops/evm/OpThisAddress.ts index 35c73a6..0134c61 100644 --- a/src/jsvm/ops/evm/OpThisAddress.ts +++ b/src/jsvm/ops/evm/OpThisAddress.ts @@ -8,11 +8,11 @@ import { StateJSVM } from "../../types"; */ export function OpThisAddress(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - if (this.self !== undefined) { + if (this.self !== undefined) { - state.stack.push( - BigNumber.from(this.self) - ); - } - else throw new Error('Undefined contract'); + state.stack.push( + BigNumber.from(this.self) + ); + } + else throw new Error('Undefined contract'); } \ No newline at end of file diff --git a/src/jsvm/ops/evm/OpTimestamp.ts b/src/jsvm/ops/evm/OpTimestamp.ts index 6569666..3b4b457 100644 --- a/src/jsvm/ops/evm/OpTimestamp.ts +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -7,19 +7,19 @@ import { StateJSVM } from "../../types"; */ export async function OpTimestamp(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - if (this.signer !== undefined) { + if (this.signer !== undefined) { - const _provider = this.signer.provider; - - if (_provider !== undefined) { + const _provider = this.signer.provider; + + if (_provider !== undefined) { - state.stack.push( - BigNumber.from( - (await _provider.getBlock(await _provider.getBlockNumber())).timestamp - ) - ) - } - else throw new Error("Undefined provider") - } - else throw new Error('Undefined Signer'); + state.stack.push( + BigNumber.from( + (await _provider.getBlock(await _provider.getBlockNumber())).timestamp + ) + ) + } + else throw new Error("Undefined provider") + } + else throw new Error('Undefined Signer'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpAdd.ts b/src/jsvm/ops/math/OpAdd.ts index 1fa3e63..8cde639 100644 --- a/src/jsvm/ops/math/OpAdd.ts +++ b/src/jsvm/ops/math/OpAdd.ts @@ -7,24 +7,24 @@ import { StateJSVM } from "../../types"; */ export function OpAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - let _item; - let _accumulator = ethers.constants.Zero; + let _item; + let _accumulator = ethers.constants.Zero; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); + _item = state.stack.pop(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.add(_item); - - if (_accumulator.gt(ethers.constants.MaxUint256)) { + _accumulator = _accumulator.add(_item); + + if (_accumulator.gt(ethers.constants.MaxUint256)) { - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpDiv.ts b/src/jsvm/ops/math/OpDiv.ts index eccb59d..74cca72 100644 --- a/src/jsvm/ops/math/OpDiv.ts +++ b/src/jsvm/ops/math/OpDiv.ts @@ -7,24 +7,24 @@ import { StateJSVM } from "../../types"; */ export function OpDiv(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.div(_item); - - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + _accumulator = _accumulator.div(_item); + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpExp.ts b/src/jsvm/ops/math/OpExp.ts index 7d7d01e..38c9caf 100644 --- a/src/jsvm/ops/math/OpExp.ts +++ b/src/jsvm/ops/math/OpExp.ts @@ -7,28 +7,28 @@ import { StateJSVM } from "../../types"; */ export function OpExp(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.pow(_item); + _accumulator = _accumulator.pow(_item); - if (_accumulator.gt(ethers.constants.MaxUint256)) { - - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts index 5097438..7818051 100644 --- a/src/jsvm/ops/math/OpMax.ts +++ b/src/jsvm/ops/math/OpMax.ts @@ -12,10 +12,7 @@ export function OpMax(this: RainJSVM,state: StateJSVM, operand: number, data?: a if ((items_.length = operand)) { - state.stack.push( - max(items_) - ); - + state.stack.push(max(items_)); } else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMin.ts b/src/jsvm/ops/math/OpMin.ts index 02a4748..5eeffae 100644 --- a/src/jsvm/ops/math/OpMin.ts +++ b/src/jsvm/ops/math/OpMin.ts @@ -12,9 +12,7 @@ export function OpMin(this: RainJSVM,state: StateJSVM, operand: number, data?: a if (items_.length === operand) { - state.stack.push( - min(items_) - ); + state.stack.push(min(items_)); } else throw new Error('Undefined stack variables'); diff --git a/src/jsvm/ops/math/OpMod.ts b/src/jsvm/ops/math/OpMod.ts index c39b29d..3ebdd30 100644 --- a/src/jsvm/ops/math/OpMod.ts +++ b/src/jsvm/ops/math/OpMod.ts @@ -7,24 +7,24 @@ import { StateJSVM } from "../../types"; */ export function OpMod(this: RainJSVM,state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.mod(_item); - - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + _accumulator = _accumulator.mod(_item); + + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpMul.ts b/src/jsvm/ops/math/OpMul.ts index 7717091..330b05f 100644 --- a/src/jsvm/ops/math/OpMul.ts +++ b/src/jsvm/ops/math/OpMul.ts @@ -8,24 +8,23 @@ import { StateJSVM } from "../../types"; */ export function OpMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - let _accumulator = ethers.constants.One; - let _item; + let _accumulator = ethers.constants.One; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = state.stack.pop(); + _item = state.stack.pop(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.mul(_item); - - if (_accumulator.gt(ethers.constants.MaxUint256)) { - - throw new Error('max numeric range overflow'); - } - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + _accumulator = _accumulator.mul(_item); + if (_accumulator.gt(ethers.constants.MaxUint256)) { + + throw new Error('max numeric range overflow'); + } + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/math/OpSub.ts b/src/jsvm/ops/math/OpSub.ts index 4248463..d12cdb6 100644 --- a/src/jsvm/ops/math/OpSub.ts +++ b/src/jsvm/ops/math/OpSub.ts @@ -7,27 +7,27 @@ import { StateJSVM } from "../../types"; */ export function OpSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = _accumulator.sub(_item); - } - else throw new Error('Undefined stack variables'); - } - if (_accumulator.isNegative()) { + _accumulator = _accumulator.sub(_item); + } + else throw new Error('Undefined stack variables'); + } + if (_accumulator.isNegative()) { - throw new Error('Invalid value (negative value not allowed)'); - } - else state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + throw new Error('Invalid value (negative value not allowed)'); + } + else state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18.ts b/src/jsvm/ops/math/fixedPoint/OpScale18.ts index 90981c7..ecf9f97 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -8,14 +8,13 @@ import { StateJSVM } from "../../../types"; */ export function OpScale18(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { - - state.stack.push( - scale18(item_, operand) - ); - } - else throw new Error('Undefined stack variable'); + if (item_ !== undefined) { + state.stack.push( + scale18(item_, operand) + ); + } + else throw new Error('Undefined stack variable'); } diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts index dee02a9..38d8d11 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts @@ -8,16 +8,15 @@ import { StateJSVM } from "../../../types"; */ export function OpScale18Div(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - fixedPointDiv(item1_, item2_, operand) - ); - - } - else throw new Error('Undefined stack variables'); + state.stack.push( + fixedPointDiv(item1_, item2_, operand) + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts index 1720e92..050db65 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts @@ -8,16 +8,15 @@ import { StateJSVM } from "../../../types"; */ export function OpScale18Mul(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - fixedPointMul(item1_, item2_, operand) - ); - - } - else throw new Error('Undefined stack variables'); + state.stack.push( + fixedPointMul(item1_, item2_, operand) + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts index 3a1ee0c..a9efaab 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts @@ -8,13 +8,11 @@ import { StateJSVM } from "../../../types"; */ export function OpScaleBy(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push(scaleBy(item_, operand)) - - } - else throw new Error("Undefined stack variable") - + state.stack.push(scaleBy(item_, operand)) + } + else throw new Error("Undefined stack variable") } \ No newline at end of file diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts index 4e25023..bc6dec4 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts @@ -8,15 +8,12 @@ import { StateJSVM } from "../../../types"; */ export function OpScaleN(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push( - scaleN(item_, operand) - ) + state.stack.push(scaleN(item_, operand)) - } - else throw new Error('Undefined stack variable'); - + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpAny.ts b/src/jsvm/ops/math/logic/OpAny.ts index b382165..1d26d6c 100644 --- a/src/jsvm/ops/math/logic/OpAny.ts +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -8,31 +8,28 @@ import { StateJSVM } from "../../../types"; */ export function OpAny(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const items_ = state.stack.splice(-operand); - let _check; - let _item; + const items_ = state.stack.splice(-operand); + let _check; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - if (_item.gt(0)) { + if (_item.gt(0)) { - _check = ethers.constants.One; - break; - - } - else _check = ethers.constants.Zero; - } - else throw new Error('Undefined stack variables'); - } - if (_check !== undefined) { + _check = ethers.constants.One; + break; + } + else _check = ethers.constants.Zero; + } + else throw new Error('Undefined stack variables'); + } + if (_check !== undefined) { - state.stack.push(_check); - - } - else throw new Error('Undefined stack variable'); - + state.stack.push(_check); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEagerIf.ts b/src/jsvm/ops/math/logic/OpEagerIf.ts index 4ee314d..413cd2d 100644 --- a/src/jsvm/ops/math/logic/OpEagerIf.ts +++ b/src/jsvm/ops/math/logic/OpEagerIf.ts @@ -7,15 +7,15 @@ import { StateJSVM } from "../../../types"; */ export function OpEagerIf(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const false_ = state.stack.pop(); - const true_ = state.stack.pop(); - const condition_ = state.stack.pop(); + const false_ = state.stack.pop(); + const true_ = state.stack.pop(); + const condition_ = state.stack.pop(); - if (false_ && true_ && condition_ !== undefined) { - - state.stack.push(condition_.gt(0) ? true_ : false_); - - } - else throw new Error('Undefined stack variables'); + if (false_ && true_ && condition_ !== undefined) { + state.stack.push( + condition_.gt(0) ? true_ : false_ + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEqualTo.ts b/src/jsvm/ops/math/logic/OpEqualTo.ts index 5b351d7..5e790c7 100644 --- a/src/jsvm/ops/math/logic/OpEqualTo.ts +++ b/src/jsvm/ops/math/logic/OpEqualTo.ts @@ -8,14 +8,14 @@ import { StateJSVM } from "../../../types"; */ export function OpEqualTo(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Underfined stack variables'); + state.stack.push( + item2_.eq(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Underfined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpEvery.ts b/src/jsvm/ops/math/logic/OpEvery.ts index 9929cf0..ee6e1df 100644 --- a/src/jsvm/ops/math/logic/OpEvery.ts +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -8,29 +8,28 @@ import { StateJSVM } from "../../../types"; */ export function OpEvery(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _check; - let _item; - - for (let i = 0; i < operand; i++) { - - _item = items_.shift(); - - if (_item !== undefined) { - - if (_item.isZero()) { - - _check = ethers.constants.Zero; - break; - } - else _check = ethers.constants.One; - } - else throw new Error('Undefined stack variables'); - } - if (_check !== undefined) { - - state.stack.push(_check); - } - else throw new Error('Undefined stack variable'); - + const items_ = state.stack.splice(-operand); + let _check; + let _item; + + for (let i = 0; i < operand; i++) { + + _item = items_.shift(); + + if (_item !== undefined) { + + if (_item.isZero()) { + + _check = ethers.constants.Zero; + break; + } + else _check = ethers.constants.One; + } + else throw new Error('Undefined stack variables'); + } + if (_check !== undefined) { + + state.stack.push(_check); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpGreaterThan.ts b/src/jsvm/ops/math/logic/OpGreaterThan.ts index 72ef689..bd0b15f 100644 --- a/src/jsvm/ops/math/logic/OpGreaterThan.ts +++ b/src/jsvm/ops/math/logic/OpGreaterThan.ts @@ -8,15 +8,14 @@ import { StateJSVM } from "../../../types"; */ export function OpGreaterThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { + if (item1_ && item2_ !== undefined) { - state.stack.push( - item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variables'); - + state.stack.push( + item2_.lt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpIsZero.ts b/src/jsvm/ops/math/logic/OpIsZero.ts index 0469a89..876855f 100644 --- a/src/jsvm/ops/math/logic/OpIsZero.ts +++ b/src/jsvm/ops/math/logic/OpIsZero.ts @@ -8,14 +8,13 @@ import { StateJSVM } from "../../../types"; */ export function OpIsZero(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item_ = state.stack.pop(); + const item_ = state.stack.pop(); - if (item_ !== undefined) { + if (item_ !== undefined) { - state.stack.push( - item_.isZero() ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variable'); - + state.stack.push( + item_.isZero() ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variable'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpLessThan.ts b/src/jsvm/ops/math/logic/OpLessThan.ts index e984a15..2e00f96 100644 --- a/src/jsvm/ops/math/logic/OpLessThan.ts +++ b/src/jsvm/ops/math/logic/OpLessThan.ts @@ -8,15 +8,14 @@ import { StateJSVM } from "../../../types"; */ export function OpLessThan(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ !== undefined) { - - state.stack.push( - item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero - ); - } - else throw new Error('Undefined stack variables'); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + if (item1_ && item2_ !== undefined) { + + state.stack.push( + item2_.gt(item1_) ? ethers.constants.One : ethers.constants.Zero + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts index 576f4f7..594dc66 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts @@ -9,21 +9,20 @@ import { ethers } from "ethers"; */ export function OpSaturatingAdd(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.Zero; - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.Zero; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = saturatingAdd(_accumulator, _item) + _accumulator = saturatingAdd(_accumulator, _item) - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); - + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts index 9e99113..017397e 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -8,25 +8,24 @@ import { StateJSVM } from "../../../types"; */ export function OpSaturatingMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = items_.shift(); + let _item; - if (_accumulator !== undefined) { + if (_accumulator !== undefined) { - for (let i = 1; i < operand; i++) { + for (let i = 1; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = saturatingMul(_accumulator, _item); - - } - else throw new Error('Undefined stack variabble'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + _accumulator = saturatingMul(_accumulator, _item); + } + else throw new Error('Undefined stack variabble'); + } + state.stack.push(_accumulator); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts index 0f292b7..4dfe5d6 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -9,21 +9,20 @@ import { ethers } from "ethers"; */ export function OpSaturatingSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.One; - let _item; + const items_ = state.stack.splice(-operand); + let _accumulator = ethers.constants.One; + let _item; - for (let i = 0; i < operand; i++) { + for (let i = 0; i < operand; i++) { - _item = items_.shift(); + _item = items_.shift(); - if (_item !== undefined) { + if (_item !== undefined) { - _accumulator = saturatingSub(_accumulator, _item) - - } - else throw new Error('Undefined stack variables'); - } - state.stack.push(_accumulator); + _accumulator = saturatingSub(_accumulator, _item) + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpITierV2Report.ts b/src/jsvm/ops/tier/OpITierV2Report.ts index 60243b0..db6a012 100644 --- a/src/jsvm/ops/tier/OpITierV2Report.ts +++ b/src/jsvm/ops/tier/OpITierV2Report.ts @@ -9,23 +9,22 @@ import { StateJSVM } from "../../types"; */ export async function OpITierV2Report(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const context_ = operand ? state.stack.splice(-operand) : []; - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const context_ = operand ? state.stack.splice(-operand) : []; + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { - const account_ = paddedUInt160(item2_); - const iTierV2Contract = new ITierV2( - paddedUInt160(item1_), - this.signer - ); + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); - state.stack.push( - await iTierV2Contract.report(account_, context_) - ); - - } - else throw new Error('Undefined stack variables'); + state.stack.push( + await iTierV2Contract.report(account_, context_) + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts index 9410a54..ddecefc 100644 --- a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts +++ b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts @@ -9,29 +9,28 @@ import { StateJSVM } from "../../types"; */ export async function OpITierV2ReportTimesForTier(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - const context_ = operand ? state.stack.splice(-operand) : []; - const item3_ = state.stack.pop(); + const context_ = operand ? state.stack.splice(-operand) : []; + const item3_ = state.stack.pop(); - if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { + if (item3_ !== undefined && item3_.toNumber() > Tier.ONE && item3_.toNumber() < Tier.EIGHT) { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { - const tier_ = item3_; - const account_ = paddedUInt160(item2_); - const iTierV2Contract = new ITierV2( - paddedUInt160(item1_), - this.signer - ); + if (item1_ && item2_ && this.signer !== undefined && context_.length === operand) { + const tier_ = item3_; + const account_ = paddedUInt160(item2_); + const iTierV2Contract = new ITierV2( + paddedUInt160(item1_), + this.signer + ); - state.stack.push( - await iTierV2Contract.reportTimeForTier(account_, tier_,context_) - ); - } - else throw new Error('Undefined stack variables'); - - } - else throw new Error("not valid tier"); + state.stack.push( + await iTierV2Contract.reportTimeForTier(account_, tier_,context_) + ); + } + else throw new Error('Undefined stack variables'); + } + else throw new Error("not valid tier"); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpSaturatingDiff.ts b/src/jsvm/ops/tier/OpSaturatingDiff.ts index b0b0b75..8685f2c 100644 --- a/src/jsvm/ops/tier/OpSaturatingDiff.ts +++ b/src/jsvm/ops/tier/OpSaturatingDiff.ts @@ -8,16 +8,12 @@ import { StateJSVM } from "../../types"; */ export function OpSaturatingDiff(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); - - if (item1_ && item2_ !== undefined) { - - state.stack.push( - saturatingDiff(item1_, item2_) - ); - - } - else throw new Error('Undefined stack variables'); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); + + if (item1_ && item2_ !== undefined) { + state.stack.push(saturatingDiff(item1_, item2_)); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpSelectLte.ts b/src/jsvm/ops/tier/OpSelectLte.ts index 185e505..2adbb9c 100644 --- a/src/jsvm/ops/tier/OpSelectLte.ts +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -8,19 +8,18 @@ import { StateJSVM } from "../../types"; */ export function OpSelectLte(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const length_ = operand & 31; - const mode_ = (operand >> 5) & 3; - const logic_ = operand >> 7; - const timestamp_ = state.stack.pop(); - const reports_ = state.stack.splice(-length_) + const length_ = operand & 31; + const mode_ = (operand >> 5) & 3; + const logic_ = operand >> 7; + const timestamp_ = state.stack.pop(); + const reports_ = state.stack.splice(-length_) - if (timestamp_ !== undefined && reports_.length === length_) { - - state.stack.push( - selectLte(reports_, timestamp_, logic_, mode_, length_) - ); - - } - else throw new Error("Undefined stack variables") + if (timestamp_ !== undefined && reports_.length === length_) { + state.stack.push( + selectLte(reports_, timestamp_, logic_, mode_, length_) + ); + + } + else throw new Error("Undefined stack variables") } \ No newline at end of file diff --git a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts index 1640daa..e59b849 100644 --- a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts +++ b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts @@ -8,16 +8,14 @@ import { StateJSVM } from "../../types"; */ export function OpUpdateTimesForTierRange(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { - const item2_ = state.stack.pop(); - const item1_ = state.stack.pop(); + const item2_ = state.stack.pop(); + const item1_ = state.stack.pop(); - if (item1_ && item2_ !== undefined) { - - state.stack.push( - updateTimesForTierRange(item1_, item2_, operand) - ); - - } - else throw new Error('Undefined stack variables'); + if (item1_ && item2_ !== undefined) { + state.stack.push( + updateTimesForTierRange(item1_, item2_, operand) + ); + } + else throw new Error('Undefined stack variables'); } \ No newline at end of file diff --git a/src/jsvm/simulation/CombineTierSimulation.ts b/src/jsvm/simulation/CombineTierSimulation.ts index 2cae07e..1f6b230 100644 --- a/src/jsvm/simulation/CombineTierSimulation.ts +++ b/src/jsvm/simulation/CombineTierSimulation.ts @@ -11,65 +11,65 @@ import { vmSimulation } from "./vmSimulation"; * @remarks * this class is compatible with @see itiers interface with using its address */ - export class CombinetierSimulation extends vmSimulation { +export class CombinetierSimulation extends vmSimulation { - /** - * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode - * and updating storage types after method calls, and needs to be a string number or hex string. - */ - public address: string; - - /** - * The report of each account which is compatible and can be stored in @see itiers interface as well - */ - public report: SStore = {}; - - /** - * Constructor of this class - * - * @param address - this CombineTier class adress which needs to be a string number or hex string - * @param reports - (optional) the initial reports object - */ - constructor (address: string, reports?: SStore) { - super(); - this.address = address; - if (reports !== undefined) { - this.report = reports; + /** + * The CombineTier address of this class that the simulation is done for. this is needed for THIS_ADDRESS opcode + * and updating storage types after method calls, and needs to be a string number or hex string. + */ + public address: string; + + /** + * The report of each account which is compatible and can be stored in @see itiers interface as well + */ + public report: SStore = {}; + + /** + * Constructor of this class + * + * @param address - this CombineTier class adress which needs to be a string number or hex string + * @param reports - (optional) the initial reports object + */ + constructor (address: string, reports?: SStore) { + super(); + this.address = address; + if (reports !== undefined) { + this.report = reports; + } } - } - - /** - * Method to get the report for an account which then will be stored in the class's report property and can be - * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of - * the account it is been called for - * - * @param account - the account to get and update the report for which needs to be string number or hex string - * @param timestamp - (optional) custom timestamp to be used when running the script - * @param blockNumber - (optional) custom block number to be used when running the script - * - * @returns the report of the account in a 64 char length hex string - */ - public async setReport( - account: string, - timestamp?: number, - blockNumber?: number - ): Promise { - const entrypoint = 0; - const _account = paddedUInt160(account) - - if (this.script !== undefined) { - let simulation = new CombineTierJSVM( - this.script, - {applyOpFn: this.OpFns} - ); - const newReport = (await simulation.run( - {context: [_account], timestamp, blockNumber}, - entrypoint - ))[0]; - this.report[_account] = newReport; - return paddedUInt256(newReport); + /** + * Method to get the report for an account which then will be stored in the class's report property and can be + * accessed later on, each time this method is called it runs the JSVM for the scripts and updates the report of + * the account it is been called for + * + * @param account - the account to get and update the report for which needs to be string number or hex string + * @param timestamp - (optional) custom timestamp to be used when running the script + * @param blockNumber - (optional) custom block number to be used when running the script + * + * @returns the report of the account in a 64 char length hex string + */ + public async setReport( + account: string, + timestamp?: number, + blockNumber?: number + ): Promise { + const entrypoint = 0; + const _account = paddedUInt160(account) + + if (this.script !== undefined) { + let simulation = new CombineTierJSVM( + this.script, + {applyOpFn: this.OpFns} + ); + const newReport = (await simulation.run( + {context: [_account], timestamp, blockNumber}, + entrypoint + ))[0]; + this.report[_account] = newReport; + + return paddedUInt256(newReport); + } + else throw new Error("no script to execute") } - else throw new Error("no script to execute") - } } diff --git a/src/rule-builder/lib.ts b/src/rule-builder/lib.ts index c99c029..66e5ad2 100644 --- a/src/rule-builder/lib.ts +++ b/src/rule-builder/lib.ts @@ -10,220 +10,221 @@ import { CombineTierGenerator } from '../contracts/script-generators/combineTier * Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods */ export const lib: Record StateConfig> = { - 'always': () => { - return VM.constant(ethers.constants.One) - }, - - 'never': () => { - return VM.constant(ethers.constants.Zero) - }, - - 'input': ({ index }: Filter<'input'>['input']['args']) => { - return VM.input(index); - }, - - 'before-time': ({ - timestamp, - exactTime, - }: Filter<'before-time'>['before-time']['args']) => { - const operator = exactTime ? 'lte' : 'lt'; - return VM.beforeAfterTime(timestamp, operator); - }, - - 'after-time': ({ - timestamp, - exactTime, - }: Filter<'before-time'>['before-time']['args']) => { - const operator = exactTime ? 'gte' : 'gt'; - return VM.beforeAfterTime(timestamp, operator); - }, - - 'between-times': ({ - startTimestamp, - endTimestamp, - }: Filter<'between-times'>['between-times']['args']) => { - return new BetweenTimestamps(startTimestamp, endTimestamp); - }, - - 'before-block': ({ - block, - exactBlock, - }: Filter<'before-block'>['before-block']['args']) => { - const operator = exactBlock ? 'lte' : 'lt'; - return VM.beforeAfterTime(block, operator); - }, - - 'after-block': ({ - block, - exactBlock, - }: Filter<'after-block'>['after-block']['args']) => { - const operator = exactBlock ? 'gte' : 'gt'; - return VM.beforeAfterTime(block, operator); - }, - - 'between-blocks': ({ - startBlock, - endBlock, - }: Filter<'between-blocks'>['between-blocks']['args']) => { - return new BetweenTimestamps(startBlock, endBlock); - }, - - 'has-min-tier': ({ - tierAddress, - tierContext, - minTier, - }: Filter<'has-min-tier'>['has-min-tier']['args']) => { - return VM.hasMinTier( - new CombineTierGenerator(tierAddress, { - staticTierContext: tierContext, - delegatedReport: true, - }), - minTier, - false - ); - }, - - 'has-any-tier': ({ - tierAddress, - tierContext, - }: Filter<'has-any-tier'>['has-any-tier']['args']) => { - return VM.hasAnyTier( - new CombineTierGenerator(tierAddress, { - staticTierContext: tierContext, - delegatedReport: true, - }), - false - ); - }, - - 'user-erc20-balance': ({ - tokenAddress, - }: Filter<'user-erc20-balance'>['user-erc20-balance']['args']) => { - return VM.getAsset('erc20-balance-of', [tokenAddress], undefined, true); - }, - - 'erc20-total-supply': ({ - tokenAddress, - }: Filter<'erc20-total-supply'>['erc20-total-supply']['args']) => { - return VM.getAsset('erc20-total-supply', [tokenAddress]); - }, - - 'user-erc721-balance': ({ - tokenAddress, - }: Filter<'user-erc721-balance'>['user-erc721-balance']['args']) => { - return VM.getAsset('erc721-balance-of', [tokenAddress], undefined, true); - }, - - 'erc721-owner': ({ - tokenAddress, - id, - }: Filter<'erc721-owner'>['erc721-owner']['args']) => { - return VM.getAsset('erc721-owner-of', [tokenAddress], [id], true); - }, - - 'user-erc1155-balance': ({ - tokenAddress, - id, - }: Filter<'user-erc1155-balance'>['user-erc1155-balance']['args']) => { - return VM.getAsset('erc1155-balance-of', [tokenAddress], [id], true); - }, - - 'user-erc20-snapshot-balance': ({ - tokenAddress, - id, - }: Filter< - 'user-erc20-snapshot-balance' - >['user-erc20-snapshot-balance']['args']) => { - return VM.getAsset('snapshot-balance-of', [tokenAddress], [id], true); - }, - - 'erc20-snapshot-total-supply': ({ - tokenAddress, - id, - }: Filter< - 'erc20-snapshot-total-supply' - >['erc20-snapshot-total-supply']['args']) => { - return VM.getAsset('snapshot-total-supply', [tokenAddress], [id], true); - }, - - constant: ({ value }: Filter<'constant'>['constant']['args']) => { - return VM.constant(value); - }, - - 'increasing-by-time': ({ - startValue, - endValue, - startTimestamp, - endTimestamp, - }: Filter<'increasing-by-time'>['increasing-by-time']['args']) => { - return VM.inc(startValue, endValue, startTimestamp, endTimestamp); - }, - - 'decreasing-by-time': ({ - startValue, - endValue, - startTimestamp, - endTimestamp, - }: Filter<'decreasing-by-time'>['decreasing-by-time']['args']) => { - return VM.dec(startValue, endValue, startTimestamp, endTimestamp); - }, - - 'increasing-by-block': ({ - startValue, - endValue, - startBlock, - endBlock, - }: Filter<'increasing-by-block'>['increasing-by-block']['args']) => { - return VM.inc(startValue, endValue, startBlock, endBlock, true); - }, - - 'decreasing-by-block': ({ - startValue, - endValue, - startBlock, - endBlock, - }: Filter<'decreasing-by-block'>['decreasing-by-block']['args']) => { - return VM.dec(startValue, endValue, startBlock, endBlock, true); - }, - - 'increasing-by-time-period': ({ - startValue, - startTimestamp, - margin, - periodLength, - endValue - }: Filter<'increasing-by-time-period'>['increasing-by-time-period']['args']) => { - return VM.incBy(startValue, startTimestamp, margin, periodLength, endValue) - }, - - 'decreasing-by-time-period': ({ - startValue, - startTimestamp, - margin, - periodLength, - endValue - }: Filter<'decreasing-by-time-period'>['decreasing-by-time-period']['args']) => { - return VM.decBy(startValue, startTimestamp, margin, periodLength, endValue) - }, - - 'increasing-by-block-period': ({ - startValue, - startBlock, - margin, - periodLength, - endValue - }: Filter<'increasing-by-block-period'>['increasing-by-block-period']['args']) => { - return VM.incBy(startValue, startBlock, margin, periodLength, endValue, true) - }, - - 'decreasing-by-block-period': ({ - startValue, - startBlock, - margin, - periodLength, - endValue - }: Filter<'decreasing-by-block-period'>['decreasing-by-block-period']['args']) => { - return VM.decBy(startValue, startBlock, margin, periodLength, endValue, true) - }, + + 'always': () => { + return VM.constant(ethers.constants.One) + }, + + 'never': () => { + return VM.constant(ethers.constants.Zero) + }, + + 'input': ({ index }: Filter<'input'>['input']['args']) => { + return VM.input(index); + }, + + 'before-time': ({ + timestamp, + exactTime, + }: Filter<'before-time'>['before-time']['args']) => { + const operator = exactTime ? 'lte' : 'lt'; + return VM.beforeAfterTime(timestamp, operator); + }, + + 'after-time': ({ + timestamp, + exactTime, + }: Filter<'before-time'>['before-time']['args']) => { + const operator = exactTime ? 'gte' : 'gt'; + return VM.beforeAfterTime(timestamp, operator); + }, + + 'between-times': ({ + startTimestamp, + endTimestamp, + }: Filter<'between-times'>['between-times']['args']) => { + return new BetweenTimestamps(startTimestamp, endTimestamp); + }, + + 'before-block': ({ + block, + exactBlock, + }: Filter<'before-block'>['before-block']['args']) => { + const operator = exactBlock ? 'lte' : 'lt'; + return VM.beforeAfterTime(block, operator); + }, + + 'after-block': ({ + block, + exactBlock, + }: Filter<'after-block'>['after-block']['args']) => { + const operator = exactBlock ? 'gte' : 'gt'; + return VM.beforeAfterTime(block, operator); + }, + + 'between-blocks': ({ + startBlock, + endBlock, + }: Filter<'between-blocks'>['between-blocks']['args']) => { + return new BetweenTimestamps(startBlock, endBlock); + }, + + 'has-min-tier': ({ + tierAddress, + tierContext, + minTier, + }: Filter<'has-min-tier'>['has-min-tier']['args']) => { + return VM.hasMinTier( + new CombineTierGenerator(tierAddress, { + staticTierContext: tierContext, + delegatedReport: true, + }), + minTier, + false + ); + }, + + 'has-any-tier': ({ + tierAddress, + tierContext, + }: Filter<'has-any-tier'>['has-any-tier']['args']) => { + return VM.hasAnyTier( + new CombineTierGenerator(tierAddress, { + staticTierContext: tierContext, + delegatedReport: true, + }), + false + ); + }, + + 'user-erc20-balance': ({ + tokenAddress, + }: Filter<'user-erc20-balance'>['user-erc20-balance']['args']) => { + return VM.getAsset('erc20-balance-of', [tokenAddress], undefined, true); + }, + + 'erc20-total-supply': ({ + tokenAddress, + }: Filter<'erc20-total-supply'>['erc20-total-supply']['args']) => { + return VM.getAsset('erc20-total-supply', [tokenAddress]); + }, + + 'user-erc721-balance': ({ + tokenAddress, + }: Filter<'user-erc721-balance'>['user-erc721-balance']['args']) => { + return VM.getAsset('erc721-balance-of', [tokenAddress], undefined, true); + }, + + 'erc721-owner': ({ + tokenAddress, + id, + }: Filter<'erc721-owner'>['erc721-owner']['args']) => { + return VM.getAsset('erc721-owner-of', [tokenAddress], [id], true); + }, + + 'user-erc1155-balance': ({ + tokenAddress, + id, + }: Filter<'user-erc1155-balance'>['user-erc1155-balance']['args']) => { + return VM.getAsset('erc1155-balance-of', [tokenAddress], [id], true); + }, + + 'user-erc20-snapshot-balance': ({ + tokenAddress, + id, + }: Filter< + 'user-erc20-snapshot-balance' + >['user-erc20-snapshot-balance']['args']) => { + return VM.getAsset('snapshot-balance-of', [tokenAddress], [id], true); + }, + + 'erc20-snapshot-total-supply': ({ + tokenAddress, + id, + }: Filter< + 'erc20-snapshot-total-supply' + >['erc20-snapshot-total-supply']['args']) => { + return VM.getAsset('snapshot-total-supply', [tokenAddress], [id], true); + }, + + constant: ({ value }: Filter<'constant'>['constant']['args']) => { + return VM.constant(value); + }, + + 'increasing-by-time': ({ + startValue, + endValue, + startTimestamp, + endTimestamp, + }: Filter<'increasing-by-time'>['increasing-by-time']['args']) => { + return VM.inc(startValue, endValue, startTimestamp, endTimestamp); + }, + + 'decreasing-by-time': ({ + startValue, + endValue, + startTimestamp, + endTimestamp, + }: Filter<'decreasing-by-time'>['decreasing-by-time']['args']) => { + return VM.dec(startValue, endValue, startTimestamp, endTimestamp); + }, + + 'increasing-by-block': ({ + startValue, + endValue, + startBlock, + endBlock, + }: Filter<'increasing-by-block'>['increasing-by-block']['args']) => { + return VM.inc(startValue, endValue, startBlock, endBlock, true); + }, + + 'decreasing-by-block': ({ + startValue, + endValue, + startBlock, + endBlock, + }: Filter<'decreasing-by-block'>['decreasing-by-block']['args']) => { + return VM.dec(startValue, endValue, startBlock, endBlock, true); + }, + + 'increasing-by-time-period': ({ + startValue, + startTimestamp, + margin, + periodLength, + endValue + }: Filter<'increasing-by-time-period'>['increasing-by-time-period']['args']) => { + return VM.incBy(startValue, startTimestamp, margin, periodLength, endValue) + }, + + 'decreasing-by-time-period': ({ + startValue, + startTimestamp, + margin, + periodLength, + endValue + }: Filter<'decreasing-by-time-period'>['decreasing-by-time-period']['args']) => { + return VM.decBy(startValue, startTimestamp, margin, periodLength, endValue) + }, + + 'increasing-by-block-period': ({ + startValue, + startBlock, + margin, + periodLength, + endValue + }: Filter<'increasing-by-block-period'>['increasing-by-block-period']['args']) => { + return VM.incBy(startValue, startBlock, margin, periodLength, endValue, true) + }, + + 'decreasing-by-block-period': ({ + startValue, + startBlock, + margin, + periodLength, + endValue + }: Filter<'decreasing-by-block-period'>['decreasing-by-block-period']['args']) => { + return VM.decBy(startValue, startBlock, margin, periodLength, endValue, true) + }, } as const; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index d5b2e4e..672d97a 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -3,12 +3,12 @@ import { BigNumberish, BytesLike } from 'ethers'; import { StateConfig, VM } from '../classes/vm'; import { areEqualConfigs, concat } from '../utils'; import { - Condition, - ConditionGroup, - Currency, - Modifier, - Price, - Quantity, + Condition, + ConditionGroup, + Currency, + Modifier, + Price, + Quantity, } from './types'; @@ -36,280 +36,280 @@ import { * ``` */ export class RuleBuilder { - // StateConfig Properties of this class - public constants: BigNumberish[]; - public sources: BytesLike[]; + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; - /** - * Constructor of RuleBuilder class - * - * @param currencies - Array of Currency - */ - constructor(public readonly currencies: Currency[]) { - const vm_ = RuleBuilder.from(currencies); - this.constants = vm_.constants; - this.sources = vm_.sources; - } - - /** - * @public - * Method to generate a multi currency rule-based StateConfig - * - * @param currencies - An array of Currency objects - * @returns StateConfig - */ - public static from(currencies: Currency[]): StateConfig { - let rules_: StateConfig[] = []; - let thens_: StateConfig[] = []; - let dps_: StateConfig[] = []; - let count = 0; - let totalCount = 0; - - for (const currency of currencies) { - totalCount += currency.rules.length * 2; + /** + * Constructor of RuleBuilder class + * + * @param currencies - Array of Currency + */ + constructor(public readonly currencies: Currency[]) { + const vm_ = RuleBuilder.from(currencies); + this.constants = vm_.constants; + this.sources = vm_.sources; } - for (let i = 0; i < currencies.length; i++) { - let qs_: StateConfig[] = []; - let ps_: StateConfig[] = []; - let q_: StateConfig; - let p_: StateConfig; + /** + * @public + * Method to generate a multi currency rule-based StateConfig + * + * @param currencies - An array of Currency objects + * @returns StateConfig + */ + public static from(currencies: Currency[]): StateConfig { + let rules_: StateConfig[] = []; + let thens_: StateConfig[] = []; + let dps_: StateConfig[] = []; + let count = 0; + let totalCount = 0; - for (let rule of currencies[i].rules) { - if ( - areEqualConfigs( - this.getConditionGroupConfig(rule.quantityConditions), - this.getConditionGroupConfig(rule.priceConditions) - ) - ) { - rules_.push(this.getConditionGroupConfig(rule.quantityConditions)); - rules_.push(VM.stack(count * 2)) - } - else { - rules_.push(this.getConditionGroupConfig(rule.quantityConditions)); - rules_.push(this.getConditionGroupConfig(rule.priceConditions)); + for (const currency of currencies) { + totalCount += currency.rules.length * 2; } - qs_.push( - VM.mulTogether( - [VM.stack(count * 2), this.getQPConfig(rule.quantity)], - false - ) - ); - ps_.push( - VM.ifelse( - VM.stack((count * 2) + 1), - this.getQPConfig(rule.price), - VM.stack(totalCount + i), - false - ) - ); - count++; - } + for (let i = 0; i < currencies.length; i++) { + let qs_: StateConfig[] = []; + let ps_: StateConfig[] = []; + let q_: StateConfig; + let p_: StateConfig; - if (currencies[i].rules.length > 0) { - dps_.push(this.getQPConfig(currencies[i].default.price)); + for (let rule of currencies[i].rules) { + if ( + areEqualConfigs( + this.getConditionGroupConfig(rule.quantityConditions), + this.getConditionGroupConfig(rule.priceConditions) + ) + ) { + rules_.push(this.getConditionGroupConfig(rule.quantityConditions)); + rules_.push(VM.stack(count * 2)) + } + else { + rules_.push(this.getConditionGroupConfig(rule.quantityConditions)); + rules_.push(this.getConditionGroupConfig(rule.priceConditions)); + } - qs_.push(this.getQPConfig(currencies[i].default.quantity)); - ps_.push(VM.stack(totalCount + i)); - - q_ = (VM[currencies[i].pick.quantities](qs_, false)); - p_ = (VM[currencies[i].pick.prices](ps_, false)); - } - else { - rules_.push({constants: [], sources: [concat([])]}); - dps_.push({constants: [], sources: [concat([])]}); + qs_.push( + VM.mulTogether( + [VM.stack(count * 2), this.getQPConfig(rule.quantity)], + false + ) + ); + ps_.push( + VM.ifelse( + VM.stack((count * 2) + 1), + this.getQPConfig(rule.price), + VM.stack(totalCount + i), + false + ) + ); + count++; + } - p_ = this.getQPConfig(currencies[i].default.price); - q_ = this.getQPConfig(currencies[i].default.quantity); - } + if (currencies[i].rules.length > 0) { + dps_.push(this.getQPConfig(currencies[i].default.price)); - let qMod = currencies[i].quantityGlobalModifier; - let pMod = currencies[i].priceGlobalModifier; - if (qMod !== undefined) { - thens_.push(this.applyModifier(q_, qMod)); - } - else { - thens_.push(q_); - } - if (pMod !== undefined) { - thens_.push(this.applyModifier(p_, pMod)); - } - else { - thens_.push(p_); - } - } + qs_.push(this.getQPConfig(currencies[i].default.quantity)); + ps_.push(VM.stack(totalCount + i)); + + q_ = (VM[currencies[i].pick.quantities](qs_, false)); + p_ = (VM[currencies[i].pick.prices](ps_, false)); + } + else { + rules_.push({constants: [], sources: [concat([])]}); + dps_.push({constants: [], sources: [concat([])]}); - return VM.multi([...rules_, ...dps_, ...thens_], false); - } + p_ = this.getQPConfig(currencies[i].default.price); + q_ = this.getQPConfig(currencies[i].default.quantity); + } - /** - * Method to get the conditions' StateConfig of a ConditionGroup seperately - * - * @param conditionGroup - The ConditionGroup object - * @returns Array of StateConfig - */ - public static getConditionConfig(condition: Condition): StateConfig { + let qMod = currencies[i].quantityGlobalModifier; + let pMod = currencies[i].priceGlobalModifier; + if (qMod !== undefined) { + thens_.push(this.applyModifier(q_, qMod)); + } + else { + thens_.push(q_); + } + if (pMod !== undefined) { + thens_.push(this.applyModifier(p_, pMod)); + } + else { + thens_.push(p_); + } + } - if (condition === 'always' || condition === 'never') { - return lib[condition](); - } - else if ('constants' && 'sources' in condition) { - return condition; + return VM.multi([...rules_, ...dps_, ...thens_], false); } - else if ('struct' in condition) { - if ('subject' in condition.struct) { - if (condition.operator === 'true') { - return lib[condition.struct.subject](condition.struct.args); - } - else if (condition.operator === 'not') { - return VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args) - ); - } - else { - if ('subject' in condition.struct2!) { - return VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args), - lib[condition.struct2!.subject](condition.struct2.args), - false - ); - } - else { - return VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args), - condition.struct2!, - false - ); - } + + /** + * Method to get the conditions' StateConfig of a ConditionGroup seperately + * + * @param conditionGroup - The ConditionGroup object + * @returns Array of StateConfig + */ + public static getConditionConfig(condition: Condition): StateConfig { + + if (condition === 'always' || condition === 'never') { + return lib[condition](); } - } - else { - if (condition.operator === 'true') { - return condition.struct; - } - else if (condition.operator === 'not') { - return VM[condition.operator](condition.struct); - } - else { - if ('subject' in condition.struct2!) { - return VM[condition.operator]( - condition.struct, - lib[condition.struct2!.subject](condition.struct2.args), - false - ); - } - else { - return VM[condition.operator]( - condition.struct, - condition.struct2!, - false - ); - } + else if ('constants' && 'sources' in condition) { + return condition; } - } + else if ('struct' in condition) { + if ('subject' in condition.struct) { + if (condition.operator === 'true') { + return lib[condition.struct.subject](condition.struct.args); + } + else if (condition.operator === 'not') { + return VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args) + ); + } + else { + if ('subject' in condition.struct2!) { + return VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args), + lib[condition.struct2!.subject](condition.struct2.args), + false + ); + } + else { + return VM[condition.operator]( + lib[condition.struct.subject](condition.struct.args), + condition.struct2!, + false + ); + } + } + } + else { + if (condition.operator === 'true') { + return condition.struct; + } + else if (condition.operator === 'not') { + return VM[condition.operator](condition.struct); + } + else { + if ('subject' in condition.struct2!) { + return VM[condition.operator]( + condition.struct, + lib[condition.struct2!.subject](condition.struct2.args), + false + ); + } + else { + return VM[condition.operator]( + condition.struct, + condition.struct2!, + false + ); + } + } + } + } + else throw new Error('Invalid argument'); } - else throw new Error('Invalid argument'); - } - /** - * Method to get the a ConditionGroup StateConfig - * - * @param conditionGroup - The ConditionGroup object - * @returns StateConfig - */ - public static getConditionGroupConfig(conditionGroup: ConditionGroup): StateConfig { - let group_: StateConfig[] = []; + /** + * Method to get the a ConditionGroup StateConfig + * + * @param conditionGroup - The ConditionGroup object + * @returns StateConfig + */ + public static getConditionGroupConfig(conditionGroup: ConditionGroup): StateConfig { + let group_: StateConfig[] = []; - if (conditionGroup === 'always' || conditionGroup === 'never') { - return lib[conditionGroup](); - } - else if ('constants' && 'sources' in conditionGroup) { - return conditionGroup; - } - else if ('conditions' in conditionGroup) { - for (const item of conditionGroup.conditions) { - if (item === 'always' || item === 'never') { - return lib[item](); + if (conditionGroup === 'always' || conditionGroup === 'never') { + return lib[conditionGroup](); } - else if ('constants' && 'sources' in item) { - return item; + else if ('constants' && 'sources' in conditionGroup) { + return conditionGroup; } - else if ('conditions' in item) { - group_.push(this.getConditionGroupConfig(item)); - } - else { - group_.push(this.getConditionConfig(item)); + else if ('conditions' in conditionGroup) { + for (const item of conditionGroup.conditions) { + if (item === 'always' || item === 'never') { + return lib[item](); + } + else if ('constants' && 'sources' in item) { + return item; + } + else if ('conditions' in item) { + group_.push(this.getConditionGroupConfig(item)); + } + else { + group_.push(this.getConditionConfig(item)); + } + } + if (conditionGroup.operator === 'true') { + return group_[0]; + } + else if (conditionGroup.operator === 'not') { + return VM[conditionGroup.operator](group_[0]); + } + else { + return VM[conditionGroup.operator](group_, false); + } } - } - if (conditionGroup.operator === 'true') { - return group_[0]; - } - else if (conditionGroup.operator === 'not') { - return VM[conditionGroup.operator](group_[0]); - } - else { - return VM[conditionGroup.operator](group_, false); - } + else throw new Error('Invalid argument'); } - else throw new Error('Invalid argument'); - } - /** - * Method to get the price or quantity StateConfig - * - * @param pq - The price or quantity - * @returns StateConfig - */ - public static getQPConfig(qp: Price | Quantity): StateConfig { - if ('subject' && 'args' in qp.struct) { - if (qp.modifier !== undefined) { - return this.applyModifier( - lib[qp.struct.subject](qp.struct.args), - qp.modifier - ); - } - else { - return lib[qp.struct.subject](qp.struct.args); - } - } - else if ('consstants' && 'sources' in qp.struct) { - if (qp.modifier !== undefined) { - return this.applyModifier(qp.struct, qp.modifier); - } - else { - return qp.struct; - } - } - else throw new Error('Invalid argument'); - } + /** + * Method to get the price or quantity StateConfig + * + * @param pq - The price or quantity + * @returns StateConfig + */ + public static getQPConfig(qp: Price | Quantity): StateConfig { + if ('subject' && 'args' in qp.struct) { + if (qp.modifier !== undefined) { + return this.applyModifier( + lib[qp.struct.subject](qp.struct.args), + qp.modifier + ); + } + else { + return lib[qp.struct.subject](qp.struct.args); + } + } + else if ('consstants' && 'sources' in qp.struct) { + if (qp.modifier !== undefined) { + return this.applyModifier(qp.struct, qp.modifier); + } + else { + return qp.struct; + } + } + else throw new Error('Invalid argument'); + } - /** - * @public - * Method to generate a single currency rule-based StateConfig - * - * @param config - The config to apply modifier on - * @param modifier - The object of type Modifier - * @returns StateConfig - */ - public static applyModifier( - config: StateConfig, - modifier: Modifier - ): StateConfig { - if (modifier.type === 'discount') { - return VM.setDisccount( - config, - this.getConditionGroupConfig(modifier.condition), - modifier.values - ); - } - else if (modifier.type === 'multiplier') { - return VM.setMultiplier( - config, - this.getConditionGroupConfig(modifier.condition), - modifier.values - ); - } - else throw new Error('Invalid Arguments'); - } + /** + * @public + * Method to generate a single currency rule-based StateConfig + * + * @param config - The config to apply modifier on + * @param modifier - The object of type Modifier + * @returns StateConfig + */ + public static applyModifier( + config: StateConfig, + modifier: Modifier + ): StateConfig { + if (modifier.type === 'discount') { + return VM.setDisccount( + config, + this.getConditionGroupConfig(modifier.condition), + modifier.values + ); + } + else if (modifier.type === 'multiplier') { + return VM.setMultiplier( + config, + this.getConditionGroupConfig(modifier.condition), + modifier.values + ); + } + else throw new Error('Invalid Arguments'); + } } diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index c4dfe21..e4c4eb2 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -26,33 +26,33 @@ export type ModifierType = 'discount' | 'multiplier'; * All the valid logical operators used for comparison of Struct and/or StateConfig objects */ export type Operator = - | 'true' - | 'not' - | 'and' - | 'or' - | 'nand' - | 'nor' - | 'xor' // should not be used unless it is really necessary as it is gas intensive cause it doubles the scripts passed to it - | 'xnor' // should not be used unless it is really necessary as it is gas intensive cause it doubles the scripts passed to it - | 'min' - | 'max' - | 'eq' - | 'gt' - | 'lt' - | 'gte' - | 'lte'; + | 'true' + | 'not' + | 'and' + | 'or' + | 'nand' + | 'nor' + | 'xor' // should not be used unless it is really necessary as it is gas intensive cause it doubles the scripts passed to it + | 'xnor' // should not be used unless it is really necessary as it is gas intensive cause it doubles the scripts passed to it + | 'min' + | 'max' + | 'eq' + | 'gt' + | 'lt' + | 'gte' + | 'lte'; /** * @public * Type for conditions which is a comparison between structs which results in a boolean StateConfig */ export type Condition = { - struct: Struct; - operator: Extract< - Operator, - 'true' | 'not' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte' - >; - struct2?: Struct; + struct: Struct; + operator: Extract< + Operator, + 'true' | 'not' | 'eq' | 'gt' | 'lt' | 'gte' | 'lte' + >; + struct2?: Struct; } | Always | Never | StateConfig; /** @@ -61,11 +61,11 @@ export type Condition = { * valid logical operators which results in a a boolean StateConfig */ export type ConditionGroup = { - conditions: (Condition | ConditionGroup)[]; - operator: Exclude< - Operator, - 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'lte' | 'gte' - >; + conditions: (Condition | ConditionGroup)[]; + operator: Exclude< + Operator, + 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'lte' | 'gte' + >; } | Always | Never | StateConfig; /** @@ -78,10 +78,10 @@ export type ConditionGroup = { * in both of 'quantityConditions' and 'priceConditions */ export type Rule = { - quantityConditions: ConditionGroup; - priceConditions: ConditionGroup; - quantity: Quantity; - price: Price; + quantityConditions: ConditionGroup; + priceConditions: ConditionGroup; + quantity: Quantity; + price: Price; }; /** @@ -89,8 +89,8 @@ export type Rule = { * The default block, i.e. default quantity and price */ export type Default = { - quantity: Quantity; - price: Price; + quantity: Quantity; + price: Price; }; /** @@ -98,14 +98,14 @@ export type Default = { * Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig */ export type Currency = { - rules: Rule[]; - default: Default; - quantityGlobalModifier?: Modifier; - priceGlobalModifier?: Modifier; - pick: { - quantities: Extract; - prices: Extract; - }; + rules: Rule[]; + default: Default; + quantityGlobalModifier?: Modifier; + priceGlobalModifier?: Modifier; + pick: { + quantities: Extract; + prices: Extract; + }; }; /** @@ -113,18 +113,18 @@ export type Currency = { * Type for price/quantity modifier based on a tier report or a Rule */ export type Modifier = { - /** - * Determines the modifier's type - */ - type: ModifierType; - /** - * the rule of the modifier - */ - condition: ConditionGroup; - /** - * The modifing value(s) - */ - values: number; + /** + * Determines the modifier's type + */ + type: ModifierType; + /** + * the rule of the modifier + */ + condition: ConditionGroup; + /** + * The modifing value(s) + */ + values: number; }; /** @@ -132,19 +132,19 @@ export type Modifier = { * Quantity type */ export type Quantity = { - struct: - | StateConfig - | Filter<'input'>['input'] - | Filter<'constant'>['constant'] - | Filter<'increasing-by-time'>['increasing-by-time'] - | Filter<'decreasing-by-time'>['decreasing-by-time'] - | Filter<'increasing-by-block'>['increasing-by-block'] - | Filter<'decreasing-by-block'>['decreasing-by-block'] - | Filter<'increasing-by-time-period'>['increasing-by-time-period'] - | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] - | Filter<'increasing-by-block-period'>['increasing-by-block-period'] - | Filter<'decreasing-by-block-period'>['decreasing-by-block-period'] - modifier?: Modifier; + struct: + | StateConfig + | Filter<'input'>['input'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + | Filter<'increasing-by-time-period'>['increasing-by-time-period'] + | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] + | Filter<'increasing-by-block-period'>['increasing-by-block-period'] + | Filter<'decreasing-by-block-period'>['decreasing-by-block-period'] + modifier?: Modifier; }; /** @@ -152,19 +152,19 @@ export type Modifier = { * Price type */ export type Price = { - struct: - | StateConfig - | Filter<'input'>['input'] - | Filter<'constant'>['constant'] - | Filter<'increasing-by-time'>['increasing-by-time'] - | Filter<'decreasing-by-time'>['decreasing-by-time'] - | Filter<'increasing-by-block'>['increasing-by-block'] - | Filter<'decreasing-by-block'>['decreasing-by-block'] - | Filter<'increasing-by-time-period'>['increasing-by-time-period'] - | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] - | Filter<'increasing-by-block-period'>['increasing-by-block-period'] - | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; - modifier?: Modifier; + struct: + | StateConfig + | Filter<'input'>['input'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + | Filter<'increasing-by-time-period'>['increasing-by-time-period'] + | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] + | Filter<'increasing-by-block-period'>['increasing-by-block-period'] + | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; + modifier?: Modifier; }; /** @@ -172,396 +172,396 @@ export type Price = { * A key/type pair for all the valid Struct types */ export type StructTypeLib = { - /** - * Type for getting the passed value to contract method at call time. - * This is completely depended on the contract's method signature - */ - 'input' : { - /** - * the index of value in the passed context array used as CONTEXT opcode operand - */ - index: number - }, - /** - * Type to to check if current time is before a specific time - */ - 'before-time': { - /** - * The specific timestamp to check if current time is before that - */ - timestamp: number, - /** - * Pass true to include the exact timestamp in check i.e. 'lte' - */ - exactTime?: boolean - }, - /** - * Type to to check if current time is after a specific time - */ - 'after-time': { /** - * The specific timestamp to check if current time is after that - */ - timestamp: number, - /** - * Pass true to include the exact timestamp in check i.e. 'gte' - */ - exactTime?: boolean - }, - /** - * Type to check if current time is between 2 specific times - */ - 'between-times': { - /** - * The first timestamp to check, must be less than the second timestamp - */ - startTimestamp: number, - /** - * the seconf timestamp must be greater than the first timestamp - */ - endTimestamp: number - }, - /** - * Type to to check if current block number is before a specific block number - */ - 'before-block': { - /** - * The specific block number to check if current block number is before that - */ - block: number, - /** - * Pass true to include the exact block number when checking i.e. 'lte' - */ - exactBlock?: boolean - }, - /** - * Type to to check if current block number is after a specific block number - */ - 'after-block': { - /** - * The specific block number to check if current block number is after that - */ - block: number, - /** - * Pass true to include the exact block number when checking i.e. 'gte' - */ - exactBlock?: boolean - }, - /** - * Type to check if current block number is between 2 specific block numbers - */ - 'between-blocks': { - /** - * The first block number to check, must be less than the second block number - */ - startBlock: number, - /** - * the seconf block number must be greater than the first block number - */ - endBlock: number - }, - /** - * Type to check if an address has a minimum tier status - */ - 'has-min-tier': { - /** - * The tier contract address - */ - tierAddress: string, - /** - * The minimum tier status to check - */ - minTier: Tier, - /** - * The tier context - */ - tierContext?: BigNumber[] - }, - /** - * Type to check if an address has any tier status - */ - 'has-any-tier': { - /** - * The tier contract address - */ - tierAddress: string, - /** - * The tier context - */ - tierContext?: BigNumber[] - }, - /** - * Type to get an address's erc20 token balance - */ - 'user-erc20-balance': { - /** - * The erc20 token address - */ - tokenAddress: string - }, - /** - * Type to get an erc20 token total supply - */ - 'erc20-total-supply': { - /** - * The erc20 token address - */ - tokenAddress: string - }, - /** - * Type to get an address's erc721 token balance - */ - 'user-erc721-balance': { - /** - * The erc721 token address - */ - tokenAddress: string - }, - /** - * Type to get an erc721 token owner's address - */ - 'erc721-owner': { - /** - * The erc721 token address - */ - tokenAddress: string, - /** - * The erc721 token ID - */ - id: BigNumber - }, - /** - * Type to get an address's erc1155 token balance - */ - 'user-erc1155-balance': { - /** - * The erc1155 token address - */ - tokenAddress: string, - /** - * The erc1155 token ID - */ - id: BigNumber - }, - /** - * Type to get an address's erc20 snapshot token balance at snapshot ID - */ - 'user-erc20-snapshot-balance': { - /** - * The erc20 token address - */ - tokenAddress: string, - /** - * The snapshot ID - */ - id: BigNumber - }, - /** - * Type to get an erc20 snapshot token total supply at snapshot ID - */ - 'erc20-snapshot-total-supply': { - /** - * The erc20 token address - */ - tokenAddress: string, - /** - * The snapshot ID - */ - id: BigNumber - }, - /** - * Type to get a constant value - */ - 'constant': { - /** - * The value in BigNumber format - */ - value: BigNumber - }, - /** - * Type to get a simple linear increasing value between 2 times - */ - 'increasing-by-time': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The ending value - */ - endValue: BigNumber, - /** - * The start timestamp - */ - startTimestamp: number, - /** - * The end timestamp - */ - endTimestamp: number - }, - /** - * Type to get a simple linear decreasing value between 2 times - */ - 'decreasing-by-time': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The ending value - */ - endValue: BigNumber, - /** - * The start timestamp - */ - startTimestamp: number, - /** - * The end timestamp - */ - endTimestamp: number - }, - /** - * Type to get a simple linear increasing value between 2 block numbers - */ - 'increasing-by-block': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The ending value - */ - endValue: BigNumber, - /** - * The start timestamp - */ - startBlock: number, - /** - * The end timestamp - */ - endBlock: number - }, - /** - * Type to get a simple linear decreasing value between 2 block numbers - */ - 'decreasing-by-block': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The ending value - */ - endValue: BigNumber, - /** - * The start timestamp - */ - startBlock: number, - /** - * The end timestamp - */ - endBlock: number - }, - /** - * Type to get a simple linear increasing value by a margin at each period of time - */ - 'increasing-by-time-period': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The starting timestamp - */ - startTimestamp: number, - /** - * The margin(value) to increase at each period - */ - margin: BigNumber, - /** - * The period of time length - */ - periodLength: number, - /** - * (optional) The end value to not increase above that - */ - endValue?: number - }, - /** - * Type to get a simple linear decreasing value by a margin at each period of time - */ - 'decreasing-by-time-period': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The starting timestamp - */ - startTimestamp: number, - /** - * The margin(value) to decrease at each period - */ - margin: BigNumber, - /** - * The period of time length - */ - periodLength: number, - /** - * (optional) The end value to not decrease above that - */ - endValue?: number - }, - /** - * Type to get a simple linear increasing value by a margin at each number of blocks passing - */ - 'increasing-by-block-period': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The starting block number - */ - startBlock: number, - /** - * The margin(value) to increase at each period - */ - margin: BigNumber, - /** - * The period of time length in block number - */ - periodLength: number, - /** - * (optional) The end value to not increase above that - */ - endValue?: number - }, - /** - * Type to get a simple linear decreasing value by a margin at each number of blocks passing - */ - 'decreasing-by-block-period': { - /** - * The starting value - */ - startValue: BigNumber, - /** - * The starting block number - */ - startBlock: number, - /** - * The margin(value) to decrease at each period - */ - margin: BigNumber, - /** - * The period of time length in block number - */ - periodLength: number, - /** - * (optional) The end value to not decrease above that - */ - endValue?: number - } + * Type for getting the passed value to contract method at call time. + * This is completely depended on the contract's method signature + */ + 'input' : { + /** + * the index of value in the passed context array used as CONTEXT opcode operand + */ + index: number + }, + /** + * Type to to check if current time is before a specific time + */ + 'before-time': { + /** + * The specific timestamp to check if current time is before that + */ + timestamp: number, + /** + * Pass true to include the exact timestamp in check i.e. 'lte' + */ + exactTime?: boolean + }, + /** + * Type to to check if current time is after a specific time + */ + 'after-time': { + /** + * The specific timestamp to check if current time is after that + */ + timestamp: number, + /** + * Pass true to include the exact timestamp in check i.e. 'gte' + */ + exactTime?: boolean + }, + /** + * Type to check if current time is between 2 specific times + */ + 'between-times': { + /** + * The first timestamp to check, must be less than the second timestamp + */ + startTimestamp: number, + /** + * the seconf timestamp must be greater than the first timestamp + */ + endTimestamp: number + }, + /** + * Type to to check if current block number is before a specific block number + */ + 'before-block': { + /** + * The specific block number to check if current block number is before that + */ + block: number, + /** + * Pass true to include the exact block number when checking i.e. 'lte' + */ + exactBlock?: boolean + }, + /** + * Type to to check if current block number is after a specific block number + */ + 'after-block': { + /** + * The specific block number to check if current block number is after that + */ + block: number, + /** + * Pass true to include the exact block number when checking i.e. 'gte' + */ + exactBlock?: boolean + }, + /** + * Type to check if current block number is between 2 specific block numbers + */ + 'between-blocks': { + /** + * The first block number to check, must be less than the second block number + */ + startBlock: number, + /** + * the seconf block number must be greater than the first block number + */ + endBlock: number + }, + /** + * Type to check if an address has a minimum tier status + */ + 'has-min-tier': { + /** + * The tier contract address + */ + tierAddress: string, + /** + * The minimum tier status to check + */ + minTier: Tier, + /** + * The tier context + */ + tierContext?: BigNumber[] + }, + /** + * Type to check if an address has any tier status + */ + 'has-any-tier': { + /** + * The tier contract address + */ + tierAddress: string, + /** + * The tier context + */ + tierContext?: BigNumber[] + }, + /** + * Type to get an address's erc20 token balance + */ + 'user-erc20-balance': { + /** + * The erc20 token address + */ + tokenAddress: string + }, + /** + * Type to get an erc20 token total supply + */ + 'erc20-total-supply': { + /** + * The erc20 token address + */ + tokenAddress: string + }, + /** + * Type to get an address's erc721 token balance + */ + 'user-erc721-balance': { + /** + * The erc721 token address + */ + tokenAddress: string + }, + /** + * Type to get an erc721 token owner's address + */ + 'erc721-owner': { + /** + * The erc721 token address + */ + tokenAddress: string, + /** + * The erc721 token ID + */ + id: BigNumber + }, + /** + * Type to get an address's erc1155 token balance + */ + 'user-erc1155-balance': { + /** + * The erc1155 token address + */ + tokenAddress: string, + /** + * The erc1155 token ID + */ + id: BigNumber + }, + /** + * Type to get an address's erc20 snapshot token balance at snapshot ID + */ + 'user-erc20-snapshot-balance': { + /** + * The erc20 token address + */ + tokenAddress: string, + /** + * The snapshot ID + */ + id: BigNumber + }, + /** + * Type to get an erc20 snapshot token total supply at snapshot ID + */ + 'erc20-snapshot-total-supply': { + /** + * The erc20 token address + */ + tokenAddress: string, + /** + * The snapshot ID + */ + id: BigNumber + }, + /** + * Type to get a constant value + */ + 'constant': { + /** + * The value in BigNumber format + */ + value: BigNumber + }, + /** + * Type to get a simple linear increasing value between 2 times + */ + 'increasing-by-time': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startTimestamp: number, + /** + * The end timestamp + */ + endTimestamp: number + }, + /** + * Type to get a simple linear decreasing value between 2 times + */ + 'decreasing-by-time': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startTimestamp: number, + /** + * The end timestamp + */ + endTimestamp: number + }, + /** + * Type to get a simple linear increasing value between 2 block numbers + */ + 'increasing-by-block': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startBlock: number, + /** + * The end timestamp + */ + endBlock: number + }, + /** + * Type to get a simple linear decreasing value between 2 block numbers + */ + 'decreasing-by-block': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The ending value + */ + endValue: BigNumber, + /** + * The start timestamp + */ + startBlock: number, + /** + * The end timestamp + */ + endBlock: number + }, + /** + * Type to get a simple linear increasing value by a margin at each period of time + */ + 'increasing-by-time-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting timestamp + */ + startTimestamp: number, + /** + * The margin(value) to increase at each period + */ + margin: BigNumber, + /** + * The period of time length + */ + periodLength: number, + /** + * (optional) The end value to not increase above that + */ + endValue?: number + }, + /** + * Type to get a simple linear decreasing value by a margin at each period of time + */ + 'decreasing-by-time-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting timestamp + */ + startTimestamp: number, + /** + * The margin(value) to decrease at each period + */ + margin: BigNumber, + /** + * The period of time length + */ + periodLength: number, + /** + * (optional) The end value to not decrease above that + */ + endValue?: number + }, + /** + * Type to get a simple linear increasing value by a margin at each number of blocks passing + */ + 'increasing-by-block-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting block number + */ + startBlock: number, + /** + * The margin(value) to increase at each period + */ + margin: BigNumber, + /** + * The period of time length in block number + */ + periodLength: number, + /** + * (optional) The end value to not increase above that + */ + endValue?: number + }, + /** + * Type to get a simple linear decreasing value by a margin at each number of blocks passing + */ + 'decreasing-by-block-period': { + /** + * The starting value + */ + startValue: BigNumber, + /** + * The starting block number + */ + startBlock: number, + /** + * The margin(value) to decrease at each period + */ + margin: BigNumber, + /** + * The period of time length in block number + */ + periodLength: number, + /** + * (optional) The end value to not decrease above that + */ + endValue?: number + } } /** @@ -569,17 +569,18 @@ export type Price = { * A filtering utility type for StructTypeLib */ export type Filter = { - [Prop in keyof StructTypeLib]: { - /** - * The type of this struct which determines the valid properties (args) and build the StageConfig out of them - * @see {@link StructTypeLib} - */ - subject: T, - /** - * The valid properties of this Struct object - * @see {@link StructTypeLib} - */ - args: StructTypeLib[T] } + [Prop in keyof StructTypeLib]: { + /** + * The type of the struct which determines the valid properties (args) and build the StageConfig out of them + * @see {@link StructTypeLib} + */ + subject: T, + /** + * The valid properties of this Struct object + * @see {@link StructTypeLib} + */ + args: StructTypeLib[T] + } } /** @@ -587,29 +588,29 @@ export type Price = { * The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig */ export type Struct = - | StateConfig - | Filter<'input'>['input'] - | Filter<'before-time'>['before-time'] - | Filter<'after-time'>['after-time'] - | Filter<'between-times'>['between-times'] - | Filter<'before-block'>['before-block'] - | Filter<'after-block'>['after-block'] - | Filter<'between-blocks'>['between-blocks'] - | Filter<'has-min-tier'>['has-min-tier'] - | Filter<'has-any-tier'>['has-any-tier'] - | Filter<'user-erc20-balance'>['user-erc20-balance'] - | Filter<'erc20-total-supply'>['erc20-total-supply'] - | Filter<'user-erc721-balance'>['user-erc721-balance'] - | Filter<'erc721-owner'>['erc721-owner'] - | Filter<'user-erc1155-balance'>['user-erc1155-balance'] - | Filter<'user-erc20-snapshot-balance'>['user-erc20-snapshot-balance'] - | Filter<'erc20-snapshot-total-supply'>['erc20-snapshot-total-supply'] - | Filter<'constant'>['constant'] - | Filter<'increasing-by-time'>['increasing-by-time'] - | Filter<'decreasing-by-time'>['decreasing-by-time'] - | Filter<'increasing-by-block'>['increasing-by-block'] - | Filter<'decreasing-by-block'>['decreasing-by-block'] - | Filter<'increasing-by-time-period'>['increasing-by-time-period'] - | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] - | Filter<'increasing-by-block-period'>['increasing-by-block-period'] - | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; + | StateConfig + | Filter<'input'>['input'] + | Filter<'before-time'>['before-time'] + | Filter<'after-time'>['after-time'] + | Filter<'between-times'>['between-times'] + | Filter<'before-block'>['before-block'] + | Filter<'after-block'>['after-block'] + | Filter<'between-blocks'>['between-blocks'] + | Filter<'has-min-tier'>['has-min-tier'] + | Filter<'has-any-tier'>['has-any-tier'] + | Filter<'user-erc20-balance'>['user-erc20-balance'] + | Filter<'erc20-total-supply'>['erc20-total-supply'] + | Filter<'user-erc721-balance'>['user-erc721-balance'] + | Filter<'erc721-owner'>['erc721-owner'] + | Filter<'user-erc1155-balance'>['user-erc1155-balance'] + | Filter<'user-erc20-snapshot-balance'>['user-erc20-snapshot-balance'] + | Filter<'erc20-snapshot-total-supply'>['erc20-snapshot-total-supply'] + | Filter<'constant'>['constant'] + | Filter<'increasing-by-time'>['increasing-by-time'] + | Filter<'decreasing-by-time'>['decreasing-by-time'] + | Filter<'increasing-by-block'>['increasing-by-block'] + | Filter<'decreasing-by-block'>['decreasing-by-block'] + | Filter<'increasing-by-time-period'>['increasing-by-time-period'] + | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] + | Filter<'increasing-by-block-period'>['increasing-by-block-period'] + | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 8e35c64..49a23a8 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -10,26 +10,26 @@ import { IOpMeta, OpMeta } from './OpMeta'; * Specific the configuration of the generation method */ export type Config = { - /** - * Enable the prettify to the result of get - */ - pretty?: boolean; - /** - * Providing the names for STORAGE opcodes - */ - storageEnums?: string[]; - /** - * Providing the names for CONTEXT opcodes - */ - contextEnums?: string[]; - /** - * Names/Aliases for each individual item on the final stack (in order) - */ - aliases?: string[]; - /** - * True if the result needs to be tagged and optimized for the RuleBuilder script generator - */ - enableTagging?: boolean; + /** + * Enable the prettify to the result of get + */ + pretty?: boolean; + /** + * Providing the names for STORAGE opcodes + */ + storageEnums?: string[]; + /** + * Providing the names for CONTEXT opcodes + */ + contextEnums?: string[]; + /** + * Tags/Names/Aliases for each individual item on the final stack (in order) + */ + tags?: string[]; + /** + * True if the result needs to be tagged and optimized for the RuleBuilder script generator + */ + enableTagging?: boolean; }; /** @@ -38,14 +38,14 @@ export type Config = { * Specific the configuration of the Prettify method. */ export type PrettifyConfig = { - /** - * Multiplier to the indent space - */ - n?: number; - /** - * Max length to each line - */ - length?: number; + /** + * Multiplier to the indent space + */ + n?: number; + /** + * Max length to each line + */ + length?: number; }; /** @@ -62,292 +62,293 @@ export type PrettifyConfig = { */ export class HumanFriendlyRead { - private static _pretty: boolean; - private static opMeta: IOpMeta[] = Array.from(OpMeta.values()); + private static _pretty: boolean; + private static opMeta: IOpMeta[] = Array.from(OpMeta.values()); - /** - * - * @param opmeta - * @returns - */ - public static set(opmeta: typeof OpMeta): any { - this.opMeta = Array.from(opmeta.values()); - } - - /** - * Obtain the friendly output from an script. - * @param _state - The state or script to generate the friendly version - * @param _config - The configuration that will run the generator - * @returns - */ - public static get( - _state: StateConfig, - _config: Config = { - pretty: false, - storageEnums: undefined, - contextEnums: undefined, - aliases: undefined, - enableTagging: false + /** + * + * @param opmeta + * @returns + */ + public static set(opmeta: typeof OpMeta): any { + this.opMeta = Array.from(opmeta.values()); } - ): string { - this._pretty = _config.pretty ? true : false; - let _constants: string[] = []; - let _result; - for (const item of _state.constants) { - _constants.push(BigNumber.from(item).toHexString()) - } + /** + * Obtain the friendly output from an script. + * @param _state - The state or script to generate the friendly version + * @param _config - The configuration that will run the generator + * @returns + */ + public static get( + _state: StateConfig, + _config: Config = { + pretty: false, + storageEnums: undefined, + contextEnums: undefined, + tags: undefined, + enableTagging: false + } + ): string { + this._pretty = _config.pretty ? true : false; + let _constants: string[] = []; + let _result; + + for (const item of _state.constants) { + _constants.push(BigNumber.from(item).toHexString()) + } - _result = this._eval( - _state.sources, - _constants, - _config.storageEnums, - _config.contextEnums, - _config.aliases, - _config.enableTagging - ); + _result = this._eval( + _state.sources, + _constants, + _config.storageEnums, + _config.contextEnums, + _config.tags, + _config.enableTagging + ); - return this._pretty ? this.prettify(_result) : _result; - } + return this._pretty ? this.prettify(_result) : _result; + } - /** - * Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis - * - * @remarks - * If the string is already indentend, the method will wrongly generate the string - * - * @param _text - The output from the HumanFriendlySource - * @param _config - The configuration of the prettify method (experimental) - * @returns The pretty output - */ - public static prettify(_text: string, _config: PrettifyConfig = {}): string { - let { n, length } = _config; - if (!n) n = 2; - if (!length) length = 20; + /** + * Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis + * + * @remarks + * If the string is already indentend, the method will wrongly generate the string + * + * @param _text - The output from the HumanFriendlySource + * @param _config - The configuration of the prettify method (experimental) + * @returns The pretty output + */ + public static prettify(_text: string, _config: PrettifyConfig = {}): string { + let { n, length } = _config; + if (!n) n = 2; + if (!length) length = 20; - // _text = _text.replace(/\s/g, ''); - let space = ' '; - let counter = 0; - let skip = 0; - for (let i = 0; i < _text.length; i++) { - if (_text[i] === ',' && skip > 0) { - _text = _text.slice(0, i + 1) + space + _text.slice(i + 1); - } - if ( - _text[i] === '(' || - _text[i] === '[' || - _text[i] === '{' || - (_text[i] === ',' && skip === 0) - ) { - if ( - _text[i] === ',' || - this.needIndent(_text, i, length - counter * n) - ) { - if (_text[i] !== ',') counter++; - _text = - _text.slice(0, i + 1) + - '\n' + - space.repeat(counter * n) + - _text.slice(i + 1); - } else { - skip++; - } - } - if (_text[i] === ')' || _text[i] === ']' || _text[i] === '}') { - if (skip === 0) { - if (_text[i + 3] === '=' && _text[i + 4] === '>') { - counter--; - _text = - _text.slice(0, i) + - '\n' + - space.repeat(counter * n) + - _text.slice(i); - i = i + counter * n + 1; - } - else { - counter--; - _text = - _text.slice(0, i) + - '\n' + - space.repeat(counter * n) + - _text.slice(i); - i = i + counter * n + 1; - if (counter === 0 && (_text[i + 1] || _text[i + 1])) { - _text = _text.slice(0, i + 1) + '\n\n' + _text.slice(i + 1); + // _text = _text.replace(/\s/g, ''); + let space = ' '; + let counter = 0; + let skip = 0; + for (let i = 0; i < _text.length; i++) { + if (_text[i] === ',' && skip > 0) { + _text = _text.slice(0, i + 1) + space + _text.slice(i + 1); + } + if ( + _text[i] === '(' || + _text[i] === '[' || + _text[i] === '{' || + (_text[i] === ',' && skip === 0) + ) { + if ( + _text[i] === ',' || + this.needIndent(_text, i, length - counter * n) + ) { + if (_text[i] !== ',') counter++; + _text = + _text.slice(0, i + 1) + + '\n' + + space.repeat(counter * n) + + _text.slice(i + 1); + } + else { + skip++; + } + } + if (_text[i] === ')' || _text[i] === ']' || _text[i] === '}') { + if (skip === 0) { + if (_text[i + 3] === '=' && _text[i + 4] === '>') { + counter--; + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); + i = i + counter * n + 1; + } + else { + counter--; + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); + i = i + counter * n + 1; + if (counter === 0 && (_text[i + 1] || _text[i + 1])) { + _text = _text.slice(0, i + 1) + '\n\n' + _text.slice(i + 1); + } + } + } + else { + skip--; + } } - } - } else { - skip--; } - } + return _text; } - return _text; - } - /** - * The main workhorse of the Human Friendly Readable script that builds the whole text - * - * @param sources - The StateConfig sources - * @param constants - The StateConfig constants all in hex string format - * @param storageEnums - (optional) names/aliases for CONTEXT opcodes - * @param contextEnums - (optional) names/aliases for STORAGE opcodes - * @param aliases - (optional) names/aliases for individual items in final results (should be passed in order) - * @param enableTagging - True if the result needs to be tagged and optimized for the RuleBuilder script generator - * @returns The generated human friendly readable text - */ - private static _eval = ( - sources: BytesLike[], - constants: string[], - storageEnums?: string[], - contextEnums?: string[], - aliases?: string[], - enableTagging: boolean = false, - ): string => { + /** + * The main workhorse of the Human Friendly Readable script that builds the whole text + * + * @param sources - The StateConfig sources + * @param constants - The StateConfig constants all in hex string format + * @param storageEnums - (optional) names/aliases for CONTEXT opcodes + * @param contextEnums - (optional) names/aliases for STORAGE opcodes + * @param tags - (optional) Tags/names/aliases for individual items in final results (should be passed in order) + * @param enableTagging - True if the result needs to be tagged and optimized for the RuleBuilder script generator + * @returns The generated human friendly readable text + */ + private static _eval = ( + sources: BytesLike[], + constants: string[], + storageEnums?: string[], + contextEnums?: string[], + tags?: string[], + enableTagging: boolean = false, + ): string => { - let _stack: string[] = []; - let _finalStack: string[] = []; - let _zipmapStack: { [key: number]: string } = {}; - let useableAliases = aliases; - let counter = 0; + let _stack: string[] = []; + let _finalStack: string[] = []; + let _zipmapStack: { [key: number]: string } = {}; + let useableTags = tags; + let counter = 0; - for (let i = 0; i < sources.length; i++) { - let src = arrayify(sources[i], { allowMissingPrefix: true}); + for (let i = 0; i < sources.length; i++) { + let src = arrayify(sources[i], { allowMissingPrefix: true}); - for (let j = 0; j < src.length; j += 2) { + for (let j = 0; j < src.length; j += 2) { - if (src[j] === AllStandardOps.CONSTANT) { - if (src[j + 1] < constants.length) { - _stack.push( - BigNumber.from(constants[src[j + 1]]).eq(ethers.constants.MaxUint256) - ? 'MaxUint256' - : constants[src[j + 1]] - ) - } - else { - let _args: number[] = []; - let _offset: number; - for (let k = 0; k < src.length; k += 2) { - if (src[k] === 0 && src[k + 1] >= constants.length) { - _args.push(src[k + 1]) - } - } - _offset = _args.reduce((a, b) => a <= b ? a : b) - _stack.push(`Argument[${src[j + 1] - _offset}]`) - } - } - else if (src[j] === AllStandardOps.STACK) { - if (enableTagging) { - _stack.push( - aliases && aliases[src[j + 1]] ? aliases[src[j + 1]] : `Item${src[j + 1]}` - ) - } - else { - _stack.push(_stack[src[j + 1]]) - } - } - else if (src[j] === AllStandardOps.CONTEXT) { - _stack.push( - contextEnums && (contextEnums[src[j + 1]] !== undefined || '') - ? contextEnums[src[j + 1]] - : this.opMeta[src[j]].name + `[${src[j + 1]}]` - ) - } - else if (src[j] === AllStandardOps.STORAGE) { - _stack.push( - storageEnums && (storageEnums[src[j + 1]] !== undefined || '') - ? storageEnums[src[j + 1]] - : this.opMeta[src[j]].name + `[${src[j + 1]}]` - ) - } - else if (src[j] === AllStandardOps.ZIPMAP) { + if (src[j] === AllStandardOps.CONSTANT) { + if (src[j + 1] < constants.length) { + _stack.push( + BigNumber.from(constants[src[j + 1]]).eq(ethers.constants.MaxUint256) + ? 'MaxUint256' + : constants[src[j + 1]] + ) + } + else { + let _args: number[] = []; + let _offset: number; + for (let k = 0; k < src.length; k += 2) { + if (src[k] === 0 && src[k + 1] >= constants.length) { + _args.push(src[k + 1]) + } + } + _offset = _args.reduce((a, b) => a <= b ? a : b) + _stack.push(`Argument[${src[j + 1] - _offset}]`) + } + } + else if (src[j] === AllStandardOps.STACK) { + if (enableTagging) { + _stack.push( + tags && tags[src[j + 1]] ? tags[src[j + 1]] : `Item${src[j + 1]}` + ) + } + else { + _stack.push(_stack[src[j + 1]]) + } + } + else if (src[j] === AllStandardOps.CONTEXT) { + _stack.push( + contextEnums && (contextEnums[src[j + 1]] !== undefined || '') + ? contextEnums[src[j + 1]] + : this.opMeta[src[j]].name + `[${src[j + 1]}]` + ) + } + else if (src[j] === AllStandardOps.STORAGE) { + _stack.push( + storageEnums && (storageEnums[src[j + 1]] !== undefined || '') + ? storageEnums[src[j + 1]] + : this.opMeta[src[j]].name + `[${src[j + 1]}]` + ) + } + else if (src[j] === AllStandardOps.ZIPMAP) { + let index = src[j + 1] & 3; + let loopSize = 2 ** ((src[j + 1] >> 3) & 3); - let index = src[j + 1] & 3; - let loopSize = 2 ** ((src[j + 1] >> 3) & 3); + _zipmapStack[index] = 'function ' + + this.opMeta[src[j]].name + + `${index} = ` + + `(Loop Size: ${loopSize}, ` + + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}]) ` - _zipmapStack[index] = 'function ' - + this.opMeta[src[j]].name - + `${index} = ` - + `(Loop Size: ${loopSize}, ` - + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}]) ` + for (let k = 0; k < loopSize; k++) { + _stack.push(`ZIPMAP${index} Result[${k + 1}]`) + } + } + else if (src[j] === AllStandardOps.SELECT_LTE) { + _stack.push( + this.opMeta[src[j]].name + + `(Logic: ${selectLteLogic[src[j + 1] >> 7]}, Mode: ${selectLteMode[(src[j + 1] >> 5) & 3]}, ` + + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` + ) + } + else if (src[j] === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { + _stack.push( + this.opMeta[src[j]].name + + `(Start Tier: ${src[j + 1] & 15}, End Tier: ${src[j + 1] >> 4}, ` + + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` + ) + } + else if (this.opMeta[src[j]].pops.name === 'zero' && this.opMeta[src[j]].pushes.name !== 'zero') { + let _alias = this.opMeta[src[j]].alias + _stack.push(_alias ? _alias : this.opMeta[src[j]].name) + } + else { + let _alias = this.opMeta[src[j]].alias + _stack.push( + _alias + ? _alias + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` + : this.opMeta[src[j]].name + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` + ) + } - for (let k = 0; k < loopSize; k++) { - _stack.push(`ZIPMAP${index} Result[${k + 1}]`) - } - } - else if (src[j] === AllStandardOps.SELECT_LTE) { - _stack.push( - this.opMeta[src[j]].name + - `(Logic: ${selectLteLogic[src[j + 1] >> 7]}, Mode: ${selectLteMode[(src[j + 1] >> 5) & 3]}, ` + - `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` - ) - } - else if (src[j] === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { - _stack.push( - this.opMeta[src[j]].name + - `(Start Tier: ${src[j + 1] & 15}, End Tier: ${src[j + 1] >> 4}, ` + - `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` - ) - } - else if (this.opMeta[src[j]].pops.name === 'zero' && this.opMeta[src[j]].pushes.name !== 'zero') { - let _alias = this.opMeta[src[j]].alias - _stack.push(_alias ? _alias : this.opMeta[src[j]].name) - } - else { - let _alias = this.opMeta[src[j]].alias - _stack.push( - _alias - ? _alias + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` - : this.opMeta[src[j]].name + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` - ) - } - - if (_stack[_stack.length - 1].slice(0, 20) === 'ISZERO(GREATER_THAN(') { - _stack[_stack.length - 1] = - 'LESS_THAN_EQUAL(' + _stack[_stack.length - 1] - .slice(20, _stack[_stack.length - 1].length - 1) - } - if (_stack[_stack.length - 1].slice(0, 17) === 'ISZERO(LESS_THAN(') { - _stack[_stack.length - 1] = - 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1] - .slice(17, _stack[_stack.length - 1].length - 1) - } - } + if (_stack[_stack.length - 1].slice(0, 20) === 'ISZERO(GREATER_THAN(') { + _stack[_stack.length - 1] = + 'LESS_THAN_EQUAL(' + _stack[_stack.length - 1] + .slice(20, _stack[_stack.length - 1].length - 1) + } + if (_stack[_stack.length - 1].slice(0, 17) === 'ISZERO(LESS_THAN(') { + _stack[_stack.length - 1] = + 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1] + .slice(17, _stack[_stack.length - 1].length - 1) + } + } - if (enableTagging && !Object.keys(_zipmapStack).includes(i.toString())) { - for (let j = 0; j < _stack.length; j++) { - let tempAlias = useableAliases?.shift() - _stack[j] = tempAlias - ? `${tempAlias}: {${_stack[j]}}` - : `Item${counter}: {${_stack[j]}}` + if (enableTagging && !Object.keys(_zipmapStack).includes(i.toString())) { + for (let j = 0; j < _stack.length; j++) { + let tempTag = useableTags?.shift() + _stack[j] = tempTag + ? `${tempTag}: {${_stack[j]}}` + : `Item${counter}: {${_stack[j]}}` - counter++; - } - } + counter++; + } + } - _finalStack.push(_stack.join(' ')) - _stack = []; - } - for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { - let index = Number(Object.keys(_zipmapStack)[j]); - _finalStack[index] = `${_zipmapStack[index]} => { ${_finalStack[index]} }` - } + _finalStack.push(_stack.join(' ')) + _stack = []; + } + for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { + let index = Number(Object.keys(_zipmapStack)[j]); + _finalStack[index] = `${_zipmapStack[index]} => { ${_finalStack[index]} }` + } - return _finalStack.join(' '); - }; + return _finalStack.join(' '); + }; - private static needIndent(text: string, index: number, max: number): boolean { - const openRef = text[index]; - const closeRef = openRef === '(' ? ')' : ']'; - text = text.slice(index + 1); + private static needIndent(text: string, index: number, max: number): boolean { + const openRef = text[index]; + const closeRef = openRef === '(' ? ')' : ']'; + text = text.slice(index + 1); - let counter = 0; - for (let i = 0; i < text.length && i < max + 1; i++) { - if (text[i] === openRef) counter++; - if (text[i] === closeRef) { - if (counter === 0) return false; - counter--; - } + let counter = 0; + for (let i = 0; i < text.length && i < max + 1; i++) { + if (text[i] === openRef) counter++; + if (text[i] === closeRef) { + if (counter === 0) return false; + counter--; + } + } + return true; } - return true; - } } diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index b783e00..75188c4 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -49,598 +49,628 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 * Class for Opcodes number of stack pushes and pops */ export const pnp: Record number> = { - /** - * @public - */ - zero: (opcode: number, operand: number) => 0, + /** + * @public + */ + zero: (opcode: number, operand: number) => 0, - /** - * @public - */ - one: (opcode: number, operand: number) => 1, + /** + * @public + */ + one: (opcode: number, operand: number) => 1, - /** - * @public - */ - two: (opcode: number, operand: number) => 2, + /** + * @public + */ + two: (opcode: number, operand: number) => 2, - /** - * @public - */ - three: (opcode: number, operand: number) => 3, + /** + * @public + */ + three: (opcode: number, operand: number) => 3, - /** - * @public - */ - oprnd: (opcode: number, operand: number) => operand, + /** + * @public + */ + oprnd: (opcode: number, operand: number) => operand, - /** - * @public - */ - derived: (opcode: number, operand: number) => { - if (opcode === AllStandardOps.ZIPMAP) { - return operand >> 5; - } - if (opcode === AllStandardOps.SELECT_LTE) { - return (operand & 248) >> 3; - } - if (opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { - return (operand * 2) + 1; - } - if (opcode === AllStandardOps.ITIERV2_REPORT) { - return operand + 2; - } - if (opcode === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { - return operand + 3; - } - else return NaN; - }, + /** + * @public + */ + derived: (opcode: number, operand: number) => { + if (opcode === AllStandardOps.ZIPMAP) { + return operand >> 5; + } + if (opcode === AllStandardOps.SELECT_LTE) { + return (operand & 248) >> 3; + } + if (opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { + return (operand * 2) + 1; + } + if (opcode === AllStandardOps.ITIERV2_REPORT) { + return operand + 2; + } + if (opcode === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { + return operand + 3; + } + return NaN + }, - /** - * @public - */ - zpush: (opcode: number, operand: number) => { - return 2 ** ((operand >> 3) & 3); - } + /** + * @public + */ + zpush: (opcode: number, operand: number) => { + return 2 ** ((operand >> 3) & 3); + } }; /** * @public */ export interface IOpMeta extends Record { - enum: number; - name: string; - pushes: (opcode: number, operand: number) => number; - pops: (opcode: number, operand: number) => number; - jsvmfn: OpJSVM; - description?: string; - alias?: string + enum: number; + name: string; + pushes: (opcode: number, operand: number) => number; + pops: (opcode: number, operand: number) => number; + jsvmfn: OpJSVM; + description?: string; + alias?: string } /** * @public */ export const OpMeta: Map = new Map([ - [ - 0, - { - enum: AllStandardOps.CONSTANT, - name: 'CONSTANT', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.constant(operand, data) - } - } - ], - [ - 1, - { - enum: AllStandardOps.STACK, - name: 'STACK', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.stack(operand, data) - } - } - ], - [ - 2, - { - enum: AllStandardOps.CONTEXT, - name: 'CONTEXT', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.context(operand, data) - } - } - ], - [ - 3, - { - enum: AllStandardOps.STORAGE, - name: 'STORAGE', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - await this.storage(operand, data) - } - } - ], - [ - 4, - { - enum: AllStandardOps.ZIPMAP, - name: 'ZIPMAP', - description: '', - pushes: pnp.zpush, - pops: pnp.derived, - jsvmfn: async function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): Promise { - await this.zipmap(operand, data) - } - } - ], - [ - 5, - { - enum: AllStandardOps.DEBUG, - name: 'DEBUG', - description: '', - pushes: pnp.zero, - pops: pnp.zero, - jsvmfn: function(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { - this.debug(operand, data) - } - } - ], - [ - 6, - { - enum: AllStandardOps.IERC20_BALANCE_OF, - name: 'IERC20_BALANCE_OF', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC20BalanceOf - } - ], - [ - 7, - { - enum: AllStandardOps.IERC20_TOTAL_SUPPLY, - name: 'IERC20_TOTAL_SUPPLY', - description: '', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpERC20TotalSupply - } - ], - [ - 8, - { - enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, - name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', - description: '', - pushes: pnp.one, - pops: pnp.three, - jsvmfn: OpERC20SnapshotBalanceOfAt - } - ], - [ - 9, - { - enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, - name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC20SnapshotTotalSupplyAt - } - ], - [ - 10, - { - enum: AllStandardOps.IERC721_BALANCE_OF, - name: 'IERC721_BALANCE_OF', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC721BalanceOf - } - ], - [ - 11, - { - enum: AllStandardOps.IERC721_OWNER_OF, - name: 'IERC721_OWNER_OF', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpERC721OwnerOf - } - ], - [ - 12, - { - enum: AllStandardOps.IERC1155_BALANCE_OF, - name: 'IERC1155_BALANCE_OF', - description: '', - pushes: pnp.one, - pops: pnp.three, - jsvmfn: OpERC1155BalanceOf - } - ], - [ - 13, - { - enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, - name: 'IERC1155_BALANCE_OF_BATCH', - description: '', - pushes: pnp.oprnd, - pops: pnp.derived, - jsvmfn: OpERC1155BalanceOfBatch - } - ], - [ - 14, - { - enum: AllStandardOps.BLOCK_NUMBER, - name: 'BLOCK_NUMBER', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpBlockNumber, - alias: 'CURRENT_BLOCK' - } - ], - [ - 15, - { - enum: AllStandardOps.SENDER, - name: 'SENDER', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpCaller, - alias: 'MSG_SENDER' - } - ], - [ - 16, - { - enum: AllStandardOps.THIS_ADDRESS, - name: 'THIS_ADDRESS', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpThisAddress, - alias: 'THIS_ADDRESS' - } - ], - [ - 17, - { - enum: AllStandardOps.BLOCK_TIMESTAMP, - name: 'BLOCK_TIMESTAMP', - description: '', - pushes: pnp.one, - pops: pnp.zero, - jsvmfn: OpTimestamp, - alias: 'CURRENT_TIMESTAMP' - } - ], - [ - 18, - { - enum: AllStandardOps.SCALE18, - name: 'SCALE18', - description: '', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpScale18 - } - ], - [ - 19, - { - enum: AllStandardOps.SCALE18_DIV, - name: 'SCALE18_DIV', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpScale18Div - } - ], - [ - 20, - { - enum: AllStandardOps.SCALE18_MUL, - name: 'SCALE18_MUL', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpScale18Mul - } - ], - [ - 21, - { - enum: AllStandardOps.SCALE_BY, - name: 'SCALE_BY', - description: '', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpScaleBy - } - ], - [ - 22, - { - enum: AllStandardOps.SCALEN, - name: 'SCALEN', - description: '', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpScaleN - } - ], - [ - 23, - { - enum: AllStandardOps.ANY, - name: 'ANY', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpAny - } - ], - [ - 24, - { - enum: AllStandardOps.EAGER_IF, - name: 'EAGER_IF', - description: '', - pushes: pnp.one, - pops: pnp.three, - jsvmfn: OpEagerIf - } - ], - [ - 25, - { - enum: AllStandardOps.EQUAL_TO, - name: 'EQUAL_TO', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpEqualTo - } - ], - [ - 26, - { - enum: AllStandardOps.EVERY, - name: 'EVERY', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpEvery - } - ], - [ - 27, - { - enum: AllStandardOps.GREATER_THAN, - name: 'GREATER_THAN', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpGreaterThan - } - ], - [ - 28, - { - enum: AllStandardOps.ISZERO, - name: 'ISZERO', - description: '', - pushes: pnp.one, - pops: pnp.one, - jsvmfn: OpIsZero - } - ], - [ - 29, - { - enum: AllStandardOps.LESS_THAN, - name: 'LESS_THAN', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpLessThan - } - ], - [ - 30, - { - enum: AllStandardOps.SATURATING_ADD, - name: 'SATURATING_ADD', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSaturatingAdd - } - ], - [ - 31, - { - enum: AllStandardOps.SATURATING_MUL, - name: 'SATURATING_MUL', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSaturatingMul - } - ], - [ - 32, - { - enum: AllStandardOps.SATURATING_SUB, - name: 'SATURATING_SUB', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSaturatingSub - } - ], - [ - 33, - { - enum: AllStandardOps.ADD, - name: 'ADD', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpAdd - } - ], - [ - 34, - { - enum: AllStandardOps.DIV, - name: 'DIV', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpDiv - } - ], - [ - 35, - { - enum: AllStandardOps.EXP, - name: 'EXP', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpExp - } - ], - [ - 36, - { - enum: AllStandardOps.MAX, - name: 'MAX', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMax - } - ], - [ - 37, - { - enum: AllStandardOps.MIN, - name: 'MIN', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMin - } - ], - [ - 38, - { - enum: AllStandardOps.MOD, - name: 'MOD', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMod - } - ], - [ - 39, - { - enum: AllStandardOps.MUL, - name: 'MUL', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpMul - } - ], - [ - 40, - { - enum: AllStandardOps.SUB, - name: 'SUB', - description: '', - pushes: pnp.one, - pops: pnp.oprnd, - jsvmfn: OpSub - } - ], - [ - 41, - { - enum: AllStandardOps.ITIERV2_REPORT, - name: 'ITIERV2_REPORT', - description: '', - pushes: pnp.one, - pops: pnp.derived, - jsvmfn: OpITierV2Report - } - ], - [ - 42, - { - enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, - name: 'ITIERV2_REPORT_TIME_FOR_TIER', - description: '', - pushes: pnp.one, - pops: pnp.derived, - jsvmfn: OpITierV2ReportTimesForTier - } - ], - [ - 43, - { - enum: AllStandardOps.SATURATING_DIFF, - name: 'SATURATING_DIFF', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpSaturatingDiff - } - ], - [ - 44, - { - enum: AllStandardOps.SELECT_LTE, - name: 'SELECT_LTE', - description: '', - pushes: pnp.one, - pops: pnp.derived, - jsvmfn: OpSelectLte - } - ], - [ - 45, - { - enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, - name: 'UPDATE_TIMES_FOR_TIER_RANGE', - description: '', - pushes: pnp.one, - pops: pnp.two, - jsvmfn: OpUpdateTimesForTierRange - } - ] + [ + 0, + { + enum: AllStandardOps.CONSTANT, + name: 'CONSTANT', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): void { + this.constant(operand, data) + } + } + ], + [ + 1, + { + enum: AllStandardOps.STACK, + name: 'STACK', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): void { + this.stack(operand, data) + } + } + ], + [ + 2, + { + enum: AllStandardOps.CONTEXT, + name: 'CONTEXT', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): void { + this.context(operand, data) + } + } + ], + [ + 3, + { + enum: AllStandardOps.STORAGE, + name: 'STORAGE', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: async function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): Promise { + await this.storage(operand, data) + } + } + ], + [ + 4, + { + enum: AllStandardOps.ZIPMAP, + name: 'ZIPMAP', + description: '', + pushes: pnp.zpush, + pops: pnp.derived, + jsvmfn: async function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): Promise { + await this.zipmap(operand, data) + } + } + ], + [ + 5, + { + enum: AllStandardOps.DEBUG, + name: 'DEBUG', + description: '', + pushes: pnp.zero, + pops: pnp.zero, + jsvmfn: function( + this: RainJSVM, + state: StateJSVM, + operand: number, + data?: any + ): void { + this.debug(operand, data) + } + } + ], + [ + 6, + { + enum: AllStandardOps.IERC20_BALANCE_OF, + name: 'IERC20_BALANCE_OF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC20BalanceOf + } + ], + [ + 7, + { + enum: AllStandardOps.IERC20_TOTAL_SUPPLY, + name: 'IERC20_TOTAL_SUPPLY', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpERC20TotalSupply + } + ], + [ + 8, + { + enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, + name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', + description: '', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpERC20SnapshotBalanceOfAt + } + ], + [ + 9, + { + enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, + name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC20SnapshotTotalSupplyAt + } + ], + [ + 10, + { + enum: AllStandardOps.IERC721_BALANCE_OF, + name: 'IERC721_BALANCE_OF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC721BalanceOf + } + ], + [ + 11, + { + enum: AllStandardOps.IERC721_OWNER_OF, + name: 'IERC721_OWNER_OF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpERC721OwnerOf + } + ], + [ + 12, + { + enum: AllStandardOps.IERC1155_BALANCE_OF, + name: 'IERC1155_BALANCE_OF', + description: '', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpERC1155BalanceOf + } + ], + [ + 13, + { + enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, + name: 'IERC1155_BALANCE_OF_BATCH', + description: '', + pushes: pnp.oprnd, + pops: pnp.derived, + jsvmfn: OpERC1155BalanceOfBatch + } + ], + [ + 14, + { + enum: AllStandardOps.BLOCK_NUMBER, + name: 'BLOCK_NUMBER', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpBlockNumber, + alias: 'CURRENT_BLOCK' + } + ], + [ + 15, + { + enum: AllStandardOps.SENDER, + name: 'SENDER', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpCaller, + alias: 'MSG_SENDER' + } + ], + [ + 16, + { + enum: AllStandardOps.THIS_ADDRESS, + name: 'THIS_ADDRESS', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpThisAddress, + alias: 'THIS_ADDRESS' + } + ], + [ + 17, + { + enum: AllStandardOps.BLOCK_TIMESTAMP, + name: 'BLOCK_TIMESTAMP', + description: '', + pushes: pnp.one, + pops: pnp.zero, + jsvmfn: OpTimestamp, + alias: 'CURRENT_TIMESTAMP' + } + ], + [ + 18, + { + enum: AllStandardOps.SCALE18, + name: 'SCALE18', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScale18 + } + ], + [ + 19, + { + enum: AllStandardOps.SCALE18_DIV, + name: 'SCALE18_DIV', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpScale18Div + } + ], + [ + 20, + { + enum: AllStandardOps.SCALE18_MUL, + name: 'SCALE18_MUL', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpScale18Mul + } + ], + [ + 21, + { + enum: AllStandardOps.SCALE_BY, + name: 'SCALE_BY', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScaleBy + } + ], + [ + 22, + { + enum: AllStandardOps.SCALEN, + name: 'SCALEN', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpScaleN + } + ], + [ + 23, + { + enum: AllStandardOps.ANY, + name: 'ANY', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpAny + } + ], + [ + 24, + { + enum: AllStandardOps.EAGER_IF, + name: 'EAGER_IF', + description: '', + pushes: pnp.one, + pops: pnp.three, + jsvmfn: OpEagerIf + } + ], + [ + 25, + { + enum: AllStandardOps.EQUAL_TO, + name: 'EQUAL_TO', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpEqualTo + } + ], + [ + 26, + { + enum: AllStandardOps.EVERY, + name: 'EVERY', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpEvery + } + ], + [ + 27, + { + enum: AllStandardOps.GREATER_THAN, + name: 'GREATER_THAN', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpGreaterThan + } + ], + [ + 28, + { + enum: AllStandardOps.ISZERO, + name: 'ISZERO', + description: '', + pushes: pnp.one, + pops: pnp.one, + jsvmfn: OpIsZero + } + ], + [ + 29, + { + enum: AllStandardOps.LESS_THAN, + name: 'LESS_THAN', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpLessThan + } + ], + [ + 30, + { + enum: AllStandardOps.SATURATING_ADD, + name: 'SATURATING_ADD', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingAdd + } + ], + [ + 31, + { + enum: AllStandardOps.SATURATING_MUL, + name: 'SATURATING_MUL', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingMul + } + ], + [ + 32, + { + enum: AllStandardOps.SATURATING_SUB, + name: 'SATURATING_SUB', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSaturatingSub + } + ], + [ + 33, + { + enum: AllStandardOps.ADD, + name: 'ADD', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpAdd + } + ], + [ + 34, + { + enum: AllStandardOps.DIV, + name: 'DIV', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpDiv + } + ], + [ + 35, + { + enum: AllStandardOps.EXP, + name: 'EXP', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpExp + } + ], + [ + 36, + { + enum: AllStandardOps.MAX, + name: 'MAX', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMax + } + ], + [ + 37, + { + enum: AllStandardOps.MIN, + name: 'MIN', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMin + } + ], + [ + 38, + { + enum: AllStandardOps.MOD, + name: 'MOD', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMod + } + ], + [ + 39, + { + enum: AllStandardOps.MUL, + name: 'MUL', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpMul + } + ], + [ + 40, + { + enum: AllStandardOps.SUB, + name: 'SUB', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + jsvmfn: OpSub + } + ], + [ + 41, + { + enum: AllStandardOps.ITIERV2_REPORT, + name: 'ITIERV2_REPORT', + description: '', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpITierV2Report + } + ], + [ + 42, + { + enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, + name: 'ITIERV2_REPORT_TIME_FOR_TIER', + description: '', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpITierV2ReportTimesForTier + } + ], + [ + 43, + { + enum: AllStandardOps.SATURATING_DIFF, + name: 'SATURATING_DIFF', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpSaturatingDiff + } + ], + [ + 44, + { + enum: AllStandardOps.SELECT_LTE, + name: 'SELECT_LTE', + description: '', + pushes: pnp.one, + pops: pnp.derived, + jsvmfn: OpSelectLte + } + ], + [ + 45, + { + enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, + name: 'UPDATE_TIMES_FOR_TIER_RANGE', + description: '', + pushes: pnp.one, + pops: pnp.two, + jsvmfn: OpUpdateTimesForTierRange + } + ] ]); From 3e8de7228e1d8e4505476b39532bb0e02f253537 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 12 Aug 2022 17:26:09 +0000 Subject: [PATCH 094/125] fix for jsvm ops --- docs/classes/combinetierjsvm.md | 8 +---- docs/classes/emissionserc20jsvm.md | 8 +---- docs/classes/rainjsvm.md | 32 ++----------------- docs/classes/salejsvm.md | 8 +---- .../script-generators/saleScriptGenerator.ts | 2 +- src/jsvm/RainJSVM.ts | 11 +++---- src/jsvm/SaleJSVM.ts | 2 +- src/jsvm/lib/SaturatingMath.ts | 10 +++--- src/jsvm/ops/evm/OpTimestamp.ts | 4 ++- src/jsvm/ops/math/OpDiv.ts | 2 +- src/jsvm/ops/math/OpMax.ts | 2 +- .../ops/math/saturating/OpSaturatingMul.ts | 24 ++++++-------- .../ops/math/saturating/OpSaturatingSub.ts | 27 ++++++++-------- 13 files changed, 45 insertions(+), 95 deletions(-) diff --git a/docs/classes/combinetierjsvm.md b/docs/classes/combinetierjsvm.md index 8746f33..1c46775 100644 --- a/docs/classes/combinetierjsvm.md +++ b/docs/classes/combinetierjsvm.md @@ -13,7 +13,7 @@ class CombineTierJSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to be passed at the time of construction because the RainJSVM opcode functions should be immutable after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextLength](./combinetierjsvm.md#ContextLength-property) | `number` | CombineTierJSVM can have any length for context | @@ -29,12 +29,6 @@ class CombineTierJSVM extends RainJSVM | [StorageRange](./combinetierjsvm.md#StorageRange-property) | `` | CombineTierJSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | -## Static Methods - -| Method | Description | -| --- | --- | -| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | *Inherited from [RainJSVM.opsFromOpMeta()](./rainjsvm.md#opsFromOpMeta-method-static-1)* | - ## Methods | Method | Description | diff --git a/docs/classes/emissionserc20jsvm.md b/docs/classes/emissionserc20jsvm.md index 2f75564..731d656 100644 --- a/docs/classes/emissionserc20jsvm.md +++ b/docs/classes/emissionserc20jsvm.md @@ -13,7 +13,7 @@ class EmissionsERC20JSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to be passed at the time of construction because the RainJSVM opcode functions should be immutable after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextLength](./emissionserc20jsvm.md#ContextLength-property) | `` | EmissionsERC20JSVM valid context length | @@ -29,12 +29,6 @@ class EmissionsERC20JSVM extends RainJSVM | [StorageRange](./emissionserc20jsvm.md#StorageRange-property) | `` | EmissionsERC20JSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | -## Static Methods - -| Method | Description | -| --- | --- | -| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | *Inherited from [RainJSVM.opsFromOpMeta()](./rainjsvm.md#opsFromOpMeta-method-static-1)* | - ## Methods | Method | Description | diff --git a/docs/classes/rainjsvm.md b/docs/classes/rainjsvm.md index 7931c21..2015ae6 100644 --- a/docs/classes/rainjsvm.md +++ b/docs/classes/rainjsvm.md @@ -13,7 +13,7 @@ class RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created. | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to be passed at the time of construction because the RainJSVM opcode functions should be immutable after an instance has be created. | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` | | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` | | | [ContextRange](./rainjsvm.md#ContextRange-property) | `number` | Length of the valid context argument accessible by eval | @@ -28,12 +28,6 @@ class RainJSVM | [StorageRange](./rainjsvm.md#StorageRange-property) | `number` | Range of available storage variables accessible by eval | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | | -## Static Methods - -| Method | Description | -| --- | --- | -| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | | - ## Methods | Method | Description | @@ -48,7 +42,7 @@ class RainJSVM ### applyOpFn -It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created. +It is a property for overriding the opcodes. Need to be passed at the time of construction because the RainJSVM opcode functions should be immutable after an instance has be created. Signature: @@ -204,28 +198,6 @@ protected readonly StorageRange: number; get zipmap(): (operand: number, data?: any) => Promise; ``` -## Static Method Details - - - -### opsFromOpMeta(\_opmeta) - -Signature: - -```typescript -static opsFromOpMeta(_opmeta: Map): FnPtrsJSVM; -``` - -#### Parameters - -| Parameter | Type | Description | -| --- | --- | --- | -| \_opmeta | `Map` | | - -Returns: - -`FnPtrsJSVM` - ## Method Details diff --git a/docs/classes/salejsvm.md b/docs/classes/salejsvm.md index 569dbc2..c1f9b56 100644 --- a/docs/classes/salejsvm.md +++ b/docs/classes/salejsvm.md @@ -13,7 +13,7 @@ class SaleJSVM extends RainJSVM | Property | Type | Description | | --- | --- | --- | -| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to ba passed at the time of construction because the RainJSVM opcode functions should not change after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | +| [applyOpFn](./rainjsvm.md#applyOpFn-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | It is a property for overriding the opcodes. Need to be passed at the time of construction because the RainJSVM opcode functions should be immutable after an instance has be created.

*Inherited from [RainJSVM.applyOpFn](./rainjsvm.md#applyOpFn-property)* | | [constant](./rainjsvm.md#constant-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.constant](./rainjsvm.md#constant-property)* | | [context](./rainjsvm.md#context-property) | `(operand: number, data?: any) => void` |

*Inherited from [RainJSVM.context](./rainjsvm.md#context-property)* | | [ContextRange](./salejsvm.md#ContextRange-property) | `` | SaleJSVM valid context length

*Overrides [RainJSVM.ContextRange](./rainjsvm.md#ContextRange-property)* | @@ -28,12 +28,6 @@ class SaleJSVM extends RainJSVM | [StorageRange](./salejsvm.md#StorageRange-property) | `` | SaleJSVM valid storage range

*Overrides [RainJSVM.StorageRange](./rainjsvm.md#StorageRange-property)* | | [zipmap](./rainjsvm.md#zipmap-property) | `(operand: number, data?: any) => Promise` | *Inherited from [RainJSVM.zipmap](./rainjsvm.md#zipmap-property)* | -## Static Methods - -| Method | Description | -| --- | --- | -| [opsFromOpMeta(\_opmeta)](./rainjsvm.md#opsFromOpMeta-method-static-1) | *Inherited from [RainJSVM.opsFromOpMeta()](./rainjsvm.md#opsFromOpMeta-method-static-1)* | - ## Methods | Method | Description | diff --git a/src/contracts/script-generators/saleScriptGenerator.ts b/src/contracts/script-generators/saleScriptGenerator.ts index fc9f5e4..5115176 100644 --- a/src/contracts/script-generators/saleScriptGenerator.ts +++ b/src/contracts/script-generators/saleScriptGenerator.ts @@ -323,7 +323,7 @@ export class IncDecPrice extends PriceCurve { op(VM.Opcodes.CONSTANT, 0), isInc ? op(VM.Opcodes.ADD, 2) : op(VM.Opcodes.SATURATING_SUB, 2), op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.MIN, 2), + isInc ? op(VM.Opcodes.MIN, 2) : op(VM.Opcodes.MAX, 2), ] ); } diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts index d1013a6..c148f84 100644 --- a/src/jsvm/RainJSVM.ts +++ b/src/jsvm/RainJSVM.ts @@ -36,8 +36,8 @@ export class RainJSVM { private readonly state: StateJSVM; /** - * It is a property for overriding the opcodes. Need to ba passed at the time of construction - * because the RainJSVM opcode functions should not change after an instance has be created. + * It is a property for overriding the opcodes. Need to be passed at the time of construction + * because the RainJSVM opcode functions should be immutable after an instance has be created. */ public readonly applyOpFn?: FnPtrsJSVM; @@ -114,9 +114,6 @@ export class RainJSVM { } } - static opsFromOpMeta(_opmeta: Map): FnPtrsJSVM { - throw new Error('Method not implemented.'); - } /** * key/value pair of opcodes and their functions for all standard opcodes @@ -208,7 +205,7 @@ export class RainJSVM { this.lastState.push(...this.state.stack.splice(-this.state.stack.length)); return this.lastState; - } + } /** * @public @@ -434,4 +431,4 @@ export class RainJSVM { return this; } -} \ No newline at end of file +} diff --git a/src/jsvm/SaleJSVM.ts b/src/jsvm/SaleJSVM.ts index 6187d97..94c9838 100644 --- a/src/jsvm/SaleJSVM.ts +++ b/src/jsvm/SaleJSVM.ts @@ -49,7 +49,7 @@ export class SaleJSVM extends RainJSVM { if (options?.storageOpFn) { this.StorageOps = options.storageOpFn; } - }; + }; /** * key/value pair of STORAGE opcodes of the sale JSVM diff --git a/src/jsvm/lib/SaturatingMath.ts b/src/jsvm/lib/SaturatingMath.ts index fe5f560..1ccf0b5 100644 --- a/src/jsvm/lib/SaturatingMath.ts +++ b/src/jsvm/lib/SaturatingMath.ts @@ -29,10 +29,10 @@ export const saturatingMul = (value1: BigNumber, value2: BigNumber) : BigNumber * @public */ export const saturatingSub = (value1: BigNumber, value2: BigNumber) : BigNumber => { - value1 = value1?.sub(value2); - value1 = value1.gt(0) - ? value1 - : ethers.constants.Zero; - + value1 = value1.sub(value2); + value1 = value1.isNegative() + ? ethers.constants.Zero + : value1 + return value1; } diff --git a/src/jsvm/ops/evm/OpTimestamp.ts b/src/jsvm/ops/evm/OpTimestamp.ts index 3b4b457..1950b15 100644 --- a/src/jsvm/ops/evm/OpTimestamp.ts +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -15,7 +15,9 @@ export async function OpTimestamp(this: RainJSVM, state: StateJSVM, operand: num state.stack.push( BigNumber.from( - (await _provider.getBlock(await _provider.getBlockNumber())).timestamp + (await _provider.getBlock( + await _provider.getBlockNumber()) + ).timestamp ) ) } diff --git a/src/jsvm/ops/math/OpDiv.ts b/src/jsvm/ops/math/OpDiv.ts index 74cca72..d465d2f 100644 --- a/src/jsvm/ops/math/OpDiv.ts +++ b/src/jsvm/ops/math/OpDiv.ts @@ -16,7 +16,7 @@ export function OpDiv(this: RainJSVM, state: StateJSVM, operand: number, data?: for (let i = 1; i < operand; i++) { _item = items_.shift(); - + if (_item !== undefined) { _accumulator = _accumulator.div(_item); diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts index 7818051..06112f9 100644 --- a/src/jsvm/ops/math/OpMax.ts +++ b/src/jsvm/ops/math/OpMax.ts @@ -10,7 +10,7 @@ export function OpMax(this: RainJSVM,state: StateJSVM, operand: number, data?: a const items_ = state.stack.splice(-operand); - if ((items_.length = operand)) { + if (items_.length === operand) { state.stack.push(max(items_)); } diff --git a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts index 017397e..a750182 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -1,6 +1,7 @@ import { RainJSVM } from "../../../RainJSVM"; import { saturatingMul } from "../../../lib/SaturatingMath"; import { StateJSVM } from "../../../types"; +import { ethers } from "ethers"; /** @@ -9,23 +10,18 @@ import { StateJSVM } from "../../../types"; export function OpSaturatingMul(this: RainJSVM, state: StateJSVM, operand: number, data?: any) : void { const items_ = state.stack.splice(-operand); - let _accumulator = items_.shift(); + let _accumulator = ethers.constants.One; let _item; - if (_accumulator !== undefined) { + for (let i = 0; i < operand; i++) { - for (let i = 1; i < operand; i++) { + _item = items_.shift(); - _item = items_.shift(); + if (_item !== undefined) { - if (_item !== undefined) { - - _accumulator = saturatingMul(_accumulator, _item); - - } - else throw new Error('Undefined stack variabble'); - } - state.stack.push(_accumulator); - } - else throw new Error('Undefined stack variables'); + _accumulator = saturatingMul(_accumulator, _item); + } + else throw new Error('Undefined stack variabble'); + } + state.stack.push(_accumulator); } \ No newline at end of file diff --git a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts index 4dfe5d6..dc9b9e7 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -1,7 +1,6 @@ import { RainJSVM } from "../../../RainJSVM"; import { saturatingSub } from "../../../lib/SaturatingMath"; import { StateJSVM } from "../../../types"; -import { ethers } from "ethers"; /** @@ -10,19 +9,21 @@ import { ethers } from "ethers"; export function OpSaturatingSub(this: RainJSVM, state: StateJSVM, operand: number, data?: any): void { const items_ = state.stack.splice(-operand); - let _accumulator = ethers.constants.One; + let _accumulator = items_.shift(); let _item; - for (let i = 0; i < operand; i++) { - - _item = items_.shift(); - - if (_item !== undefined) { - - _accumulator = saturatingSub(_accumulator, _item) - - } - else throw new Error('Undefined stack variables'); + if (_accumulator !== undefined) { + + for (let i = 1; i < operand; i++) { + _item = items_.shift(); + + if (_item !== undefined) { + + _accumulator = saturatingSub(_accumulator, _item) + } + else throw new Error('Undefined stack variables'); + } + state.stack.push(_accumulator); } - state.stack.push(_accumulator); + else throw new Error('Undefined stack variables'); } \ No newline at end of file From c7cb1da143ccb0d6d0e3368c44d9df524a9ed0b1 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 12 Aug 2022 18:11:08 +0000 Subject: [PATCH 095/125] update rule builder --- docs/classes/humanfriendlyread.md | 7 ++++--- docs/index.md | 2 +- docs/variables/lib.md | 10 ---------- docs/variables/vmbook.md | 10 ++++++++++ src/index.ts | 2 +- src/rule-builder/ruleBuilder.ts | 24 ++++++++++++------------ src/rule-builder/{lib.ts => vmbook.ts} | 10 +++++----- src/vm/HumanFreindlyRead.ts | 5 +++-- 8 files changed, 36 insertions(+), 34 deletions(-) delete mode 100644 docs/variables/lib.md create mode 100644 docs/variables/vmbook.md rename src/rule-builder/{lib.ts => vmbook.ts} (94%) diff --git a/docs/classes/humanfriendlyread.md b/docs/classes/humanfriendlyread.md index db4e16b..71a2742 100644 --- a/docs/classes/humanfriendlyread.md +++ b/docs/classes/humanfriendlyread.md @@ -19,7 +19,7 @@ class HumanFriendlyRead | --- | --- | | [get(\_state, \_config)](./humanfriendlyread.md#get-method-static-1) | Obtain the friendly output from an script. | | [prettify(\_text, \_config)](./humanfriendlyread.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis | -| [set(opmeta)](./humanfriendlyread.md#set-method-static-1) | | +| [set(opmeta)](./humanfriendlyread.md#set-method-static-1) | Method to set the opMeta with more than AllStandardOps opcodes for this instance of the HumanFriendly Read | ## Static Method Details @@ -78,6 +78,8 @@ The pretty output ### set(opmeta) +Method to set the opMeta with more than AllStandardOps opcodes for this instance of the HumanFriendly Read + Signature: ```typescript @@ -88,10 +90,9 @@ static set(opmeta: typeof OpMeta): any; | Parameter | Type | Description | | --- | --- | --- | -| opmeta | `typeof OpMeta` | | +| opmeta | `typeof OpMeta` | The OpMeta map object | Returns: `any` - diff --git a/docs/index.md b/docs/index.md index f674265..ce3d6fb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -172,7 +172,6 @@ | [eighteenZeros](./variables/eighteenzeros.md) | 18 decimals or i.e "DECIMALS" - used for fixed point match | | [fixedPointDiv](./variables/fixedpointdiv.md) | | | [fixedPointMul](./variables/fixedpointmul.md) | | -| [lib](./variables/lib.md) | Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods | | [max](./variables/max.md) | calculate the maximum among array of BigNumbers | | [min](./variables/min.md) | calculate the minimum among array of BigNumbers | | [OpMeta](./variables/opmeta.md) | | @@ -186,6 +185,7 @@ | [scaleN](./variables/scalen.md) | | | [selectLte](./variables/selectlte.md) | | | [updateTimesForTierRange](./variables/updatetimesfortierrange.md) | | +| [vmbook](./variables/vmbook.md) | Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods | ## Type Aliases diff --git a/docs/variables/lib.md b/docs/variables/lib.md deleted file mode 100644 index 848fd5c..0000000 --- a/docs/variables/lib.md +++ /dev/null @@ -1,10 +0,0 @@ - -# Variable lib - -Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods - -Signature: - -```typescript -lib: Record StateConfig> -``` diff --git a/docs/variables/vmbook.md b/docs/variables/vmbook.md new file mode 100644 index 0000000..3019b8a --- /dev/null +++ b/docs/variables/vmbook.md @@ -0,0 +1,10 @@ + +# Variable vmbook + +Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods + +Signature: + +```typescript +vmbook: Record StateConfig> +``` diff --git a/src/index.ts b/src/index.ts index c1d356b..fa40d23 100644 --- a/src/index.ts +++ b/src/index.ts @@ -23,7 +23,7 @@ export * from './contracts/script-generators/combineTierScriptGenerator'; export * from './contracts/script-generators/emissionsERC20ScriptGenerator'; export * from './rule-builder/ruleBuilder'; -export * from './rule-builder/lib'; +export * from './rule-builder/vmbook'; export * from './rule-builder/types'; export * from './jsvm/RainJSVM'; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 672d97a..755269e 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -1,4 +1,4 @@ -import { lib } from './lib'; +import { vmbook } from './vmbook'; import { BigNumberish, BytesLike } from 'ethers'; import { StateConfig, VM } from '../classes/vm'; import { areEqualConfigs, concat } from '../utils'; @@ -152,7 +152,7 @@ export class RuleBuilder { public static getConditionConfig(condition: Condition): StateConfig { if (condition === 'always' || condition === 'never') { - return lib[condition](); + return vmbook[condition](); } else if ('constants' && 'sources' in condition) { return condition; @@ -160,24 +160,24 @@ export class RuleBuilder { else if ('struct' in condition) { if ('subject' in condition.struct) { if (condition.operator === 'true') { - return lib[condition.struct.subject](condition.struct.args); + return vmbook[condition.struct.subject](condition.struct.args); } else if (condition.operator === 'not') { return VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args) + vmbook[condition.struct.subject](condition.struct.args) ); } else { if ('subject' in condition.struct2!) { return VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args), - lib[condition.struct2!.subject](condition.struct2.args), + vmbook[condition.struct.subject](condition.struct.args), + vmbook[condition.struct2!.subject](condition.struct2.args), false ); } else { return VM[condition.operator]( - lib[condition.struct.subject](condition.struct.args), + vmbook[condition.struct.subject](condition.struct.args), condition.struct2!, false ); @@ -195,7 +195,7 @@ export class RuleBuilder { if ('subject' in condition.struct2!) { return VM[condition.operator]( condition.struct, - lib[condition.struct2!.subject](condition.struct2.args), + vmbook[condition.struct2!.subject](condition.struct2.args), false ); } @@ -222,7 +222,7 @@ export class RuleBuilder { let group_: StateConfig[] = []; if (conditionGroup === 'always' || conditionGroup === 'never') { - return lib[conditionGroup](); + return vmbook[conditionGroup](); } else if ('constants' && 'sources' in conditionGroup) { return conditionGroup; @@ -230,7 +230,7 @@ export class RuleBuilder { else if ('conditions' in conditionGroup) { for (const item of conditionGroup.conditions) { if (item === 'always' || item === 'never') { - return lib[item](); + return vmbook[item](); } else if ('constants' && 'sources' in item) { return item; @@ -265,12 +265,12 @@ export class RuleBuilder { if ('subject' && 'args' in qp.struct) { if (qp.modifier !== undefined) { return this.applyModifier( - lib[qp.struct.subject](qp.struct.args), + vmbook[qp.struct.subject](qp.struct.args), qp.modifier ); } else { - return lib[qp.struct.subject](qp.struct.args); + return vmbook[qp.struct.subject](qp.struct.args); } } else if ('consstants' && 'sources' in qp.struct) { diff --git a/src/rule-builder/lib.ts b/src/rule-builder/vmbook.ts similarity index 94% rename from src/rule-builder/lib.ts rename to src/rule-builder/vmbook.ts index 66e5ad2..8c8465b 100644 --- a/src/rule-builder/lib.ts +++ b/src/rule-builder/vmbook.ts @@ -1,15 +1,15 @@ import { ethers } from 'ethers'; import { Filter } from './types'; import { StateConfig, VM } from '../classes/vm'; -import { BetweenTimestamps } from '../contracts/script-generators/saleScriptGenerator'; +import { BetweenBlocks, BetweenTimestamps } from '../contracts/script-generators/saleScriptGenerator'; import { CombineTierGenerator } from '../contracts/script-generators/combineTierScriptGenerator'; /** * @public - * Key/value paired library to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods + * Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods */ -export const lib: Record StateConfig> = { +export const vmbook: Record StateConfig> = { 'always': () => { return VM.constant(ethers.constants.One) @@ -66,13 +66,13 @@ export const lib: Record StateConfig> = { startBlock, endBlock, }: Filter<'between-blocks'>['between-blocks']['args']) => { - return new BetweenTimestamps(startBlock, endBlock); + return new BetweenBlocks(startBlock, endBlock); }, 'has-min-tier': ({ tierAddress, - tierContext, minTier, + tierContext, }: Filter<'has-min-tier'>['has-min-tier']['args']) => { return VM.hasMinTier( new CombineTierGenerator(tierAddress, { diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index 49a23a8..b046784 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -66,9 +66,10 @@ export class HumanFriendlyRead { private static opMeta: IOpMeta[] = Array.from(OpMeta.values()); /** + * @public + * Method to set the opMeta with more than AllStandardOps opcodes for this instance of the HumanFriendly Read * - * @param opmeta - * @returns + * @param opmeta - The OpMeta map object */ public static set(opmeta: typeof OpMeta): any { this.opMeta = Array.from(opmeta.values()); From 30336bdb672df5fbcac9258dc43c513df965aea5 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 15 Aug 2022 09:05:30 +0000 Subject: [PATCH 096/125] RuleBuilder strict typechecking --- docs/classes/rulebuilder.md | 2 +- docs/index.md | 8 +++- docs/types/allstandardargs.md | 10 ++++ docs/types/args.md | 10 ++++ .../{structtypelib.md => argstypebook.md} | 6 ++- docs/types/filter.md | 8 ++-- docs/types/optionalargs.md | 10 ++++ docs/types/uniontointersection.md | 10 ++++ docs/variables/vmbook.md | 4 +- src/rule-builder/ruleBuilder.ts | 25 +++++----- src/rule-builder/types.ts | 47 ++++++++++++++++--- src/rule-builder/vmbook.ts | 4 +- 12 files changed, 113 insertions(+), 31 deletions(-) create mode 100644 docs/types/allstandardargs.md create mode 100644 docs/types/args.md rename docs/types/{structtypelib.md => argstypebook.md} (97%) create mode 100644 docs/types/optionalargs.md create mode 100644 docs/types/uniontointersection.md diff --git a/docs/classes/rulebuilder.md b/docs/classes/rulebuilder.md index 066af32..c636c35 100644 --- a/docs/classes/rulebuilder.md +++ b/docs/classes/rulebuilder.md @@ -196,7 +196,7 @@ static getQPConfig(qp: Price | Quantity): StateConfig; | Parameter | Type | Description | | --- | --- | --- | -| qp | `Price \| Quantity` | | +| qp | `Price \| Quantity` | The price or quantity | Returns: diff --git a/docs/index.md b/docs/index.md index ce3d6fb..bbefa5a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -192,7 +192,10 @@ | Type Alias | Description | | --- | --- | | [Addresses](./types/addresses.md) | Type for all the addresses stored in the Book. | +| [AllStandardArgs](./types/allstandardargs.md) | Type of all standard args all together used for inner RuleBuilder typechecking (intersection of all args) | | [Always](./types/always.md) | Type to get an always true condition | +| [Args](./types/args.md) | Type of a single valid Strcut's args (union of all possible args) | +| [ArgsTypeBook](./types/argstypebook.md) | A key/type pair for all the valid Struct types | | [AutoApproveOps](./types/autoapproveops.md) | Type for the opcodes availables in a AutoApprove instance. | | [CallOptions](./types/calloptions.md) | Options for instantiating RainJSVM | | [ClearConfig](./types/clearconfig.md) | Type for clear vaultIds used when in | @@ -206,13 +209,14 @@ | [DepositConfig](./types/depositconfig.md) | Type for depositing some token amount into a vault used in | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | | [EvidenceConfig](./types/evidenceconfig.md) | | -| [Filter](./types/filter.md) | A filtering utility type for StructTypeLib | +| [Filter](./types/filter.md) | A filtering utility type for ArgsTypeBook | | [IOConfig](./types/ioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [Modifier](./types/modifier.md) | Type for price/quantity modifier based on a tier report or a Rule | | [ModifierType](./types/modifiertype.md) | Valid Modifier types | | [Never](./types/never.md) | Type to get an always false condition | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | | [Operator](./types/operator.md) | All the valid logical operators used for comparison of Struct and/or StateConfig objects | +| [OptionalArgs](./types/optionalargs.md) | Type of all args properties as optional properties | | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | @@ -223,8 +227,8 @@ | [SIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | | [Struct](./types/struct.md) | The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig | -| [StructTypeLib](./types/structtypelib.md) | A key/type pair for all the valid Struct types | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | | [TimeBoundConfig](./types/timeboundconfig.md) | | +| [UnionToIntersection](./types/uniontointersection.md) | A utility generic type to convert union to intersection | | [WithdrawConfig](./types/withdrawconfig.md) | Type for withdrawing some token amount from a vault used in | diff --git a/docs/types/allstandardargs.md b/docs/types/allstandardargs.md new file mode 100644 index 0000000..f99a091 --- /dev/null +++ b/docs/types/allstandardargs.md @@ -0,0 +1,10 @@ + +# Type AllStandardArgs + +Type of all standard args all together used for inner RuleBuilder typechecking (intersection of all args) + +Signature: + +```typescript +type AllStandardArgs = UnionToIntersection; +``` diff --git a/docs/types/args.md b/docs/types/args.md new file mode 100644 index 0000000..3bb92d9 --- /dev/null +++ b/docs/types/args.md @@ -0,0 +1,10 @@ + +# Type Args + +Type of a single valid Strcut's args (union of all possible args) + +Signature: + +```typescript +type Args = Exclude['args']; +``` diff --git a/docs/types/structtypelib.md b/docs/types/argstypebook.md similarity index 97% rename from docs/types/structtypelib.md rename to docs/types/argstypebook.md index f233696..7520e5a 100644 --- a/docs/types/structtypelib.md +++ b/docs/types/argstypebook.md @@ -1,12 +1,14 @@ -# Type StructTypeLib +# Type ArgsTypeBook A key/type pair for all the valid Struct types Signature: ```typescript -type StructTypeLib = { +type ArgsTypeBook = { + 'always': {}; + 'never': {}; 'input': { index: number; }; diff --git a/docs/types/filter.md b/docs/types/filter.md index 3002bc4..1f460a1 100644 --- a/docs/types/filter.md +++ b/docs/types/filter.md @@ -1,15 +1,15 @@ # Type Filter -A filtering utility type for StructTypeLib +A filtering utility type for ArgsTypeBook Signature: ```typescript -type Filter = { - [Prop in keyof StructTypeLib]: { +type Filter = { + [Prop in keyof ArgsTypeBook]: { subject: T; - args: StructTypeLib[T]; + args: ArgsTypeBook[T]; }; }; ``` diff --git a/docs/types/optionalargs.md b/docs/types/optionalargs.md new file mode 100644 index 0000000..e8cbddb --- /dev/null +++ b/docs/types/optionalargs.md @@ -0,0 +1,10 @@ + +# Type OptionalArgs + +Type of all args properties as optional properties + +Signature: + +```typescript +type OptionalArgs = Partial>; +``` diff --git a/docs/types/uniontointersection.md b/docs/types/uniontointersection.md new file mode 100644 index 0000000..4c3b15c --- /dev/null +++ b/docs/types/uniontointersection.md @@ -0,0 +1,10 @@ + +# Type UnionToIntersection + +A utility generic type to convert union to intersection + +Signature: + +```typescript +type UnionToIntersection = (T extends any ? (type: T) => any : never) extends (type: infer R) => any ? R : never; +``` diff --git a/docs/variables/vmbook.md b/docs/variables/vmbook.md index 3019b8a..4a981af 100644 --- a/docs/variables/vmbook.md +++ b/docs/variables/vmbook.md @@ -6,5 +6,7 @@ Key/value paired VM functions to get the corresponding StateConfigs from RuleBui Signature: ```typescript -vmbook: Record StateConfig> +vmbook: { + [T in keyof ArgsTypeBook]: (args: Filter[T]['args']) => StateConfig; +} ``` diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 755269e..881d75f 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -3,6 +3,7 @@ import { BigNumberish, BytesLike } from 'ethers'; import { StateConfig, VM } from '../classes/vm'; import { areEqualConfigs, concat } from '../utils'; import { + AllStandardArgs, Condition, ConditionGroup, Currency, @@ -152,7 +153,7 @@ export class RuleBuilder { public static getConditionConfig(condition: Condition): StateConfig { if (condition === 'always' || condition === 'never') { - return vmbook[condition](); + return vmbook[condition]({}); } else if ('constants' && 'sources' in condition) { return condition; @@ -160,24 +161,24 @@ export class RuleBuilder { else if ('struct' in condition) { if ('subject' in condition.struct) { if (condition.operator === 'true') { - return vmbook[condition.struct.subject](condition.struct.args); + return vmbook[condition.struct.subject](condition.struct.args as AllStandardArgs); } else if (condition.operator === 'not') { return VM[condition.operator]( - vmbook[condition.struct.subject](condition.struct.args) + vmbook[condition.struct.subject](condition.struct.args as AllStandardArgs) ); } else { if ('subject' in condition.struct2!) { return VM[condition.operator]( - vmbook[condition.struct.subject](condition.struct.args), - vmbook[condition.struct2!.subject](condition.struct2.args), + vmbook[condition.struct.subject](condition.struct.args as AllStandardArgs), + vmbook[condition.struct2!.subject](condition.struct2.args as AllStandardArgs), false ); } else { return VM[condition.operator]( - vmbook[condition.struct.subject](condition.struct.args), + vmbook[condition.struct.subject](condition.struct.args as AllStandardArgs), condition.struct2!, false ); @@ -195,7 +196,7 @@ export class RuleBuilder { if ('subject' in condition.struct2!) { return VM[condition.operator]( condition.struct, - vmbook[condition.struct2!.subject](condition.struct2.args), + vmbook[condition.struct2!.subject](condition.struct2.args as AllStandardArgs), false ); } @@ -222,7 +223,7 @@ export class RuleBuilder { let group_: StateConfig[] = []; if (conditionGroup === 'always' || conditionGroup === 'never') { - return vmbook[conditionGroup](); + return vmbook[conditionGroup]({}); } else if ('constants' && 'sources' in conditionGroup) { return conditionGroup; @@ -230,7 +231,7 @@ export class RuleBuilder { else if ('conditions' in conditionGroup) { for (const item of conditionGroup.conditions) { if (item === 'always' || item === 'never') { - return vmbook[item](); + return vmbook[item]({}); } else if ('constants' && 'sources' in item) { return item; @@ -258,19 +259,19 @@ export class RuleBuilder { /** * Method to get the price or quantity StateConfig * - * @param pq - The price or quantity + * @param qp - The price or quantity * @returns StateConfig */ public static getQPConfig(qp: Price | Quantity): StateConfig { if ('subject' && 'args' in qp.struct) { if (qp.modifier !== undefined) { return this.applyModifier( - vmbook[qp.struct.subject](qp.struct.args), + vmbook[qp.struct.subject](qp.struct.args as AllStandardArgs), qp.modifier ); } else { - return vmbook[qp.struct.subject](qp.struct.args); + return vmbook[qp.struct.subject](qp.struct.args as AllStandardArgs); } } else if ('consstants' && 'sources' in qp.struct) { diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index e4c4eb2..759e9bd 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -171,7 +171,15 @@ export type Price = { * @public * A key/type pair for all the valid Struct types */ - export type StructTypeLib = { + export type ArgsTypeBook = { + /** + * Valid arguments for always type + */ + 'always': {}, + /** + * Valid arguments for never type + */ + 'never': {}, /** * Type for getting the passed value to contract method at call time. * This is completely depended on the contract's method signature @@ -566,23 +574,48 @@ export type Price = { /** * @public - * A filtering utility type for StructTypeLib + * A filtering utility type for ArgsTypeBook */ - export type Filter = { - [Prop in keyof StructTypeLib]: { +export type Filter = { + [Prop in keyof ArgsTypeBook]: { /** * The type of the struct which determines the valid properties (args) and build the StageConfig out of them - * @see {@link StructTypeLib} + * @see {@link ArgsTypeBook} */ subject: T, /** * The valid properties of this Struct object - * @see {@link StructTypeLib} + * @see {@link ArgsTypeBook} */ - args: StructTypeLib[T] + args: ArgsTypeBook[T] } } +/** + * @public + * A utility generic type to convert union to intersection + */ +export type UnionToIntersection = + (T extends any ? (type: T) => any : never) extends (type: infer R) => any ? R : never + +/** + * @public + * Type of a single valid Strcut's args (union of all possible args) + */ +export type Args = Exclude['args']; + +/** + * @public + * Type of all standard args all together used for inner RuleBuilder typechecking (intersection of all args) + */ +export type AllStandardArgs = UnionToIntersection + +/** + * @public + * Type of all args properties as optional properties + */ + export type OptionalArgs = Partial> + /** * @public * The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig diff --git a/src/rule-builder/vmbook.ts b/src/rule-builder/vmbook.ts index 8c8465b..bfb148d 100644 --- a/src/rule-builder/vmbook.ts +++ b/src/rule-builder/vmbook.ts @@ -1,5 +1,5 @@ import { ethers } from 'ethers'; -import { Filter } from './types'; +import { Filter, ArgsTypeBook } from './types'; import { StateConfig, VM } from '../classes/vm'; import { BetweenBlocks, BetweenTimestamps } from '../contracts/script-generators/saleScriptGenerator'; import { CombineTierGenerator } from '../contracts/script-generators/combineTierScriptGenerator'; @@ -9,7 +9,7 @@ import { CombineTierGenerator } from '../contracts/script-generators/combineTier * @public * Key/value paired VM functions to get the corresponding StateConfigs from RuleBuilder types by Rulebuilder class methods */ -export const vmbook: Record StateConfig> = { +export const vmbook: { [T in keyof ArgsTypeBook]: (args: Filter[T]['args']) => StateConfig } = { 'always': () => { return VM.constant(ethers.constants.One) From ce46690f9c447ab81e0f5c71e592377bc0ab2f8a Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 15 Aug 2022 13:50:31 +0000 Subject: [PATCH 097/125] update --- docs/classes/combinetiersimulation.md | 12 +- docs/classes/emissionsmiulation.md | 16 +- docs/classes/matchmaker.md | 24 +-- docs/classes/orderbooksimulation.md | 40 ++-- docs/classes/salesimulation.md | 16 +- docs/classes/vmsimulation.md | 28 +-- docs/index.md | 32 ++-- docs/interfaces/sclearconfig.md | 4 +- docs/interfaces/sclearedcounterpartyfunds.md | 6 +- docs/interfaces/sclearedfunds.md | 8 +- docs/interfaces/serc1155.md | 12 +- docs/interfaces/serc1155s.md | 6 +- docs/interfaces/serc20.md | 12 +- docs/interfaces/serc20s.md | 6 +- docs/interfaces/serc721.md | 6 +- docs/interfaces/serc721s.md | 6 +- docs/interfaces/sitiers.md | 12 +- docs/interfaces/sorder.md | 12 +- docs/interfaces/sorders.md | 6 +- docs/interfaces/ssnapshot.md | 12 +- docs/interfaces/sstore.md | 12 +- docs/interfaces/svaults.md | 6 +- docs/types/optionalargs.md | 2 +- docs/types/sioconfig.md | 4 +- src/classes/iTierV2.ts | 9 +- src/index.ts | 3 +- src/jsvm/RainJSVM.ts | 46 ++++- src/jsvm/SaleJSVM.ts | 3 +- src/jsvm/lib/FixedPointMath.ts | 2 +- src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts | 3 +- .../ops/erc1155/OpERC1155BalanceOfBatch.ts | 3 +- src/jsvm/ops/erc20/OpERC20BalanceOf.ts | 3 +- src/jsvm/ops/erc20/OpERC20TotalSupply.ts | 3 +- .../snapshot/OpERC20SnapshotBalanceOfAt.ts | 3 +- .../snapshot/OpERC20SnapshotTotalSupplyAt.ts | 3 +- src/jsvm/ops/erc721/OpERC721BalanceOf.ts | 3 +- src/jsvm/ops/erc721/OpERC721OwnerOf.ts | 3 +- src/jsvm/ops/evm/OpBlockNumber.ts | 3 +- src/jsvm/ops/evm/OpCaller.ts | 3 +- src/jsvm/ops/evm/OpThisAddress.ts | 3 +- src/jsvm/ops/evm/OpTimestamp.ts | 4 +- src/jsvm/ops/math/OpAdd.ts | 4 +- src/jsvm/ops/math/OpDiv.ts | 3 +- src/jsvm/ops/math/OpExp.ts | 4 +- src/jsvm/ops/math/OpMax.ts | 3 +- src/jsvm/ops/math/OpMin.ts | 3 +- src/jsvm/ops/math/OpMod.ts | 3 +- src/jsvm/ops/math/OpMul.ts | 3 +- src/jsvm/ops/math/OpSub.ts | 3 +- src/jsvm/ops/math/fixedPoint/OpScale18.ts | 3 +- src/jsvm/ops/math/fixedPoint/OpScale18Div.ts | 3 +- src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts | 3 +- src/jsvm/ops/math/fixedPoint/OpScaleBy.ts | 3 +- src/jsvm/ops/math/fixedPoint/OpScaleN.ts | 3 +- src/jsvm/ops/math/logic/OpAny.ts | 3 +- src/jsvm/ops/math/logic/OpEagerIf.ts | 3 +- src/jsvm/ops/math/logic/OpEqualTo.ts | 3 +- src/jsvm/ops/math/logic/OpEvery.ts | 3 +- src/jsvm/ops/math/logic/OpGreaterThan.ts | 3 +- src/jsvm/ops/math/logic/OpIsZero.ts | 3 +- src/jsvm/ops/math/logic/OpLessThan.ts | 3 +- .../ops/math/saturating/OpSaturatingAdd.ts | 3 +- .../ops/math/saturating/OpSaturatingMul.ts | 3 +- .../ops/math/saturating/OpSaturatingSub.ts | 3 +- src/jsvm/ops/tier/OpITierV2Report.ts | 3 +- .../ops/tier/OpITierV2ReportTimesForTier.ts | 3 +- src/jsvm/ops/tier/OpSaturatingDiff.ts | 3 +- src/jsvm/ops/tier/OpSelectLte.ts | 3 +- .../ops/tier/OpUpdateTimesForTierRange.ts | 3 +- src/jsvm/simulation/CombineTierSimulation.ts | 6 +- .../simulation/EmissionsERC20Simulation.ts | 10 +- src/jsvm/simulation/Matchmaker.ts | 6 +- src/jsvm/simulation/OrderbookSimulation.ts | 37 ++-- src/jsvm/simulation/SaleSimulation.ts | 11 +- src/jsvm/simulation/types.ts | 129 +++++++++++++ src/jsvm/simulation/vmSimulation.ts | 23 +-- src/jsvm/types.ts | 176 ------------------ src/rule-builder/types.ts | 2 +- src/vm/OpMeta.ts | 3 +- test/OB_MatchMaker.test.ts | 12 +- 80 files changed, 429 insertions(+), 472 deletions(-) create mode 100644 src/jsvm/simulation/types.ts delete mode 100644 src/jsvm/types.ts diff --git a/docs/classes/combinetiersimulation.md b/docs/classes/combinetiersimulation.md index 6b36129..bed10da 100644 --- a/docs/classes/combinetiersimulation.md +++ b/docs/classes/combinetiersimulation.md @@ -17,12 +17,12 @@ class CombinetierSimulation extends vmSimulation | --- | --- | --- | | [address](./combinetiersimulation.md#address-property) | `string` | The CombineTier address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [sERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [sERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [sERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [sITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | | [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [report](./combinetiersimulation.md#report-property) | [SStore](../interfaces/sstore.md) | The report of each account which is compatible and can be stored in | +| [report](./combinetiersimulation.md#report-property) | [sStore](../interfaces/sstore.md) | The report of each account which is compatible and can be stored in | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | @@ -64,7 +64,7 @@ The report of each account which is compatible and can be stored in Signature: ```typescript -report: SStore; +report: sStore; ``` ## Method Details diff --git a/docs/classes/emissionsmiulation.md b/docs/classes/emissionsmiulation.md index 2bfd9f5..e1fd8bd 100644 --- a/docs/classes/emissionsmiulation.md +++ b/docs/classes/emissionsmiulation.md @@ -16,15 +16,15 @@ class EmissionSmiulation extends vmSimulation | Property | Type | Description | | --- | --- | --- | | [address](./emissionsmiulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | -| [balanceOf](./emissionsmiulation.md#balanceOf-property) | [SStore](../interfaces/sstore.md) | The balance of emission token holders which is compatible with | +| [balanceOf](./emissionsmiulation.md#balanceOf-property) | [sStore](../interfaces/sstore.md) | The balance of emission token holders which is compatible with | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | | [decimals](./emissionsmiulation.md#decimals-property) | `number` | The decimals value of the emissions token which is 18 | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [sERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [sERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [sERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [sITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | | [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [report](./emissionsmiulation.md#report-property) | [SStore](../interfaces/sstore.md) | The report of each claimant which is compatible and can be stored in | +| [report](./emissionsmiulation.md#report-property) | [sStore](../interfaces/sstore.md) | The report of each claimant which is compatible and can be stored in | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./emissionsmiulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | @@ -68,7 +68,7 @@ The balance of emission token holders which is compatible with Signature: ```typescript -balanceOf: SStore; +balanceOf: sStore; ``` @@ -92,7 +92,7 @@ The report of each claimant which is compatible and can be stored in Signature: ```typescript -report: SStore; +report: sStore; ``` diff --git a/docs/classes/matchmaker.md b/docs/classes/matchmaker.md index 15d2bc2..24a299a 100644 --- a/docs/classes/matchmaker.md +++ b/docs/classes/matchmaker.md @@ -15,20 +15,20 @@ class MatchMaker extends OrderbookSimulation | --- | --- | --- | | [address](./orderbooksimulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Inherited from [OrderbookSimulation.address](./orderbooksimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [SClearedCounterPartyFunds](../interfaces/sclearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string

*Inherited from [OrderbookSimulation.clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property)* | -| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [SClearedFunds](../interfaces/sclearedfunds.md) | The property that stores all the data of an order's total cleared amount,

*Inherited from [OrderbookSimulation.clearedFunds](./orderbooksimulation.md#clearedFunds-property)* | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [sClearedCounterPartyFunds](../interfaces/sclearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string

*Inherited from [OrderbookSimulation.clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property)* | +| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [sClearedFunds](../interfaces/sclearedfunds.md) | The property that stores all the data of an order's total cleared amount,

*Inherited from [OrderbookSimulation.clearedFunds](./orderbooksimulation.md#clearedFunds-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [sERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [sERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [sERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | | [foundMatches](./matchmaker.md#foundMatches-property) |
{
    orderA: string;
    orderB: string;
}[]
| The type of stores all the found matches | -| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [sITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | | [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Inherited from [OrderbookSimulation.OpFns](./orderbooksimulation.md#OpFns-property)* | -| [orders](./orderbooksimulation.md#orders-property) | [SOrders](../interfaces/sorders.md) | The property that stores all the data of the class's orders,

*Inherited from [OrderbookSimulation.orders](./orderbooksimulation.md#orders-property)* | +| [orders](./orderbooksimulation.md#orders-property) | [sOrders](../interfaces/sorders.md) | The property that stores all the data of the class's orders,

*Inherited from [OrderbookSimulation.orders](./orderbooksimulation.md#orders-property)* | | [reservebook](./matchmaker.md#reservebook-property) | [ReserveBook](../interfaces/reservebook.md) | The ReserveBook property of the matchmaker | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./orderbooksimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [OrderbookSimulation.sender](./orderbooksimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | -| [vaults](./orderbooksimulation.md#vaults-property) | [SVaults](../interfaces/svaults.md) | The property that stores all the data of the class's vaults

*Inherited from [OrderbookSimulation.vaults](./orderbooksimulation.md#vaults-property)* | +| [vaults](./orderbooksimulation.md#vaults-property) | [sVaults](../interfaces/svaults.md) | The property that stores all the data of the class's vaults

*Inherited from [OrderbookSimulation.vaults](./orderbooksimulation.md#vaults-property)* | ## Methods @@ -90,14 +90,14 @@ Method that inherits from the parent class addOrder and after perfroming that wi Signature: ```typescript -addOrder(order: SOrder): Promise; +addOrder(order: sOrder): Promise; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | [SOrder](../interfaces/sorder.md) | the order to be added | +| order | [sOrder](../interfaces/sorder.md) | the order to be added | Returns: @@ -145,14 +145,14 @@ Method to evaluate and ReserveBook the order's script Signature: ```typescript -orderEval(order: SOrder, timestamp?: number, blockNumber?: number): Promise; +orderEval(order: sOrder, timestamp?: number, blockNumber?: number): Promise; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | [SOrder](../interfaces/sorder.md) | the order to be evaluated | +| order | [sOrder](../interfaces/sorder.md) | the order to be evaluated | | timestamp | `number` | | | blockNumber | `number` | | diff --git a/docs/classes/orderbooksimulation.md b/docs/classes/orderbooksimulation.md index 82854fd..e8865df 100644 --- a/docs/classes/orderbooksimulation.md +++ b/docs/classes/orderbooksimulation.md @@ -15,18 +15,18 @@ class OrderbookSimulation extends vmSimulation | --- | --- | --- | | [address](./orderbooksimulation.md#address-property) | `string` | The EmissionsERC20 address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [SClearedCounterPartyFunds](../interfaces/sclearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string | -| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [SClearedFunds](../interfaces/sclearedfunds.md) | The property that stores all the data of an order's total cleared amount, | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [clearedCounterPartyFunds](./orderbooksimulation.md#clearedCounterPartyFunds-property) | [sClearedCounterPartyFunds](../interfaces/sclearedcounterpartyfunds.md) | The property that stores all the data of an order's total cleared amount to a specific counterparty address which needs to be in form of a string number or hex string | +| [clearedFunds](./orderbooksimulation.md#clearedFunds-property) | [sClearedFunds](../interfaces/sclearedfunds.md) | The property that stores all the data of an order's total cleared amount, | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [sERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [sERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [sERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [sITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | | [OpFns](./orderbooksimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Local Orderbook Opcodes' functions body for simulation that uses the class properties/types.

*Overrides [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [orders](./orderbooksimulation.md#orders-property) | [SOrders](../interfaces/sorders.md) | The property that stores all the data of the class's orders, | +| [orders](./orderbooksimulation.md#orders-property) | [sOrders](../interfaces/sorders.md) | The property that stores all the data of the class's orders, | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./orderbooksimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Overrides [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | -| [vaults](./orderbooksimulation.md#vaults-property) | [SVaults](../interfaces/svaults.md) | The property that stores all the data of the class's vaults | +| [vaults](./orderbooksimulation.md#vaults-property) | [sVaults](../interfaces/svaults.md) | The property that stores all the data of the class's vaults | ## Methods @@ -69,7 +69,7 @@ The property that stores all the data of an order's total cleared amount to a sp Signature: ```typescript -clearedCounterPartyFunds: SClearedCounterPartyFunds; +clearedCounterPartyFunds: sClearedCounterPartyFunds; ``` @@ -81,7 +81,7 @@ The property that stores all the data of an order's total cleared amount, Signature: ```typescript -clearedFunds: SClearedFunds; +clearedFunds: sClearedFunds; ``` @@ -107,7 +107,7 @@ The property that stores all the data of the class's orders, Signature: ```typescript -orders: SOrders; +orders: sOrders; ``` @@ -133,7 +133,7 @@ The property that stores all the data of the class's vaults Signature: ```typescript -vaults: SVaults; +vaults: sVaults; ``` ## Method Details @@ -147,14 +147,14 @@ Method to submit an order into the class orders Signature: ```typescript -addOrder(order: SOrder): void; +addOrder(order: sOrder): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | [SOrder](../interfaces/sorder.md) | the order to add | +| order | [sOrder](../interfaces/sorder.md) | the order to add | Returns: @@ -171,16 +171,16 @@ Method to perform the clear by JSVM for this simulation which will update all th Signature: ```typescript -clear(a: SOrder, b: SOrder, clearConfig: SClearConfig, timestamp?: number, blockNumber?: number): Promise; +clear(a: sOrder, b: sOrder, clearConfig: sClearConfig, timestamp?: number, blockNumber?: number): Promise; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| a | [SOrder](../interfaces/sorder.md) | order A to clear | -| b | [SOrder](../interfaces/sorder.md) | order B to clear | -| clearConfig | [SClearConfig](../interfaces/sclearconfig.md) | the BountyConfig type to collect bounties of this clear | +| a | [sOrder](../interfaces/sorder.md) | order A to clear | +| b | [sOrder](../interfaces/sorder.md) | order B to clear | +| clearConfig | [sClearConfig](../interfaces/sclearconfig.md) | the BountyConfig type to collect bounties of this clear | | timestamp | `number` | (optional) custom timestamp to be used when running the script | | blockNumber | `number` | (optional) custom block number to be used when running the script | @@ -227,14 +227,14 @@ Method to remove an order from the class's orders Signature: ```typescript -removeOrder(order: SOrder | string): void; +removeOrder(order: sOrder | string): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| order | `SOrder \| string` | the order to remove | +| order | `sOrder \| string` | the order to remove | Returns: diff --git a/docs/classes/salesimulation.md b/docs/classes/salesimulation.md index 932c940..5fb8f26 100644 --- a/docs/classes/salesimulation.md +++ b/docs/classes/salesimulation.md @@ -15,17 +15,17 @@ class SaleSimulation extends vmSimulation | --- | --- | --- | | [address](./salesimulation.md#address-property) | `string` | The sale address of this class that the simulation is done for. this is needed for THIS\_ADDRESS opcode and updating storage types after method calls, and needs to be a string number or hex string.

*Overrides [vmSimulation.address](./vmsimulation.md#address-property)* | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime

*Inherited from [vmSimulation.blockNumber](./vmsimulation.md#blockNumber-property)* | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | -| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | -| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | -| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [sERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes

*Inherited from [vmSimulation.erc1155s](./vmsimulation.md#erc1155s-property)* | +| [erc20s](./vmsimulation.md#erc20s-property) | [sERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes

*Inherited from [vmSimulation.erc20s](./vmsimulation.md#erc20s-property)* | +| [erc721s](./vmsimulation.md#erc721s-property) | [sERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes

*Inherited from [vmSimulation.erc721s](./vmsimulation.md#erc721s-property)* | +| [iTiers](./vmsimulation.md#iTiers-property) | [sITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes.

*Inherited from [vmSimulation.iTiers](./vmsimulation.md#iTiers-property)* | | [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types.

*Inherited from [vmSimulation.OpFns](./vmsimulation.md#OpFns-property)* | -| [reserve](./salesimulation.md#reserve-property) | [SERC20](../interfaces/serc20.md) | The reserve token of this sale as an erc20 type object | +| [reserve](./salesimulation.md#reserve-property) | [sERC20](../interfaces/serc20.md) | The reserve token of this sale as an erc20 type object | | [reserveAddress](./salesimulation.md#reserveAddress-property) | `string` | The reedeemable token address of this sale i.e rTKN which needs to be string number or hex string | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate

*Inherited from [vmSimulation.script](./vmsimulation.md#script-property)* | | [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string.

*Inherited from [vmSimulation.sender](./vmsimulation.md#sender-property)* | | [timestamp](./vmsimulation.md#timestamp-property) | `number` | A property for producing timestamp for the class which will be used in BLOCK\_TIMESTAMP opcode but BLOCK\_TIMESTAMP opcode can also be passed at runtime

*Inherited from [vmSimulation.timestamp](./vmsimulation.md#timestamp-property)* | -| [token](./salesimulation.md#token-property) | [SERC20](../interfaces/serc20.md) | The reedeemable token of this sale i.e rTKN which needs to a string number or hex string | +| [token](./salesimulation.md#token-property) | [sERC20](../interfaces/serc20.md) | The reedeemable token of this sale i.e rTKN which needs to a string number or hex string | | [tokenAddress](./salesimulation.md#tokenAddress-property) | `string` | The reserve token addres of this sale as an erc20 type object | ## Methods @@ -67,7 +67,7 @@ The reserve token of this sale as an erc20 type object Signature: ```typescript -reserve: SERC20; +reserve: sERC20; ``` @@ -91,7 +91,7 @@ The reedeemable token of this sale i.e rTKN which needs to a string number or he Signature: ```typescript -token: SERC20; +token: sERC20; ``` diff --git a/docs/classes/vmsimulation.md b/docs/classes/vmsimulation.md index adc3b9a..104a2e4 100644 --- a/docs/classes/vmsimulation.md +++ b/docs/classes/vmsimulation.md @@ -15,10 +15,10 @@ class vmSimulation | --- | --- | --- | | [address](./vmsimulation.md#address-property) | `string` | The contract address of this simulation that the simulation is done for. this is needed for THIS\_ADDRESS opcode simulation and updating storage types after method calls, and needs to be a string number or hex string. | | [blockNumber](./vmsimulation.md#blockNumber-property) | `number` | A property for producing block number for the class which will be used in BLOCK\_NUMBER opcode but BLOCK\_NUMBER opcode can also be passed at runtime | -| [erc1155s](./vmsimulation.md#erc1155s-property) | [SERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes | -| [erc20s](./vmsimulation.md#erc20s-property) | [SERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes | -| [erc721s](./vmsimulation.md#erc721s-property) | [SERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes | -| [iTiers](./vmsimulation.md#iTiers-property) | [SITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes. | +| [erc1155s](./vmsimulation.md#erc1155s-property) | [sERC1155s](../interfaces/serc1155s.md) | A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. this is needed for IERC1155 related opcodes | +| [erc20s](./vmsimulation.md#erc20s-property) | [sERC20s](../interfaces/serc20s.md) | A property of type erc20s that act like a storage for simulation and stores the erc20 token data. this is needed for IERC20 related opcodes | +| [erc721s](./vmsimulation.md#erc721s-property) | [sERC721s](../interfaces/serc721s.md) | A property of type erc721s that act like a storage for simulation and stores the erc721 token data. this is needed for IERC721 related opcodes | +| [iTiers](./vmsimulation.md#iTiers-property) | [sITiers](../interfaces/sitiers.md) | A property of type itiers that act like a storage for simulation of Rain tier contracts. this is needed for ITIERV2\_REPORT and ITIERV2\_REPORT\_TIME\_FOR\_TIER opcodes. | | [OpFns](./vmsimulation.md#OpFns-property) | [FnPtrsJSVM](../interfaces/fnptrsjsvm.md) | Opcodes functions body for simulation that use the class properties/types. | | [script](./vmsimulation.md#script-property) | [StateConfig](../interfaces/stateconfig.md) | The script to simulate | | [sender](./vmsimulation.md#sender-property) | `string` | A sender that performs the simulation transactions. this is needed for SENDER opcode simulation, and updating storage types after method calls and needs to be a string number or hex string. | @@ -70,7 +70,7 @@ A property of type erc1155s that act like a storage for simulation and stores th Signature: ```typescript -erc1155s: SERC1155s; +erc1155s: sERC1155s; ``` @@ -82,7 +82,7 @@ A property of type erc20s that act like a storage for simulation and stores the Signature: ```typescript -erc20s: SERC20s; +erc20s: sERC20s; ``` @@ -94,7 +94,7 @@ A property of type erc721s that act like a storage for simulation and stores the Signature: ```typescript -erc721s: SERC721s; +erc721s: sERC721s; ``` @@ -106,7 +106,7 @@ A property of type itiers that act like a storage for simulation of Rain tier co Signature: ```typescript -iTiers: SITiers; +iTiers: sITiers; ``` @@ -168,16 +168,16 @@ Method to add assets i.e erc20/721/1155 types objects Signature: ```typescript -addAssets(erc20s?: SERC20s, erc721s?: SERC721s, erc1155s?: SERC1155s): void; +addAssets(erc20s?: sERC20s, erc721s?: sERC721s, erc1155s?: sERC1155s): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| erc20s | [SERC20s](../interfaces/serc20s.md) | An object of type erc20s | -| erc721s | [SERC721s](../interfaces/serc721s.md) | An object of type erc721s | -| erc1155s | [SERC1155s](../interfaces/serc1155s.md) | An object of type erc1155s | +| erc20s | [sERC20s](../interfaces/serc20s.md) | An object of type erc20s | +| erc721s | [sERC721s](../interfaces/serc721s.md) | An object of type erc721s | +| erc1155s | [sERC1155s](../interfaces/serc1155s.md) | An object of type erc1155s | Returns: @@ -192,14 +192,14 @@ Method to add tier contract types objects to the class (iTiers) Signature: ```typescript -addITiers(iTiers: SITiers): void; +addITiers(iTiers: sITiers): void; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| iTiers | [SITiers](../interfaces/sitiers.md) | An Object of itiers type | +| iTiers | [sITiers](../interfaces/sitiers.md) | An Object of itiers type | Returns: diff --git a/docs/index.md b/docs/index.md index bbefa5a..cbc75b6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -137,24 +137,24 @@ | [SaleConfig](./interfaces/saleconfig.md) | The configuration of the sale | | [SaleDeployArguments](./interfaces/saledeployarguments.md) | Arguments to deploy/create a new Sale | | [SaleRedeemableERC20Config](./interfaces/saleredeemableerc20config.md) | Configuration that will have the Redeemable of the Sale | -| [SClearConfig](./interfaces/sclearconfig.md) | type for bounty config | -| [SClearedCounterPartyFunds](./interfaces/sclearedcounterpartyfunds.md) | type for simulating and storing matched order counterparty cleared funds | -| [SClearedFunds](./interfaces/sclearedfunds.md) | type for simulating and storing matched order cleared funds | -| [SERC1155](./interfaces/serc1155.md) | type for simulating and storing ERC1155 contract data | -| [SERC1155s](./interfaces/serc1155s.md) | type for simulating and storing multiple ERC1155 tokens | -| [SERC20](./interfaces/serc20.md) | type for simulating and storing ERC20token contract data | -| [SERC20s](./interfaces/serc20s.md) | type for simulating and storing multiple ERC20 tokens | -| [SERC721](./interfaces/serc721.md) | type for simulating and storing ERC721 contract data | -| [SERC721s](./interfaces/serc721s.md) | type for simulating and storing multiple ERC721 tokens | -| [SITiers](./interfaces/sitiers.md) | type for simulating and storing ITier contract data | -| [SOrder](./interfaces/sorder.md) | type for simulating and storing orderbook Order data | -| [SOrders](./interfaces/sorders.md) | type for simulating and storing multiple orderbook Orders | -| [SSnapshot](./interfaces/ssnapshot.md) | type for SimERC20 with snapshots | -| [SStore](./interfaces/sstore.md) | A simple key/value pair object used as storage in simulation classes to store the required data | +| [sClearConfig](./interfaces/sclearconfig.md) | type for bounty config | +| [sClearedCounterPartyFunds](./interfaces/sclearedcounterpartyfunds.md) | type for simulating and storing matched order counterparty cleared funds | +| [sClearedFunds](./interfaces/sclearedfunds.md) | type for simulating and storing matched order cleared funds | +| [sERC1155](./interfaces/serc1155.md) | type for simulating and storing ERC1155 contract data | +| [sERC1155s](./interfaces/serc1155s.md) | type for simulating and storing multiple ERC1155 tokens | +| [sERC20](./interfaces/serc20.md) | type for simulating and storing ERC20token contract data | +| [sERC20s](./interfaces/serc20s.md) | type for simulating and storing multiple ERC20 tokens | +| [sERC721](./interfaces/serc721.md) | type for simulating and storing ERC721 contract data | +| [sERC721s](./interfaces/serc721s.md) | type for simulating and storing multiple ERC721 tokens | +| [sITiers](./interfaces/sitiers.md) | type for simulating and storing ITier contract data | +| [sOrder](./interfaces/sorder.md) | type for simulating and storing orderbook Order data | +| [sOrders](./interfaces/sorders.md) | type for simulating and storing multiple orderbook Orders | +| [sSnapshot](./interfaces/ssnapshot.md) | type for SimERC20 with snapshots | +| [sStore](./interfaces/sstore.md) | A simple key/value pair object used as storage in simulation classes to store the required data in BigNumber format | | [StateConfig](./interfaces/stateconfig.md) | Config required to build a new `State`. | | [StateJSVM](./interfaces/statejsvm.md) | - An interface, StateJS is basically javascript version of 'State' struct in RainVM, although it doesn't need stackLength and argumentsLength to operate. It receives a regular RainVM in the constructor and initiates the stack for it and all opcodes do their operations to the stack. | | [StorageOpcodesRange](./interfaces/storageopcodesrange.md) | Interface for accessible by vm storage's slots range available for a contract to be used as local opcodes. | -| [SVaults](./interfaces/svaults.md) | type for simulating and storing orderbook Vaults data | +| [sVaults](./interfaces/svaults.md) | type for simulating and storing orderbook Vaults data | | [TxOverrides](./interfaces/txoverrides.md) | More read about `TxOverrides` that comes from Overrides of ethers | | [VerifyDeployArgs](./interfaces/verifydeployargs.md) | Config to initialize a Verify contract with. | | [VerifyState](./interfaces/verifystate.md) | Records the block a verify session reaches each status. If a status is not reached it is left as UNINITIALIZED, i.e. 0xFFFFFFFF. Most accounts will never be banned so most accounts will never reach every status, which is a good thing. | @@ -224,7 +224,7 @@ | [Price](./types/price.md) | Price type | | [Quantity](./types/quantity.md) | Quantity type | | [Rule](./types/rule.md) | A single Rule block, i.e. an if/then block that contains conditions of prices and quantities and its actions which are price and quantity | -| [SIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | +| [sIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | | [Struct](./types/struct.md) | The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | diff --git a/docs/interfaces/sclearconfig.md b/docs/interfaces/sclearconfig.md index e5e83c1..3791ecc 100644 --- a/docs/interfaces/sclearconfig.md +++ b/docs/interfaces/sclearconfig.md @@ -1,12 +1,12 @@ -# Interface SClearConfig +# Interface sClearConfig type for bounty config Signature: ```typescript -interface SClearConfig +interface sClearConfig ``` ## Properties diff --git a/docs/interfaces/sclearedcounterpartyfunds.md b/docs/interfaces/sclearedcounterpartyfunds.md index 4b7a92a..208d00c 100644 --- a/docs/interfaces/sclearedcounterpartyfunds.md +++ b/docs/interfaces/sclearedcounterpartyfunds.md @@ -1,16 +1,16 @@ -# Interface SClearedCounterPartyFunds +# Interface sClearedCounterPartyFunds type for simulating and storing matched order counterparty cleared funds Signature: ```typescript -interface SClearedCounterPartyFunds extends Record +interface sClearedCounterPartyFunds extends Record ``` ## Implements Interfaces -- SClearedCounterPartyFunds +- sClearedCounterPartyFunds - Record diff --git a/docs/interfaces/sclearedfunds.md b/docs/interfaces/sclearedfunds.md index 093895b..5d2f9f0 100644 --- a/docs/interfaces/sclearedfunds.md +++ b/docs/interfaces/sclearedfunds.md @@ -1,17 +1,17 @@ -# Interface SClearedFunds +# Interface sClearedFunds type for simulating and storing matched order cleared funds Signature: ```typescript -interface SClearedFunds extends SStore +interface sClearedFunds extends sStore ``` ## Implements Interfaces -- SClearedFunds - - [SStore](./sstore.md) +- sClearedFunds + - [sStore](./sstore.md) - Record diff --git a/docs/interfaces/serc1155.md b/docs/interfaces/serc1155.md index d815e62..6bcb6cd 100644 --- a/docs/interfaces/serc1155.md +++ b/docs/interfaces/serc1155.md @@ -1,26 +1,26 @@ -# Interface SERC1155 +# Interface sERC1155 type for simulating and storing ERC1155 contract data Signature: ```typescript -interface SERC1155 extends Record ``` ## Implements Interfaces -- SERC1155 +- sERC1155 - Record ## Properties | Property | Type | Description | | --- | --- | --- | -| [balanceOf](./serc1155.md#balanceOf-property) | [SStore](./sstore.md) | | +| [balanceOf](./serc1155.md#balanceOf-property) | [sStore](./sstore.md) | | ## Property Details @@ -31,5 +31,5 @@ interface SERC1155 extends RecordSignature: ```typescript -balanceOf: SStore; +balanceOf: sStore; ``` diff --git a/docs/interfaces/serc1155s.md b/docs/interfaces/serc1155s.md index ef560ce..8cc7d2e 100644 --- a/docs/interfaces/serc1155s.md +++ b/docs/interfaces/serc1155s.md @@ -1,16 +1,16 @@ -# Interface SERC1155s +# Interface sERC1155s type for simulating and storing multiple ERC1155 tokens Signature: ```typescript -interface SERC1155s extends Record +interface sERC1155s extends Record ``` ## Implements Interfaces -- SERC1155s +- sERC1155s - Record diff --git a/docs/interfaces/serc20.md b/docs/interfaces/serc20.md index 5fd8ef4..517fa47 100644 --- a/docs/interfaces/serc20.md +++ b/docs/interfaces/serc20.md @@ -1,21 +1,21 @@ -# Interface SERC20 +# Interface sERC20 type for simulating and storing ERC20token contract data Signature: ```typescript -interface SERC20 +interface sERC20 ``` ## Properties | Property | Type | Description | | --- | --- | --- | -| [balanceOf](./serc20.md#balanceOf-property) | [SStore](./sstore.md) | | +| [balanceOf](./serc20.md#balanceOf-property) | [sStore](./sstore.md) | | | [decimals](./serc20.md#decimals-property) | `number` | | -| [snapshots](./serc20.md#snapshots-property) | [SSnapshot](./ssnapshot.md) | | +| [snapshots](./serc20.md#snapshots-property) | [sSnapshot](./ssnapshot.md) | | | [totalSupply](./serc20.md#totalSupply-property) | `BigNumber` | | ## Property Details @@ -27,7 +27,7 @@ interface SERC20 Signature: ```typescript -balanceOf: SStore; +balanceOf: sStore; ``` @@ -47,7 +47,7 @@ decimals: number; Signature: ```typescript -snapshots?: SSnapshot; +snapshots?: sSnapshot; ``` diff --git a/docs/interfaces/serc20s.md b/docs/interfaces/serc20s.md index 8336447..0dd7a69 100644 --- a/docs/interfaces/serc20s.md +++ b/docs/interfaces/serc20s.md @@ -1,16 +1,16 @@ -# Interface SERC20s +# Interface sERC20s type for simulating and storing multiple ERC20 tokens Signature: ```typescript -interface SERC20s extends Record +interface sERC20s extends Record ``` ## Implements Interfaces -- SERC20s +- sERC20s - Record diff --git a/docs/interfaces/serc721.md b/docs/interfaces/serc721.md index 837fb75..a9a681d 100644 --- a/docs/interfaces/serc721.md +++ b/docs/interfaces/serc721.md @@ -1,19 +1,19 @@ -# Interface SERC721 +# Interface sERC721 type for simulating and storing ERC721 contract data Signature: ```typescript -interface SERC721 extends Record ``` ## Implements Interfaces -- SERC721 +- sERC721 - Record ## Properties diff --git a/docs/interfaces/serc721s.md b/docs/interfaces/serc721s.md index f07cce0..d05c8bd 100644 --- a/docs/interfaces/serc721s.md +++ b/docs/interfaces/serc721s.md @@ -1,16 +1,16 @@ -# Interface SERC721s +# Interface sERC721s type for simulating and storing multiple ERC721 tokens Signature: ```typescript -interface SERC721s extends Record +interface sERC721s extends Record ``` ## Implements Interfaces -- SERC721s +- sERC721s - Record diff --git a/docs/interfaces/sitiers.md b/docs/interfaces/sitiers.md index d401ce9..71ae3bd 100644 --- a/docs/interfaces/sitiers.md +++ b/docs/interfaces/sitiers.md @@ -1,26 +1,26 @@ -# Interface SITiers +# Interface sITiers type for simulating and storing ITier contract data Signature: ```typescript -interface SITiers extends Record ``` ## Implements Interfaces -- SITiers +- sITiers - Record ## Properties | Property | Type | Description | | --- | --- | --- | -| [report](./sitiers.md#report-property) | [SStore](./sstore.md) | | +| [report](./sitiers.md#report-property) | [sStore](./sstore.md) | | ## Property Details @@ -31,5 +31,5 @@ interface SITiers extends RecordSignature: ```typescript -report: SStore; +report: sStore; ``` diff --git a/docs/interfaces/sorder.md b/docs/interfaces/sorder.md index 16b33f5..541079a 100644 --- a/docs/interfaces/sorder.md +++ b/docs/interfaces/sorder.md @@ -1,12 +1,12 @@ -# Interface SOrder +# Interface sOrder type for simulating and storing orderbook Order data Signature: ```typescript -interface SOrder +interface sOrder ``` ## Properties @@ -15,8 +15,8 @@ interface SOrder | --- | --- | --- | | [orderHash](./sorder.md#orderHash-property) | `string` | | | [owner](./sorder.md#owner-property) | `string` | | -| [validInputs](./sorder.md#validInputs-property) | `SIOConfig[]` | | -| [validOutputs](./sorder.md#validOutputs-property) | `SIOConfig[]` | | +| [validInputs](./sorder.md#validInputs-property) | `sIOConfig[]` | | +| [validOutputs](./sorder.md#validOutputs-property) | `sIOConfig[]` | | | [vmConfig](./sorder.md#vmConfig-property) | [StateConfig](./stateconfig.md) | | ## Property Details @@ -48,7 +48,7 @@ owner: string; Signature: ```typescript -validInputs: SIOConfig[]; +validInputs: sIOConfig[]; ``` @@ -58,7 +58,7 @@ validInputs: SIOConfig[]; Signature: ```typescript -validOutputs: SIOConfig[]; +validOutputs: sIOConfig[]; ``` diff --git a/docs/interfaces/sorders.md b/docs/interfaces/sorders.md index efa7afc..fa917a5 100644 --- a/docs/interfaces/sorders.md +++ b/docs/interfaces/sorders.md @@ -1,16 +1,16 @@ -# Interface SOrders +# Interface sOrders type for simulating and storing multiple orderbook Orders Signature: ```typescript -interface SOrders extends Record +interface sOrders extends Record ``` ## Implements Interfaces -- SOrders +- sOrders - Record diff --git a/docs/interfaces/ssnapshot.md b/docs/interfaces/ssnapshot.md index c1a1f71..364ce5d 100644 --- a/docs/interfaces/ssnapshot.md +++ b/docs/interfaces/ssnapshot.md @@ -1,27 +1,27 @@ -# Interface SSnapshot +# Interface sSnapshot type for SimERC20 with snapshots Signature: ```typescript -interface SSnapshot extends Record ``` ## Implements Interfaces -- SSnapshot +- sSnapshot - Record ## Properties | Property | Type | Description | | --- | --- | --- | -| [balanceOfAt](./ssnapshot.md#balanceOfAt-property) | [SStore](./sstore.md) | | +| [balanceOfAt](./ssnapshot.md#balanceOfAt-property) | [sStore](./sstore.md) | | | [totalSupplyAt](./ssnapshot.md#totalSupplyAt-property) | `BigNumber` | | ## Property Details @@ -33,7 +33,7 @@ interface SSnapshot extends RecordSignature: ```typescript -balanceOfAt: SStore; +balanceOfAt: sStore; ``` diff --git a/docs/interfaces/sstore.md b/docs/interfaces/sstore.md index 89bcb13..418d1ba 100644 --- a/docs/interfaces/sstore.md +++ b/docs/interfaces/sstore.md @@ -1,21 +1,21 @@ -# Interface SStore +# Interface sStore -A simple key/value pair object used as storage in simulation classes to store the required data +A simple key/value pair object used as storage in simulation classes to store the required data in BigNumber format Signature: ```typescript -interface SStore extends Record +interface sStore extends Record ``` ## Implements Interfaces -- SStore +- sStore - Record ## Implemented By -- SStore - - [SClearedFunds](./sclearedfunds.md) +- sStore + - [sClearedFunds](./sclearedfunds.md) diff --git a/docs/interfaces/svaults.md b/docs/interfaces/svaults.md index d80f399..b87674f 100644 --- a/docs/interfaces/svaults.md +++ b/docs/interfaces/svaults.md @@ -1,16 +1,16 @@ -# Interface SVaults +# Interface sVaults type for simulating and storing orderbook Vaults data Signature: ```typescript -interface SVaults extends Record> +interface sVaults extends Record> ``` ## Implements Interfaces -- SVaults +- sVaults - Record diff --git a/docs/types/optionalargs.md b/docs/types/optionalargs.md index e8cbddb..aa14602 100644 --- a/docs/types/optionalargs.md +++ b/docs/types/optionalargs.md @@ -6,5 +6,5 @@ Type of all args properties as optional properties Signature: ```typescript -type OptionalArgs = Partial>; +type OptionalArgs = Partial; ``` diff --git a/docs/types/sioconfig.md b/docs/types/sioconfig.md index 8ebcbd9..1c1c82f 100644 --- a/docs/types/sioconfig.md +++ b/docs/types/sioconfig.md @@ -1,12 +1,12 @@ -# Type SIOConfig +# Type sIOConfig token the address of the desired token vaultId corresponding token vault id Signature: ```typescript -type SIOConfig = { +type sIOConfig = { token: string; vaultId: string; }; diff --git a/src/classes/iTierV2.ts b/src/classes/iTierV2.ts index f613f71..7c09e2a 100644 --- a/src/classes/iTierV2.ts +++ b/src/classes/iTierV2.ts @@ -1,4 +1,3 @@ -import { paddedUInt256 } from '../utils'; import { ReadTxOverrides } from './rainContract'; import { FactoryContract } from './factoryContract'; import { BigNumber, BigNumberish, Signer } from 'ethers'; @@ -173,7 +172,13 @@ export class ITierV2 extends FactoryContract { } } - const parsedReport = paddedUInt256(currentTier) + const parsedReport = ( + "0x" + + BigNumber.from(currentTier) + .toHexString() + .substring(2) + .padStart(64, "0") + ) .substring(2) .match(/.{8}/g) ?.reverse() diff --git a/src/index.ts b/src/index.ts index fa40d23..191a223 100644 --- a/src/index.ts +++ b/src/index.ts @@ -30,7 +30,7 @@ export * from './jsvm/RainJSVM'; export * from './jsvm/CombineTierJSVM'; export * from './jsvm/EmissionsERC20JSVM'; export * from './jsvm/SaleJSVM'; -export * from './jsvm/types'; +export * from './jsvm/simulation/types'; export * from './jsvm/lib/FixedPointMath'; export * from './jsvm/lib/Math'; @@ -86,6 +86,7 @@ export * from './jsvm/simulation/OrderbookSimulation'; export * from './jsvm/simulation/SaleSimulation'; export * from './jsvm/simulation/Matchmaker'; export * from './jsvm/simulation/vmSimulation'; +export * from './jsvm/simulation/types'; export * from './contracts/tiers/combineTier'; export * from './contracts/tiers/verifyTier'; diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts index c148f84..3bd7695 100644 --- a/src/jsvm/RainJSVM.ts +++ b/src/jsvm/RainJSVM.ts @@ -1,10 +1,54 @@ -import { FnPtrsJSVM, StateJSVM } from './types'; import { StateConfig } from '../classes/vm'; import { BigNumber, Contract, Signer } from 'ethers'; import { arrayify, mapToRecord, paddedUInt256 } from '../utils'; import { IOpMeta, OpMeta } from '../vm/OpMeta'; +/** + * @public + * An interface/type of JSVM opcodes' function's body + */ +export interface OpJSVM { + (state: StateJSVM, operand: number, data?: any): void +} + +/** + * @public + * An interface for creating a key/value pair of opcodes functions to override. + */ +export interface FnPtrsJSVM extends Record {} + +/** + * @public - An interface, StateJS is basically javascript version of 'State' struct + * in RainVM, although it doesn't need stackLength and argumentsLength to operate. It + * receives a regular RainVM in the constructor and initiates the stack for it and all + * opcodes do their operations to the stack. + * @see State in RainVM.sol + * + */ +export interface StateJSVM { + /** + * The property to store the RainVM script constants. + */ + readonly constants: BigNumber[]; + + /** + * The property to store the RainVM script sources. + */ + readonly sources: Uint8Array[]; + + /** + * The RainJSVM's stack. + */ + readonly stack: BigNumber[]; + + /** + * Used only for zipmap opcode arguments + */ + readonly argStack: BigNumber[]; + +} + /** * @public * Options for instantiating RainJSVM diff --git a/src/jsvm/SaleJSVM.ts b/src/jsvm/SaleJSVM.ts index 94c9838..09662af 100644 --- a/src/jsvm/SaleJSVM.ts +++ b/src/jsvm/SaleJSVM.ts @@ -1,9 +1,8 @@ import { BigNumber } from "ethers"; import { StateConfig } from "../classes/vm"; -import { CallOptions, RainJSVM } from "./RainJSVM"; +import { CallOptions, RainJSVM, FnPtrsJSVM, StateJSVM } from "./RainJSVM"; import { ERC20 } from "../contracts/generics/erc20"; import { Sale, SaleContext, SaleStorage } from "../contracts/sale"; -import { FnPtrsJSVM, StateJSVM } from "./types"; /** diff --git a/src/jsvm/lib/FixedPointMath.ts b/src/jsvm/lib/FixedPointMath.ts index 5dc3e13..e1df2ca 100644 --- a/src/jsvm/lib/FixedPointMath.ts +++ b/src/jsvm/lib/FixedPointMath.ts @@ -1,5 +1,5 @@ import { BigNumber } from "ethers"; -import { eighteenZeros } from "../types"; +import { eighteenZeros } from "../simulation/types"; /** * @public diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts index 59f4bd4..6205811 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOf.ts @@ -1,8 +1,7 @@ import { BigNumber } from "ethers"; import { ERC1155 } from "../../../contracts/generics/erc1155"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts index 50e48d4..a9e5d01 100644 --- a/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts +++ b/src/jsvm/ops/erc1155/OpERC1155BalanceOfBatch.ts @@ -1,8 +1,7 @@ import { BigNumber } from "ethers"; import { ERC1155 } from "../../../contracts/generics/erc1155"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts index a372aa3..5907b02 100644 --- a/src/jsvm/ops/erc20/OpERC20BalanceOf.ts +++ b/src/jsvm/ops/erc20/OpERC20BalanceOf.ts @@ -1,7 +1,6 @@ import { ERC20 } from "../../../contracts/generics/erc20"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts index 2cec61d..2725b57 100644 --- a/src/jsvm/ops/erc20/OpERC20TotalSupply.ts +++ b/src/jsvm/ops/erc20/OpERC20TotalSupply.ts @@ -1,7 +1,6 @@ import { ERC20 } from "../../../contracts/generics/erc20"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts index 633e784..563c4bc 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotBalanceOfAt.ts @@ -1,7 +1,6 @@ import { ERC20 } from "../../../../contracts/generics/erc20"; import { paddedUInt160 } from "../../../../utils"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts index fb387f1..d044df5 100644 --- a/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts +++ b/src/jsvm/ops/erc20/snapshot/OpERC20SnapshotTotalSupplyAt.ts @@ -1,7 +1,6 @@ import { ERC20 } from "../../../../contracts/generics/erc20"; import { paddedUInt160 } from "../../../../utils"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts index 4057a0a..41afba8 100644 --- a/src/jsvm/ops/erc721/OpERC721BalanceOf.ts +++ b/src/jsvm/ops/erc721/OpERC721BalanceOf.ts @@ -1,7 +1,6 @@ import { ERC721 } from "../../../contracts/generics/erc721"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts index 8fecd9d..61bd614 100644 --- a/src/jsvm/ops/erc721/OpERC721OwnerOf.ts +++ b/src/jsvm/ops/erc721/OpERC721OwnerOf.ts @@ -1,8 +1,7 @@ import { BigNumber } from "ethers"; import { ERC721 } from "../../../contracts/generics/erc721"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/evm/OpBlockNumber.ts b/src/jsvm/ops/evm/OpBlockNumber.ts index ae226e6..fa0a90e 100644 --- a/src/jsvm/ops/evm/OpBlockNumber.ts +++ b/src/jsvm/ops/evm/OpBlockNumber.ts @@ -1,6 +1,5 @@ import { BigNumber } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/evm/OpCaller.ts b/src/jsvm/ops/evm/OpCaller.ts index 893e92c..7da2708 100644 --- a/src/jsvm/ops/evm/OpCaller.ts +++ b/src/jsvm/ops/evm/OpCaller.ts @@ -1,6 +1,5 @@ import { BigNumber } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/evm/OpThisAddress.ts b/src/jsvm/ops/evm/OpThisAddress.ts index 0134c61..835ce15 100644 --- a/src/jsvm/ops/evm/OpThisAddress.ts +++ b/src/jsvm/ops/evm/OpThisAddress.ts @@ -1,6 +1,5 @@ import { BigNumber } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/evm/OpTimestamp.ts b/src/jsvm/ops/evm/OpTimestamp.ts index 1950b15..2cc74f1 100644 --- a/src/jsvm/ops/evm/OpTimestamp.ts +++ b/src/jsvm/ops/evm/OpTimestamp.ts @@ -1,6 +1,6 @@ import { BigNumber } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + /** * @public diff --git a/src/jsvm/ops/math/OpAdd.ts b/src/jsvm/ops/math/OpAdd.ts index 8cde639..6a501b7 100644 --- a/src/jsvm/ops/math/OpAdd.ts +++ b/src/jsvm/ops/math/OpAdd.ts @@ -1,6 +1,6 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + /** * @public diff --git a/src/jsvm/ops/math/OpDiv.ts b/src/jsvm/ops/math/OpDiv.ts index d465d2f..d40b761 100644 --- a/src/jsvm/ops/math/OpDiv.ts +++ b/src/jsvm/ops/math/OpDiv.ts @@ -1,5 +1,4 @@ -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/OpExp.ts b/src/jsvm/ops/math/OpExp.ts index 38c9caf..a0f3789 100644 --- a/src/jsvm/ops/math/OpExp.ts +++ b/src/jsvm/ops/math/OpExp.ts @@ -1,6 +1,6 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; + /** * @public diff --git a/src/jsvm/ops/math/OpMax.ts b/src/jsvm/ops/math/OpMax.ts index 06112f9..359e470 100644 --- a/src/jsvm/ops/math/OpMax.ts +++ b/src/jsvm/ops/math/OpMax.ts @@ -1,6 +1,5 @@ import { max } from "../../lib/Math"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/OpMin.ts b/src/jsvm/ops/math/OpMin.ts index 5eeffae..6ff5b22 100644 --- a/src/jsvm/ops/math/OpMin.ts +++ b/src/jsvm/ops/math/OpMin.ts @@ -1,6 +1,5 @@ import { min } from "../../lib/Math"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/OpMod.ts b/src/jsvm/ops/math/OpMod.ts index 3ebdd30..8f877c7 100644 --- a/src/jsvm/ops/math/OpMod.ts +++ b/src/jsvm/ops/math/OpMod.ts @@ -1,5 +1,4 @@ -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/OpMul.ts b/src/jsvm/ops/math/OpMul.ts index 330b05f..45c1653 100644 --- a/src/jsvm/ops/math/OpMul.ts +++ b/src/jsvm/ops/math/OpMul.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/OpSub.ts b/src/jsvm/ops/math/OpSub.ts index d12cdb6..f37449a 100644 --- a/src/jsvm/ops/math/OpSub.ts +++ b/src/jsvm/ops/math/OpSub.ts @@ -1,5 +1,4 @@ -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18.ts b/src/jsvm/ops/math/fixedPoint/OpScale18.ts index ecf9f97..fe57dce 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; import { scale18 } from "../../../lib/FixedPointMath"; -import { StateJSVM } from "../../../types"; /** diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts index 38d8d11..387b522 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Div.ts @@ -1,6 +1,5 @@ import { fixedPointDiv } from "../../../lib/FixedPointMath"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts index 050db65..cefbf25 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScale18Mul.ts @@ -1,6 +1,5 @@ import { fixedPointMul } from "../../../lib/FixedPointMath"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts index a9efaab..2088d4f 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleBy.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; import { scaleBy } from "../../../lib/FixedPointMath"; -import { StateJSVM } from "../../../types"; /** diff --git a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts index bc6dec4..d9b16bb 100644 --- a/src/jsvm/ops/math/fixedPoint/OpScaleN.ts +++ b/src/jsvm/ops/math/fixedPoint/OpScaleN.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; import { scaleN } from "../../../lib/FixedPointMath"; -import { StateJSVM } from "../../../types"; /** diff --git a/src/jsvm/ops/math/logic/OpAny.ts b/src/jsvm/ops/math/logic/OpAny.ts index 1d26d6c..db37a92 100644 --- a/src/jsvm/ops/math/logic/OpAny.ts +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/logic/OpEagerIf.ts b/src/jsvm/ops/math/logic/OpEagerIf.ts index 413cd2d..26ee17e 100644 --- a/src/jsvm/ops/math/logic/OpEagerIf.ts +++ b/src/jsvm/ops/math/logic/OpEagerIf.ts @@ -1,5 +1,4 @@ -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/logic/OpEqualTo.ts b/src/jsvm/ops/math/logic/OpEqualTo.ts index 5e790c7..41b0005 100644 --- a/src/jsvm/ops/math/logic/OpEqualTo.ts +++ b/src/jsvm/ops/math/logic/OpEqualTo.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/logic/OpEvery.ts b/src/jsvm/ops/math/logic/OpEvery.ts index ee6e1df..4e34389 100644 --- a/src/jsvm/ops/math/logic/OpEvery.ts +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/logic/OpGreaterThan.ts b/src/jsvm/ops/math/logic/OpGreaterThan.ts index bd0b15f..e1356ef 100644 --- a/src/jsvm/ops/math/logic/OpGreaterThan.ts +++ b/src/jsvm/ops/math/logic/OpGreaterThan.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/logic/OpIsZero.ts b/src/jsvm/ops/math/logic/OpIsZero.ts index 876855f..6368941 100644 --- a/src/jsvm/ops/math/logic/OpIsZero.ts +++ b/src/jsvm/ops/math/logic/OpIsZero.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/logic/OpLessThan.ts b/src/jsvm/ops/math/logic/OpLessThan.ts index 2e00f96..447e8af 100644 --- a/src/jsvm/ops/math/logic/OpLessThan.ts +++ b/src/jsvm/ops/math/logic/OpLessThan.ts @@ -1,6 +1,5 @@ import { ethers } from "ethers"; -import { RainJSVM } from "../../../RainJSVM"; -import { StateJSVM } from "../../../types"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; /** diff --git a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts index 594dc66..b431597 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingAdd.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; import { saturatingAdd } from "../../../lib/SaturatingMath"; -import { StateJSVM } from "../../../types"; import { ethers } from "ethers"; diff --git a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts index a750182..fe1c2f6 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingMul.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingMul.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; import { saturatingMul } from "../../../lib/SaturatingMath"; -import { StateJSVM } from "../../../types"; import { ethers } from "ethers"; diff --git a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts index dc9b9e7..a4b6350 100644 --- a/src/jsvm/ops/math/saturating/OpSaturatingSub.ts +++ b/src/jsvm/ops/math/saturating/OpSaturatingSub.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../../RainJSVM"; import { saturatingSub } from "../../../lib/SaturatingMath"; -import { StateJSVM } from "../../../types"; /** diff --git a/src/jsvm/ops/tier/OpITierV2Report.ts b/src/jsvm/ops/tier/OpITierV2Report.ts index db6a012..b507fdc 100644 --- a/src/jsvm/ops/tier/OpITierV2Report.ts +++ b/src/jsvm/ops/tier/OpITierV2Report.ts @@ -1,7 +1,6 @@ import { ITierV2 } from "../../../classes/iTierV2"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts index ddecefc..4853b0b 100644 --- a/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts +++ b/src/jsvm/ops/tier/OpITierV2ReportTimesForTier.ts @@ -1,7 +1,6 @@ import { ITierV2, Tier } from "../../../classes/iTierV2"; import { paddedUInt160 } from "../../../utils"; -import { RainJSVM } from "../../RainJSVM"; -import { StateJSVM } from "../../types"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; /** diff --git a/src/jsvm/ops/tier/OpSaturatingDiff.ts b/src/jsvm/ops/tier/OpSaturatingDiff.ts index 8685f2c..f73196b 100644 --- a/src/jsvm/ops/tier/OpSaturatingDiff.ts +++ b/src/jsvm/ops/tier/OpSaturatingDiff.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; import { saturatingDiff } from "../../lib/TierwiseCombine"; -import { StateJSVM } from "../../types"; /** diff --git a/src/jsvm/ops/tier/OpSelectLte.ts b/src/jsvm/ops/tier/OpSelectLte.ts index 2adbb9c..c52f25e 100644 --- a/src/jsvm/ops/tier/OpSelectLte.ts +++ b/src/jsvm/ops/tier/OpSelectLte.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; import { selectLte } from "../../lib/TierwiseCombine"; -import { StateJSVM } from "../../types"; /** diff --git a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts index e59b849..3da5a47 100644 --- a/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts +++ b/src/jsvm/ops/tier/OpUpdateTimesForTierRange.ts @@ -1,6 +1,5 @@ -import { RainJSVM } from "../../RainJSVM"; +import { RainJSVM, StateJSVM } from "../../RainJSVM"; import { updateTimesForTierRange } from "../../lib/TierReport"; -import { StateJSVM } from "../../types"; /** diff --git a/src/jsvm/simulation/CombineTierSimulation.ts b/src/jsvm/simulation/CombineTierSimulation.ts index 1f6b230..eb7000b 100644 --- a/src/jsvm/simulation/CombineTierSimulation.ts +++ b/src/jsvm/simulation/CombineTierSimulation.ts @@ -1,6 +1,6 @@ import { paddedUInt160, paddedUInt256 } from "../../utils"; import { CombineTierJSVM } from "../CombineTierJSVM"; -import { SStore } from "../types"; +import { sStore } from "./types"; import { vmSimulation } from "./vmSimulation"; @@ -22,7 +22,7 @@ export class CombinetierSimulation extends vmSimulation { /** * The report of each account which is compatible and can be stored in @see itiers interface as well */ - public report: SStore = {}; + public report: sStore = {}; /** * Constructor of this class @@ -30,7 +30,7 @@ export class CombinetierSimulation extends vmSimulation { * @param address - this CombineTier class adress which needs to be a string number or hex string * @param reports - (optional) the initial reports object */ - constructor (address: string, reports?: SStore) { + constructor (address: string, reports?: sStore) { super(); this.address = address; if (reports !== undefined) { diff --git a/src/jsvm/simulation/EmissionsERC20Simulation.ts b/src/jsvm/simulation/EmissionsERC20Simulation.ts index a4453d5..fa8f06d 100644 --- a/src/jsvm/simulation/EmissionsERC20Simulation.ts +++ b/src/jsvm/simulation/EmissionsERC20Simulation.ts @@ -1,7 +1,7 @@ import { BigNumber, ethers } from "ethers"; import { paddedUInt160, paddedUInt256, paddedUInt32 } from "../../utils"; import { EmissionsERC20JSVM } from "../EmissionsERC20JSVM"; -import { SStore } from "../types"; +import { sStore } from "./types"; import { vmSimulation } from "./vmSimulation"; @@ -39,12 +39,12 @@ import { vmSimulation } from "./vmSimulation"; /** * The report of each claimant which is compatible and can be stored in @see itiers interface as well */ - public report: SStore = {}; + public report: sStore = {}; /** * The balance of emission token holders which is compatible with @see erc20 interface */ - public balanceOf: SStore = {}; + public balanceOf: sStore = {}; /** * Constructor of this class @@ -58,8 +58,8 @@ import { vmSimulation } from "./vmSimulation"; constructor ( address: string, sender: string, - reports: SStore = {}, - balances: SStore = {}, + reports: sStore = {}, + balances: sStore = {}, initialSupply: BigNumber = ethers.constants.Zero, ) { super(); diff --git a/src/jsvm/simulation/Matchmaker.ts b/src/jsvm/simulation/Matchmaker.ts index 1c0a93f..e080d52 100644 --- a/src/jsvm/simulation/Matchmaker.ts +++ b/src/jsvm/simulation/Matchmaker.ts @@ -1,7 +1,7 @@ import { OrderbookJSVM } from "./../OrderbookJSVM"; import { OrderbookSimulation } from "./OrderbookSimulation"; import { parseUnits } from "../../utils"; -import { SOrder, eighteenZeros, ReserveBook } from "../types"; +import { sOrder, eighteenZeros, ReserveBook } from "./types"; /** @@ -30,7 +30,7 @@ export class MatchMaker extends OrderbookSimulation { * * @returns void */ - public async addOrder(order: SOrder): Promise { + public async addOrder(order: sOrder): Promise { super.addOrder(order); await this.orderEval(order) @@ -65,7 +65,7 @@ export class MatchMaker extends OrderbookSimulation { * * @returns void */ - public async orderEval(order: SOrder, timestamp?: number, blockNumber?: number) { + public async orderEval(order: sOrder, timestamp?: number, blockNumber?: number) { this.script = order.vmConfig; const jsvm = new OrderbookJSVM(this.script, {applyOpFn: this.OpFns}); diff --git a/src/jsvm/simulation/OrderbookSimulation.ts b/src/jsvm/simulation/OrderbookSimulation.ts index 3f085a5..3e69aeb 100644 --- a/src/jsvm/simulation/OrderbookSimulation.ts +++ b/src/jsvm/simulation/OrderbookSimulation.ts @@ -1,19 +1,18 @@ import { ethers } from "ethers"; import { vmSimulation } from "./vmSimulation"; import { OrderbookJSVM } from "../OrderbookJSVM"; +import { FnPtrsJSVM, StateJSVM } from "../RainJSVM"; import { OrderBook } from "../../contracts/orderBook"; import { paddedUInt160, paddedUInt256, parseUnits } from "../../utils"; import { - SOrder, - FnPtrsJSVM, - SOrders, - SVaults, - StateJSVM, - SClearConfig, - SClearedFunds, + sOrder, + sOrders, + sVaults, + sClearConfig, + sClearedFunds, eighteenZeros, - SClearedCounterPartyFunds -} from "../types"; + sClearedCounterPartyFunds +} from "./types"; /** @@ -41,26 +40,26 @@ export class OrderbookSimulation extends vmSimulation { * @public * The property that stores all the data of the class's vaults @see vault */ - public vaults: SVaults = {}; + public vaults: sVaults = {}; /** * @public * The property that stores all the data of the class's orders, @see orders and @see order */ - public orders: SOrders = {}; + public orders: sOrders = {}; /** * @public * The property that stores all the data of an order's total cleared amount, @see clearedFunds */ - public clearedFunds: SClearedFunds = {}; + public clearedFunds: sClearedFunds = {}; /** * @public * The property that stores all the data of an order's total cleared amount to a specific counterparty address * which needs to be in form of a string number or hex string @see clearedCounterPartyFunds */ - public clearedCounterPartyFunds: SClearedCounterPartyFunds = {}; + public clearedCounterPartyFunds: sClearedCounterPartyFunds = {}; /** * @public @@ -71,7 +70,7 @@ export class OrderbookSimulation extends vmSimulation { * @param vaults - (optinal) the initial vaults object (vaults storage) * @param orders - (optional) the initial orders */ - constructor(address: string, sender: string, vaults?: SVaults, orders?: SOrders) { + constructor(address: string, sender: string, vaults?: sVaults, orders?: sOrders) { super(); @@ -132,7 +131,7 @@ export class OrderbookSimulation extends vmSimulation { * @param order - the order to add * @returns void */ - public addOrder(order: SOrder): void { + public addOrder(order: sOrder): void { this.orders[order.orderHash] = order; for (const ioConfig of order.validOutputs) { @@ -187,7 +186,7 @@ export class OrderbookSimulation extends vmSimulation { * @param order - the order to remove * @returns void */ - public removeOrder(order: SOrder | string): void { + public removeOrder(order: sOrder | string): void { if (typeof order === "string") { delete(this.orders[order]) } @@ -317,9 +316,9 @@ export class OrderbookSimulation extends vmSimulation { * @returns void */ public async clear ( - a: SOrder, - b: SOrder, - clearConfig: SClearConfig, + a: sOrder, + b: sOrder, + clearConfig: sClearConfig, timestamp?: number, blockNumber?: number ): Promise { diff --git a/src/jsvm/simulation/SaleSimulation.ts b/src/jsvm/simulation/SaleSimulation.ts index 5936010..98452af 100644 --- a/src/jsvm/simulation/SaleSimulation.ts +++ b/src/jsvm/simulation/SaleSimulation.ts @@ -3,7 +3,8 @@ import { SaleStorage } from "../../contracts/sale"; import { paddedUInt160 } from "../../utils"; import { SaleJSVM } from "../SaleJSVM"; import { vmSimulation } from "./vmSimulation"; -import { eighteenZeros, SERC20, FnPtrsJSVM, StateJSVM } from "../types"; +import { eighteenZeros, sERC20 } from "./types"; +import { FnPtrsJSVM, StateJSVM } from "../RainJSVM"; /** @@ -21,12 +22,12 @@ import { eighteenZeros, SERC20, FnPtrsJSVM, StateJSVM } from "../types"; /** * The reedeemable token of this sale i.e rTKN which needs to a string number or hex string @see erc20 */ - public token: SERC20; + public token: sERC20; /** * The reserve token of this sale as an erc20 type object @see erc20 */ - public reserve: SERC20; + public reserve: sERC20; /** * The reserve token addres of this sale as an erc20 type object @@ -51,8 +52,8 @@ import { eighteenZeros, SERC20, FnPtrsJSVM, StateJSVM } from "../types"; address: string, tokenAddress: string, reserveAddress: string, - token: SERC20, - reserve: SERC20 + token: sERC20, + reserve: sERC20 ) { super(); this.token = token; diff --git a/src/jsvm/simulation/types.ts b/src/jsvm/simulation/types.ts new file mode 100644 index 0000000..5cb0eac --- /dev/null +++ b/src/jsvm/simulation/types.ts @@ -0,0 +1,129 @@ +import { BigNumber } from 'ethers'; +import { StateConfig } from '../../classes/vm'; + +/** + * @public + * 18 decimals or i.e "DECIMALS" - used for fixed point match + */ +export const eighteenZeros = "1000000000000000000"; + +/** + * @public + * A simple key/value pair object used as storage in simulation classes to store the required data in BigNumber format + */ +export interface sStore extends Record {} + +/** + * @public + * type for simulating and storing ITier contract data + */ +export interface sITiers extends Record {} + +/** + * @public + * type for SimERC20 with snapshots + */ +export interface sSnapshot extends Record {} + +/** + * @public + * type for simulating and storing ERC20token contract data + */ +export interface sERC20 { + totalSupply: BigNumber, + decimals: number, + balanceOf: sStore, + snapshots?: sSnapshot +} + +/** + * @public + * type for simulating and storing ERC721 contract data + */ +export interface sERC721 extends Record {} + +/** + * @public + * type for simulating and storing ERC1155 contract data + */ +export interface sERC1155 extends Record {} + +/** + * @public + * type for simulating and storing multiple ERC20 tokens + */ +export interface sERC20s extends Record {} + +/** + * @public + * type for simulating and storing multiple ERC721 tokens + */ +export interface sERC721s extends Record {} + +/** + * @public + * type for simulating and storing multiple ERC1155 tokens + */ +export interface sERC1155s extends Record {} + +/** + * @public + * type for simulating and storing orderbook Vaults data + */ +export interface sVaults extends Record> {} + +/** + * @public + * token the address of the desired token + * vaultId corresponding token vault id + */ +export type sIOConfig = { token: string; vaultId: string }; + +/** + * @public + * type for simulating and storing orderbook Order data + */ +export interface sOrder { + orderHash: string, + owner: string, + validInputs: sIOConfig[]; + validOutputs: sIOConfig[]; + vmConfig: StateConfig +} + +/** + * @public + * type for simulating and storing multiple orderbook Orders + */ +export interface sOrders extends Record {} + +/** + * @public + * type for bounty config + */ +export interface sClearConfig { + aInputIndex: number, + aOutputIndex: number, + bInputIndex: number, + bOutputIndex: number, + aBountyVaultId: string, + bBountyVaultId: string, +} + +/** + * @public + * type for simulating and storing matched order cleared funds + */ +export interface sClearedFunds extends sStore {} + +/** + * @public + * type for simulating and storing matched order counterparty cleared funds + */ +export interface sClearedCounterPartyFunds extends Record {} + +/** + * @public + * Interface for matchmaker forcasting a script + */ + export interface ReserveBook extends Record {} \ No newline at end of file diff --git a/src/jsvm/simulation/vmSimulation.ts b/src/jsvm/simulation/vmSimulation.ts index 54bfe19..f546b44 100644 --- a/src/jsvm/simulation/vmSimulation.ts +++ b/src/jsvm/simulation/vmSimulation.ts @@ -1,16 +1,9 @@ -import { RainJSVM } from "../RainJSVM"; +import { RainJSVM, StateJSVM, FnPtrsJSVM } from "../RainJSVM"; import { BigNumber, ethers } from "ethers"; import { Tier } from "../../classes/iTierV2"; import { StateConfig, VM } from "../../classes/vm"; import { paddedUInt160, paddedUInt256 } from "../../utils"; -import { - FnPtrsJSVM, - SERC20s, - SITiers, - SERC721s, - SERC1155s, - StateJSVM, -} from "../types"; +import { sERC20s, sITiers, sERC721s, sERC1155s } from "./types"; /** @@ -29,25 +22,25 @@ export class vmSimulation { * A property of type erc20s that act like a storage for simulation and stores the erc20 token data. * this is needed for IERC20 related opcodes @see erc20s and @see erc20 */ - public erc20s: SERC20s = {}; + public erc20s: sERC20s = {}; /** * A property of type erc721s that act like a storage for simulation and stores the erc721 token data. * this is needed for IERC721 related opcodes @see erc721s and @see erc721 */ - public erc721s: SERC721s = {}; + public erc721s: sERC721s = {}; /** * A property of type erc1155s that act like a storage for simulation and stores the erc1155 token data. * this is needed for IERC1155 related opcodes @see erc1155s and @see erc1155 */ - public erc1155s: SERC1155s = {}; + public erc1155s: sERC1155s = {}; /** * A property of type itiers that act like a storage for simulation of Rain tier contracts. * this is needed for ITIERV2_REPORT and ITIERV2_REPORT_TIME_FOR_TIER opcodes. @see itiers */ - public iTiers: SITiers = {}; + public iTiers: sITiers = {}; /** * The contract address of this simulation that the simulation is done for. this is needed for THIS_ADDRESS opcode @@ -369,7 +362,7 @@ export class vmSimulation { * @param erc721s - An object of type erc721s * @param erc1155s - An object of type erc1155s */ - public addAssets(erc20s?: SERC20s, erc721s?: SERC721s, erc1155s?: SERC1155s) { + public addAssets(erc20s?: sERC20s, erc721s?: sERC721s, erc1155s?: sERC1155s) { if (erc20s) { for (let i = 0; i < Object.keys(erc20s).length; i++) { if (Object.keys(this.erc20s).includes(Object.keys(erc20s)[i])) { @@ -401,7 +394,7 @@ export class vmSimulation { * * @param iTiers - An Object of itiers type */ - public addITiers (iTiers: SITiers) { + public addITiers (iTiers: sITiers) { for (let i = 0; i < Object.keys(iTiers).length; i++) { if (Object.keys(this.iTiers).includes(Object.keys(iTiers)[i])) { delete this.iTiers[Object.keys(iTiers)[i]] diff --git a/src/jsvm/types.ts b/src/jsvm/types.ts deleted file mode 100644 index c8153a5..0000000 --- a/src/jsvm/types.ts +++ /dev/null @@ -1,176 +0,0 @@ -import { BigNumber } from 'ethers'; -import { StateConfig } from '../classes/vm'; - - -/** - * @public - * An interface/type of JSVM opcodes' function's body - */ -export interface OpJSVM { - (state: StateJSVM, operand: number, data?: any): void -} - - -/** - * @public - * An interface for creating a key/value pair of opcodes functions to override. - */ -export interface FnPtrsJSVM extends Record {} - -/** - * @public - An interface, StateJS is basically javascript version of 'State' struct - * in RainVM, although it doesn't need stackLength and argumentsLength to operate. It - * receives a regular RainVM in the constructor and initiates the stack for it and all - * opcodes do their operations to the stack. - * @see State in RainVM.sol - * - */ -export interface StateJSVM { - /** - * The property to store the RainVM script constants. - */ - readonly constants: BigNumber[]; - - /** - * The property to store the RainVM script sources. - */ - readonly sources: Uint8Array[]; - - /** - * The RainJSVM's stack. - */ - readonly stack: BigNumber[]; - - /** - * Used only for zipmap opcode arguments - */ - readonly argStack: BigNumber[]; - -} - -/** - * @public - * 18 decimals or i.e "DECIMALS" - used for fixed point match - */ -export const eighteenZeros = "1000000000000000000"; - -/** - * @public - * A simple key/value pair object used as storage in simulation classes to store the required data - */ -export interface SStore extends Record {} - -/** - * @public - * type for simulating and storing ITier contract data - */ -export interface SITiers extends Record {} - -/** - * @public - * type for SimERC20 with snapshots - */ -export interface SSnapshot extends Record {} - -/** - * @public - * type for simulating and storing ERC20token contract data - */ -export interface SERC20 { - totalSupply: BigNumber, - decimals: number, - balanceOf: SStore, - snapshots?: SSnapshot -} - -/** - * @public - * type for simulating and storing ERC721 contract data - */ -export interface SERC721 extends Record {} - -/** - * @public - * type for simulating and storing ERC1155 contract data - */ -export interface SERC1155 extends Record {} - -/** - * @public - * type for simulating and storing multiple ERC20 tokens - */ -export interface SERC20s extends Record {} - -/** - * @public - * type for simulating and storing multiple ERC721 tokens - */ -export interface SERC721s extends Record {} - -/** - * @public - * type for simulating and storing multiple ERC1155 tokens - */ -export interface SERC1155s extends Record {} - -/** - * @public - * type for simulating and storing orderbook Vaults data - */ -export interface SVaults extends Record> {} - -/** - * @public - * token the address of the desired token - * vaultId corresponding token vault id - */ -export type SIOConfig = { token: string; vaultId: string }; - -/** - * @public - * type for simulating and storing orderbook Order data - */ -export interface SOrder { - orderHash: string, - owner: string, - validInputs: SIOConfig[]; - validOutputs: SIOConfig[]; - vmConfig: StateConfig -} - -/** - * @public - * type for simulating and storing multiple orderbook Orders - */ -export interface SOrders extends Record {} - -/** - * @public - * type for bounty config - */ -export interface SClearConfig { - aInputIndex: number, - aOutputIndex: number, - bInputIndex: number, - bOutputIndex: number, - aBountyVaultId: string, - bBountyVaultId: string, -} - -/** - * @public - * type for simulating and storing matched order cleared funds - */ -export interface SClearedFunds extends SStore {} - -/** - * @public - * type for simulating and storing matched order counterparty cleared funds - */ -export interface SClearedCounterPartyFunds extends Record {} - -/** - * @public - * Interface for matchmaker forcasting a script - */ - export interface ReserveBook extends Record {} \ No newline at end of file diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index 759e9bd..1e22826 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -614,7 +614,7 @@ export type AllStandardArgs = UnionToIntersection * @public * Type of all args properties as optional properties */ - export type OptionalArgs = Partial> + export type OptionalArgs = Partial /** * @public diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 75188c4..cb96527 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -1,5 +1,4 @@ // import { pnp } from "./VM"; -import { RainJSVM } from "../jsvm/RainJSVM"; import { OpAdd } from "../jsvm/ops/math/OpAdd"; import { OpDiv } from "../jsvm/ops/math/OpDiv"; import { OpExp } from "../jsvm/ops/math/OpExp"; @@ -8,7 +7,6 @@ import { OpMin } from "../jsvm/ops/math/OpMin"; import { OpMod } from "../jsvm/ops/math/OpMod"; import { OpMul } from "../jsvm/ops/math/OpMul"; import { OpSub } from "../jsvm/ops/math/OpSub"; -import { OpJSVM, StateJSVM } from "./../jsvm/types"; import { AllStandardOps } from "../../src/classes/vm"; import { OpCaller } from "../jsvm/ops/evm/OpCaller"; import { OpAny } from "../jsvm/ops/math/logic/OpAny"; @@ -21,6 +19,7 @@ import { OpEqualTo } from "../jsvm/ops/math/logic/OpEqualTo"; import { OpBlockNumber } from "../jsvm/ops/evm/OpBlockNumber"; import { OpThisAddress } from "../jsvm/ops/evm/OpThisAddress"; import { OpLessThan } from "../jsvm/ops/math/logic/OpLessThan"; +import { RainJSVM, StateJSVM, OpJSVM } from "../jsvm/RainJSVM"; import { OpScaleN } from "../jsvm/ops/math/fixedPoint/OpScaleN"; import { OpScaleBy } from "../jsvm/ops/math/fixedPoint/OpScaleBy"; import { OpScale18 } from "../jsvm/ops/math/fixedPoint/OpScale18"; diff --git a/test/OB_MatchMaker.test.ts b/test/OB_MatchMaker.test.ts index d766955..4523280 100644 --- a/test/OB_MatchMaker.test.ts +++ b/test/OB_MatchMaker.test.ts @@ -1,5 +1,5 @@ import { paddedUInt160, paddedUInt256, parseUnits } from "../src/utils"; -import { FixedPrice, IncDecPrice, SERC20s, SOrder, VM, MatchMaker, eighteenZeros } from "../src"; +import { FixedPrice, IncDecPrice, sERC20s, sOrder, VM, MatchMaker, eighteenZeros } from "../src"; ////////// ---------------------| Demo |------------------------ *** Demo *** -----------------------| Demo |---------------------- \\\\\\\\\\ @@ -32,7 +32,7 @@ describe('Orderbook MatchMaker', () => { const token3 = paddedUInt160("0x3") //simulating some erc20 tokens - let tokens: SERC20s = { + let tokens: sERC20s = { [token1]: { totalSupply: parseUnits((1000).toString()), decimals: 18, @@ -90,28 +90,28 @@ describe('Orderbook MatchMaker', () => { const vaultId304 = paddedUInt256("0x0304") const vaultId204 = paddedUInt256("0x0204") - const order1 : SOrder = { + const order1 : sOrder = { orderHash: orderHash1, owner: sender1, validInputs: [{ token: token1, vaultId: vaultId101 }], validOutputs: [{ token: token2, vaultId: vaultId201 }], vmConfig: scriptA }; - const order2 : SOrder = { + const order2 : sOrder = { orderHash: orderHash2, owner: sender2, validInputs: [{ token: token2, vaultId: vaultId202 }], validOutputs: [{ token: token3, vaultId: vaultId302 }], vmConfig: scriptC }; - const order3 : SOrder = { + const order3 : sOrder = { orderHash: orderHash3, owner: sender3, validInputs: [{ token: token2, vaultId: vaultId203 }], validOutputs: [{ token: token1, vaultId: vaultId103 }], vmConfig: scriptB }; - const order4 : SOrder = { + const order4 : sOrder = { orderHash: orderHash4, owner: sender4, validInputs: [{ token: token3, vaultId: vaultId304 }], From f973e5b11a711f498720bde5da73638af0761908 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 16 Aug 2022 10:23:57 +0000 Subject: [PATCH 098/125] RuleBuilder JSVM evaluation --- docs/classes/rulebuilder.md | 33 +++ docs/index.md | 4 + docs/types/default.md | 4 +- docs/types/econdition.md | 12 + docs/types/econditiongroup.md | 15 ++ docs/types/ecurrency.md | 23 ++ docs/types/erule.md | 19 ++ src/rule-builder/ruleBuilder.ts | 404 +++++++++++++++++++++++++++++++- src/rule-builder/types.ts | 56 ++++- test/RuleBuilder.test.ts | 177 +++++++++++++- 10 files changed, 736 insertions(+), 11 deletions(-) create mode 100644 docs/types/econdition.md create mode 100644 docs/types/econditiongroup.md create mode 100644 docs/types/ecurrency.md create mode 100644 docs/types/erule.md diff --git a/docs/classes/rulebuilder.md b/docs/classes/rulebuilder.md index c636c35..1fb5efb 100644 --- a/docs/classes/rulebuilder.md +++ b/docs/classes/rulebuilder.md @@ -44,6 +44,7 @@ const price = RuleBuilder.getQPConfig(price) | Method | Description | | --- | --- | | [applyModifier(config, modifier)](./rulebuilder.md#applyModifier-method-static-1) | Method to generate a single currency rule-based StateConfig | +| [eval(currencies, signer, options)](./rulebuilder.md#eval-method-static-1) | Method to execute and evaluate the generated StateConfig by Rain JSVM from Currency object(s) and return an eCurrency object(s) which is basically the same Currency object with result fields for each individual part of the StateConfig i.e. Quantities, Prices, Conditions etc. | | [from(currencies)](./rulebuilder.md#from-method-static-1) | Method to generate a multi currency rule-based StateConfig | | [getConditionConfig(condition)](./rulebuilder.md#getConditionConfig-method-static-1) | Method to get the conditions' StateConfig of a ConditionGroup seperately | | [getConditionGroupConfig(conditionGroup)](./rulebuilder.md#getConditionGroupConfig-method-static-1) | Method to get the a ConditionGroup StateConfig | @@ -108,6 +109,38 @@ static applyModifier(config: StateConfig, modifier: Modifier): StateConfig; StateConfig + + +### eval(currencies, signer, options) + +Method to execute and evaluate the generated StateConfig by Rain JSVM from Currency object(s) and return an eCurrency object(s) which is basically the same Currency object with result fields for each individual part of the StateConfig i.e. Quantities, Prices, Conditions etc. + +Signature: + +```typescript +static eval(currencies: Currency[], signer: Signer, options?: { + contract?: Contract | string; + context?: string[]; + data?: any; + opMeta?: Map; + storageOpFn?: FnPtrsJSVM; + }): Promise; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| currencies | `Currency[]` | An array of Currency object(s) | +| signer | `Signer` | A valid ethers signer | +| options |
{
    contract?: Contract \| string;
    context?: string[];
    data?: any;
    opMeta?: Map;
    storageOpFn?: FnPtrsJSVM;
}
| (optional) Additional arguments to be passed to the JSVM | + +Returns: + +`Promise` + +An eCurrency object + ### from(currencies) diff --git a/docs/index.md b/docs/index.md index cbc75b6..d1434df 100644 --- a/docs/index.md +++ b/docs/index.md @@ -207,7 +207,11 @@ | [Currency](./types/currency.md) | Type of a single currency, the main parameter used in RuleBuilder to build the StateConfig | | [Default](./types/default.md) | The default block, i.e. default quantity and price | | [DepositConfig](./types/depositconfig.md) | Type for depositing some token amount into a vault used in | +| [eCondition](./types/econdition.md) | Type of a evaluated Condition with JSVM, which is the same as Condition with a result property | +| [eConditionGroup](./types/econditiongroup.md) | Type of a evaluated ConditionGroup with JSVM, which is the same as ConditionGroup with a result property | +| [eCurrency](./types/ecurrency.md) | Type of a evaluated Currency with JSVM, which is the same as Currency with a result property | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | +| [eRule](./types/erule.md) | Type of a evaluated Rule with JSVM, which is the same as Rule with a result property | | [EvidenceConfig](./types/evidenceconfig.md) | | | [Filter](./types/filter.md) | A filtering utility type for ArgsTypeBook | | [IOConfig](./types/ioconfig.md) | token the address of the desired token vaultId corresponding token vault id | diff --git a/docs/types/default.md b/docs/types/default.md index 8126ae0..00b624f 100644 --- a/docs/types/default.md +++ b/docs/types/default.md @@ -7,7 +7,7 @@ The default block, i.e. default quantity and price ```typescript type Default = { - quantity: Quantity; - price: Price; + quantity: Omit; + price: Omit; }; ``` diff --git a/docs/types/econdition.md b/docs/types/econdition.md new file mode 100644 index 0000000..5e258fa --- /dev/null +++ b/docs/types/econdition.md @@ -0,0 +1,12 @@ + +# Type eCondition + +Type of a evaluated Condition with JSVM, which is the same as Condition with a result property + +Signature: + +```typescript +type eCondition = (Exclude & { + result: boolean; +}) | Always | Never; +``` diff --git a/docs/types/econditiongroup.md b/docs/types/econditiongroup.md new file mode 100644 index 0000000..93a1836 --- /dev/null +++ b/docs/types/econditiongroup.md @@ -0,0 +1,15 @@ + +# Type eConditionGroup + +Type of a evaluated ConditionGroup with JSVM, which is the same as ConditionGroup with a result property + +Signature: + +```typescript +type eConditionGroup = (({ + conditions: (eCondition | eConditionGroup)[]; + operator: Exclude; +} | StateConfig) & { + result: boolean; +}) | Always | Never; +``` diff --git a/docs/types/ecurrency.md b/docs/types/ecurrency.md new file mode 100644 index 0000000..98abd10 --- /dev/null +++ b/docs/types/ecurrency.md @@ -0,0 +1,23 @@ + +# Type eCurrency + +Type of a evaluated Currency with JSVM, which is the same as Currency with a result property + +Signature: + +```typescript +type eCurrency = { + rules: eRule[]; + default: Default; + quantityGlobalModifier?: Modifier; + priceGlobalModifier?: Modifier; + pick: { + quantities: Extract; + prices: Extract; + }; + result: { + quantity: BigNumber; + price: BigNumber; + }; +}; +``` diff --git a/docs/types/erule.md b/docs/types/erule.md new file mode 100644 index 0000000..7ca124b --- /dev/null +++ b/docs/types/erule.md @@ -0,0 +1,19 @@ + +# Type eRule + +Type of a evaluated Rule with JSVM, which is the same as Rule with a result property + +Signature: + +```typescript +type eRule = { + quantityConditions: eConditionGroup; + priceConditions: eConditionGroup; + quantity: Quantity; + price: Price; + result: { + quantity: BigNumber; + price: BigNumber; + }; +}; +``` diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 881d75f..985f72d 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -1,5 +1,5 @@ import { vmbook } from './vmbook'; -import { BigNumberish, BytesLike } from 'ethers'; +import { BigNumber, BigNumberish, BytesLike, Contract, ethers, Signer } from 'ethers'; import { StateConfig, VM } from '../classes/vm'; import { areEqualConfigs, concat } from '../utils'; import { @@ -7,10 +7,15 @@ import { Condition, ConditionGroup, Currency, + eConditionGroup, + eCurrency, + eRule, Modifier, Price, - Quantity, + Quantity } from './types'; +import { FnPtrsJSVM, RainJSVM } from '../jsvm/RainJSVM'; +import { IOpMeta } from '../vm/OpMeta'; /** @@ -231,10 +236,10 @@ export class RuleBuilder { else if ('conditions' in conditionGroup) { for (const item of conditionGroup.conditions) { if (item === 'always' || item === 'never') { - return vmbook[item]({}); + group_.push(vmbook[item]({})); } else if ('constants' && 'sources' in item) { - return item; + group_.push(item); } else if ('conditions' in item) { group_.push(this.getConditionGroupConfig(item)); @@ -313,4 +318,395 @@ export class RuleBuilder { } else throw new Error('Invalid Arguments'); } + + /** + * @public + * Method to execute and evaluate the generated StateConfig by Rain JSVM from Currency object(s) and return an eCurrency + * object(s) which is basically the same Currency object with result fields for each individual + * part of the StateConfig i.e. Quantities, Prices, Conditions etc. + * + * @param currencies - An array of Currency object(s) + * @param signer - A valid ethers signer + * @param options - (optional) Additional arguments to be passed to the JSVM + * @returns An eCurrency object + */ + public static async eval( + currencies: Currency[], + signer: Signer, + options?: { + /** + * This assets contract or its address + */ + contract?: Contract | string, + /** + * Necessary context such as account, buy units, ... for JSVM to be able to run properly + */ + context?: string[], + /** + * Any other potential data that needs to be provided for JSVM at runtime + */ + data?: any, + /** + * The OpMeta Map object that contains all the opcodes' functions and enums and can be used + * for expanding and/or providing custom/local opcodes for JSVM + */ + opMeta?: Map + /** + * key/value pair of custom STORAGE opcodes' functions + */ + storageOpFn?: FnPtrsJSVM, + } + ): Promise { + + /** + * A function to get the eConditionGroup object from a ConditionGroup + */ + const evalConditionGroup = async ( + conditionGroup: ConditionGroup, + signer: Signer, + contract?: Contract | string, + context?: string[], + data?: any, + storageOpFn?: FnPtrsJSVM, + opMeta?: Map + ): Promise => { + let group_: StateConfig[] = []; + let obj: any = conditionGroup; + + if (conditionGroup === 'always' || conditionGroup === 'never') { + obj = conditionGroup as eConditionGroup; + } + else if ('constants' && 'sources' in conditionGroup) { + const result_ = await ( + new RainJSVM(conditionGroup, { + signer, + contract, + storageOpFn, + opMeta + }) + ) + .run({ context, ...data }) + + obj.result = result_[result_.length - 1].isZero() + ? false + : true + } + else if ('conditions' in conditionGroup) { + for (let i = 0; i < conditionGroup.conditions.length; i++) { + const condition = conditionGroup.conditions[i]; + + if (condition === 'always' || condition === 'never') { + group_.push(vmbook[condition]({})) + } + else if ('constants' && 'sources' in condition) { + group_.push(condition); + const result_ = await ( + new RainJSVM(condition, { + signer, + contract, + storageOpFn, + opMeta + }) + ) + .run({ context, ...data }) + + obj.conditions[i].results = result_[result_.length - 1].isZero() + ? false + : true; + } + else if ('conditions' in condition) { + const config_ = this.getConditionGroupConfig(condition); + group_.push(config_); + + obj.conditions[i] = await evalConditionGroup( + condition, + signer, + contract, + context, + data, + storageOpFn, + opMeta + ) + } + else { + const config_ = this.getConditionConfig(condition); + group_.push(config_); + + const result_ = await ( + new RainJSVM(config_, { + signer, + contract, + storageOpFn, + opMeta + }) + ) + .run({ context, ...data }) + + obj.conditions[i].result = result_[result_.length - 1].isZero() + ? false + : true; + } + } + if (conditionGroup.operator === 'true') { + const result_ = await ( + new RainJSVM(group_[0], { + signer, + contract, + storageOpFn, + opMeta + }) + ) + .run({ context, ...data }) + + obj.result = result_[result_.length - 1].isZero() + ? false + : true; + } + else if (conditionGroup.operator === 'not') { + const result_ = await ( + new RainJSVM( + VM[conditionGroup.operator](group_[0]), { + signer, + contract, + storageOpFn, + opMeta + } + ) + ) + .run({ context, ...data }) + + obj.result = result_[result_.length - 1].isZero() + ? false + : true; + } + else { + const result_ = await ( + new RainJSVM( + VM[conditionGroup.operator](group_, false), { + signer, + contract, + storageOpFn, + opMeta + } + ) + ) + .run({ context, ...data }) + + obj.result = result_[result_.length - 1].isZero() + ? false + : true; + } + } + return obj as eConditionGroup + } + + let eCurrencyObj: eCurrency[] = []; + let q_: BigNumber[] = []; + let p_: BigNumber[] = []; + + for (let i = 0; i < currencies.length; i++) { + let eRules: eRule[] = []; + + for (let j = 0; j < currencies[i].rules.length; j++) { + const rule = currencies[i].rules[j]; + let temp: BigNumber[]; + + temp = await ( + new RainJSVM( + this.getQPConfig(rule.quantity), { + signer, + contract: options?.contract, + opMeta: options?.opMeta, + storageOpFn: options?.storageOpFn + } + ) + ) + .run({ + context: options?.context, + ...options?.data + }); + const qResult_ = temp[temp.length - 1]; + + temp = await ( + new RainJSVM( + this.getQPConfig(rule.price), { + signer, + contract: options?.contract, + opMeta: options?.opMeta, + storageOpFn: options?.storageOpFn + } + ) + ) + .run({ + context: options?.context, + ...options?.data + }); + const pResult_ = temp[temp.length - 1]; + + temp = await ( + new RainJSVM( + this.getQPConfig(currencies[i].default.price), { + signer, + contract: options?.contract, + opMeta: options?.opMeta, + storageOpFn: options?.storageOpFn + } + ) + ) + .run({ + context: options?.context, + ...options?.data + }); + const pDefault_ = temp[temp.length - 1]; + + const quantityConditions = await evalConditionGroup( + rule.quantityConditions, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ); + const priceConditions = await evalConditionGroup( + rule.priceConditions, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ); + + eRules.push({ + quantityConditions, + priceConditions, + quantity: rule.quantity, + price: rule.price, + result: { + quantity: quantityConditions === 'always' + ? qResult_ + : quantityConditions === 'never' + ? ethers.constants.Zero + : quantityConditions.result + ? qResult_ + : ethers.constants.Zero, + + price: priceConditions === 'always' + ? pResult_ + : priceConditions === 'never' + ? pDefault_ + : priceConditions.result + ? pResult_ + : pDefault_, + } + }) + + q_.push(eRules[j].result.quantity); + p_.push(eRules[j].result.price); + } + + eCurrencyObj[i] = { + rules: eRules, + default: currencies[i].default, + pick: currencies[i].pick, + result: { + quantity: q_.reduce( + (a, b) => eCurrencyObj[i].pick.quantities === 'max' + ? a.gte(b) ? a : b + : a.lte(b) ? a : b + ), + price: p_.reduce( + (a, b) => eCurrencyObj[i].pick.prices === 'max' + ? a.gte(b) ? a : b + : a.lte(b) ? a : b + ) + } + } + + const qModifier = currencies[i].quantityGlobalModifier; + const pModifier = currencies[i].priceGlobalModifier; + + if (qModifier) { + eCurrencyObj[i].quantityGlobalModifier = currencies[i].quantityGlobalModifier; + if (qModifier.condition === 'always') { + if (qModifier.type === 'multiplier') { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(qModifier.values * 100)) + .div(100) + } + else { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(qModifier.values * 10000)) + .div(10000) + } + } + if (qModifier.condition !== 'never') { + if ( + ((await evalConditionGroup( + qModifier.condition, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + )) as Exclude).result + ) { + if (qModifier.type === 'multiplier') { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(qModifier.values * 100)) + .div(100) + } + else { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(qModifier.values * 10000)) + .div(10000) + } + } + } + } + if (pModifier) { + eCurrencyObj[i].priceGlobalModifier = currencies[i].priceGlobalModifier; + if (pModifier.condition === 'always') { + if (pModifier.type === 'multiplier') { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(pModifier.values * 100)) + .div(100) + } + else { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(pModifier.values * 10000)) + .div(10000) + } + } + if (pModifier.condition !== 'never') { + if ( + ((await evalConditionGroup( + pModifier.condition, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + )) as Exclude).result + ) { + if (pModifier.type === 'multiplier') { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(pModifier.values * 100)) + .div(100) + } + else { + eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + .mul(Math.floor(pModifier.values * 10000)) + .div(10000) + } + } + } + } + } + return eCurrencyObj; + } + } diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index 1e22826..c4d61df 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -89,8 +89,8 @@ export type Rule = { * The default block, i.e. default quantity and price */ export type Default = { - quantity: Quantity; - price: Price; + quantity: Omit; + price: Omit; }; /** @@ -647,3 +647,55 @@ export type Struct = | Filter<'decreasing-by-time-period'>['decreasing-by-time-period'] | Filter<'increasing-by-block-period'>['increasing-by-block-period'] | Filter<'decreasing-by-block-period'>['decreasing-by-block-period']; + +/** + * @public + * Type of a evaluated Condition with JSVM, which is the same as Condition with a result property + */ +export type eCondition = (Exclude & { result: boolean }) | Always | Never + +/** + * @public + * Type of a evaluated ConditionGroup with JSVM, which is the same as ConditionGroup with a result property + */ +export type eConditionGroup = (({ + conditions: (eCondition | eConditionGroup)[]; + operator: Exclude< + Operator, + 'min' | 'max' | 'eq' | 'gt' | 'lt' | 'lte' | 'gte' + >; +} | StateConfig) & { result: boolean }) | Always | Never + +/** + * @public + * Type of a evaluated Rule with JSVM, which is the same as Rule with a result property + */ +export type eRule = { + quantityConditions: eConditionGroup; + priceConditions: eConditionGroup; + quantity: Quantity; + price: Price; + result: { + quantity: BigNumber, + price: BigNumber + } +} + +/** + * @public + * Type of a evaluated Currency with JSVM, which is the same as Currency with a result property + */ +export type eCurrency = { + rules: eRule[]; + default: Default; + quantityGlobalModifier?: Modifier; + priceGlobalModifier?: Modifier; + pick: { + quantities: Extract; + prices: Extract; + }; + result: { + quantity: BigNumber, + price: BigNumber + } +} diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts index 6f910dd..78acac8 100644 --- a/test/RuleBuilder.test.ts +++ b/test/RuleBuilder.test.ts @@ -1,8 +1,9 @@ +import { ethers } from "hardhat" import { assert } from "chai"; import { Tier } from "./utils"; -import { BigNumber, ethers } from "ethers"; +import { BigNumber } from "ethers"; import { RuleBuilder, StateConfig, VM } from "../src"; -import { Currency } from "../src/rule-builder/types"; +import { Currency, eCurrency } from "../src/rule-builder/types"; import { areEqualConfigs, concat, op, paddedUInt32 } from "../src/utils"; @@ -749,4 +750,174 @@ describe('SDK - RuleBuilder', () => { `RuleBuilder did not generate correct StateConfig` ); }); -}); \ No newline at end of file + + it('should correctly execute the JSVM for a Currency object and return the evaluted Currency object', async () => { + const signer = (await ethers.getSigners())[0]; + const currencyObject: Currency = { + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'true' + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(7) + } + } + } + }, + pick: { + quantities: 'max', + prices: 'min' + } + }; + + const expectedObject: eCurrency[] = [{ + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'true', + result: true + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'true', + result: true + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + } + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(7) + } + } + } + }, + pick: { + quantities: 'max', + prices: 'min' + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + }]; + + const resultObject = await RuleBuilder.eval([currencyObject], signer); + + assert( + JSON.stringify(expectedObject) === JSON.stringify(resultObject), + `Result Currency object is not correct + expected: ${JSON.stringify(expectedObject)} + got: ${JSON.stringify(resultObject)}` + ); + }); +}); From 275c1a04b9bc85ee1ef7539f0bd7682f0621e4b7 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 16 Aug 2022 18:51:34 +0000 Subject: [PATCH 099/125] fix for jsvm storage ops "this" bound + HumanFriendlyRead doc update --- docs/classes/humanfriendlyread.md | 18 ++--- docs/index.md | 2 +- docs/types/prettifyconfig.md | 2 +- src/jsvm/RainJSVM.ts | 2 +- src/vm/HumanFreindlyRead.ts | 116 +++++++++++++++++------------- 5 files changed, 79 insertions(+), 61 deletions(-) diff --git a/docs/classes/humanfriendlyread.md b/docs/classes/humanfriendlyread.md index 71a2742..a55494f 100644 --- a/docs/classes/humanfriendlyread.md +++ b/docs/classes/humanfriendlyread.md @@ -3,7 +3,7 @@ The generator of human friendly readable source. -Parse an State/Script to a more human readable form, making easier to understand. This form allow to the users read exactly what the Script is made for, like the conditions, values used, etc. Also, anyone can learn to write their own scripts if use the Human Form to see the output for each combination that they made. +Parse an StateConfig/Script to a more human readable form, making easier to understand. This form allows users read exactly what the Script will do, like the conditions, values used, etc. Also, anyone can learn to write their own scripts if use the Human Form to see the output for each combination that they made. If you find an issue or you want to propose a better way to show a specific script or opcodes, please feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues @@ -17,9 +17,9 @@ class HumanFriendlyRead | Method | Description | | --- | --- | -| [get(\_state, \_config)](./humanfriendlyread.md#get-method-static-1) | Obtain the friendly output from an script. | -| [prettify(\_text, \_config)](./humanfriendlyread.md#prettify-method-static-1) | Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis | -| [set(opmeta)](./humanfriendlyread.md#set-method-static-1) | Method to set the opMeta with more than AllStandardOps opcodes for this instance of the HumanFriendly Read | +| [get(\_state, \_config)](./humanfriendlyread.md#get-method-static-1) | Obtain the friendly output from an StateConfig/script. | +| [prettify(\_text, \_config)](./humanfriendlyread.md#prettify-method-static-1) | Make the output from the HumanFriendly Source more readable by adding indenting following the parenthesis | +| [set(opmeta)](./humanfriendlyread.md#set-method-static-1) | Method to set the opMeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the HumanFriendlyRead | ## Static Method Details @@ -27,7 +27,7 @@ class HumanFriendlyRead ### get(\_state, \_config) -Obtain the friendly output from an script. +Obtain the friendly output from an StateConfig/script. Signature: @@ -39,7 +39,7 @@ static get(_state: StateConfig, _config?: Config): string; | Parameter | Type | Description | | --- | --- | --- | -| \_state | [StateConfig](../interfaces/stateconfig.md) | The state or script to generate the friendly version | +| \_state | [StateConfig](../interfaces/stateconfig.md) | The StateConfig/script to generate the friendly version | | \_config | [Config](../types/config.md) | The configuration that will run the generator | Returns: @@ -51,7 +51,7 @@ static get(_state: StateConfig, _config?: Config): string; ### prettify(\_text, \_config) -Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis +Make the output from the HumanFriendly Source more readable by adding indenting following the parenthesis If the string is already indentend, the method will wrongly generate the string @@ -72,13 +72,13 @@ static prettify(_text: string, _config?: PrettifyConfig): string; `string` -The pretty output +A prettified output ### set(opmeta) -Method to set the opMeta with more than AllStandardOps opcodes for this instance of the HumanFriendly Read +Method to set the opMeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the HumanFriendlyRead Signature: diff --git a/docs/index.md b/docs/index.md index d1434df..78777d8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -224,7 +224,7 @@ | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | -| [PrettifyConfig](./types/prettifyconfig.md) | Specific the configuration of the Prettify method. | +| [PrettifyConfig](./types/prettifyconfig.md) | Specifies the configuration of the Prettify method. | | [Price](./types/price.md) | Price type | | [Quantity](./types/quantity.md) | Quantity type | | [Rule](./types/rule.md) | A single Rule block, i.e. an if/then block that contains conditions of prices and quantities and its actions which are price and quantity | diff --git a/docs/types/prettifyconfig.md b/docs/types/prettifyconfig.md index 582d50d..b1b7aa7 100644 --- a/docs/types/prettifyconfig.md +++ b/docs/types/prettifyconfig.md @@ -1,7 +1,7 @@ # Type PrettifyConfig -Specific the configuration of the Prettify method. +Specifies the configuration of the Prettify method. Signature: diff --git a/src/jsvm/RainJSVM.ts b/src/jsvm/RainJSVM.ts index 3bd7695..95a3c64 100644 --- a/src/jsvm/RainJSVM.ts +++ b/src/jsvm/RainJSVM.ts @@ -318,7 +318,7 @@ export class RainJSVM { if (this.StorageOps[operand]) { - await this.StorageOps[operand](this.state, operand, data); + await this.StorageOps[operand].call(this, this.state, operand, data); } else throw new Error("no or out-of-bound storage opcode") } diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/HumanFreindlyRead.ts index b046784..f73874a 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/HumanFreindlyRead.ts @@ -11,7 +11,7 @@ import { IOpMeta, OpMeta } from './OpMeta'; */ export type Config = { /** - * Enable the prettify to the result of get + * Enable the prettify for the result of the HumnaFriendlyRead, adds indentation to the final result */ pretty?: boolean; /** @@ -23,7 +23,7 @@ export type Config = { */ contextEnums?: string[]; /** - * Tags/Names/Aliases for each individual item on the final stack (in order) + * Tags/Names/Aliases for each individual item on the final stack such as Price and Quantity of a sale script (should be passed in order) */ tags?: string[]; /** @@ -34,8 +34,7 @@ export type Config = { /** * @public - * - * Specific the configuration of the Prettify method. + * Specifies the configuration of the Prettify method. */ export type PrettifyConfig = { /** @@ -43,7 +42,7 @@ export type PrettifyConfig = { */ n?: number; /** - * Max length to each line + * Max length of each line */ length?: number; }; @@ -53,8 +52,8 @@ export type PrettifyConfig = { * The generator of human friendly readable source. * * @remarks - * Parse an State/Script to a more human readable form, making easier to understand. This form allow to the users read exactly - * what the Script is made for, like the conditions, values used, etc. Also, anyone can learn to write their own scripts + * Parse an StateConfig/Script to a more human readable form, making easier to understand. This form allows users read exactly + * what the Script will do, like the conditions, values used, etc. Also, anyone can learn to write their own scripts * if use the Human Form to see the output for each combination that they made. * * If you find an issue or you want to propose a better way to show a specific script or opcodes, please @@ -67,7 +66,7 @@ export class HumanFriendlyRead { /** * @public - * Method to set the opMeta with more than AllStandardOps opcodes for this instance of the HumanFriendly Read + * Method to set the opMeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the HumanFriendlyRead * * @param opmeta - The OpMeta map object */ @@ -76,8 +75,8 @@ export class HumanFriendlyRead { } /** - * Obtain the friendly output from an script. - * @param _state - The state or script to generate the friendly version + * Obtain the friendly output from an StateConfig/script. + * @param _state - The StateConfig/script to generate the friendly version * @param _config - The configuration that will run the generator * @returns */ @@ -112,14 +111,14 @@ export class HumanFriendlyRead { } /** - * Make more readable the output from the HumanFriendly Source adding indenting following the parenthesis + * Make the output from the HumanFriendly Source more readable by adding indenting following the parenthesis * * @remarks * If the string is already indentend, the method will wrongly generate the string * * @param _text - The output from the HumanFriendlySource * @param _config - The configuration of the prettify method (experimental) - * @returns The pretty output + * @returns A prettified output */ public static prettify(_text: string, _config: PrettifyConfig = {}): string { let { n, length } = _config; @@ -159,20 +158,20 @@ export class HumanFriendlyRead { if (skip === 0) { if (_text[i + 3] === '=' && _text[i + 4] === '>') { counter--; - _text = - _text.slice(0, i) + - '\n' + - space.repeat(counter * n) + - _text.slice(i); + _text = + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); i = i + counter * n + 1; } else { counter--; _text = - _text.slice(0, i) + - '\n' + - space.repeat(counter * n) + - _text.slice(i); + _text.slice(0, i) + + '\n' + + space.repeat(counter * n) + + _text.slice(i); i = i + counter * n + 1; if (counter === 0 && (_text[i + 1] || _text[i + 1])) { _text = _text.slice(0, i + 1) + '\n\n' + _text.slice(i + 1); @@ -188,7 +187,7 @@ export class HumanFriendlyRead { } /** - * The main workhorse of the Human Friendly Readable script that builds the whole text + * The main workhorse of the Human Friendly Readable source that builds the whole text * * @param sources - The StateConfig sources * @param constants - The StateConfig constants all in hex string format @@ -196,7 +195,7 @@ export class HumanFriendlyRead { * @param contextEnums - (optional) names/aliases for STORAGE opcodes * @param tags - (optional) Tags/names/aliases for individual items in final results (should be passed in order) * @param enableTagging - True if the result needs to be tagged and optimized for the RuleBuilder script generator - * @returns The generated human friendly readable text + * @returns A human friendly readable text of the passed script */ private static _eval = ( sources: BytesLike[], @@ -206,7 +205,6 @@ export class HumanFriendlyRead { tags?: string[], enableTagging: boolean = false, ): string => { - let _stack: string[] = []; let _finalStack: string[] = []; let _zipmapStack: { [key: number]: string } = {}; @@ -214,16 +212,15 @@ export class HumanFriendlyRead { let counter = 0; for (let i = 0; i < sources.length; i++) { - let src = arrayify(sources[i], { allowMissingPrefix: true}); + let src = arrayify(sources[i], { allowMissingPrefix: true }); for (let j = 0; j < src.length; j += 2) { - if (src[j] === AllStandardOps.CONSTANT) { if (src[j + 1] < constants.length) { _stack.push( BigNumber.from(constants[src[j + 1]]).eq(ethers.constants.MaxUint256) - ? 'MaxUint256' - : constants[src[j + 1]] + ? 'MaxUint256' + : constants[src[j + 1]] ) } else { @@ -270,7 +267,11 @@ export class HumanFriendlyRead { + this.opMeta[src[j]].name + `${index} = ` + `(Loop Size: ${loopSize}, ` - + `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}]) ` + + `Arguments: [${ + _stack.splice(-this.opMeta[src[j]] + .pops(src[j], src[j + 1])) + .join(', ') + }]) ` for (let k = 0; k < loopSize; k++) { _stack.push(`ZIPMAP${index} Result[${k + 1}]`) @@ -279,18 +280,30 @@ export class HumanFriendlyRead { else if (src[j] === AllStandardOps.SELECT_LTE) { _stack.push( this.opMeta[src[j]].name + - `(Logic: ${selectLteLogic[src[j + 1] >> 7]}, Mode: ${selectLteMode[(src[j + 1] >> 5) & 3]}, ` + - `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` + `(Logic: ${selectLteLogic[src[j + 1] >> 7]}, ` + + `Mode: ${selectLteMode[(src[j + 1] >> 5) & 3]}, ` + + `Arguments: [${ + _stack.splice(-this.opMeta[src[j]] + .pops(src[j], src[j + 1])) + .join(', ') + }])` ) } else if (src[j] === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { _stack.push( this.opMeta[src[j]].name + `(Start Tier: ${src[j + 1] & 15}, End Tier: ${src[j + 1] >> 4}, ` + - `Arguments: [${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')}])` + `Arguments: [${ + _stack.splice(-this.opMeta[src[j]] + .pops(src[j], src[j + 1])) + .join(', ') + }])` ) } - else if (this.opMeta[src[j]].pops.name === 'zero' && this.opMeta[src[j]].pushes.name !== 'zero') { + else if ( + this.opMeta[src[j]].pops.name === 'zero' && + this.opMeta[src[j]].pushes.name !== 'zero' + ) { let _alias = this.opMeta[src[j]].alias _stack.push(_alias ? _alias : this.opMeta[src[j]].name) } @@ -298,20 +311,26 @@ export class HumanFriendlyRead { let _alias = this.opMeta[src[j]].alias _stack.push( _alias - ? _alias + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` - : this.opMeta[src[j]].name + `(${_stack.splice(-(this.opMeta[src[j]].pops(src[j], src[j + 1]))).join(', ')})` + ? _alias + `(${ + _stack.splice(-this.opMeta[src[j]] + .pops(src[j], src[j + 1])) + .join(', ') + })` + : this.opMeta[src[j]].name + `(${ + _stack.splice(-this.opMeta[src[j]] + .pops(src[j], src[j + 1])) + .join(', ') + })` ) } if (_stack[_stack.length - 1].slice(0, 20) === 'ISZERO(GREATER_THAN(') { - _stack[_stack.length - 1] = - 'LESS_THAN_EQUAL(' + _stack[_stack.length - 1] - .slice(20, _stack[_stack.length - 1].length - 1) + _stack[_stack.length - 1] = 'LESS_THAN_EQUAL(' + + _stack[_stack.length - 1].slice(20, _stack[_stack.length - 1].length - 1) } if (_stack[_stack.length - 1].slice(0, 17) === 'ISZERO(LESS_THAN(') { - _stack[_stack.length - 1] = - 'GREATER_THAN_EQUAL(' + _stack[_stack.length - 1] - .slice(17, _stack[_stack.length - 1].length - 1) + _stack[_stack.length - 1] = 'GREATER_THAN_EQUAL(' + + _stack[_stack.length - 1].slice(17, _stack[_stack.length - 1].length - 1) } } @@ -325,17 +344,16 @@ export class HumanFriendlyRead { counter++; } } - _finalStack.push(_stack.join(' ')) _stack = []; - } - for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { - let index = Number(Object.keys(_zipmapStack)[j]); - _finalStack[index] = `${_zipmapStack[index]} => { ${_finalStack[index]} }` - } + } + for (let j = 0; j < Object.keys(_zipmapStack).length; j++) { + let index = Number(Object.keys(_zipmapStack)[j]); + _finalStack[index] = `${_zipmapStack[index]} => { ${_finalStack[index]} }` + } - return _finalStack.join(' '); - }; + return _finalStack.join(' '); + }; private static needIndent(text: string, index: number, max: number): boolean { const openRef = text[index]; From 82be8af4244f41a8e546da2edaa5878a16967810 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 17 Aug 2022 17:44:19 +0000 Subject: [PATCH 100/125] debug RuleBuilder JSVM --- docs/types/ecurrency.md | 8 +- src/rule-builder/ruleBuilder.ts | 152 ++++-- src/rule-builder/types.ts | 4 +- src/vm/OpMeta.ts | 4 +- test/RuleBuilder.test.ts | 864 +++++++++++++++++++++++++++++++- 5 files changed, 980 insertions(+), 52 deletions(-) diff --git a/docs/types/ecurrency.md b/docs/types/ecurrency.md index 98abd10..6b488da 100644 --- a/docs/types/ecurrency.md +++ b/docs/types/ecurrency.md @@ -9,8 +9,12 @@ Type of a evaluated Currency with JSVM, which is the same as Currency with a res type eCurrency = { rules: eRule[]; default: Default; - quantityGlobalModifier?: Modifier; - priceGlobalModifier?: Modifier; + quantityGlobalModifier?: Omit & { + condition: eConditionGroup; + }; + priceGlobalModifier?: Omit & { + condition: eConditionGroup; + }; pick: { quantities: Extract; prices: Extract; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 985f72d..d3a311e 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -374,7 +374,7 @@ export class RuleBuilder { let obj: any = conditionGroup; if (conditionGroup === 'always' || conditionGroup === 'never') { - obj = conditionGroup as eConditionGroup; + obj = conditionGroup; } else if ('constants' && 'sources' in conditionGroup) { const result_ = await ( @@ -506,10 +506,44 @@ export class RuleBuilder { for (let i = 0; i < currencies.length; i++) { let eRules: eRule[] = []; + let temp: BigNumber[]; + + temp = await ( + new RainJSVM( + this.getQPConfig(currencies[i].default.quantity), { + signer, + contract: options?.contract, + opMeta: options?.opMeta, + storageOpFn: options?.storageOpFn + } + ) + ) + .run({ + context: options?.context, + ...options?.data + }); + const qDefault_ = temp[temp.length - 1]; + q_.push(qDefault_); + + temp = await ( + new RainJSVM( + this.getQPConfig(currencies[i].default.price), { + signer, + contract: options?.contract, + opMeta: options?.opMeta, + storageOpFn: options?.storageOpFn + } + ) + ) + .run({ + context: options?.context, + ...options?.data + }); + const pDefault_ = temp[temp.length - 1]; + p_.push(pDefault_); for (let j = 0; j < currencies[i].rules.length; j++) { const rule = currencies[i].rules[j]; - let temp: BigNumber[]; temp = await ( new RainJSVM( @@ -526,6 +560,22 @@ export class RuleBuilder { ...options?.data }); const qResult_ = temp[temp.length - 1]; + let qm_; + if (rule.quantity.modifier !== undefined) { + qm_ = { + type: rule.quantity.modifier.type, + values: rule.quantity.modifier.values, + condition: await evalConditionGroup( + rule.quantity.modifier.condition, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ) + } + } temp = await ( new RainJSVM( @@ -542,22 +592,22 @@ export class RuleBuilder { ...options?.data }); const pResult_ = temp[temp.length - 1]; - - temp = await ( - new RainJSVM( - this.getQPConfig(currencies[i].default.price), { + let pm_; + if (rule.price.modifier !== undefined) { + pm_ = { + type: rule.price.modifier.type, + values: rule.price.modifier.values, + condition: await evalConditionGroup( + rule.price.modifier.condition, signer, - contract: options?.contract, - opMeta: options?.opMeta, - storageOpFn: options?.storageOpFn - } - ) - ) - .run({ - context: options?.context, - ...options?.data - }); - const pDefault_ = temp[temp.length - 1]; + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ) + } + } const quantityConditions = await evalConditionGroup( rule.quantityConditions, @@ -581,8 +631,14 @@ export class RuleBuilder { eRules.push({ quantityConditions, priceConditions, - quantity: rule.quantity, - price: rule.price, + quantity: { + struct: rule.quantity.struct, + modifier: qm_ + }, + price: { + struct: rule.price.struct, + modifier: pm_ + }, result: { quantity: quantityConditions === 'always' ? qResult_ @@ -612,12 +668,12 @@ export class RuleBuilder { pick: currencies[i].pick, result: { quantity: q_.reduce( - (a, b) => eCurrencyObj[i].pick.quantities === 'max' + (a, b) => currencies[i].pick.quantities === 'max' ? a.gte(b) ? a : b : a.lte(b) ? a : b ), price: p_.reduce( - (a, b) => eCurrencyObj[i].pick.prices === 'max' + (a, b) => currencies[i].pick.prices === 'max' ? a.gte(b) ? a : b : a.lte(b) ? a : b ) @@ -628,7 +684,19 @@ export class RuleBuilder { const pModifier = currencies[i].priceGlobalModifier; if (qModifier) { - eCurrencyObj[i].quantityGlobalModifier = currencies[i].quantityGlobalModifier; + eCurrencyObj[i].quantityGlobalModifier = { + type: qModifier.type, + values: qModifier.values, + condition: await evalConditionGroup( + qModifier.condition, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ) + }; if (qModifier.condition === 'always') { if (qModifier.type === 'multiplier') { eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity @@ -643,15 +711,9 @@ export class RuleBuilder { } if (qModifier.condition !== 'never') { if ( - ((await evalConditionGroup( - qModifier.condition, - signer, - options?.contract, - options?.context, - options?.data, - options?.storageOpFn, - options?.opMeta - )) as Exclude).result + (eCurrencyObj[i].quantityGlobalModifier!.condition as Exclude< + eConditionGroup, 'always' | 'never' + >).result ) { if (qModifier.type === 'multiplier') { eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity @@ -667,7 +729,19 @@ export class RuleBuilder { } } if (pModifier) { - eCurrencyObj[i].priceGlobalModifier = currencies[i].priceGlobalModifier; + eCurrencyObj[i].priceGlobalModifier = { + type: pModifier.type, + values: pModifier.values, + condition: await evalConditionGroup( + pModifier.condition, + signer, + options?.contract, + options?.context, + options?.data, + options?.storageOpFn, + options?.opMeta + ) + }; if (pModifier.condition === 'always') { if (pModifier.type === 'multiplier') { eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity @@ -682,15 +756,9 @@ export class RuleBuilder { } if (pModifier.condition !== 'never') { if ( - ((await evalConditionGroup( - pModifier.condition, - signer, - options?.contract, - options?.context, - options?.data, - options?.storageOpFn, - options?.opMeta - )) as Exclude).result + (eCurrencyObj[i].priceGlobalModifier!.condition as Exclude< + eConditionGroup, 'always' | 'never' + >).result ) { if (pModifier.type === 'multiplier') { eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity @@ -708,5 +776,5 @@ export class RuleBuilder { } return eCurrencyObj; } - } + diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index c4d61df..dd4afc2 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -688,8 +688,8 @@ export type eRule = { export type eCurrency = { rules: eRule[]; default: Default; - quantityGlobalModifier?: Modifier; - priceGlobalModifier?: Modifier; + quantityGlobalModifier?: Omit & { condition: eConditionGroup }; + priceGlobalModifier?: Omit & { condition: eConditionGroup }; pick: { quantities: Extract; prices: Extract; diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index cb96527..6262db0 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -78,10 +78,10 @@ import { OpERC20SnapshotTotalSupplyAt } from "../jsvm/ops/erc20/snapshot/OpERC20 */ derived: (opcode: number, operand: number) => { if (opcode === AllStandardOps.ZIPMAP) { - return operand >> 5; + return (operand >> 5) + 1 ; } if (opcode === AllStandardOps.SELECT_LTE) { - return (operand & 248) >> 3; + return (operand & 31) + 1; } if (opcode === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { return (operand * 2) + 1; diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts index 78acac8..2a65923 100644 --- a/test/RuleBuilder.test.ts +++ b/test/RuleBuilder.test.ts @@ -758,6 +758,15 @@ describe('SDK - RuleBuilder', () => { { quantityConditions: { conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, { struct: { subject: 'constant', @@ -768,10 +777,19 @@ describe('SDK - RuleBuilder', () => { operator: 'true' } ], - operator: 'true' + operator: 'and' }, priceConditions: { conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, { struct: { subject: 'constant', @@ -782,7 +800,71 @@ describe('SDK - RuleBuilder', () => { operator: 'true' } ], - operator: 'true' + operator: 'and' + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' }, quantity: { struct: { @@ -831,6 +913,90 @@ describe('SDK - RuleBuilder', () => { { quantityConditions: { conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, { struct: { subject: 'constant', @@ -842,11 +1008,21 @@ describe('SDK - RuleBuilder', () => { result: true } ], - operator: 'true', + operator: 'and', result: true }, priceConditions: { conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, { struct: { subject: 'constant', @@ -858,7 +1034,7 @@ describe('SDK - RuleBuilder', () => { result: true } ], - operator: 'true', + operator: 'and', result: true }, quantity: { @@ -920,4 +1096,684 @@ describe('SDK - RuleBuilder', () => { got: ${JSON.stringify(resultObject)}` ); }); + + it('should correctly execute the JSVM for multi Currency object and return the evaluted Currency objects', async () => { + const signer = (await ethers.getSigners())[0]; + const currencyObjects: Currency[] = [ + { + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(7) + } + } + } + }, + pick: { + quantities: 'max', + prices: 'min' + } + }, + { + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true' + } + ], + operator: 'and' + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + } + }, + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(7) + } + } + } + }, + pick: { + quantities: 'max', + prices: 'min' + } + } + ]; + + const expectedObject: eCurrency[] = [{ + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + } + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(7) + } + } + } + }, + pick: { + quantities: 'max', + prices: 'min' + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + }, + { + rules: [ + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + }, + { + quantityConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + priceConditions: { + conditions: [ + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + }, + { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(10) + } + }, + operator: 'true', + result: true + } + ], + operator: 'and', + result: true + }, + quantity: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(1) + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(5) + } + } + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + } + ], + default: { + quantity: { + struct: { + subject: 'constant', + args: { + value: ethers.constants.Zero + } + } + }, + price: { + struct: { + subject: 'constant', + args: { + value: BigNumber.from(7) + } + } + } + }, + pick: { + quantities: 'max', + prices: 'min' + }, + result: { + quantity: BigNumber.from(1), + price: BigNumber.from(5) + } + }]; + + const resultObject = await RuleBuilder.eval(currencyObjects, signer); + + assert( + JSON.stringify(expectedObject) === JSON.stringify(resultObject), + `Result Currency object is not correct + expected: ${JSON.stringify(expectedObject)} + got: ${JSON.stringify(resultObject)}` + ); + }); }); From 4913c58d510348cbcd2d5e2d8b7312f4fec87cce Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 17 Aug 2022 19:42:00 +0000 Subject: [PATCH 101/125] fix --- src/rule-builder/ruleBuilder.ts | 8 +++---- src/rule-builder/types.ts | 10 +++++++-- test/RuleBuilder.test.ts | 40 ++++++++++++++++++++++++++++++--- 3 files changed, 49 insertions(+), 9 deletions(-) diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index d3a311e..2f4f10b 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -744,12 +744,12 @@ export class RuleBuilder { }; if (pModifier.condition === 'always') { if (pModifier.type === 'multiplier') { - eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price .mul(Math.floor(pModifier.values * 100)) .div(100) } else { - eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price .mul(Math.floor(pModifier.values * 10000)) .div(10000) } @@ -761,12 +761,12 @@ export class RuleBuilder { >).result ) { if (pModifier.type === 'multiplier') { - eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price .mul(Math.floor(pModifier.values * 100)) .div(100) } else { - eCurrencyObj[i].result.quantity = eCurrencyObj[i].result.quantity + eCurrencyObj[i].result.price = eCurrencyObj[i].result.price .mul(Math.floor(pModifier.values * 10000)) .div(10000) } diff --git a/src/rule-builder/types.ts b/src/rule-builder/types.ts index dd4afc2..3587d92 100644 --- a/src/rule-builder/types.ts +++ b/src/rule-builder/types.ts @@ -673,8 +673,14 @@ export type eConditionGroup = (({ export type eRule = { quantityConditions: eConditionGroup; priceConditions: eConditionGroup; - quantity: Quantity; - price: Price; + quantity: Omit & { + modifier?: Omit & + { condition: eConditionGroup } + }; + price: Omit & { + modifier?: Omit & + { condition: eConditionGroup } + }; result: { quantity: BigNumber, price: BigNumber diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts index 2a65923..dffc77f 100644 --- a/test/RuleBuilder.test.ts +++ b/test/RuleBuilder.test.ts @@ -751,7 +751,7 @@ describe('SDK - RuleBuilder', () => { ); }); - it('should correctly execute the JSVM for a Currency object and return the evaluted Currency object', async () => { + it('should correctly execute the JSVM for a Currency object with modifier and return the evaluted Currency object', async () => { const signer = (await ethers.getSigners())[0]; const currencyObject: Currency = { rules: [ @@ -880,6 +880,22 @@ describe('SDK - RuleBuilder', () => { args: { value: BigNumber.from(5) } + }, + modifier: { + type: 'multiplier', + values: 2, + condition: { + conditions: [ + { + struct: { + subject: 'constant', + args: { value: ethers.constants.One } + }, + operator: 'true', + } + ], + operator: 'true', + } } } }, @@ -1051,11 +1067,29 @@ describe('SDK - RuleBuilder', () => { args: { value: BigNumber.from(5) } + }, + modifier: { + type: 'multiplier', + values: 2, + condition: { + conditions: [ + { + struct: { + subject: 'constant', + args: { value: ethers.constants.One } + }, + operator: 'true', + result: true + } + ], + operator: 'true', + result: true + } } }, result: { quantity: BigNumber.from(1), - price: BigNumber.from(5) + price: BigNumber.from(10) } } ], @@ -1084,7 +1118,7 @@ describe('SDK - RuleBuilder', () => { result: { quantity: BigNumber.from(1), price: BigNumber.from(5) - } + }, }]; const resultObject = await RuleBuilder.eval([currencyObject], signer); From 34755e83b860f3e45f48bfe9b0457d78b467a067 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 17 Aug 2022 22:33:25 +0000 Subject: [PATCH 102/125] update rulebuilder quantity defaulting --- docs/types/erule.md | 12 +++++- src/rule-builder/ruleBuilder.ts | 40 +++++++++++------- test/RuleBuilder.test.ts | 73 ++++++++++++++++++--------------- 3 files changed, 76 insertions(+), 49 deletions(-) diff --git a/docs/types/erule.md b/docs/types/erule.md index 7ca124b..3313cc4 100644 --- a/docs/types/erule.md +++ b/docs/types/erule.md @@ -9,8 +9,16 @@ Type of a evaluated Rule with JSVM, which is the same as Rule with a result prop type eRule = { quantityConditions: eConditionGroup; priceConditions: eConditionGroup; - quantity: Quantity; - price: Price; + quantity: Omit & { + modifier?: Omit & { + condition: eConditionGroup; + }; + }; + price: Omit & { + modifier?: Omit & { + condition: eConditionGroup; + }; + }; result: { quantity: BigNumber; price: BigNumber; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index 2f4f10b..be809bc 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -1,7 +1,15 @@ import { vmbook } from './vmbook'; -import { BigNumber, BigNumberish, BytesLike, Contract, ethers, Signer } from 'ethers'; +import { IOpMeta } from '../vm/OpMeta'; import { StateConfig, VM } from '../classes/vm'; import { areEqualConfigs, concat } from '../utils'; +import { FnPtrsJSVM, RainJSVM } from '../jsvm/RainJSVM'; +import { + Signer, + Contract, + BigNumber, + BytesLike, + BigNumberish +} from 'ethers'; import { AllStandardArgs, Condition, @@ -14,8 +22,6 @@ import { Price, Quantity } from './types'; -import { FnPtrsJSVM, RainJSVM } from '../jsvm/RainJSVM'; -import { IOpMeta } from '../vm/OpMeta'; /** @@ -67,7 +73,7 @@ export class RuleBuilder { public static from(currencies: Currency[]): StateConfig { let rules_: StateConfig[] = []; let thens_: StateConfig[] = []; - let dps_: StateConfig[] = []; + let defaults_: StateConfig[] = []; let count = 0; let totalCount = 0; @@ -97,8 +103,10 @@ export class RuleBuilder { } qs_.push( - VM.mulTogether( - [VM.stack(count * 2), this.getQPConfig(rule.quantity)], + VM.ifelse( + VM.stack(count * 2), + this.getQPConfig(rule.quantity), + VM.stack(totalCount + (i * 2)), false ) ); @@ -106,7 +114,7 @@ export class RuleBuilder { VM.ifelse( VM.stack((count * 2) + 1), this.getQPConfig(rule.price), - VM.stack(totalCount + i), + VM.stack(totalCount + ((i * 2) + 1)), false ) ); @@ -114,17 +122,19 @@ export class RuleBuilder { } if (currencies[i].rules.length > 0) { - dps_.push(this.getQPConfig(currencies[i].default.price)); + defaults_.push(this.getQPConfig(currencies[i].default.quantity)); + defaults_.push(this.getQPConfig(currencies[i].default.price)); - qs_.push(this.getQPConfig(currencies[i].default.quantity)); - ps_.push(VM.stack(totalCount + i)); + qs_.push(VM.stack(totalCount + (i * 2))); + ps_.push(VM.stack(totalCount + ((i * 2) + 1))); q_ = (VM[currencies[i].pick.quantities](qs_, false)); p_ = (VM[currencies[i].pick.prices](ps_, false)); } else { - rules_.push({constants: [], sources: [concat([])]}); - dps_.push({constants: [], sources: [concat([])]}); + rules_.push({ constants: [], sources: [concat([])] }); + defaults_.push({ constants: [], sources: [concat([])] }) + defaults_.push({ constants: [], sources: [concat([])] }); p_ = this.getQPConfig(currencies[i].default.price); q_ = this.getQPConfig(currencies[i].default.quantity); @@ -146,7 +156,7 @@ export class RuleBuilder { } } - return VM.multi([...rules_, ...dps_, ...thens_], false); + return VM.multi([...rules_, ...defaults_, ...thens_], false); } /** @@ -643,10 +653,10 @@ export class RuleBuilder { quantity: quantityConditions === 'always' ? qResult_ : quantityConditions === 'never' - ? ethers.constants.Zero + ? qDefault_ : quantityConditions.result ? qResult_ - : ethers.constants.Zero, + : qDefault_, price: priceConditions === 'always' ? pResult_ diff --git a/test/RuleBuilder.test.ts b/test/RuleBuilder.test.ts index dffc77f..a1439f3 100644 --- a/test/RuleBuilder.test.ts +++ b/test/RuleBuilder.test.ts @@ -191,9 +191,9 @@ describe('SDK - RuleBuilder', () => { 11111, 11111, 11111, - BigNumber.from(5), ethers.constants.Zero, BigNumber.from(5), + BigNumber.from(5), BigNumber.from(10), '0x123456789abcdef', ethers.constants.MaxUint256, @@ -232,27 +232,31 @@ describe('SDK - RuleBuilder', () => { op(VM.Opcodes.CONSTANT, 7), op(VM.Opcodes.GREATER_THAN), op(VM.Opcodes.ISZERO), - // default price + // default quantity op(VM.Opcodes.CONSTANT, 8), + // default price + op(VM.Opcodes.CONSTANT, 9), // quantities op(VM.Opcodes.STACK, 0), op(VM.Opcodes.CONTEXT, 1), - op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.STACK, 2), op(VM.Opcodes.CONTEXT, 1), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 4), op(VM.Opcodes.MAX, 3), // prices op(VM.Opcodes.STACK, 1), op(VM.Opcodes.CONSTANT, 10), - op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.STACK, 5), op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.STACK, 3), op(VM.Opcodes.CONSTANT, 11), - op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.STACK, 5), op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.STACK, 4), + op(VM.Opcodes.STACK, 5), op(VM.Opcodes.MIN, 3), // prices global modifier op(VM.Opcodes.CONSTANT, 12), @@ -269,7 +273,7 @@ describe('SDK - RuleBuilder', () => { ]) ] } - + assert( areEqualConfigs(resultConfig, expectedConfig), `RuleBuilder did not generate correct StateConfig` @@ -597,11 +601,12 @@ describe('SDK - RuleBuilder', () => { paddedUInt32('0xffffffff').repeat(5) + paddedUInt32(0).repeat(3) ), - // default prices + // currency1 default quantity and price + ethers.constants.Zero, BigNumber.from(5), - BigNumber.from(7), - // currency1 quantities constants + // currency2 default quantity and price ethers.constants.Zero, + BigNumber.from(7), // currency1 prices constants BigNumber.from(5), BigNumber.from(10), @@ -610,8 +615,6 @@ describe('SDK - RuleBuilder', () => { ethers.constants.MaxUint256, 7500, 10000, - // currency2 quantities constants - ethers.constants.Zero, // currency2 quantities global modifier '0x123456789abcdef', ethers.constants.MaxUint256, @@ -669,46 +672,52 @@ describe('SDK - RuleBuilder', () => { op(VM.Opcodes.ANY, 2), // currency2 price rule1 op(VM.Opcodes.STACK, 4), - // default prices + // currency1 default quantity and price op(VM.Opcodes.CONSTANT, 11), op(VM.Opcodes.CONSTANT, 12), + // currency2 default quantity and price + op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.CONSTANT, 14), // currency1 quantities op(VM.Opcodes.STACK, 0), op(VM.Opcodes.CONTEXT, 1), - op(VM.Opcodes.MUL, 2), + op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.STACK, 2), op(VM.Opcodes.CONTEXT, 1), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 13), + op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 6), op(VM.Opcodes.MAX, 3), // currency1 prices op(VM.Opcodes.STACK, 1), - op(VM.Opcodes.CONSTANT, 14), - op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.CONSTANT, 15), + op(VM.Opcodes.STACK, 7), op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.STACK, 3), - op(VM.Opcodes.CONSTANT, 15), - op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.CONSTANT, 16), + op(VM.Opcodes.STACK, 7), op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.STACK, 6), + op(VM.Opcodes.STACK, 7), op(VM.Opcodes.MIN, 3), // currency1 prices global modifier - op(VM.Opcodes.CONSTANT, 16), + op(VM.Opcodes.CONSTANT, 17), op(VM.Opcodes.CONTEXT, 0), op(VM.Opcodes.ITIERV2_REPORT), - op(VM.Opcodes.CONSTANT, 17), - op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 18), + op(VM.Opcodes.LESS_THAN), op(VM.Opcodes.CONSTANT, 19), + op(VM.Opcodes.CONSTANT, 20), op(VM.Opcodes.EAGER_IF), op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 19), + op(VM.Opcodes.CONSTANT, 20), op(VM.Opcodes.DIV, 2), // currency2 quantities op(VM.Opcodes.STACK, 4), op(VM.Opcodes.CONTEXT, 1), - op(VM.Opcodes.MUL, 2), - op(VM.Opcodes.CONSTANT, 20), + op(VM.Opcodes.STACK, 8), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 8), op(VM.Opcodes.MAX, 2), // currency2 quantitty global modifier op(VM.Opcodes.CONSTANT, 21), @@ -725,9 +734,9 @@ describe('SDK - RuleBuilder', () => { // currency2 prices op(VM.Opcodes.STACK, 5), op(VM.Opcodes.CONSTANT, 25), - op(VM.Opcodes.STACK, 7), - op(VM.Opcodes.EAGER_IF,), - op(VM.Opcodes.STACK, 7), + op(VM.Opcodes.STACK, 9), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.STACK, 9), op(VM.Opcodes.MIN, 2), // currency2 prices global modifier op(VM.Opcodes.CONSTANT, 26), From 1f75fd8f1c1b24405f722a2938c297153b2f2c92 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 26 Aug 2022 18:23:33 +0000 Subject: [PATCH 103/125] fix RuleBuilder eval --- src/contracts/orderBook.ts | 1 - src/rule-builder/ruleBuilder.ts | 5 ++--- test/7_Orderbook.test.ts | 27 ++++++++++----------------- 3 files changed, 12 insertions(+), 21 deletions(-) diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index bcf8f95..b88aed2 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -214,7 +214,6 @@ export type IOConfig = { token: string; vaultId: BigNumberish }; export type OrderConfig = { validInputs: IOConfig[]; validOutputs: IOConfig[]; - tracking: BigNumberish; vmStateConfig: StateConfig; }; diff --git a/src/rule-builder/ruleBuilder.ts b/src/rule-builder/ruleBuilder.ts index be809bc..44279a5 100644 --- a/src/rule-builder/ruleBuilder.ts +++ b/src/rule-builder/ruleBuilder.ts @@ -511,12 +511,11 @@ export class RuleBuilder { } let eCurrencyObj: eCurrency[] = []; - let q_: BigNumber[] = []; - let p_: BigNumber[] = []; - for (let i = 0; i < currencies.length; i++) { let eRules: eRule[] = []; let temp: BigNumber[]; + let q_: BigNumber[] = []; + let p_: BigNumber[] = []; temp = await ( new RainJSVM( diff --git a/test/7_Orderbook.test.ts b/test/7_Orderbook.test.ts index de148cd..5ad4074 100644 --- a/test/7_Orderbook.test.ts +++ b/test/7_Orderbook.test.ts @@ -79,7 +79,6 @@ describe('SDK - OrderBook', async function () { token: tokenB.address, vaultId: aliceOutputVault, }], - tracking: "0x00", vmStateConfig: { sources: [askSource], constants: askConstants, @@ -118,7 +117,6 @@ describe('SDK - OrderBook', async function () { token: tokenA.address, vaultId: bobOutputVault, }], - tracking: "0x00", vmStateConfig: { sources: [bidSource], constants: bidConstants, @@ -236,7 +234,6 @@ describe('SDK - OrderBook', async function () { token: tokenB.address, vaultId: aliceOutputVault, }], - tracking: "0x00", vmStateConfig: { sources: [askSource], constants: askConstants, @@ -372,18 +369,16 @@ describe('SDK - OrderBook', async function () { vAskOutputMax, vAskPrice, ]); + const askOrderConfig: OrderConfig = { validInputs: [{ - token: tokenA.address, - vaultId: aliceInputVault, + token: tokenA.address, + vaultId: aliceInputVault, }], validOutputs: [{ - token: tokenB.address, - vaultId: aliceOutputVault, + token: tokenB.address, + vaultId: aliceOutputVault, }], - - - tracking: "0x00", vmStateConfig: { sources: [askSource], constants: askConstants, @@ -414,18 +409,16 @@ describe('SDK - OrderBook', async function () { vBidOutputMax, vBidPrice, ]); + const bidOrderConfig: OrderConfig = { validInputs: [{ - token: tokenB.address, - vaultId: bobInputVault, + token: tokenB.address, + vaultId: bobInputVault, }], validOutputs: [{ - token: tokenA.address, - vaultId: bobOutputVault, + token: tokenA.address, + vaultId: bobOutputVault, }], - - - tracking: "0x00", vmStateConfig: { sources: [bidSource], constants: bidConstants, From b94f8ae6b96d26bc1238b5a8b498c32aedd597b1 Mon Sep 17 00:00:00 2001 From: NanezX Date: Thu, 1 Sep 2022 21:07:16 -0400 Subject: [PATCH 104/125] fix super call issue when built --- src/classes/iTierV2.ts | 2 -- src/contracts/autoApprove.ts | 2 -- src/contracts/emissionsERC20.ts | 2 -- src/contracts/generics/seedDance.ts | 2 -- src/contracts/noticeBoard.ts | 1 - src/contracts/orderBook.ts | 2 -- src/contracts/redeemableERC20.ts | 1 - src/contracts/redeemableERC20ClaimEscrow.ts | 2 -- src/contracts/sale.ts | 2 -- src/contracts/stake.ts | 2 -- src/contracts/tiers/combineTier.ts | 3 +-- src/contracts/tiers/verifyTier.ts | 3 +-- src/contracts/verify.ts | 2 -- 13 files changed, 2 insertions(+), 24 deletions(-) diff --git a/src/classes/iTierV2.ts b/src/classes/iTierV2.ts index 7c09e2a..1e3e6df 100644 --- a/src/classes/iTierV2.ts +++ b/src/classes/iTierV2.ts @@ -79,8 +79,6 @@ export class ITierV2 extends FactoryContract { * @returns A new instance of ITierV2 contract from the address with Signer */ constructor(address: string, signer: Signer) { - ITierV2.checkAddress(address); - super(address, signer); const _iTierV2 = ITierV2__factory.connect(address, signer); diff --git a/src/contracts/autoApprove.ts b/src/contracts/autoApprove.ts index a82e0b6..012fa51 100644 --- a/src/contracts/autoApprove.ts +++ b/src/contracts/autoApprove.ts @@ -50,8 +50,6 @@ export class AutoApprove extends FactoryContract { * */ constructor(address: string, signer: Signer) { - AutoApprove.checkAddress(address); - super(address, signer); const _autoApprove = AutoApprove__factory.connect(address, signer); diff --git a/src/contracts/emissionsERC20.ts b/src/contracts/emissionsERC20.ts index a575b51..fbaf071 100644 --- a/src/contracts/emissionsERC20.ts +++ b/src/contracts/emissionsERC20.ts @@ -77,8 +77,6 @@ export class EmissionsERC20 extends ITierV2 { * */ constructor(address: string, signer: Signer) { - EmissionsERC20.checkAddress(address); - super(address, signer); const _emission = EmissionsERC20__factory.connect(address, signer); diff --git a/src/contracts/generics/seedDance.ts b/src/contracts/generics/seedDance.ts index 8899da8..c0954d9 100644 --- a/src/contracts/generics/seedDance.ts +++ b/src/contracts/generics/seedDance.ts @@ -35,8 +35,6 @@ export class SeedDance extends RainContract { * @returns A new SeedDance instance */ constructor(address: string, signer: Signer) { - SeedDance.checkAddress(address); - super(address, signer); const _seedDance = SeedDance__factory.connect(address, signer); diff --git a/src/contracts/noticeBoard.ts b/src/contracts/noticeBoard.ts index 651f909..a90ded2 100644 --- a/src/contracts/noticeBoard.ts +++ b/src/contracts/noticeBoard.ts @@ -46,7 +46,6 @@ export class NoticeBoard extends RainContract { * */ constructor(address: string, signer: Signer) { - NoticeBoard.checkAddress(address); super(address, signer); const _noticeBoard = NoticeBoard__factory.connect(address, signer); this.createNotices = _noticeBoard.createNotices; diff --git a/src/contracts/orderBook.ts b/src/contracts/orderBook.ts index b88aed2..84ab5a9 100644 --- a/src/contracts/orderBook.ts +++ b/src/contracts/orderBook.ts @@ -58,8 +58,6 @@ export class OrderBook extends RainContract { * @returns A new OrderBook instance */ constructor(address: string, signer: Signer) { - OrderBook.checkAddress(address); - super(address, signer); const _orderBook = OrderBook__factory.connect(address, signer); diff --git a/src/contracts/redeemableERC20.ts b/src/contracts/redeemableERC20.ts index 49c8637..c80751f 100644 --- a/src/contracts/redeemableERC20.ts +++ b/src/contracts/redeemableERC20.ts @@ -50,7 +50,6 @@ export class RedeemableERC20 extends FactoryContract { * */ constructor(address: string, signer: Signer) { - RedeemableERC20.checkAddress(address); super(address, signer); const _redeemable = RedeemableERC20__factory.connect(address, signer); diff --git a/src/contracts/redeemableERC20ClaimEscrow.ts b/src/contracts/redeemableERC20ClaimEscrow.ts index 6850676..d816d3d 100644 --- a/src/contracts/redeemableERC20ClaimEscrow.ts +++ b/src/contracts/redeemableERC20ClaimEscrow.ts @@ -62,8 +62,6 @@ export class RedeemableERC20ClaimEscrow extends RainContract { tokenAddress: string, signer: Signer ) { - RedeemableERC20ClaimEscrow.checkAddress(address); - super(address, signer); const _claimEsrow = RedeemableERC20ClaimEscrow__factory.connect( address, diff --git a/src/contracts/sale.ts b/src/contracts/sale.ts index 40f40b4..9466a25 100644 --- a/src/contracts/sale.ts +++ b/src/contracts/sale.ts @@ -93,8 +93,6 @@ export class Sale extends FactoryContract { * */ constructor(address: string, signer: Signer) { - Sale.checkAddress(address); - super(address, signer); const _sale = Sale__factory.connect(address, signer); diff --git a/src/contracts/stake.ts b/src/contracts/stake.ts index 899c928..59abdba 100644 --- a/src/contracts/stake.ts +++ b/src/contracts/stake.ts @@ -38,8 +38,6 @@ export class Stake extends ITierV2 { * @returns A new Stake instance */ constructor(address: string, signer: Signer) { - Stake.checkAddress(address); - super(address, signer); const _stake = Stake__factory.connect(address, signer); diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index aa50e79..432a6b2 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -94,10 +94,9 @@ export class CombineTier extends ITierV2 { * @returns A new combineTier instance */ constructor(address: string, signer: Signer) { - CombineTier.checkAddress(address); + super(address, signer); const _combineTier = CombineTier__factory.connect(address, signer); - super(address, signer); this.storageOpcodesRange = _combineTier.storageOpcodesRange; this.packedFunctionPointers = _combineTier.packedFunctionPointers; diff --git a/src/contracts/tiers/verifyTier.ts b/src/contracts/tiers/verifyTier.ts index 2910ab4..ecf724c 100644 --- a/src/contracts/tiers/verifyTier.ts +++ b/src/contracts/tiers/verifyTier.ts @@ -40,9 +40,8 @@ export class VerifyTier extends ITierV2 { * @returns A new VerifyTier instance */ constructor(address: string, signer: Signer) { + super(address, signer); VerifyTier.checkAddress(address); - - super(address, signer); } /** diff --git a/src/contracts/verify.ts b/src/contracts/verify.ts index 839d529..94913ca 100644 --- a/src/contracts/verify.ts +++ b/src/contracts/verify.ts @@ -80,8 +80,6 @@ export class Verify extends FactoryContract { * */ constructor(address: string, signer: Signer) { - Verify.checkAddress(address); - super(address, signer); const _verify = Verify__factory.connect(address, signer); From a083881df903efa50d73a0c2bfc24782a96705e3 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 5 Sep 2022 22:51:42 +0000 Subject: [PATCH 105/125] erc20 balance tier workaround --- package.json | 2 + .../combineTierScriptGenerator.ts | 227 ++++++++++++------ yarn.lock | 7 +- 3 files changed, 164 insertions(+), 72 deletions(-) diff --git a/package.json b/package.json index 8c41343..d814120 100644 --- a/package.json +++ b/package.json @@ -60,12 +60,14 @@ "@types/chai": "^4.2.22", "@types/mocha": "^9.0.0", "@types/node": "^16.11.11", + "@types/timsort": "^0.3.0", "chai": "^4.3.4", "ethereum-waffle": "^3.4.0", "hardhat": "^2.7.0", "husky": "^7.0.4", "size-limit": "^6.0.4", "standardx": "3.0.0", + "timsort": "^0.3.0", "ts-node": "^10.4.0", "tsdx": "^0.14.1", "tslib": "^2.3.1", diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index c4ac636..082ca9f 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -462,77 +462,77 @@ export class BuildReport extends CombineTierGenerator { } }; -/** - * @public - * class to create a the vmStateConfig for CombineTier as BalanceTier. - * this will perform similar to ERC20BalancTier in RainVM version 1.0 - * - */ -export class ERC20BalanceTier extends CombineTierGenerator { - - /** - * Constructor for ERC20BalanceTier vmStateConfig - * - * @param tierValues - an array of 8 values for each tier values - * @param tokenAddress - the ERC20 token address - * @param tokenDecimals - the ERC20 token decimals - */ - constructor ( - public readonly tierValues: (number | string)[], - public readonly tokenAddress: string, - tokenDecimals: number = 18 - ) { - const constants = [ - paddedUInt256( - paddedUInt32(parseUnits(tierValues[7].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[6].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[5].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[4].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[3].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[2].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[1].toString(), tokenDecimals)) + - paddedUInt32(parseUnits(tierValues[0].toString(), tokenDecimals)) - ), - tokenAddress, - paddedUInt256( - paddedUInt32('7') + - paddedUInt32('6') + - paddedUInt32('5') + - paddedUInt32('4') + - paddedUInt32('3') + - paddedUInt32('2') + - paddedUInt32('1') + - paddedUInt32('0') - ), - "0xffffffff", - "0", - "100000000" - ]; - const sources = [ - concat([ - op(VM.Opcodes.CONSTANT, 0), - op(VM.Opcodes.CONSTANT, 2), - op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), - op(VM.Opcodes.ADD, 8), - ]), - concat([ - op(VM.Opcodes.CONSTANT, 1), - op(VM.Opcodes.CONTEXT, 0), - op(VM.Opcodes.IERC20_BALANCE_OF), - op(VM.Opcodes.CONSTANT, 6), - op(VM.Opcodes.LESS_THAN), - op(VM.Opcodes.CONSTANT, 3), - op(VM.Opcodes.CONSTANT, 4), - op(VM.Opcodes.EAGER_IF), - op(VM.Opcodes.CONSTANT, 5), - op(VM.Opcodes.CONSTANT, 7), - op(VM.Opcodes.EXP, 2), - op(VM.Opcodes.MUL, 2), - ]) - ]; - super({constants, sources}, {hasReportForSingleTier: true, delegatedReport: true}); - } -}; +// /** +// * @public +// * class to create a the vmStateConfig for CombineTier as BalanceTier. +// * this will perform similar to ERC20BalanceTier in RainVM version 1.0 +// * +// */ +// export class ERC20BalanceTier extends CombineTierGenerator { + +// /** +// * Constructor for ERC20BalanceTier vmStateConfig +// * +// * @param tierValues - an array of 8 values for each tier values +// * @param tokenAddress - the ERC20 token address +// * @param tokenDecimals - the ERC20 token decimals +// */ +// constructor ( +// public readonly tierValues: (number | string)[], +// public readonly tokenAddress: string, +// tokenDecimals: number = 18 +// ) { +// const constants = [ +// paddedUInt256( +// paddedUInt32(parseUnits(tierValues[7].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[6].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[5].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[4].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[3].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[2].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[1].toString(), tokenDecimals)) + +// paddedUInt32(parseUnits(tierValues[0].toString(), tokenDecimals)) +// ), +// tokenAddress, +// paddedUInt256( +// paddedUInt32('7') + +// paddedUInt32('6') + +// paddedUInt32('5') + +// paddedUInt32('4') + +// paddedUInt32('3') + +// paddedUInt32('2') + +// paddedUInt32('1') + +// paddedUInt32('0') +// ), +// "0xffffffff", +// "0", +// "100000000" +// ]; +// const sources = [ +// concat([ +// op(VM.Opcodes.CONSTANT, 0), +// op(VM.Opcodes.CONSTANT, 2), +// op(VM.Opcodes.ZIPMAP, callSize(1, 3, 1)), +// op(VM.Opcodes.ADD, 8), +// ]), +// concat([ +// op(VM.Opcodes.CONSTANT, 1), +// op(VM.Opcodes.CONTEXT, 0), +// op(VM.Opcodes.IERC20_BALANCE_OF), +// op(VM.Opcodes.CONSTANT, 6), +// op(VM.Opcodes.LESS_THAN), +// op(VM.Opcodes.CONSTANT, 3), +// op(VM.Opcodes.CONSTANT, 4), +// op(VM.Opcodes.EAGER_IF), +// op(VM.Opcodes.CONSTANT, 5), +// op(VM.Opcodes.CONSTANT, 7), +// op(VM.Opcodes.EXP, 2), +// op(VM.Opcodes.MUL, 2), +// ]) +// ]; +// super({constants, sources}, {hasReportForSingleTier: true, delegatedReport: true}); +// } +// }; /** * @public @@ -676,4 +676,89 @@ export class ERC20BalanceTier extends CombineTierGenerator { ]; super({constants, sources}, {hasReportForSingleTier: true, delegatedReport: true}); } +} + +export class ERC20BalanceTier { + // StateConfig Properties of this class + public constants: BigNumberish[]; + public sources: BytesLike[]; + + constructor ( + public readonly tierValues: string[], + public readonly tokenAddress: string + ) { + this.constants = [ + tokenAddress, + ...tierValues, + "0", + "0xffffffff00000000000000000000000000000000000000000000000000000000", + "0xffffffffffffffff000000000000000000000000000000000000000000000000", + "0xffffffffffffffffffffffff0000000000000000000000000000000000000000", + "0xffffffffffffffffffffffffffffffff00000000000000000000000000000000", + "0xffffffffffffffffffffffffffffffffffffffff000000000000000000000000", + "0xffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000", + "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000", + ethers.constants.MaxUint256, + ] + this.sources = [ + concat([ + op(VM.Opcodes.CONSTANT, 0), + op(VM.Opcodes.CONTEXT, 0), + op(VM.Opcodes.IERC20_BALANCE_OF), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 1), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 17), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 2), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 16), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 3), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 15), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 4), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 14), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 5), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 13), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 6), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 12), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 7), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 11), + + op(VM.Opcodes.STACK, 0), + op(VM.Opcodes.CONSTANT, 8), + op(VM.Opcodes.LESS_THAN, 2), + op(VM.Opcodes.CONSTANT, 10), + op(VM.Opcodes.CONSTANT, 9), + op(VM.Opcodes.EAGER_IF), + + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + op(VM.Opcodes.EAGER_IF), + ]), + concat([ + op(VM.Opcodes.CONSTANT, 17), + ]) + ] + } } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index ddce2ed..162b886 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2676,6 +2676,11 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/timsort@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@types/timsort/-/timsort-0.3.0.tgz#f93fd394b89b5119e22e19ae2349f5a85f185d4b" + integrity sha512-SFjNmiiq4uCs9eXvxbaJMa8pnmlepV8dT2p0nCfdRL1h/UU7ZQFsnCLvtXRHTb3rnyILpQz4Kh8JoTqvDdgxYw== + "@types/underscore@*": version "1.11.4" resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.11.4.tgz#62e393f8bc4bd8a06154d110c7d042a93751def3" @@ -12879,7 +12884,7 @@ timed-out@^4.0.0, timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA== -timsort@~0.3.0: +timsort@^0.3.0, timsort@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A== From 690704a33fa5a6f118cf4b9e86147561bba8cf3b Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 5 Sep 2022 23:01:16 +0000 Subject: [PATCH 106/125] Update combineTierScriptGenerator.ts --- src/contracts/script-generators/combineTierScriptGenerator.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index 082ca9f..a5b1c7b 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -10,8 +10,7 @@ import { paddedUInt32, paddedUInt256, selectLteLogic, - selectLteMode, - parseUnits, + selectLteMode } from '../../utils'; /** From 4e43f554b13e0c3615b0fb1a811e719da1338574 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 5 Sep 2022 23:09:21 +0000 Subject: [PATCH 107/125] debug --- src/contracts/script-generators/combineTierScriptGenerator.ts | 2 +- src/contracts/tiers/combineTier.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index a5b1c7b..b77b9b4 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -683,7 +683,7 @@ export class ERC20BalanceTier { public sources: BytesLike[]; constructor ( - public readonly tierValues: string[], + public readonly tierValues: (number | string)[], public readonly tokenAddress: string ) { this.constants = [ diff --git a/src/contracts/tiers/combineTier.ts b/src/contracts/tiers/combineTier.ts index 432a6b2..0d274d6 100644 --- a/src/contracts/tiers/combineTier.ts +++ b/src/contracts/tiers/combineTier.ts @@ -236,7 +236,7 @@ export class CombineTier extends ITierV2 { RainContract.checkAddress(address); if (type === "erc20") { - _balanceTierConfig = new ERC20BalanceTier(levels, address, erc20Decimals) + _balanceTierConfig = new ERC20BalanceTier(levels, address) } if (type === "erc721") { _balanceTierConfig = new ERC721BalanceTier(levels, address) From 9b76aa31737cf08a3fe3385fbe84680ff5fa135d Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 19 Sep 2022 21:09:13 +0000 Subject: [PATCH 108/125] Parser Rain Parser --- docs/classes/erc20balancetier.md | 35 +- .../{humanfriendlyread.md => formatter.md} | 20 +- docs/classes/parser.md | 183 +++ docs/index.md | 9 +- docs/interfaces/iopmeta.md | 30 +- .../utils/variables/maptorecord_1.md | 4 +- docs/types/config.md | 1 + docs/types/error_2.md | 12 + docs/types/orderconfig.md | 1 - docs/types/parsestack.md | 15 + docs/types/parsetree.md | 22 + docs/types/state.md | 26 + .../combineTierScriptGenerator.ts | 6 + src/index.ts | 5 +- src/jsvm/ops/math/logic/OpAny.ts | 2 +- src/jsvm/ops/math/logic/OpEvery.ts | 5 +- src/utils.ts | 8 +- src/vm/OpMeta.ts | 60 +- src/vm/{HumanFreindlyRead.ts => formatter.ts} | 61 +- src/vm/parser.ts | 1308 +++++++++++++++++ ...manFriendlyRead.test.ts => 9_Formatter.ts} | 120 +- 21 files changed, 1801 insertions(+), 132 deletions(-) rename docs/classes/{humanfriendlyread.md => formatter.md} (71%) create mode 100644 docs/classes/parser.md create mode 100644 docs/types/error_2.md create mode 100644 docs/types/parsestack.md create mode 100644 docs/types/parsetree.md create mode 100644 docs/types/state.md rename src/vm/{HumanFreindlyRead.ts => formatter.ts} (87%) create mode 100644 src/vm/parser.ts rename test/{9_HumanFriendlyRead.test.ts => 9_Formatter.ts} (93%) diff --git a/docs/classes/erc20balancetier.md b/docs/classes/erc20balancetier.md index 2399f43..61be611 100644 --- a/docs/classes/erc20balancetier.md +++ b/docs/classes/erc20balancetier.md @@ -1,33 +1,44 @@ # Class ERC20BalanceTier -class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalancTier in RainVM version 1.0 +class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalanceTier in RainVM version 1.0 Signature: ```typescript -class ERC20BalanceTier extends CombineTierGenerator +class ERC20BalanceTier ``` ## Properties | Property | Type | Description | | --- | --- | --- | -| [constants](./combinetiergenerator.md#constants-property) | `BigNumberish[]` | *Inherited from [CombineTierGenerator.constants](./combinetiergenerator.md#constants-property)* | -| [sources](./combinetiergenerator.md#sources-property) | `BytesLike[]` | *Inherited from [CombineTierGenerator.sources](./combinetiergenerator.md#sources-property)* | +| [constants](./erc20balancetier.md#constants-property) | `BigNumberish[]` | | +| [sources](./erc20balancetier.md#sources-property) | `BytesLike[]` | | | [tierValues](./erc20balancetier.md#tierValues-property) | `(number \| string)[]` | | | [tokenAddress](./erc20balancetier.md#tokenAddress-property) | `string` | | -## Methods +## Property Details -| Method | Description | -| --- | --- | -| [combineWith(reporter, logic, mode, hasReportForSingleTier, delegatedReport, number)](./combinetiergenerator.md#combineWith-method-1) | Combines 2 tier report with selectLte with its logic and mode, and can be chained for multiple reports each with their own logic and mode

*Inherited from [CombineTierGenerator.combineWith()](./combinetiergenerator.md#combineWith-method-1)* | -| [differenceFrom(reporter, delegatedReport)](./combinetiergenerator.md#differenceFrom-method-1) | Saturating difference between 2 reports

*Inherited from [CombineTierGenerator.differenceFrom()](./combinetiergenerator.md#differenceFrom-method-1)* | -| [isTierHeldFor(duration)](./combinetiergenerator.md#isTierHeldFor-method-1) | Creats a holding time ALWAYS/NEVER tier script for a Combinetier contract out of a Stake contract.

*Inherited from [CombineTierGenerator.isTierHeldFor()](./combinetiergenerator.md#isTierHeldFor-method-1)* | -| [updateReport(startTier, endTier, number)](./combinetiergenerator.md#updateReport-method-1) | Method to update a report at given tier range (can be any range between 0 to 8)

*Inherited from [CombineTierGenerator.updateReport()](./combinetiergenerator.md#updateReport-method-1)* | + -## Property Details +### constants + +Signature: + +```typescript +constants: BigNumberish[]; +``` + + + +### sources + +Signature: + +```typescript +sources: BytesLike[]; +``` diff --git a/docs/classes/humanfriendlyread.md b/docs/classes/formatter.md similarity index 71% rename from docs/classes/humanfriendlyread.md rename to docs/classes/formatter.md index a55494f..308fd72 100644 --- a/docs/classes/humanfriendlyread.md +++ b/docs/classes/formatter.md @@ -1,5 +1,5 @@ -# Class HumanFriendlyRead +# Class Formatter The generator of human friendly readable source. @@ -10,16 +10,16 @@ If you find an issue or you want to propose a better way to show a specific scri Signature: ```typescript -class HumanFriendlyRead +class Formatter ``` ## Static Methods | Method | Description | | --- | --- | -| [get(\_state, \_config)](./humanfriendlyread.md#get-method-static-1) | Obtain the friendly output from an StateConfig/script. | -| [prettify(\_text, \_config)](./humanfriendlyread.md#prettify-method-static-1) | Make the output from the HumanFriendly Source more readable by adding indenting following the parenthesis | -| [set(opmeta)](./humanfriendlyread.md#set-method-static-1) | Method to set the opMeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the HumanFriendlyRead | +| [get(\_state, \_config)](./formatter.md#get-method-static-1) | Obtain the friendly output from an StateConfig/script. | +| [prettify(\_text, \_config)](./formatter.md#prettify-method-static-1) | Make the output from the HumanFriendly Source more readable by adding indenting following the parenthesis | +| [set(opmeta\_)](./formatter.md#set-method-static-1) | Method to set the opmeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the Formatter | ## Static Method Details @@ -76,23 +76,23 @@ A prettified output -### set(opmeta) +### set(opmeta\_) -Method to set the opMeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the HumanFriendlyRead +Method to set the opmeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the Formatter Signature: ```typescript -static set(opmeta: typeof OpMeta): any; +static set(opmeta_: typeof OpMeta): Formatter; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| opmeta | `typeof OpMeta` | The OpMeta map object | +| opmeta\_ | `typeof OpMeta` | The OpMeta map object | Returns: -`any` +`Formatter` diff --git a/docs/classes/parser.md b/docs/classes/parser.md new file mode 100644 index 0000000..aa00ba1 --- /dev/null +++ b/docs/classes/parser.md @@ -0,0 +1,183 @@ + +# Class Parser + +Parser is a mini compiler to generate a valid StateConfig (deployable bytes) from a text script + +Signature: + +```typescript +class Parser +``` + +## Example + + +```typescript +// to import +import { Parser } from "rain-sdk"; + +// to set the custom opmeta +Parser.set(OpMeta) + +// to execute the parsing and get parse tree object and StateConfig +let parseTree; +let stateConfig +[ parseTree, stateConfig ] = Parser.get(textScript, customOpMeta, customMultiOutputPlaceholderChar); + +// to get only parse tree object +let parseTree = Parser.getParseTree(textScript, customOpMeta, customMultiOutputPlaceholderChar); + +// to get only StateConfig +let stateConfig = Parser.getStateConfig(textScript, customOpMeta, customMultiOutputPlaceholderChar); + +``` + +## Static Properties + +| Property | Type | Description | +| --- | --- | --- | +| [constants](./parser.md#constants-property-static) | `BigNumberish[]` | | +| [parseTree](./parser.md#parseTree-property-static) |
Record
| | +| [sources](./parser.md#sources-property-static) | `BytesLike[]` | | + +## Static Methods + +| Method | Description | +| --- | --- | +| [get(script, opmeta, placeholderChar)](./parser.md#get-method-static-1) | Method to get parse tree object and StateConfig | +| [getParseTree(script, opmeta, placeholderChar)](./parser.md#getParseTree-method-static-1) | Method to get the parse tree object | +| [getStateConfig(script, opmeta, placeholderChar)](./parser.md#getStateConfig-method-static-1) | Method to get the StateConfig | + +## Static Property Details + + + +### constants + +Signature: + +```typescript +static constants: BigNumberish[]; +``` + + + +### parseTree + +Signature: + +```typescript +static parseTree: Record; +``` + + + +### sources + +Signature: + +```typescript +static sources: BytesLike[]; +``` + +## Static Method Details + + + +### get(script, opmeta, placeholderChar) + +Method to get parse tree object and StateConfig + +Signature: + +```typescript +static get(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): [ + Record, + StateConfig + ]; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| script | `string` | the text script | +| opmeta | `typeof OpMeta` | (optional) custom opmeta | +| placeholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | + +Returns: + +`[ + Record, + StateConfig + ]` + +Array of parse tree object and StateConfig + + + +### getParseTree(script, opmeta, placeholderChar) + +Method to get the parse tree object + +Signature: + +```typescript +static getParseTree(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): Record; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| script | `string` | the text script | +| opmeta | `typeof OpMeta` | (optional) custom opmeta | +| placeholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | + +Returns: + +`Record` + +A parse tree object + + + +### getStateConfig(script, opmeta, placeholderChar) + +Method to get the StateConfig + +Signature: + +```typescript +static getStateConfig(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| script | `string` | the text script | +| opmeta | `typeof OpMeta` | (optional) custom opmeta | +| placeholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | + +Returns: + +`StateConfig` + +A StateConfig + diff --git a/docs/index.md b/docs/index.md index 78777d8..43a7fcb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -21,12 +21,12 @@ | [ERC1155](./classes/erc1155.md) | A generic ERC1155 interface to get connected to any ERC1155 address and make transactions. | | [ERC1155BalanceTier](./classes/erc1155balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC1155BalancTier witha certain toke ID | | [ERC20](./classes/erc20.md) | A generic ERC20 interface to get connected to any ERC20 address and make transactions. | -| [ERC20BalanceTier](./classes/erc20balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalancTier in RainVM version 1.0 | +| [ERC20BalanceTier](./classes/erc20balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC20BalanceTier in RainVM version 1.0 | | [ERC721](./classes/erc721.md) | A generic ERC721 interface to get connected to any ERC721 address and make transactions. | | [ERC721BalanceTier](./classes/erc721balancetier.md) | class to create a the vmStateConfig for CombineTier as BalanceTier. this will perform similar to ERC721BalancTier in RainVM version 1.0 | | [FactoryContract](./classes/factorycontract.md) | All contract factory should use this instead of directly Rain contract to take advantage of specific method to factories | | [FixedPrice](./classes/fixedprice.md) | - A sub-class of PriceCurve for creating a Fixed Price sale type. The price is a constant value over the span of the sale. | -| [HumanFriendlyRead](./classes/humanfriendlyread.md) | The generator of human friendly readable source. | +| [Formatter](./classes/formatter.md) | The generator of human friendly readable source. | | [IncDecPrice](./classes/incdecprice.md) | - A sub-class of PriceCurve for creating an linear Increasing or Decreasing sale type. | | [ITierV2](./classes/itierv2.md) | Class to interact with any Rain Tier contract i.e ITierV2 contracts | | [LinearEmissions](./classes/linearemissions.md) | A linear minting emissions over a period of time. holding more before claiming would result in a more reward. | @@ -34,6 +34,7 @@ | [NoticeBoard](./classes/noticeboard.md) | A class for calling method on a NoticeBoard. | | [OrderBook](./classes/orderbook.md) | A class for calling method on a Rain OrderBook contract. | | [OrderbookSimulation](./classes/orderbooksimulation.md) | A class for creating a simulation environment for simulating a Orderbook contract off-chain using JSVM. or to be used to perform off-chain matchmaking based on. | +| [Parser](./classes/parser.md) | Parser is a mini compiler to generate a valid StateConfig (deployable bytes) from a text script | | [PriceCurve](./classes/pricecurve.md) | - PriceCurve is an class that all the other sale types (sub-classes) will inherit from. | | [RainContract](./classes/raincontract.md) | //TODO: Add doc | | [RainJSVM](./classes/rainjsvm.md) | - The javascript version of the RainVM, basically does the same job RainVM does but off-chain. | @@ -211,6 +212,7 @@ | [eConditionGroup](./types/econditiongroup.md) | Type of a evaluated ConditionGroup with JSVM, which is the same as ConditionGroup with a result property | | [eCurrency](./types/ecurrency.md) | Type of a evaluated Currency with JSVM, which is the same as Currency with a result property | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | +| [Error\_2](./types/error_2.md) | | | [eRule](./types/erule.md) | Type of a evaluated Rule with JSVM, which is the same as Rule with a result property | | [EvidenceConfig](./types/evidenceconfig.md) | | | [Filter](./types/filter.md) | A filtering utility type for ArgsTypeBook | @@ -224,12 +226,15 @@ | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | +| [ParseStack](./types/parsestack.md) | | +| [ParseTree](./types/parsetree.md) | | | [PrettifyConfig](./types/prettifyconfig.md) | Specifies the configuration of the Prettify method. | | [Price](./types/price.md) | Price type | | [Quantity](./types/quantity.md) | Quantity type | | [Rule](./types/rule.md) | A single Rule block, i.e. an if/then block that contains conditions of prices and quantities and its actions which are price and quantity | | [sIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | +| [State](./types/state.md) | | | [Struct](./types/struct.md) | The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | | [TimeBoundConfig](./types/timeboundconfig.md) | | diff --git a/docs/interfaces/iopmeta.md b/docs/interfaces/iopmeta.md index afe7ac0..50ec8de 100644 --- a/docs/interfaces/iopmeta.md +++ b/docs/interfaces/iopmeta.md @@ -17,9 +17,11 @@ interface IOpMeta extends Record | Property | Type | Description | | --- | --- | --- | -| [alias](./iopmeta.md#alias-property) | `string` | | +| [aliases](./iopmeta.md#aliases-property) | `string[]` | | +| [data](./iopmeta.md#data-property) | `any` | | | [description](./iopmeta.md#description-property) | `string` | | | [enum](./iopmeta.md#enum-property) | `number` | | +| [isZeroOperand](./iopmeta.md#isZeroOperand-property) | `boolean` | | | [jsvmfn](./iopmeta.md#jsvmfn-property) | [OpJSVM](./opjsvm.md) | | | [name](./iopmeta.md#name-property) | `string` | | | [pops](./iopmeta.md#pops-property) | `(opcode: number, operand: number) => number` | | @@ -27,14 +29,24 @@ interface IOpMeta extends Record ## Property Details - + -### alias +### aliases Signature: ```typescript -alias?: string; +aliases?: string[]; +``` + + + +### data + +Signature: + +```typescript +data?: any; ``` @@ -57,6 +69,16 @@ description?: string; enum: number; ``` + + +### isZeroOperand + +Signature: + +```typescript +isZeroOperand: boolean; +``` + ### jsvmfn diff --git a/docs/namespaces/utils/variables/maptorecord_1.md b/docs/namespaces/utils/variables/maptorecord_1.md index 1cc32d7..de29abe 100644 --- a/docs/namespaces/utils/variables/maptorecord_1.md +++ b/docs/namespaces/utils/variables/maptorecord_1.md @@ -6,7 +6,7 @@ Conver a Map to a equivelant Record (a key/value pair object). Map keys must be Signature: ```typescript -function mapToRecord(map: Map, properties?: string[]): Record; +function mapToRecord(map: Map, properties?: string[]): Record; ``` ## Parameters @@ -18,7 +18,7 @@ function mapToRecord(map: Map, pr Returns: -`Record` +`Record` a new Record (a key/value pait object) diff --git a/docs/types/config.md b/docs/types/config.md index a45b754..eb568f8 100644 --- a/docs/types/config.md +++ b/docs/types/config.md @@ -12,5 +12,6 @@ type Config = { contextEnums?: string[]; tags?: string[]; enableTagging?: boolean; + opmeta?: typeof OpMeta; }; ``` diff --git a/docs/types/error_2.md b/docs/types/error_2.md new file mode 100644 index 0000000..9db2bb3 --- /dev/null +++ b/docs/types/error_2.md @@ -0,0 +1,12 @@ + +# Type Error\_2 + + +Signature: + +```typescript +type Error = { + error: string; + position: number[]; +}; +``` diff --git a/docs/types/orderconfig.md b/docs/types/orderconfig.md index 7e32222..0850cd9 100644 --- a/docs/types/orderconfig.md +++ b/docs/types/orderconfig.md @@ -9,7 +9,6 @@ A type for an order configuration without any specific owner type OrderConfig = { validInputs: IOConfig[]; validOutputs: IOConfig[]; - tracking: BigNumberish; vmStateConfig: StateConfig; }; ``` diff --git a/docs/types/parsestack.md b/docs/types/parsestack.md new file mode 100644 index 0000000..f033996 --- /dev/null +++ b/docs/types/parsestack.md @@ -0,0 +1,15 @@ + +# Type ParseStack + + +Signature: + +```typescript +type ParseStack = "(" | Error | ParseTree | { + op: string; + position: number[]; +} | { + value: BigNumberish; + position: number[]; +}; +``` diff --git a/docs/types/parsetree.md b/docs/types/parsetree.md new file mode 100644 index 0000000..45a2c05 --- /dev/null +++ b/docs/types/parsetree.md @@ -0,0 +1,22 @@ + +# Type ParseTree + + +Signature: + +```typescript +type ParseTree = Error | { + opcode: { + name: string; + position: number[]; + }; + operand: number; + output: number; + parameters: (ParseTree | { + value: BigNumberish; + position: number[]; + })[]; + position: number[]; + data?: any; +}; +``` diff --git a/docs/types/state.md b/docs/types/state.md new file mode 100644 index 0000000..d377bce --- /dev/null +++ b/docs/types/state.md @@ -0,0 +1,26 @@ + +# Type State + + +Signature: + +```typescript +type State = { + parse: { + stack: ParseStack[]; + tree: ParseTree[]; + }; + srcCache: Uint8Array[]; + arguments: { + has: boolean; + offset: number; + count: number; + cache: number[]; + }; + zipmaps: number; + multiOutputCache: (Exclude | { + value: BigNumberish; + position: number[]; + })[]; +}; +``` diff --git a/src/contracts/script-generators/combineTierScriptGenerator.ts b/src/contracts/script-generators/combineTierScriptGenerator.ts index b77b9b4..171561f 100644 --- a/src/contracts/script-generators/combineTierScriptGenerator.ts +++ b/src/contracts/script-generators/combineTierScriptGenerator.ts @@ -677,6 +677,12 @@ export class BuildReport extends CombineTierGenerator { } } +/** + * @public + * class to create a the vmStateConfig for CombineTier as BalanceTier. + * this will perform similar to ERC20BalanceTier in RainVM version 1.0 + * + */ export class ERC20BalanceTier { // StateConfig Properties of this class public constants: BigNumberish[]; diff --git a/src/index.ts b/src/index.ts index 191a223..453047c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -96,5 +96,6 @@ export * from './contracts/generics/erc721'; export * from './contracts/generics/erc1155'; export * from './contracts/generics/seedDance'; -export * from './vm/HumanFreindlyRead'; -export * from './vm/OpMeta'; \ No newline at end of file +export * from './vm/parser'; +export * from './vm/OpMeta'; +export * from './vm/formatter'; \ No newline at end of file diff --git a/src/jsvm/ops/math/logic/OpAny.ts b/src/jsvm/ops/math/logic/OpAny.ts index db37a92..77f9b12 100644 --- a/src/jsvm/ops/math/logic/OpAny.ts +++ b/src/jsvm/ops/math/logic/OpAny.ts @@ -19,7 +19,7 @@ export function OpAny(this: RainJSVM, state: StateJSVM, operand: number, data?: if (_item.gt(0)) { - _check = ethers.constants.One; + _check = _item; break; } else _check = ethers.constants.Zero; diff --git a/src/jsvm/ops/math/logic/OpEvery.ts b/src/jsvm/ops/math/logic/OpEvery.ts index 4e34389..0b1bcce 100644 --- a/src/jsvm/ops/math/logic/OpEvery.ts +++ b/src/jsvm/ops/math/logic/OpEvery.ts @@ -16,13 +16,14 @@ export function OpEvery(this: RainJSVM, state: StateJSVM, operand: number, data? _item = items_.shift(); if (_item !== undefined) { - + if (i === 0) _check = _item; + if (_item.isZero()) { _check = ethers.constants.Zero; break; } - else _check = ethers.constants.One; + // else _check = ethers.constants.One; } else throw new Error('Undefined stack variables'); } diff --git a/src/utils.ts b/src/utils.ts index f4daab4..bcebb41 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -388,10 +388,10 @@ export function extractFromRecord( * @param properties - (optional) properties to pick from the second item of the Map's elements. * @returns a new Record (a key/value pait object) */ -export function mapToRecord( +export function mapToRecord( map: Map, properties?: string[] -): Record { +): Record { let _ret: Record = {}; const Properties = properties ? properties : []; @@ -401,14 +401,14 @@ export function mapToRecord( _ret[key] = value[Properties[0]] } - return _ret as Record; + return _ret as Record; } else { for (const [key, value] of extractFromMap(map, Properties)) { _ret[key] = value; } - return _ret as Record; + return _ret as Record; } } diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 6262db0..218b785 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -112,8 +112,10 @@ export interface IOpMeta extends Record { pushes: (opcode: number, operand: number) => number; pops: (opcode: number, operand: number) => number; jsvmfn: OpJSVM; + isZeroOperand: boolean; description?: string; - alias?: string + aliases?: string[]; + data?: any } /** @@ -127,7 +129,8 @@ export const OpMeta: Map = new Map([ name: 'CONSTANT', description: '', pushes: pnp.one, - pops: pnp.zero, + pops: pnp.zero, + isZeroOperand: false, jsvmfn: function( this: RainJSVM, state: StateJSVM, @@ -146,6 +149,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: false, jsvmfn: function( this: RainJSVM, state: StateJSVM, @@ -164,6 +168,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: false, jsvmfn: function( this: RainJSVM, state: StateJSVM, @@ -182,6 +187,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: false, jsvmfn: async function( this: RainJSVM, state: StateJSVM, @@ -200,6 +206,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.zpush, pops: pnp.derived, + isZeroOperand: false, jsvmfn: async function( this: RainJSVM, state: StateJSVM, @@ -218,6 +225,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.zero, pops: pnp.zero, + isZeroOperand: false, jsvmfn: function( this: RainJSVM, state: StateJSVM, @@ -236,6 +244,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpERC20BalanceOf } ], @@ -247,6 +256,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.one, + isZeroOperand: false, jsvmfn: OpERC20TotalSupply } ], @@ -258,6 +268,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.three, + isZeroOperand: false, jsvmfn: OpERC20SnapshotBalanceOfAt } ], @@ -269,6 +280,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpERC20SnapshotTotalSupplyAt } ], @@ -280,6 +292,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpERC721BalanceOf } ], @@ -291,6 +304,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpERC721OwnerOf } ], @@ -302,6 +316,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.three, + isZeroOperand: false, jsvmfn: OpERC1155BalanceOf } ], @@ -313,6 +328,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.oprnd, pops: pnp.derived, + isZeroOperand: false, jsvmfn: OpERC1155BalanceOfBatch } ], @@ -324,8 +340,9 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: true, jsvmfn: OpBlockNumber, - alias: 'CURRENT_BLOCK' + aliases: ['CURRENT_BLOCK'] } ], [ @@ -336,8 +353,9 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: true, jsvmfn: OpCaller, - alias: 'MSG_SENDER' + aliases: ['MSG_SENDER'] } ], [ @@ -348,8 +366,9 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: true, jsvmfn: OpThisAddress, - alias: 'THIS_ADDRESS' + aliases: ['THIS_ADDRESS'] } ], [ @@ -360,8 +379,9 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.zero, + isZeroOperand: true, jsvmfn: OpTimestamp, - alias: 'CURRENT_TIMESTAMP' + aliases: ['CURRENT_TIMESTAMP'] } ], [ @@ -372,6 +392,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.one, + isZeroOperand: false, jsvmfn: OpScale18 } ], @@ -383,6 +404,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpScale18Div } ], @@ -394,6 +416,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpScale18Mul } ], @@ -405,6 +428,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.one, + isZeroOperand: false, jsvmfn: OpScaleBy } ], @@ -416,6 +440,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.one, + isZeroOperand: false, jsvmfn: OpScaleN } ], @@ -427,6 +452,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpAny } ], @@ -438,6 +464,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.three, + isZeroOperand: true, jsvmfn: OpEagerIf } ], @@ -449,6 +476,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: true, jsvmfn: OpEqualTo } ], @@ -460,6 +488,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpEvery } ], @@ -471,6 +500,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: true, jsvmfn: OpGreaterThan } ], @@ -482,6 +512,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.one, + isZeroOperand: true, jsvmfn: OpIsZero } ], @@ -493,6 +524,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: true, jsvmfn: OpLessThan } ], @@ -504,6 +536,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpSaturatingAdd } ], @@ -515,6 +548,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpSaturatingMul } ], @@ -526,6 +560,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpSaturatingSub } ], @@ -537,6 +572,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpAdd } ], @@ -548,6 +584,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpDiv } ], @@ -559,6 +596,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpExp } ], @@ -570,6 +608,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpMax } ], @@ -581,6 +620,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpMin } ], @@ -592,6 +632,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpMod } ], @@ -603,6 +644,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpMul } ], @@ -614,6 +656,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.oprnd, + isZeroOperand: false, jsvmfn: OpSub } ], @@ -625,6 +668,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.derived, + isZeroOperand: false, jsvmfn: OpITierV2Report } ], @@ -636,6 +680,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.derived, + isZeroOperand: false, jsvmfn: OpITierV2ReportTimesForTier } ], @@ -647,6 +692,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: true, jsvmfn: OpSaturatingDiff } ], @@ -658,6 +704,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.derived, + isZeroOperand: false, jsvmfn: OpSelectLte } ], @@ -669,6 +716,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, + isZeroOperand: false, jsvmfn: OpUpdateTimesForTierRange } ] diff --git a/src/vm/HumanFreindlyRead.ts b/src/vm/formatter.ts similarity index 87% rename from src/vm/HumanFreindlyRead.ts rename to src/vm/formatter.ts index f73874a..9687113 100644 --- a/src/vm/HumanFreindlyRead.ts +++ b/src/vm/formatter.ts @@ -30,6 +30,10 @@ export type Config = { * True if the result needs to be tagged and optimized for the RuleBuilder script generator */ enableTagging?: boolean; + /** + * An opmeta object to be used for creating the human friendly read + */ + opmeta?: typeof OpMeta; }; /** @@ -59,19 +63,20 @@ export type PrettifyConfig = { * If you find an issue or you want to propose a better way to show a specific script or opcodes, please * feel to do it on: https://github.com/beehive-innovation/rain-sdk/issues */ -export class HumanFriendlyRead { +export class Formatter { - private static _pretty: boolean; - private static opMeta: IOpMeta[] = Array.from(OpMeta.values()); + private static pretty: boolean; + private static opmeta: IOpMeta[] = Array.from(OpMeta.values()); /** * @public - * Method to set the opMeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the HumanFriendlyRead + * Method to set the opmeta with more than AllStandardOps opcodes or with other name/aliases for this instance of the Formatter * - * @param opmeta - The OpMeta map object + * @param opmeta_ - The OpMeta map object */ - public static set(opmeta: typeof OpMeta): any { - this.opMeta = Array.from(opmeta.values()); + public static set(opmeta_: typeof OpMeta): Formatter { + this.opmeta = Array.from(opmeta_.values()); + return this; } /** @@ -87,10 +92,14 @@ export class HumanFriendlyRead { storageEnums: undefined, contextEnums: undefined, tags: undefined, - enableTagging: false + enableTagging: false, + opmeta: undefined } ): string { - this._pretty = _config.pretty ? true : false; + if (_config.opmeta) { + this.set(_config.opmeta); + } + this.pretty = _config.pretty ? true : false; let _constants: string[] = []; let _result; @@ -107,7 +116,7 @@ export class HumanFriendlyRead { _config.enableTagging ); - return this._pretty ? this.prettify(_result) : _result; + return this.pretty ? this.prettify(_result) : _result; } /** @@ -249,14 +258,14 @@ export class HumanFriendlyRead { _stack.push( contextEnums && (contextEnums[src[j + 1]] !== undefined || '') ? contextEnums[src[j + 1]] - : this.opMeta[src[j]].name + `[${src[j + 1]}]` + : this.opmeta[src[j]].name + `[${src[j + 1]}]` ) } else if (src[j] === AllStandardOps.STORAGE) { _stack.push( storageEnums && (storageEnums[src[j + 1]] !== undefined || '') ? storageEnums[src[j + 1]] - : this.opMeta[src[j]].name + `[${src[j + 1]}]` + : this.opmeta[src[j]].name + `[${src[j + 1]}]` ) } else if (src[j] === AllStandardOps.ZIPMAP) { @@ -264,11 +273,11 @@ export class HumanFriendlyRead { let loopSize = 2 ** ((src[j + 1] >> 3) & 3); _zipmapStack[index] = 'function ' - + this.opMeta[src[j]].name + + this.opmeta[src[j]].name + `${index} = ` + `(Loop Size: ${loopSize}, ` + `Arguments: [${ - _stack.splice(-this.opMeta[src[j]] + _stack.splice(-this.opmeta[src[j]] .pops(src[j], src[j + 1])) .join(', ') }]) ` @@ -279,11 +288,11 @@ export class HumanFriendlyRead { } else if (src[j] === AllStandardOps.SELECT_LTE) { _stack.push( - this.opMeta[src[j]].name + + this.opmeta[src[j]].name + `(Logic: ${selectLteLogic[src[j + 1] >> 7]}, ` + `Mode: ${selectLteMode[(src[j + 1] >> 5) & 3]}, ` + `Arguments: [${ - _stack.splice(-this.opMeta[src[j]] + _stack.splice(-this.opmeta[src[j]] .pops(src[j], src[j + 1])) .join(', ') }])` @@ -291,33 +300,33 @@ export class HumanFriendlyRead { } else if (src[j] === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { _stack.push( - this.opMeta[src[j]].name + + this.opmeta[src[j]].name + `(Start Tier: ${src[j + 1] & 15}, End Tier: ${src[j + 1] >> 4}, ` + `Arguments: [${ - _stack.splice(-this.opMeta[src[j]] + _stack.splice(-this.opmeta[src[j]] .pops(src[j], src[j + 1])) .join(', ') }])` ) } else if ( - this.opMeta[src[j]].pops.name === 'zero' && - this.opMeta[src[j]].pushes.name !== 'zero' + this.opmeta[src[j]].pops.name === 'zero' && + this.opmeta[src[j]].pushes.name !== 'zero' ) { - let _alias = this.opMeta[src[j]].alias - _stack.push(_alias ? _alias : this.opMeta[src[j]].name) + let _alias = this.opmeta[src[j]].alias + _stack.push(_alias ? _alias : this.opmeta[src[j]].name) } else { - let _alias = this.opMeta[src[j]].alias + let _alias = this.opmeta[src[j]].alias _stack.push( _alias ? _alias + `(${ - _stack.splice(-this.opMeta[src[j]] + _stack.splice(-this.opmeta[src[j]] .pops(src[j], src[j + 1])) .join(', ') })` - : this.opMeta[src[j]].name + `(${ - _stack.splice(-this.opMeta[src[j]] + : this.opmeta[src[j]].name + `(${ + _stack.splice(-this.opmeta[src[j]] .pops(src[j], src[j + 1])) .join(', ') })` diff --git a/src/vm/parser.ts b/src/vm/parser.ts new file mode 100644 index 0000000..65af1fc --- /dev/null +++ b/src/vm/parser.ts @@ -0,0 +1,1308 @@ +import { OpMeta } from './OpMeta'; +import { BigNumberish, BytesLike } from 'ethers'; +import { AllStandardOps, StateConfig } from '../classes/vm'; +import { callSize, concat, isBigNumberish, mapToRecord, op, selectLte, tierRange } from '../utils'; + +/** + * @public + */ +export type Error = { + error: string, + position: number[] +} + +/** + * @public + */ +export type ParseTree = Error | { + opcode: { + name: string, + position: number[] + }, + operand: number, + output: number, + parameters: ( + ParseTree | + { value: BigNumberish, position: number[] } + )[], + position: number[], + data?: any, +}; + +/** + * @public + */ +export type ParseStack = + | "(" + | Error + | ParseTree + | { op: string, position: number[] } + | { value: BigNumberish, position: number[] }; + +/** + * @public + */ +export type State = { + parse: { + stack: ParseStack[], + tree: ParseTree[] + } + srcCache: Uint8Array[], + arguments: { + has: boolean, + offset: number, + count: number, + cache: number[] + }, + zipmaps: number, + multiOutputCache: ( + Exclude | + { value: BigNumberish, position: number[] } + )[] +} + +/** + * @public + * Parser is a mini compiler to generate a valid StateConfig (deployable bytes) from a text script + * + * @example + * ```typescript + * // to import + * import { Parser } from "rain-sdk"; + * + * // to set the custom opmeta + * Parser.set(OpMeta) + * + * // to execute the parsing and get parse tree object and StateConfig + * let parseTree; + * let stateConfig + * [ parseTree, stateConfig ] = Parser.get(textScript, customOpMeta, customMultiOutputPlaceholderChar); + * + * // to get only parse tree object + * let parseTree = Parser.getParseTree(textScript, customOpMeta, customMultiOutputPlaceholderChar); + * + * // to get only StateConfig + * let stateConfig = Parser.getStateConfig(textScript, customOpMeta, customMultiOutputPlaceholderChar); + * ``` + */ +export class Parser { + // StateConfig Properties of this class + public static constants: BigNumberish[] = []; + public static sources: BytesLike[] = []; + public static parseTree: + Record = {}; + + private static exp: string; + private static input: string; + private static state: State = { + parse: { + stack: [], + tree: [] + }, + srcCache: [], + arguments: { + has: false, + offset: 0, + count: 0, + cache: [] + }, + zipmaps: 0, + multiOutputCache: [] + } + private static placeholder: string = "_" + private static hasError: boolean = false; + private static data: any[] = Object.values(mapToRecord(OpMeta, ["data"])) + private static names: string[] = Object.values(mapToRecord(OpMeta, ["name"])); + private static aliases: string[] = Object.values(mapToRecord(OpMeta, ["aliases"])); + private static pops: ((opcode: number, operand: number) => number)[] = + Object.values(mapToRecord(OpMeta, ["pops"])); + private static zeroOperandOps: string[] = Object.values(mapToRecord(OpMeta, ["isZeroOperand"])); + + /** + * @public + * Method to get parse tree object and StateConfig + * + * @param script - the text script + * @param opmeta - (optional) custom opmeta + * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns Array of parse tree object and StateConfig + */ + public static get(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): [ + Record, + StateConfig + ] { + this.parse(script, opmeta, placeholderChar); + return [ + this.parseTree, + { + constants: this.constants, + sources: this.sources + } + ] + } + + /** + * @public + * Method to get the StateConfig + * + * @param script - the text script + * @param opmeta - (optional) custom opmeta + * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns A StateConfig + */ + public static getStateConfig(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): StateConfig { + this.parse(script, opmeta, placeholderChar); + return { + constants: this.constants, + sources: this.sources + } as StateConfig + } + + /** + * @public + * Method to get the parse tree object + * + * @param script - the text script + * @param opmeta - (optional) custom opmeta + * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns A parse tree object + */ + public static getParseTree(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): Record< + number, + { tree: ParseTree[], position: number[] } + > { + this.parse(script, opmeta, placeholderChar); + return this.parseTree; + } + + private static parse(script: string, opmeta?: typeof OpMeta, placeholderChar?: string) { + this.reset(); + this.parseTree = {}; + this.constants = []; + this.sources = []; + this.state.zipmaps = 0; + this.state.arguments.has = false; + this.state.arguments.count = 0; + this.state.arguments.offset = 0; + this.state.arguments.cache = []; + opmeta ? this.set(opmeta) : this.set(OpMeta); + this.placeholder = placeholderChar ? placeholderChar : "_"; + + let script_ = script; + let offset = 0; + [script, , offset] = this.trim(script); + let expressions: string[] = []; + let positions = [[0, script_.length - 1]]; + + if (script.startsWith("{") && script.indexOf("}") > -1) { + positions = [[ + script_.indexOf("{"), + script_.indexOf("}") + ]] + while (script.startsWith("{") && script.indexOf("}") > -1) { + let tmp = script.slice(0, script.indexOf("}") + 1); + let length = tmp.length - script.length; + + if (length === 0) length = script.length; + + script = script.slice(length); + script = this.trim(script)[0]; + expressions.push(tmp.slice(1, tmp.length - 1)); + + if (script.startsWith("{") && script.indexOf("}") > -1) { + positions.push([ + script_.length - script.length - offset, + script_.length - script.length - offset + script.indexOf("}") + ]) + } + } + } + else expressions.push(script); + + for (let i = 0; i < expressions.length; i++) { + this.reset(); + this.input = expressions[i]; + this.exp = expressions[i]; + this.exp = this.trim(this.exp)[0]; + + while (this.exp.length > 0) { + this.exp = this.trim(this.exp)[0]; + + if (this.exp.startsWith(",")) { + this.exp = this.exp.replace(",", ""); + } + else if (this.exp.startsWith("(")) { + this.exp = this.exp.replace("(", ""); + this.state.parse.stack.push("("); + } + else if (this.exp.startsWith(")")) { + this.exp = this.exp.replace(")", ""); + this.resolveParens(positions[i][0] + 1); + if (!this.hasError) { + try { + this.buildStateConfig( + this.state.parse.stack[ + this.state.parse.stack.length - 1 + ] as ParseTree + ) + } catch (err) { + console.log(err) + } + } + } + else this.consume(positions[i][0] + 1); + + if ( + !this.hasError && !this.state.parse.stack.includes("(") && + this.state.parse.stack.length === 1 && + "value" in (this.state.parse.stack[0] as Exclude) + ) { + try { + this.buildStateConfig( + this.state.parse.stack[ + this.state.parse.stack.length - 1 + ] as ParseTree + ) + } catch (err) { + console.log(err) + } + } + if (this.hasError) { + this.state.srcCache = []; + this.constants = []; + } + if ( + !this.state.parse.stack.includes("(") && + !("op" in (this.state.parse.stack[0] as Exclude)) + ) { + if (this.state.multiOutputCache.length > 0) { + this.state.parse.stack.unshift( + ...this.state.multiOutputCache.splice( + -this.state.multiOutputCache.length + ) as ParseStack[] + ) + } + this.state.parse.tree.push( + ...this.state.parse.stack.splice( + -this.state.parse.stack.length + ) as ParseTree[] + ) + } + } + this.sources.push(concat(this.state.srcCache)) + this.state.srcCache = []; + this.parseTree[i] = { + tree: this.state.parse.tree.splice(-this.state.parse.tree.length), + position: positions[i], + } + } + this.updateArgs(); + } + + private static set(opmeta_: typeof OpMeta) { + this.data = Object.values(mapToRecord(opmeta_, ["data"])); + this.names = Object.values(mapToRecord(opmeta_, ["name"])); + this.aliases = Object.values(mapToRecord(opmeta_, ["aliases"])); + this.pops = Object.values(mapToRecord(opmeta_, ["pops"])); + this.zeroOperandOps = Object.values(mapToRecord(opmeta_, ["isZeroOperand"])); + } + + private static reset = () => { + this.state.parse.tree = []; + this.state.parse.stack = []; + } + + private static findIndex = (str: string): number => { + let indexes = []; + indexes[0] = str.indexOf("("); + indexes[1] = str.indexOf(")"); + indexes[2] = str.indexOf(" "); + if (indexes[0] === -1 && indexes[1] === -1 && indexes[2] === -1) { + return -1; + } + else { + let ret = indexes.filter((v) => v !== -1) + return ret.reduce((a, b) => a <= b ? a : b) + } + } + + private static rmComma = (str_: string): string => { + while (str_.startsWith(",")) str_ = str_.replace(",", ""); + while (str_.endsWith(",")) str_ = str_.slice(0, -1); + return str_; + } + + private static trim = (str: string): [string, number, number] => { + let leadingOffset = 0; + let trailingOffset = 0; + while (str.startsWith(" ") || str.startsWith(",")) { + str = str.slice(1, str.length); + leadingOffset++; + } + while (str.endsWith(" ") || str.endsWith(",")) { + str = str.slice(0, -1); + trailingOffset++; + } + return [str, leadingOffset, trailingOffset]; + } + + private static buildStateConfig = (expBlock: Exclude) => { + let count = 0; + if (!("error" in expBlock)) { + let check = true; + let tmpStack: Uint8Array[] = []; + if ("parameters" in expBlock) { + for (let item of expBlock.parameters) { + if ("error" in item) { + check = false; + break; + } + else if ("opcode" in item) count++; + } + if (check) { + let element: + | Exclude + | { value: BigNumberish, position: number[] } + + let bytesArr_ = count !== 0 ? this.state.srcCache.splice(-count) : []; + if (bytesArr_.length !== count) throw new Error("invalid script: cannot build the StateConfig") + for (let i = 0; i < expBlock.parameters.length; i++) { + element = expBlock.parameters[i] as typeof element; + if ("opcode" in element) { + let src_ = bytesArr_.shift(); + if (src_) { + tmpStack.push(src_) + } + else throw new Error("invalid script: cannot build the StateConfig") + } + if ("value" in element) { + if (isBigNumberish(element.value)) { + if (this.constants.includes(element.value)) { + tmpStack.push( + op(AllStandardOps.CONSTANT, this.constants.indexOf(element.value)) + ); + } + else { + tmpStack.push( + op(AllStandardOps.CONSTANT, this.constants.length) + ); + this.constants.push(element.value); + } + } + else if ((element.value as string).includes("arg")) { + let index = Number( + (element.value as string).replace("arg(", "").slice(0, -1) + ); + if (!this.state.arguments.cache.includes(index)) { + this.state.arguments.cache.push(index) + } + tmpStack.push( + op(this.names.length, this.state.arguments.offset + index) + ); + } + } + } + tmpStack.push(op(this.names.indexOf(expBlock.opcode.name), expBlock.operand)) + } + } + else if ("value" in expBlock) { + if (isBigNumberish(expBlock.value)) { + if (this.constants.includes(expBlock.value)) { + tmpStack.push( + op(AllStandardOps.CONSTANT, this.constants.indexOf(expBlock.value)) + ); + } + else { + tmpStack.push( + op(AllStandardOps.CONSTANT, this.constants.length) + ); + this.constants.push(expBlock.value); + } + } + else if ((expBlock.value as string).includes("arg")) { + let index = Number( + (expBlock.value as string).replace("arg(", "").slice(0, -1) + ); + if (!this.state.arguments.cache.includes(index)) { + this.state.arguments.cache.push(index) + } + tmpStack.push( + op(this.names.length, this.state.arguments.offset + index) + ); + } + } + this.state.srcCache.push(concat(tmpStack)); + } + } + + private static updateArgs = () => { + if (this.state.arguments.has) { + for (let i = 0; i < this.sources.length; i++) { + for (let j = 0; j < this.sources[i].length; j++) { + if (this.sources[i][j] === this.names.length) { + (this.sources[i][j] as number) = 0; + (this.sources[i][j + 1] as number) += this.constants.length; + } + } + } + } + } + + private static resolveOp = (expBlock: ParseTree): ParseTree => { + if ("error" in expBlock) return expBlock; + else { + let op = this.names.indexOf(expBlock.opcode.name); + if (op > -1) { + if ( + op === AllStandardOps.STACK || + op === AllStandardOps.CONTEXT || + op === AllStandardOps.STORAGE + ) { + if ( + expBlock.parameters.length === 1 && + "value" in expBlock.parameters[0] && + Number(expBlock.parameters[0].value) < 256 + ) { + let operand = Number(expBlock.parameters[0].value); + expBlock.parameters = []; + expBlock.operand = operand; + expBlock.output = 1; + } + else if (expBlock.parameters.length !== 1) { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid number of parameters, expected 1 parameter but got ${expBlock.parameters.length}`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + else if ("value" in expBlock.parameters[0] && Number(expBlock.parameters[0].value) > 255) { + expBlock.operand = NaN; + expBlock.parameters[0] = { + error: `${expBlock.opcode.name} parameter (i.e. operand) cannot be bigger than 255`, + position: expBlock.parameters[0].position + } + if (!this.hasError) this.hasError = true; + } + else { + expBlock.operand = NaN; + if (!this.hasError) this.hasError = true; + } + } + else if (op === AllStandardOps.ZIPMAP) { + if (expBlock.parameters.length > 2 && expBlock.parameters.length < 11) { + if ("value" in expBlock.parameters[0] && "value" in expBlock.parameters[1]) { + if (Number(expBlock.parameters[0].value) < 8 && Number(expBlock.parameters[1].value) < 4) { + expBlock.operand = callSize( + Number(expBlock.parameters[0].value), + Number(expBlock.parameters[1].value), + expBlock.parameters.length - 3 + ) + expBlock.output = 2 ** Number(expBlock.parameters[1].value); + for (let i = 0; i < expBlock.output - 1; i++) { + this.state.multiOutputCache.push({ + value: `${expBlock.opcode.name} output ${i + 1} placeholder`, + position: [], + }) + }; + this.state.multiOutputCache.push(expBlock); + if (!this.state.arguments.has) this.state.arguments.has = true; + this.state.arguments.offset = this.state.arguments.count; + this.state.arguments.count += expBlock.parameters.length - 2 + expBlock.parameters.shift(); + expBlock.parameters.shift(); + } + else { + if (!this.hasError) this.hasError = true; + expBlock.operand = NaN; + if (Number(expBlock.parameters[0].value) > 7) { + expBlock.parameters[0] = { + error: "invalid value for ZIPMAP SourceIndex parameter", + position: expBlock.parameters[0].position + } + } + else if (Number(expBlock.parameters[1].value) > 3) { + expBlock.parameters[1] = { + error: "invalid value for ZIPMAP LoopSize parameter", + position: expBlock.parameters[1].position + } + } + else { + expBlock.parameters[0] = { + error: "invalid value for ZIPMAP SourceIndex parameter", + position: expBlock.parameters[0].position + } + expBlock.parameters[1] = { + error: "invalid value for ZIPMAP LoopSize parameter", + position: expBlock.parameters[1].position + } + } + } + } + else { + expBlock.operand = NaN; + if (!this.hasError) this.hasError = true; + } + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid parameters: expected at least 3 and at most 10 parameters, but got ${expBlock.parameters.length}`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (op === AllStandardOps.ITIERV2_REPORT) { + if ( + expBlock.parameters.length === 2 || + expBlock.parameters.length === 3 || + expBlock.parameters.length === 10 + ) { + expBlock.operand = expBlock.parameters.length - 2; + expBlock.output = 1; + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid parameters: expected either 2 or 3 or 10 parameters, but got ${expBlock.parameters.length}`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (op === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { + if ( + expBlock.parameters.length === 3 || + expBlock.parameters.length === 4 || + expBlock.parameters.length === 11 + ) { + expBlock.operand = expBlock.parameters.length - 2; + if (!("value" in expBlock.parameters[2] && Number(expBlock.parameters[2].value) > -1 && Number(expBlock.parameters[2].value) < 9)) { + expBlock.operand = NaN; + expBlock.output = 1; + expBlock.parameters[2] = { + error: "invalid tier level", + position: expBlock.parameters[2].position + }; + if (!this.hasError) this.hasError = true; + } + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid parameters: expected either 3 or 4 or 11 parameters, but got ${expBlock.parameters.length}`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (op === AllStandardOps.SELECT_LTE) { + if (expBlock.parameters.length > 4 && expBlock.parameters.length < 35) { + if ("value" in expBlock.parameters[0] && "value" in expBlock.parameters[1]) { + if (Number(expBlock.parameters[0].value) < 2 && Number(expBlock.parameters[1].value) < 3) { + expBlock.operand = selectLte( + Number(expBlock.parameters[0].value), + Number(expBlock.parameters[0].value), + expBlock.parameters.length - 2 + ); + expBlock.output = 1; + expBlock.parameters.shift(); + expBlock.parameters.shift(); + } + else { + expBlock.operand = NaN; + if (!this.hasError) this.hasError = true; + if (Number(expBlock.parameters[0].value) > 1) { + expBlock.parameters[0] = { + error: "invalid value for SELECT_LTE logic", + position: expBlock.parameters[0].position + } + } + else if (Number(expBlock.parameters[1].value) > 2) { + expBlock.parameters[1] = { + error: "invalid value for SELECT_LTE mode", + position: expBlock.parameters[1].position + } + } + else { + expBlock.parameters[0] = { + error: "invalid value for SELECT_LTE logic", + position: expBlock.parameters[0].position + } + expBlock.parameters[1] = { + error: "invalid value for SELECT_LTE mode", + position: expBlock.parameters[1].position + } + } + } + } + else { + expBlock.operand = NaN; + if (!this.hasError) this.hasError = true; + } + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid parameters: expected at least 4 and at most 34 parameters in total, but got ${expBlock.parameters.length}`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (op === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { + if (expBlock.parameters.length === 4) { + if ("value" in expBlock.parameters[0] && "value" in expBlock.parameters[1]) { + if (Number(expBlock.parameters[0].value) < 9 && Number(expBlock.parameters[1].value) < 9) { + expBlock.operand = tierRange( + Number(expBlock.parameters[0].value), + Number(expBlock.parameters[1].value) + ); + expBlock.output = 1; + expBlock.parameters.shift(); + expBlock.parameters.shift(); + } + else { + expBlock.operand = NaN; + if (!this.hasError) this.hasError = true; + if (Number(expBlock.parameters[0].value) > 8) { + expBlock.parameters[0] = { + error: "invalid value for start tier", + position: expBlock.parameters[0].position + } + } + else if (Number(expBlock.parameters[1].value) > 8) { + expBlock.parameters[1] = { + error: "invalid value for end tier", + position: expBlock.parameters[1].position + } + } + else { + expBlock.parameters[0] = { + error: "invalid value for start tier", + position: expBlock.parameters[0].position + } + expBlock.parameters[1] = { + error: "invalid value for end tier", + position: expBlock.parameters[1].position + } + } + } + } + else { + expBlock.operand = NaN; + if (!this.hasError) this.hasError = true; + } + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid parameters: expected at least 4 parameters in total, but got ${expBlock.parameters.length}`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (op === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { + if (expBlock.parameters.length > 2 && expBlock.parameters.length % 2 === 1) { + expBlock.operand = (expBlock.parameters.length - 1) / 2; + expBlock.output = (expBlock.parameters.length - 1) / 2; + for (let i = 0; i < expBlock.output - 1; i++) { + this.state.multiOutputCache.push({ + value: `${expBlock.opcode.name} output ${i + 1} placeholder`, + position: [], + }) + } + this.state.multiOutputCache.push(expBlock) + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid number of parameters`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (this.pops[op].name !== "oprnd") { + if (this.pops[op](op, 0) === expBlock.parameters.length) { + expBlock.operand = expBlock.parameters.length; + if (this.zeroOperandOps[op]) { + expBlock.operand = 0; + } + expBlock.output = 1; + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `invalid number of parameters`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + } + else if (this.pops[op].name === "oprnd") { + if (this.zeroOperandOps[op]) { + expBlock.operand = 0; + } + expBlock.output = 1; + } + else { + expBlock.operand = NaN; + expBlock.parameters = [{ + error: `unknown`, + position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] + }]; + if (!this.hasError) this.hasError = true; + } + return expBlock; + } + if (!this.hasError) this.hasError = true; + return { + error: "unknown opcode", + position: expBlock.opcode.position + } + } + } + + private static trailingOp(str: string): boolean | string { + if (str.length > 0) { + if (str.startsWith("(") || str.startsWith(")")) return false; + + if (!str.startsWith(" ")) { + let str_ = str.slice(0, this.findIndex(str)); + str_ = this.rmComma(str_); + + if (isBigNumberish(str_)) return false; + if (this.names.includes(str_)) return true + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i] && this.aliases[i].includes(str_)) return true; + } + } + else { + str = this.trim(str)[0]; + if (str.startsWith("(") || str.startsWith(")")) return false; + let index1_ = this.findIndex(str) < 0 + ? str.length + : this.findIndex(str) === 0 + ? 1 + : this.findIndex(str); + + let str1_ = str.slice(0, index1_); + let consumee1_ = str1_; + let isOp1_ = false; + str1_ = this.rmComma(str1_); + + if (str.startsWith("(") || str.startsWith(")")) return false; + if (isBigNumberish(str1_)) return false; + if (this.names.includes(str1_)) isOp1_ = true + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i] && this.aliases[i].includes(str1_)) { + isOp1_ = true; + break; + } + } + str = str.replace(consumee1_, ""); + str = this.trim(str)[0]; + if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { + return "ambiguous expresion"; + } + let index2_ = this.findIndex(str) < 0 + ? str.length + : this.findIndex(str) === 0 + ? 1 + : this.findIndex(str); + + let str2_ = str.slice(0, index2_); + str2_ = this.rmComma(str2_); + + if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { + return "ambiguous expresion"; + } + + if (isOp1_ && isBigNumberish(str2_)) return true; + if (isOp1_ && this.names.includes(str2_)) return true + for (let i = 0; i < this.aliases.length; i++) { + if ( + isOp1_ && this.aliases[i] && + this.aliases[i].includes(str2_) + ) return true; + } + return false; + } + return false; + } + else return false; + } + + private static resolveInfix( + stack: Exclude[], + position: number[] + ): ParseTree { + let infixExp: ParseTree; + let tmp_ = stack[1] as + { op: string, position: number[] } | + { error: string, position: number[] }; + + if ("op" in tmp_) { + infixExp = { + opcode: { + name: tmp_.op, + position: tmp_.position, + }, + operand: 2, + parameters: [ + (stack[0] as Exclude< + ParseStack, + { op: string, position: number[] } | "(" + >), + (stack[2] as Exclude< + ParseStack, + { op: string, position: number[] } | "(" + >) + ], + output: NaN, + position: position, + data: this.data[this.names.indexOf(tmp_.op)] + ? this.data[this.names.indexOf(tmp_.op)] + : undefined + } + if (stack.length > 3) { + for (let i = 3; i < stack.length; i += 2) { + let item = stack[i] as Extract< + ParseStack, + { op: BigNumberish, position: number[] } | + { error: BigNumberish, position: number[] } + >; + if ("op" in item) { + if (item.op === tmp_.op) { + infixExp.parameters.push( + (stack[i + 1] as Exclude< + ParseStack, + { op: string, position: number[] } | "(" + >), + ); + infixExp.opcode.position.push(...item.position); + infixExp.operand++; + } + else { + infixExp = { + error: "invalid indetation", + position: tmp_.position + } + if (!this.hasError) this.hasError = true; + break; + } + } + else { + infixExp = { + error: item.error!, + position: tmp_.position + }; + if (!this.hasError) this.hasError = true; + break; + } + } + } + } + else { + infixExp = { + error: tmp_.error, + position: tmp_.position + }; + if (!this.hasError) this.hasError = true; + } + return infixExp; + } + + private static resolveMutliOutputs = ( + items: Exclude[], + itemsPositions: number[], + positions: { pos: number, count: number, type: number }[] + ): Exclude[] => { + if (positions.length > 0) { + for (let i = 0; i < positions.length; i++) { + if (positions[i].type === 1) { + let item_ = items[positions[i].pos] as Exclude; + if (item_.output !== positions[i].count) { + if (positions[i].pos - positions[i].count + 1 !== 0) { + return [{ + error: "illigal positioning of parameters", + position: itemsPositions + }] + } + else { + let output_ = this.state.multiOutputCache.pop(); + if (output_ && "opcode" in output_) { + for (let j = positions[i].pos - 1; j >= 0; j--) { + let tmp = this.state.multiOutputCache.pop(); + if (tmp) items[j] = tmp; + else return [{ + error: `illigal reach to undefined ${item_.opcode.name} outputs`, + position: itemsPositions + }] + } + } + else return [{ + error: `invalid consumption of previous multioutput opcodes`, + position: itemsPositions + }] + } + } + else { + let output_ = this.state.multiOutputCache.pop(); + if (output_ && "op" in output_) { + for (let j = positions[i].pos - 1; j >= 0; j--) { + let tmp = this.state.multiOutputCache.pop(); + if (tmp) items[j] = tmp; + else return [{ + error: `illigal reach to undefined ${item_.opcode.name} outputs`, + position: itemsPositions + }] + } + } + else return [{ + error: `invalid consumption of previous multioutput opcodes`, + position: itemsPositions + }] + } + } + else { + if (positions[i].pos - positions[i].count + 1 !== 0) { + return [{ + error: "illigal positioning of parameters", + position: itemsPositions + }] + } + else { + let output_ = this.state.multiOutputCache.pop(); + if (output_ && "opcode" in output_) { + return [{ + error: `invalid consumption of previous multioutput opcodes`, + position: itemsPositions + }] + } + else { + for (let j = positions[i].pos - 1; j >= 0; j--) { + let tmp = this.state.multiOutputCache.pop(); + if (tmp) items[j] = tmp; + else return [{ + error: `illigal reach to undefined opcode outputs`, + position: itemsPositions + }] + } + } + } + } + } + return items; + } + else { + return [{ + error: "invalid expression", + position: itemsPositions + }] + } + } + + private static resolveParens(entry: number) { + let isInfix = false; + let isPrefix = false; + let isPostfix = false; + let index_ = this.state.parse.stack.lastIndexOf("("); + let endIndex_ = this.input.length + entry - this.exp.length - 1; + let startIndex_ = + entry + this.input.slice(0, -this.exp.length).lastIndexOf("("); + + if (index_ >= 0) { + let parens_ = this.state.parse.stack.splice( + -(this.state.parse.stack.length - index_) + ) as Exclude[]; + parens_.shift(); + + for (let i = 0; i < parens_.length; i++) { + let tmp = parens_[i]; + if ("op" in tmp) { + if (i !== 0 && i !== parens_.length - 1) isInfix = true; + if (i === 0) isPrefix = true; + if (i === parens_.length - 1) isPostfix = true; + } + } + + let multiOuputOpsPos: { + pos: number, + count: number, + type: number + }[] = []; + let reset = false; + for (let i = parens_.length - 1; i >= 0; i--) { + let tmp = parens_[i]; + if (("output" in tmp && tmp.output > 1)) { + multiOuputOpsPos.push({ pos: i, count: 1, type: 1 }); + reset = true; + } + else if (("value" in tmp && tmp.value === this.placeholder)) { + if (reset) { + multiOuputOpsPos[multiOuputOpsPos.length - 1].count++; + } + else { + multiOuputOpsPos.push({ pos: i, count: 1, type: 0 }) + reset = true; + } + } + else reset = false; + } + + if (multiOuputOpsPos.length > 0) { + parens_ = this.resolveMutliOutputs(parens_, [startIndex_, endIndex_], multiOuputOpsPos); + if ("error" in parens_[0]) this.hasError = true; + } + + if (isPrefix && isPostfix) { + this.state.parse.stack.push({ + error: "invalid notation", + position: [startIndex_, endIndex_] + }); + if (!this.hasError) this.hasError = true; + } + if (isInfix && (isPrefix || isPostfix)) { + this.state.parse.stack.push({ + error: "invalid notation", + position: [startIndex_, endIndex_] + }); + if (!this.hasError) this.hasError = true; + } + + let tmp = this.state.parse.stack[this.state.parse.stack.length - 1]; + if (!isPrefix && !isPostfix && tmp && tmp !== "(" && "op" in tmp) { + this.state.parse.stack.pop(); + this.state.parse.stack.push( + this.resolveOp({ + opcode: { + name: tmp.op, + position: tmp.position + }, + position: [tmp.position[0], endIndex_], + operand: isInfix ? Math.floor(parens_.length / 2) + 1 : parens_.length, + output: NaN, + parameters: isInfix + ? [this.resolveInfix( + parens_ as Exclude[], + [tmp.position[0], endIndex_] + )] + : parens_ as ParseTree[], + data: this.data[this.names.indexOf(tmp.op)] + }) + ) + } + else if (!isPrefix && !isPostfix && this.trailingOp(this.exp)) { + let err = this.trailingOp(this.exp); + this.consume(entry); + let tmp_ = this.state.parse.stack.pop() as { op: string, position: number[] }; + + if (typeof err === "string") { + this.state.parse.stack.push({ + error: err, + position: [startIndex_, tmp_.position[1]], + }); + if (!this.hasError) this.hasError = true; + } + else { + this.state.parse.stack.push( + this.resolveOp({ + opcode: { + name: tmp_.op, + position: tmp_.position + }, + position: [startIndex_, tmp_.position[1]], + operand: isInfix ? Math.floor(parens_.length / 2) + 1 : parens_.length, + output: NaN, + parameters: isInfix + ? [this.resolveInfix( + parens_ as Exclude[], + [startIndex_, tmp_.position[1]] + )] + : parens_ as ParseTree[], + data: this.data[this.names.indexOf(tmp_.op)] + }) + ); + } + } + else if (isPrefix) { + let tmp_ = (parens_.shift() as { + opcode: { + name: string, + position: number[] + } + }).opcode; + this.state.parse.stack.push( + this.resolveOp({ + opcode: tmp_, + position: [startIndex_, endIndex_], + operand: parens_.length, + output: NaN, + parameters: parens_ as ParseTree[], + data: this.data[this.names.indexOf(tmp_.name)] + }) + ); + } + else if (isPostfix) { + let tmp_ = (parens_.shift() as { + opcode: { + name: string, + position: number[] + } + }).opcode + this.state.parse.stack.push( + this.resolveOp({ + opcode: (parens_.pop() as { + opcode: { + name: string, position: number[] + } + }).opcode, + position: [startIndex_, endIndex_], + operand: parens_.length, + output: NaN, + parameters: parens_ as ParseTree[], + data: this.data[this.names.indexOf(tmp_.name)] + }) + ); + } + else if (isInfix) { + if (parens_.length % 2 === 0) { + this.state.parse.stack.push({ + error: "invalid expression: odd number of operators or parameters", + position: [startIndex_, endIndex_] + }); + if (!this.hasError) this.hasError = true; + } + this.state.parse.stack.push( + this.resolveOp( + this.resolveInfix( + parens_ as Exclude[], + [startIndex_, endIndex_] + ) + ) + ); + } + else { + this.state.parse.stack.push({ + error: "invalid notation", + position: [startIndex_, endIndex_] + }); + if (!this.hasError) this.hasError = true; + } + } + else { + this.state.parse.stack.push({ + error: "cannot find the beginning/ending of this expression block", + position: [startIndex_, endIndex_] + }); + if (!this.hasError) this.hasError = true; + } + } + + private static consume(entry: number): void { + this.exp = this.trim(this.exp)[0]; + if (this.exp.length > 0) { + let check_ = true; + let index_ = this.findIndex(this.exp) < 0 + ? this.exp.length + : this.findIndex(this.exp) === 0 + ? 1 + : this.findIndex(this.exp); + + let str_ = this.exp.slice(0, index_); + let consumee_ = str_; + let startPosition = + this.input.length - this.exp.length + entry + consumee_.indexOf(str_); + str_ = this.rmComma(str_); + + if (str_.includes(",")) { + this.state.parse.stack.push( + { + error: `invalid comma: ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + if (!this.hasError) this.hasError = true; + } + else { + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i] && this.aliases[i].includes(str_)) { + this.state.parse.stack.push( + { + op: this.names[i], + position: [startPosition, startPosition + this.names[i].length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + check_ = false; + break; + } + } + if (check_ && this.names.includes(str_)) { + this.state.parse.stack.push( + { + op: str_, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + } + else if (str_ === "arg") { + this.exp = this.exp.replace(consumee_, ""); + let i_ = this.exp.indexOf(")") + 1; + str_ = str_ + this.exp.slice(0, i_); + this.exp = this.exp.slice(i_, this.exp.length); + this.state.parse.stack.push( + { + value: str_, + position: [startPosition, startPosition + str_.length - 1] + } + ); + } + else if (str_ === this.placeholder) { + this.state.parse.stack.push({ + value: this.placeholder, + position: [startPosition, startPosition + str_.length - 1] + }); + this.exp = this.exp.replace(consumee_, ""); + } + else { + if (str_.includes(".")) { + this.state.parse.stack.push( + { + error: `invalid number: float ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + if (!this.hasError) this.hasError = true; + } + else if (isBigNumberish(str_)) { + this.state.parse.stack.push( + { + value: str_, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + } + else { + this.state.parse.stack.push( + { + error: `unknown: ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + if (!this.hasError) this.hasError = true; + }; + } + } + } + } +} diff --git a/test/9_HumanFriendlyRead.test.ts b/test/9_Formatter.ts similarity index 93% rename from test/9_HumanFriendlyRead.test.ts rename to test/9_Formatter.ts index c17798a..edc95cb 100644 --- a/test/9_HumanFriendlyRead.test.ts +++ b/test/9_Formatter.ts @@ -7,7 +7,7 @@ // StateConfig, // SaleStorage, // SaleContext, -// HumanFriendlyRead, +// Formatter, // } from '../src'; // import { arrToReport } from '../src/utils'; // import { @@ -59,7 +59,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.eq(`EXP(${constants[0]}, ${constants[1]})`); // }); @@ -82,7 +82,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.eql(`MUL(${constants[0]}, ${constants[1]})`); // }); @@ -105,7 +105,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SUB(${constants[0]}, ${constants[1]})`); // }); @@ -128,7 +128,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`ADD(${constants[0]}, ${constants[1]})`); // }); @@ -151,7 +151,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); // }); @@ -174,7 +174,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALE_BY(${value1}, ${getSigned8(n)})`); // }); @@ -197,7 +197,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); // }); @@ -220,7 +220,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALEN(${value1}, ${getSigned8(n)})`); // }); @@ -245,7 +245,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALE18_DIV(${value1}*10**18, ${value2})`); // }); @@ -270,7 +270,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALE18_MUL(${value1}*10**18, ${value2})`); // }); @@ -292,7 +292,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.be.equal(`SCALE18(${value})`); // }); @@ -351,7 +351,7 @@ // }; // // 0x/00000001.00000000.00000003.00000000.00000005.00000000.00000007.00000008 -// const friendly0 = HumanFriendlyRead.get(state); +// const friendly0 = Formatter.get(state); // expect(friendly0).to.eq(`ZIPMAP_8( // ["00000001", "00000000", "00000003", "00000000", "00000005", "00000000", "00000007", "00000008"], @@ -381,7 +381,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`ANY(1, 2, 3)`); // // prettier-ignore @@ -396,7 +396,7 @@ // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`ANY(0, 0)`); // // prettier-ignore @@ -412,7 +412,7 @@ // constants, // }; -// const friendly2 = HumanFriendlyRead.get(state2); +// const friendly2 = Formatter.get(state2); // expect(friendly2).to.be.equals(`ANY(0, 0, 3)`); // }); @@ -437,7 +437,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`EVERY(1, 2, 3)`); // // prettier-ignore @@ -453,7 +453,7 @@ // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`EVERY(0, 1, 2)`); // // prettier-ignore @@ -468,7 +468,7 @@ // constants, // }; -// const friendly2 = HumanFriendlyRead.get(state2); +// const friendly2 = Formatter.get(state2); // expect(friendly2).to.be.equals(`EVERY(0, 3)`); // }); @@ -494,7 +494,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`EAGER_IF(1, 2, 3)`); // // prettier-ignore @@ -511,7 +511,7 @@ // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`EAGER_IF(2, 2, 3)`); // // prettier-ignore @@ -528,7 +528,7 @@ // constants, // }; -// const friendly2 = HumanFriendlyRead.get(state2); +// const friendly2 = Formatter.get(state2); // expect(friendly2).to.be.equals(`EAGER_IF(0, 2, 3)`); // }); @@ -547,7 +547,7 @@ // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`GREATER_THAN(2, 1)`); // // prettier-ignore @@ -562,7 +562,7 @@ // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`GREATER_THAN(1, 2)`); // }); @@ -580,7 +580,7 @@ // sources: source0, // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`LESS_THAN(2, 1)`); // // prettier-ignore @@ -594,7 +594,7 @@ // sources: source1, // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`LESS_THAN(1, 2)`); // }); @@ -612,7 +612,7 @@ // sources: source0, // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`EQUAL_TO(2, 2)`); // // prettier-ignore @@ -626,7 +626,7 @@ // sources: source1, // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`EQUAL_TO(1, 2)`); // }); @@ -643,7 +643,7 @@ // sources: source0, // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.be.equals(`ISZERO(0)`); // // prettier-ignore @@ -656,7 +656,7 @@ // sources: source1, // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.be.equals(`ISZERO(1)`); // }); @@ -672,7 +672,7 @@ // sources: source0, // constants, // }; -// const friendly0 = HumanFriendlyRead.get(state0); +// const friendly0 = Formatter.get(state0); // expect(friendly0).to.eq('CURRENT_BLOCK'); @@ -685,7 +685,7 @@ // sources: source1, // constants, // }; -// const friendly1 = HumanFriendlyRead.get(state1); +// const friendly1 = Formatter.get(state1); // expect(friendly1).to.eq('CURRENT_TIMESTAMP'); // }); @@ -709,7 +709,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('MOD(7, 4, 2)'); // }); @@ -732,7 +732,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('EXP(2, 4, 3)'); // }); @@ -756,7 +756,7 @@ // sources: source, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('MAX(22, 11, 33)'); // }); @@ -780,7 +780,7 @@ // sources: source, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('MIN(22, 11, 33)'); // }); @@ -797,7 +797,7 @@ // sources: source, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('CURRENT_BLOCK'); // }); @@ -867,7 +867,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq(`ZIPMAP_8( // [1, 2, 3, 4, 5, 6, 7, 8], @@ -914,7 +914,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq(`ZIPMAP_2( // [5, 3], @@ -1025,7 +1025,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq(`ZIPMAP_1( // 10, @@ -1090,7 +1090,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq(`ZIPMAP_1( // 1, @@ -1140,7 +1140,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq(`ZIPMAP_1( // 3, @@ -1185,7 +1185,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq(`ZIPMAP_1( // 1, @@ -1225,7 +1225,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq( // 'MUL(CURRENT_BLOCK, DIV(6, 3), ADD(3, 4, SUB(2, 1)))' @@ -1256,7 +1256,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('DIV(MUL(ADD(2, 2, 2), 3), 2, 3)'); // }); @@ -1281,7 +1281,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('MOD(13, 2, 3)'); // }); @@ -1306,7 +1306,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('DIV(12, 2, 3)'); // }); @@ -1331,7 +1331,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('MUL(3, 4, 5)'); // }); @@ -1356,7 +1356,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('SUB(10, 2, 3)'); // }); @@ -1381,7 +1381,7 @@ // sources: sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.eq('ADD(1, 2, 3)'); // }); @@ -1408,7 +1408,7 @@ // sources: source0, // constants: constants0, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal( // `SATURATING_DIFF(${constants0[0]}, ${constants0[1]})` @@ -1447,7 +1447,7 @@ // sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal( // `IERC1155_BALANCE_OF_BATCH(${tokenERC1155.address}, ${signer1.address}, ${signer2.address}, ${tokenId}, ${tokenId})` @@ -1477,7 +1477,7 @@ // sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal( // `IERC1155_BALANCE_OF(${tokenERC1155.address}, ${signer1.address}, ${tokenId})` @@ -1503,7 +1503,7 @@ // sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal( // `IERC721_OWNER_OF(${tokenERC721.address}, ${nftId})` @@ -1529,7 +1529,7 @@ // sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal( // `IERC721_BALANCE_OF(${tokenERC721.address}, ${signer1.address})` @@ -1554,7 +1554,7 @@ // sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal(`IERC20_TOTAL_SUPPLY(${tokenERC20.address})`); // }); @@ -1578,7 +1578,7 @@ // sources, // constants, // }; -// const friendly = HumanFriendlyRead.get(state); +// const friendly = Formatter.get(state); // expect(friendly).to.be.equal( // `IERC20_BALANCE_OF(${tokenERC20.address}, ${signer1.address})` @@ -1679,7 +1679,7 @@ // }; // // @ts-ignore -// const friendly = HumanFriendlyRead.get(saleConfig, { +// const friendly = Formatter.get(saleConfig, { // contract: 'sale', // pretty: true, // }); @@ -1831,7 +1831,7 @@ // // }; // // expect(() => { -// // HumanFriendlyRead.get(saleConfig, { +// // Formatter.get(saleConfig, { // // pretty: true, // // }); // // }).to.throw('Not contract/context provided to get the STORAGE'); @@ -1890,7 +1890,7 @@ // constants, // }; -// const friendlyPretty = HumanFriendlyRead.get(state, { +// const friendlyPretty = Formatter.get(state, { // pretty: true, // }); From 0ccda8844849698d034543ff7858dd09281f9b30 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 20 Sep 2022 22:53:42 +0000 Subject: [PATCH 109/125] fix curly brackets positions --- src/vm/parser.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 65af1fc..8b82b95 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -193,8 +193,10 @@ export class Parser { [script, , offset] = this.trim(script); let expressions: string[] = []; let positions = [[0, script_.length - 1]]; + let hasCurlyBrackets = false; if (script.startsWith("{") && script.indexOf("}") > -1) { + hasCurlyBrackets = true; positions = [[ script_.indexOf("{"), script_.indexOf("}") @@ -237,7 +239,7 @@ export class Parser { } else if (this.exp.startsWith(")")) { this.exp = this.exp.replace(")", ""); - this.resolveParens(positions[i][0] + 1); + this.resolveParens(hasCurlyBrackets ? positions[i][0] + 1 : positions[i][0]); if (!this.hasError) { try { this.buildStateConfig( @@ -250,7 +252,7 @@ export class Parser { } } } - else this.consume(positions[i][0] + 1); + else this.consume(hasCurlyBrackets ? positions[i][0] + 1 : positions[i][0]); if ( !this.hasError && !this.state.parse.stack.includes("(") && From cb0f52e207913fea75696a5ec240634c3289751c Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 21 Sep 2022 21:58:19 +0000 Subject: [PATCH 110/125] Update parser.ts --- src/vm/parser.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 8b82b95..9c50cff 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -180,6 +180,7 @@ export class Parser { this.parseTree = {}; this.constants = []; this.sources = []; + this.hasError = false; this.state.zipmaps = 0; this.state.arguments.has = false; this.state.arguments.count = 0; From dd4ad79132c11ca0efe1e147b947cdf857297219 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 22 Sep 2022 13:25:56 +0000 Subject: [PATCH 111/125] Update OpMeta.ts --- src/vm/OpMeta.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 218b785..5a30195 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -244,7 +244,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC20BalanceOf } ], @@ -256,7 +256,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.one, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC20TotalSupply } ], @@ -268,7 +268,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.three, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC20SnapshotBalanceOfAt } ], @@ -280,7 +280,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC20SnapshotTotalSupplyAt } ], @@ -292,7 +292,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC721BalanceOf } ], @@ -304,7 +304,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.two, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC721OwnerOf } ], @@ -316,7 +316,7 @@ export const OpMeta: Map = new Map([ description: '', pushes: pnp.one, pops: pnp.three, - isZeroOperand: false, + isZeroOperand: true, jsvmfn: OpERC1155BalanceOf } ], From 469c6bd6ec27087c91f45229e36667d0ea2c8b24 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Thu, 22 Sep 2022 14:49:17 +0000 Subject: [PATCH 112/125] Update parser.ts --- src/vm/parser.ts | 87 +++++++++++++++++++++++++----------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 9c50cff..9141e07 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -455,6 +455,7 @@ export class Parser { if ("error" in expBlock) return expBlock; else { let op = this.names.indexOf(expBlock.opcode.name); + if (op > -1) { if ( op === AllStandardOps.STACK || @@ -1246,64 +1247,66 @@ export class Parser { break; } } - if (check_ && this.names.includes(str_)) { - this.state.parse.stack.push( - { - op: str_, - position: [startPosition, startPosition + str_.length - 1] - } - ); - this.exp = this.exp.replace(consumee_, ""); - } - else if (str_ === "arg") { - this.exp = this.exp.replace(consumee_, ""); - let i_ = this.exp.indexOf(")") + 1; - str_ = str_ + this.exp.slice(0, i_); - this.exp = this.exp.slice(i_, this.exp.length); - this.state.parse.stack.push( - { - value: str_, - position: [startPosition, startPosition + str_.length - 1] - } - ); - } - else if (str_ === this.placeholder) { - this.state.parse.stack.push({ - value: this.placeholder, - position: [startPosition, startPosition + str_.length - 1] - }); - this.exp = this.exp.replace(consumee_, ""); - } - else { - if (str_.includes(".")) { + if (check_) { + if (this.names.includes(str_)) { this.state.parse.stack.push( { - error: `invalid number: float ${str_}`, + op: str_, position: [startPosition, startPosition + str_.length - 1] } ); this.exp = this.exp.replace(consumee_, ""); - if (!this.hasError) this.hasError = true; } - else if (isBigNumberish(str_)) { + else if (str_ === "arg") { + this.exp = this.exp.replace(consumee_, ""); + let i_ = this.exp.indexOf(")") + 1; + str_ = str_ + this.exp.slice(0, i_); + this.exp = this.exp.slice(i_, this.exp.length); this.state.parse.stack.push( { value: str_, position: [startPosition, startPosition + str_.length - 1] } ); + } + else if (str_ === this.placeholder) { + this.state.parse.stack.push({ + value: this.placeholder, + position: [startPosition, startPosition + str_.length - 1] + }); this.exp = this.exp.replace(consumee_, ""); } else { - this.state.parse.stack.push( - { - error: `unknown: ${str_}`, - position: [startPosition, startPosition + str_.length - 1] - } - ); - this.exp = this.exp.replace(consumee_, ""); - if (!this.hasError) this.hasError = true; - }; + if (str_.includes(".")) { + this.state.parse.stack.push( + { + error: `invalid number: float ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + if (!this.hasError) this.hasError = true; + } + else if (isBigNumberish(str_)) { + this.state.parse.stack.push( + { + value: str_, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + } + else { + this.state.parse.stack.push( + { + error: `unknown: ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + } + ); + this.exp = this.exp.replace(consumee_, ""); + if (!this.hasError) this.hasError = true; + }; + } } } } From f4279a1e4bfa81625fe14619c0c5569d3d4f3b7a Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 26 Sep 2022 14:37:06 +0000 Subject: [PATCH 113/125] goerli contracts and sg --- package.json | 6 + src/addresses.ts | 74 ++-- yarn.lock | 877 ++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 867 insertions(+), 90 deletions(-) diff --git a/package.json b/package.json index d814120..a6f419c 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,9 @@ "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", + "@nomiclabs/hardhat-etherscan": "3.0.3", "@nomiclabs/hardhat-waffle": "^2.0.1", + "@nomiclabs/hardhat-web3": "2.0.0", "@princjef/api-documenter": "^1.0.2", "@size-limit/preset-small-lib": "^6.0.4", "@typechain/ethers-v5": "^8.0.5", @@ -62,8 +64,12 @@ "@types/node": "^16.11.11", "@types/timsort": "^0.3.0", "chai": "^4.3.4", + "dotenv": "16.0.0", "ethereum-waffle": "^3.4.0", "hardhat": "^2.7.0", + "hardhat-contract-sizer": "2.5.1", + "hardhat-gas-reporter": "1.0.4", + "hardhat-storage-layout": "0.1.6", "husky": "^7.0.4", "size-limit": "^6.0.4", "standardx": "3.0.0", diff --git a/src/addresses.ts b/src/addresses.ts index b5f7dd7..d5d492d 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -55,19 +55,19 @@ const addressBook = [ */ chainId: 5, addresses: { - vmStateBuilder: '', - alwaysTier: '', - combineTierFactory: '', - emissionsERC20Factory: '', - noticeBoard: '', - redeemableERC20ClaimEscrow: '', - redeemableERC20Factory: '', - saleFactory: '', - verifyFactory: '', - verifyTierFactory: '', - stakeFactory: '', - orderBook: '', - autoApproveFactory: '', + vmStateBuilder: '0x4658739342f31C23b15A203479DE7AB677fd7Bc6', + alwaysTier: '0xAeC406C5b0B5Dc0724cA228CeeE0AD3246CCf518', + combineTierFactory: '0x6Db763b05C87a4a0120889C26AC778E92bd28190', + emissionsERC20Factory: '0xE62cF7b2B4acBE23247C49e4D5Ee39cF31C9d169', + noticeBoard: '0x840BcE70970f2a03eADB0be0cf4dBfef051E70A6', + redeemableERC20ClaimEscrow: '0x54de08Bf506a7bA624BA36Ab12e393B50c652650', + redeemableERC20Factory: '0xBee223D3D304c5b5512F07b4047E88964493b500', + saleFactory: '0x21548B27a10ddE0C3a278F9545EA7D3a4EFB6696', + verifyFactory: '0x2386a88E4689EB60F15ce44BB0B922f70F88BdA2', + verifyTierFactory: '0x3E92D1002F7Da0922C2f379C1dbdb7e11Ed28B15', + stakeFactory: '0xAEcb829a41a3F148F6d05360e84DFbdbbB51C21e', + orderBook: '0x6DE908adA18C838D5F1096E4Af4285bd9027f3fa', + autoApproveFactory: '0x06c8B19Db4ef47bC34373924D6f6BB05cC62861e', }, }, { @@ -139,19 +139,19 @@ const addressBook = [ */ chainId: 31337, addresses: { - vmStateBuilder: '0x5FbDB2315678afecb367f032d93F642f64180aa3', - alwaysTier: '0xb0279Db6a2F1E01fbC8483FCCef0Be2bC6299cC3', - redeemableERC20Factory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', - verifyFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', - verifyTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', - combineTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', + vmStateBuilder: '0x5FbDB2315678afecb367f032d93F642f64180aa3', + alwaysTier: '0xb0279Db6a2F1E01fbC8483FCCef0Be2bC6299cC3', + redeemableERC20Factory: '0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512', + verifyFactory: '0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0', + verifyTierFactory: '0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9', + combineTierFactory: '0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9', redeemableERC20ClaimEscrow: '0x5FC8d32690cc91D4c39d9d3abcBD16989F875707', - noticeBoard: '0x0165878A594ca255338adfa4d48449f69242Eb8F', - emissionsERC20Factory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', - saleFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', - stakeFactory: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', - orderBook: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', - autoApproveFactory: '0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82', + noticeBoard: '0x0165878A594ca255338adfa4d48449f69242Eb8F', + emissionsERC20Factory: '0xa513E6E4b8f2a923D98304ec87F64353C4D5C853', + saleFactory: '0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6', + stakeFactory: '0x8A791620dd6260079BF849Dc5567aDC3F2FdC318', + orderBook: '0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e', + autoApproveFactory: '0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82', }, }, { @@ -181,18 +181,18 @@ const addressBook = [ */ chainId: 80001, addresses: { - vmStateBuilder: '0x20F6E357E5Ca8a5C4C7081ABc548aa5D3C1f88D5', - alwaysTier: '0x1a5a119c3CD5D6118b55006DD4Aa499737B186C7', - combineTierFactory: '0x20e5b29B249716A5b458F334DC7F11c311E54177', - emissionsERC20Factory: '0x20812E2a90F3237B3EB20F53Dd7f20A60B85A032', - noticeBoard: '0x727bc1b817b1b41bB417af1D6b6874864C642e25', + vmStateBuilder: '0x20F6E357E5Ca8a5C4C7081ABc548aa5D3C1f88D5', + alwaysTier: '0x1a5a119c3CD5D6118b55006DD4Aa499737B186C7', + combineTierFactory: '0x20e5b29B249716A5b458F334DC7F11c311E54177', + emissionsERC20Factory: '0x20812E2a90F3237B3EB20F53Dd7f20A60B85A032', + noticeBoard: '0x727bc1b817b1b41bB417af1D6b6874864C642e25', redeemableERC20ClaimEscrow: '0xc26f68FB5E8fcd28661A26f92587c525e54407d0', - redeemableERC20Factory: '0xd7FC038ae2A69AbED7cEAF50C458ec17Ec8a33bd', - saleFactory: '0x36D1eCa99480820FeD2a160FC98E723Eec167c0F', - verifyFactory: '0x2AeB6aB29AfF3901054f9364ee26916F858088Ed', - verifyTierFactory: '0xAf6D4770E78D2d6ad8675666E251933649A8467e', - stakeFactory: '0x96031f3ba3C57B5a5ea6f7581b61bCf0a9cC51b3', - orderBook: '0xb8BADe9783a815512A67B86e5fE967e9B861E102', + redeemableERC20Factory: '0xd7FC038ae2A69AbED7cEAF50C458ec17Ec8a33bd', + saleFactory: '0x36D1eCa99480820FeD2a160FC98E723Eec167c0F', + verifyFactory: '0x2AeB6aB29AfF3901054f9364ee26916F858088Ed', + verifyTierFactory: '0xAf6D4770E78D2d6ad8675666E251933649A8467e', + stakeFactory: '0x96031f3ba3C57B5a5ea6f7581b61bCf0a9cC51b3', + orderBook: '0xb8BADe9783a815512A67B86e5fE967e9B861E102', autoApproveFactory: '', }, }, @@ -206,7 +206,7 @@ const subgraphBook: SubgraphBook = { /** * Goerli chain */ - 5: '', + 5: 'https://api.thegraph.com/subgraphs/name/beehive-innovation/rain-protocol-goerli-v3', /** * BNB Mainnet */ diff --git a/yarn.lock b/yarn.lock index 162b886..f3a2292 100644 --- a/yarn.lock +++ b/yarn.lock @@ -953,6 +953,11 @@ "@openzeppelin/contracts" "=4.7.0" "@openzeppelin/contracts-upgradeable" "=4.7.0" +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + "@cspotcode/source-map-support@^0.8.0": version "0.8.1" resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" @@ -1138,6 +1143,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/abi@^5.0.0-beta.146": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/abstract-provider@5.6.1", "@ethersproject/abstract-provider@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.6.1.tgz#02ddce150785caf0c77fe036a0ebfcee61878c59" @@ -1151,6 +1171,19 @@ "@ethersproject/transactions" "^5.6.2" "@ethersproject/web" "^5.6.1" +"@ethersproject/abstract-provider@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + "@ethersproject/abstract-signer@5.6.2", "@ethersproject/abstract-signer@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.6.2.tgz#491f07fc2cbd5da258f46ec539664713950b0b33" @@ -1162,6 +1195,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/properties" "^5.6.0" +"@ethersproject/abstract-signer@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/address@5.6.1", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" @@ -1173,6 +1217,17 @@ "@ethersproject/logger" "^5.6.0" "@ethersproject/rlp" "^5.6.1" +"@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/base64@5.6.1", "@ethersproject/base64@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.6.1.tgz#2c40d8a0310c9d1606c2c37ae3092634b41d87cb" @@ -1180,6 +1235,13 @@ dependencies: "@ethersproject/bytes" "^5.6.1" +"@ethersproject/base64@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/basex@5.6.1", "@ethersproject/basex@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.6.1.tgz#badbb2f1d4a6f52ce41c9064f01eab19cc4c5305" @@ -1197,6 +1259,15 @@ "@ethersproject/logger" "^5.6.0" bn.js "^5.2.1" +"@ethersproject/bignumber@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + bn.js "^5.2.1" + "@ethersproject/bytes@5.6.1", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.6.1.tgz#24f916e411f82a8a60412344bf4a813b917eefe7" @@ -1204,6 +1275,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/bytes@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/constants@5.6.1", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.6.1.tgz#e2e974cac160dd101cf79fdf879d7d18e8cb1370" @@ -1211,6 +1289,13 @@ dependencies: "@ethersproject/bignumber" "^5.6.2" +"@ethersproject/constants@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== + dependencies: + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/contracts@5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.6.2.tgz#20b52e69ebc1b74274ff8e3d4e508de971c287bc" @@ -1241,6 +1326,21 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/hash@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== + dependencies: + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/hdnode@5.6.2", "@ethersproject/hdnode@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.6.2.tgz#26f3c83a3e8f1b7985c15d1db50dc2903418b2d2" @@ -1286,11 +1386,24 @@ "@ethersproject/bytes" "^5.6.1" js-sha3 "0.8.0" +"@ethersproject/keccak256@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + js-sha3 "0.8.0" + "@ethersproject/logger@5.6.0", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.6.0": version "5.6.0" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.6.0.tgz#d7db1bfcc22fd2e4ab574cba0bb6ad779a9a3e7a" integrity sha512-BiBWllUROH9w+P21RzoxJKzqoqpkyM1pRnEKG69bulE9TSQD8SAIvTQqIMZmmCO8pUNkgLP1wndX1gKghSpBmg== +"@ethersproject/logger@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== + "@ethersproject/networks@5.6.4", "@ethersproject/networks@^5.6.3": version "5.6.4" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.6.4.tgz#51296d8fec59e9627554f5a8a9c7791248c8dc07" @@ -1298,6 +1411,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/networks@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/pbkdf2@5.6.1", "@ethersproject/pbkdf2@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.6.1.tgz#f462fe320b22c0d6b1d72a9920a3963b09eb82d1" @@ -1313,6 +1433,13 @@ dependencies: "@ethersproject/logger" "^5.6.0" +"@ethersproject/properties@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== + dependencies: + "@ethersproject/logger" "^5.7.0" + "@ethersproject/providers@5.6.8": version "5.6.8" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.6.8.tgz#22e6c57be215ba5545d3a46cf759d265bb4e879d" @@ -1355,6 +1482,14 @@ "@ethersproject/bytes" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/rlp@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/sha2@5.6.1", "@ethersproject/sha2@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.6.1.tgz#211f14d3f5da5301c8972a8827770b6fd3e51656" @@ -1376,6 +1511,18 @@ elliptic "6.5.4" hash.js "1.1.7" +"@ethersproject/signing-key@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + bn.js "^5.2.1" + elliptic "6.5.4" + hash.js "1.1.7" + "@ethersproject/solidity@5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.6.1.tgz#5845e71182c66d32e6ec5eefd041fca091a473e2" @@ -1397,6 +1544,15 @@ "@ethersproject/constants" "^5.6.1" "@ethersproject/logger" "^5.6.0" +"@ethersproject/strings@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== + dependencies: + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/transactions@5.6.2", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.6.2": version "5.6.2" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.6.2.tgz#793a774c01ced9fe7073985bb95a4b4e57a6370b" @@ -1412,6 +1568,21 @@ "@ethersproject/rlp" "^5.6.1" "@ethersproject/signing-key" "^5.6.2" +"@ethersproject/transactions@^5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/signing-key" "^5.7.0" + "@ethersproject/units@5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.6.1.tgz#ecc590d16d37c8f9ef4e89e2005bda7ddc6a4e6f" @@ -1453,6 +1624,17 @@ "@ethersproject/properties" "^5.6.0" "@ethersproject/strings" "^5.6.1" +"@ethersproject/web@^5.7.0": + version "5.7.1" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== + dependencies: + "@ethersproject/base64" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/wordlists@5.6.1", "@ethersproject/wordlists@^5.6.1": version "5.6.1" resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.6.1.tgz#1e78e2740a8a21e9e99947e47979d72e130aeda1" @@ -1830,6 +2012,19 @@ resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.1.0.tgz#9b7dc94d669ad9dc286b94f6f2f1513118c7027b" integrity sha512-vlW90etB3675QWG7tMrHaDoTa7ymMB7irM4DAQ98g8zJoe9YqEggeDnbO6v5b+BLth/ty4vN6Ko/kaqRN1krHw== +"@nomiclabs/hardhat-etherscan@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.0.3.tgz#ca54a03351f3de41f9f5240e37bea9d64fa24e64" + integrity sha512-OfNtUKc/ZwzivmZnnpwWREfaYncXteKHskn3yDnz+fPBZ6wfM4GR+d5RwjREzYFWE+o5iR9ruXhWw/8fejWM9g== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^5.0.2" + debug "^4.1.1" + fs-extra "^7.0.1" + semver "^6.3.0" + undici "^4.14.1" + "@nomiclabs/hardhat-waffle@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.3.tgz#9c538a09c5ed89f68f5fd2dc3f78f16ed1d6e0b1" @@ -1838,6 +2033,13 @@ "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" +"@nomiclabs/hardhat-web3@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-web3/-/hardhat-web3-2.0.0.tgz#2d9850cb285a2cebe1bd718ef26a9523542e52a9" + integrity sha512-zt4xN+D+fKl3wW2YlTX3k9APR3XZgPkxJYf36AcliJn3oujnKEVRZaHu0PhgLjO+gR+F/kiYayo9fgd2L8970Q== + dependencies: + "@types/bignumber.js" "^5.0.0" + "@oclif/command@^1.5.10": version "1.8.16" resolved "https://registry.yarnpkg.com/@oclif/command/-/command-1.8.16.tgz#bea46f81b2061b47e1cda318a0b923e62ca4cc0c" @@ -2201,7 +2403,7 @@ style-loader "^3.3.1" webpack "^5.61.0" -"@solidity-parser/parser@^0.14.2": +"@solidity-parser/parser@^0.14.0", "@solidity-parser/parser@^0.14.2": version "0.14.3" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.3.tgz#0d627427b35a40d8521aaa933cc3df7d07bfa36f" integrity sha512-29g2SZ29HtsqA58pLCtopI1P/cPy5/UAzlcAXO6T/CNJimG6yA8kx4NaseMyJULiC+TEs02Y9/yeHzClqoA0hw== @@ -2442,6 +2644,13 @@ dependencies: "@babel/types" "^7.3.0" +"@types/bignumber.js@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/bignumber.js/-/bignumber.js-5.0.0.tgz#d9f1a378509f3010a3255e9cc822ad0eeb4ab969" + integrity sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA== + dependencies: + bignumber.js "*" + "@types/bn.js@*", "@types/bn.js@^5.1.0": version "5.1.0" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" @@ -2461,6 +2670,13 @@ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + "@types/eslint-scope@^3.7.3": version "3.7.4" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16" @@ -2492,6 +2708,13 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -2593,6 +2816,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.24.tgz#c37ac69cb2948afb4cef95f424fa0037971a9a5c" integrity sha512-yxDeaQIAJlMav7fH5AQqPH1u8YIuhYJXYBzxaQ4PifsU0GDO38MSdmEDeRlIxrKbC6NbEaaEHDanWb+y30U8SQ== +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + "@types/node@^12.12.6": version "12.20.55" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" @@ -2603,6 +2831,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.45.tgz#155b13a33c665ef2b136f7f245fa525da419e810" integrity sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ== +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + "@types/parse-json@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" @@ -2620,6 +2853,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.3.tgz#68ada76827b0010d0db071f739314fa429943d0a" integrity sha512-ymZk3LEC/fsut+/Q5qejp6R9O1rMxz3XaRHDV6kX8MrGAhOSPqVARbDi+EZvInBpw+BnCX3TD240byVkOfQsHg== +"@types/qs@^6.2.31": + version "6.9.7" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -3116,6 +3354,11 @@ ajv@^8.0.0, ajv@^8.8.0: require-from-string "^2.0.2" uri-js "^4.2.2" +ansi-colors@3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.3.tgz#57d35b8686e851e2cc04c403f1c00203976a1813" + integrity sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw== + ansi-colors@4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" @@ -3187,7 +3430,7 @@ antlr4ts@^0.5.0-alpha.4: resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== -anymatch@^3.0.3, anymatch@~3.1.2: +anymatch@^3.0.3, anymatch@~3.1.1, anymatch@~3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== @@ -3321,6 +3564,11 @@ array.prototype.reduce@^1.0.4: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.7" +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + asn1.js@^5.2.0: version "5.4.1" resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07" @@ -4137,6 +4385,11 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== +bignumber.js@*, bignumber.js@^9.0.1: + version "9.1.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.0.tgz#8d340146107fe3a6cb8d40699643c302e8773b62" + integrity sha512-4LwHK4nfDOraBCtst+wOWIHbu1vhvAPJK8g8nROd4iuc3PSEjWif/qwbkh8jwCJz6yDBvtU4KPynETgrfh7y3A== + bignumber.js@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" @@ -4494,7 +4747,7 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg== -camelcase@^5.3.1: +camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== @@ -4519,11 +4772,19 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000844, caniuse-lite@^1.0.30001366: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz#c5c06381c6051cd863c45021475434e81936f713" integrity sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ== -caseless@~0.12.0: +caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== +cbor@^5.0.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== + dependencies: + bignumber.js "^9.0.1" + nofilter "^1.0.4" + chai@^4.3.4: version "4.3.6" resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" @@ -4588,7 +4849,7 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -charenc@0.0.2: +charenc@0.0.2, "charenc@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== @@ -4605,6 +4866,21 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" +chokidar@3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.0.tgz#12c0714668c55800f659e262d4962a97faf554a6" + integrity sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.2.0" + optionalDependencies: + fsevents "~2.1.1" + chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: version "3.5.3" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" @@ -4725,6 +5001,25 @@ cli-spinners@^2.2.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cli-table3@^0.6.0: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-width@^2.0.0: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" @@ -4744,6 +5039,15 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" + integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== + dependencies: + string-width "^3.1.0" + strip-ansi "^5.2.0" + wrap-ansi "^5.1.0" + cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -4822,6 +5126,11 @@ colord@^2.9.1: resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" integrity sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ== +colors@1.4.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + colors@~1.2.1: version "1.2.5" resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" @@ -4898,7 +5207,7 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -concat-stream@^1.5.1: +concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2: version "1.6.2" resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== @@ -4913,6 +5222,13 @@ confusing-browser-globals@^1.0.9: resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81" integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA== +console-table-printer@^2.9.0: + version "2.11.1" + resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.11.1.tgz#c2dfe56e6343ea5bcfa3701a4be29fe912dbd9c7" + integrity sha512-8LfFpbF/BczoxPwo2oltto5bph8bJkGOATXsg3E9ddMJOGnWJciKHldx2zDj5XIBflaKzPfVCjOTl6tMh7lErg== + dependencies: + simple-wcswidth "^1.0.1" + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -5087,7 +5403,7 @@ cross-spawn@^7.0.0, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypt@0.0.2: +crypt@0.0.2, "crypt@>= 0.0.1": version "0.0.2" resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== @@ -5304,7 +5620,7 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -decamelize@^1.1.1: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== @@ -5410,7 +5726,7 @@ define-lazy-prop@^2.0.0: resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== -define-properties@^1.1.3, define-properties@^1.1.4: +define-properties@^1.1.2, define-properties@^1.1.3, define-properties@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== @@ -5502,6 +5818,11 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +diff@3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" + integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + diff@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" @@ -5592,6 +5913,11 @@ domutils@^2.8.0: domelementtype "^2.2.0" domhandler "^4.2.0" +dotenv@16.0.0: + version "16.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.0.tgz#c619001253be89ebb638d027b609c75c26e47411" + integrity sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q== + dotignore@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/dotignore/-/dotignore-0.1.2.tgz#f942f2200d28c3a76fbdd6f0ee9f3257c8a2e905" @@ -5830,16 +6156,16 @@ escape-html@~1.0.3: resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== +escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - escape-string-regexp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" @@ -6251,6 +6577,27 @@ eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" +eth-gas-reporter@^0.2.20: + version "0.2.25" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz#546dfa946c1acee93cb1a94c2a1162292d6ff566" + integrity sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ== + dependencies: + "@ethersproject/abi" "^5.0.0-beta.146" + "@solidity-parser/parser" "^0.14.0" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^4.0.40" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^7.1.1" + req-cwd "^2.0.0" + request "^2.88.0" + request-promise-native "^1.0.5" + sha1 "^1.1.1" + sync-request "^6.0.0" + eth-json-rpc-infura@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" @@ -6620,6 +6967,21 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" +ethers@^4.0.40: + version "4.0.49" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.49.tgz#0eb0e9161a0c8b4761be547396bbe2fb121a8894" + integrity sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg== + dependencies: + aes-js "3.0.0" + bn.js "^4.11.9" + elliptic "6.5.4" + hash.js "1.1.3" + js-sha3 "0.5.7" + scrypt-js "2.0.4" + setimmediate "1.0.4" + uuid "2.0.1" + xmlhttprequest "1.8.0" + ethers@^5.0.1, ethers@^5.0.2, ethers@^5.5.2: version "5.6.9" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.6.9.tgz#4e12f8dfcb67b88ae7a78a9519b384c23c576a4d" @@ -7006,6 +7368,13 @@ find-root@^1.0.0: resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== +find-up@3.0.0, find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + find-up@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" @@ -7071,6 +7440,13 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== + dependencies: + is-buffer "~2.0.3" + flat@^5.0.2: version "5.0.2" resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" @@ -7108,6 +7484,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== +form-data@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" + integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + form-data@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" @@ -7208,6 +7593,11 @@ fs-minipass@^1.2.7: dependencies: minipass "^2.6.0" +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -7218,6 +7608,11 @@ fsevents@^2.3.2, fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +fsevents@~2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -7290,7 +7685,7 @@ get-caller-file@^1.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== -get-caller-file@^2.0.5: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -7314,6 +7709,11 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" @@ -7363,7 +7763,7 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.2: +glob-parent@^5.0.0, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -7375,6 +7775,18 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +glob@7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" + integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" @@ -7488,6 +7900,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + gzip-size@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" @@ -7508,6 +7925,29 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +hardhat-contract-sizer@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/hardhat-contract-sizer/-/hardhat-contract-sizer-2.5.1.tgz#cb0b8dd32593b7a28c8d96ecde04841292bbd603" + integrity sha512-28yRb73e30aBVaZOOHTlHZFIdIasA/iFunIehrUviIJTubvdQjtSiQUo2wexHFtt71mQeMPP8qjw2sdbgatDnQ== + dependencies: + chalk "^4.0.0" + cli-table3 "^0.6.0" + +hardhat-gas-reporter@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.4.tgz#59e3137e38e0dfeac2e4f90d5c74160b50ad4829" + integrity sha512-G376zKh81G3K9WtDA+SoTLWsoygikH++tD1E7llx+X7J+GbIqfwhDKKgvJjcnEesMrtR9UqQHK02lJuXY1RTxw== + dependencies: + eth-gas-reporter "^0.2.20" + sha1 "^1.1.1" + +hardhat-storage-layout@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/hardhat-storage-layout/-/hardhat-storage-layout-0.1.6.tgz#b6ae33d4c00f385dbc1ff67c86d67b0198cfbd91" + integrity sha512-urp9PUDJmRrFaTnMkyYGAlU0OF7Q+inWMWKHvuGRyvBDwVQKXfj5WoerTax4bBpXukJ4fBYyUTjAr0x+j2LcKQ== + dependencies: + console-table-printer "^2.9.0" + hardhat@^2.7.0: version "2.10.1" resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.10.1.tgz#37fdc0c96d6a5d16b322269db2ad8f9f115c4046" @@ -7596,7 +8036,7 @@ has-symbol-support-x@^1.4.1: resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== -has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.0, has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== @@ -7662,6 +8102,14 @@ hash-base@^3.0.0: readable-stream "^3.6.0" safe-buffer "^5.2.0" +hash.js@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.3.tgz#340dedbe6290187151c1ea1d777a3448935df846" + integrity sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.0" + hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" @@ -7714,6 +8162,16 @@ html-escaper@^2.0.0: resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -7744,6 +8202,13 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + http-signature@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" @@ -8016,6 +8481,11 @@ is-buffer@^1.1.5, is-buffer@~1.1.6: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== +is-buffer@~2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" @@ -8883,16 +9353,16 @@ jpjs@^1.2.1: resolved "https://registry.yarnpkg.com/jpjs/-/jpjs-1.2.1.tgz#f343833de8838a5beba1f42d5a219be0114c44b7" integrity sha512-GxJWybWU4NV0RNKi6EIqk6IRPOTqd/h+U7sbtyuD7yUISUzV78LdHnq2xkevJsTlz/EImux4sWj+wfMiwKLkiw== +js-sha3@0.5.7, js-sha3@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" + integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== + js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== -js-sha3@^0.5.7: - version "0.5.7" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.5.7.tgz#0d4ffd8002d5333aabaf4a23eed2f6374c9f28e7" - integrity sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -8903,6 +9373,14 @@ js-tokens@^3.0.2: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== +js-yaml@3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + js-yaml@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" @@ -9463,6 +9941,14 @@ locate-path@^2.0.0: p-locate "^2.0.0" path-exists "^3.0.0" +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -9527,6 +10013,13 @@ lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17 resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +log-symbols@3.0.0, log-symbols@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" + integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== + dependencies: + chalk "^2.4.2" + log-symbols@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" @@ -9535,13 +10028,6 @@ log-symbols@4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" -log-symbols@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" - integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== - dependencies: - chalk "^2.4.2" - log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" @@ -9666,6 +10152,11 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + mcl-wasm@^0.7.1: version "0.7.9" resolved "https://registry.yarnpkg.com/mcl-wasm/-/mcl-wasm-0.7.9.tgz#c1588ce90042a8700c3b60e40efb339fc07ab87f" @@ -9883,6 +10374,13 @@ minimalistic-crypto-utils@^1.0.1: resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== +minimatch@3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + minimatch@5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" @@ -9897,7 +10395,7 @@ minimatch@^3.0.3, minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.6, minimist@~1.2.6: +minimist@^1.1.0, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6, minimist@~1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -9937,6 +10435,13 @@ mkdirp@*, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@0.5.5: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.6" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" @@ -9979,6 +10484,36 @@ mocha@^10.0.0: yargs-parser "20.2.4" yargs-unparser "2.0.0" +mocha@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" + integrity sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ== + dependencies: + ansi-colors "3.2.3" + browser-stdout "1.3.1" + chokidar "3.3.0" + debug "3.2.6" + diff "3.5.0" + escape-string-regexp "1.0.5" + find-up "3.0.0" + glob "7.1.3" + growl "1.10.5" + he "1.2.0" + js-yaml "3.13.1" + log-symbols "3.0.0" + minimatch "3.0.4" + mkdirp "0.5.5" + ms "2.1.1" + node-environment-flags "1.0.6" + object.assign "4.1.0" + strip-json-comments "2.0.1" + supports-color "6.0.0" + which "1.3.1" + wide-align "1.1.3" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "1.6.0" + mock-fs@^4.1.0: version "4.14.0" resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.14.0.tgz#ce5124d2c601421255985e6e94da80a7357b1b18" @@ -9994,6 +10529,11 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== +ms@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -10131,6 +10671,14 @@ node-addon-api@^2.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== +node-environment-flags@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" + integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== + dependencies: + object.getownpropertydescriptors "^2.0.3" + semver "^5.7.0" + node-fetch@^2.6.1, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" @@ -10161,6 +10709,11 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +nofilter@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" + integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== + normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -10250,7 +10803,7 @@ object-is@^1.0.1: call-bind "^1.0.2" define-properties "^1.1.3" -object-keys@^1.1.1: +object-keys@^1.0.11, object-keys@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== @@ -10267,6 +10820,16 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + object.assign@^4.1.0, object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" @@ -10295,7 +10858,7 @@ object.fromentries@^2.0.5: define-properties "^1.1.3" es-abstract "^1.19.1" -object.getownpropertydescriptors@^2.1.1: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: version "2.1.4" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37" integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ== @@ -10451,7 +11014,7 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.2.0: +p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== @@ -10472,6 +11035,13 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -10528,6 +11098,11 @@ parse-asn1@^5.0.0, parse-asn1@^5.1.5: pbkdf2 "^3.0.3" safe-buffer "^5.1.1" +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + parse-headers@^2.0.0: version "2.0.5" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" @@ -11129,6 +11704,13 @@ promise-to-callback@^1.0.0: is-fn "^1.0.0" set-immediate-shim "^1.0.1" +promise@^8.0.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.2.0.tgz#a1f6280ab67457fbfc8aad2b198c9497e9e5c806" + integrity sha512-+CMAlLHqwRYwBMXKCP+o8ns7DN+xHDUiI+0nArsiJ9y+kJVPLFxEaSw6Ha9s9H0tftxg2Yzl25wqj9G7m5wLZg== + dependencies: + asap "~2.0.6" + prompts@^2.0.1: version "2.4.2" resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" @@ -11259,7 +11841,7 @@ qs@6.10.3: dependencies: side-channel "^1.0.4" -qs@^6.7.0: +qs@^6.4.0, qs@^6.7.0: version "6.11.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== @@ -11406,6 +11988,13 @@ readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" +readdirp@~3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" + integrity sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ== + dependencies: + picomatch "^2.0.4" + readdirp@~3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" @@ -11552,7 +12141,37 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -request@^2.79.0, request@^2.85.0: +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== + dependencies: + lodash "^4.17.19" + +request-promise-native@^1.0.5: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== + dependencies: + request-promise-core "1.1.4" + stealthy-require "^1.1.1" + tough-cookie "^2.3.3" + +request@^2.79.0, request@^2.85.0, request@^2.88.0: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -11598,6 +12217,11 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug== +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + require-uncached@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" @@ -11618,6 +12242,11 @@ resolve-from@^1.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" integrity sha512-kT10v4dhrlLNcnO084hEjvXCI1wUG9qZLoz2RogxqDQQYy7IxjI/iMUkOtQTNEh6rzHxvdQWHsJyel1pKOVCxg== +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -11886,6 +12515,11 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" +scrypt-js@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" + integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== + scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" @@ -11922,7 +12556,7 @@ semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -12030,6 +12664,11 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" +setimmediate@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.4.tgz#20e81de622d4a02588ce0c8da8973cbcf1d3138f" + integrity sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog== + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -12048,6 +12687,14 @@ sha.js@^2.4.0, sha.js@^2.4.8: inherits "^2.0.1" safe-buffer "^5.0.1" +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -12109,6 +12756,11 @@ simple-get@^2.7.0: once "^1.3.1" simple-concat "^1.0.0" +simple-wcswidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-wcswidth/-/simple-wcswidth-1.0.1.tgz#8ab18ac0ae342f9d9b629604e54d2aa1ecb018b2" + integrity sha512-xMO/8eNREtaROt7tJvWJqHBDTMFN4eiQ5I4JRMuilwfnFcV5W9u7RUkueNkdw0jPqGMX36iCywelS5yilTuOxg== + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -12425,6 +13077,11 @@ statuses@2.0.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +stealthy-require@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" + integrity sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g== + stream-to-pull-stream@^1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" @@ -12473,7 +13130,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -12481,7 +13138,7 @@ string-width@^2.1.0, string-width@^2.1.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" -string-width@^3.0.0: +string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== @@ -12573,7 +13230,7 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" -strip-ansi@^5.1.0, strip-ansi@^5.2.0: +strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== @@ -12616,16 +13273,16 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" +strip-json-comments@2.0.1, strip-json-comments@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== + strip-json-comments@3.1.1, strip-json-comments@^3.0.1, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ== - style-loader@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575" @@ -12639,6 +13296,13 @@ stylehacks@^5.1.0: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" +supports-color@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" + integrity sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg== + dependencies: + has-flag "^3.0.0" + supports-color@8.1.1, supports-color@^8.0.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -12725,6 +13389,22 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + table-layout@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" @@ -12861,6 +13541,23 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + throat@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" @@ -12968,6 +13665,14 @@ toidentifier@1.0.1: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== +tough-cookie@^2.3.3, tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -12977,14 +13682,6 @@ tough-cookie@^4.0.0: punycode "^2.1.1" universalify "^0.1.2" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== - dependencies: - psl "^1.1.28" - punycode "^2.1.1" - tr46@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" @@ -13344,6 +14041,11 @@ underscore@1.9.1: resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== +undici@^4.14.1: + version "4.16.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" + integrity sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw== + undici@^5.4.0: version "5.8.0" resolved "https://registry.yarnpkg.com/undici/-/undici-5.8.0.tgz#dec9a8ccd90e5a1d81d43c0eab6503146d649a4f" @@ -13505,6 +14207,11 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== +uuid@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.1.tgz#c2a30dedb3e535d72ccf82e343941a50ba8533ac" + integrity sha512-nWg9+Oa3qD2CQzHIP4qKUqwNfzKn8P0LtFhotaCTFchsV7ZfDhAybeip/HZVeMIpZi9JgY1E3nUlwaCmZT1sEg== + uuid@3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" @@ -14009,7 +14716,12 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ== -which@^1.2.9: +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q== + +which@1.3.1, which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -14023,6 +14735,13 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -14069,6 +14788,15 @@ wrap-ansi@^3.0.1: string-width "^2.1.1" strip-ansi "^4.0.0" +wrap-ansi@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" + integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== + dependencies: + ansi-styles "^3.2.0" + string-width "^3.0.0" + strip-ansi "^5.0.0" + wrap-ansi@^6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" @@ -14189,6 +14917,11 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xmlhttprequest@1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" + integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA== + xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -14206,6 +14939,11 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -14231,6 +14969,14 @@ yaml@^1.10.2, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +yargs-parser@13.1.2, yargs-parser@^13.1.2: + version "13.1.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" + integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + yargs-parser@20.2.4: version "20.2.4" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" @@ -14249,6 +14995,15 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" +yargs-unparser@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.0.tgz#ef25c2c769ff6bd09e4b0f9d7c605fb27846ea9f" + integrity sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw== + dependencies: + flat "^4.1.0" + lodash "^4.17.15" + yargs "^13.3.0" + yargs-unparser@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" @@ -14259,6 +15014,22 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" +yargs@13.3.2, yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== + dependencies: + cliui "^5.0.0" + find-up "^3.0.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^3.0.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^13.1.2" + yargs@16.2.0, yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" From a1633af2f5570ef0aa0befc93d8b58a91a458129 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 3 Oct 2022 21:52:34 +0000 Subject: [PATCH 114/125] opmeta aliases + fix parser --- src/vm/OpMeta.ts | 134 ++++++++++++------ src/vm/parser.ts | 358 ++++++++++++++++++++++++++++------------------- 2 files changed, 303 insertions(+), 189 deletions(-) diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 5a30195..daa0a7d 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -138,7 +138,8 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.constant(operand, data) - } + }, + aliases: ['Constant', 'constant', 'const', 'Const'] } ], [ @@ -157,7 +158,8 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.stack(operand, data) - } + }, + aliases: ['stack', 'Stack'] } ], [ @@ -176,7 +178,8 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.context(operand, data) - } + }, + aliases: ['context', 'Context'] } ], [ @@ -195,7 +198,8 @@ export const OpMeta: Map = new Map([ data?: any ): Promise { await this.storage(operand, data) - } + }, + aliases: ['storage', 'Storage'] } ], [ @@ -214,7 +218,8 @@ export const OpMeta: Map = new Map([ data?: any ): Promise { await this.zipmap(operand, data) - } + }, + aliases: ['zipmap', 'Zipamp'] } ], [ @@ -233,7 +238,8 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.debug(operand, data) - } + }, + aliases: ['debug', 'Debug'] } ], [ @@ -245,7 +251,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpERC20BalanceOf + jsvmfn: OpERC20BalanceOf, + aliases: ['ierc20_balance_of', 'erc20_balance_of', 'ERC20_BALANCE_OF'] } ], [ @@ -257,7 +264,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.one, isZeroOperand: true, - jsvmfn: OpERC20TotalSupply + jsvmfn: OpERC20TotalSupply, + aliases: ['ierc20_total_supply', 'erc20_total_supply', 'ERC20_TOTAL_SUPPLY'] } ], [ @@ -269,7 +277,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.three, isZeroOperand: true, - jsvmfn: OpERC20SnapshotBalanceOfAt + jsvmfn: OpERC20SnapshotBalanceOfAt, + aliases: ['ierc20_snapshot_balance_of', 'erc20_snapshot_balance_of', 'ERC20_SNAPSHOT_BALANCE_OF'] } ], [ @@ -281,7 +290,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpERC20SnapshotTotalSupplyAt + jsvmfn: OpERC20SnapshotTotalSupplyAt, + aliases: ['ierc20_snapshot_total_supply', 'erc20_snapshot_total_supply', 'ERC20_SNAPSHOT_TOTAL_SUPPLY'] } ], [ @@ -293,7 +303,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpERC721BalanceOf + jsvmfn: OpERC721BalanceOf, + aliases: ['ierc721_balance_of', 'erc721_balance_of', 'ERC721_BALANCE_OF'] } ], [ @@ -305,7 +316,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpERC721OwnerOf + jsvmfn: OpERC721OwnerOf, + aliases: ['ierc721_owner_of', 'erc721_owner_of', 'ERC721_OWNER_OF'] } ], [ @@ -317,7 +329,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.three, isZeroOperand: true, - jsvmfn: OpERC1155BalanceOf + jsvmfn: OpERC1155BalanceOf, + aliases: ['ierc1155_balance_of', 'erc1155_balance_of', 'ERC1155_BALANCE_OF'] } ], [ @@ -329,7 +342,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.oprnd, pops: pnp.derived, isZeroOperand: false, - jsvmfn: OpERC1155BalanceOfBatch + jsvmfn: OpERC1155BalanceOfBatch, + aliases: ['ierc1155_balance_of_batch', 'erc1155_balance_of_batch', 'ERC1155_BALANCE_OF_BATCH'] } ], [ @@ -342,7 +356,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpBlockNumber, - aliases: ['CURRENT_BLOCK'] + aliases: ['CURRENT_BLOCK', 'current_block', 'Current_Block', 'currentBlock', 'block_number', 'blockNumber', 'BlockNumber'], } ], [ @@ -355,7 +369,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpCaller, - aliases: ['MSG_SENDER'] + aliases: ['MSG_SENDER', 'msg_sender', 'Msg_Sender', 'msgSender', 'MsgSender', 'Sender', 'sender'] } ], [ @@ -368,7 +382,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpThisAddress, - aliases: ['THIS_ADDRESS'] + aliases: ['THIS_ADDRESS', 'this_address', 'This_Adress', 'ThisAddress', 'thisAddress'] } ], [ @@ -381,7 +395,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpTimestamp, - aliases: ['CURRENT_TIMESTAMP'] + aliases: ['CURRENT_TIMESTAMP', 'Current_Timestamp', 'current_timestamp', 'currentTimestamp', 'block_timestamp', 'Block_Timestamp', 'blockTimestamp', 'BlockTimestamp'] } ], [ @@ -393,7 +407,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.one, isZeroOperand: false, - jsvmfn: OpScale18 + jsvmfn: OpScale18, + aliases: ['Scale18', 'scale18'] } ], [ @@ -405,7 +420,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: false, - jsvmfn: OpScale18Div + jsvmfn: OpScale18Div, + aliases: ['Scale18_Div', 'scale18_div', 'scale18Div', 'Scale18Div', 'scale18div'] } ], [ @@ -417,7 +433,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: false, - jsvmfn: OpScale18Mul + jsvmfn: OpScale18Mul, + aliases: ['Scale18_Mul', 'scale18_mul', 'scale18Mul', 'Scale18Mul', 'scale18mul'] } ], [ @@ -429,7 +446,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.one, isZeroOperand: false, - jsvmfn: OpScaleBy + jsvmfn: OpScaleBy, + aliases: ['Scale_By', 'scale_by', 'scaleBy', 'ScaleBy'] } ], [ @@ -441,7 +459,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.one, isZeroOperand: false, - jsvmfn: OpScaleN + jsvmfn: OpScaleN, + aliases: ['ScaleN', 'scaleN', 'scalen', 'scale_n', 'Scale_N', 'scale_n'] } ], [ @@ -453,7 +472,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpAny + jsvmfn: OpAny, + aliases: ['Any', 'any', 'or'] } ], [ @@ -465,7 +485,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.three, isZeroOperand: true, - jsvmfn: OpEagerIf + jsvmfn: OpEagerIf, + aliases: ['eager_if', 'Eager_If', 'Eager_if', 'if', 'If', 'IF'] } ], [ @@ -477,7 +498,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpEqualTo + jsvmfn: OpEqualTo, + aliases: ['Equal_To', 'equal_to', 'EqualTo', 'equalTo', 'eq', 'Eq', 'EQ'] } ], [ @@ -489,7 +511,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpEvery + jsvmfn: OpEvery, + aliases: ['Every', 'every', 'and', 'And', 'and', 'AND'] } ], [ @@ -501,7 +524,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpGreaterThan + jsvmfn: OpGreaterThan, + aliases: ['Greater_Than', 'greater_than', 'greaterThan', 'GreaterThan', 'gt', 'GT', 'Gt'] } ], [ @@ -513,7 +537,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.one, isZeroOperand: true, - jsvmfn: OpIsZero + jsvmfn: OpIsZero, + aliases: ['IsZero', 'isZero', 'iszero', 'Is_Zero', 'is_zero', 'IS_ZERO'] } ], [ @@ -525,7 +550,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpLessThan + jsvmfn: OpLessThan, + aliases: ['Less_Than', 'less_than', 'lessThan', 'LessThan', 'lt', 'LT', 'Lt'] } ], [ @@ -537,7 +563,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpSaturatingAdd + jsvmfn: OpSaturatingAdd, + aliases: ['Saturating_Add', 'saturating_add', 'saturatingAdd', 'satAdd', 'sat_add', 'Sat_Add', 'Saturating_Sum', 'saturating_sum', 'saturatingSum', 'satSum', 'sat_sum', 'Sat_Sum'] } ], [ @@ -549,7 +576,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpSaturatingMul + jsvmfn: OpSaturatingMul, + aliases: ['Saturating_Mul', 'saturating_mul', 'saturatingMul', 'satMul', 'sat_mul', 'Sat_Mul'] } ], [ @@ -561,7 +589,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpSaturatingSub + jsvmfn: OpSaturatingSub, + aliases: ['Saturating_Sub', 'saturating_sub', 'saturatingSub', 'satSub', 'sat_sub', 'Sat_Sub', 'Saturating_Minus', 'saturating_minus', 'saturatingMinus', 'satMinus', 'sat_minus', 'Sat_Minus'] } ], [ @@ -573,7 +602,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpAdd + jsvmfn: OpAdd, + aliases: ['Add', 'add', '+', 'Sum', 'sum', 'SUM'] } ], [ @@ -585,7 +615,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpDiv + jsvmfn: OpDiv, + aliases: ['Div', 'div', '/'] } ], [ @@ -597,7 +628,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpExp + jsvmfn: OpExp, + aliases: ['Exp', 'exp', '^', 'POW', 'Pow', 'pow'] } ], [ @@ -609,7 +641,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpMax + jsvmfn: OpMax, + aliases: ['Max', 'max', 'maximum', 'MAXIMUM', 'Maximum'] } ], [ @@ -621,7 +654,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpMin + jsvmfn: OpMin, + aliases: ['Min', 'min', 'MINIMUM', 'Minimum', 'minimum'] } ], [ @@ -633,7 +667,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpMod + jsvmfn: OpMod, + aliases: ['Mod', 'mod', '%'] } ], [ @@ -645,7 +680,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpMul + jsvmfn: OpMul, + aliases: ['Mul', 'mul', '*', 'x', 'X'] } ], [ @@ -657,7 +693,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, - jsvmfn: OpSub + jsvmfn: OpSub, + aliases: ['Sub', 'sub', '-', 'minus', 'Minus', 'MINUS'] } ], [ @@ -669,7 +706,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.derived, isZeroOperand: false, - jsvmfn: OpITierV2Report + jsvmfn: OpITierV2Report, + aliases: ['itierv2_report', 'Itierv2_Report', 'itierv2Report', 'report', 'Report', 'REPORT'] } ], [ @@ -681,7 +719,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.derived, isZeroOperand: false, - jsvmfn: OpITierV2ReportTimesForTier + jsvmfn: OpITierV2ReportTimesForTier, + aliases: ['itierv2_report_time_for_tier', 'Itierv2_Report_Time_For_Tier', 'Itierv2ReportTimeForTier', 'itierv2ReportTimeForTier', 'singleReport', 'SingleReport', 'Single_Report', 'single_report'] } ], [ @@ -693,7 +732,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: true, - jsvmfn: OpSaturatingDiff + jsvmfn: OpSaturatingDiff, + aliases: ['Saturating_Diff', 'saturating_diff', 'saturatingDiff', 'satDiff', 'SatDiff', 'sat_diff', 'Sat_Diff', 'SAT_DIFF'] } ], [ @@ -705,7 +745,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.derived, isZeroOperand: false, - jsvmfn: OpSelectLte + jsvmfn: OpSelectLte, + aliases: ['Select_Lte', 'select_lte', 'selectLte', 'SelectLte'] } ], [ @@ -717,7 +758,8 @@ export const OpMeta: Map = new Map([ pushes: pnp.one, pops: pnp.two, isZeroOperand: false, - jsvmfn: OpUpdateTimesForTierRange + jsvmfn: OpUpdateTimesForTierRange, + aliases: ['update_times_for_tier_range', 'Update_Times_For_Tier_Range', 'UpdateTimesForTierRange', 'updateTimesForTierRange'] } ] ]); diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 9141e07..7ff841f 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -11,21 +11,30 @@ export type Error = { position: number[] } +/** + * @public + */ +export type Value = { value: BigNumberish, position: number[] }; + +/** + * @public + */ +export type Op = { op: string, position: number[] }; + /** * @public */ export type ParseTree = Error | { opcode: { name: string, - position: number[] + position: number[], + description?: string }, operand: number, output: number, - parameters: ( - ParseTree | - { value: BigNumberish, position: number[] } - )[], + parameters: (ParseTree | Value)[], position: number[], + parens: number[], data?: any, }; @@ -36,8 +45,17 @@ export type ParseStack = | "(" | Error | ParseTree - | { op: string, position: number[] } - | { value: BigNumberish, position: number[] }; + | Op + | Value; + +/** + * @public + */ +export type Flat = + | Error + | Value + | { paren: "(" | ")", position: number[] } + | { opcode: string, position: number[], output: number, operand: number, description?: string, data?: any }; /** * @public @@ -55,10 +73,7 @@ export type State = { cache: number[] }, zipmaps: number, - multiOutputCache: ( - Exclude | - { value: BigNumberish, position: number[] } - )[] + multiOutputCache: (Exclude | Value)[] } /** @@ -91,6 +106,8 @@ export class Parser { public static sources: BytesLike[] = []; public static parseTree: Record = {}; + public static parseStack: + Record = {}; private static exp: string; private static input: string; @@ -109,6 +126,7 @@ export class Parser { zipmaps: 0, multiOutputCache: [] } + private static flat: Flat[] = []; private static placeholder: string = "_" private static hasError: boolean = false; private static data: any[] = Object.values(mapToRecord(OpMeta, ["data"])) @@ -129,7 +147,8 @@ export class Parser { */ public static get(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): [ Record, - StateConfig + StateConfig, + Record ] { this.parse(script, opmeta, placeholderChar); return [ @@ -137,7 +156,8 @@ export class Parser { { constants: this.constants, sources: this.sources - } + }, + this.parseStack ] } @@ -175,6 +195,23 @@ export class Parser { return this.parseTree; } + /** + * @public + * Method to get the parse stack object which is a flat array of parsed items + * + * @param script - the text script + * @param opmeta - (optional) custom opmeta + * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns A parse tree object + */ + public static getParseStack(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): Record< + number, + { stack: ParseStack[], position: number[] } + > { + this.parse(script, opmeta, placeholderChar); + return this.parseStack; + } + private static parse(script: string, opmeta?: typeof OpMeta, placeholderChar?: string) { this.reset(); this.parseTree = {}; @@ -231,15 +268,17 @@ export class Parser { while (this.exp.length > 0) { this.exp = this.trim(this.exp)[0]; - if (this.exp.startsWith(",")) { - this.exp = this.exp.replace(",", ""); - } - else if (this.exp.startsWith("(")) { + // if (this.exp.startsWith(",")) { + // this.exp = this.exp.replace(",", ""); + // } + if (this.exp.startsWith("(")) { this.exp = this.exp.replace("(", ""); this.state.parse.stack.push("("); + this.flat.push({ paren: "(", position: [] }); } else if (this.exp.startsWith(")")) { this.exp = this.exp.replace(")", ""); + this.flat.push({ paren: "(", position: [] }); this.resolveParens(hasCurlyBrackets ? positions[i][0] + 1 : positions[i][0]); if (!this.hasError) { try { @@ -313,6 +352,7 @@ export class Parser { private static reset = () => { this.state.parse.tree = []; this.state.parse.stack = []; + this.flat = []; } private static findIndex = (str: string): number => { @@ -349,7 +389,7 @@ export class Parser { return [str, leadingOffset, trailingOffset]; } - private static buildStateConfig = (expBlock: Exclude) => { + private static buildStateConfig = (expBlock: Exclude) => { let count = 0; if (!("error" in expBlock)) { let check = true; @@ -364,8 +404,8 @@ export class Parser { } if (check) { let element: - | Exclude - | { value: BigNumberish, position: number[] } + | Exclude + | Value let bytesArr_ = count !== 0 ? this.state.srcCache.splice(-count) : []; if (bytesArr_.length !== count) throw new Error("invalid script: cannot build the StateConfig") @@ -581,7 +621,7 @@ export class Parser { expBlock.parameters.length === 4 || expBlock.parameters.length === 11 ) { - expBlock.operand = expBlock.parameters.length - 2; + expBlock.operand = expBlock.parameters.length - 3; if (!("value" in expBlock.parameters[2] && Number(expBlock.parameters[2].value) > -1 && Number(expBlock.parameters[2].value) < 9)) { expBlock.operand = NaN; expBlock.output = 1; @@ -770,84 +810,96 @@ export class Parser { } } - private static trailingOp(str: string): boolean | string { - if (str.length > 0) { - if (str.startsWith("(") || str.startsWith(")")) return false; - - if (!str.startsWith(" ")) { - let str_ = str.slice(0, this.findIndex(str)); - str_ = this.rmComma(str_); - - if (isBigNumberish(str_)) return false; - if (this.names.includes(str_)) return true - for (let i = 0; i < this.aliases.length; i++) { - if (this.aliases[i] && this.aliases[i].includes(str_)) return true; + private static searchOps(str: string): boolean { + for (let i = 0; i < this.names.length; i++) { + if (str.startsWith(this.names[i])) return true; + } + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i]) { + for (let j = 0; j < this.aliases[i].length; j++) { + if (str.startsWith(this.aliases[i][j])) return true; } } - else { - str = this.trim(str)[0]; - if (str.startsWith("(") || str.startsWith(")")) return false; - let index1_ = this.findIndex(str) < 0 - ? str.length - : this.findIndex(str) === 0 - ? 1 - : this.findIndex(str); + } + return false + } - let str1_ = str.slice(0, index1_); - let consumee1_ = str1_; - let isOp1_ = false; - str1_ = this.rmComma(str1_); + // private static trailingOp(str: string): boolean | string { + // if (str.length > 0) { + // if (str.startsWith("(") || str.startsWith(")")) return false; - if (str.startsWith("(") || str.startsWith(")")) return false; - if (isBigNumberish(str1_)) return false; - if (this.names.includes(str1_)) isOp1_ = true - for (let i = 0; i < this.aliases.length; i++) { - if (this.aliases[i] && this.aliases[i].includes(str1_)) { - isOp1_ = true; - break; - } - } - str = str.replace(consumee1_, ""); - str = this.trim(str)[0]; - if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { - return "ambiguous expresion"; - } - let index2_ = this.findIndex(str) < 0 - ? str.length - : this.findIndex(str) === 0 - ? 1 - : this.findIndex(str); + // if (!str.startsWith(" ")) { + // let str_ = str.slice(0, this.findIndex(str)); + // str_ = this.rmComma(str_); - let str2_ = str.slice(0, index2_); - str2_ = this.rmComma(str2_); + // if (isBigNumberish(str_)) return false; + // if (this.names.includes(str_)) return true + // for (let i = 0; i < this.aliases.length; i++) { + // if (this.aliases[i] && this.aliases[i].includes(str_)) return true; + // } + // } + // else { + // str = this.trim(str)[0]; + // if (str.startsWith("(") || str.startsWith(")")) return false; + // let index1_ = this.findIndex(str) < 0 + // ? str.length + // : this.findIndex(str) === 0 + // ? 1 + // : this.findIndex(str); - if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { - return "ambiguous expresion"; - } + // let str1_ = str.slice(0, index1_); + // let consumee1_ = str1_; + // let isOp1_ = false; + // str1_ = this.rmComma(str1_); - if (isOp1_ && isBigNumberish(str2_)) return true; - if (isOp1_ && this.names.includes(str2_)) return true - for (let i = 0; i < this.aliases.length; i++) { - if ( - isOp1_ && this.aliases[i] && - this.aliases[i].includes(str2_) - ) return true; - } - return false; - } - return false; - } - else return false; - } + // if (str.startsWith("(") || str.startsWith(")")) return false; + // if (isBigNumberish(str1_)) return false; + // if (this.names.includes(str1_)) isOp1_ = true + // for (let i = 0; i < this.aliases.length; i++) { + // if (this.aliases[i] && this.aliases[i].includes(str1_)) { + // isOp1_ = true; + // break; + // } + // } + // str = str.replace(consumee1_, ""); + // str = this.trim(str)[0]; + // if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { + // return "ambiguous expresion"; + // } + // let index2_ = this.findIndex(str) < 0 + // ? str.length + // : this.findIndex(str) === 0 + // ? 1 + // : this.findIndex(str); + + // let str2_ = str.slice(0, index2_); + // str2_ = this.rmComma(str2_); + + // if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { + // return "ambiguous expresion"; + // } + + // if (isOp1_ && isBigNumberish(str2_)) return true; + // if (isOp1_ && this.names.includes(str2_)) return true + // for (let i = 0; i < this.aliases.length; i++) { + // if ( + // isOp1_ && this.aliases[i] && + // this.aliases[i].includes(str2_) + // ) return true; + // } + // return false; + // } + // return false; + // } + // else return false; + // } private static resolveInfix( stack: Exclude[], position: number[] ): ParseTree { let infixExp: ParseTree; - let tmp_ = stack[1] as - { op: string, position: number[] } | - { error: string, position: number[] }; + let tmp_ = stack[1] as Op | Error; if ("op" in tmp_) { infixExp = { @@ -857,35 +909,23 @@ export class Parser { }, operand: 2, parameters: [ - (stack[0] as Exclude< - ParseStack, - { op: string, position: number[] } | "(" - >), - (stack[2] as Exclude< - ParseStack, - { op: string, position: number[] } | "(" - >) + (stack[0] as Exclude), + (stack[2] as Exclude) ], output: NaN, position: position, + parens: position, data: this.data[this.names.indexOf(tmp_.op)] ? this.data[this.names.indexOf(tmp_.op)] : undefined } if (stack.length > 3) { for (let i = 3; i < stack.length; i += 2) { - let item = stack[i] as Extract< - ParseStack, - { op: BigNumberish, position: number[] } | - { error: BigNumberish, position: number[] } - >; + let item = stack[i] as Extract; if ("op" in item) { if (item.op === tmp_.op) { infixExp.parameters.push( - (stack[i + 1] as Exclude< - ParseStack, - { op: string, position: number[] } | "(" - >), + (stack[i + 1] as Exclude), ); infixExp.opcode.position.push(...item.position); infixExp.operand++; @@ -1088,6 +1128,7 @@ export class Parser { position: tmp.position }, position: [tmp.position[0], endIndex_], + parens: [tmp.position[0] + tmp.op.length, endIndex_], operand: isInfix ? Math.floor(parens_.length / 2) + 1 : parens_.length, output: NaN, parameters: isInfix @@ -1100,14 +1141,16 @@ export class Parser { }) ) } - else if (!isPrefix && !isPostfix && this.trailingOp(this.exp)) { - let err = this.trailingOp(this.exp); + else if (!isPrefix && !isPostfix && this.searchOps(this.exp)) { + //let err = this.trailingOp(this.exp); + let err = this.searchOps(this.exp); this.consume(entry); - let tmp_ = this.state.parse.stack.pop() as { op: string, position: number[] }; + let tmp_ = this.state.parse.stack.pop() as Op; - if (typeof err === "string") { + //if (typeof err === "string") { + if (!err) { this.state.parse.stack.push({ - error: err, + error: '', position: [startIndex_, tmp_.position[1]], }); if (!this.hasError) this.hasError = true; @@ -1120,6 +1163,7 @@ export class Parser { position: tmp_.position }, position: [startIndex_, tmp_.position[1]], + parens: [startIndex_, endIndex_], operand: isInfix ? Math.floor(parens_.length / 2) + 1 : parens_.length, output: NaN, parameters: isInfix @@ -1144,6 +1188,7 @@ export class Parser { this.resolveOp({ opcode: tmp_, position: [startIndex_, endIndex_], + parens: [startIndex_, endIndex_], operand: parens_.length, output: NaN, parameters: parens_ as ParseTree[], @@ -1166,6 +1211,7 @@ export class Parser { } }).opcode, position: [startIndex_, endIndex_], + parens: [startIndex_, endIndex_], operand: parens_.length, output: NaN, parameters: parens_ as ParseTree[], @@ -1236,38 +1282,66 @@ export class Parser { else { for (let i = 0; i < this.aliases.length; i++) { if (this.aliases[i] && this.aliases[i].includes(str_)) { - this.state.parse.stack.push( - { - op: this.names[i], - position: [startPosition, startPosition + this.names[i].length - 1] - } - ); this.exp = this.exp.replace(consumee_, ""); + let [tmpExp, offset] = this.trim(this.exp); + if (tmpExp.startsWith("(")) { + if (offset === 0 && consumee_.endsWith(str_)) { + this.state.parse.stack.push({ + op: this.names[i], + position: [startPosition, startPosition + str_.length - 1] + }); + } + else { + this.state.parse.stack.push({ + error: 'illigal characters between opcode and parenthesis', + position: [startPosition, startPosition + str_.length - 1] + }) + } + } + else { + this.state.parse.stack.push({ + op: this.names[i], + position: [startPosition, startPosition + str_.length - 1] + }); + } check_ = false; break; } } if (check_) { if (this.names.includes(str_)) { - this.state.parse.stack.push( - { + this.exp = this.exp.replace(consumee_, ""); + let [tmpExp, offset] = this.trim(this.exp); + if (tmpExp.startsWith("(")) { + if (offset === 0 && consumee_.endsWith(str_)) { + this.state.parse.stack.push({ + op: str_, + position: [startPosition, startPosition + str_.length - 1] + }); + } + else { + this.state.parse.stack.push({ + error: 'illigal characters between opcode and parenthesis', + position: [startPosition, startPosition + str_.length - 1] + }) + } + } + else { + this.state.parse.stack.push({ op: str_, position: [startPosition, startPosition + str_.length - 1] - } - ); - this.exp = this.exp.replace(consumee_, ""); + }); + } } else if (str_ === "arg") { this.exp = this.exp.replace(consumee_, ""); let i_ = this.exp.indexOf(")") + 1; str_ = str_ + this.exp.slice(0, i_); this.exp = this.exp.slice(i_, this.exp.length); - this.state.parse.stack.push( - { - value: str_, - position: [startPosition, startPosition + str_.length - 1] - } - ); + this.state.parse.stack.push({ + value: str_, + position: [startPosition, startPosition + str_.length - 1] + }); } else if (str_ === this.placeholder) { this.state.parse.stack.push({ @@ -1278,31 +1352,25 @@ export class Parser { } else { if (str_.includes(".")) { - this.state.parse.stack.push( - { - error: `invalid number: float ${str_}`, - position: [startPosition, startPosition + str_.length - 1] - } - ); + this.state.parse.stack.push({ + error: `invalid number: float ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + }); this.exp = this.exp.replace(consumee_, ""); if (!this.hasError) this.hasError = true; } else if (isBigNumberish(str_)) { - this.state.parse.stack.push( - { - value: str_, - position: [startPosition, startPosition + str_.length - 1] - } - ); + this.state.parse.stack.push({ + value: str_, + position: [startPosition, startPosition + str_.length - 1] + }); this.exp = this.exp.replace(consumee_, ""); } else { - this.state.parse.stack.push( - { - error: `unknown: ${str_}`, - position: [startPosition, startPosition + str_.length - 1] - } - ); + this.state.parse.stack.push({ + error: `unknown: ${str_}`, + position: [startPosition, startPosition + str_.length - 1] + }); this.exp = this.exp.replace(consumee_, ""); if (!this.hasError) this.hasError = true; }; @@ -1312,3 +1380,7 @@ export class Parser { } } } +console.log((Parser.getStateConfig("eager_if(iszero(ITIERV2_REPORT(0xDe61D65dBaBC7274f18c747b6243b03E11933feC context(0))) 0 sub(min(mul(sub(block_timestamp() 1664806958) 3) div(1000000000 5)) min(mul(saturating_sub(ITIERV2_REPORT_TIME_FOR_TIER(this_address() context(0) 1) 1664806958) 3) div(1000000000 5))))"))) +// console.log(isBigNumberish("1")) +// let a = "1" +// console.log(a.slice(1, a.length)) \ No newline at end of file From 1d8815c89d764f82d8ae61c5c33cf5aa21f5cb87 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 3 Oct 2022 22:04:12 +0000 Subject: [PATCH 115/125] Update parser.ts --- src/vm/parser.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 7ff841f..ca7712a 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -1380,7 +1380,3 @@ export class Parser { } } } -console.log((Parser.getStateConfig("eager_if(iszero(ITIERV2_REPORT(0xDe61D65dBaBC7274f18c747b6243b03E11933feC context(0))) 0 sub(min(mul(sub(block_timestamp() 1664806958) 3) div(1000000000 5)) min(mul(saturating_sub(ITIERV2_REPORT_TIME_FOR_TIER(this_address() context(0) 1) 1664806958) 3) div(1000000000 5))))"))) -// console.log(isBigNumberish("1")) -// let a = "1" -// console.log(a.slice(1, a.length)) \ No newline at end of file From 8a5416aba43142d09e4f5ab4f6c902a4aca9fae7 Mon Sep 17 00:00:00 2001 From: NanezX Date: Thu, 6 Oct 2022 16:22:48 -0400 Subject: [PATCH 116/125] new commit to fix stake - sdk temp --- package.json | 2 +- src/typechain/Stake.ts | 26 ++++++++++++------- .../factories/StakeFactory__factory.ts | 2 +- src/typechain/factories/Stake__factory.ts | 22 ++++++++++++---- yarn.lock | 4 +-- 5 files changed, 37 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index a6f419c..a8570f2 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ } ], "devDependencies": { - "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff", + "@beehiveinnovation/rain-protocol": "git+https://github.com/beehive-innovation/rain-protocol.git#a7b7213dfa7c2b847ebedf79e89f642ace0548da", "@microsoft/api-extractor": "^7.22.2", "@nomiclabs/hardhat-ethers": "^2.0.3", "@nomiclabs/hardhat-etherscan": "3.0.3", diff --git a/src/typechain/Stake.ts b/src/typechain/Stake.ts index 9f945e2..3c613a2 100644 --- a/src/typechain/Stake.ts +++ b/src/typechain/Stake.ts @@ -239,7 +239,7 @@ export interface Stake extends BaseContract { ): Promise; deposit( - amount_: BigNumberish, + assets_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -298,7 +298,7 @@ export interface Stake extends BaseContract { ): Promise; withdraw( - amount_: BigNumberish, + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; @@ -326,7 +326,7 @@ export interface Stake extends BaseContract { ): Promise; deposit( - amount_: BigNumberish, + assets_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -385,7 +385,7 @@ export interface Stake extends BaseContract { ): Promise; withdraw( - amount_: BigNumberish, + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -412,7 +412,10 @@ export interface Stake extends BaseContract { overrides?: CallOverrides ): Promise; - deposit(amount_: BigNumberish, overrides?: CallOverrides): Promise; + deposit( + assets_: BigNumberish, + overrides?: CallOverrides + ): Promise; deposits( arg0: string, @@ -468,7 +471,10 @@ export interface Stake extends BaseContract { overrides?: CallOverrides ): Promise; - withdraw(amount_: BigNumberish, overrides?: CallOverrides): Promise; + withdraw( + shares_: BigNumberish, + overrides?: CallOverrides + ): Promise; }; filters: { @@ -528,7 +534,7 @@ export interface Stake extends BaseContract { ): Promise; deposit( - amount_: BigNumberish, + assets_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -587,7 +593,7 @@ export interface Stake extends BaseContract { ): Promise; withdraw( - amount_: BigNumberish, + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; @@ -619,7 +625,7 @@ export interface Stake extends BaseContract { ): Promise; deposit( - amount_: BigNumberish, + assets_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; @@ -678,7 +684,7 @@ export interface Stake extends BaseContract { ): Promise; withdraw( - amount_: BigNumberish, + shares_: BigNumberish, overrides?: Overrides & { from?: string | Promise } ): Promise; }; diff --git a/src/typechain/factories/StakeFactory__factory.ts b/src/typechain/factories/StakeFactory__factory.ts index 8a3bc65..8c7570c 100644 --- a/src/typechain/factories/StakeFactory__factory.ts +++ b/src/typechain/factories/StakeFactory__factory.ts @@ -144,7 +144,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b61292980610a1783390190565b6080516109536100c46000396000818160a6015261030d01526109536000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f3660046105cd565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c36600461066a565b6102bd565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d6366004610718565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102e7826040516020016102d391906107af565b604051602081830303815290604052610111565b92915050565b60008082806020019051810190610304919061087e565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103869085906004016107af565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610541576105416104a2565b604052919050565b600067ffffffffffffffff821115610563576105636104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105a261059d84610549565b6104fa565b90508281528383830111156105b657600080fd5b828260208301376000602084830101529392505050565b6000602082840312156105df57600080fd5b813567ffffffffffffffff8111156105f657600080fd5b8201601f8101841361060757600080fd5b6106168482356020840161058f565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461064057600080fd5b50565b600082601f83011261065457600080fd5b6106638383356020850161058f565b9392505050565b60006020828403121561067c57600080fd5b813567ffffffffffffffff8082111561069457600080fd5b90830190608082860312156106a857600080fd5b6106b06104d1565b82356106bb8161061e565b8152602083810135908201526040830135828111156106d957600080fd5b6106e587828601610643565b6040830152506060830135828111156106fd57600080fd5b61070987828601610643565b60608301525095945050505050565b60006020828403121561072a57600080fd5b81356106638161061e565b60005b83811015610750578181015183820152602001610738565b8381111561075f576000848401525b50505050565b6000815180845261077d816020860160208601610735565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526107f560a0840182610765565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526108308282610765565b95945050505050565b600082601f83011261084a57600080fd5b815161085861059d82610549565b81815284602083860101111561086d57600080fd5b610616826020830160208701610735565b60006020828403121561089057600080fd5b815167ffffffffffffffff808211156108a857600080fd5b90830190608082860312156108bc57600080fd5b6108c46104d1565b82516108cf8161061e565b8152602083810151908201526040830151828111156108ed57600080fd5b6108f987828601610839565b60408301525060608301518281111561091157600080fd5b6107098782860161083956fea2646970667358221220fe79bca5b62859d84b747d90fb44b014afee6759f5bef7e7cd9d4cc62e9ac86164736f6c634300080a0033608060405234801561001057600080fd5b506001606555612904806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610284578063dd62ed3e146102d0578063fad876c31461031657600080fd5b8063b6b55f251461025e578063caa0eb3b1461027157600080fd5b806388d686041461021d57806395d89b4114610230578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c557806339509351146101d457806370a08231146101e757600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e61014936600461227f565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906122ed565b61014e610186366004612367565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612391565b61046c565b6101c36101be3660046123cd565b610492565b005b6040516012815260200161015a565b61014e6101e2366004612367565b610814565b61018f6101f53660046123e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022b36600461244d565b610860565b61016b6108f5565b61014e610246366004612367565b610904565b61014e610259366004612367565b6109e0565b6101c361026c3660046123cd565b6109ee565b61018f61027f3660046124a0565b610d70565b610297610292366004612367565b610dd2565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102de3660046124fa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101c361032436600461252d565b610e2e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d190612568565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90612568565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111d4565b5060019392505050565b60003361047a858285611388565b61048585858561145f565b60019150505b9392505050565b60026065541415610504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b3360009081526068602052604081205461058c906001906125eb565b33600090815260686020526040812080549293509091839081106105b2576105b2612602565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105ef84836125eb565b9050600081156106095761060533836000611712565b5090505b808411156106675733600090815260686020526040902080548590811061063257610632612602565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90930192610609565b81156106f75761067682611871565b33600090815260686020526040902080548390811061069757610697612602565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610724565b33600090815260686020526040902080548590811061071857610718612602565b60009182526020822001555b600061072f60355490565b905061073b3387611923565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610807913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190612631565b6107dd908a61264a565b6107e79190612687565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b0d565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085b9087906126c2565b6111d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108eb5760008686838181106108ac576108ac612602565b9050602002013590506108c0888286611712565b93505063ffffffff8314156108d557506108eb565b6108e0858385611be1565b945050600101610890565b5050509392505050565b6060603780546103d190612568565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fb565b6109d582868684036111d4565b506001949350505050565b60003361046281858561145f565b60026065541415610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fb565b600260655580610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a9190612631565b90506000610b6760355490565b606654909150610b8f9073ffffffffffffffffffffffffffffffffffffffff16333086611c6a565b600081610bab57606754610ba4908590611cc8565b9050610bc3565b82610bb6858461264a565b610bc09190612687565b90505b60008111610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fb565b610c373382611ce7565b336000908152606860205260408120549081610c54576000610cb1565b336000908152606860205260409020610c6e6001846125eb565b81548110610c7e57610c7e612602565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610d0c610d078a866126c2565b611871565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff909416939093179190920155606555505050505050565b600083610d7f57506000610dca565b818411610dc35760008383610d956001886125eb565b818110610da457610da4612602565b905060200201359050610db986826000611712565b9250610dca915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610dee57600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e4e5750600054600160ff909116105b80610e685750303b158015610e68575060005460ff166001145b610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f6160208401846123e6565b73ffffffffffffffffffffffffffffffffffffffff161415610fdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fb565b600082602001351161104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fb565b6110d961105d60408401846126da565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109f9250505060608501856126da565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e0792505050565b6110e660208301836123e6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061116590339085906127ec565b60405180910390a180156111d057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611276576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff8216611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611459578181101561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fb565b61145984848484036111d4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff82166115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169f9084906126c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161170591815260200190565b60405180910390a3611459565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b84861015611809576117668686611ea8565b73ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805491935090839081106117a1576117a1612602565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117fe57819450611754565b816001019550611754565b82851461185e5773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061184757611847612602565b60009182526020909120015463ffffffff16611864565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fb565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611ab89084906125eb565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161137b565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b089084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611ec3565b6000826008811115611c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fb565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526114599085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611b5f565b6000670de0b6b3a7640000611cdd838561264a565b61048b9190612687565b73ffffffffffffffffffffffffffffffffffffffff8216611d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fb565b8060356000828254611d7691906126c2565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611db09084906126c2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b6111d08282611fcf565b6000611eb76002848418612687565b61048b908484166126c2565b6000611f25826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661208d9092919063ffffffff16565b805190915015611b085780806020019051810190611f439190612890565b611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fb565b600054610100900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b81516120799060369060208501906121ef565b508051611b089060379060208401906121ef565b6060610dca84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fb565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161213f91906128b2565b60006040518083038185875af1925050503d806000811461217c576040519150601f19603f3d011682016040523d82523d6000602084013e612181565b606091505b509150915061219182828661219c565b979650505050505050565b606083156121ab57508161048b565b8251156121bb5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb91906122ed565b8280546121fb90612568565b90600052602060002090601f01602090048101928261221d5760008555612263565b82601f1061223657805160ff1916838001178555612263565b82800160010185558215612263579182015b82811115612263578251825591602001919060010190612248565b5061191f9291505b8082111561191f576000815560010161226b565b60006020828403121561229157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b838110156122dc5781810151838201526020016122c4565b838111156114595750506000910152565b602081526000825180602084015261230c8160408501602087016122c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461236257600080fd5b919050565b6000806040838503121561237a57600080fd5b6123838361233e565b946020939093013593505050565b6000806000606084860312156123a657600080fd5b6123af8461233e565b92506123bd6020850161233e565b9150604084013590509250925092565b6000602082840312156123df57600080fd5b5035919050565b6000602082840312156123f857600080fd5b61048b8261233e565b60008083601f84011261241357600080fd5b50813567ffffffffffffffff81111561242b57600080fd5b6020830191508360208260051b850101111561244657600080fd5b9250929050565b60008060006040848603121561246257600080fd5b61246b8461233e565b9250602084013567ffffffffffffffff81111561248757600080fd5b61249386828701612401565b9497909650939450505050565b600080600080606085870312156124b657600080fd5b6124bf8561233e565b935060208501359250604085013567ffffffffffffffff8111156124e257600080fd5b6124ee87828801612401565b95989497509550505050565b6000806040838503121561250d57600080fd5b6125168361233e565b91506125246020840161233e565b90509250929050565b60006020828403121561253f57600080fd5b813567ffffffffffffffff81111561255657600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061257c57607f821691505b602082108114156125b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156125fd576125fd6125bc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561264357600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612682576126826125bc565b500290565b6000826126bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156126d5576126d56125bc565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261270f57600080fd5b83018035915067ffffffffffffffff82111561272a57600080fd5b60200191503681900382131561244657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261277457600080fd5b830160208101925035905067ffffffffffffffff81111561279457600080fd5b80360383131561244657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128198561233e565b1660408401525060208301356060830152612837604084018461273f565b60808085015261284b60c0850182846127a3565b91505061285b606085018561273f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121918382846127a3565b6000602082840312156128a257600080fd5b8151801515811461048b57600080fd5b600082516128c48184602087016122c1565b919091019291505056fea2646970667358221220518806b70f1ba1b4e4a7136880cd900808327839a2711add0378549565eecebc64736f6c634300080a0033"; + "0x60a060405234801561001057600080fd5b506001600090815560405161002490610096565b604051809103906000f080158015610040573d6000803e3d6000fd5b50604080513381526001600160a01b03831660208201529192507f7fac34ecf0b1b374cd9659e3d17db602659d53f1162b1f20142e6c02694aed70910160405180910390a16001600160a01b03166080526100a3565b612a1a80610a1783390190565b6080516109536100c46000396000818160a6015261030d01526109536000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80632ea72a4914610051578063412eede31461008e5780635c60da1b146100a1578063fc91a897146100c8575b600080fd5b61006461005f3660046105cd565b610111565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61006461009c36600461066a565b6102bd565b6100647f000000000000000000000000000000000000000000000000000000000000000081565b6101016100d6366004610718565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205460ff1690565b6040519015158152602001610085565b600060026000541415610185576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b60026000908155610195836102ed565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205490915060ff1615610228576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4455504c49434154455f4348494c440000000000000000000000000000000000604482015260640161017c565b73ffffffffffffffffffffffffffffffffffffffff811660008181526001602081815260409283902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169092179091558151338152908101929092527f7da70c4e5387d7038610b79ca7d304caaef815826e51e67cf247135387a79bce910160405180910390a1600160005592915050565b60006102e7826040516020016102d391906107af565b604051602081830303815290604052610111565b92915050565b60008082806020019051810190610304919061087e565b905060006103317f00000000000000000000000000000000000000000000000000000000000000006103c0565b6040517ffad876c300000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff82169063fad876c3906103869085906004016107af565b600060405180830381600087803b1580156103a057600080fd5b505af11580156103b4573d6000803e3d6000fd5b50929695505050505050565b60006040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528260601b60148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f091505073ffffffffffffffffffffffffffffffffffffffff811661049d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f455243313136373a20637265617465206661696c656400000000000000000000604482015260640161017c565b919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156104f4576104f46104a2565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610541576105416104a2565b604052919050565b600067ffffffffffffffff821115610563576105636104a2565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60006105a261059d84610549565b6104fa565b90508281528383830111156105b657600080fd5b828260208301376000602084830101529392505050565b6000602082840312156105df57600080fd5b813567ffffffffffffffff8111156105f657600080fd5b8201601f8101841361060757600080fd5b6106168482356020840161058f565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461064057600080fd5b50565b600082601f83011261065457600080fd5b6106638383356020850161058f565b9392505050565b60006020828403121561067c57600080fd5b813567ffffffffffffffff8082111561069457600080fd5b90830190608082860312156106a857600080fd5b6106b06104d1565b82356106bb8161061e565b8152602083810135908201526040830135828111156106d957600080fd5b6106e587828601610643565b6040830152506060830135828111156106fd57600080fd5b61070987828601610643565b60608301525095945050505050565b60006020828403121561072a57600080fd5b81356106638161061e565b60005b83811015610750578181015183820152602001610738565b8381111561075f576000848401525b50505050565b6000815180845261077d816020860160208601610735565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815273ffffffffffffffffffffffffffffffffffffffff82511660208201526020820151604082015260006040830151608060608401526107f560a0840182610765565b905060608401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160808501526108308282610765565b95945050505050565b600082601f83011261084a57600080fd5b815161085861059d82610549565b81815284602083860101111561086d57600080fd5b610616826020830160208701610735565b60006020828403121561089057600080fd5b815167ffffffffffffffff808211156108a857600080fd5b90830190608082860312156108bc57600080fd5b6108c46104d1565b82516108cf8161061e565b8152602083810151908201526040830151828111156108ed57600080fd5b6108f987828601610839565b60408301525060608301518281111561091157600080fd5b6107098782860161083956fea2646970667358221220daa1910361226a1d63c074a56e40694d3b5abdbec2596ad5287f30b2dc42b5a164736f6c634300080a0033608060405234801561001057600080fd5b5060016065556129f5806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610282578063dd62ed3e146102ce578063fad876c31461031457600080fd5b8063b6b55f251461025c578063caa0eb3b1461026f57600080fd5b806388d686041461021b57806395d89b411461022e578063a457c2d714610236578063a9059cbb1461024957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c357806339509351146101d257806370a08231146101e557600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004612341565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906123af565b61014e610186366004612429565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612453565b61046c565b61018f6101be36600461248f565b610492565b6040516012815260200161015a565b61014e6101e0366004612429565b610810565b61018f6101f33660046124a8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022936600461250f565b61085c565b61016b6108f1565b61014e610244366004612429565b610900565b61014e610257366004612429565b6109dc565b61018f61026a36600461248f565b6109ea565b61018f61027d366004612562565b610d64565b610295610290366004612429565b610dc6565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102dc3660046125bc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6103276103223660046125ef565b610e22565b005b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d19061262a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd9061262a565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111c8565b5060019392505050565b60003361047a85828561137c565b610485858585611453565b60019150505b9392505050565b600060026065541415610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655581610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b3360009081526068602052604081205461058e906001906126ad565b33600090815260686020526040812080549293509091839081106105b4576105b46126c4565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105f185836126ad565b90506000811561060b5761060733836000611706565b5090505b8084111561066957336000908152606860205260409020805485908110610634576106346126c4565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019261060b565b81156106f95761067882611865565b336000908152606860205260409020805483908110610699576106996126c4565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610726565b33600090815260686020526040902080548590811061071a5761071a6126c4565b60009182526020822001555b600061073160355490565b905061073d3388611917565b6066546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107d99173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906126f3565b889083611b01565b6066549096506108009073ffffffffffffffffffffffffffffffffffffffff163388611bcf565b5050600160655550919392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085790879061270c565b6111c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108e75760008686838181106108a8576108a86126c4565b9050602002013590506108bc888286611706565b93505063ffffffff8314156108d157506108e7565b6108dc858385611ca3565b94505060010161088c565b5050509392505050565b6060603780546103d19061262a565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fd565b6109d182868684036111c8565b506001949350505050565b600033610462818585611453565b600060026065541415610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fd565b600260655581610ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906126f3565b90506000610b6560355490565b606654909150610b8d9073ffffffffffffffffffffffffffffffffffffffff16333087611d2c565b80610ba757606754610ba0908590611d8a565b9250610bb5565b610bb2818584611b01565b92505b60008311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fd565b610c293384611da9565b336000908152606860205260408120549081610c46576000610ca3565b336000908152606860205260409020610c606001846126ad565b81548110610c7057610c706126c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610cfe610cf9898661270c565b611865565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555092949350505050565b600083610d7357506000610dbe565b818411610db75760008383610d896001886126ad565b818110610d9857610d986126c4565b905060200201359050610dad86826000611706565b9250610dbe915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610de257600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e425750600054600160ff909116105b80610e5c5750303b158015610e5c575060005460ff166001145b610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f4657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f5560208401846124a8565b73ffffffffffffffffffffffffffffffffffffffff161415610fd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fd565b6000826020013511611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fd565b6110cd6110516040840184612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611093925050506060850185612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ec992505050565b6110da60208301836124a8565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906111599033908590612836565b60405180910390a180156111c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461144d5781811015611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fd565b61144d84848484036111c8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166114f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff8216611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169390849061270c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116f991815260200190565b60405180910390a361144d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b848610156117fd5761175a8686611f6a565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902080549193509083908110611795576117956126c4565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117f257819450611748565b816001019550611748565b8285146118525773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061183b5761183b6126c4565b60009182526020909120015463ffffffff16611858565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fd565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611aac9084906126ad565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161136f565b505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415611b5a57838281611b5057611b506128da565b049250505061048b565b808411611b6657600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611afc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f85565b6000826008811115611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fd565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261144d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611c21565b6000670de0b6b3a7640000611d9f8385612909565b61048b9190612946565b73ffffffffffffffffffffffffffffffffffffffff8216611e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fd565b8060356000828254611e38919061270c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e7290849061270c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b6111c48282612091565b6000611f796002848418612946565b61048b9084841661270c565b6000611fe7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661214f9092919063ffffffff16565b805190915015611afc57808060200190518101906120059190612981565b611afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fd565b600054610100900460ff16612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b815161213b9060369060208501906122b1565b508051611afc9060379060208401906122b1565b6060610dbe84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6121d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fd565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161220191906129a3565b60006040518083038185875af1925050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b509150915061225382828661225e565b979650505050505050565b6060831561226d57508161048b565b82511561227d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd91906123af565b8280546122bd9061262a565b90600052602060002090601f0160209004810192826122df5760008555612325565b82601f106122f857805160ff1916838001178555612325565b82800160010185558215612325579182015b8281111561232557825182559160200191906001019061230a565b506119139291505b80821115611913576000815560010161232d565b60006020828403121561235357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b8381101561239e578181015183820152602001612386565b8381111561144d5750506000910152565b60208152600082518060208401526123ce816040850160208701612383565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461242457600080fd5b919050565b6000806040838503121561243c57600080fd5b61244583612400565b946020939093013593505050565b60008060006060848603121561246857600080fd5b61247184612400565b925061247f60208501612400565b9150604084013590509250925092565b6000602082840312156124a157600080fd5b5035919050565b6000602082840312156124ba57600080fd5b61048b82612400565b60008083601f8401126124d557600080fd5b50813567ffffffffffffffff8111156124ed57600080fd5b6020830191508360208260051b850101111561250857600080fd5b9250929050565b60008060006040848603121561252457600080fd5b61252d84612400565b9250602084013567ffffffffffffffff81111561254957600080fd5b612555868287016124c3565b9497909650939450505050565b6000806000806060858703121561257857600080fd5b61258185612400565b935060208501359250604085013567ffffffffffffffff8111156125a457600080fd5b6125b0878288016124c3565b95989497509550505050565b600080604083850312156125cf57600080fd5b6125d883612400565b91506125e660208401612400565b90509250929050565b60006020828403121561260157600080fd5b813567ffffffffffffffff81111561261857600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061263e57607f821691505b60208210811415612678577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126bf576126bf61267e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561270557600080fd5b5051919050565b6000821982111561271f5761271f61267e565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261275957600080fd5b83018035915067ffffffffffffffff82111561277457600080fd5b60200191503681900382131561250857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127be57600080fd5b830160208101925035905067ffffffffffffffff8111156127de57600080fd5b80360383131561250857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061286385612400565b16604084015250602083013560608301526128816040840184612789565b60808085015261289560c0850182846127ed565b9150506128a56060850185612789565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526122538382846127ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129415761294161267e565b500290565b60008261297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561299357600080fd5b8151801515811461048b57600080fd5b600082516129b5818460208701612383565b919091019291505056fea2646970667358221220e68c58075b5c82aa176734b67380aee0a33811e0f64c74463d74e00892f3ad1564736f6c634300080a0033"; type StakeFactoryConstructorParams = | [signer?: Signer] diff --git a/src/typechain/factories/Stake__factory.ts b/src/typechain/factories/Stake__factory.ts index 21ffe6e..6f7bc20 100644 --- a/src/typechain/factories/Stake__factory.ts +++ b/src/typechain/factories/Stake__factory.ts @@ -218,12 +218,18 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "amount_", + name: "assets_", type: "uint256", }, ], name: "deposit", - outputs: [], + outputs: [ + { + internalType: "uint256", + name: "shares_", + type: "uint256", + }, + ], stateMutability: "nonpayable", type: "function", }, @@ -483,19 +489,25 @@ const _abi = [ inputs: [ { internalType: "uint256", - name: "amount_", + name: "shares_", type: "uint256", }, ], name: "withdraw", - outputs: [], + outputs: [ + { + internalType: "uint256", + name: "assets_", + type: "uint256", + }, + ], stateMutability: "nonpayable", type: "function", }, ]; const _bytecode = - "0x608060405234801561001057600080fd5b506001606555612904806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610284578063dd62ed3e146102d0578063fad876c31461031657600080fd5b8063b6b55f251461025e578063caa0eb3b1461027157600080fd5b806388d686041461021d57806395d89b4114610230578063a457c2d714610238578063a9059cbb1461024b57600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c557806339509351146101d457806370a08231146101e757600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e61014936600461227f565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906122ed565b61014e610186366004612367565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612391565b61046c565b6101c36101be3660046123cd565b610492565b005b6040516012815260200161015a565b61014e6101e2366004612367565b610814565b61018f6101f53660046123e6565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022b36600461244d565b610860565b61016b6108f5565b61014e610246366004612367565b610904565b61014e610259366004612367565b6109e0565b6101c361026c3660046123cd565b6109ee565b61018f61027f3660046124a0565b610d70565b610297610292366004612367565b610dd2565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102de3660046124fa565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6101c361032436600461252d565b610e2e565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d190612568565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90612568565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111d4565b5060019392505050565b60003361047a858285611388565b61048585858561145f565b60019150505b9392505050565b60026065541415610504576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655580610570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b3360009081526068602052604081205461058c906001906125eb565b33600090815260686020526040812080549293509091839081106105b2576105b2612602565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105ef84836125eb565b9050600081156106095761060533836000611712565b5090505b808411156106675733600090815260686020526040902080548590811061063257610632612602565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90930192610609565b81156106f75761067682611871565b33600090815260686020526040902080548390811061069757610697612602565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610724565b33600090815260686020526040902080548590811061071857610718612602565b60009182526020822001555b600061072f60355490565b905061073b3387611923565b6066546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152610807913391849173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d39190612631565b6107dd908a61264a565b6107e79190612687565b60665473ffffffffffffffffffffffffffffffffffffffff169190611b0d565b5050600160655550505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085b9087906126c2565b6111d4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108eb5760008686838181106108ac576108ac612602565b9050602002013590506108c0888286611712565b93505063ffffffff8314156108d557506108eb565b6108e0858385611be1565b945050600101610890565b5050509392505050565b6060603780546103d190612568565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fb565b6109d582868684036111d4565b506001949350505050565b60003361046281858561145f565b60026065541415610a5b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fb565b600260655580610ac7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fb565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5a9190612631565b90506000610b6760355490565b606654909150610b8f9073ffffffffffffffffffffffffffffffffffffffff16333086611c6a565b600081610bab57606754610ba4908590611cc8565b9050610bc3565b82610bb6858461264a565b610bc09190612687565b90505b60008111610c2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fb565b610c373382611ce7565b336000908152606860205260408120549081610c54576000610cb1565b336000908152606860205260409020610c6e6001846125eb565b81548110610c7e57610c7e612602565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610d0c610d078a866126c2565b611871565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff909416939093179190920155606555505050505050565b600083610d7f57506000610dca565b818411610dc35760008383610d956001886125eb565b818110610da457610da4612602565b905060200201359050610db986826000611712565b9250610dca915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610dee57600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e4e5750600054600160ff909116105b80610e685750303b158015610e68575060005460ff166001145b610ef4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fb565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f5257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f6160208401846123e6565b73ffffffffffffffffffffffffffffffffffffffff161415610fdf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fb565b600082602001351161104d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fb565b6110d961105d60408401846126da565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061109f9250505060608501856126da565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611e0792505050565b6110e660208301836123e6565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c9061116590339085906127ec565b60405180910390a180156111d057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff8316611276576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff8216611319576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611459578181101561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fb565b61145984848484036111d4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316611502576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff82166115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561165b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169f9084906126c2565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161170591815260200190565b60405180910390a3611459565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b84861015611809576117668686611ea8565b73ffffffffffffffffffffffffffffffffffffffff89166000908152606860205260409020805491935090839081106117a1576117a1612602565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117fe57819450611754565b816001019550611754565b82851461185e5773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061184757611847612602565b60009182526020909120015463ffffffff16611864565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82111561191f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fb565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fb565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611ab89084906125eb565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161137b565b505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611b089084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611ec3565b6000826008811115611c4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fb565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526114599085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611b5f565b6000670de0b6b3a7640000611cdd838561264a565b61048b9190612687565b73ffffffffffffffffffffffffffffffffffffffff8216611d64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fb565b8060356000828254611d7691906126c2565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611db09084906126c2565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611e9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b6111d08282611fcf565b6000611eb76002848418612687565b61048b908484166126c2565b6000611f25826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661208d9092919063ffffffff16565b805190915015611b085780806020019051810190611f439190612890565b611b08576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fb565b600054610100900460ff16612066576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fb565b81516120799060369060208501906121ef565b508051611b089060379060208401906121ef565b6060610dca84846000858573ffffffffffffffffffffffffffffffffffffffff85163b612116576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fb565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161213f91906128b2565b60006040518083038185875af1925050503d806000811461217c576040519150601f19603f3d011682016040523d82523d6000602084013e612181565b606091505b509150915061219182828661219c565b979650505050505050565b606083156121ab57508161048b565b8251156121bb5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb91906122ed565b8280546121fb90612568565b90600052602060002090601f01602090048101928261221d5760008555612263565b82601f1061223657805160ff1916838001178555612263565b82800160010185558215612263579182015b82811115612263578251825591602001919060010190612248565b5061191f9291505b8082111561191f576000815560010161226b565b60006020828403121561229157600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b838110156122dc5781810151838201526020016122c4565b838111156114595750506000910152565b602081526000825180602084015261230c8160408501602087016122c1565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461236257600080fd5b919050565b6000806040838503121561237a57600080fd5b6123838361233e565b946020939093013593505050565b6000806000606084860312156123a657600080fd5b6123af8461233e565b92506123bd6020850161233e565b9150604084013590509250925092565b6000602082840312156123df57600080fd5b5035919050565b6000602082840312156123f857600080fd5b61048b8261233e565b60008083601f84011261241357600080fd5b50813567ffffffffffffffff81111561242b57600080fd5b6020830191508360208260051b850101111561244657600080fd5b9250929050565b60008060006040848603121561246257600080fd5b61246b8461233e565b9250602084013567ffffffffffffffff81111561248757600080fd5b61249386828701612401565b9497909650939450505050565b600080600080606085870312156124b657600080fd5b6124bf8561233e565b935060208501359250604085013567ffffffffffffffff8111156124e257600080fd5b6124ee87828801612401565b95989497509550505050565b6000806040838503121561250d57600080fd5b6125168361233e565b91506125246020840161233e565b90509250929050565b60006020828403121561253f57600080fd5b813567ffffffffffffffff81111561255657600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061257c57607f821691505b602082108114156125b6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156125fd576125fd6125bc565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561264357600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612682576126826125bc565b500290565b6000826126bd577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b600082198211156126d5576126d56125bc565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261270f57600080fd5b83018035915067ffffffffffffffff82111561272a57600080fd5b60200191503681900382131561244657600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261277457600080fd5b830160208101925035905067ffffffffffffffff81111561279457600080fd5b80360383131561244657600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff808516835260406020840152806128198561233e565b1660408401525060208301356060830152612837604084018461273f565b60808085015261284b60c0850182846127a3565b91505061285b606085018561273f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526121918382846127a3565b6000602082840312156128a257600080fd5b8151801515811461048b57600080fd5b600082516128c48184602087016122c1565b919091019291505056fea2646970667358221220518806b70f1ba1b4e4a7136880cd900808327839a2711add0378549565eecebc64736f6c634300080a0033"; + "0x608060405234801561001057600080fd5b5060016065556129f5806100256000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c806388d68604116100b2578063b6b55f2511610081578063d6d6817711610066578063d6d6817714610282578063dd62ed3e146102ce578063fad876c31461031457600080fd5b8063b6b55f251461025c578063caa0eb3b1461026f57600080fd5b806388d686041461021b57806395d89b411461022e578063a457c2d714610236578063a9059cbb1461024957600080fd5b806323b872dd11610109578063313ce567116100ee578063313ce567146101c357806339509351146101d257806370a08231146101e557600080fd5b806323b872dd1461019d5780632e1a7d4d146101b057600080fd5b806301ffc9a71461013b57806306fdde0314610163578063095ea7b31461017857806318160ddd1461018b575b600080fd5b61014e610149366004612341565b610329565b60405190151581526020015b60405180910390f35b61016b6103c2565b60405161015a91906123af565b61014e610186366004612429565b610454565b6035545b60405190815260200161015a565b61014e6101ab366004612453565b61046c565b61018f6101be36600461248f565b610492565b6040516012815260200161015a565b61014e6101e0366004612429565b610810565b61018f6101f33660046124a8565b73ffffffffffffffffffffffffffffffffffffffff1660009081526033602052604090205490565b61018f61022936600461250f565b61085c565b61016b6108f1565b61014e610244366004612429565b610900565b61014e610257366004612429565b6109dc565b61018f61026a36600461248f565b6109ea565b61018f61027d366004612562565b610d64565b610295610290366004612429565b610dc6565b6040805163ffffffff90931683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911660208301520161015a565b61018f6102dc3660046125bc565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260346020908152604080832093909416825291909152205490565b6103276103223660046125ef565b610e22565b005b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f42766d3f0000000000000000000000000000000000000000000000000000000014806103bc57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6060603680546103d19061262a565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd9061262a565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b6000336104628185856111c8565b5060019392505050565b60003361047a85828561137c565b610485858585611453565b60019150505b9392505050565b600060026065541415610506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b600260655581610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b3360009081526068602052604081205461058e906001906126ad565b33600090815260686020526040812080549293509091839081106105b4576105b46126c4565b600091825260208220015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691506105f185836126ad565b90506000811561060b5761060733836000611706565b5090505b8084111561066957336000908152606860205260409020805485908110610634576106346126c4565b60009182526020822001557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019261060b565b81156106f95761067882611865565b336000908152606860205260409020805483908110610699576106996126c4565b9060005260206000200160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550610726565b33600090815260686020526040902080548590811061071a5761071a6126c4565b60009182526020822001555b600061073160355490565b905061073d3388611917565b6066546040517f70a082310000000000000000000000000000000000000000000000000000000081523060048201526107d99173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156107ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d191906126f3565b889083611b01565b6066549096506108009073ffffffffffffffffffffffffffffffffffffffff163388611bcf565b5050600160655550919392505050565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190610462908290869061085790879061270c565b6111c8565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811561048b57600063ffffffff815b848110156108e75760008686838181106108a8576108a86126c4565b9050602002013590506108bc888286611706565b93505063ffffffff8314156108d157506108e7565b6108dc858385611ca3565b94505060010161088c565b5050509392505050565b6060603780546103d19061262a565b33600081815260346020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156109c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016104fd565b6109d182868684036111c8565b506001949350505050565b600033610462818585611453565b600060026065541415610a59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016104fd565b600260655581610ac5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f305f414d4f554e5400000000000000000000000000000000000000000000000060448201526064016104fd565b6066546040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009173ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015610b34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5891906126f3565b90506000610b6560355490565b606654909150610b8d9073ffffffffffffffffffffffffffffffffffffffff16333087611d2c565b80610ba757606754610ba0908590611d8a565b9250610bb5565b610bb2818584611b01565b92505b60008311610c1f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f305f4d494e54000000000000000000000000000000000000000000000000000060448201526064016104fd565b610c293384611da9565b336000908152606860205260408120549081610c46576000610ca3565b336000908152606860205260409020610c606001846126ad565b81548110610c7057610c706126c4565b60009182526020909120015464010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff165b33600090815260686020908152604091829020825180840190935263ffffffff421683527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9390931693508101610cfe610cf9898661270c565b611865565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9081169091528254600181810185556000948552602094859020845195909401519092166401000000000263ffffffff9094169390931791909201556065555092949350505050565b600083610d7357506000610dbe565b818411610db75760008383610d896001886126ad565b818110610d9857610d986126c4565b905060200201359050610dad86826000611706565b9250610dbe915050565b5063ffffffff5b949350505050565b60686020528160005260406000208181548110610de257600080fd5b60009182526020909120015463ffffffff8116925064010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905082565b600054610100900460ff1615808015610e425750600054600160ff909116105b80610e5c5750303b158015610e5c575060005460ff166001145b610ee8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016104fd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f4657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6000610f5560208401846124a8565b73ffffffffffffffffffffffffffffffffffffffff161415610fd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f544f4b454e0000000000000000000000000000000000000000000000000060448201526064016104fd565b6000826020013511611041576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f305f524154494f0000000000000000000000000000000000000000000000000060448201526064016104fd565b6110cd6110516040840184612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611093925050506060850185612724565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ec992505050565b6110da60208301836124a8565b606680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560208201356067556040517fdc87f670e1a10e82b4063c89c0fd8fc5da0cf126722f5dc54e3fdbcbee092f5c906111599033908590612836565b60405180910390a180156111c457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b73ffffffffffffffffffffffffffffffffffffffff831661126a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821661130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152603460209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461144d5781811015611440576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104fd565b61144d84848484036111c8565b50505050565b73ffffffffffffffffffffffffffffffffffffffff83166114f6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff8216611599576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260409020548181101561164f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526033602052604080822085850390559185168152908120805484929061169390849061270c565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116f991815260200190565b60405180910390a361144d565b73ffffffffffffffffffffffffffffffffffffffff83166000908152606860209081526040808320548151808301909252838252918101839052909190829082905b848610156117fd5761175a8686611f6a565b73ffffffffffffffffffffffffffffffffffffffff8916600090815260686020526040902080549193509083908110611795576117956126c4565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16918101829052915087116117f257819450611748565b816001019550611748565b8285146118525773ffffffffffffffffffffffffffffffffffffffff8816600090815260686020526040902080548690811061183b5761183b6126c4565b60009182526020909120015463ffffffff16611858565b63ffffffff5b9350505050935093915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f323420626974730000000000000000000000000000000000000000000000000060648201526084016104fd565b5090565b73ffffffffffffffffffffffffffffffffffffffff82166119ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604090205481811015611a70576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016104fd565b73ffffffffffffffffffffffffffffffffffffffff83166000908152603360205260408120838303905560358054849290611aac9084906126ad565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161136f565b505050565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8587098587029250828110838203039150508060001415611b5a57838281611b5057611b506128da565b049250505061048b565b808411611b6657600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60405173ffffffffffffffffffffffffffffffffffffffff8316602482015260448101829052611afc9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611f85565b6000826008811115611d11576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4d41585f5449455200000000000000000000000000000000000000000000000060448201526064016104fd565b505063ffffffff602090920291821b199290921691901b1790565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261144d9085907f23b872dd0000000000000000000000000000000000000000000000000000000090608401611c21565b6000670de0b6b3a7640000611d9f8385612909565b61048b9190612946565b73ffffffffffffffffffffffffffffffffffffffff8216611e26576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104fd565b8060356000828254611e38919061270c565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526033602052604081208054839290611e7290849061270c565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600054610100900460ff16611f60576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b6111c48282612091565b6000611f796002848418612946565b61048b9084841661270c565b6000611fe7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661214f9092919063ffffffff16565b805190915015611afc57808060200190518101906120059190612981565b611afc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104fd565b600054610100900460ff16612128576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016104fd565b815161213b9060369060208501906122b1565b508051611afc9060379060208401906122b1565b6060610dbe84846000858573ffffffffffffffffffffffffffffffffffffffff85163b6121d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104fd565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161220191906129a3565b60006040518083038185875af1925050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b509150915061225382828661225e565b979650505050505050565b6060831561226d57508161048b565b82511561227d5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fd91906123af565b8280546122bd9061262a565b90600052602060002090601f0160209004810192826122df5760008555612325565b82601f106122f857805160ff1916838001178555612325565b82800160010185558215612325579182015b8281111561232557825182559160200191906001019061230a565b506119139291505b80821115611913576000815560010161232d565b60006020828403121561235357600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461048b57600080fd5b60005b8381101561239e578181015183820152602001612386565b8381111561144d5750506000910152565b60208152600082518060208401526123ce816040850160208701612383565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461242457600080fd5b919050565b6000806040838503121561243c57600080fd5b61244583612400565b946020939093013593505050565b60008060006060848603121561246857600080fd5b61247184612400565b925061247f60208501612400565b9150604084013590509250925092565b6000602082840312156124a157600080fd5b5035919050565b6000602082840312156124ba57600080fd5b61048b82612400565b60008083601f8401126124d557600080fd5b50813567ffffffffffffffff8111156124ed57600080fd5b6020830191508360208260051b850101111561250857600080fd5b9250929050565b60008060006040848603121561252457600080fd5b61252d84612400565b9250602084013567ffffffffffffffff81111561254957600080fd5b612555868287016124c3565b9497909650939450505050565b6000806000806060858703121561257857600080fd5b61258185612400565b935060208501359250604085013567ffffffffffffffff8111156125a457600080fd5b6125b0878288016124c3565b95989497509550505050565b600080604083850312156125cf57600080fd5b6125d883612400565b91506125e660208401612400565b90509250929050565b60006020828403121561260157600080fd5b813567ffffffffffffffff81111561261857600080fd5b82016080818503121561048b57600080fd5b600181811c9082168061263e57607f821691505b60208210811415612678577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156126bf576126bf61267e565b500390565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561270557600080fd5b5051919050565b6000821982111561271f5761271f61267e565b500190565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261275957600080fd5b83018035915067ffffffffffffffff82111561277457600080fd5b60200191503681900382131561250857600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126127be57600080fd5b830160208101925035905067ffffffffffffffff8111156127de57600080fd5b80360383131561250857600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b600073ffffffffffffffffffffffffffffffffffffffff8085168352604060208401528061286385612400565b16604084015250602083013560608301526128816040840184612789565b60808085015261289560c0850182846127ed565b9150506128a56060850185612789565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08584030160a08601526122538382846127ed565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156129415761294161267e565b500290565b60008261297c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60006020828403121561299357600080fd5b8151801515811461048b57600080fd5b600082516129b5818460208701612383565b919091019291505056fea2646970667358221220e68c58075b5c82aa176734b67380aee0a33811e0f64c74463d74e00892f3ad1564736f6c634300080a0033"; type StakeConstructorParams = | [signer?: Signer] diff --git a/yarn.lock b/yarn.lock index f3a2292..8d324eb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -946,9 +946,9 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff": +"@beehiveinnovation/rain-protocol@git+https://github.com/beehive-innovation/rain-protocol.git#a7b7213dfa7c2b847ebedf79e89f642ace0548da": version "0.0.16" - resolved "git+https://github.com/beehive-innovation/rain-protocol.git#3800c739b4a3d42cb7dd8aecc0ed8a39c799b2ff" + resolved "git+https://github.com/beehive-innovation/rain-protocol.git#a7b7213dfa7c2b847ebedf79e89f642ace0548da" dependencies: "@openzeppelin/contracts" "=4.7.0" "@openzeppelin/contracts-upgradeable" "=4.7.0" From ad9c43afc6a211394cb2b5d41025107aa101e128 Mon Sep 17 00:00:00 2001 From: NanezX Date: Fri, 7 Oct 2022 08:45:36 -0400 Subject: [PATCH 117/125] upadte stake address --- src/addresses.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/addresses.ts b/src/addresses.ts index d5d492d..0d078dc 100644 --- a/src/addresses.ts +++ b/src/addresses.ts @@ -65,7 +65,7 @@ const addressBook = [ saleFactory: '0x21548B27a10ddE0C3a278F9545EA7D3a4EFB6696', verifyFactory: '0x2386a88E4689EB60F15ce44BB0B922f70F88BdA2', verifyTierFactory: '0x3E92D1002F7Da0922C2f379C1dbdb7e11Ed28B15', - stakeFactory: '0xAEcb829a41a3F148F6d05360e84DFbdbbB51C21e', + stakeFactory: '0xD5D4373F3ac5846ACEdE555DEbD9a13D318c0678', orderBook: '0x6DE908adA18C838D5F1096E4Af4285bd9027f3fa', autoApproveFactory: '0x06c8B19Db4ef47bC34373924D6f6BB05cC62861e', }, @@ -191,7 +191,7 @@ const addressBook = [ saleFactory: '0x36D1eCa99480820FeD2a160FC98E723Eec167c0F', verifyFactory: '0x2AeB6aB29AfF3901054f9364ee26916F858088Ed', verifyTierFactory: '0xAf6D4770E78D2d6ad8675666E251933649A8467e', - stakeFactory: '0x96031f3ba3C57B5a5ea6f7581b61bCf0a9cC51b3', + stakeFactory: '0x9bf30bfd6057f411313E53104629EB754d0F54a7', orderBook: '0xb8BADe9783a815512A67B86e5fE967e9B861E102', autoApproveFactory: '', }, From 11e690426dde6977fcb9fba9e40b6e0b51ae099e Mon Sep 17 00:00:00 2001 From: NanezX Date: Sun, 9 Oct 2022 12:57:36 -0400 Subject: [PATCH 118/125] updating version tag --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a8570f2..1947fb7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "version": "2.1.1-beta", + "version": "2.1.2-beta", "license": "CAL", "main": "dist/index.js", "typings": "dist/index.d.ts", From 17be1b0350a9c74a16f7a4c4e08dc927fde5c155 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 14 Oct 2022 19:03:16 +0000 Subject: [PATCH 119/125] parser refactor open ended parse tree --- docs/classes/parser.md | 129 +- docs/index.md | 10 +- docs/types/error_2.md | 1 + docs/types/node_2.md | 10 + docs/types/op.md | 23 + docs/types/parsestack.md | 15 - docs/types/parsetree.md | 17 +- docs/types/state.md | 24 +- docs/types/value.md | 14 + src/vm/parser.ts | 2419 ++++++++++++++++++++------------------ 10 files changed, 1446 insertions(+), 1216 deletions(-) create mode 100644 docs/types/node_2.md create mode 100644 docs/types/op.md delete mode 100644 docs/types/parsestack.md create mode 100644 docs/types/value.md diff --git a/docs/classes/parser.md b/docs/classes/parser.md index aa00ba1..2c83d16 100644 --- a/docs/classes/parser.md +++ b/docs/classes/parser.md @@ -24,12 +24,16 @@ let parseTree; let stateConfig [ parseTree, stateConfig ] = Parser.get(textScript, customOpMeta, customMultiOutputPlaceholderChar); -// to get only parse tree object +// to get parse tree object only let parseTree = Parser.getParseTree(textScript, customOpMeta, customMultiOutputPlaceholderChar); -// to get only StateConfig +// to get StateConfig only let stateConfig = Parser.getStateConfig(textScript, customOpMeta, customMultiOutputPlaceholderChar); +// to build StateConfig (bytes) from ParseTree object or a Node or array of Node +let argument: Node || Node[] || ParseTree +let stateConfig = Parser.buildBytes(argument) + ``` ## Static Properties @@ -37,16 +41,19 @@ let stateConfig = Parser.getStateConfig(textScript, customOpMeta, customMultiOut | Property | Type | Description | | --- | --- | --- | | [constants](./parser.md#constants-property-static) | `BigNumberish[]` | | -| [parseTree](./parser.md#parseTree-property-static) |
Record
| | +| [parseTree](./parser.md#parseTree-property-static) | [ParseTree](../types/parsetree.md) | | +| [resolveMultiOutput](./parser.md#resolveMultiOutput-property-static) | `(totalCount: number, depthLevel: number) => void` | Method to resolve multi output nodes at current state of parsing | | [sources](./parser.md#sources-property-static) | `BytesLike[]` | | ## Static Methods | Method | Description | | --- | --- | -| [get(script, opmeta, placeholderChar)](./parser.md#get-method-static-1) | Method to get parse tree object and StateConfig | -| [getParseTree(script, opmeta, placeholderChar)](./parser.md#getParseTree-method-static-1) | Method to get the parse tree object | -| [getStateConfig(script, opmeta, placeholderChar)](./parser.md#getStateConfig-method-static-1) | Method to get the StateConfig | +| [buildBytes(parseTree, offset)](./parser.md#buildBytes-method-static-1) | Method to get StateConfig (bytes) from a Parse Tree object or a Node or array of Nodes | +| [get(expression, opmeta, multiOutputPlaceholderChar)](./parser.md#get-method-static-1) | Method to get parse tree object and StateConfig | +| [getParseTree(expression, opmeta, multiOutputPlaceholderChar)](./parser.md#getParseTree-method-static-1) | Method to get the parse tree object | +| [getStateConfig(expression, opmeta, multiOutputPlaceholderChar)](./parser.md#getStateConfig-method-static-1) | Method to get the StateConfig | +| [updateArgs(config)](./parser.md#updateArgs-method-static-1) | Method to update the arguments of zipmaps after full buyes build (if any present) | ## Static Property Details @@ -67,10 +74,19 @@ static constants: BigNumberish[]; Signature: ```typescript -static parseTree: Record; +static parseTree: ParseTree; +``` + + + +### resolveMultiOutput + +Method to resolve multi output nodes at current state of parsing + +Signature: + +```typescript +static resolveMultiOutput: (totalCount: number, depthLevel: number) => void; ``` @@ -85,95 +101,102 @@ static sources: BytesLike[]; ## Static Method Details + + +### buildBytes(parseTree, offset) + +Method to get StateConfig (bytes) from a Parse Tree object or a Node or array of Nodes + +Signature: + +```typescript +static buildBytes(parseTree: Node | Node[] | Record, offset?: number): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| parseTree | `Node \| Node[] \| Record` | Tree like object (Parse Tree object or a Node or array of Nodes) to get the StateConfig from | +| offset | `number` | This argument is used internally and should be ignored when calling this method externally | + +Returns: + +`StateConfig` + +StateConfig + -### get(script, opmeta, placeholderChar) +### get(expression, opmeta, multiOutputPlaceholderChar) Method to get parse tree object and StateConfig Signature: ```typescript -static get(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): [ - Record, - StateConfig - ]; +static get(expression: string, opmeta?: typeof OpMeta, multiOutputPlaceholderChar?: string): [ParseTree, StateConfig]; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| script | `string` | the text script | +| expression | `string` | the text expression | | opmeta | `typeof OpMeta` | (optional) custom opmeta | -| placeholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | +| multiOutputPlaceholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | Returns: -`[ - Record, - StateConfig - ]` +`[ParseTree, StateConfig]` Array of parse tree object and StateConfig -### getParseTree(script, opmeta, placeholderChar) +### getParseTree(expression, opmeta, multiOutputPlaceholderChar) Method to get the parse tree object Signature: ```typescript -static getParseTree(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): Record; +static getParseTree(expression: string, opmeta?: typeof OpMeta, multiOutputPlaceholderChar?: string): ParseTree; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| script | `string` | the text script | +| expression | `string` | the text expression | | opmeta | `typeof OpMeta` | (optional) custom opmeta | -| placeholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | +| multiOutputPlaceholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | Returns: -`Record` +`ParseTree` A parse tree object -### getStateConfig(script, opmeta, placeholderChar) +### getStateConfig(expression, opmeta, multiOutputPlaceholderChar) Method to get the StateConfig Signature: ```typescript -static getStateConfig(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): StateConfig; +static getStateConfig(expression: string, opmeta?: typeof OpMeta, multiOutputPlaceholderChar?: string): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| script | `string` | the text script | +| expression | `string` | the text expression | | opmeta | `typeof OpMeta` | (optional) custom opmeta | -| placeholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | +| multiOutputPlaceholderChar | `string` | (optional) custom multi output placeholder character, default is "\_" | Returns: @@ -181,3 +204,25 @@ static getStateConfig(script: string, opmeta?: typeof OpMeta, placeholderChar?: A StateConfig + + +### updateArgs(config) + +Method to update the arguments of zipmaps after full buyes build (if any present) + +Signature: + +```typescript +static updateArgs(config: StateConfig): StateConfig; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| config | [StateConfig](../interfaces/stateconfig.md) | | + +Returns: + +`StateConfig` + diff --git a/docs/index.md b/docs/index.md index 43a7fcb..e635beb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -212,7 +212,7 @@ | [eConditionGroup](./types/econditiongroup.md) | Type of a evaluated ConditionGroup with JSVM, which is the same as ConditionGroup with a result property | | [eCurrency](./types/ecurrency.md) | Type of a evaluated Currency with JSVM, which is the same as Currency with a result property | | [EmissionsConfig](./types/emissionsconfig.md) | A type for newing Emissions script | -| [Error\_2](./types/error_2.md) | | +| [Error\_2](./types/error_2.md) | Type of Parser's Error node | | [eRule](./types/erule.md) | Type of a evaluated Rule with JSVM, which is the same as Rule with a result property | | [EvidenceConfig](./types/evidenceconfig.md) | | | [Filter](./types/filter.md) | A filtering utility type for ArgsTypeBook | @@ -220,24 +220,26 @@ | [Modifier](./types/modifier.md) | Type for price/quantity modifier based on a tier report or a Rule | | [ModifierType](./types/modifiertype.md) | Valid Modifier types | | [Never](./types/never.md) | Type to get an always false condition | +| [Node\_2](./types/node_2.md) | Type of Parser's Node | +| [Op](./types/op.md) | Type of Parser's Opcode node | | [OPerand](./types/operand.md) | Parameter that will use to converted to the source.

Use an opcode and operand (optional) | | [Operator](./types/operator.md) | All the valid logical operators used for comparison of Struct and/or StateConfig objects | | [OptionalArgs](./types/optionalargs.md) | Type of all args properties as optional properties | | [Order](./types/order.md) | Type for an order containing all that is required in an order. An Order is an | | [OrderBookOpcodes](./types/orderbookopcodes.md) | Type for the opcodes availables in a OrderBook instance. | | [OrderConfig](./types/orderconfig.md) | A type for an order configuration without any specific owner | -| [ParseStack](./types/parsestack.md) | | -| [ParseTree](./types/parsetree.md) | | +| [ParseTree](./types/parsetree.md) | Type of a parse tree object | | [PrettifyConfig](./types/prettifyconfig.md) | Specifies the configuration of the Prettify method. | | [Price](./types/price.md) | Price type | | [Quantity](./types/quantity.md) | Quantity type | | [Rule](./types/rule.md) | A single Rule block, i.e. an if/then block that contains conditions of prices and quantities and its actions which are price and quantity | | [sIOConfig](./types/sioconfig.md) | token the address of the desired token vaultId corresponding token vault id | | [StakeDeployArgs](./types/stakedeployargs.md) | A type for deploying a new stake contract which contains everything required for deployment.

'token' is the main token addtess. 'initialRatio' is the initial conversion ratio between the stake token and main token. 'name' of the stake token. 'symbol' of the stake token | -| [State](./types/state.md) | | +| [State](./types/state.md) | Type of Parser's State | | [Struct](./types/struct.md) | The smallest building block of RuleBuilder that contains the type and its valid arguments or a StateConfig | | [SubgraphBook](./types/subgraphbook.md) | Type for index sugbraph endpoints by chain ID. | | [TimeBoundConfig](./types/timeboundconfig.md) | | | [UnionToIntersection](./types/uniontointersection.md) | A utility generic type to convert union to intersection | +| [Value](./types/value.md) | Type of Parser's Value node | | [WithdrawConfig](./types/withdrawconfig.md) | Type for withdrawing some token amount from a vault used in | diff --git a/docs/types/error_2.md b/docs/types/error_2.md index 9db2bb3..eb03bd9 100644 --- a/docs/types/error_2.md +++ b/docs/types/error_2.md @@ -1,6 +1,7 @@ # Type Error\_2 +Type of Parser's Error node Signature: diff --git a/docs/types/node_2.md b/docs/types/node_2.md new file mode 100644 index 0000000..b314546 --- /dev/null +++ b/docs/types/node_2.md @@ -0,0 +1,10 @@ + +# Type Node\_2 + +Type of Parser's Node + +Signature: + +```typescript +type Node = Error | Value | Op; +``` diff --git a/docs/types/op.md b/docs/types/op.md new file mode 100644 index 0000000..abac427 --- /dev/null +++ b/docs/types/op.md @@ -0,0 +1,23 @@ + +# Type Op + +Type of Parser's Opcode node + +Signature: + +```typescript +type Op = { + opcode: { + name: string; + position: number[]; + }; + operand: number; + output: number; + position: number[]; + parens: number[]; + parameters: Node[]; + data?: any; + error?: string; + infixOp?: boolean; +}; +``` diff --git a/docs/types/parsestack.md b/docs/types/parsestack.md deleted file mode 100644 index f033996..0000000 --- a/docs/types/parsestack.md +++ /dev/null @@ -1,15 +0,0 @@ - -# Type ParseStack - - -Signature: - -```typescript -type ParseStack = "(" | Error | ParseTree | { - op: string; - position: number[]; -} | { - value: BigNumberish; - position: number[]; -}; -``` diff --git a/docs/types/parsetree.md b/docs/types/parsetree.md index 45a2c05..5585e9d 100644 --- a/docs/types/parsetree.md +++ b/docs/types/parsetree.md @@ -1,22 +1,13 @@ # Type ParseTree +Type of a parse tree object Signature: ```typescript -type ParseTree = Error | { - opcode: { - name: string; - position: number[]; - }; - operand: number; - output: number; - parameters: (ParseTree | { - value: BigNumberish; - position: number[]; - })[]; +type ParseTree = Record; ``` diff --git a/docs/types/state.md b/docs/types/state.md index d377bce..9281226 100644 --- a/docs/types/state.md +++ b/docs/types/state.md @@ -1,26 +1,24 @@ # Type State +Type of Parser's State Signature: ```typescript type State = { parse: { - stack: ParseStack[]; - tree: ParseTree[]; + tree: Node[]; + moCache: (Op | Value)[][]; }; - srcCache: Uint8Array[]; - arguments: { - has: boolean; - offset: number; - count: number; - cache: number[]; + track: { + notation: number[]; + parens: { + open: number[]; + close: number[]; + }; }; - zipmaps: number; - multiOutputCache: (Exclude | { - value: BigNumberish; - position: number[]; - })[]; + depthLevel: number; + ambiguity: boolean; }; ``` diff --git a/docs/types/value.md b/docs/types/value.md new file mode 100644 index 0000000..c83ae90 --- /dev/null +++ b/docs/types/value.md @@ -0,0 +1,14 @@ + +# Type Value + +Type of Parser's Value node + +Signature: + +```typescript +type Value = { + value: BigNumberish; + position: number[]; + error?: string; +}; +``` diff --git a/src/vm/parser.ts b/src/vm/parser.ts index ca7712a..634dfd8 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -1,80 +1,97 @@ import { OpMeta } from './OpMeta'; import { BigNumberish, BytesLike } from 'ethers'; import { AllStandardOps, StateConfig } from '../classes/vm'; -import { callSize, concat, isBigNumberish, mapToRecord, op, selectLte, tierRange } from '../utils'; +import { + callSize, + concat, + isBigNumberish, + mapToRecord, + op, + selectLte, + tierRange, +} from '../utils'; /** - * @public + * Expression Notations */ -export type Error = { - error: string, - position: number[] +enum Notations { + prefix, + postfix, + infix, } /** * @public + * Type of Parser's Error node */ -export type Value = { value: BigNumberish, position: number[] }; +export type Error = { + error: string; + position: number[]; +}; /** * @public + * Type of Parser's Value node */ -export type Op = { op: string, position: number[] }; +export type Value = { + value: BigNumberish; + position: number[]; + error?: string +}; /** * @public + * Type of Parser's Opcode node */ -export type ParseTree = Error | { +export type Op = { opcode: { - name: string, - position: number[], - description?: string - }, - operand: number, - output: number, - parameters: (ParseTree | Value)[], - position: number[], - parens: number[], - data?: any, + name: string; + position: number[]; + }; + operand: number; + output: number; + position: number[]; + parens: number[]; + parameters: Node[]; + data?: any; + error?: string; + infixOp?: boolean; }; /** * @public + * Type of Parser's Node */ -export type ParseStack = - | "(" - | Error - | ParseTree - | Op - | Value; +export type Node = Error | Value | Op; /** * @public + * Type of Parser's State */ -export type Flat = - | Error - | Value - | { paren: "(" | ")", position: number[] } - | { opcode: string, position: number[], output: number, operand: number, description?: string, data?: any }; +export type State = { + parse: { + tree: Node[]; + moCache: (Op | Value)[][] + }; + track: { + notation: number[]; + parens: { + open: number[], + close: number[] + } + }; + depthLevel: number; + ambiguity: boolean; +}; /** * @public + * Type of a parse tree object */ -export type State = { - parse: { - stack: ParseStack[], - tree: ParseTree[] - } - srcCache: Uint8Array[], - arguments: { - has: boolean, - offset: number, - count: number, - cache: number[] - }, - zipmaps: number, - multiOutputCache: (Exclude | Value)[] -} +export type ParseTree = Record< + number, + { tree: Node[]; position: number[] } +>; /** * @public @@ -93,171 +110,355 @@ export type State = { * let stateConfig * [ parseTree, stateConfig ] = Parser.get(textScript, customOpMeta, customMultiOutputPlaceholderChar); * - * // to get only parse tree object + * // to get parse tree object only * let parseTree = Parser.getParseTree(textScript, customOpMeta, customMultiOutputPlaceholderChar); * - * // to get only StateConfig + * // to get StateConfig only * let stateConfig = Parser.getStateConfig(textScript, customOpMeta, customMultiOutputPlaceholderChar); + * + * // to build StateConfig (bytes) from ParseTree object or a Node or array of Node + * let argument: Node || Node[] || ParseTree + * let stateConfig = Parser.buildBytes(argument) * ``` */ export class Parser { - // StateConfig Properties of this class public static constants: BigNumberish[] = []; public static sources: BytesLike[] = []; - public static parseTree: - Record = {}; - public static parseStack: - Record = {}; + public static parseTree: ParseTree = {}; private static exp: string; private static input: string; + private static placeholder: string = '_'; + private static treeArray: Record = {}; + private static data: any[] = Object.values(mapToRecord(OpMeta, ['data'])); + private static names: string[] = Object.values(mapToRecord(OpMeta, ['name'])); + private static aliases: string[] = Object.values(mapToRecord(OpMeta, ['aliases'])); + private static zeroOperandOps: boolean[] = + Object.values(mapToRecord(OpMeta, ['isZeroOperand'])); + private static pops: ((opcode: number, operand: number) => number)[] = + Object.values(mapToRecord(OpMeta, ['pops'])); + private static pushes: ((opcode: number, operand: number) => number)[] = + Object.values(mapToRecord(OpMeta, ['pushes'])); private static state: State = { parse: { - stack: [], - tree: [] + tree: [], + moCache: [] }, - srcCache: [], - arguments: { - has: false, - offset: 0, - count: 0, - cache: [] + track: { + notation: [], + parens: { + open: [], + close: [] + } }, - zipmaps: 0, - multiOutputCache: [] - } - private static flat: Flat[] = []; - private static placeholder: string = "_" - private static hasError: boolean = false; - private static data: any[] = Object.values(mapToRecord(OpMeta, ["data"])) - private static names: string[] = Object.values(mapToRecord(OpMeta, ["name"])); - private static aliases: string[] = Object.values(mapToRecord(OpMeta, ["aliases"])); - private static pops: ((opcode: number, operand: number) => number)[] = - Object.values(mapToRecord(OpMeta, ["pops"])); - private static zeroOperandOps: string[] = Object.values(mapToRecord(OpMeta, ["isZeroOperand"])); + depthLevel: 0, + ambiguity: false, + }; + /** * @public * Method to get parse tree object and StateConfig * - * @param script - the text script + * @param expression - the text expression * @param opmeta - (optional) custom opmeta - * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" + * @param multiOutputPlaceholderChar - (optional) custom multi output placeholder character, default is "_" * @returns Array of parse tree object and StateConfig */ - public static get(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): [ - Record, - StateConfig, - Record - ] { - this.parse(script, opmeta, placeholderChar); - return [ - this.parseTree, - { - constants: this.constants, - sources: this.sources - }, - this.parseStack - ] + public static get( + expression: string, + opmeta?: typeof OpMeta, + multiOutputPlaceholderChar?: string + ): [ParseTree, StateConfig] { + this.parse(expression, opmeta, multiOutputPlaceholderChar); + return [this.parseTree, { constants: this.constants, sources: this.sources } ] + } + + /** + * @public + * Method to get the parse tree object + * + * @param expression - the text expression + * @param opmeta - (optional) custom opmeta + * @param multiOutputPlaceholderChar - (optional) custom multi output placeholder character, default is "_" + * @returns A parse tree object + */ + public static getParseTree( + expression: string, + opmeta?: typeof OpMeta, + multiOutputPlaceholderChar?: string + ): ParseTree { + this.parse(expression, opmeta, multiOutputPlaceholderChar); + return this.parseTree; } /** * @public * Method to get the StateConfig * - * @param script - the text script + * @param expression - the text expression * @param opmeta - (optional) custom opmeta - * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" + * @param multiOutputPlaceholderChar - (optional) custom multi output placeholder character, default is "_" * @returns A StateConfig */ - public static getStateConfig(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): StateConfig { - this.parse(script, opmeta, placeholderChar); + public static getStateConfig( + expression: string, + opmeta?: typeof OpMeta, + multiOutputPlaceholderChar?: string + ): StateConfig { + this.parse(expression, opmeta, multiOutputPlaceholderChar); return { constants: this.constants, sources: this.sources - } as StateConfig + } } /** * @public - * Method to get the parse tree object + * Method to get StateConfig (bytes) from a Parse Tree object or a Node or array of Nodes * - * @param script - the text script - * @param opmeta - (optional) custom opmeta - * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" - * @returns A parse tree object + * @param parseTree - Tree like object (Parse Tree object or a Node or array of Nodes) to get the StateConfig from + * @param offset - This argument is used internally and should be ignored when calling this method externally + * @returns StateConfig */ - public static getParseTree(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): Record< - number, - { tree: ParseTree[], position: number[] } - > { - this.parse(script, opmeta, placeholderChar); - return this.parseTree; + public static buildBytes( + parseTree: + | Node + | Node[] + | Record, + offset?: number + ): StateConfig { + let constants: BigNumberish[] = []; + let sources: BytesLike[] = []; + let sourcesCache: BytesLike[] = []; + let argOffset: number[] = []; + let nodes : Node[][]; + let isRecord = false; + + // convertion to a single type + if ("0" in parseTree) { + let array: any = Object.values(parseTree); + if (!("0" in array[0])) nodes = [array as Node[]]; + else { + argOffset = this.countArgs( + parseTree as Record + ); + isRecord = true; + nodes = array as Node[][]; + } + } + else nodes = [[parseTree as Node]]; + + // check for errors + for (let i = 0; i < nodes.length; i++) { + for (let j = 0; j < nodes[i].length; j++) { + if (!this.errorCheck(nodes[i][j])) return { + constants: [], + sources: [] + } + } + } + + argOffset = isRecord + ? this.countArgs(parseTree as Record) + : [0, 0]; + let argCount = isRecord ? argOffset.pop()! : 0; + + for (let i = 0; i < nodes.length; i++) { + for (let j = 0; j < nodes[i].length; j++) { + let node = nodes[i][j]; + if ("value" in node) { + if (isBigNumberish(node.value)) { + if (constants.includes(node.value)) { + sourcesCache.push( + op(AllStandardOps.CONSTANT, constants.indexOf(node.value)) + ); + } + else { + sourcesCache.push( + op(AllStandardOps.CONSTANT, constants.length) + ); + constants.push(node.value); + } + } + else if ((node.value as string).includes("arg")) { + let index = Number( + (node.value as string).replace("arg(", "").slice(0, -1) + ); + sourcesCache.push( + op(this.names.length, isRecord ? argOffset[i] + index : offset ? offset + index : 0) + ); + } + else if (node.value === "MaxUint256") { + if (constants.includes("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")) { + sourcesCache.push( + op(AllStandardOps.CONSTANT, constants.indexOf(node.value)) + ); + } + else { + sourcesCache.push( + op(AllStandardOps.CONSTANT, constants.length) + ); + constants.push("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); + } + } + } + else { + for (let i = 0; i < (node as Op).parameters.length; i++) { + let tmp = this.buildBytes( + (node as Op).parameters[i], + isRecord ? argOffset[i] : offset ? offset : 0 + ); + for (let k = 0; k < tmp.sources.length; k++) { + for (let l = 0; l < tmp.sources[k].length; l++) { + if (tmp.sources[k][l] === 0) { + (tmp.sources[k] as Uint8Array)[l + 1] += constants.length; + } + } + } + sourcesCache.push(...tmp.sources); + constants.push(...tmp.constants) + } + sourcesCache.push( + op( + this.names.indexOf((node as Op).opcode.name), + (node as Op).operand + ) + ) + } + } + sources.push(concat(sourcesCache)) + sourcesCache = []; + } + if (argCount > 0) { + let tmp = this.updateArgs({constants, sources}); + constants = tmp.constants; + sources = tmp.sources + } + return { + constants, + sources + } } /** - * @public - * Method to get the parse stack object which is a flat array of parsed items - * - * @param script - the text script - * @param opmeta - (optional) custom opmeta - * @param placeholderChar - (optional) custom multi output placeholder character, default is "_" - * @returns A parse tree object + * Method to set the opmeta + */ + private static set(opmeta_: typeof OpMeta) { + this.data = Object.values(mapToRecord(opmeta_, ['data'])); + this.names = Object.values(mapToRecord(opmeta_, ['name'])); + this.aliases = Object.values(mapToRecord(opmeta_, ['aliases'])); + this.pops = Object.values(mapToRecord(opmeta_, ['pops'])); + this.pushes = Object.values(mapToRecord(opmeta_, ['pushes'])); + this.zeroOperandOps = Object.values( + mapToRecord(opmeta_, ['isZeroOperand']) + ); + } + + /** + * Method to reset the class private properties + */ + private static reset = () => { + this.state.parse.tree = []; + this.state.depthLevel = 0; + this.state.track.parens.open = []; + this.state.track.parens.close = []; + }; + + /** + * Method to find index of next element within the text expression + */ + private static findIndex = (str: string): number => { + let indexes = []; + indexes[0] = str.indexOf('('); + indexes[1] = str.indexOf(')'); + indexes[2] = str.indexOf(' '); + if (indexes[0] === -1 && indexes[1] === -1 && indexes[2] === -1) { + return -1; + } + else { + let ret = indexes.filter((v) => v !== -1); + return ret.reduce((a, b) => (a <= b ? a : b)); + } + }; + + /** + * Method to trim the text expression from whitespaces and commas from both ends + */ + private static trim = (str: string): [string, number, number] => { + let leadingOffset = 0; + let trailingOffset = 0; + [str, trailingOffset] = this.trimRight(str); + [str, leadingOffset] = this.trimLeft(str); + return [str, leadingOffset, trailingOffset]; + }; + + /** + * Method to trim the right side of the text expression from whitespaces and commas */ - public static getParseStack(script: string, opmeta?: typeof OpMeta, placeholderChar?: string): Record< - number, - { stack: ParseStack[], position: number[] } - > { - this.parse(script, opmeta, placeholderChar); - return this.parseStack; + private static trimRight = (str: string): [string, number] => { + let trailingOffset = 0; + while (str.endsWith(" ") || str.endsWith(",")) { + str = str.slice(0, -1); + trailingOffset++; + } + return [str, trailingOffset]; } - private static parse(script: string, opmeta?: typeof OpMeta, placeholderChar?: string) { + /** + * Method to trim the left side of the text expression from whitespaces and commas + */ + private static trimLeft = (str: string): [string, number] => { + let leadingOffset = 0; + while (str.startsWith(' ') || str.startsWith(',')) { + str = str.slice(1, str.length); + leadingOffset++; + } + return [str, leadingOffset]; + }; + + /** + * The main workhorse of Rain Parser which parses the words used in an + * expression and is responsible for building the Parse Tree and Bytes + */ + private static parse(script: string, opmeta?: typeof OpMeta, placeholder?: string) { this.reset(); - this.parseTree = {}; - this.constants = []; this.sources = []; - this.hasError = false; - this.state.zipmaps = 0; - this.state.arguments.has = false; - this.state.arguments.count = 0; - this.state.arguments.offset = 0; - this.state.arguments.cache = []; + this.constants = []; + this.treeArray = []; + this.parseTree = {}; opmeta ? this.set(opmeta) : this.set(OpMeta); - this.placeholder = placeholderChar ? placeholderChar : "_"; + this.placeholder = placeholder ? placeholder : '_'; - let script_ = script; + let originalText = script; let offset = 0; [script, , offset] = this.trim(script); let expressions: string[] = []; - let positions = [[0, script_.length - 1]]; + let positions = [[0, originalText.length - 1]]; let hasCurlyBrackets = false; - if (script.startsWith("{") && script.indexOf("}") > -1) { + // remove indents + while(script.includes(`\n`)) script = script.replace(`\n`, ""); + + if (script.startsWith('{') && script.indexOf('}') > -1) { hasCurlyBrackets = true; - positions = [[ - script_.indexOf("{"), - script_.indexOf("}") - ]] - while (script.startsWith("{") && script.indexOf("}") > -1) { - let tmp = script.slice(0, script.indexOf("}") + 1); + positions = [[originalText.indexOf('{'), originalText.indexOf('}')]]; + while (script.startsWith('{') && script.indexOf('}') > -1) { + let tmp = script.slice(0, script.indexOf('}') + 1); let length = tmp.length - script.length; - - if (length === 0) length = script.length; - + if (length === 0) length = -script.length; script = script.slice(length); script = this.trim(script)[0]; expressions.push(tmp.slice(1, tmp.length - 1)); - if (script.startsWith("{") && script.indexOf("}") > -1) { + if (script.startsWith('{') && script.indexOf('}') > -1) { positions.push([ - script_.length - script.length - offset, - script_.length - script.length - offset + script.indexOf("}") - ]) + originalText.length - script.length - offset, + originalText.length - script.length - offset + script.indexOf('}'), + ]); } } - } - else expressions.push(script); + } else expressions.push(script); for (let i = 0; i < expressions.length; i++) { this.reset(); @@ -266,1043 +467,893 @@ export class Parser { this.exp = this.trim(this.exp)[0]; while (this.exp.length > 0) { - this.exp = this.trim(this.exp)[0]; + this.exp = this.trimLeft(this.exp)[0]; + let entry = hasCurlyBrackets ? positions[i][0] + 1 : positions[i][0]; + let currentPosition = entry + this.input.length - this.exp.length; - // if (this.exp.startsWith(",")) { - // this.exp = this.exp.replace(",", ""); - // } - if (this.exp.startsWith("(")) { - this.exp = this.exp.replace("(", ""); - this.state.parse.stack.push("("); - this.flat.push({ paren: "(", position: [] }); - } - else if (this.exp.startsWith(")")) { - this.exp = this.exp.replace(")", ""); - this.flat.push({ paren: "(", position: [] }); - this.resolveParens(hasCurlyBrackets ? positions[i][0] + 1 : positions[i][0]); - if (!this.hasError) { - try { - this.buildStateConfig( - this.state.parse.stack[ - this.state.parse.stack.length - 1 - ] as ParseTree + if (this.exp.startsWith('(')) { + this.state.track.parens.open.push(currentPosition); + this.exp = this.exp.replace('(', ""); + if ( + this.state.track.notation[this.state.track.notation.length - 1] !== + Notations.prefix || + this.state.track.notation[this.state.track.notation.length - 2] !== + this.state.depthLevel + ) { + this.updateTree({ + opcode: { + name: 'unknown opcode', + position: [], + }, + operand: NaN, + output: NaN, + position: [currentPosition], + parens: [], + parameters: [], + error: 'unknown opcode', + }); + } + this.state.depthLevel++; + let op = this.getTreeElement( + this.state.depthLevel - 1 + ) as Op; + op.parens.push(currentPosition); + this.updateTree(op, true); + } + else if (this.exp.startsWith(')')) { + if (this.state.track.parens.open.length > 0) { + let multiOutputResolvingDepth = this.state.depthLevel - 1; + this.exp = this.exp.replace(')', ""); + let postfix = this.isPostfix(this.exp); + this.state.track.parens.close.push(currentPosition); + if (this.isInfix()) { + this.state.track.notation.pop(); + this.state.track.notation.pop(); + if (postfix || this.isPrefix()) { + this.resolveInfix(true); + multiOutputResolvingDepth++; + } + else this.resolveInfix(false); + } + if (postfix && this.isPrefix()) { + let op = this.getTreeElement( + this.state.depthLevel - 1 + ) as Op; + this.updateTree({ + error: 'invalid notation', + position: [ + op.position[0], + Number(postfix[2]) + currentPosition + 1, + ], + }, + true + ); + this.state.track.notation.pop(); + this.state.track.notation.pop(); + } + else if (postfix) { + this.resolvePostfix( + postfix[0], + Number(postfix[1]) + currentPosition + 1, + Number(postfix[2]) + currentPosition + 1, + postfix[3] + ); + this.exp = this.input.slice( + Number(postfix[2]) + currentPosition + 2 - entry, + this.input.length ) - } catch (err) { - console.log(err) + } + else if (this.isPrefix()) { + this.resolvePrefix(); + this.state.track.notation.pop(); + this.state.track.notation.pop(); } + let item = this.getTreeElement( + multiOutputResolvingDepth + ) as Op; + if (item.output > 1) this.resolveMultiOutput( + item.output, + multiOutputResolvingDepth + ); + this.state.depthLevel--; + } + else { + this.state.parse.tree.push({ + error: "invalid closing paren", + position: [currentPosition] + }) } } - else this.consume(hasCurlyBrackets ? positions[i][0] + 1 : positions[i][0]); + else this.consume(currentPosition); + } + this.parseTree[i] = { + position: positions.shift()!, + tree: this.state.parse.tree.splice(-this.state.parse.tree.length) + } + this.treeArray[i] = this.parseTree[i].tree; + } + let tmp = this.buildBytes(this.treeArray) + this.constants = tmp.constants; + this.sources = tmp.sources; + } - if ( - !this.hasError && !this.state.parse.stack.includes("(") && - this.state.parse.stack.length === 1 && - "value" in (this.state.parse.stack[0] as Exclude) - ) { - try { - this.buildStateConfig( - this.state.parse.stack[ - this.state.parse.stack.length - 1 - ] as ParseTree - ) - } catch (err) { - console.log(err) + /** + * Method to check if the current state of parsing of a node is prefix or not + */ + private static isPrefix(): boolean { + return ( + this.state.track.notation[this.state.track.notation.length - 1] === + Notations.prefix && + this.state.track.notation[this.state.track.notation.length - 2] === + this.state.depthLevel - 1 + ) + } + + /** + * * Method to check if the current state of parsing of a node is infix or not + */ + private static isInfix(): boolean { + return ( + this.state.track.notation[this.state.track.notation.length - 1] === + Notations.infix && + this.state.track.notation[this.state.track.notation.length - 2] === + this.state.depthLevel + ) + } + + /** + * * Method to check if the current state of parsing of a node is postfix or not + */ + private static isPostfix(str: string): string[] | undefined { + if (!str.length) return undefined; + if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; + if (str.startsWith(',')) { + let offset = 0; + while (str.startsWith(',')) { + str = str.replace(',', ""); + offset++; + } + if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; + for (let i = 0; i < this.names.length; i++) { + if (str.startsWith(this.names[i])) { + return [ + this.names[i], + offset.toString(), + (offset + this.names[i].length - 1).toString(), + 'illigal characters between opcode and parenthesis', + ]; + } + } + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i]) { + for (let j = 0; j < this.aliases[i].length; j++) { + if (str.startsWith(this.aliases[i][j])) { + return [ + this.names[i], + offset.toString(), + (offset + this.aliases[i][j].length - 1).toString(), + 'illigal characters between opcode and parenthesis', + ]; + } } } - if (this.hasError) { - this.state.srcCache = []; - this.constants = []; + } + } + for (let i = 0; i < this.names.length; i++) { + if (str.startsWith(this.names[i])) { + if (str.replace(this.names[i], "").startsWith('(')) { + this.state.ambiguity = true; + return [ + this.names[i], + '0', + (this.names[i].length - 1).toString(), + 'ambiguous expression/opcode', + ]; } - if ( - !this.state.parse.stack.includes("(") && - !("op" in (this.state.parse.stack[0] as Exclude)) - ) { - if (this.state.multiOutputCache.length > 0) { - this.state.parse.stack.unshift( - ...this.state.multiOutputCache.splice( - -this.state.multiOutputCache.length - ) as ParseStack[] - ) - } - this.state.parse.tree.push( - ...this.state.parse.stack.splice( - -this.state.parse.stack.length - ) as ParseTree[] - ) + else { + return [this.names[i], '0', (this.names[i].length - 1).toString()]; } } - this.sources.push(concat(this.state.srcCache)) - this.state.srcCache = []; - this.parseTree[i] = { - tree: this.state.parse.tree.splice(-this.state.parse.tree.length), - position: positions[i], + } + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i]) { + for (let j = 0; j < this.aliases[i].length; j++) { + if (str.startsWith(this.aliases[i][j])) { + if (str.replace(this.aliases[i][j], "").startsWith('(')) { + this.state.ambiguity = true; + return [ + this.names[i], + '0', + (this.aliases[i][j].length - 1).toString(), + 'ambiguous expression/opcode', + ]; + } + else { + return [ + this.names[i], + '0', + (this.aliases[i][j].length - 1).toString(), + ]; + } + } + } } } - this.updateArgs(); + return undefined; } - private static set(opmeta_: typeof OpMeta) { - this.data = Object.values(mapToRecord(opmeta_, ["data"])); - this.names = Object.values(mapToRecord(opmeta_, ["name"])); - this.aliases = Object.values(mapToRecord(opmeta_, ["aliases"])); - this.pops = Object.values(mapToRecord(opmeta_, ["pops"])); - this.zeroOperandOps = Object.values(mapToRecord(opmeta_, ["isZeroOperand"])); - } - - private static reset = () => { - this.state.parse.tree = []; - this.state.parse.stack = []; - this.flat = []; + /** + * Method to get the last item of a Node at a specified depth level of parse tree + */ + private static getTreeElement(depthLevel: number): Node { + let tmp: Node[][] = []; + tmp.push(this.state.parse.tree); + for (let i = 0; i < depthLevel; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); + } + return tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1]; } - private static findIndex = (str: string): number => { - let indexes = []; - indexes[0] = str.indexOf("("); - indexes[1] = str.indexOf(")"); - indexes[2] = str.indexOf(" "); - if (indexes[0] === -1 && indexes[1] === -1 && indexes[2] === -1) { - return -1; + /** + * Method to update the elements of a Node + */ + private static updateTree(item: Node, replace?: boolean) { + if (replace) { + let tmp: Node[][] = []; + tmp.push(this.state.parse.tree); + for (let i = 0; i < this.state.depthLevel - 1; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); + } + tmp[tmp.length - 1].pop(); + tmp[tmp.length - 1].push(item); + while (tmp.length > 1) { + let updatedParams = tmp.pop()!; + (tmp[tmp.length - 1][ + tmp[tmp.length - 1].length - 1 + ] as Op).parameters = updatedParams; + } + this.state.parse.tree = tmp[0]; } else { - let ret = indexes.filter((v) => v !== -1) - return ret.reduce((a, b) => a <= b ? a : b) + let tmp: Node[][] = []; + tmp.push(this.state.parse.tree); + for (let i = 0; i < this.state.depthLevel; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); + } + tmp[tmp.length - 1].push(item); + while (tmp.length > 1) { + let updatedParams = tmp.pop()!; + (tmp[tmp.length - 1][ + tmp[tmp.length - 1].length - 1 + ] as Op).parameters = updatedParams; + } + this.state.parse.tree = tmp[0]; } } - private static rmComma = (str_: string): string => { - while (str_.startsWith(",")) str_ = str_.replace(",", ""); - while (str_.endsWith(",")) str_ = str_.slice(0, -1); - return str_; + /** + * Method to resolve prefix notations at current state of parsing + */ + private static resolvePrefix() { + this.state.track.parens.open.pop(); + let endPosition = this.state.track.parens.close.pop()!; + let tmp: Node[][] = []; + tmp.push(this.state.parse.tree); + for (let i = 0; i < this.state.depthLevel - 1; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); + } + let node = tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op; + node.position.push(endPosition); + node.parens.push(endPosition); + + if (node.error === 'no closing parenthesis') node.error = undefined; + if (!node.error) { + tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] = this.resolveOp(node); + } + while (tmp.length > 1) { + let resolvedExp = tmp.pop()!; + (tmp[tmp.length - 1][ + tmp[tmp.length - 1].length - 1 + ] as Op).parameters = resolvedExp; + } + this.state.parse.tree = tmp[0]; } - private static trim = (str: string): [string, number, number] => { - let leadingOffset = 0; - let trailingOffset = 0; - while (str.startsWith(" ") || str.startsWith(",")) { - str = str.slice(1, str.length); - leadingOffset++; + /** + * Method to resolve postfix notations at current state of parsing + */ + private static resolvePostfix( + opcode: string, + startPosition: number, + endPosition: number, + error?: string + ) { + this.state.track.parens.open.pop(); + let tmp: Node[][] = []; + tmp.push(this.state.parse.tree); + for (let i = 0; i < this.state.depthLevel - 1; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); } - while (str.endsWith(" ") || str.endsWith(",")) { - str = str.slice(0, -1); - trailingOffset++; + let node = tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op; + tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] = this.resolveOp({ + opcode: { + name: opcode, + position: [startPosition, endPosition], + }, + operand: this.zeroOperandOps[this.names.indexOf(opcode)] ? 0 : NaN, + output: this.pushes[this.names.indexOf(opcode)].name === 'zero' || 'one' || 'two' || 'three' + ? this.pushes[this.names.indexOf(opcode)](0, 0) + : NaN, + position: [node.position[0], endPosition], + parens: [node.position[0], this.state.track.parens.close.pop()!], + parameters: node.parameters, + data: this.data[this.names.indexOf(opcode)], + error + }); + while (tmp.length > 1) { + let resolvedExp = tmp.pop()!; + (tmp[tmp.length - 1][ + tmp[tmp.length - 1].length - 1 + ] as Op).parameters = resolvedExp; } - return [str, leadingOffset, trailingOffset]; + this.state.parse.tree = tmp[0]; } - private static buildStateConfig = (expBlock: Exclude) => { - let count = 0; - if (!("error" in expBlock)) { - let check = true; - let tmpStack: Uint8Array[] = []; - if ("parameters" in expBlock) { - for (let item of expBlock.parameters) { - if ("error" in item) { - check = false; - break; - } - else if ("opcode" in item) count++; + /** + * Method to resolve infix notations at current state of parsing + */ + private static resolveInfix(isParameter: boolean) { + let tmp: Node[][] = []; + tmp.push(this.state.parse.tree); + for (let i = 0; i < this.state.depthLevel; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); + } + let err = false; + let op: Node; + let elements: Node[] = tmp[tmp.length - 1]; + let node = tmp[tmp.length - 2][tmp[tmp.length - 2].length - 1] as Op; + let closeParenPosition = + this.state.track.parens.close[this.state.track.parens.close.length - 1]; + + // if prefix-infix + if ('opcode' in elements[0] && elements[0].infixOp) { + op = elements[0]; + op.position.push(...node.parens); + op.parens.push(...node.parens); + for (let i = 1; i < elements.length; i++) { + let item = elements[i]; + if ('opcode' in item && item.infixOp) { + err = true; + op.error = 'invalid infix expression'; + break; } - if (check) { - let element: - | Exclude - | Value + } + if (!err) op.parameters = elements.slice(1, elements.length); + op.position.push(closeParenPosition); + op.parens.push(closeParenPosition); + } + // if postfix-infix + else if ( + 'opcode' in elements[elements.length - 1] && + (elements[elements.length - 1] as Op).infixOp + ) { + op = elements[elements.length - 1] as Op; + op.position.push(...node.parens); + op.parens.push(...node.parens); + for (let i = 0; i < elements.length - 1; i++) { + let item = elements[i]; + if ('opcode' in item && item.infixOp) { + err = true; + op.error = 'invalid infix expression'; + break; + } + } + if (!err) op.parameters = elements.slice(0, -1); + op.position.push(closeParenPosition); + op.parens.push(closeParenPosition); + } - let bytesArr_ = count !== 0 ? this.state.srcCache.splice(-count) : []; - if (bytesArr_.length !== count) throw new Error("invalid script: cannot build the StateConfig") - for (let i = 0; i < expBlock.parameters.length; i++) { - element = expBlock.parameters[i] as typeof element; - if ("opcode" in element) { - let src_ = bytesArr_.shift(); - if (src_) { - tmpStack.push(src_) - } - else throw new Error("invalid script: cannot build the StateConfig") - } - if ("value" in element) { - if (isBigNumberish(element.value)) { - if (this.constants.includes(element.value)) { - tmpStack.push( - op(AllStandardOps.CONSTANT, this.constants.indexOf(element.value)) - ); - } - else { - tmpStack.push( - op(AllStandardOps.CONSTANT, this.constants.length) - ); - this.constants.push(element.value); - } + // if infix-infix + else { + let params: Node[] = [elements[0]]; + if ('opcode' in elements[1] && elements[1].infixOp) { + op = elements[1]; + op.position.push(...node.parens); + op.parens.push(...node.parens); + for (let i = 2; i < elements.length; i++) { + if (i % 2 === 0) params.push(elements[i]); + else { + let item = elements[i]; + if ('opcode' in item && item.infixOp && op.opcode.name === item.opcode.name) { + op.opcode.position.push(...item.opcode.position); + } + else { + if ('opcode' in item) { + op.error = `invalid opcode format at position ${item.opcode.position}`; } - else if ((element.value as string).includes("arg")) { - let index = Number( - (element.value as string).replace("arg(", "").slice(0, -1) - ); - if (!this.state.arguments.cache.includes(index)) { - this.state.arguments.cache.push(index) - } - tmpStack.push( - op(this.names.length, this.state.arguments.offset + index) - ); + else { + op.error = `expected opcode but got value at position ${item.position}`; } + err = true; + break; } } - tmpStack.push(op(this.names.indexOf(expBlock.opcode.name), expBlock.operand)) - } - } - else if ("value" in expBlock) { - if (isBigNumberish(expBlock.value)) { - if (this.constants.includes(expBlock.value)) { - tmpStack.push( - op(AllStandardOps.CONSTANT, this.constants.indexOf(expBlock.value)) - ); - } - else { - tmpStack.push( - op(AllStandardOps.CONSTANT, this.constants.length) - ); - this.constants.push(expBlock.value); - } - } - else if ((expBlock.value as string).includes("arg")) { - let index = Number( - (expBlock.value as string).replace("arg(", "").slice(0, -1) - ); - if (!this.state.arguments.cache.includes(index)) { - this.state.arguments.cache.push(index) - } - tmpStack.push( - op(this.names.length, this.state.arguments.offset + index) - ); } + if (!err) op.parameters = params; + op.position.push(closeParenPosition); + op.parens.push(closeParenPosition); + } + else { + op = { + error: 'invalid infix expression', + position: [ + (tmp[tmp.length - 2][tmp[tmp.length - 2].length - 1] as Op) + .parens[0], + closeParenPosition, + ], + }; + err = true; } - this.state.srcCache.push(concat(tmpStack)); } - } - - private static updateArgs = () => { - if (this.state.arguments.has) { - for (let i = 0; i < this.sources.length; i++) { - for (let j = 0; j < this.sources[i].length; j++) { - if (this.sources[i][j] === this.names.length) { - (this.sources[i][j] as number) = 0; - (this.sources[i][j + 1] as number) += this.constants.length; - } - } - } + if (!err) op = this.resolveOp(op as Op); + if (isParameter) { + let item = this.getTreeElement(this.state.depthLevel - 1) as Op; + item.parameters = [op]; + op = item; } - } - - private static resolveOp = (expBlock: ParseTree): ParseTree => { - if ("error" in expBlock) return expBlock; else { - let op = this.names.indexOf(expBlock.opcode.name); - - if (op > -1) { - if ( - op === AllStandardOps.STACK || - op === AllStandardOps.CONTEXT || - op === AllStandardOps.STORAGE - ) { - if ( - expBlock.parameters.length === 1 && - "value" in expBlock.parameters[0] && - Number(expBlock.parameters[0].value) < 256 - ) { - let operand = Number(expBlock.parameters[0].value); - expBlock.parameters = []; - expBlock.operand = operand; - expBlock.output = 1; - } - else if (expBlock.parameters.length !== 1) { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid number of parameters, expected 1 parameter but got ${expBlock.parameters.length}`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - else if ("value" in expBlock.parameters[0] && Number(expBlock.parameters[0].value) > 255) { - expBlock.operand = NaN; - expBlock.parameters[0] = { - error: `${expBlock.opcode.name} parameter (i.e. operand) cannot be bigger than 255`, - position: expBlock.parameters[0].position - } - if (!this.hasError) this.hasError = true; - } - else { - expBlock.operand = NaN; - if (!this.hasError) this.hasError = true; - } - } - else if (op === AllStandardOps.ZIPMAP) { - if (expBlock.parameters.length > 2 && expBlock.parameters.length < 11) { - if ("value" in expBlock.parameters[0] && "value" in expBlock.parameters[1]) { - if (Number(expBlock.parameters[0].value) < 8 && Number(expBlock.parameters[1].value) < 4) { - expBlock.operand = callSize( - Number(expBlock.parameters[0].value), - Number(expBlock.parameters[1].value), - expBlock.parameters.length - 3 - ) - expBlock.output = 2 ** Number(expBlock.parameters[1].value); - for (let i = 0; i < expBlock.output - 1; i++) { - this.state.multiOutputCache.push({ - value: `${expBlock.opcode.name} output ${i + 1} placeholder`, - position: [], - }) - }; - this.state.multiOutputCache.push(expBlock); - if (!this.state.arguments.has) this.state.arguments.has = true; - this.state.arguments.offset = this.state.arguments.count; - this.state.arguments.count += expBlock.parameters.length - 2 - expBlock.parameters.shift(); - expBlock.parameters.shift(); - } - else { - if (!this.hasError) this.hasError = true; - expBlock.operand = NaN; - if (Number(expBlock.parameters[0].value) > 7) { - expBlock.parameters[0] = { - error: "invalid value for ZIPMAP SourceIndex parameter", - position: expBlock.parameters[0].position - } - } - else if (Number(expBlock.parameters[1].value) > 3) { - expBlock.parameters[1] = { - error: "invalid value for ZIPMAP LoopSize parameter", - position: expBlock.parameters[1].position - } - } - else { - expBlock.parameters[0] = { - error: "invalid value for ZIPMAP SourceIndex parameter", - position: expBlock.parameters[0].position - } - expBlock.parameters[1] = { - error: "invalid value for ZIPMAP LoopSize parameter", - position: expBlock.parameters[1].position - } - } - } - } - else { - expBlock.operand = NaN; - if (!this.hasError) this.hasError = true; - } - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid parameters: expected at least 3 and at most 10 parameters, but got ${expBlock.parameters.length}`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (op === AllStandardOps.ITIERV2_REPORT) { - if ( - expBlock.parameters.length === 2 || - expBlock.parameters.length === 3 || - expBlock.parameters.length === 10 - ) { - expBlock.operand = expBlock.parameters.length - 2; - expBlock.output = 1; - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid parameters: expected either 2 or 3 or 10 parameters, but got ${expBlock.parameters.length}`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (op === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { - if ( - expBlock.parameters.length === 3 || - expBlock.parameters.length === 4 || - expBlock.parameters.length === 11 - ) { - expBlock.operand = expBlock.parameters.length - 3; - if (!("value" in expBlock.parameters[2] && Number(expBlock.parameters[2].value) > -1 && Number(expBlock.parameters[2].value) < 9)) { - expBlock.operand = NaN; - expBlock.output = 1; - expBlock.parameters[2] = { - error: "invalid tier level", - position: expBlock.parameters[2].position - }; - if (!this.hasError) this.hasError = true; - } - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid parameters: expected either 3 or 4 or 11 parameters, but got ${expBlock.parameters.length}`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (op === AllStandardOps.SELECT_LTE) { - if (expBlock.parameters.length > 4 && expBlock.parameters.length < 35) { - if ("value" in expBlock.parameters[0] && "value" in expBlock.parameters[1]) { - if (Number(expBlock.parameters[0].value) < 2 && Number(expBlock.parameters[1].value) < 3) { - expBlock.operand = selectLte( - Number(expBlock.parameters[0].value), - Number(expBlock.parameters[0].value), - expBlock.parameters.length - 2 - ); - expBlock.output = 1; - expBlock.parameters.shift(); - expBlock.parameters.shift(); - } - else { - expBlock.operand = NaN; - if (!this.hasError) this.hasError = true; - if (Number(expBlock.parameters[0].value) > 1) { - expBlock.parameters[0] = { - error: "invalid value for SELECT_LTE logic", - position: expBlock.parameters[0].position - } - } - else if (Number(expBlock.parameters[1].value) > 2) { - expBlock.parameters[1] = { - error: "invalid value for SELECT_LTE mode", - position: expBlock.parameters[1].position - } - } - else { - expBlock.parameters[0] = { - error: "invalid value for SELECT_LTE logic", - position: expBlock.parameters[0].position - } - expBlock.parameters[1] = { - error: "invalid value for SELECT_LTE mode", - position: expBlock.parameters[1].position - } - } - } - } - else { - expBlock.operand = NaN; - if (!this.hasError) this.hasError = true; - } - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid parameters: expected at least 4 and at most 34 parameters in total, but got ${expBlock.parameters.length}`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (op === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { - if (expBlock.parameters.length === 4) { - if ("value" in expBlock.parameters[0] && "value" in expBlock.parameters[1]) { - if (Number(expBlock.parameters[0].value) < 9 && Number(expBlock.parameters[1].value) < 9) { - expBlock.operand = tierRange( - Number(expBlock.parameters[0].value), - Number(expBlock.parameters[1].value) - ); - expBlock.output = 1; - expBlock.parameters.shift(); - expBlock.parameters.shift(); - } - else { - expBlock.operand = NaN; - if (!this.hasError) this.hasError = true; - if (Number(expBlock.parameters[0].value) > 8) { - expBlock.parameters[0] = { - error: "invalid value for start tier", - position: expBlock.parameters[0].position - } - } - else if (Number(expBlock.parameters[1].value) > 8) { - expBlock.parameters[1] = { - error: "invalid value for end tier", - position: expBlock.parameters[1].position - } - } - else { - expBlock.parameters[0] = { - error: "invalid value for start tier", - position: expBlock.parameters[0].position - } - expBlock.parameters[1] = { - error: "invalid value for end tier", - position: expBlock.parameters[1].position - } - } - } - } - else { - expBlock.operand = NaN; - if (!this.hasError) this.hasError = true; - } - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid parameters: expected at least 4 parameters in total, but got ${expBlock.parameters.length}`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (op === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { - if (expBlock.parameters.length > 2 && expBlock.parameters.length % 2 === 1) { - expBlock.operand = (expBlock.parameters.length - 1) / 2; - expBlock.output = (expBlock.parameters.length - 1) / 2; - for (let i = 0; i < expBlock.output - 1; i++) { - this.state.multiOutputCache.push({ - value: `${expBlock.opcode.name} output ${i + 1} placeholder`, - position: [], - }) - } - this.state.multiOutputCache.push(expBlock) - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid number of parameters`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (this.pops[op].name !== "oprnd") { - if (this.pops[op](op, 0) === expBlock.parameters.length) { - expBlock.operand = expBlock.parameters.length; - if (this.zeroOperandOps[op]) { - expBlock.operand = 0; - } - expBlock.output = 1; - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `invalid number of parameters`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - } - else if (this.pops[op].name === "oprnd") { - if (this.zeroOperandOps[op]) { - expBlock.operand = 0; - } - expBlock.output = 1; - } - else { - expBlock.operand = NaN; - expBlock.parameters = [{ - error: `unknown`, - position: [expBlock.parameters[0].position[0], expBlock.parameters[expBlock.parameters.length - 1].position[1]] - }]; - if (!this.hasError) this.hasError = true; - } - return expBlock; - } - if (!this.hasError) this.hasError = true; - return { - error: "unknown opcode", - position: expBlock.opcode.position - } + this.state.track.parens.open.pop(); + this.state.track.parens.close.pop(); } + this.updateTree(op, true); } - private static searchOps(str: string): boolean { - for (let i = 0; i < this.names.length; i++) { - if (str.startsWith(this.names[i])) return true; + /** + * Method to resolve multi output nodes at current state of parsing + */ + public static resolveMultiOutput = (totalCount: number, depthLevel: number) => { + let count = 0; + let tmp: Node[][] = []; + const isOutput = (element: Node): boolean => { + return ("value" in element && element.value === this.placeholder); } - for (let i = 0; i < this.aliases.length; i++) { - if (this.aliases[i]) { - for (let j = 0; j < this.aliases[i].length; j++) { - if (str.startsWith(this.aliases[i][j])) return true; - } - } + tmp.push(this.state.parse.tree); + for (let i = 0; i < depthLevel; i++) { + tmp.push( + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) + .parameters + ); } - return false - } - - // private static trailingOp(str: string): boolean | string { - // if (str.length > 0) { - // if (str.startsWith("(") || str.startsWith(")")) return false; - - // if (!str.startsWith(" ")) { - // let str_ = str.slice(0, this.findIndex(str)); - // str_ = this.rmComma(str_); - - // if (isBigNumberish(str_)) return false; - // if (this.names.includes(str_)) return true - // for (let i = 0; i < this.aliases.length; i++) { - // if (this.aliases[i] && this.aliases[i].includes(str_)) return true; - // } - // } - // else { - // str = this.trim(str)[0]; - // if (str.startsWith("(") || str.startsWith(")")) return false; - // let index1_ = this.findIndex(str) < 0 - // ? str.length - // : this.findIndex(str) === 0 - // ? 1 - // : this.findIndex(str); - - // let str1_ = str.slice(0, index1_); - // let consumee1_ = str1_; - // let isOp1_ = false; - // str1_ = this.rmComma(str1_); - - // if (str.startsWith("(") || str.startsWith(")")) return false; - // if (isBigNumberish(str1_)) return false; - // if (this.names.includes(str1_)) isOp1_ = true - // for (let i = 0; i < this.aliases.length; i++) { - // if (this.aliases[i] && this.aliases[i].includes(str1_)) { - // isOp1_ = true; - // break; - // } - // } - // str = str.replace(consumee1_, ""); - // str = this.trim(str)[0]; - // if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { - // return "ambiguous expresion"; - // } - // let index2_ = this.findIndex(str) < 0 - // ? str.length - // : this.findIndex(str) === 0 - // ? 1 - // : this.findIndex(str); - - // let str2_ = str.slice(0, index2_); - // str2_ = this.rmComma(str2_); - - // if (isOp1_ && (str.startsWith("(") || str.startsWith(")"))) { - // return "ambiguous expresion"; - // } - - // if (isOp1_ && isBigNumberish(str2_)) return true; - // if (isOp1_ && this.names.includes(str2_)) return true - // for (let i = 0; i < this.aliases.length; i++) { - // if ( - // isOp1_ && this.aliases[i] && - // this.aliases[i].includes(str2_) - // ) return true; - // } - // return false; - // } - // return false; - // } - // else return false; - // } - - private static resolveInfix( - stack: Exclude[], - position: number[] - ): ParseTree { - let infixExp: ParseTree; - let tmp_ = stack[1] as Op | Error; - - if ("op" in tmp_) { - infixExp = { - opcode: { - name: tmp_.op, - position: tmp_.position, - }, - operand: 2, - parameters: [ - (stack[0] as Exclude), - (stack[2] as Exclude) - ], - output: NaN, - position: position, - parens: position, - data: this.data[this.names.indexOf(tmp_.op)] - ? this.data[this.names.indexOf(tmp_.op)] - : undefined - } - if (stack.length > 3) { - for (let i = 3; i < stack.length; i += 2) { - let item = stack[i] as Extract; - if ("op" in item) { - if (item.op === tmp_.op) { - infixExp.parameters.push( - (stack[i + 1] as Exclude), - ); - infixExp.opcode.position.push(...item.position); - infixExp.operand++; + while (tmp.length > 1) { + if (count !== totalCount) { + for (let i = tmp[tmp.length - 1].length - 2; i > -1; i--) { + if (count !== totalCount) { + if (!isOutput(tmp[tmp.length - 1][i])) { + (tmp[tmp.length - 2][tmp[tmp.length - 2].length - 1] as Op).error = + `illigal placement of outputs, parameter ${i - 1} cannot be accessed by this opcode`; + break; } else { - infixExp = { - error: "invalid indetation", - position: tmp_.position - } - if (!this.hasError) this.hasError = true; - break; + count++; + tmp[tmp.length - 1][i] = this.state.parse.moCache[ + this.state.parse.moCache.length - 1 + ].pop()!; } } - else { - infixExp = { - error: item.error!, - position: tmp_.position - }; - if (!this.hasError) this.hasError = true; - break; - } + else break; } } + let resolvedOutputs = tmp.pop()!; + (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op).parameters = resolvedOutputs; } - else { - infixExp = { - error: tmp_.error, - position: tmp_.position - }; - if (!this.hasError) this.hasError = true; + if (count !== totalCount) { + let item = tmp[0].pop()!; + tmp[0].push(...this.state.parse.moCache[this.state.parse.moCache.length - 1]); + this.state.parse.moCache.pop(); + tmp[0].push(item); } - return infixExp; } - private static resolveMutliOutputs = ( - items: Exclude[], - itemsPositions: number[], - positions: { pos: number, count: number, type: number }[] - ): Exclude[] => { - if (positions.length > 0) { - for (let i = 0; i < positions.length; i++) { - if (positions[i].type === 1) { - let item_ = items[positions[i].pos] as Exclude; - if (item_.output !== positions[i].count) { - if (positions[i].pos - positions[i].count + 1 !== 0) { - return [{ - error: "illigal positioning of parameters", - position: itemsPositions - }] - } - else { - let output_ = this.state.multiOutputCache.pop(); - if (output_ && "opcode" in output_) { - for (let j = positions[i].pos - 1; j >= 0; j--) { - let tmp = this.state.multiOutputCache.pop(); - if (tmp) items[j] = tmp; - else return [{ - error: `illigal reach to undefined ${item_.opcode.name} outputs`, - position: itemsPositions - }] - } - } - else return [{ - error: `invalid consumption of previous multioutput opcodes`, - position: itemsPositions - }] + /** + * Method that resolves the opcode Node once its respective closing paren has consumed + */ + private static resolveOp = (opNode: Op): Op => { + let op = this.names.indexOf(opNode.opcode.name); + if ( + op === AllStandardOps.STACK || + op === AllStandardOps.CONTEXT || + op === AllStandardOps.STORAGE + ) { + opNode.operand = NaN; + if ( + opNode.parameters.length === 1 && + 'value' in opNode.parameters[0] && + Number(opNode.parameters[0].value) < 256 + ) { + let operand = Number(opNode.parameters[0].value); + opNode.parameters = []; + opNode.operand = operand; + opNode.output = 1; + } + else if (opNode.parameters.length !== 1) { + opNode.parameters = [ + { + error: `invalid number of parameters, expected 1 parameter but got ${opNode.parameters.length}`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }, + ]; + } + else if ( + 'value' in opNode.parameters[0] && + Number(opNode.parameters[0].value) > 255 + ) { + opNode.parameters[0] = { + error: `${opNode.opcode.name} operand must be of range 0 - 255`, + position: opNode.parameters[0].position, + }; + } + else {} + } + else if (op === AllStandardOps.ZIPMAP) { + opNode.operand = NaN; + opNode.output = NaN; + if (opNode.parameters.length > 2 && opNode.parameters.length < 11) { + if ( + 'value' in opNode.parameters[0] && + 'value' in opNode.parameters[1] + ) { + opNode.output = 2 ** Number(opNode.parameters[1].value); + if ( + Number(opNode.parameters[0].value) < 8 && + Number(opNode.parameters[1].value) < 4 + ) { + opNode.operand = callSize( + Number(opNode.parameters[0].value), + Number(opNode.parameters[1].value), + opNode.parameters.length - 2 + ); + this.state.parse.moCache.push([]); + for (let i = 0; i < opNode.output - 1; i++) { + this.state.parse.moCache[this.state.parse.moCache.length - 1].push({ + value: `${opNode.opcode.name} output ${i + 1} placeholder`, + position: [], + }); } - } + opNode.parameters.shift(); + opNode.parameters.shift(); + } else { - let output_ = this.state.multiOutputCache.pop(); - if (output_ && "op" in output_) { - for (let j = positions[i].pos - 1; j >= 0; j--) { - let tmp = this.state.multiOutputCache.pop(); - if (tmp) items[j] = tmp; - else return [{ - error: `illigal reach to undefined ${item_.opcode.name} outputs`, - position: itemsPositions - }] - } - } - else return [{ - error: `invalid consumption of previous multioutput opcodes`, - position: itemsPositions - }] + if (Number(opNode.parameters[0].value) > 7) { + opNode.parameters[0] = { + error: 'invalid value for ZIPMAP SourceIndex parameter', + position: opNode.parameters[0].position, + }; + } + if (Number(opNode.parameters[1].value) > 3) { + opNode.parameters[1] = { + error: 'invalid value for ZIPMAP LoopSize parameter', + position: opNode.parameters[1].position, + }; + opNode.output = NaN; + } } + } + else {} + } + else { + opNode.parameters = [ + { + error: `invalid parameters: expected at least 3 and at most 10 parameters, but got ${opNode.parameters.length}`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }, + ]; + } + } + else if (op === AllStandardOps.ITIERV2_REPORT) { + opNode.operand = NaN; + if ( + opNode.parameters.length === 2 || + opNode.parameters.length === 3 || + opNode.parameters.length === 10 + ) { + opNode.operand = opNode.parameters.length - 2; + } + else { + opNode.parameters = [ + { + error: `invalid parameters: expected either 2 or 3 or 10 parameters, but got ${opNode.parameters.length}`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }, + ]; + } + } + else if (op === AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER) { + opNode.operand = NaN; + if ( + opNode.parameters.length === 3 || + opNode.parameters.length === 4 || + opNode.parameters.length === 11 + ) { + opNode.operand = opNode.parameters.length - 3; + if ( + !( + 'value' in opNode.parameters[2] && + Number(opNode.parameters[2].value) > -1 && + Number(opNode.parameters[2].value) < 9 + ) + ) { + opNode.operand = opNode.parameters.length - 3; + opNode.parameters[2] = { + error: 'invalid tier level', + position: opNode.parameters[2].position, + }; } - else { - if (positions[i].pos - positions[i].count + 1 !== 0) { - return [{ - error: "illigal positioning of parameters", - position: itemsPositions - }] + } + else { + opNode.parameters = [ + { + error: `invalid parameters: expected either 3 or 4 or 11 parameters, but got ${opNode.parameters.length}`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }, + ]; + } + } + else if (op === AllStandardOps.SELECT_LTE) { + opNode.operand = NaN; + if (opNode.parameters.length > 4 && opNode.parameters.length < 35) { + if ( + 'value' in opNode.parameters[0] && + 'value' in opNode.parameters[1] + ) { + if ( + Number(opNode.parameters[0].value) < 2 && + Number(opNode.parameters[1].value) < 3 + ) { + opNode.operand = selectLte( + Number(opNode.parameters[0].value), + Number(opNode.parameters[0].value), + opNode.parameters.length - 2 + ); + opNode.parameters.shift(); + opNode.parameters.shift(); } else { - let output_ = this.state.multiOutputCache.pop(); - if (output_ && "opcode" in output_) { - return [{ - error: `invalid consumption of previous multioutput opcodes`, - position: itemsPositions - }] + if (Number(opNode.parameters[0].value) > 1) { + opNode.parameters[0] = { + error: 'invalid value for SELECT_LTE logic, must be between 0 - 1', + position: opNode.parameters[0].position, + }; } - else { - for (let j = positions[i].pos - 1; j >= 0; j--) { - let tmp = this.state.multiOutputCache.pop(); - if (tmp) items[j] = tmp; - else return [{ - error: `illigal reach to undefined opcode outputs`, - position: itemsPositions - }] - } + if (Number(opNode.parameters[1].value) > 2) { + opNode.parameters[1] = { + error: 'invalid value for SELECT_LTE mode, must be between 0 - 2', + position: opNode.parameters[1].position, + }; } } } + else {} } - return items; - } - else { - return [{ - error: "invalid expression", - position: itemsPositions - }] - } - } - - private static resolveParens(entry: number) { - let isInfix = false; - let isPrefix = false; - let isPostfix = false; - let index_ = this.state.parse.stack.lastIndexOf("("); - let endIndex_ = this.input.length + entry - this.exp.length - 1; - let startIndex_ = - entry + this.input.slice(0, -this.exp.length).lastIndexOf("("); - - if (index_ >= 0) { - let parens_ = this.state.parse.stack.splice( - -(this.state.parse.stack.length - index_) - ) as Exclude[]; - parens_.shift(); - - for (let i = 0; i < parens_.length; i++) { - let tmp = parens_[i]; - if ("op" in tmp) { - if (i !== 0 && i !== parens_.length - 1) isInfix = true; - if (i === 0) isPrefix = true; - if (i === parens_.length - 1) isPostfix = true; - } + else { + opNode.parameters = [ + { + error: `invalid parameters: expected at least 4 and at most 34 parameters in total, but got ${opNode.parameters.length}`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }, + ]; } - - let multiOuputOpsPos: { - pos: number, - count: number, - type: number - }[] = []; - let reset = false; - for (let i = parens_.length - 1; i >= 0; i--) { - let tmp = parens_[i]; - if (("output" in tmp && tmp.output > 1)) { - multiOuputOpsPos.push({ pos: i, count: 1, type: 1 }); - reset = true; - } - else if (("value" in tmp && tmp.value === this.placeholder)) { - if (reset) { - multiOuputOpsPos[multiOuputOpsPos.length - 1].count++; - } + } + else if (op === AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE) { + opNode.operand = NaN; + if (opNode.parameters.length === 4) { + if ( + 'value' in opNode.parameters[0] && + 'value' in opNode.parameters[1] + ) { + if ( + Number(opNode.parameters[0].value) < 9 && + Number(opNode.parameters[1].value) < 9 + ) { + opNode.operand = tierRange( + Number(opNode.parameters[0].value), + Number(opNode.parameters[1].value) + ); + opNode.parameters.shift(); + opNode.parameters.shift(); + } else { - multiOuputOpsPos.push({ pos: i, count: 1, type: 0 }) - reset = true; + if (Number(opNode.parameters[0].value) > 8) { + opNode.parameters[0] = { + error: 'invalid value for start tier', + position: opNode.parameters[0].position, + }; + } + if (Number(opNode.parameters[1].value) > 8) { + opNode.parameters[1] = { + error: 'invalid value for end tier', + position: opNode.parameters[1].position, + }; + } } - } - else reset = false; - } - - if (multiOuputOpsPos.length > 0) { - parens_ = this.resolveMutliOutputs(parens_, [startIndex_, endIndex_], multiOuputOpsPos); - if ("error" in parens_[0]) this.hasError = true; - } - - if (isPrefix && isPostfix) { - this.state.parse.stack.push({ - error: "invalid notation", - position: [startIndex_, endIndex_] - }); - if (!this.hasError) this.hasError = true; - } - if (isInfix && (isPrefix || isPostfix)) { - this.state.parse.stack.push({ - error: "invalid notation", - position: [startIndex_, endIndex_] - }); - if (!this.hasError) this.hasError = true; + } + else {} } - - let tmp = this.state.parse.stack[this.state.parse.stack.length - 1]; - if (!isPrefix && !isPostfix && tmp && tmp !== "(" && "op" in tmp) { - this.state.parse.stack.pop(); - this.state.parse.stack.push( - this.resolveOp({ - opcode: { - name: tmp.op, - position: tmp.position - }, - position: [tmp.position[0], endIndex_], - parens: [tmp.position[0] + tmp.op.length, endIndex_], - operand: isInfix ? Math.floor(parens_.length / 2) + 1 : parens_.length, - output: NaN, - parameters: isInfix - ? [this.resolveInfix( - parens_ as Exclude[], - [tmp.position[0], endIndex_] - )] - : parens_ as ParseTree[], - data: this.data[this.names.indexOf(tmp.op)] - }) - ) + else { + opNode.parameters = [ + { + error: `invalid parameters: expected at least 4 parameters in total, but got ${opNode.parameters.length}`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }, + ]; } - else if (!isPrefix && !isPostfix && this.searchOps(this.exp)) { - //let err = this.trailingOp(this.exp); - let err = this.searchOps(this.exp); - this.consume(entry); - let tmp_ = this.state.parse.stack.pop() as Op; - - //if (typeof err === "string") { - if (!err) { - this.state.parse.stack.push({ - error: '', - position: [startIndex_, tmp_.position[1]], + } + else if (op === AllStandardOps.IERC1155_BALANCE_OF_BATCH) { + opNode.operand = NaN; + opNode.output = NaN; + if ( + opNode.parameters.length > 2 && + opNode.parameters.length % 2 === 1 + ) { + opNode.operand = (opNode.parameters.length - 1) / 2; + opNode.output = (opNode.parameters.length - 1) / 2; + this.state.parse.moCache.push([]); + for (let i = 0; i < opNode.output - 1; i++) { + this.state.parse.moCache[this.state.parse.moCache.length - 1].push({ + value: `${opNode.opcode.name} output ${i + 1} placeholder`, + position: [], }); - if (!this.hasError) this.hasError = true; - } - else { - this.state.parse.stack.push( - this.resolveOp({ - opcode: { - name: tmp_.op, - position: tmp_.position - }, - position: [startIndex_, tmp_.position[1]], - parens: [startIndex_, endIndex_], - operand: isInfix ? Math.floor(parens_.length / 2) + 1 : parens_.length, - output: NaN, - parameters: isInfix - ? [this.resolveInfix( - parens_ as Exclude[], - [startIndex_, tmp_.position[1]] - )] - : parens_ as ParseTree[], - data: this.data[this.names.indexOf(tmp_.op)] - }) - ); } + } + else { + opNode.parameters = [{ + error: `invalid number of parameters`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }]; } - else if (isPrefix) { - let tmp_ = (parens_.shift() as { - opcode: { - name: string, - position: number[] - } - }).opcode; - this.state.parse.stack.push( - this.resolveOp({ - opcode: tmp_, - position: [startIndex_, endIndex_], - parens: [startIndex_, endIndex_], - operand: parens_.length, - output: NaN, - parameters: parens_ as ParseTree[], - data: this.data[this.names.indexOf(tmp_.name)] - }) - ); - } - else if (isPostfix) { - let tmp_ = (parens_.shift() as { - opcode: { - name: string, - position: number[] - } - }).opcode - this.state.parse.stack.push( - this.resolveOp({ - opcode: (parens_.pop() as { - opcode: { - name: string, position: number[] - } - }).opcode, - position: [startIndex_, endIndex_], - parens: [startIndex_, endIndex_], - operand: parens_.length, - output: NaN, - parameters: parens_ as ParseTree[], - data: this.data[this.names.indexOf(tmp_.name)] - }) - ); - } - else if (isInfix) { - if (parens_.length % 2 === 0) { - this.state.parse.stack.push({ - error: "invalid expression: odd number of operators or parameters", - position: [startIndex_, endIndex_] - }); - if (!this.hasError) this.hasError = true; - } - this.state.parse.stack.push( - this.resolveOp( - this.resolveInfix( - parens_ as Exclude[], - [startIndex_, endIndex_] - ) - ) - ); + } + else if (this.pops[op].name !== 'oprnd') { + if (this.pops[op](0, 0) === opNode.parameters.length) { + opNode.operand = this.pops[op](0, 0); + if (this.zeroOperandOps[op]) { + opNode.operand = 0; + } } else { - this.state.parse.stack.push({ - error: "invalid notation", - position: [startIndex_, endIndex_] - }); - if (!this.hasError) this.hasError = true; + opNode.operand = NaN; + opNode.parameters = [{ + error: `invalid number of parameters`, + position: [ + opNode.parameters[0].position[0], + opNode.parameters[opNode.parameters.length - 1].position[1], + ], + }]; } } - else { - this.state.parse.stack.push({ - error: "cannot find the beginning/ending of this expression block", - position: [startIndex_, endIndex_] - }); - if (!this.hasError) this.hasError = true; + else if (this.pops[op].name === 'oprnd') { + opNode.operand = opNode.parameters.length; + if (this.zeroOperandOps[op]) { + opNode.operand = 0; + } } - } + return opNode; + }; + /** + * Method that consumes the words from the expression and updates the parse tree with their Node type + */ private static consume(entry: number): void { - this.exp = this.trim(this.exp)[0]; if (this.exp.length > 0) { let check_ = true; - let index_ = this.findIndex(this.exp) < 0 - ? this.exp.length - : this.findIndex(this.exp) === 0 + let index_ = + this.findIndex(this.exp) < 0 + ? this.exp.length + : this.findIndex(this.exp) === 0 ? 1 : this.findIndex(this.exp); let str_ = this.exp.slice(0, index_); let consumee_ = str_; - let startPosition = - this.input.length - this.exp.length + entry + consumee_.indexOf(str_); - str_ = this.rmComma(str_); + str_ = this.trim(str_)[0]; + let startPosition = entry + consumee_.indexOf(str_); - if (str_.includes(",")) { - this.state.parse.stack.push( - { - error: `invalid comma: ${str_}`, - position: [startPosition, startPosition + str_.length - 1] - } - ); + if (str_.includes(',')) { + this.state.parse.tree.push({ + error: `invalid comma: ${str_}`, + position: [startPosition, startPosition + str_.length - 1], + }); this.exp = this.exp.replace(consumee_, ""); - if (!this.hasError) this.hasError = true; } else { for (let i = 0; i < this.aliases.length; i++) { if (this.aliases[i] && this.aliases[i].includes(str_)) { this.exp = this.exp.replace(consumee_, ""); - let [tmpExp, offset] = this.trim(this.exp); - if (tmpExp.startsWith("(")) { - if (offset === 0 && consumee_.endsWith(str_)) { - this.state.parse.stack.push({ - op: this.names[i], - position: [startPosition, startPosition + str_.length - 1] - }); - } + let op: Op = { + opcode: { + name: this.names[i], + position: [startPosition, startPosition + str_.length - 1], + }, + operand: this.zeroOperandOps[i] ? 0 : NaN, + output: this.pushes[i].name === 'zero' || 'one' || 'two' || 'three' + ? this.pushes[i](0, 0) + : NaN, + position: [startPosition], + parens: [], + parameters: [], + data: this.data[i], + }; + if (this.exp.startsWith('(')) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.prefix + ); + if (consumee_.endsWith(str_)) { + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'no closing parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } else { - this.state.parse.stack.push({ - error: 'illigal characters between opcode and parenthesis', - position: [startPosition, startPosition + str_.length - 1] - }) + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'illigal characters between opcode and parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; } - } + } else { - this.state.parse.stack.push({ - op: this.names[i], - position: [startPosition, startPosition + str_.length - 1] - }); + if (this.pops[i].name !== 'zero' && !this.isInfix()) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.infix + ); + } + op.position = []; + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : undefined; + op.infixOp = this.pops[i].name !== 'zero' ? true : undefined; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; } check_ = false; break; @@ -1310,73 +1361,183 @@ export class Parser { } if (check_) { if (this.names.includes(str_)) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.prefix + ); this.exp = this.exp.replace(consumee_, ""); - let [tmpExp, offset] = this.trim(this.exp); - if (tmpExp.startsWith("(")) { - if (offset === 0 && consumee_.endsWith(str_)) { - this.state.parse.stack.push({ - op: str_, - position: [startPosition, startPosition + str_.length - 1] - }); - } + let enum_ = this.names.indexOf(str_); + let op: Op = { + opcode: { + name: str_, + position: [startPosition, startPosition + str_.length - 1], + }, + operand: this.zeroOperandOps[this.names.indexOf(str_)] ? 0 : NaN, + output: this.pushes[enum_].name === 'zero' || 'one' || 'two' || 'three' + ? this.pushes[this.names.indexOf(str_)](0, 0) + : NaN, + position: [startPosition], + parens: [], + parameters: [], + data: this.data[this.names.indexOf(str_)], + }; + if (this.exp.startsWith('(')) { + if (consumee_.endsWith(str_)) { + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'no closing parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } else { - this.state.parse.stack.push({ - error: 'illigal characters between opcode and parenthesis', - position: [startPosition, startPosition + str_.length - 1] - }) + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'illigal characters between opcode and parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; } - } + } else { - this.state.parse.stack.push({ - op: str_, - position: [startPosition, startPosition + str_.length - 1] - }); + if (this.pops[enum_].name !== 'zero' && !this.isInfix()) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.infix + ); + } + op.position = []; + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : undefined; + op.infixOp = this.pops[enum_].name !== 'zero' + ? true + : undefined; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; } - } - else if (str_ === "arg") { + } + else if (str_ === 'arg') { this.exp = this.exp.replace(consumee_, ""); - let i_ = this.exp.indexOf(")") + 1; + let i_ = this.exp.indexOf(')') + 1; str_ = str_ + this.exp.slice(0, i_); this.exp = this.exp.slice(i_, this.exp.length); - this.state.parse.stack.push({ + this.updateTree({ value: str_, - position: [startPosition, startPosition + str_.length - 1] + position: [startPosition, startPosition + str_.length - 1], }); - } + } else if (str_ === this.placeholder) { - this.state.parse.stack.push({ + this.updateTree({ value: this.placeholder, - position: [startPosition, startPosition + str_.length - 1] + position: [startPosition, startPosition + str_.length - 1], + }); + this.exp = this.exp.replace(consumee_, ""); + } + else if (isBigNumberish(str_)) { + this.updateTree({ + value: str_, + position: [startPosition, startPosition + str_.length - 1], + }); + this.exp = this.exp.replace(consumee_, ""); + } + else if (str_ === "MaxUint256" || str_ === "maxUint256") { + this.updateTree({ + value: "MaxUint256", + position: [startPosition, startPosition + str_.length - 1], }); this.exp = this.exp.replace(consumee_, ""); } else { - if (str_.includes(".")) { - this.state.parse.stack.push({ - error: `invalid number: float ${str_}`, - position: [startPosition, startPosition + str_.length - 1] - }); - this.exp = this.exp.replace(consumee_, ""); - if (!this.hasError) this.hasError = true; - } - else if (isBigNumberish(str_)) { - this.state.parse.stack.push({ - value: str_, - position: [startPosition, startPosition + str_.length - 1] + this.exp = this.exp.replace(consumee_, ""); + if (this.exp.startsWith('(')) { + this.updateTree({ + opcode: { + name: 'unknown opcode', + position: [startPosition, startPosition + str_.length], + }, + operand: NaN, + output: NaN, + position: [startPosition], + parens: [], + parameters: [], + error: this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'unknown opcode', }); - this.exp = this.exp.replace(consumee_, ""); - } + if (this.state.ambiguity) this.state.ambiguity = false; + } else { - this.state.parse.stack.push({ - error: `unknown: ${str_}`, - position: [startPosition, startPosition + str_.length - 1] + this.updateTree({ + error: `unknown word: ${str_}`, + position: [startPosition, startPosition + str_.length - 1], }); - this.exp = this.exp.replace(consumee_, ""); - if (!this.hasError) this.hasError = true; - }; + } } } } } } + + /** + * Method to check for errors in parsee tree once an expression is fully parsed + */ + private static errorCheck(element: Node): boolean { + if ("opcode" in element) { + if (element.error !== undefined) return false; + else { + for (let i = 0; i < element.parameters.length; i++) { + if (!this.errorCheck(element.parameters[i])) return false; + } + return true; + } + } + else if ("error" in element) return false; + else return true; + } + + /** + * Method to update the arguments of zipmaps after full buyes build (if any present) + */ + public static updateArgs(config: StateConfig): StateConfig { + for (let i = 0; i < config.sources.length; i++) { + for (let j = 0; j < config.sources[i].length; j++) { + if (config.sources[i][j] === this.names.length) { + (config.sources[i] as Uint8Array)[j] = 0; + (config.sources[i] as Uint8Array)[j + 1] += config.constants.length; + } + } + } + return config; + } + + /** + * Method to count all arguments of all zipmaps (if any present) + */ + private static countArgs(tree: Record): number[] { + let count = 0; + let argCache: number[] = []; + let elements = Object.values(tree); + const counter = (element: Node): number[] => { + let c_: number[] = []; + if ("opcode" in element) { + if (element.opcode.name === "ZIPMAP") { + c_.push(element.parameters.length); + } + for (let i = 0; i < element.parameters.length; i++) { + c_.push(...counter(element.parameters[i])); + } + } + return c_; + } + for (let i = 0; i < elements.length; i++) { + for (let j = 0; j < elements[i].length; j++) { + argCache.push(...counter(elements[i][j])); + } + } + for (let i = 0; i < argCache.length; i++) { + count += argCache[i]; + } + argCache.unshift(0, 0); + argCache.unshift(count); + return argCache; + } } From 606862c1b4d9ea2cf2b132b0cd69c57478ec5ca4 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Fri, 14 Oct 2022 19:52:16 +0000 Subject: [PATCH 120/125] Update parser.ts --- src/vm/parser.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 634dfd8..c9eebec 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -331,9 +331,7 @@ export class Parser { sourcesCache = []; } if (argCount > 0) { - let tmp = this.updateArgs({constants, sources}); - constants = tmp.constants; - sources = tmp.sources + ({ constants, sources } = this.updateArgs({constants, sources})); } return { constants, @@ -572,9 +570,7 @@ export class Parser { } this.treeArray[i] = this.parseTree[i].tree; } - let tmp = this.buildBytes(this.treeArray) - this.constants = tmp.constants; - this.sources = tmp.sources; + ({ constants: this.constants, sources: this.sources } = this.buildBytes(this.treeArray)); } /** @@ -1478,7 +1474,7 @@ export class Parser { } /** - * Method to check for errors in parsee tree once an expression is fully parsed + * Method to check for errors in parse tree once an expression is fully parsed */ private static errorCheck(element: Node): boolean { if ("opcode" in element) { @@ -1495,7 +1491,7 @@ export class Parser { } /** - * Method to update the arguments of zipmaps after full buyes build (if any present) + * Method to update the arguments of zipmaps after full bytes build (if any present) */ public static updateArgs(config: StateConfig): StateConfig { for (let i = 0; i < config.sources.length; i++) { @@ -1541,3 +1537,4 @@ export class Parser { return argCache; } } + From f6710e64a7d6c47110e3e584cd17e947c1d7313a Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Sat, 15 Oct 2022 23:59:15 +0000 Subject: [PATCH 121/125] added LTE/GTE and letters case insensitivity --- docs/classes/parser.md | 65 ++++- docs/index.md | 3 + docs/types/iopmetalike.md | 15 ++ docs/variables/gteopcode.md | 10 + docs/variables/lteopcode.md | 10 + src/vm/OpMeta.ts | 95 ++++--- src/vm/parser.ts | 499 +++++++++++++++++++++++++----------- 7 files changed, 492 insertions(+), 205 deletions(-) create mode 100644 docs/types/iopmetalike.md create mode 100644 docs/variables/gteopcode.md create mode 100644 docs/variables/lteopcode.md diff --git a/docs/classes/parser.md b/docs/classes/parser.md index 2c83d16..5e31cee 100644 --- a/docs/classes/parser.md +++ b/docs/classes/parser.md @@ -19,6 +19,10 @@ import { Parser } from "rain-sdk"; // to set the custom opmeta Parser.set(OpMeta) +// to set the custom details of GTE and LTE opcodes +Parser.setGteMeta(description?, data?, description?) +Parser.setLteMeta(description?, data?, description?) + // to execute the parsing and get parse tree object and StateConfig let parseTree; let stateConfig @@ -53,7 +57,9 @@ let stateConfig = Parser.buildBytes(argument) | [get(expression, opmeta, multiOutputPlaceholderChar)](./parser.md#get-method-static-1) | Method to get parse tree object and StateConfig | | [getParseTree(expression, opmeta, multiOutputPlaceholderChar)](./parser.md#getParseTree-method-static-1) | Method to get the parse tree object | | [getStateConfig(expression, opmeta, multiOutputPlaceholderChar)](./parser.md#getStateConfig-method-static-1) | Method to get the StateConfig | -| [updateArgs(config)](./parser.md#updateArgs-method-static-1) | Method to update the arguments of zipmaps after full buyes build (if any present) | +| [setGteMeta(description, data, aliases)](./parser.md#setGteMeta-method-static-1) | Method to set the details of the GTE opcode | +| [setLteMeta(description, data, aliases)](./parser.md#setLteMeta-method-static-1) | Method to set the details of the LTE opcode | +| [updateArgs(config)](./parser.md#updateArgs-method-static-1) | Method to update the arguments of zipmaps after full bytes build (if any present) | ## Static Property Details @@ -110,14 +116,17 @@ Method to get StateConfig (bytes) from a Parse Tree object or a Node or array of Signature: ```typescript -static buildBytes(parseTree: Node | Node[] | Record, offset?: number): StateConfig; +static buildBytes(parseTree: Node | Node[] | Record | Record, offset?: number): StateConfig; ``` #### Parameters | Parameter | Type | Description | | --- | --- | --- | -| parseTree | `Node \| Node[] \| Record` | Tree like object (Parse Tree object or a Node or array of Nodes) to get the StateConfig from | +| parseTree |
Node \| Node[] \| Record \| Record
| Tree like object (Parse Tree object or a Node or array of Nodes) to get the StateConfig from | | offset | `number` | This argument is used internally and should be ignored when calling this method externally | Returns: @@ -204,11 +213,59 @@ static getStateConfig(expression: string, opmeta?: typeof OpMeta, multiOutputPla A StateConfig + + +### setGteMeta(description, data, aliases) + +Method to set the details of the GTE opcode + +Signature: + +```typescript +static setGteMeta(description?: string, data?: any, aliases?: string[]): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| description | `string` | The description | +| data | `any` | Optional data | +| aliases | `string[]` | The aliases of GTE opcode | + +Returns: + +`void` + + + +### setLteMeta(description, data, aliases) + +Method to set the details of the LTE opcode + +Signature: + +```typescript +static setLteMeta(description?: string, data?: any, aliases?: string[]): void; +``` + +#### Parameters + +| Parameter | Type | Description | +| --- | --- | --- | +| description | `string` | The description | +| data | `any` | Optional data | +| aliases | `string[]` | The aliases of LTE opcode | + +Returns: + +`void` + ### updateArgs(config) -Method to update the arguments of zipmaps after full buyes build (if any present) +Method to update the arguments of zipmaps after full bytes build (if any present) Signature: diff --git a/docs/index.md b/docs/index.md index e635beb..cefa86b 100644 --- a/docs/index.md +++ b/docs/index.md @@ -173,6 +173,8 @@ | [eighteenZeros](./variables/eighteenzeros.md) | 18 decimals or i.e "DECIMALS" - used for fixed point match | | [fixedPointDiv](./variables/fixedpointdiv.md) | | | [fixedPointMul](./variables/fixedpointmul.md) | | +| [gteOpcode](./variables/gteopcode.md) | Special OpMeta-like object for providing GTE in parser | +| [lteOpcode](./variables/lteopcode.md) | Special OpMeta-like object for providing GTE in parser | | [max](./variables/max.md) | calculate the maximum among array of BigNumbers | | [min](./variables/min.md) | calculate the minimum among array of BigNumbers | | [OpMeta](./variables/opmeta.md) | | @@ -217,6 +219,7 @@ | [EvidenceConfig](./types/evidenceconfig.md) | | | [Filter](./types/filter.md) | A filtering utility type for ArgsTypeBook | | [IOConfig](./types/ioconfig.md) | token the address of the desired token vaultId corresponding token vault id | +| [iOpMetaLike](./types/iopmetalike.md) | | | [Modifier](./types/modifier.md) | Type for price/quantity modifier based on a tier report or a Rule | | [ModifierType](./types/modifiertype.md) | Valid Modifier types | | [Never](./types/never.md) | Type to get an always false condition | diff --git a/docs/types/iopmetalike.md b/docs/types/iopmetalike.md new file mode 100644 index 0000000..0c91318 --- /dev/null +++ b/docs/types/iopmetalike.md @@ -0,0 +1,15 @@ + +# Type iOpMetaLike + +Signature: + +```typescript +type iOpMetaLike = { + name: string; + pushes: (opcode: number, operand: number) => number; + pops: (opcode: number, operand: number) => number; + description?: string; + aliases?: string[]; + data?: any; +}; +``` diff --git a/docs/variables/gteopcode.md b/docs/variables/gteopcode.md new file mode 100644 index 0000000..784a1fe --- /dev/null +++ b/docs/variables/gteopcode.md @@ -0,0 +1,10 @@ + +# Variable gteOpcode + +Special OpMeta-like object for providing GTE in parser + +Signature: + +```typescript +gteOpcode: iOpMetaLike +``` diff --git a/docs/variables/lteopcode.md b/docs/variables/lteopcode.md new file mode 100644 index 0000000..f936279 --- /dev/null +++ b/docs/variables/lteopcode.md @@ -0,0 +1,10 @@ + +# Variable lteOpcode + +Special OpMeta-like object for providing GTE in parser + +Signature: + +```typescript +lteOpcode: iOpMetaLike +``` diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index daa0a7d..1170367 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -139,7 +139,7 @@ export const OpMeta: Map = new Map([ ): void { this.constant(operand, data) }, - aliases: ['Constant', 'constant', 'const', 'Const'] + aliases: ['CONST'] } ], [ @@ -158,8 +158,7 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.stack(operand, data) - }, - aliases: ['stack', 'Stack'] + } } ], [ @@ -178,8 +177,7 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.context(operand, data) - }, - aliases: ['context', 'Context'] + } } ], [ @@ -199,7 +197,7 @@ export const OpMeta: Map = new Map([ ): Promise { await this.storage(operand, data) }, - aliases: ['storage', 'Storage'] + aliases: ['MEMORY'] } ], [ @@ -218,8 +216,7 @@ export const OpMeta: Map = new Map([ data?: any ): Promise { await this.zipmap(operand, data) - }, - aliases: ['zipmap', 'Zipamp'] + } } ], [ @@ -239,7 +236,7 @@ export const OpMeta: Map = new Map([ ): void { this.debug(operand, data) }, - aliases: ['debug', 'Debug'] + aliases: ['LOG', 'CONSOLE', 'CONSOLE_LOG'] } ], [ @@ -252,7 +249,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC20BalanceOf, - aliases: ['ierc20_balance_of', 'erc20_balance_of', 'ERC20_BALANCE_OF'] + aliases: ['ERC20_BALANCE_OF', 'ERC20BALANCEOF', 'IERC20BALANCEOF'] } ], [ @@ -265,7 +262,7 @@ export const OpMeta: Map = new Map([ pops: pnp.one, isZeroOperand: true, jsvmfn: OpERC20TotalSupply, - aliases: ['ierc20_total_supply', 'erc20_total_supply', 'ERC20_TOTAL_SUPPLY'] + aliases: ['ERC20_TOTAL_SUPPLY', 'ERC20TOTALSUPPLY', 'IERC20TOTALSUPPLY'] } ], [ @@ -278,7 +275,7 @@ export const OpMeta: Map = new Map([ pops: pnp.three, isZeroOperand: true, jsvmfn: OpERC20SnapshotBalanceOfAt, - aliases: ['ierc20_snapshot_balance_of', 'erc20_snapshot_balance_of', 'ERC20_SNAPSHOT_BALANCE_OF'] + aliases: ['ERC20_SNAPSHOT_BALANCE_OF_AT', 'ERC20SNAPSHOTBALANCEOFAT', 'IERC20SNAPSHOTBALANCEOFAT'] } ], [ @@ -291,7 +288,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC20SnapshotTotalSupplyAt, - aliases: ['ierc20_snapshot_total_supply', 'erc20_snapshot_total_supply', 'ERC20_SNAPSHOT_TOTAL_SUPPLY'] + aliases: ['ERC20_SNAPSHOT_TOTAL_SUPPLY_AT', 'ERC20SNAPSHOTTOTALSUPPLYAT', 'IERC20SNAPSHOTTOTALSUPPLYAT'] } ], [ @@ -304,7 +301,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC721BalanceOf, - aliases: ['ierc721_balance_of', 'erc721_balance_of', 'ERC721_BALANCE_OF'] + aliases: ['ERC721_BALANCE_OF', 'ERC721BALANCEOF', 'IERC721BALANCEOF'] } ], [ @@ -317,7 +314,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC721OwnerOf, - aliases: ['ierc721_owner_of', 'erc721_owner_of', 'ERC721_OWNER_OF'] + aliases: ['ERC721_OWNER_OF', 'ERC721OWNEROF', 'IERC721OWNEROF'] } ], [ @@ -330,7 +327,7 @@ export const OpMeta: Map = new Map([ pops: pnp.three, isZeroOperand: true, jsvmfn: OpERC1155BalanceOf, - aliases: ['ierc1155_balance_of', 'erc1155_balance_of', 'ERC1155_BALANCE_OF'] + aliases: ['ERC1155_BALANCE_OF', 'ERC1155BALANCEOF', 'IERC1155BALANCEOF'] } ], [ @@ -343,7 +340,7 @@ export const OpMeta: Map = new Map([ pops: pnp.derived, isZeroOperand: false, jsvmfn: OpERC1155BalanceOfBatch, - aliases: ['ierc1155_balance_of_batch', 'erc1155_balance_of_batch', 'ERC1155_BALANCE_OF_BATCH'] + aliases: ['ERC1155_BALANCE_OF_BATCH', 'ERC1155BALANCEOFBATCH', 'IERC1155BALANCEOFBATCH'] } ], [ @@ -356,7 +353,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpBlockNumber, - aliases: ['CURRENT_BLOCK', 'current_block', 'Current_Block', 'currentBlock', 'block_number', 'blockNumber', 'BlockNumber'], + aliases: ['CURRENT_BLOCK', 'CURRENTBLOCK', 'BLOCKNUMBER'], } ], [ @@ -369,7 +366,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpCaller, - aliases: ['MSG_SENDER', 'msg_sender', 'Msg_Sender', 'msgSender', 'MsgSender', 'Sender', 'sender'] + aliases: ['MSG_SENDER', 'MSGSENDER', 'SIGNER'] } ], [ @@ -382,7 +379,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpThisAddress, - aliases: ['THIS_ADDRESS', 'this_address', 'This_Adress', 'ThisAddress', 'thisAddress'] + aliases: ['THISADDRESS'] } ], [ @@ -395,7 +392,7 @@ export const OpMeta: Map = new Map([ pops: pnp.zero, isZeroOperand: true, jsvmfn: OpTimestamp, - aliases: ['CURRENT_TIMESTAMP', 'Current_Timestamp', 'current_timestamp', 'currentTimestamp', 'block_timestamp', 'Block_Timestamp', 'blockTimestamp', 'BlockTimestamp'] + aliases: ['CURRENT_TIMESTAMP', 'CURRENTTIMESTAMP', 'BLOCKTIMESTAMP', 'CURRENTTIME', 'CURRENT_TIME'] } ], [ @@ -408,7 +405,7 @@ export const OpMeta: Map = new Map([ pops: pnp.one, isZeroOperand: false, jsvmfn: OpScale18, - aliases: ['Scale18', 'scale18'] + aliases: ['SCALE_18'] } ], [ @@ -421,7 +418,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: false, jsvmfn: OpScale18Div, - aliases: ['Scale18_Div', 'scale18_div', 'scale18Div', 'Scale18Div', 'scale18div'] + aliases: ['SCALE18DIV', 'SCALE_18_DIV'] } ], [ @@ -434,7 +431,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: false, jsvmfn: OpScale18Mul, - aliases: ['Scale18_Mul', 'scale18_mul', 'scale18Mul', 'Scale18Mul', 'scale18mul'] + aliases: ['SCALE18MUL', 'SCALE_18_MUL'] } ], [ @@ -447,7 +444,7 @@ export const OpMeta: Map = new Map([ pops: pnp.one, isZeroOperand: false, jsvmfn: OpScaleBy, - aliases: ['Scale_By', 'scale_by', 'scaleBy', 'ScaleBy'] + aliases: ['SCALEBY'] } ], [ @@ -460,7 +457,7 @@ export const OpMeta: Map = new Map([ pops: pnp.one, isZeroOperand: false, jsvmfn: OpScaleN, - aliases: ['ScaleN', 'scaleN', 'scalen', 'scale_n', 'Scale_N', 'scale_n'] + aliases: ['SCALE_N'] } ], [ @@ -473,7 +470,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpAny, - aliases: ['Any', 'any', 'or'] + aliases: ['OR', 'ANY_OF', 'ANYOF'] } ], [ @@ -486,7 +483,7 @@ export const OpMeta: Map = new Map([ pops: pnp.three, isZeroOperand: true, jsvmfn: OpEagerIf, - aliases: ['eager_if', 'Eager_If', 'Eager_if', 'if', 'If', 'IF'] + aliases: ['EAGERIF', 'IF'] } ], [ @@ -499,7 +496,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpEqualTo, - aliases: ['Equal_To', 'equal_to', 'EqualTo', 'equalTo', 'eq', 'Eq', 'EQ'] + aliases: ['EQ', 'EQUALTO', '=', '==', '==='] } ], [ @@ -512,7 +509,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpEvery, - aliases: ['Every', 'every', 'and', 'And', 'and', 'AND'] + aliases: ['AND', 'ALL_OF', 'ALLOF'] } ], [ @@ -525,7 +522,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpGreaterThan, - aliases: ['Greater_Than', 'greater_than', 'greaterThan', 'GreaterThan', 'gt', 'GT', 'Gt'] + aliases: ['GT', 'GREATERTHAN', 'BIGGERTHAN', 'BIGGER_THAN'] } ], [ @@ -538,7 +535,7 @@ export const OpMeta: Map = new Map([ pops: pnp.one, isZeroOperand: true, jsvmfn: OpIsZero, - aliases: ['IsZero', 'isZero', 'iszero', 'Is_Zero', 'is_zero', 'IS_ZERO'] + aliases: ['IS_ZERO', 'FALSE', 'IS_FALSE', 'ISFALSE'] } ], [ @@ -551,7 +548,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpLessThan, - aliases: ['Less_Than', 'less_than', 'lessThan', 'LessThan', 'lt', 'LT', 'Lt'] + aliases: ['LT', 'LESSTHAN', 'LITTLETHAN', 'LITTLE_THAN'] } ], [ @@ -564,7 +561,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSaturatingAdd, - aliases: ['Saturating_Add', 'saturating_add', 'saturatingAdd', 'satAdd', 'sat_add', 'Sat_Add', 'Saturating_Sum', 'saturating_sum', 'saturatingSum', 'satSum', 'sat_sum', 'Sat_Sum'] + aliases: ['SATURATINGADD', 'SAT_ADD', 'SATADD', 'SATURATING_SUM', 'SATURATINGSUM', 'SATSUM', 'SAT_SUM'] } ], [ @@ -577,7 +574,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSaturatingMul, - aliases: ['Saturating_Mul', 'saturating_mul', 'saturatingMul', 'satMul', 'sat_mul', 'Sat_Mul'] + aliases: ['SATURATINGMUL', 'SAT_MUL', 'SATMUL'] } ], [ @@ -590,7 +587,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSaturatingSub, - aliases: ['Saturating_Sub', 'saturating_sub', 'saturatingSub', 'satSub', 'sat_sub', 'Sat_Sub', 'Saturating_Minus', 'saturating_minus', 'saturatingMinus', 'satMinus', 'sat_minus', 'Sat_Minus'] + aliases: ['SATURATINGSUB', 'SAT_SUB', 'SATSUB', 'SATURATING_MINUS', 'SATURATINGMINUS', 'SATMINUS', 'SAT_MINUS'] } ], [ @@ -603,7 +600,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpAdd, - aliases: ['Add', 'add', '+', 'Sum', 'sum', 'SUM'] + aliases: ['+', 'SUM'] } ], [ @@ -616,7 +613,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpDiv, - aliases: ['Div', 'div', '/'] + aliases: ['/', '÷', 'DIVIDE'] } ], [ @@ -629,7 +626,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpExp, - aliases: ['Exp', 'exp', '^', 'POW', 'Pow', 'pow'] + aliases: ['^', '**', 'POW', 'POWER', 'POWER_OF', 'POWEROF', 'EXPONENTION'] } ], [ @@ -642,7 +639,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMax, - aliases: ['Max', 'max', 'maximum', 'MAXIMUM', 'Maximum'] + aliases: ['MAXIMUM', 'MAXIMUM_OF', 'MAXIMUMOF', 'MAX_OF', 'MAXOF'] } ], [ @@ -655,7 +652,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMin, - aliases: ['Min', 'min', 'MINIMUM', 'Minimum', 'minimum'] + aliases: ['MINIMUM', 'MINIMUM_OF', 'MINIMUMOF', 'MIN_OF', 'MINOF'] } ], [ @@ -668,7 +665,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMod, - aliases: ['Mod', 'mod', '%'] + aliases: ['%'] } ], [ @@ -681,7 +678,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMul, - aliases: ['Mul', 'mul', '*', 'x', 'X'] + aliases: ['*', 'X'] } ], [ @@ -694,7 +691,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSub, - aliases: ['Sub', 'sub', '-', 'minus', 'Minus', 'MINUS'] + aliases: ['-', 'MINUS'] } ], [ @@ -707,7 +704,7 @@ export const OpMeta: Map = new Map([ pops: pnp.derived, isZeroOperand: false, jsvmfn: OpITierV2Report, - aliases: ['itierv2_report', 'Itierv2_Report', 'itierv2Report', 'report', 'Report', 'REPORT'] + aliases: ['REPORT', 'ITIERV2REPORT', 'TIERREPORT', 'TIER_REPORT', 'ITIERREPORT', 'ITIER_REPORT'] } ], [ @@ -720,7 +717,7 @@ export const OpMeta: Map = new Map([ pops: pnp.derived, isZeroOperand: false, jsvmfn: OpITierV2ReportTimesForTier, - aliases: ['itierv2_report_time_for_tier', 'Itierv2_Report_Time_For_Tier', 'Itierv2ReportTimeForTier', 'itierv2ReportTimeForTier', 'singleReport', 'SingleReport', 'Single_Report', 'single_report'] + aliases: ['ITIERV2REPORTTIMEFORTIER', 'SINGLE_REPORT', 'SINGLEREPORT', 'SINGLE_TIER_REPORT', 'SINGLETIERREPORT'] } ], [ @@ -733,7 +730,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: true, jsvmfn: OpSaturatingDiff, - aliases: ['Saturating_Diff', 'saturating_diff', 'saturatingDiff', 'satDiff', 'SatDiff', 'sat_diff', 'Sat_Diff', 'SAT_DIFF'] + aliases: ['SAT_DIFF', 'SATDIFF', 'SATURATINGDIFF'] } ], [ @@ -746,7 +743,7 @@ export const OpMeta: Map = new Map([ pops: pnp.derived, isZeroOperand: false, jsvmfn: OpSelectLte, - aliases: ['Select_Lte', 'select_lte', 'selectLte', 'SelectLte'] + aliases: ['SELECTLTE', 'SELECT'] } ], [ @@ -759,7 +756,7 @@ export const OpMeta: Map = new Map([ pops: pnp.two, isZeroOperand: false, jsvmfn: OpUpdateTimesForTierRange, - aliases: ['update_times_for_tier_range', 'Update_Times_For_Tier_Range', 'UpdateTimesForTierRange', 'updateTimesForTierRange'] + aliases: ['UPDATETIMESFORTIERRANGE', 'UPDATE_TIER_RANGE', 'UPDATETIERRANGE', 'UPDATE_TIERS', 'UPDATETIERS', 'UPDATE_REPORT', 'UPDATEREPORT'] } ] ]); diff --git a/src/vm/parser.ts b/src/vm/parser.ts index c9eebec..ada47b2 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -1,4 +1,4 @@ -import { OpMeta } from './OpMeta'; +import { OpMeta, pnp } from './OpMeta'; import { BigNumberish, BytesLike } from 'ethers'; import { AllStandardOps, StateConfig } from '../classes/vm'; import { @@ -93,6 +93,39 @@ export type ParseTree = Record< { tree: Node[]; position: number[] } >; +export type iOpMetaLike = { + name: string, + pushes: (opcode: number, operand: number) => number, + pops: (opcode: number, operand: number) => number, + description?: string, + aliases?: string[], + data?: any +} + +/** + * @public + * Special OpMeta-like object for providing GTE in parser + */ +export const gteOpcode: iOpMetaLike = { + name: 'GREATER_THAN_EQUAL', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + aliases: ['GTE', 'GREATERTHANEQUAL', 'BIGGERTHANEQUAL', 'BIGGER_THAN_EQUAL'], +} + +/** + * @public + * Special OpMeta-like object for providing GTE in parser + */ +export const lteOpcode: iOpMetaLike = { + name: 'LESS_THAN_EQUAL', + description: '', + pushes: pnp.one, + pops: pnp.oprnd, + aliases: ["LTE", "LESSTHANEQUAL", "LITTLE_THAN_EQUAL", "LITTLETHANEQUAL"] +} + /** * @public * Parser is a mini compiler to generate a valid StateConfig (deployable bytes) from a text script @@ -105,6 +138,10 @@ export type ParseTree = Record< * // to set the custom opmeta * Parser.set(OpMeta) * + * // to set the custom details of GTE and LTE opcodes + * Parser.setGteMeta(description?, data?, description?) + * Parser.setLteMeta(description?, data?, description?) + * * // to execute the parsing and get parse tree object and StateConfig * let parseTree; * let stateConfig @@ -155,6 +192,37 @@ export class Parser { ambiguity: false, }; + // special literals for gte and lte + private static gte = gteOpcode; + private static lte = lteOpcode; + + /** + * @public + * Method to set the details of the GTE opcode + * + * @param aliases - The aliases of GTE opcode + * @param description - The description + * @param data - Optional data + */ + public static setGteMeta(description?: string, data?: any, aliases?: string[]) { + this.gte.data = data; + this.gte.aliases = aliases; + this.gte.description = description; + } + + /** + * @public + * Method to set the details of the LTE opcode + * + * @param aliases - The aliases of LTE opcode + * @param description - The description + * @param data - Optional data + */ + public static setLteMeta(description?: string, data?: any, aliases?: string[]) { + this.lte.data = data; + this.lte.aliases = aliases; + this.lte.description = description; + } /** * @public @@ -225,7 +293,8 @@ export class Parser { parseTree: | Node | Node[] - | Record, + | Record + | Record, offset?: number ): StateConfig { let constants: BigNumberish[] = []; @@ -240,6 +309,11 @@ export class Parser { let array: any = Object.values(parseTree); if (!("0" in array[0])) nodes = [array as Node[]]; else { + if ("tree" in array[0]) { + for (let i = 0; i < array.length; i++) { + array[i] = array[i].tree; + } + } argOffset = this.countArgs( parseTree as Record ); @@ -262,7 +336,7 @@ export class Parser { argOffset = isRecord ? this.countArgs(parseTree as Record) : [0, 0]; - let argCount = isRecord ? argOffset.pop()! : 0; + let argCount = isRecord ? argOffset.unshift()! : 0; for (let i = 0; i < nodes.length; i++) { for (let j = 0; j < nodes[i].length; j++) { @@ -286,10 +360,10 @@ export class Parser { (node.value as string).replace("arg(", "").slice(0, -1) ); sourcesCache.push( - op(this.names.length, isRecord ? argOffset[i] + index : offset ? offset + index : 0) + op(this.names.length, isRecord ? argOffset[i] + index : offset ? offset + index : index) ); } - else if (node.value === "MaxUint256") { + else if (node.value === "MaxUint256" || node.value === "Infinity") { if (constants.includes("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")) { sourcesCache.push( op(AllStandardOps.CONSTANT, constants.indexOf(node.value)) @@ -319,19 +393,31 @@ export class Parser { sourcesCache.push(...tmp.sources); constants.push(...tmp.constants) } - sourcesCache.push( - op( - this.names.indexOf((node as Op).opcode.name), - (node as Op).operand + if ( + (node as Op).opcode.name === this.gte.name || + (node as Op).opcode.name === this.lte.name + ) { + sourcesCache.push( + op( + (node as Op).opcode.name === this.gte.name + ? AllStandardOps.LESS_THAN + : AllStandardOps.GREATER_THAN, + (node as Op).operand + ), + op(AllStandardOps.ISZERO) ) - ) + } + else sourcesCache.push(op( + this.names.indexOf((node as Op).opcode.name), + (node as Op).operand + )) } } sources.push(concat(sourcesCache)) sourcesCache = []; } - if (argCount > 0) { - ({ constants, sources } = this.updateArgs({constants, sources})); + if (isRecord && argCount > 0) { + ({ constants, sources } = this.updateArgs({constants, sources})); } return { constants, @@ -415,6 +501,14 @@ export class Parser { return [str, leadingOffset]; }; + /** + * Method to handle letter case senivity + */ + private static handleLetterCase = (str: string): string => { + while (str.includes("-")) str = str.replace("-", "_"); + return str.toUpperCase(); + } + /** * The main workhorse of Rain Parser which parses the words used in an * expression and is responsible for building the Parse Tree and Bytes @@ -601,76 +695,113 @@ export class Parser { * * Method to check if the current state of parsing of a node is postfix or not */ private static isPostfix(str: string): string[] | undefined { + let offset = 0; if (!str.length) return undefined; if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; - if (str.startsWith(',')) { - let offset = 0; - while (str.startsWith(',')) { - str = str.replace(',', ""); - offset++; - } - if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; - for (let i = 0; i < this.names.length; i++) { - if (str.startsWith(this.names[i])) { - return [ - this.names[i], + while (str.startsWith(',')) { + str = str.replace(',', ""); + offset++; + } + if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; + let str_ = this.handleLetterCase(str); + if (str_.startsWith(this.gte.name)) { + let tmp = [ + this.gte.name, + offset.toString(), + (offset + this.gte.name.length - 1).toString(), + ]; + if (str_.replace(this.gte.name, "").startsWith("(")) tmp.push( + 'ambiguous expression/opcode' + ) + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ); + return tmp; + } + if (str_.startsWith(this.lte.name)) { + let tmp = [ + this.lte.name, + offset.toString(), + (offset + this.lte.name.length - 1).toString(), + ]; + if (str_.replace(this.lte.name, "").startsWith("(")) tmp.push( + 'ambiguous expression/opcode' + ) + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ); + return tmp; + } + if (this.gte.aliases) { + for (let i = 0; i < this.gte.aliases.length; i++) { + if (str_.startsWith(this.gte.aliases[i])) { + let tmp = [ + this.gte.name, offset.toString(), - (offset + this.names[i].length - 1).toString(), - 'illigal characters between opcode and parenthesis', + (offset + this.gte.aliases[i].length - 1).toString(), ]; + if (str_.replace(this.gte.aliases[i], "").startsWith("(")) tmp.push( + 'ambiguous expression/opcode' + ) + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ); + return tmp; } } - for (let i = 0; i < this.aliases.length; i++) { - if (this.aliases[i]) { - for (let j = 0; j < this.aliases[i].length; j++) { - if (str.startsWith(this.aliases[i][j])) { - return [ - this.names[i], - offset.toString(), - (offset + this.aliases[i][j].length - 1).toString(), - 'illigal characters between opcode and parenthesis', - ]; - } - } + } + if (this.lte.aliases) { + for (let i = 0; i < this.lte.aliases?.length; i++) { + if (str_.startsWith(this.lte.aliases[i])) { + let tmp = [ + this.lte.name, + offset.toString(), + (offset + this.lte.aliases[i].length - 1).toString(), + ]; + if (str_.replace(this.lte.aliases[i], "").startsWith("(")) tmp.push( + 'ambiguous expression/opcode' + ) + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ); + return tmp; } } } for (let i = 0; i < this.names.length; i++) { - if (str.startsWith(this.names[i])) { - if (str.replace(this.names[i], "").startsWith('(')) { + if (str_.startsWith(this.names[i])) { + let tmp = [ + this.names[i], + offset.toString(), + (offset + this.names[i].length - 1).toString(), + ]; + if (str_.replace(this.names[i], "").startsWith('(')) { this.state.ambiguity = true; - return [ - this.names[i], - '0', - (this.names[i].length - 1).toString(), - 'ambiguous expression/opcode', - ]; - } - else { - return [this.names[i], '0', (this.names[i].length - 1).toString()]; + tmp.push('ambiguous expression/opcode'); } + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ) + return tmp; } } for (let i = 0; i < this.aliases.length; i++) { if (this.aliases[i]) { for (let j = 0; j < this.aliases[i].length; j++) { - if (str.startsWith(this.aliases[i][j])) { - if (str.replace(this.aliases[i][j], "").startsWith('(')) { + if (str_.startsWith(this.aliases[i][j])) { + let tmp = [ + this.names[i], + offset.toString(), + (offset + this.aliases[i][j].length - 1).toString(), + ] + if (str_.replace(this.aliases[i][j], "").startsWith('(')) { this.state.ambiguity = true; - return [ - this.names[i], - '0', - (this.aliases[i][j].length - 1).toString(), - 'ambiguous expression/opcode', - ]; + tmp.push('ambiguous expression/opcode'); } - else { - return [ - this.names[i], - '0', - (this.aliases[i][j].length - 1).toString(), - ]; - } + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ) + return tmp; } } } @@ -792,9 +923,11 @@ export class Parser { position: [startPosition, endPosition], }, operand: this.zeroOperandOps[this.names.indexOf(opcode)] ? 0 : NaN, - output: this.pushes[this.names.indexOf(opcode)].name === 'zero' || 'one' || 'two' || 'three' - ? this.pushes[this.names.indexOf(opcode)](0, 0) - : NaN, + output: opcode === this.gte.name || opcode === this.lte.name + ? 1 + : this.pushes[this.names.indexOf(opcode)].name === 'zero' || 'one' || 'two' || 'three' + ? this.pushes[this.names.indexOf(opcode)](0, 0) + : NaN, position: [node.position[0], endPosition], parens: [node.position[0], this.state.track.parens.close.pop()!], parameters: node.parameters, @@ -901,8 +1034,7 @@ export class Parser { op = { error: 'invalid infix expression', position: [ - (tmp[tmp.length - 2][tmp[tmp.length - 2].length - 1] as Op) - .parens[0], + (tmp[tmp.length - 2][tmp[tmp.length - 2].length - 1] as Op).parens[0], closeParenPosition, ], }; @@ -973,7 +1105,13 @@ export class Parser { */ private static resolveOp = (opNode: Op): Op => { let op = this.names.indexOf(opNode.opcode.name); - if ( + if (opNode.opcode.name === this.gte.name || opNode.opcode.name === this.lte.name) { + opNode.operand = opNode.parameters.length; + if (opNode.operand < 2) { + opNode.error = "invalid number of parameters, needs at least 2 items to compare"; + } + } + else if ( op === AllStandardOps.STACK || op === AllStandardOps.CONTEXT || op === AllStandardOps.STORAGE @@ -1278,90 +1416,146 @@ export class Parser { */ private static consume(entry: number): void { if (this.exp.length > 0) { - let check_ = true; - let index_ = + let check = true; + let index = this.findIndex(this.exp) < 0 ? this.exp.length : this.findIndex(this.exp) === 0 ? 1 : this.findIndex(this.exp); - let str_ = this.exp.slice(0, index_); - let consumee_ = str_; - str_ = this.trim(str_)[0]; - let startPosition = entry + consumee_.indexOf(str_); + let str = this.exp.slice(0, index); + let consumee = str; + str = this.trim(str)[0]; + let startPosition = entry + consumee.indexOf(str); - if (str_.includes(',')) { + if (str.includes(',')) { this.state.parse.tree.push({ - error: `invalid comma: ${str_}`, - position: [startPosition, startPosition + str_.length - 1], + error: `invalid comma: ${str}`, + position: [startPosition, startPosition + str.length - 1], }); - this.exp = this.exp.replace(consumee_, ""); + this.exp = this.exp.replace(consumee, ""); } else { - for (let i = 0; i < this.aliases.length; i++) { - if (this.aliases[i] && this.aliases[i].includes(str_)) { - this.exp = this.exp.replace(consumee_, ""); - let op: Op = { - opcode: { - name: this.names[i], - position: [startPosition, startPosition + str_.length - 1], - }, - operand: this.zeroOperandOps[i] ? 0 : NaN, - output: this.pushes[i].name === 'zero' || 'one' || 'two' || 'three' - ? this.pushes[i](0, 0) - : NaN, - position: [startPosition], - parens: [], - parameters: [], - data: this.data[i], - }; - if (this.exp.startsWith('(')) { + let str_ = this.handleLetterCase(str); + if ( + str_ === this.gte.name || this.gte.aliases?.includes(str_) || + str_ === this.lte.name || this.lte.aliases?.includes(str_) + ) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.prefix + ); + let isGte = str_ === this.gte.name || this.gte.aliases?.includes(str_); + this.exp = this.exp.replace(consumee, ""); + let op: Op = { + opcode: { + name: isGte ? this.gte.name : this.lte.name, + position: [startPosition, startPosition + str_.length - 1], + }, + operand: NaN, + output: 1, + position: [startPosition], + parens: [], + parameters: [], + data: isGte ? this.gte.data : this.lte.data, + }; + if (this.exp.startsWith('(')) { + if (consumee.endsWith(str)) { + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'no closing parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } + else { + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'illigal characters between opcode and parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } + } + else { + if (!this.isInfix()) { this.state.track.notation.push( this.state.depthLevel, - Notations.prefix + Notations.infix ); - if (consumee_.endsWith(str_)) { - op.error = this.state.ambiguity - ? 'ambiguous expression/opcode' - : 'no closing parenthesis'; - this.updateTree(op); - if (this.state.ambiguity) this.state.ambiguity = false; + } + op.position = []; + op.error = 'ambiguous expression/opcode'; + if (!this.state.ambiguity) delete op.error; + op.infixOp = true; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } + } + else { + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i] && this.aliases[i].includes(str_)) { + this.exp = this.exp.replace(consumee, ""); + let op: Op = { + opcode: { + name: this.names[i], + position: [startPosition, startPosition + str_.length - 1], + }, + operand: this.zeroOperandOps[i] ? 0 : NaN, + output: this.pushes[i].name === 'zero' || 'one' || 'two' || 'three' + ? this.pushes[i](0, 0) + : NaN, + position: [startPosition], + parens: [], + parameters: [], + data: this.data[i], + }; + if (this.exp.startsWith('(')) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.prefix + ); + if (consumee.endsWith(str)) { + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'no closing parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } + else { + op.error = this.state.ambiguity + ? 'ambiguous expression/opcode' + : 'illigal characters between opcode and parenthesis'; + this.updateTree(op); + if (this.state.ambiguity) this.state.ambiguity = false; + } } else { - op.error = this.state.ambiguity - ? 'ambiguous expression/opcode' - : 'illigal characters between opcode and parenthesis'; + if (this.pops[i].name !== 'zero' && !this.isInfix()) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.infix + ); + } + op.position = []; + op.error = 'ambiguous expression/opcode'; + if (!this.state.ambiguity) delete op.error; + op.infixOp = this.pops[i].name !== 'zero' ? true : undefined; this.updateTree(op); if (this.state.ambiguity) this.state.ambiguity = false; } - } - else { - if (this.pops[i].name !== 'zero' && !this.isInfix()) { - this.state.track.notation.push( - this.state.depthLevel, - Notations.infix - ); - } - op.position = []; - op.error = this.state.ambiguity - ? 'ambiguous expression/opcode' - : undefined; - op.infixOp = this.pops[i].name !== 'zero' ? true : undefined; - this.updateTree(op); - if (this.state.ambiguity) this.state.ambiguity = false; + check = false; + break; } - check_ = false; - break; } } - if (check_) { + if (check) { + let str_ = this.handleLetterCase(str); if (this.names.includes(str_)) { this.state.track.notation.push( this.state.depthLevel, Notations.prefix ); - this.exp = this.exp.replace(consumee_, ""); + this.exp = this.exp.replace(consumee, ""); let enum_ = this.names.indexOf(str_); let op: Op = { opcode: { @@ -1378,7 +1572,7 @@ export class Parser { data: this.data[this.names.indexOf(str_)], }; if (this.exp.startsWith('(')) { - if (consumee_.endsWith(str_)) { + if (consumee.endsWith(str)) { op.error = this.state.ambiguity ? 'ambiguous expression/opcode' : 'no closing parenthesis'; @@ -1401,54 +1595,54 @@ export class Parser { ); } op.position = []; - op.error = this.state.ambiguity - ? 'ambiguous expression/opcode' - : undefined; + op.error = 'ambiguous expression/opcode'; + if (!this.state.ambiguity) delete op.error; op.infixOp = this.pops[enum_].name !== 'zero' ? true : undefined; this.updateTree(op); if (this.state.ambiguity) this.state.ambiguity = false; } - } - else if (str_ === 'arg') { - this.exp = this.exp.replace(consumee_, ""); + } + else if (str_ === "ARG") { + str = "arg"; + this.exp = this.exp.replace(consumee, ""); let i_ = this.exp.indexOf(')') + 1; - str_ = str_ + this.exp.slice(0, i_); + str = str + this.exp.slice(0, i_); this.exp = this.exp.slice(i_, this.exp.length); this.updateTree({ - value: str_, - position: [startPosition, startPosition + str_.length - 1], + value: str, + position: [startPosition, startPosition + str.length - 1], }); } - else if (str_ === this.placeholder) { + else if (str === this.placeholder) { this.updateTree({ value: this.placeholder, - position: [startPosition, startPosition + str_.length - 1], + position: [startPosition, startPosition + str.length - 1], }); - this.exp = this.exp.replace(consumee_, ""); + this.exp = this.exp.replace(consumee, ""); } - else if (isBigNumberish(str_)) { + else if (isBigNumberish(str)) { this.updateTree({ - value: str_, - position: [startPosition, startPosition + str_.length - 1], + value: str, + position: [startPosition, startPosition + str.length - 1], }); - this.exp = this.exp.replace(consumee_, ""); + this.exp = this.exp.replace(consumee, ""); } - else if (str_ === "MaxUint256" || str_ === "maxUint256") { + else if (str_ === "MAXUINT256" || str_ === "INFINITY") { this.updateTree({ - value: "MaxUint256", - position: [startPosition, startPosition + str_.length - 1], + value: str_ === "MAXUINT256" ? "MaxUint256" : "Infinity", + position: [startPosition, startPosition + str.length - 1], }); - this.exp = this.exp.replace(consumee_, ""); + this.exp = this.exp.replace(consumee, ""); } else { - this.exp = this.exp.replace(consumee_, ""); + this.exp = this.exp.replace(consumee, ""); if (this.exp.startsWith('(')) { this.updateTree({ opcode: { name: 'unknown opcode', - position: [startPosition, startPosition + str_.length], + position: [startPosition, startPosition + str.length], }, operand: NaN, output: NaN, @@ -1463,8 +1657,8 @@ export class Parser { } else { this.updateTree({ - error: `unknown word: ${str_}`, - position: [startPosition, startPosition + str_.length - 1], + error: `unknown word: ${str}`, + position: [startPosition, startPosition + str.length - 1], }); } } @@ -1495,7 +1689,7 @@ export class Parser { */ public static updateArgs(config: StateConfig): StateConfig { for (let i = 0; i < config.sources.length; i++) { - for (let j = 0; j < config.sources[i].length; j++) { + for (let j = 0; j < config.sources[i].length; j += 2) { if (config.sources[i][j] === this.names.length) { (config.sources[i] as Uint8Array)[j] = 0; (config.sources[i] as Uint8Array)[j + 1] += config.constants.length; @@ -1538,3 +1732,4 @@ export class Parser { } } + From e863e42bb162a26bf2f1995f9113a2baad247d8f Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Mon, 17 Oct 2022 23:55:06 +0000 Subject: [PATCH 122/125] added INEQ parser op + opmeta data --- src/vm/OpMeta.ts | 877 ++++++++++++++++++++++++++++++++++++++++++----- src/vm/parser.ts | 297 ++++++++++++---- 2 files changed, 1021 insertions(+), 153 deletions(-) diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index 1170367..b3a3d7d 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -127,7 +127,7 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.CONSTANT, name: 'CONSTANT', - description: '', + description: 'Takes an item from constants array and insert it into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: false, @@ -139,7 +139,19 @@ export const OpMeta: Map = new Map([ ): void { this.constant(operand, data) }, - aliases: ['CONST'] + aliases: ['CONST'], + data: { + description: 'Insert a constant into the expression.', + category: "core", + example: "constant(100)", + parameters: [ + { + spread: false, + name: "index", + description: "The constant value to insert." + } + ] + } } ], [ @@ -147,7 +159,7 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.STACK, name: 'STACK', - description: '', + description: 'Copies an item from a position in the current stack state to the top of the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: false, @@ -158,6 +170,18 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.stack(operand, data) + }, + data: { + description: 'Insert a value from elsewhere in the stack.', + category: "core", + example: "stack(1)", + parameters: [ + { + spread: false, + name: "index", + description: "The stack position of the value to insert." + } + ] } } ], @@ -166,7 +190,7 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.CONTEXT, name: 'CONTEXT', - description: '', + description: 'Inserts an argument passed to a contracts function into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: false, @@ -177,6 +201,18 @@ export const OpMeta: Map = new Map([ data?: any ): void { this.context(operand, data) + }, + data: { + description: "Insert a value from the calling function's context", + category: "core", + example: "context(0)", + parameters: [ + { + spread: false, + name: "index", + description: "The index of the context value to insert." + } + ] } } ], @@ -185,7 +221,7 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.STORAGE, name: 'STORAGE', - description: '', + description: 'Insert a value from contract storage into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: false, @@ -197,7 +233,19 @@ export const OpMeta: Map = new Map([ ): Promise { await this.storage(operand, data) }, - aliases: ['MEMORY'] + aliases: ['MEMORY'], + data: { + description: 'Insert a value from contract storage.', + category: "core", + example: "storage(0)", + parameters: [ + { + spread: false, + name: "index", + description: "The index of the storage value to insert." + } + ] + } } ], [ @@ -205,7 +253,7 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.ZIPMAP, name: 'ZIPMAP', - description: '', + description: 'Takes some items from the stack and splits them into loopSize sub-values and loops over them by executing script in another sources item', pushes: pnp.zpush, pops: pnp.derived, isZeroOperand: false, @@ -216,6 +264,28 @@ export const OpMeta: Map = new Map([ data?: any ): Promise { await this.zipmap(operand, data) + }, + data: { + description: "Takes N values off the stack, interprets them as an array then zips and maps a source from `sources` over them. The source has access to the original constants using `1 0` and to zipped arguments as `1 1`.", + category: "core", + example: "zipmap(0, 0)", + parameters: [ + { + spread: false, + name: "index", + description: "The index of the sources array to zip values with." + }, + { + spread: false, + name: "loopSize", + description: "Defines the number of times the values are split into half, 256bit(0)-> 128bit(1) -> 64bit(2) -> 32bit(3)" + }, + { + spread: true, + name: "values", + description: "The values to zipmap and loop over." + }, + ] } } ], @@ -224,7 +294,7 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.DEBUG, name: 'DEBUG', - description: '', + description: 'ABI encodes the entire stack and logs it to the hardhat console.', pushes: pnp.zero, pops: pnp.zero, isZeroOperand: false, @@ -236,7 +306,13 @@ export const OpMeta: Map = new Map([ ): void { this.debug(operand, data) }, - aliases: ['LOG', 'CONSOLE', 'CONSOLE_LOG'] + aliases: ['LOG', 'CONSOLE', 'CONSOLE_LOG'], + data: { + description: 'ABI encodes the entire stack and logs it to the hardhat console.', + category: "core", + example: "debug()", + parameters: [] + } } ], [ @@ -244,12 +320,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC20_BALANCE_OF, name: 'IERC20_BALANCE_OF', - description: '', + description: 'Get the balance of an ERC20 token for an account by taking the contract and account address from stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC20BalanceOf, - aliases: ['ERC20_BALANCE_OF', 'ERC20BALANCEOF', 'IERC20BALANCEOF'] + aliases: ['ERC20_BALANCE_OF', 'ERC20BALANCEOF', 'IERC20BALANCEOF'], + data: { + description: 'Get the balance of an ERC20 token for an account.', + category: "ERC20", + example: "ierc20_balance_of(0x..., 0x...)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC20 address." + }, + { + spread: false, + name: "account", + description: "The account to get the balance of." + } + ] + } } ], [ @@ -257,12 +350,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC20_TOTAL_SUPPLY, name: 'IERC20_TOTAL_SUPPLY', - description: '', + description: 'Get the supply of an ERC20 token by taking the contract address from stack', pushes: pnp.one, pops: pnp.one, isZeroOperand: true, jsvmfn: OpERC20TotalSupply, - aliases: ['ERC20_TOTAL_SUPPLY', 'ERC20TOTALSUPPLY', 'IERC20TOTALSUPPLY'] + aliases: ['ERC20_TOTAL_SUPPLY', 'ERC20TOTALSUPPLY', 'IERC20TOTALSUPPLY'], + data: { + description: 'Get the totalSupply of an ERC20 token.', + category: "ERC20", + example: "ierc20_total_supply(0x...)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC20 address." + } + ] + } } ], [ @@ -270,12 +375,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC20_SNAPSHOT_BALANCE_OF_AT, name: 'IERC20_SNAPSHOT_BALANCE_OF_AT', - description: '', + description: 'Get the snapshot balance of an ERC20 token for an account by taking the contract and account address and snapshot id from stack', pushes: pnp.one, pops: pnp.three, isZeroOperand: true, jsvmfn: OpERC20SnapshotBalanceOfAt, - aliases: ['ERC20_SNAPSHOT_BALANCE_OF_AT', 'ERC20SNAPSHOTBALANCEOFAT', 'IERC20SNAPSHOTBALANCEOFAT'] + aliases: ['ERC20_SNAPSHOT_BALANCE_OF_AT', 'ERC20SNAPSHOTBALANCEOFAT', 'IERC20SNAPSHOTBALANCEOFAT'], + data: { + description: 'Retrieves the balance of an account at the time a snapshotId was created.', + category: "ERC20", + example: "ierc20_snapshot_balance_of_at(0x..., 0x..., 1)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC20 address." + }, + { + spread: false, + name: "account", + description: "The account to get the balance of." + }, + { + spread: false, + name: "snapshotId", + description: "The id of the snapshot." + } + ] + } } ], [ @@ -283,12 +410,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC20_SNAPSHOT_TOTAL_SUPPLY_AT, name: 'IERC20_SNAPSHOT_TOTAL_SUPPLY_AT', - description: '', + description: 'Get the snapshot supply of an ERC20 token by taking the contract address and snapshot id from stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC20SnapshotTotalSupplyAt, - aliases: ['ERC20_SNAPSHOT_TOTAL_SUPPLY_AT', 'ERC20SNAPSHOTTOTALSUPPLYAT', 'IERC20SNAPSHOTTOTALSUPPLYAT'] + aliases: ['ERC20_SNAPSHOT_TOTAL_SUPPLY_AT', 'ERC20SNAPSHOTTOTALSUPPLYAT', 'IERC20SNAPSHOTTOTALSUPPLYAT'], + data: { + description: 'Retrieves the total supply of a token at the time a snapshotId was created.', + category: "ERC20", + example: "ierc20_snapshot_total_supply_at(0x..., 1)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC20 address." + }, + { + spread: false, + name: "snapshotId", + description: "The id of the snapshot." + } + ] + } } ], [ @@ -296,12 +440,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC721_BALANCE_OF, name: 'IERC721_BALANCE_OF', - description: '', + description: 'Get the balance of an ERC721 token for an account by taking the contract and account address from stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC721BalanceOf, - aliases: ['ERC721_BALANCE_OF', 'ERC721BALANCEOF', 'IERC721BALANCEOF'] + aliases: ['ERC721_BALANCE_OF', 'ERC721BALANCEOF', 'IERC721BALANCEOF'], + data: { + description: 'Get the balance of an ERC721 token for an account.', + category: "ERC721", + example: "ierc721_balance_of(0x..., 0x...)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC721 address." + }, + { + spread: false, + name: "account", + description: "The account to get the balance of." + } + ] + } } ], [ @@ -309,12 +470,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC721_OWNER_OF, name: 'IERC721_OWNER_OF', - description: '', + description: 'Get the owner of an ERC20 token for an account by taking the contract address and token id from stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpERC721OwnerOf, - aliases: ['ERC721_OWNER_OF', 'ERC721OWNEROF', 'IERC721OWNEROF'] + aliases: ['ERC721_OWNER_OF', 'ERC721OWNEROF', 'IERC721OWNEROF'], + data: { + description: 'Returns the owner of the tokenId token.', + category: "ERC721", + example: "ierc721_owner_of(0x..., 1)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC721 address." + }, + { + spread: false, + name: "id", + description: "The id to get the owner of." + } + ] + } } ], [ @@ -322,12 +500,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC1155_BALANCE_OF, name: 'IERC1155_BALANCE_OF', - description: '', + description: 'Get the balance of an ERC1155 token for an account by taking the contract and account address and token id from stack', pushes: pnp.one, pops: pnp.three, isZeroOperand: true, jsvmfn: OpERC1155BalanceOf, - aliases: ['ERC1155_BALANCE_OF', 'ERC1155BALANCEOF', 'IERC1155BALANCEOF'] + aliases: ['ERC1155_BALANCE_OF', 'ERC1155BALANCEOF', 'IERC1155BALANCEOF'], + data: { + description: 'Batched version of balanceOf.', + category: "ERC1155", + example: "ierc1155_balance_of(0x..., 0x..., 1)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC1155 address." + }, + { + spread: false, + name: "account", + description: "The account to get the balance of." + }, + { + spread: false, + name: "id", + description: "The id to get the balance of." + } + ] + } } ], [ @@ -335,12 +535,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.IERC1155_BALANCE_OF_BATCH, name: 'IERC1155_BALANCE_OF_BATCH', - description: '', + description: 'Get the batch balances of an ERC1155 token for an account by taking the contract address and array of account addresses and token ids from stack', pushes: pnp.oprnd, pops: pnp.derived, isZeroOperand: false, jsvmfn: OpERC1155BalanceOfBatch, - aliases: ['ERC1155_BALANCE_OF_BATCH', 'ERC1155BALANCEOFBATCH', 'IERC1155BALANCEOFBATCH'] + aliases: ['ERC1155_BALANCE_OF_BATCH', 'ERC1155BALANCEOFBATCH', 'IERC1155BALANCEOFBATCH'], + data: { + description: 'Inserts the current block number.', + category: "ERC1155", + example: "ierc1155_balance_of_batch(2, 0x..., 0x..., 0x..., 1, 2)", + parameters: [ + { + spread: false, + name: "token", + description: "The ERC1155 address." + }, + { + spread: true, + name: "accounts", + description: "The accounts to get the balance of." + }, + { + spread: true, + name: "ids", + description: "The corresponding ids to get the balance of." + } + ] + } } ], [ @@ -348,12 +570,18 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.BLOCK_NUMBER, name: 'BLOCK_NUMBER', - description: '', + description: 'Inserts the current block number into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: true, jsvmfn: OpBlockNumber, aliases: ['CURRENT_BLOCK', 'CURRENTBLOCK', 'BLOCKNUMBER'], + data: { + description: 'Inserts the current block number.', + category: "EVM", + example: "block_number()", + parameters: [] + } } ], [ @@ -361,12 +589,18 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SENDER, name: 'SENDER', - description: '', + description: 'Inserts the msg.sender address into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: true, jsvmfn: OpCaller, - aliases: ['MSG_SENDER', 'MSGSENDER', 'SIGNER'] + aliases: ['MSG_SENDER', 'MSGSENDER', 'SIGNER'], + data: { + description: 'The sender of the current transaction.', + category: "EVM", + example: "sender()", + parameters: [] + } } ], [ @@ -374,12 +608,18 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.THIS_ADDRESS, name: 'THIS_ADDRESS', - description: '', + description: 'Inserts this contract address into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: true, jsvmfn: OpThisAddress, - aliases: ['THISADDRESS'] + aliases: ['THISADDRESS'], + data: { + description: 'The address of the contract this expression is being evaluated in.', + category: "EVM", + example: "this_address()", + parameters: [] + } } ], [ @@ -387,12 +627,18 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.BLOCK_TIMESTAMP, name: 'BLOCK_TIMESTAMP', - description: '', + description: 'Insert the current block timestamp into the stack', pushes: pnp.one, pops: pnp.zero, isZeroOperand: true, jsvmfn: OpTimestamp, - aliases: ['CURRENT_TIMESTAMP', 'CURRENTTIMESTAMP', 'BLOCKTIMESTAMP', 'CURRENTTIME', 'CURRENT_TIME'] + aliases: ['CURRENT_TIMESTAMP', 'CURRENTTIMESTAMP', 'BLOCKTIMESTAMP', 'CURRENTTIME', 'CURRENT_TIME'], + data: { + description: 'The timestamp of the current block (in seconds).', + category: "EVM", + example: "block_timestamp()", + parameters: [] + } } ], [ @@ -400,12 +646,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SCALE18, name: 'SCALE18', - description: '', + description: 'Rescale some fixed point number to 18 OOMs in situ.', pushes: pnp.one, pops: pnp.one, isZeroOperand: false, jsvmfn: OpScale18, - aliases: ['SCALE_18'] + aliases: ['SCALE_18'], + data: { + description: 'Rescale some fixed point number to 18 OOMs in situ.', + category: "math", + example: "scale18(10 47850000000)", + parameters: [ + { + spread: false, + name: "decimal point", + description: "The decimals of the value to convert into 18 fixed point decimals." + }, + { + spread: false, + name: "value", + description: "The values to convert into 18 fixed point decimals." + } + ] + } } ], [ @@ -413,12 +676,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SCALE18_DIV, name: 'SCALE18_DIV', - description: '', + description: 'Inserts the result of dividing the 2 items of the stack by keeping the 18 fixed point decimals into the stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: false, jsvmfn: OpScale18Div, - aliases: ['SCALE18DIV', 'SCALE_18_DIV'] + aliases: ['SCALE18DIV', 'SCALE_18_DIV'], + data: { + description: "Inserts the result of dividing the 2 items of the stack by keeping the 18 fixed point decimals into the stack", + category: "math", + example: "scale_div(6 0x123450000 4)", + parameters: [ + { + spread: false, + name: "first value decimal point", + description: "The decimals of the first value to keep the 18 fixed point decimals." + }, + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } } ], [ @@ -426,12 +711,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SCALE18_MUL, name: 'SCALE18_MUL', - description: '', + description: 'Inserts the result of multiplying the 2 items of the stack by keeping the 18 fixed point decimals into the stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: false, jsvmfn: OpScale18Mul, - aliases: ['SCALE18MUL', 'SCALE_18_MUL'] + aliases: ['SCALE18MUL', 'SCALE_18_MUL'], + data: { + description: "Inserts the result of dividing the 2 items of the stack by keeping the 18 fixed point decimals into the stack", + category: "math", + example: "scale_mul(6 0x123450000 4)", + parameters: [ + { + spread: false, + name: "first value decimal point", + description: "The decimals of the first value to keep the 18 fixed point decimals." + }, + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } } ], [ @@ -439,12 +746,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SCALE_BY, name: 'SCALE_BY', - description: '', + description: 'Scale a fixed point up or down by opernad.', pushes: pnp.one, pops: pnp.one, isZeroOperand: false, jsvmfn: OpScaleBy, - aliases: ['SCALEBY'] + aliases: ['SCALEBY'], + data: { + escription: 'Rescale an arbitrary fixed point number by some OOMs.', + category: "math", + example: "scale_by(2 10000000)", + parameters: [ + { + spread: false, + name: "decimal point to scale up/down with", + description: "The decimal point to up or down by, this value is complement 2's." + }, + { + spread: false, + name: "value", + description: "The value to scale by." + }, + ] + } } ], [ @@ -452,12 +776,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SCALEN, name: 'SCALEN', - description: '', + description: 'Rescale an 18 OOMs fixed point number to scale N.', pushes: pnp.one, pops: pnp.one, isZeroOperand: false, jsvmfn: OpScaleN, - aliases: ['SCALE_N'] + aliases: ['SCALE_N'], + data: { + description: 'Rescale an 18 OOMs fixed point number to scale N.', + category: "math", + example: "scalen(4 1000000000)", + parameters: [ + { + spread: false, + name: "target fixed decimals point", + description: "The targeted fixed decimals point to convert the value to." + }, + { + spread: false, + name: "value", + description: "The value to scale to N." + }, + ] + } } ], [ @@ -465,12 +806,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.ANY, name: 'ANY', - description: '', + description: 'Inserts the first non-zero value of all the values it checks if there exists one, else inserts zero into the stack.', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpAny, - aliases: ['OR', 'ANY_OF', 'ANYOF'] + aliases: ['OR', 'ANY_OF', 'ANYOF'], + data: { + description: 'Returns the first non-zero value if any of N number of sub-expressions are non-zero', + category: "logic", + example: "any(2, {expression}, {expression})", + parameters: [ + { + spread: true, + name: "values", + description: "The values to check." + } + ] + } } ], [ @@ -478,12 +831,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.EAGER_IF, name: 'EAGER_IF', - description: '', + description: 'Takes 3 items from the stack and check if the first item is non-zero the inserts the second item into the stack, else inserts the 3rd item', pushes: pnp.one, pops: pnp.three, isZeroOperand: true, jsvmfn: OpEagerIf, - aliases: ['EAGERIF', 'IF'] + aliases: ['EAGERIF', 'IF'], + data: { + description: 'If statement', + category: "logic", + example: "eager_if(1, 100, 200)", + parameters: [ + { + spread: false, + name: "condition", + description: "The condition to evaluate." + }, + { + spread: false, + name: "then", + description: "The value if the condition is non-zero/true." + }, + { + spread: false, + name: "else", + description: "The value if the condition is zero/false." + } + ] + } } ], [ @@ -491,12 +866,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.EQUAL_TO, name: 'EQUAL_TO', - description: '', + description: 'Comapres the last 2 items of the stack together and inserts true/1 into stack if they are euqal, else inserts false/0', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpEqualTo, - aliases: ['EQ', 'EQUALTO', '=', '==', '==='] + aliases: ['EQ', 'EQUALTO', '=', '==', '==='], + data: { + description: 'Returns true if two values are equal.', + category: "logic", + example: "equal_to(100, 200)", + parameters: [ + { + spread: false, + name: "value1", + description: "The first value." + }, + { + spread: false, + name: "value2", + description: "The second value." + } + ] + } } ], [ @@ -504,12 +896,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.EVERY, name: 'EVERY', - description: '', + description: 'Inserts the first value of all the values it checks if all of them are non-zero, else inserts zero into the stack.', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpEvery, - aliases: ['AND', 'ALL_OF', 'ALLOF'] + aliases: ['AND', 'ALL_OF', 'ALLOF'], + data: { + description: 'Returns the first value if all of N number of sub-expressions are non-zero', + category: "logic", + example: "every(2, {expression}, {expression})", + parameters: [ + { + spread: true, + name: "values", + description: "The values to check." + } + ] + } } ], [ @@ -517,12 +921,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.GREATER_THAN, name: 'GREATER_THAN', - description: '', + description: 'Takes last 2 values from stack and puts true/1 into the stack if the first value is greater than the second value and false/0 if not.', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpGreaterThan, - aliases: ['GT', 'GREATERTHAN', 'BIGGERTHAN', 'BIGGER_THAN'] + aliases: ['GT', 'GREATERTHAN', 'BIGGERTHAN', 'BIGGER_THAN', ">"], + data: { + description: 'Returns true if value X is greater than value Y.', + category: "logic", + example: "greater_than(X, Y)", + parameters: [ + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } } ], [ @@ -530,12 +951,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.ISZERO, name: 'ISZERO', - description: '', + description: 'Checks if the value is zero and inserts true/1 into the stack if it is, else inserts false/0', pushes: pnp.one, pops: pnp.one, isZeroOperand: true, jsvmfn: OpIsZero, - aliases: ['IS_ZERO', 'FALSE', 'IS_FALSE', 'ISFALSE'] + aliases: ['IS_ZERO', 'FALSE', 'IS_FALSE', 'ISFALSE'], + data: { + description: 'Returns true if a value is zero.', + category: "logic", + example: "iszero(1)", + parameters: [ + { + spread: false, + name: "value", + description: "The value to check." + } + ] + } } ], [ @@ -543,12 +976,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.LESS_THAN, name: 'LESS_THAN', - description: '', + description: 'Takes last 2 values from stack and puts true/1 into the stack if the first value is less than the second value and false/0 if not.', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpLessThan, - aliases: ['LT', 'LESSTHAN', 'LITTLETHAN', 'LITTLE_THAN'] + aliases: ['LT', 'LESSTHAN', 'LITTLETHAN', 'LITTLE_THAN', "<"], + data: { + description: 'Returns true if value X is less than value Y.', + category: "logic", + example: "less_than(X, Y)", + parameters: [ + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } } ], [ @@ -556,12 +1006,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SATURATING_ADD, name: 'SATURATING_ADD', - description: '', + description: 'Inserts sum of the specified items from the stack and if prevernts reverts if the result goes above max 256 bit size', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSaturatingAdd, - aliases: ['SATURATINGADD', 'SAT_ADD', 'SATADD', 'SATURATING_SUM', 'SATURATINGSUM', 'SATSUM', 'SAT_SUM'] + aliases: ['SATURATINGADD', 'SAT_ADD', 'SATADD', 'SATURATING_SUM', 'SATURATINGSUM', 'SATSUM', 'SAT_SUM'], + data: { + description: "Sum of N values and prevernts from the result going above max uint 256", + category: "math", + example: "saturating_add(1 2 3)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to sum." + } + ] + } } ], [ @@ -569,12 +1031,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SATURATING_MUL, name: 'SATURATING_MUL', - description: '', + description: 'Inserts multiplied result of the specified items from the stack and if prevernts reverts if the result goes above max 256 bit size', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSaturatingMul, - aliases: ['SATURATINGMUL', 'SAT_MUL', 'SATMUL'] + aliases: ['SATURATINGMUL', 'SAT_MUL', 'SATMUL'], + data: { + description: "Multiplication of N values and prevernts from the result going above max uint 256", + category: "math", + example: "saturating_mul(1 2 3)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to sum." + } + ] + } } ], [ @@ -582,12 +1056,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SATURATING_SUB, name: 'SATURATING_SUB', - description: '', + description: 'Inserts subtraction of the specified items from the stack and if prevernts reverts if the result goes blow zero', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSaturatingSub, - aliases: ['SATURATINGSUB', 'SAT_SUB', 'SATSUB', 'SATURATING_MINUS', 'SATURATINGMINUS', 'SATMINUS', 'SAT_MINUS'] + aliases: ['SATURATINGSUB', 'SAT_SUB', 'SATSUB', 'SATURATING_MINUS', 'SATURATINGMINUS', 'SATMINUS', 'SAT_MINUS'], + data: { + description: "Subtraction of N values and prevernts from the result going below zero", + category: "math", + example: "", + parameters: [ + { + spread: true, + name: "values", + description: "The values to sum." + } + ] + } } ], [ @@ -595,12 +1081,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.ADD, name: 'ADD', - description: '', + description: 'Inserts the result of sum of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpAdd, - aliases: ['+', 'SUM'] + aliases: ['+', 'SUM'], + data: { + description: 'Sums N number of values.', + category: "math", + example: "add(3, 1, 3, 2)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to sum." + } + ] + } } ], [ @@ -608,12 +1106,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.DIV, name: 'DIV', - description: '', + description: 'Inserts the result of divide of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpDiv, - aliases: ['/', '÷', 'DIVIDE'] + aliases: ['/', '÷', 'DIVIDE'], + data: { + description: 'Divides N number of values.', + category: "math", + example: "div(3 1 3 1)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to divide." + } + ] + } } ], [ @@ -621,12 +1131,23 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.EXP, name: 'EXP', - description: '', + description: 'Inserts the result of exponention of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpExp, - aliases: ['^', '**', 'POW', 'POWER', 'POWER_OF', 'POWEROF', 'EXPONENTION'] + aliases: ['^', '**', 'POW', 'POWER', 'POWER_OF', 'POWEROF', 'EXPONENTION'], + data: { + category: "math", + example: "Powers N number of values sequentialy", + parameters: [ + { + spread: true, + name: "values", + description: "The values to power." + } + ] + } } ], [ @@ -634,12 +1155,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.MAX, name: 'MAX', - description: '', + description: 'Inserts the maximum of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMax, - aliases: ['MAXIMUM', 'MAXIMUM_OF', 'MAXIMUMOF', 'MAX_OF', 'MAXOF'] + aliases: ['MAXIMUM', 'MAXIMUM_OF', 'MAXIMUMOF', 'MAX_OF', 'MAXOF'], + data: { + description: 'Returns the maximum of N number of values', + category: "math", + example: "max(1 2 3)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to get the max of." + } + ] + } } ], [ @@ -647,12 +1180,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.MIN, name: 'MIN', - description: '', + description: 'Inserts the minimum of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMin, - aliases: ['MINIMUM', 'MINIMUM_OF', 'MINIMUMOF', 'MIN_OF', 'MINOF'] + aliases: ['MINIMUM', 'MINIMUM_OF', 'MINIMUMOF', 'MIN_OF', 'MINOF'], + data: { + description: 'Returns the minimum of N number of values', + category: "math", + example: "min(1 2 3)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to get the min of." + } + ] + } } ], [ @@ -660,12 +1205,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.MOD, name: 'MOD', - description: '', + description: 'Inserts the mod of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMod, - aliases: ['%'] + aliases: ['%'], + data: { + description: "Mod of N number of values.", + category: "math", + example: "mod(8 3 2)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to mod." + } + ] + } } ], [ @@ -673,12 +1230,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.MUL, name: 'MUL', - description: '', + description: 'Inserts the multiplication of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpMul, - aliases: ['*', 'X'] + aliases: ['*', 'X'], + data: { + description: 'Multiplies N number of values', + category: "math", + example: "mul(3 1 2 3)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to multiply." + } + ] + } } ], [ @@ -686,12 +1255,24 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SUB, name: 'SUB', - description: '', + description: 'Inserts the subtraction of N values taken from the stack into the stack', pushes: pnp.one, pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpSub, - aliases: ['-', 'MINUS'] + aliases: ['-', 'MINUS'], + data: { + description: 'Subtracts N number of values', + category: "math", + example: "sub(3 1 2 3)", + parameters: [ + { + spread: true, + name: "values", + description: "The values to subtract." + } + ] + } } ], [ @@ -699,12 +1280,34 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.ITIERV2_REPORT, name: 'ITIERV2_REPORT', - description: '', + description: 'Inserts the report of an account of a tier contract and optionally contexts which are taken from the stack into the stack', pushes: pnp.one, pops: pnp.derived, isZeroOperand: false, jsvmfn: OpITierV2Report, - aliases: ['REPORT', 'ITIERV2REPORT', 'TIERREPORT', 'TIER_REPORT', 'ITIERREPORT', 'ITIER_REPORT'] + aliases: ['REPORT', 'ITIERV2REPORT', 'TIERREPORT', 'TIER_REPORT', 'ITIERREPORT', 'ITIER_REPORT'], + data: { + description: "Return the report of a tier contract for an account", + category: "tier", + example: "itierv2_report(tierContractAddress account)", + parameters: [ + { + spread: false, + name: "tier contract", + description: "The tier contract address." + }, + { + spread: false, + name: "account", + description: "The account address." + }, + { + spread: true, + name: "context", + description: "The contextual values." + } + ] + } } ], [ @@ -712,12 +1315,39 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.ITIERV2_REPORT_TIME_FOR_TIER, name: 'ITIERV2_REPORT_TIME_FOR_TIER', - description: '', + description: 'Inserts the specified tier level report of an account of a tier contract and optionally contexts which are taken from the stack into the stack', pushes: pnp.one, pops: pnp.derived, isZeroOperand: false, jsvmfn: OpITierV2ReportTimesForTier, - aliases: ['ITIERV2REPORTTIMEFORTIER', 'SINGLE_REPORT', 'SINGLEREPORT', 'SINGLE_TIER_REPORT', 'SINGLETIERREPORT'] + aliases: ['ITIERV2REPORTTIMEFORTIER', 'SINGLE_REPORT', 'SINGLEREPORT', 'SINGLE_TIER_REPORT', 'SINGLETIERREPORT'], + data: { + description: "Return the specified tier level report of a tier contract for an account", + category: "tier", + example: "itierv2_report_time_for_tier(tierAddress account tierLevel)", + parameters: [ + { + spread: false, + name: "tier contract", + description: "The tier contract address." + }, + { + spread: false, + name: "account", + description: "The account address." + }, + { + spread: false, + name: "tier", + description: "The tier level." + }, + { + spread: true, + name: "context", + description: "The contextual values." + } + ] + } } ], [ @@ -725,12 +1355,29 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SATURATING_DIFF, name: 'SATURATING_DIFF', - description: '', + description: 'Inserts the saturating difference of 2 reports taken from the stack into the stack and prevents reverts if the result below zero', pushes: pnp.one, pops: pnp.two, isZeroOperand: true, jsvmfn: OpSaturatingDiff, - aliases: ['SAT_DIFF', 'SATDIFF', 'SATURATINGDIFF'] + aliases: ['SAT_DIFF', 'SATDIFF', 'SATURATINGDIFF'], + data: { + description: "Returns the saturating difference of reports, prevernt the result to go below zero", + category: "tier", + example: "saturating_diff(report1 report2)", + parameters: [ + { + spread: false, + name: "report1", + description: "The firts report." + }, + { + spread: false, + name: "report2", + description: "The second report." + } + ] + } } ], [ @@ -738,12 +1385,39 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.SELECT_LTE, name: 'SELECT_LTE', - description: '', + description: 'Inserts the result of selecting the less than equal to specified value taken from stack among number of reports by a logic and mode into the stack', pushes: pnp.one, pops: pnp.derived, isZeroOperand: false, jsvmfn: OpSelectLte, - aliases: ['SELECTLTE', 'SELECT'] + aliases: ['SELECTLTE', 'SELECT'], + data: { + description: "Returns the result of selecting the less than equal to a value among number of reports defnied by the mode and logic", + category: "tier", + example: "select_lte(0 1 block_timestamp() itierv2_report(tierAddress account) itierv2_report(tierAddress account))", + parameters: [ + { + spread: false, + name: "logic", + description: "The logic of selectLte (every, any)." + }, + { + spread: false, + name: "mode", + description: "The mode of selectLte (min, max, first)." + }, + { + spread: false, + name: "referrence value", + description: "The value to check the tier reports against." + }, + { + spread: true, + name: "reports", + description: "The reports to selectLte from." + } + ] + } } ], [ @@ -751,12 +1425,39 @@ export const OpMeta: Map = new Map([ { enum: AllStandardOps.UPDATE_TIMES_FOR_TIER_RANGE, name: 'UPDATE_TIMES_FOR_TIER_RANGE', - description: '', + description: 'Inserts the result of updating the range of tiers of a report taken from stack by a value taken from the stack into the stack', pushes: pnp.one, pops: pnp.two, isZeroOperand: false, jsvmfn: OpUpdateTimesForTierRange, - aliases: ['UPDATETIMESFORTIERRANGE', 'UPDATE_TIER_RANGE', 'UPDATETIERRANGE', 'UPDATE_TIERS', 'UPDATETIERS', 'UPDATE_REPORT', 'UPDATEREPORT'] + aliases: ['UPDATETIMESFORTIERRANGE', 'UPDATE_TIER_RANGE', 'UPDATETIERRANGE', 'UPDATE_TIERS', 'UPDATETIERS', 'UPDATE_REPORT', 'UPDATEREPORT'], + data: { + description: "Returns the updated report with a value applied to range of tier levels", + category: "tier", + example: "update_times_for_tier_range(0 8 block_timestamp() itierv2_report(0x....1 0x....2))", + parameters: [ + { + spread: false, + name: "start tier", + description: "The start tier range" + }, + { + spread: false, + name: "end tier", + description: "The end tier range" + }, + { + spread: false, + name: "updateValue", + description: "The value to update tier range to" + }, + { + spread: false, + name: "report", + description: "The report to update its tier range" + }, + ] + } } ] ]); diff --git a/src/vm/parser.ts b/src/vm/parser.ts index ada47b2..880d6e6 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -106,24 +106,87 @@ export type iOpMetaLike = { * @public * Special OpMeta-like object for providing GTE in parser */ -export const gteOpcode: iOpMetaLike = { +export const gteParserOpcode: iOpMetaLike = { name: 'GREATER_THAN_EQUAL', - description: '', + description: 'Takes last 2 values from stack and puts true/1 into the stack if the first value is greater than equal the second value and false/0 if not.', pushes: pnp.one, - pops: pnp.oprnd, - aliases: ['GTE', 'GREATERTHANEQUAL', 'BIGGERTHANEQUAL', 'BIGGER_THAN_EQUAL'], + pops: pnp.two, + aliases: ['GTE', 'GREATERTHANEQUAL', 'BIGGERTHANEQUAL', 'BIGGER_THAN_EQUAL', ">=", "≥"], + data: { + description: "Returns true if value X is greater than value Y.", + category: "logic", + example: "greater_than_equal(X, Y)", + parameters: [ + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } } /** * @public * Special OpMeta-like object for providing GTE in parser */ -export const lteOpcode: iOpMetaLike = { +export const lteParserOpcode: iOpMetaLike = { name: 'LESS_THAN_EQUAL', - description: '', + description: 'Takes last 2 values from stack and puts true/1 into the stack if the first value is less than equal the second value and false/0 if not.', + pushes: pnp.one, + pops: pnp.two, + aliases: ["LTE", "LESSTHANEQUAL", "LITTLE_THAN_EQUAL", "LITTLETHANEQUAL", "<=", "≤"], + data: { + description: "Returns true if value X is less than value Y.", + category: "logic", + example: "less_than_equal(X, Y)", + parameters: [ + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } +} + +/** + * @public + * Special OpMeta-like object for providing inequality check in parser + */ + export const ineqParserOpcode: iOpMetaLike = { + name: 'INEQUAL_TO', + description: 'Takes last 2 values from stack and puts true/1 into the stack if the first value is not equal to the second value and false/0 if not.', pushes: pnp.one, - pops: pnp.oprnd, - aliases: ["LTE", "LESSTHANEQUAL", "LITTLE_THAN_EQUAL", "LITTLETHANEQUAL"] + pops: pnp.two, + aliases: ['INEQ', 'INEQUALTO', 'NOTEQUAL', 'NOT_EQUAL', "NOTEQ", "NOT_EQUAL_TO", "NOTEQUALTO","!=", "!=="], + data: { + description: "Returns true if value X is not equal to value Y.", + category: "logic", + example: "inequal_to(X, Y)", + parameters: [ + { + spread: false, + name: "value", + description: "The first value." + }, + { + spread: false, + name: "value", + description: "The second value." + } + ] + } } /** @@ -139,8 +202,8 @@ export const lteOpcode: iOpMetaLike = { * Parser.set(OpMeta) * * // to set the custom details of GTE and LTE opcodes - * Parser.setGteMeta(description?, data?, description?) - * Parser.setLteMeta(description?, data?, description?) + * Parser.setGteMeta(name?, description?, data?, description?) + * Parser.setLteMeta(name?, description?, data?, description?) * * // to execute the parsing and get parse tree object and StateConfig * let parseTree; @@ -169,7 +232,8 @@ export class Parser { private static treeArray: Record = {}; private static data: any[] = Object.values(mapToRecord(OpMeta, ['data'])); private static names: string[] = Object.values(mapToRecord(OpMeta, ['name'])); - private static aliases: string[] = Object.values(mapToRecord(OpMeta, ['aliases'])); + private static aliases: (string[] | undefined)[] = + Object.values(mapToRecord(OpMeta, ['aliases'])); private static zeroOperandOps: boolean[] = Object.values(mapToRecord(OpMeta, ['isZeroOperand'])); private static pops: ((opcode: number, operand: number) => number)[] = @@ -193,35 +257,71 @@ export class Parser { }; // special literals for gte and lte - private static gte = gteOpcode; - private static lte = lteOpcode; + private static gte = gteParserOpcode; + private static lte = lteParserOpcode; + private static ineq = ineqParserOpcode; /** * @public * Method to set the details of the GTE opcode * - * @param aliases - The aliases of GTE opcode - * @param description - The description - * @param data - Optional data + * @param name - (optional) name of the GTE opcode + * @param aliases - (optional) The aliases of GTE opcode + * @param description - (optional) The description + * @param data - (optional) data */ - public static setGteMeta(description?: string, data?: any, aliases?: string[]) { + public static setGteMeta(name?: string, description?: string, data?: any, aliases?: string[]) { + if (name) this.gte.name = name; this.gte.data = data; this.gte.aliases = aliases; this.gte.description = description; + if (this.gte.aliases) { + this.gte.aliases.forEach( + (v, i, array) => array[i] = this.handleLetterCase(v) + ); + } } /** * @public * Method to set the details of the LTE opcode * - * @param aliases - The aliases of LTE opcode - * @param description - The description - * @param data - Optional data + * @param name - (optional) name of the LTE opcode + * @param aliases - (optional) The aliases of LTE opcode + * @param description - (optional) The description + * @param data - (optional) data */ - public static setLteMeta(description?: string, data?: any, aliases?: string[]) { + public static setLteMeta(name?: string, description?: string, data?: any, aliases?: string[]) { + if (name) this.lte.name = name; this.lte.data = data; this.lte.aliases = aliases; this.lte.description = description; + if (this.lte.aliases) { + this.lte.aliases.forEach( + (v, i, array) => array[i] = this.handleLetterCase(v) + ); + } + } + + /** + * @public + * Method to set the details of the INEQ opcode + * + * @param name - (optional) name of the INEQ opcode + * @param aliases - (optional) The aliases of INEQ opcode + * @param description - (optional) The description + * @param data - (optional) data + */ + public static setIneqMeta(name?: string, description?: string, data?: any, aliases?: string[]) { + if (name) this.ineq.name = name; + this.ineq.data = data; + this.ineq.aliases = aliases; + this.ineq.description = description; + if (this.ineq.aliases) { + this.ineq.aliases.forEach( + (v, i, array) => array[i] = this.handleLetterCase(v) + ); + } } /** @@ -395,14 +495,16 @@ export class Parser { } if ( (node as Op).opcode.name === this.gte.name || - (node as Op).opcode.name === this.lte.name + (node as Op).opcode.name === this.lte.name || + (node as Op).opcode.name === this.ineq.name ) { sourcesCache.push( op( (node as Op).opcode.name === this.gte.name ? AllStandardOps.LESS_THAN - : AllStandardOps.GREATER_THAN, - (node as Op).operand + : (node as Op).opcode.name === this.lte.name + ? AllStandardOps.GREATER_THAN + : AllStandardOps.EQUAL_TO ), op(AllStandardOps.ISZERO) ) @@ -437,6 +539,13 @@ export class Parser { this.zeroOperandOps = Object.values( mapToRecord(opmeta_, ['isZeroOperand']) ); + for (let i = 0; i < this.aliases.length; i++) { + if (this.aliases[i]) { + this.aliases[i]!.forEach( + (v, i, array) => array[i] = this.handleLetterCase(v) + ); + } + } } /** @@ -704,13 +813,13 @@ export class Parser { } if (str[0] === ' ' || str[0] === '(' || str[0] === ')') return undefined; let str_ = this.handleLetterCase(str); - if (str_.startsWith(this.gte.name)) { + if (str_.startsWith(this.handleLetterCase(this.gte.name))) { let tmp = [ this.gte.name, offset.toString(), (offset + this.gte.name.length - 1).toString(), ]; - if (str_.replace(this.gte.name, "").startsWith("(")) tmp.push( + if (str_.replace(this.handleLetterCase(this.gte.name), "").startsWith("(")) tmp.push( 'ambiguous expression/opcode' ) else if (offset) tmp.push( @@ -718,13 +827,27 @@ export class Parser { ); return tmp; } - if (str_.startsWith(this.lte.name)) { + if (str_.startsWith(this.handleLetterCase(this.lte.name))) { let tmp = [ this.lte.name, offset.toString(), (offset + this.lte.name.length - 1).toString(), ]; - if (str_.replace(this.lte.name, "").startsWith("(")) tmp.push( + if (str_.replace(this.handleLetterCase(this.lte.name), "").startsWith("(")) tmp.push( + 'ambiguous expression/opcode' + ) + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ); + return tmp; + } + if (str_.startsWith(this.handleLetterCase(this.ineq.name))) { + let tmp = [ + this.ineq.name, + offset.toString(), + (offset + this.ineq.name.length - 1).toString(), + ]; + if (str_.replace(this.handleLetterCase(this.ineq.name), "").startsWith("(")) tmp.push( 'ambiguous expression/opcode' ) else if (offset) tmp.push( @@ -768,14 +891,32 @@ export class Parser { } } } + if (this.ineq.aliases) { + for (let i = 0; i < this.ineq.aliases?.length; i++) { + if (str_.startsWith(this.ineq.aliases[i])) { + let tmp = [ + this.ineq.name, + offset.toString(), + (offset + this.ineq.aliases[i].length - 1).toString(), + ]; + if (str_.replace(this.ineq.aliases[i], "").startsWith("(")) tmp.push( + 'ambiguous expression/opcode' + ) + else if (offset) tmp.push( + 'illigal characters between opcode and parenthesis' + ); + return tmp; + } + } + } for (let i = 0; i < this.names.length; i++) { - if (str_.startsWith(this.names[i])) { + if (str_.startsWith(this.handleLetterCase(this.names[i]))) { let tmp = [ this.names[i], offset.toString(), (offset + this.names[i].length - 1).toString(), ]; - if (str_.replace(this.names[i], "").startsWith('(')) { + if (str_.replace(this.handleLetterCase(this.names[i]), "").startsWith('(')) { this.state.ambiguity = true; tmp.push('ambiguous expression/opcode'); } @@ -787,14 +928,14 @@ export class Parser { } for (let i = 0; i < this.aliases.length; i++) { if (this.aliases[i]) { - for (let j = 0; j < this.aliases[i].length; j++) { - if (str_.startsWith(this.aliases[i][j])) { + for (let j = 0; j < this.aliases[i]!.length; j++) { + if (str_.startsWith(this.aliases[i]![j])) { let tmp = [ this.names[i], offset.toString(), - (offset + this.aliases[i][j].length - 1).toString(), + (offset + this.aliases[i]![j].length - 1).toString(), ] - if (str_.replace(this.aliases[i][j], "").startsWith('(')) { + if (str_.replace(this.aliases[i]![j], "").startsWith('(')) { this.state.ambiguity = true; tmp.push('ambiguous expression/opcode'); } @@ -813,15 +954,12 @@ export class Parser { * Method to get the last item of a Node at a specified depth level of parse tree */ private static getTreeElement(depthLevel: number): Node { - let tmp: Node[][] = []; - tmp.push(this.state.parse.tree); + let tmp: Node; + tmp = this.state.parse.tree[this.state.parse.tree.length - 1]; for (let i = 0; i < depthLevel; i++) { - tmp.push( - (tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op) - .parameters - ); + tmp = (tmp as Op).parameters[(tmp as Op).parameters.length - 1]; } - return tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1]; + return tmp; } /** @@ -884,7 +1022,6 @@ export class Parser { let node = tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] as Op; node.position.push(endPosition); node.parens.push(endPosition); - if (node.error === 'no closing parenthesis') node.error = undefined; if (!node.error) { tmp[tmp.length - 1][tmp[tmp.length - 1].length - 1] = this.resolveOp(node); @@ -922,8 +1059,13 @@ export class Parser { name: opcode, position: [startPosition, endPosition], }, - operand: this.zeroOperandOps[this.names.indexOf(opcode)] ? 0 : NaN, - output: opcode === this.gte.name || opcode === this.lte.name + operand: opcode === this.gte.name + || opcode === this.lte.name + || opcode === this.ineq.name + || this.zeroOperandOps[this.names.indexOf(opcode)] + ? 0 + : NaN, + output: opcode === this.gte.name || opcode === this.lte.name || opcode === this.ineq.name ? 1 : this.pushes[this.names.indexOf(opcode)].name === 'zero' || 'one' || 'two' || 'three' ? this.pushes[this.names.indexOf(opcode)](0, 0) @@ -931,7 +1073,13 @@ export class Parser { position: [node.position[0], endPosition], parens: [node.position[0], this.state.track.parens.close.pop()!], parameters: node.parameters, - data: this.data[this.names.indexOf(opcode)], + data: opcode === this.gte.name + ? this.gte.data + : opcode === this.lte.name + ? this.lte.data + : opcode === this.ineq.name + ? this.ineq.data + : this.data[this.names.indexOf(opcode)], error }); while (tmp.length > 1) { @@ -1105,10 +1253,14 @@ export class Parser { */ private static resolveOp = (opNode: Op): Op => { let op = this.names.indexOf(opNode.opcode.name); - if (opNode.opcode.name === this.gte.name || opNode.opcode.name === this.lte.name) { - opNode.operand = opNode.parameters.length; - if (opNode.operand < 2) { + if ( + opNode.opcode.name === this.gte.name || + opNode.opcode.name === this.lte.name || + opNode.opcode.name === this.ineq.name + ) { + if (opNode.parameters.length !== 2) { opNode.error = "invalid number of parameters, needs at least 2 items to compare"; + opNode.operand = NaN; } } else if ( @@ -1439,26 +1591,36 @@ export class Parser { else { let str_ = this.handleLetterCase(str); if ( - str_ === this.gte.name || this.gte.aliases?.includes(str_) || - str_ === this.lte.name || this.lte.aliases?.includes(str_) + str_ === this.handleLetterCase(this.gte.name) || + this.gte.aliases?.includes(str_) || + str_ === this.handleLetterCase(this.lte.name) || + this.lte.aliases?.includes(str_) || + str_ === this.handleLetterCase(this.ineq.name) || + this.ineq.aliases?.includes(str_) ) { this.state.track.notation.push( this.state.depthLevel, Notations.prefix ); - let isGte = str_ === this.gte.name || this.gte.aliases?.includes(str_); + check = false; + let isGte = + str_ === this.handleLetterCase(this.gte.name) || + this.gte.aliases?.includes(str_); + let isLte = + str_ === this.handleLetterCase(this.lte.name) || + this.lte.aliases?.includes(str_); this.exp = this.exp.replace(consumee, ""); let op: Op = { opcode: { - name: isGte ? this.gte.name : this.lte.name, + name: isGte ? this.gte.name : isLte ? this.lte.name : this.ineq.name, position: [startPosition, startPosition + str_.length - 1], }, - operand: NaN, + operand: 0, output: 1, position: [startPosition], parens: [], parameters: [], - data: isGte ? this.gte.data : this.lte.data, + data: isGte ? this.gte.data : isLte ? this.lte.data : this.ineq.data, }; if (this.exp.startsWith('(')) { if (consumee.endsWith(str)) { @@ -1493,7 +1655,7 @@ export class Parser { } else { for (let i = 0; i < this.aliases.length; i++) { - if (this.aliases[i] && this.aliases[i].includes(str_)) { + if (this.aliases[i] && this.aliases[i]!.includes(str_)) { this.exp = this.exp.replace(consumee, ""); let op: Op = { opcode: { @@ -1550,26 +1712,29 @@ export class Parser { } if (check) { let str_ = this.handleLetterCase(str); - if (this.names.includes(str_)) { + let names = this.names.map( + (v, i, names) => names[i] = this.handleLetterCase(v) + ) + if (names.includes(str_)) { this.state.track.notation.push( this.state.depthLevel, Notations.prefix ); this.exp = this.exp.replace(consumee, ""); - let enum_ = this.names.indexOf(str_); + let enum_ = names.indexOf(str_); let op: Op = { opcode: { - name: str_, + name: this.names[enum_], position: [startPosition, startPosition + str_.length - 1], }, - operand: this.zeroOperandOps[this.names.indexOf(str_)] ? 0 : NaN, + operand: this.zeroOperandOps[enum_] ? 0 : NaN, output: this.pushes[enum_].name === 'zero' || 'one' || 'two' || 'three' - ? this.pushes[this.names.indexOf(str_)](0, 0) + ? this.pushes[enum_](0, 0) : NaN, position: [startPosition], parens: [], parameters: [], - data: this.data[this.names.indexOf(str_)], + data: this.data[enum_], }; if (this.exp.startsWith('(')) { if (consumee.endsWith(str)) { @@ -1639,9 +1804,13 @@ export class Parser { else { this.exp = this.exp.replace(consumee, ""); if (this.exp.startsWith('(')) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.prefix + ); this.updateTree({ opcode: { - name: 'unknown opcode', + name: `${str} is unknown opcode`, position: [startPosition, startPosition + str.length], }, operand: NaN, @@ -1657,7 +1826,7 @@ export class Parser { } else { this.updateTree({ - error: `unknown word: ${str}`, + error: `${str} is unknown`, position: [startPosition, startPosition + str.length - 1], }); } @@ -1731,5 +1900,3 @@ export class Parser { return argCache; } } - - From 7d4687e3db26e73f9128653d71d85920ce00b5c9 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 18 Oct 2022 00:08:12 +0000 Subject: [PATCH 123/125] Update OpMeta.ts --- src/vm/OpMeta.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/vm/OpMeta.ts b/src/vm/OpMeta.ts index b3a3d7d..5edb7bb 100644 --- a/src/vm/OpMeta.ts +++ b/src/vm/OpMeta.ts @@ -811,7 +811,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpAny, - aliases: ['OR', 'ANY_OF', 'ANYOF'], + aliases: ['OR', 'ANY_OF', 'ANYOF', "|", "||"], data: { description: 'Returns the first non-zero value if any of N number of sub-expressions are non-zero', category: "logic", @@ -901,7 +901,7 @@ export const OpMeta: Map = new Map([ pops: pnp.oprnd, isZeroOperand: false, jsvmfn: OpEvery, - aliases: ['AND', 'ALL_OF', 'ALLOF'], + aliases: ['AND', 'ALL_OF', 'ALLOF', "&", "&&"], data: { description: 'Returns the first value if all of N number of sub-expressions are non-zero', category: "logic", From f68e5de394b292726eced25457be3f309f63448f Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Tue, 18 Oct 2022 01:10:40 +0000 Subject: [PATCH 124/125] debug parser infix notation --- src/vm/parser.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/vm/parser.ts b/src/vm/parser.ts index 880d6e6..79d6c6b 100644 --- a/src/vm/parser.ts +++ b/src/vm/parser.ts @@ -1189,6 +1189,7 @@ export class Parser { err = true; } } + delete (op as Op).infixOp; if (!err) op = this.resolveOp(op as Op); if (isParameter) { let item = this.getTreeElement(this.state.depthLevel - 1) as Op; @@ -1598,10 +1599,6 @@ export class Parser { str_ === this.handleLetterCase(this.ineq.name) || this.ineq.aliases?.includes(str_) ) { - this.state.track.notation.push( - this.state.depthLevel, - Notations.prefix - ); check = false; let isGte = str_ === this.handleLetterCase(this.gte.name) || @@ -1623,6 +1620,10 @@ export class Parser { data: isGte ? this.gte.data : isLte ? this.lte.data : this.ineq.data, }; if (this.exp.startsWith('(')) { + this.state.track.notation.push( + this.state.depthLevel, + Notations.prefix + ); if (consumee.endsWith(str)) { op.error = this.state.ambiguity ? 'ambiguous expression/opcode' From 27fbcebe10a5e57f7baff605f86aa33ef3fe8662 Mon Sep 17 00:00:00 2001 From: rouzwelt Date: Wed, 19 Oct 2022 22:57:27 +0000 Subject: [PATCH 125/125] update formatter test --- test/{9_Formatter.ts => 9_Formatter.test.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{9_Formatter.ts => 9_Formatter.test.ts} (100%) diff --git a/test/9_Formatter.ts b/test/9_Formatter.test.ts similarity index 100% rename from test/9_Formatter.ts rename to test/9_Formatter.test.ts